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

#include <arm/armv6-m.dtsi>
#include <zephyr/dt-bindings/adc/adc.h>
#include <zephyr/dt-bindings/gpio/gpio.h>
#include <zephyr/dt-bindings/i2c/i2c.h>
#include <zephyr/dt-bindings/regulator/rpi_pico.h>
#include <mem.h>

#include "rpi_pico_common.dtsi"

/ {
	aliases {
		die-temp0 = &die_temp;
	};

	cpus {
		#address-cells = <1>;
		#size-cells = <0>;

		cpu0: cpu@0 {
			compatible = "arm,cortex-m0+";
			reg = <0>;
		};

		cpu1: cpu@1 {
			compatible = "arm,cortex-m0+";
			reg = <1>;
		};
	};

	soc {
		compatible = "raspberrypi,rp2040", "simple-bus";

		sram0: memory@20000000 {
			compatible = "mmio-sram";
			reg = <0x20000000 DT_SIZE_K(264)>;
		};

		ssi: flash-controller@18000000 {
			compatible = "raspberrypi,pico-flash-controller";
			reg = <0x18000000 0xfc>;

			#address-cells = <1>;
			#size-cells = <1>;

			flash0: flash@10000000 {
				compatible = "soc-nv-flash";
				write-block-size = <1>;
				erase-block-size = <DT_SIZE_K(4)>;
			};
		};

		peripheral_clk: peripheral-clk {
			compatible = "fixed-clock";
			clock-frequency = <125000000>;
			#clock-cells = <0>;
		};

		system_clk: system-clk {
			compatible = "fixed-clock";
			clock-frequency = <125000000>;
			#clock-cells = <0>;
		};

		reset: reset-controller@4000c000 {
			compatible = "raspberrypi,pico-reset";
			reg = <0x4000c000 DT_SIZE_K(4)>;
			reg-width = <4>;
			active-low = <0>;
			#reset-cells = <1>;
		};

		gpio0: gpio@40014000 {
			compatible = "raspberrypi,pico-gpio";
			reg = <0x40014000 DT_SIZE_K(4)>;
			interrupts = <13 RPI_PICO_DEFAULT_IRQ_PRIORITY>;
			gpio-controller;
			#gpio-cells = <2>;
			status = "disabled";
			ngpios = <30>;
		};

		uart0: uart@40034000 {
			compatible = "raspberrypi,pico-uart";
			reg = <0x40034000 DT_SIZE_K(4)>;
			clocks = <&peripheral_clk>;
			resets = <&reset RPI_PICO_RESETS_RESET_UART0>;
			interrupts = <20 RPI_PICO_DEFAULT_IRQ_PRIORITY>;
			interrupt-names = "uart0";
			status = "disabled";
		};

		uart1: uart@40038000 {
			compatible = "raspberrypi,pico-uart";
			reg = <0x40038000 DT_SIZE_K(4)>;
			clocks = <&peripheral_clk>;
			resets = <&reset RPI_PICO_RESETS_RESET_UART1>;
			interrupts = <21 RPI_PICO_DEFAULT_IRQ_PRIORITY>;
			interrupt-names = "uart1";
			status = "disabled";
		};

		spi0: spi@4003c000 {
			compatible = "raspberrypi,pico-spi", "arm,pl022";
			#address-cells = <1>;
			#size-cells = <0>;
			reg = <0x4003c000 DT_SIZE_K(4)>;
			clocks = <&peripheral_clk>;
			resets = <&reset RPI_PICO_RESETS_RESET_SPI0>;
			interrupts = <18 RPI_PICO_DEFAULT_IRQ_PRIORITY>;
			interrupt-names = "spi0";
			status = "disabled";
		};

		spi1: spi@40040000 {
			compatible = "raspberrypi,pico-spi", "arm,pl022";
			#address-cells = <1>;
			#size-cells = <0>;
			reg = <0x40040000 DT_SIZE_K(4)>;
			resets = <&reset RPI_PICO_RESETS_RESET_SPI1>;
			clocks = <&peripheral_clk>;
			interrupts = <19 RPI_PICO_DEFAULT_IRQ_PRIORITY>;
			interrupt-names = "spi1";
			status = "disabled";
		};

		adc: adc@4004c000 {
			compatible = "raspberrypi,pico-adc";
			reg = <0x4004c000 DT_SIZE_K(4)>;
			resets = <&reset RPI_PICO_RESETS_RESET_ADC>;
			interrupts = <22 RPI_PICO_DEFAULT_IRQ_PRIORITY>;
			interrupt-names = "adc0";
			status = "disabled";
			#io-channel-cells = <1>;
		};

		i2c0: i2c@40044000 {
			compatible = "raspberrypi,pico-i2c", "snps,designware-i2c";
			#address-cells = <1>;
			#size-cells = <0>;
			reg = <0x40044000 DT_SIZE_K(4)>;
			resets = <&reset RPI_PICO_RESETS_RESET_I2C0>;
			clocks = <&system_clk>;
			interrupts = <23 RPI_PICO_DEFAULT_IRQ_PRIORITY>;
			interrupt-names = "i2c0";
			status = "disabled";
		};

		i2c1: i2c@40048000 {
			compatible = "raspberrypi,pico-i2c", "snps,designware-i2c";
			#address-cells = <1>;
			#size-cells = <0>;
			reg = <0x40048000 DT_SIZE_K(4)>;
			resets = <&reset RPI_PICO_RESETS_RESET_I2C0>;
			clocks = <&system_clk>;
			interrupts = <24 RPI_PICO_DEFAULT_IRQ_PRIORITY>;
			interrupt-names = "i2c1";
			status = "disabled";
		};

		wdt0: watchdog@40058000 {
			compatible = "raspberrypi,pico-watchdog";
			reg = <0x40058000 DT_SIZE_K(4)>;
			clocks = <&xtal_clk>;
			status = "disabled";
		};

		usbd: usbd@50100000 {
			compatible = "raspberrypi,pico-usbd";
			reg = <0x50100000 0x10000>;
			resets = <&reset RPI_PICO_RESETS_RESET_USBCTRL>;
			interrupts = <5 RPI_PICO_DEFAULT_IRQ_PRIORITY>;
			interrupt-names = "usbctrl";
			num-bidir-endpoints = <16>;
			status = "disabled";
		};

		pwm: pwm@40050000 {
			compatible = "raspberrypi,pico-pwm";
			reg = <0x40050000 DT_SIZE_K(4)>;
			resets = <&reset RPI_PICO_RESETS_RESET_PWM>;
			clocks = <&system_clk>;
			interrupts = <4 RPI_PICO_DEFAULT_IRQ_PRIORITY>;
			interrupt-names = "PWM_IRQ_WRAP";
			status = "disabled";
			#pwm-cells = <3>;
		};

		timer: timer@40054000 {
			compatible = "raspberrypi,pico-timer";
			reg = <0x40054000 DT_SIZE_K(4)>;
			resets = <&reset RPI_PICO_RESETS_RESET_TIMER>;
			clocks = <&xtal_clk>;
			interrupts = <0 RPI_PICO_DEFAULT_IRQ_PRIORITY>,
				     <1 RPI_PICO_DEFAULT_IRQ_PRIORITY>,
				     <2 RPI_PICO_DEFAULT_IRQ_PRIORITY>,
				     <3 RPI_PICO_DEFAULT_IRQ_PRIORITY>;
			interrupt-names = "TIMER_IRQ_0",
					  "TIMER_IRQ_1",
					  "TIMER_IRQ_2",
					  "TIMER_IRQ_3";
			status = "disabled";
		};

		dma: dma@50000000 {
			compatible = "raspberrypi,pico-dma";
			reg = <0x50000000 DT_SIZE_K(64)>;
			resets = <&reset RPI_PICO_RESETS_RESET_DMA>;
			clocks = <&system_clk>;
			interrupts = <11 RPI_PICO_DEFAULT_IRQ_PRIORITY>,
				     <12 RPI_PICO_DEFAULT_IRQ_PRIORITY>;
			interrupt-names = "dma0", "dma1";
			dma-channels = <12>;
			status = "disabled";
			#dma-cells = <3>;
		};

		vreg: vreg@40064000 {
			compatible = "raspberrypi,core-supply-regulator";
			reg = <0x40064000 1>;
			status = "okay";
			raspberrypi,brown-out-detection;
			raspberrypi,brown-out-threshold = <860000>;
		};

		pio0: pio@50200000 {
			compatible = "raspberrypi,pico-pio";
			reg = <0x50200000 DT_SIZE_K(4)>;
			clocks = <&system_clk>;
			resets = <&reset RPI_PICO_RESETS_RESET_PIO0>;
			status = "disabled";
		};

		pio1: pio@50300000 {
			compatible = "raspberrypi,pico-pio";
			reg = <0x50300000 DT_SIZE_K(4)>;
			clocks = <&system_clk>;
			resets = <&reset RPI_PICO_RESETS_RESET_PIO1>;
			status = "disabled";
		};
	};

	pinctrl: pin-controller {
		compatible = "raspberrypi,pico-pinctrl";
	};

	die_temp: dietemp {
		compatible = "raspberrypi,pico-temp";
		io-channels = <&adc 4>;
		status = "disabled";
	};
};

&nvic {
	arm,num-irq-priority-bits = <2>;
};
