/*
 * Copyright (c) 2022 Renesas Electronics Corporation and/or its affiliates
 * SPDX-License-Identifier: Apache-2.0
 */

/dts-v1/;
#include <renesas/smartbond/da14699.dtsi>
#include "da1469x_dk_pro-pinctrl.dtsi"

/ {
	model = "DA1469x series Development Kit Pro";
	compatible = "renesas,da1469x_dk_pro";
	#address-cells = <1>;
	#size-cells = <1>;

	chosen {
		zephyr,sram = &sram0;
		zephyr,flash = &flash0;
		zephyr,console = &uart;
		zephyr,shell-uart = &uart;
		zephyr,code-partition = &slot0_partition;
	};

	leds {
		compatible = "gpio-leds";
		red_led: led_0 {
			gpios = <&gpio1 1 GPIO_ACTIVE_HIGH>;
		};
	};

	arduino_header: connector {
		compatible = "arduino-header-r3";
		#gpio-cells = <2>;
		gpio-map-mask = <0xffffffff 0xffffffc0>;
		gpio-map-pass-thru = <0 0x3f>;
		gpio-map =
			<0 0 &gpio1 9 0>,	/* A0 */
			<1 0 &gpio0 25 0>,	/* A1 */
			<2 0 &gpio0 8 0>,	/* A2 */
			<3 0 &gpio0 9 0>,	/* A3 */
			<4 0 &gpio1 13 0>,	/* A4 */
			<5 0 &gpio1 12 0>,	/* A5 */
			<6 0 &gpio1 2 0>,	/* D0 */
			<7 0 &gpio1 3 0>,	/* D1 */
			<8 0 &gpio1 4 0>,	/* D2 */
			<9 0 &gpio1 5 0>,	/* D3 */
			<10 0 &gpio1 7 0>,	/* D4 */
			<11 0 &gpio1 8 0>,	/* D5 */
			<12 0 &gpio0 17 0>,	/* D6 */
			<13 0 &gpio0 18 0>,	/* D7 */
			<14 0 &gpio0 19 0>,	/* D8 */
			<15 0 &gpio0 20 0>,	/* D9 */
			<16 0 &gpio0 21 0>,	/* D10 */
			<17 0 &gpio0 24 0>,	/* D11 */
			<18 0 &gpio0 26 0>,	/* D12 */
			<19 0 &gpio0 27 0>,	/* D13 */
			<20 0 &gpio0 28 0>,	/* D14 */
			<21 0 &gpio0 29 0>;	/* D15 */
	};

	aliases {
		led0 = &red_led;
		watchdog0 = &wdog;
	};

	sysclk: system-clock {
		compatible = "fixed-clock";
		clock-frequency = <32000000>;
		#clock-cells = <0>;
	};
};

&flash0 {
	reg = <0x16000000 DT_SIZE_M(1)>;

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

		/*
		 * Flash area from 0x0000 to 0x2400 is reserved
		 * for product header added by flasher.
		 */

		boot_partition: partition@2400 {
			label = "mcuboot";
			reg = <0x000002400 0x00009c00>;
		};
		slot0_partition: partition@c000 {
			label = "image-0";
			reg = <0x0000c000 0x00076000>;
		};
		slot1_partition: partition@80000 {
			label = "image-1";
			reg = <0x00082000 0x00076000>;
		};
		storage_partition: partition@f8000 {
			label = "storage";
			reg = <0x000f8000 0x00008000>;
		};
	};
};

&gpio0 {
	status = "okay";
};

&gpio1 {
	status = "okay";
};

&uart {
	current-speed = <115200>;
	status = "okay";
	pinctrl-0 = <&uart_default>;
	pinctrl-names = "default";
};

zephyr_udc0: &usbd {
	compatible = "renesas,smartbond-usbd";
	status = "okay";
};

&rc32m {
	status = "disabled";
};

&xtal32m {
	status = "okay";
};

&xtal32k {
	status = "okay";
};

&lp_clk {
	clock-src = <&xtal32k>;
};

&sys_clk {
	clock-src = <&xtal32m>;
};

&pll {
	status = "okay";
};
&i2c {
	status = "okay";
	pinctrl-0 = <&i2c_default>;
	pinctrl-names = "default";
};

&i2c2 {
	status = "okay";
	pinctrl-0 = <&i2c2_default>;
	pinctrl-names = "default";
};

&spi {
	status = "okay";
	pinctrl-0 = <&spi_controller>;
	pinctrl-names = "default";
};

&spi2 {
	status = "okay";
	pinctrl-0 = <&spi2_controller>;
	pinctrl-names = "default";
};
