/*
 * Copyright (c) 2021 Yonatan Schachter
 * Copyright (c) 2022 Peter Johanson
 *
 * SPDX-License-Identifier: Apache-2.0
 */

/dts-v1/;

#include <rpi_pico/rp2040.dtsi>
#include "adafruit_kb2040-pinctrl.dtsi"
#include "sparkfun_pro_micro_connector.dtsi"
#include <freq.h>
#include <zephyr/dt-bindings/led/led.h>

/ {
	chosen {
		zephyr,sram = &sram0;
		zephyr,flash = &flash0;
		zephyr,flash-controller = &ssi;
		zephyr,console = &uart0;
		zephyr,shell-uart = &uart0;
		zephyr,code-partition = &code_partition;
	};

	aliases {
		watchdog0 = &wdt0;
		led-strip = &ws2812;
	};
};

&flash0 {
	reg = <0x10000000 DT_SIZE_M(8)>;

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

		/* Reserved memory for the second stage bootloader */
		second_stage_bootloader: partition@0 {
			label = "second_stage_bootloader";
			reg = <0x00000000 0x100>;
			read-only;
		};

		/*
		 * Usable flash. Starts at 0x100, after the bootloader. The partition
		 * size is 8MB minus the 0x100 bytes taken by the bootloader.
		 */
		code_partition: partition@100 {
			label = "code";
			reg = <0x100 (DT_SIZE_M(8) - 0x100)>;
			read-only;
		};
	};
};

&clocks {
	pinctrl-0 = <&clocks_default>;
	pinctrl-names = "default";
};

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

&spi0 {
	status = "okay";
	pinctrl-0 = <&spi0_default>;
	pinctrl-names = "default";
	clock-frequency = <DT_FREQ_M(8)>;
};

&i2c1 {
	status = "okay";
	pinctrl-0 = <&i2c1_default>;
	pinctrl-names = "default";
	clock-frequency = <I2C_BITRATE_FAST>;
};

&gpio0 {
	status = "okay";
};

&wdt0 {
	status = "okay";
};

&adc {
	status = "okay";
	pinctrl-0 = <&adc_default>;
	pinctrl-names = "default";
};

&pio0 {
	status = "okay";

	pio-ws2812 {
		compatible = "worldsemi,ws2812-rpi_pico-pio";
		status = "okay";
		pinctrl-0 = <&ws2812_pio0_default>;
		pinctrl-names = "default";
		bit-waveform = <3>, <3>, <4>;

		ws2812: ws2812 {
			status = "okay";
			gpios = <&gpio0 17 GPIO_ACTIVE_HIGH>;
			chain-length = <1>;
			color-mapping = <LED_COLOR_ID_GREEN
					 LED_COLOR_ID_RED
					 LED_COLOR_ID_BLUE>;
			reset-delay = <280>;
			frequency = <800000>;
		};
	};
};

zephyr_udc0: &usbd {
	status = "okay";
};

&vreg {
	regulator-always-on;
	regulator-allowed-modes = <REGULATOR_RPI_PICO_MODE_NORMAL>;
};
