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

#include <freq.h>

#include <rpi_pico/rp2040.dtsi>
#include "rpi_pico-pinctrl.dtsi"
#include <zephyr/dt-bindings/pwm/pwm.h>

#include <zephyr/dt-bindings/i2c/i2c.h>


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

	xtal_clk: xtal-clk {
		compatible = "fixed-clock";
		clock-frequency = <12000000>;
		#clock-cells = <0>;
	};

	aliases {
		watchdog0 = &wdt0;
	};

	pico_header: connector {
		compatible = "raspberrypi,pico-header";
		#gpio-cells = <2>;
		gpio-map-mask = <0xffffffff 0xffffffc0>;
		gpio-map-pass-thru = <0 0x3f>;
		gpio-map = <0 0 &gpio0 0 0>,	/* GP0 */
			<1 0 &gpio0 1 0>,	/* GP1 */
			<2 0 &gpio0 2 0>,	/* GP2 */
			<3 0 &gpio0 3 0>,	/* GP3 */
			<4 0 &gpio0 4 0>,	/* GP4 */
			<5 0 &gpio0 5 0>,	/* GP5 */
			<6 0 &gpio0 6 0>,	/* GP6 */
			<7 0 &gpio0 7 0>,	/* GP7 */
			<8 0 &gpio0 8 0>,	/* GP8 */
			<9 0 &gpio0 9 0>,	/* GP9 */
			<10 0 &gpio0 10 0>,	/* GP10 */
			<11 0 &gpio0 11 0>,	/* GP11 */
			<12 0 &gpio0 12 0>,	/* GP12 */
			<13 0 &gpio0 13 0>,	/* GP13 */
			<14 0 &gpio0 14 0>,	/* GP14 */
			<15 0 &gpio0 15 0>,	/* GP15 */
			<16 0 &gpio0 16 0>,	/* GP16 */
			<17 0 &gpio0 17 0>,	/* GP17 */
			<18 0 &gpio0 18 0>,	/* GP18 */
			<19 0 &gpio0 19 0>,	/* GP19 */
			<20 0 &gpio0 20 0>,	/* GP20 */
			<21 0 &gpio0 21 0>,	/* GP21 */
			<22 0 &gpio0 22 0>,	/* GP22 */
			<26 0 &gpio0 26 0>,	/* GP26 */
			<27 0 &gpio0 27 0>,	/* GP27 */
			<28 0 &gpio0 28 0>;	/* GP28 */
	};
};

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

	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 2MB minus the 0x100 bytes taken by the bootloader.
		 */
		code_partition: partition@100 {
			label = "code-partition";
			reg = <0x100 (DT_SIZE_M(2) - 0x100)>;
			read-only;
		};
	};
};

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

&gpio0 {
	status = "okay";
};

&i2c0 {
	clock-frequency = <I2C_BITRATE_STANDARD>;
	status = "okay";
	pinctrl-0 = <&i2c0_default>;
	pinctrl-names = "default";
};

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

&timer {
	status = "okay";
};

&wdt0 {
	status = "okay";
};

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

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

&pwm {
	pinctrl-0 = <&pwm_ch4b_default>;
	pinctrl-names = "default";
	divider-int-0 = <255>;
};

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

pico_spi: &spi0 {};
