/*
 * Copyright (c) 2024 Henrik Brix Andersen <henrik@brixandersen.dk>
 *
 *  SPDX-License-Identifier: Apache-2.0
 */

/dts-v1/;

#include <st/f0/stm32f072Xb.dtsi>
#include <st/f0/stm32f072c(8-b)tx-pinctrl.dtsi>

/ {
	model = "candleLight";
	compatible = "candlelight";

	chosen {
		zephyr,sram = &sram0;
		zephyr,flash = &flash0;
		zephyr,code-partition = &slot0_partition;
		zephyr,canbus = &can1;
	};

	aliases {
		led0 = &led_rx;
		led1 = &led_tx;
	};

	leds {
		compatible = "gpio-leds";
		led_rx: led_rx {
			gpios = <&gpioa 0 GPIO_ACTIVE_LOW>;
			label = "LED RX";
		};
		led_tx: led_tx {
			gpios = <&gpioa 1 GPIO_ACTIVE_LOW>;
			label = "LED TX";
		};
	};

	transceiver0: can-phy0 {
		compatible = "nxp,tja1051", "can-transceiver-gpio";
		enable-gpios = <&gpioc 13 GPIO_ACTIVE_LOW>;
		max-bitrate = <1000000>;
		#phy-cells = <0>;
	};
};

&clk_hsi {
	status = "okay";
	clock-frequency = <DT_FREQ_M(8)>;
};

&pll {
	prediv = <1>;
	mul = <6>;
	clocks = <&clk_hsi>;
	status = "okay";
};

&rcc {
	clocks = <&pll>;
	clock-frequency = <DT_FREQ_M(48)>;
	ahb-prescaler = <1>;
	apb1-prescaler = <1>;
};

zephyr_udc0: &usb {
	pinctrl-0 = <&usb_dm_pa11 &usb_dp_pa12>;
	pinctrl-names = "default";
	status = "okay";
};

&can1 {
	pinctrl-0 = <&can_rx_pb8 &can_tx_pb9>;
	pinctrl-names = "default";
	phys = <&transceiver0>;
	status = "okay";
};

&flash0 {
	partitions {
		compatible = "fixed-partitions";
		#address-cells = <1>;
		#size-cells = <1>;

		boot_partition: partition@0 {
			label = "mcuboot";
			reg = <0x00000000 DT_SIZE_K(48)>;
			read-only;
		};
		slot0_partition: partition@c000 {
			label = "image-0";
			reg = <0x0000c000 DT_SIZE_K(80)>;
		};
	};
};
