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

#include <arm/armv8-m.dtsi>
#include <mem.h>
#include <freq.h>
#include <zephyr/dt-bindings/gpio/gpio.h>
#include <zephyr/dt-bindings/adc/smartbond-adc.h>
#include <zephyr/dt-bindings/pinctrl/smartbond-pinctrl.h>

/ {
	chosen {
		zephyr,entropy = &trng;
	};

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

		cpu@0 {
			compatible = "arm,cortex-m33f";
			reg = <0>;
			clock-frequency = <32000000>;
		};
	};

	crg {
		osc: osc {
			rc32k: rc32k {
				compatible = "fixed-clock";
				clock-frequency = <DT_FREQ_K(32)>;
				#clock-cells = <0>;
				status = "okay";
			};
			xtal32k: xtal32k {
				compatible = "fixed-clock";
				clock-frequency = <32768>;
				#clock-cells = <0>;
				status = "disabled";
			};
			rcx: rcx {
				compatible = "fixed-clock";
				clock-frequency = <DT_FREQ_K(15)>;
				#clock-cells = <0>;
				status = "disabled";
			};
			rc32m: rc32m {
				compatible = "fixed-clock";
				clock-frequency = <DT_FREQ_M(32)>;
				#clock-cells = <0>;
				status = "okay";
			};
			xtal32m: xtal32m {
				compatible = "fixed-clock";
				clock-frequency = <DT_FREQ_M(32)>;
				#clock-cells = <0>;
				status = "disabled";
			};
			pll: pll {
				compatible = "fixed-clock";
				clock-frequency = <DT_FREQ_M(96)>;
				#clock-cells = <0>;
				status = "disabled";
			};
		};
		divn_clk: divn_clk {
			compatible = "fixed-clock";
			clock-frequency = <DT_FREQ_M(32)>;
			#clock-cells = <0>;
			status = "okay";
		};
		sys_clk: sys_clk {
			compatible = "renesas,smartbond-sys-clk";
			status = "okay";
			clock-src = <&rc32m>;
			status = "okay";
		};
		lp_clk: lp_clk {
			compatible = "renesas,smartbond-lp-clk";
			clock-src = <&rc32k>;
			status = "okay";
		};
	};

	soc {
		sram0: memory@20000000 {
			compatible = "mmio-sram";
		};

		qspif: memory@16000000 {
			compatible = "zephyr,memory-region";
			reg = <0x16000000 DT_SIZE_K(32768)>;
			zephyr,memory-region = "QSPIF";
		};

		flash_controller: flash-controller@38000000 {
			compatible = "renesas,smartbond-flash-controller";
			reg = <0x38000000 0xb0>;

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

			flash0: flash@0 {
				compatible = "soc-nv-flash";
				erase-block-size = <4096>;
				write-block-size = <1>;
			};
		};

		pinctrl: pin-controller@50020a00 {
			compatible = "renesas,smartbond-pinctrl";
			reg = <0x50020a00 0x100>;
			#address-cells = <1>;
			#size-cells = <1>;

			gpio0: gpio@50020a00 {
				compatible = "renesas,smartbond-gpio";
				gpio-controller;
				#gpio-cells = <2>;
				ngpios = <32>;
				reg = <0x50020a00 20
					   0x50020a18 128
					   0x50000070 12
					   0x50000114 36>;
				reg-names = "data", "mode", "latch", "wkup";
				interrupts = <38 0>;
			};

			gpio1: gpio@50020a04 {
				compatible = "renesas,smartbond-gpio";
				gpio-controller;
				#gpio-cells = <2>;
				ngpios = <23>;
				reg = <0x50020a04 20
					   0x50020a98 92
					   0x5000007c 12
					   0x50000118 36>;
				reg-names = "data", "mode", "latch", "wkup";
				interrupts = <39 0>;
			};
		};

		wdog: watchdog@50000700 {
			compatible = "renesas,smartbond-watchdog";
			reg = <0x50000700 0x8>;
			status = "okay";
		};

		uart: uart@50020000 {
			compatible = "renesas,smartbond-uart";
			reg = <0x50020000 0x100>;
			periph-clock-config = <0x01>;
			interrupts = <5 0>;
			status = "disabled";
		};

		adc: adc@50030900 {
			compatible = "renesas,smartbond-adc";
			reg = <0x50030900 0x1C>;
			interrupts = <27 0>;
			status = "disabled";
			#io-channel-cells = <1>;
		};


		sdadc: sdadc@50020800 {
			compatible = "renesas,smartbond-sdadc";
			reg = <0x50020800 0x1C>;
			interrupts = <28 0>;
			clock-freq = <2>;
			status = "disabled";
			#io-channel-cells = <1>;
		};

		trng: trng@50040c00 {
			compatible = "renesas,smartbond-trng";
			reg = <0x50040c00 0x0C>;
			interrupts = <24 0>;
			status = "okay";
		};

		i2c: i2c@50020600 {
			compatible = "renesas,smartbond-i2c";
			#address-cells = <1>;
			#size-cells = <0>;
			reg = <0x50020600 0x100>;
			periph-clock-config = <0x0200>;
			interrupts = <8 0>;
			status = "disabled";
		};

		i2c2: i2c@50020700 {
			compatible = "renesas,smartbond-i2c";
			#address-cells = <1>;
			#size-cells = <0>;
			reg = <0x50020700 0x100>;
			periph-clock-config = <0x0800>;
			interrupts = <9 0>;
		};

		spi: spi@50020300 {
			compatible = "renesas,smartbond-spi";
			#address-cells = <1>;
			#size-cells = <0>;
			reg = <0x50020300 0x100>;
			periph-clock-config = <0x20>;
			interrupts = <10 0>;
			status = "disabled";
		};

		spi2: spi@50020400 {
			compatible = "renesas,smartbond-spi";
			#address-cells = <1>;
			#size-cells = <0>;
			reg = <0x50020400 0x100>;
			periph-clock-config = <0x80>;
			interrupts = <11 0>;
			status = "disabled";
		};
		usbd: usb@50040000 {
			compatible = "renesas,smartbond-usbd";
			reg = <0x50040000 0x1B0>;
			dma-chan-rx = <6>;
			dma-chan-tx = <7>;
			dma-min-transfer-size = <65>;
			fifo-read-threshold = <4>;
			ep-out-buf-size = <8 64 64 64>;
			interrupts = <15 0>, <21 0>;
			status = "disabled";
		};
	};
};

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