/*
 * Copyright (c) 2021 Telink Semiconductor
 *
 * SPDX-License-Identifier: Apache-2.0
 */

/dts-v1/;

#include <telink_b91.dtsi>

/ {
	model = "telink,b91";
	compatible = "telink,tlsr9518adk80d";

	aliases {
		led0 = &led_blue;
		led1 = &led_green;
		sw0 = &key_1;
		pwm-led0 = &pwm_led_blue;
		pwm-0 = &pwm0;
	};

	leds {
		compatible = "gpio-leds";

		led_blue: led_0 {
			gpios = <&gpiob 4 GPIO_ACTIVE_HIGH>;
			label = "LED Blue";
		};

		led_green: led_1 {
			gpios = <&gpiob 5 GPIO_ACTIVE_HIGH>;
			label = "LED Green";
		};

		led_white: led_2 {
			gpios = <&gpiob 6 GPIO_ACTIVE_HIGH>;
			label = "LED White";
		};

		led_red: led_3 {
			gpios = <&gpiob 7 GPIO_ACTIVE_HIGH>;
			label = "LED Red";
		};
	};

	pwm_leds {
		compatible = "pwm-leds";

		pwm_led_blue: pwm_led_0 {
			pwms = <&pwm0 0 0>;
			label = "PWM LED Blue";
		};
	};

	keys {
		compatible = "gpio-keys";
		key_1: button_1 {
			label = "User KEY1";
			gpios = <&gpioc 2 GPIO_PULL_DOWN>;
		};
	};

	chosen {
		zephyr,console = &uart0;
		zephyr,shell-uart = &uart0;
		zephyr,sram = &ram_dlm;
		zephyr,flash = &flash;
		zephyr,flash-controller = &flash_mspi;
		zephyr,entropy = &trng0;
	};
};

&cpu0 {
	clock-frequency = <48000000>;
};

&ram_ilm {
	reg = <0x00000000 0x00020000>;
};

&ram_dlm {
	reg = <0x00080000 0x00020000>;
};

&flash {
	reg = <0x20000000 0x100000>;
};

&gpiob {
	status = "okay";
};

&gpioc {
	interrupts = <25 1>;
	status = "okay";
};

&pinmux {
	status = "okay";
	pad-mul-sel = <1>;
};

&uart0 {
	status = "okay";
	current-speed = <115200>;
	pinctrl-0 = <&uart0_tx_pb2 &uart0_rx_pb3>;
};

&trng0 {
	status = "okay";
};

&ieee802154 {
	status = "okay";
};

&pwm0 {
	status = "okay";
	clock-frequency = <93750>;
	pinctrl-0 = <&pwm_ch0_pb4>;
};

&pspi {
	status = "okay";
	cs0-pin = "PSPI_CSN_PC4";
	pinctrl-0 = <&pspi_clk_pc5 &pspi_miso_io1_pc6 &pspi_mosi_io0_pc7>;
};

&hspi {
	status = "okay";
	cs0-pin = "HSPI_CSN_PA1";
	pinctrl-0 = <&hspi_clk_pa2 &hspi_miso_io1_pa3 &hspi_mosi_io0_pa4>;
};

&i2c {
	status = "okay";
	clock-frequency = <I2C_BITRATE_FAST>;
	pinctrl-0 = <&i2c_scl_pe1 &i2c_sda_pe3>;
};

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

		boot_partition: partition@0 {
			label = "mcuboot";
			reg = <0x00000000 0x8000>;
		};
		slot0_partition: partition@8000 {
			label = "image-0";
			reg = <0x00008000 0x1a000>;
		};
		slot1_partition: partition@22000 {
			label = "image-1";
			reg = <0x00022000 0x1a000>;
		};
		scratch_partition: partition@3c000 {
			label = "image-scratch";
			reg = <0x0003c000 0x2000>;
		};
		storage_partition: partition@f0000 {
			label = "storage";
			reg = <0x000f0000 0x00008000>;
			/* region 0x000f8000 .. 0x000FFFFF
			 * is reserved for factory calibration
			 */
		};
	};
};
