/*
 * Copyright (c) 2021 Nuvoton Technology Corporation.
 *
 * SPDX-License-Identifier: Apache-2.0
 */

#include <arm/armv7-m.dtsi>

/* Macros for device tree declarations of npcx soc family */
#include <zephyr/dt-bindings/clock/npcx_clock.h>
#include <zephyr/dt-bindings/gpio/gpio.h>
#include <zephyr/dt-bindings/i2c/i2c.h>
#include <zephyr/dt-bindings/pinctrl/npcx-pinctrl.h>
#include <zephyr/dt-bindings/pwm/pwm.h>
#include <zephyr/dt-bindings/sensor/npcx_tach.h>
#include <freq.h>

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

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

	def-io-conf-list {
		compatible = "nuvoton,npcx-pinctrl-def";
		/* Change default functional pads to GPIOs
		 * no_spip - PIN95.97.A1.A3
		 * no_fpip - PIN96.A0.A2.A4 - Internal flash only
		 * no_pwrgd - PIN72
		 * no_lpc_espi - PIN46.47.51.52.53.54.55.57
		 * no_peci_en - PIN81
		 * npsl_in1_sl - PIND2
		 * npsl_in2_sl - PIN00
		 * no_ksi0-7 - PIN31.30.27.26.25.24.23.22
		 * no_ks000-17 - PIN21.20.17.16.15.14.13.12.11.10.07.06.05.04.
		 *                  82.83.03.B1
		 */
		pinmux = <>;
	};

	/** Dummy pinctrl node. It will be initialized with defaults based on the SoC series.
	 *  Then, the user can override the pin control options at the board level.
	 */
	pinctrl: pinctrl {
		compatible = "nuvoton,npcx-pinctrl";
		status = "okay";
	};

	/* Dummy node of IOs that have leakage current. The user can override
	 * 'leak-gpios' prop. at board DT file to save more power consumption.
	 */
	power_leakage_io: power-leakage-io {
		compatible = "nuvoton,npcx-leakage-io";
		status = "okay";
	};

	soc {
		bbram: bb-ram@400af000 {
			compatible = "nuvoton,npcx-bbram";
			reg = <0x400af000 0x80
			       0x400af100 0x1>;
			reg-names = "memory", "status";
		};

		pcc: clock-controller@4000d000 {
			compatible = "nuvoton,npcx-pcc";
			/* Cells for bus type, clock control reg and bit */
			#clock-cells = <3>;
			/* First reg region is Power Management Controller */
			/* Second reg region is Core Domain Clock Generator */
			reg = <0x4000d000 0x2000
			       0x400b5000 0x2000>;
			reg-names = "pmc", "cdcg";
		};

		scfg: scfg@400c3000 {
			compatible = "nuvoton,npcx-scfg";
			/* First reg region is System Configuration Device */
			/* Second reg region is System Glue Device */
			reg = <0x400c3000 0x70
			       0x400a5000 0x2000>;
			reg-names = "scfg", "glue";
			#alt-cells = <3>;
			#lvol-cells = <2>;
		};

		mdc: mdc@4000c000 {
			compatible = "syscon";
			reg = <0x4000c000 0xa>;
			reg-io-width = <1>;
		};

		mdc_header: mdc@4000c00a {
			compatible = "syscon";
			reg = <0x4000c00a 0x4>;
			reg-io-width = <2>;
		};

		miwu0: miwu@400bb000 {
			compatible = "nuvoton,npcx-miwu";
			reg = <0x400bb000 0x2000>;
			index = <0>;
			#miwu-cells = <2>;
		};

		miwu1: miwu@400bd000 {
			compatible = "nuvoton,npcx-miwu";
			reg = <0x400bd000 0x2000>;
			index = <1>;
			#miwu-cells = <2>;
		};

		miwu2: miwu@400bf000 {
			compatible = "nuvoton,npcx-miwu";
			reg = <0x400bf000 0x2000>;
			index = <2>;
			#miwu-cells = <2>;
		};

		gpio0: gpio@40081000 {
			compatible = "nuvoton,npcx-gpio";
			reg = <0x40081000 0x2000>;
			gpio-controller;
			index = <0x0>;
			#gpio-cells=<2>;
		};

		gpio1: gpio@40083000 {
			compatible = "nuvoton,npcx-gpio";
			reg = <0x40083000 0x2000>;
			gpio-controller;
			index = <0x1>;
			#gpio-cells=<2>;
		};

		gpio2: gpio@40085000 {
			compatible = "nuvoton,npcx-gpio";
			reg = <0x40085000 0x2000>;
			gpio-controller;
			index = <0x2>;
			#gpio-cells=<2>;
		};

		gpio3: gpio@40087000 {
			compatible = "nuvoton,npcx-gpio";
			reg = <0x40087000 0x2000>;
			gpio-controller;
			index = <0x3>;
			#gpio-cells=<2>;
		};

		gpio4: gpio@40089000 {
			compatible = "nuvoton,npcx-gpio";
			reg = <0x40089000 0x2000>;
			gpio-controller;
			index = <0x4>;
			#gpio-cells=<2>;
		};

		gpio5: gpio@4008b000 {
			compatible = "nuvoton,npcx-gpio";
			reg = <0x4008b000 0x2000>;
			gpio-controller;
			index = <0x5>;
			#gpio-cells=<2>;
		};

		gpio6: gpio@4008d000 {
			compatible = "nuvoton,npcx-gpio";
			reg = <0x4008d000 0x2000>;
			gpio-controller;
			index = <0x6>;
			#gpio-cells=<2>;
		};

		gpio7: gpio@4008f000 {
			compatible = "nuvoton,npcx-gpio";
			reg = <0x4008f000 0x2000>;
			gpio-controller;
			index = <0x7>;
			#gpio-cells=<2>;
		};

		gpio8: gpio@40091000 {
			compatible = "nuvoton,npcx-gpio";
			reg = <0x40091000 0x2000>;
			gpio-controller;
			index = <0x8>;
			#gpio-cells=<2>;
		};

		gpio9: gpio@40093000 {
			compatible = "nuvoton,npcx-gpio";
			reg = <0x40093000 0x2000>;
			gpio-controller;
			index = <0x9>;
			#gpio-cells=<2>;
		};

		gpioa: gpio@40095000 {
			compatible = "nuvoton,npcx-gpio";
			reg = <0x40095000 0x2000>;
			gpio-controller;
			index = <0xA>;
			#gpio-cells=<2>;
		};

		gpiob: gpio@40097000 {
			compatible = "nuvoton,npcx-gpio";
			reg = <0x40097000 0x2000>;
			gpio-controller;
			index = <0xB>;
			#gpio-cells=<2>;
		};

		gpioc: gpio@40099000 {
			compatible = "nuvoton,npcx-gpio";
			reg = <0x40099000 0x2000>;
			gpio-controller;
			index = <0xC>;
			#gpio-cells=<2>;
		};

		gpiod: gpio@4009b000 {
			compatible = "nuvoton,npcx-gpio";
			reg = <0x4009b000 0x2000>;
			gpio-controller;
			index = <0xD>;
			#gpio-cells=<2>;
		};

		gpioe: gpio@4009d000 {
			compatible = "nuvoton,npcx-gpio";
			reg = <0x4009d000 0x2000>;
			gpio-controller;
			index = <0xE>;
			#gpio-cells=<2>;
		};

		gpiof: gpio@4009f000 {
			compatible = "nuvoton,npcx-gpio";
			reg = <0x4009f000 0x2000>;
			gpio-controller;
			index = <0xF>;
			#gpio-cells=<2>;
		};

		pwm0: pwm@40080000 {
			compatible = "nuvoton,npcx-pwm";
			reg = <0x40080000 0x2000>;
			pwm-channel = <0>;
			clocks = <&pcc NPCX_CLOCK_BUS_APB2 NPCX_PWDWN_CTL2 0>;
			#pwm-cells = <3>;
			status = "disabled";
		};

		pwm1: pwm@40082000 {
			compatible = "nuvoton,npcx-pwm";
			reg = <0x40082000 0x2000>;
			pwm-channel = <1>;
			clocks = <&pcc NPCX_CLOCK_BUS_APB2 NPCX_PWDWN_CTL2 1>;
			#pwm-cells = <3>;
			status = "disabled";
		};

		pwm2: pwm@40084000 {
			compatible = "nuvoton,npcx-pwm";
			reg = <0x40084000 0x2000>;
			pwm-channel = <2>;
			clocks = <&pcc NPCX_CLOCK_BUS_APB2 NPCX_PWDWN_CTL2 2>;
			#pwm-cells = <3>;
			status = "disabled";
		};

		pwm3: pwm@40086000 {
			compatible = "nuvoton,npcx-pwm";
			reg = <0x40086000 0x2000>;
			pwm-channel = <3>;
			clocks = <&pcc NPCX_CLOCK_BUS_APB2 NPCX_PWDWN_CTL2 3>;
			#pwm-cells = <3>;
			status = "disabled";
		};

		pwm4: pwm@40088000 {
			compatible = "nuvoton,npcx-pwm";
			reg = <0x40088000 0x2000>;
			pwm-channel = <4>;
			clocks = <&pcc NPCX_CLOCK_BUS_APB2 NPCX_PWDWN_CTL2 4>;
			#pwm-cells = <3>;
			status = "disabled";
		};

		pwm5: pwm@4008a000 {
			compatible = "nuvoton,npcx-pwm";
			reg = <0x4008a000 0x2000>;
			pwm-channel = <5>;
			clocks = <&pcc NPCX_CLOCK_BUS_APB2 NPCX_PWDWN_CTL2 5>;
			#pwm-cells = <3>;
			status = "disabled";
		};

		pwm6: pwm@4008c000 {
			compatible = "nuvoton,npcx-pwm";
			reg = <0x4008c000 0x2000>;
			pwm-channel = <6>;
			clocks = <&pcc NPCX_CLOCK_BUS_APB2 NPCX_PWDWN_CTL2 6>;
			#pwm-cells = <3>;
			status = "disabled";
		};

		pwm7: pwm@4008e000 {
			compatible = "nuvoton,npcx-pwm";
			reg = <0x4008e000 0x2000>;
			pwm-channel = <7>;
			clocks = <&pcc NPCX_CLOCK_BUS_APB2 NPCX_PWDWN_CTL2 7>;
			#pwm-cells = <3>;
			status = "disabled";
		};

		adc0: adc@400d1000 {
			compatible = "nuvoton,npcx-adc";
			#io-channel-cells = <1>;
			reg = <0x400d1000 0x2000>;
			interrupts = <10 3>;
			clocks = <&pcc NPCX_CLOCK_BUS_APB1 NPCX_PWDWN_CTL4 4>;
			status = "disabled";
		};

		twd0: watchdog@400d8000 {
			compatible = "nuvoton,npcx-watchdog";
			reg = <0x400d8000 0x2000>;
			t0-out = <&wui_t0out>;
		};

		espi0: espi@4000a000 {
			compatible = "nuvoton,npcx-espi";
			reg = <0x4000a000 0x2000>;
			interrupts = <18 3>; /* Interrupt for eSPI Bus */

			/* clocks for eSPI modules */
			clocks = <&pcc NPCX_CLOCK_BUS_APB3 NPCX_PWDWN_CTL6 7>;
			/* WUI maps for eSPI signals */
			espi-rst-wui = <&wui_espi_rst>;

			#address-cells = <1>;
			#size-cells = <0>;
			#vw-cells = <3>;
			status = "disabled";
		};

		host_sub: lpc@400c1000 {
			compatible = "nuvoton,npcx-host-sub";
			/* host sub-module register address & size */
			reg = <0x400c1000 0x2000
			       0x40010000 0x2000
			       0x4000e000 0x2000
			       0x400c7000 0x2000
			       0x400c9000 0x2000
			       0x400cb000 0x2000>;
			reg-names = "mswc", "shm", "c2h", "kbc", "pm_acpi",
				    "pm_hcmd";

			/* host sub-module IRQ and priority */
			interrupts = <25 3>, /* KBC Input-Buf-Full (IBF) */
				     <56 3>, /* KBC Output-Buf-Empty (OBE) */
				     <26 3>, /* PMCH Input-Buf-Full (IBF) */
				     <3 3>,  /* PMCH Output-Buf-Empty (OBE) */
				     <6 3>;  /* Port80 FIFO Not Empty */
			interrupt-names = "kbc_ibf", "kbc_obe", "pmch_ibf",
					  "pmch_obe", "p80_fifo";

			/* WUI map for accessing host sub-modules */
			host-acc-wui = <&wui_host_acc>;

			/* clocks for host sub-modules */
			clocks = <&pcc NPCX_CLOCK_BUS_APB3 NPCX_PWDWN_CTL5 3>,
				<&pcc NPCX_CLOCK_BUS_APB3 NPCX_PWDWN_CTL5 4>,
				<&pcc NPCX_CLOCK_BUS_APB3 NPCX_PWDWN_CTL5 5>,
				<&pcc NPCX_CLOCK_BUS_APB3 NPCX_PWDWN_CTL5 6>,
				<&pcc NPCX_CLOCK_BUS_APB3 NPCX_PWDWN_CTL5 7>;
		};

		/* I2c Controllers - Do not use them as i2c node directly */
		i2c_ctrl0: i2c@40009000 {
			compatible = "nuvoton,npcx-i2c-ctrl";
			reg = <0x40009000 0x1000>;
			interrupts = <13 3>;
			clocks = <&pcc NPCX_CLOCK_BUS_APB3 NPCX_PWDWN_CTL3 0>;
			status = "disabled";
		};

		i2c_ctrl1: i2c@4000b000 {
			compatible = "nuvoton,npcx-i2c-ctrl";
			reg = <0x4000b000 0x1000>;
			interrupts = <14 3>;
			clocks = <&pcc NPCX_CLOCK_BUS_APB3 NPCX_PWDWN_CTL3 1>;
			status = "disabled";
		};

		i2c_ctrl2: i2c@400c0000 {
			compatible = "nuvoton,npcx-i2c-ctrl";
			reg = <0x400c0000 0x1000>;
			interrupts = <36 3>;
			clocks = <&pcc NPCX_CLOCK_BUS_APB2 NPCX_PWDWN_CTL3 2>;
			status = "disabled";
		};

		i2c_ctrl3: i2c@400c2000 {
			compatible = "nuvoton,npcx-i2c-ctrl";
			reg = <0x400c2000 0x1000>;
			interrupts = <37 3>;
			clocks = <&pcc NPCX_CLOCK_BUS_APB2 NPCX_PWDWN_CTL3 3>;
			status = "disabled";
		};

		i2c_ctrl4: i2c@40008000 {
			compatible = "nuvoton,npcx-i2c-ctrl";
			reg = <0x40008000 0x1000>;
			interrupts = <19 3>;
			clocks = <&pcc NPCX_CLOCK_BUS_APB3 NPCX_PWDWN_CTL3 4>;
			status = "disabled";
		};

		i2c_ctrl5: i2c@40017000 {
			compatible = "nuvoton,npcx-i2c-ctrl";
			reg = <0x40017000 0x1000>;
			interrupts = <20 3>;
			clocks = <&pcc NPCX_CLOCK_BUS_APB3 NPCX_PWDWN_CTL7 0>;
			status = "disabled";
		};

		i2c_ctrl6: i2c@40018000 {
			compatible = "nuvoton,npcx-i2c-ctrl";
			reg = <0x40018000 0x1000>;
			interrupts = <16 3>;
			clocks = <&pcc NPCX_CLOCK_BUS_APB3 NPCX_PWDWN_CTL7 1>;
			status = "disabled";
		};

		i2c_ctrl7: i2c@40019000 {
			compatible = "nuvoton,npcx-i2c-ctrl";
			reg = <0x40019000 0x1000>;
			interrupts = <8 3>;
			clocks = <&pcc NPCX_CLOCK_BUS_APB3 NPCX_PWDWN_CTL7 2>;
			status = "disabled";
		};

		tach1: tach@400e1000 {
			compatible = "nuvoton,npcx-tach";
			reg = <0x400e1000 0x2000>;
			clocks = <&pcc NPCX_CLOCK_BUS_LFCLK NPCX_PWDWN_CTL1 5>;
			status = "disabled";
		};

		tach2: tach@400e3000 {
			compatible = "nuvoton,npcx-tach";
			reg = <0x400e3000 0x2000>;
			clocks = <&pcc NPCX_CLOCK_BUS_LFCLK NPCX_PWDWN_CTL1 6>;
			status = "disabled";
		};

		ps2_ctrl0: ps2@400b1000 {
			compatible = "nuvoton,npcx-ps2-ctrl";
			reg = <0x400b1000 0x1000>;
			interrupts = <21 4>;
			clocks = <&pcc NPCX_CLOCK_BUS_FREERUN NPCX_PWDWN_CTL1 3>;

			/* PS2 Channels - Please use them as PS2 node */
			ps2_channel0: io_ps2_channel0 {
				compatible = "nuvoton,npcx-ps2-channel";
				channel = <0x00>;
				status = "disabled";
			};

			ps2_channel1: io_ps2_channel1 {
				compatible = "nuvoton,npcx-ps2-channel";
				channel = <0x01>;
				status = "disabled";
			};

			ps2_channel2: io_ps2_channel2 {
				compatible = "nuvoton,npcx-ps2-channel";
				channel = <0x02>;
				status = "disabled";
			};

			ps2_channel3: io_ps2_channel3 {
				compatible = "nuvoton,npcx-ps2-channel";
				channel = <0x03>;
				status = "disabled";
			};
		};

		/* Dedicated SPI interface to access SPI flashes */
		spi_fiu0: spi@40020000 {
			compatible = "nuvoton,npcx-spi-fiu";
			#address-cells = <1>;
			#size-cells = <0>;
			reg = <0x40020000 0x2000>;
			clocks = <&pcc NPCX_CLOCK_BUS_FIU NPCX_PWDWN_CTL1 2>;
		};

		peci0: peci@400d4000 {
			compatible = "nuvoton,npcx-peci";
			reg = <0x400d4000 0x1000>;
			#address-cells = <1>;
			#size-cells = <0>;
			interrupts = <4 4>;
			clocks = <&pcc NPCX_CLOCK_BUS_FMCLK NPCX_PWDWN_CTL4 5>;
			status = "disabled";
		};
	};

	soc-if {
		/* Soc specific peripheral interface phandles which don't contain
		 * 'reg' prop. Please overwrite 'status' prop. to 'okay' if you
		 * want to switch the interface from io to specific peripheral.
		 */
		host_uart: io_host_uart {
			compatible = "nuvoton,npcx-host-uart";
			status = "disabled";
		};

		i2c0_0: io_i2c_ctrl0_port0 {
			compatible = "nuvoton,npcx-i2c-port";
			#address-cells = <1>;
			#size-cells = <0>;
			port = <0x00>;
			controller = <&i2c_ctrl0>;
			status = "disabled";
		};

		i2c1_0: io_i2c_ctrl1_port0 {
			compatible = "nuvoton,npcx-i2c-port";
			#address-cells = <1>;
			#size-cells = <0>;
			port = <0x10>;
			controller = <&i2c_ctrl1>;
			status = "disabled";
		};

		i2c2_0: io_i2c_ctrl2_port0 {
			compatible = "nuvoton,npcx-i2c-port";
			#address-cells = <1>;
			#size-cells = <0>;
			port = <0x20>;
			controller = <&i2c_ctrl2>;
			status = "disabled";
		};

		i2c3_0: io_i2c_ctrl3_port0 {
			compatible = "nuvoton,npcx-i2c-port";
			#address-cells = <1>;
			#size-cells = <0>;
			port = <0x30>;
			controller = <&i2c_ctrl3>;
			status = "disabled";
		};

		i2c4_1: io_i2c_ctrl4_port1 {
			compatible = "nuvoton,npcx-i2c-port";
			#address-cells = <1>;
			#size-cells = <0>;
			port = <0x41>;
			controller = <&i2c_ctrl4>;
			status = "disabled";
		};

		i2c5_0: io_i2c_ctrl5_port0 {
			compatible = "nuvoton,npcx-i2c-port";
			#address-cells = <1>;
			#size-cells = <0>;
			port = <0x50>;
			controller = <&i2c_ctrl5>;
			status = "disabled";
		};

		i2c5_1: io_i2c_ctrl5_port1 {
			compatible = "nuvoton,npcx-i2c-port";
			#address-cells = <1>;
			#size-cells = <0>;
			port = <0x51>;
			controller = <&i2c_ctrl5>;
			status = "disabled";
		};

		i2c6_0: io_i2c_ctrl6_port0 {
			compatible = "nuvoton,npcx-i2c-port";
			#address-cells = <1>;
			#size-cells = <0>;
			port = <0x60>;
			controller = <&i2c_ctrl6>;
			status = "disabled";
		};

		i2c6_1: io_i2c_ctrl6_port1 {
			compatible = "nuvoton,npcx-i2c-port";
			#address-cells = <1>;
			#size-cells = <0>;
			port = <0x61>;
			controller = <&i2c_ctrl6>;
			status = "disabled";
		};

		i2c7_0: io_i2c_ctrl7_port0 {
			compatible = "nuvoton,npcx-i2c-port";
			#address-cells = <1>;
			#size-cells = <0>;
			port = <0x70>;
			controller = <&i2c_ctrl7>;
			status = "disabled";
		};

		power_ctrl_psl: power-ctrl-psl {
			compatible = "nuvoton,npcx-power-psl";
			status = "disabled";
		};
	};

	soc-id {
		compatible = "nuvoton,npcx-soc-id";
		family-id = <0x20>;
	};

	booter-variant {
		compatible = "nuvoton,npcx-booter-variant";
	};
};

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