/* * Copyright (c) 2021 Nuvoton Technology Corporation. * * SPDX-License-Identifier: Apache-2.0 */ #include /* Macros for device tree declarations of npcx soc family */ #include #include #include #include #include #include #include / { 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 */ pinctrl-0 = <>; }; def-lvol-io-list { compatible = "nuvoton,npcx-lvolctrl-def"; /* Put low-voltage io pads into "lvol-io-pads" property if the * detection level of them is 1.8V, For example, if the bus * voltage of i2c1_0 port is 1.8V, this property should be: * lvol-io-pads = <&lvol_io90 &lvol_io87>; */ lvol-io-pads = <>; }; vsby-psl-in-list { compatible = "nuvoton,npcx-pslctrl-def"; /* Put Power Switch Logic (PSL) input pads which detect the * wake-up events and turn on core power supply (VCC1) from * standby power state (ultra-low-power mode) into "psl-in-pads" * property. For example, if PSL input 1 that is plan to detect * a 'falling edge' event, this property should be: * psl-in-pads = <&psl_in1>; * And the flag property in psl_in1 should change to * flag = ; */ psl-in-pads = <>; status = "disabled"; }; soc { bbram: bb-ram@400af000 { compatible = "nuvoton,npcx-bbram"; reg = <0x400af000 0x80 0x400af100 0x1>; reg-names = "memory", "status"; label = "BBRAM"; }; 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"; label = "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 = <4>; label = "SCFG"; }; 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>; label="MIWU_0"; }; miwu1: miwu@400bd000 { compatible = "nuvoton,npcx-miwu"; reg = <0x400bd000 0x2000>; index = <1>; #miwu-cells = <2>; label="MIWU_1"; }; miwu2: miwu@400bf000 { compatible = "nuvoton,npcx-miwu"; reg = <0x400bf000 0x2000>; index = <2>; #miwu-cells = <2>; label="MIWU_2"; }; gpio0: gpio@40081000 { compatible = "nuvoton,npcx-gpio"; reg = <0x40081000 0x2000>; gpio-controller; index = <0x0>; #gpio-cells=<2>; label="GPIO_0"; }; gpio1: gpio@40083000 { compatible = "nuvoton,npcx-gpio"; reg = <0x40083000 0x2000>; gpio-controller; index = <0x1>; #gpio-cells=<2>; label="GPIO_1"; }; gpio2: gpio@40085000 { compatible = "nuvoton,npcx-gpio"; reg = <0x40085000 0x2000>; gpio-controller; index = <0x2>; #gpio-cells=<2>; label="GPIO_2"; }; gpio3: gpio@40087000 { compatible = "nuvoton,npcx-gpio"; reg = <0x40087000 0x2000>; gpio-controller; index = <0x3>; #gpio-cells=<2>; label="GPIO_3"; }; gpio4: gpio@40089000 { compatible = "nuvoton,npcx-gpio"; reg = <0x40089000 0x2000>; gpio-controller; index = <0x4>; #gpio-cells=<2>; label="GPIO_4"; }; gpio5: gpio@4008b000 { compatible = "nuvoton,npcx-gpio"; reg = <0x4008b000 0x2000>; gpio-controller; index = <0x5>; #gpio-cells=<2>; label="GPIO_5"; }; gpio6: gpio@4008d000 { compatible = "nuvoton,npcx-gpio"; reg = <0x4008d000 0x2000>; gpio-controller; index = <0x6>; #gpio-cells=<2>; label="GPIO_6"; }; gpio7: gpio@4008f000 { compatible = "nuvoton,npcx-gpio"; reg = <0x4008f000 0x2000>; gpio-controller; index = <0x7>; #gpio-cells=<2>; label="GPIO_7"; }; gpio8: gpio@40091000 { compatible = "nuvoton,npcx-gpio"; reg = <0x40091000 0x2000>; gpio-controller; index = <0x8>; #gpio-cells=<2>; label="GPIO_8"; }; gpio9: gpio@40093000 { compatible = "nuvoton,npcx-gpio"; reg = <0x40093000 0x2000>; gpio-controller; index = <0x9>; #gpio-cells=<2>; label="GPIO_9"; }; gpioa: gpio@40095000 { compatible = "nuvoton,npcx-gpio"; reg = <0x40095000 0x2000>; gpio-controller; index = <0xA>; #gpio-cells=<2>; label="GPIO_A"; }; gpiob: gpio@40097000 { compatible = "nuvoton,npcx-gpio"; reg = <0x40097000 0x2000>; gpio-controller; index = <0xB>; #gpio-cells=<2>; label="GPIO_B"; }; gpioc: gpio@40099000 { compatible = "nuvoton,npcx-gpio"; reg = <0x40099000 0x2000>; gpio-controller; index = <0xC>; #gpio-cells=<2>; label="GPIO_C"; }; gpiod: gpio@4009b000 { compatible = "nuvoton,npcx-gpio"; reg = <0x4009b000 0x2000>; gpio-controller; index = <0xD>; #gpio-cells=<2>; label="GPIO_D"; }; gpioe: gpio@4009d000 { compatible = "nuvoton,npcx-gpio"; reg = <0x4009d000 0x2000>; gpio-controller; index = <0xE>; #gpio-cells=<2>; label="GPIO_E"; }; gpiof: gpio@4009f000 { compatible = "nuvoton,npcx-gpio"; reg = <0x4009f000 0x2000>; gpio-controller; index = <0xF>; #gpio-cells=<2>; label="GPIO_F"; }; pwm0: pwm@40080000 { compatible = "nuvoton,npcx-pwm"; reg = <0x40080000 0x2000>; clocks = <&pcc NPCX_CLOCK_BUS_APB2 NPCX_PWDWN_CTL2 0>; pinctrl-0 = <&alt4_pwm0_sl>; /* PINC3 */ #pwm-cells = <3>; status = "disabled"; label = "PWM_0"; }; pwm1: pwm@40082000 { compatible = "nuvoton,npcx-pwm"; reg = <0x40082000 0x2000>; clocks = <&pcc NPCX_CLOCK_BUS_APB2 NPCX_PWDWN_CTL2 1>; pinctrl-0 = <&alt4_pwm1_sl>; /* PINC2 */ #pwm-cells = <3>; status = "disabled"; label = "PWM_1"; }; pwm2: pwm@40084000 { compatible = "nuvoton,npcx-pwm"; reg = <0x40084000 0x2000>; clocks = <&pcc NPCX_CLOCK_BUS_APB2 NPCX_PWDWN_CTL2 2>; pinctrl-0 = <&alt4_pwm2_sl>; /* PINC4 */ #pwm-cells = <3>; status = "disabled"; label = "PWM_2"; }; pwm3: pwm@40086000 { compatible = "nuvoton,npcx-pwm"; reg = <0x40086000 0x2000>; clocks = <&pcc NPCX_CLOCK_BUS_APB2 NPCX_PWDWN_CTL2 3>; pinctrl-0 = <&alt4_pwm3_sl>; /* PIN80 */ #pwm-cells = <3>; status = "disabled"; label = "PWM_3"; }; pwm4: pwm@40088000 { compatible = "nuvoton,npcx-pwm"; reg = <0x40088000 0x2000>; clocks = <&pcc NPCX_CLOCK_BUS_APB2 NPCX_PWDWN_CTL2 4>; pinctrl-0 = <&alt4_pwm4_sl>; /* PINB6 */ #pwm-cells = <3>; status = "disabled"; label = "PWM_4"; }; pwm5: pwm@4008a000 { compatible = "nuvoton,npcx-pwm"; reg = <0x4008a000 0x2000>; clocks = <&pcc NPCX_CLOCK_BUS_APB2 NPCX_PWDWN_CTL2 5>; pinctrl-0 = <&alt4_pwm5_sl>; /* PINB7 */ #pwm-cells = <3>; status = "disabled"; label = "PWM_5"; }; pwm6: pwm@4008c000 { compatible = "nuvoton,npcx-pwm"; reg = <0x4008c000 0x2000>; clocks = <&pcc NPCX_CLOCK_BUS_APB2 NPCX_PWDWN_CTL2 6>; pinctrl-0 = <&alt4_pwm6_sl>; /* PINC0 */ #pwm-cells = <3>; status = "disabled"; label = "PWM_6"; }; pwm7: pwm@4008e000 { compatible = "nuvoton,npcx-pwm"; reg = <0x4008e000 0x2000>; clocks = <&pcc NPCX_CLOCK_BUS_APB2 NPCX_PWDWN_CTL2 7>; pinctrl-0 = <&alt4_pwm7_sl>; /* PIN60 */ #pwm-cells = <3>; status = "disabled"; label = "PWM_7"; }; 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"; label = "ADC_0"; }; twd0: watchdog@400d8000 { compatible = "nuvoton,npcx-watchdog"; reg = <0x400d8000 0x2000>; t0-out = <&wui_t0out>; label = "TWD_0"; }; 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>; /* PIN46.47.51.52.53.54.55.57 */ pinctrl-0 = <&alt1_no_lpc_espi>; /* WUI maps for eSPI signals */ espi-rst-wui = <&wui_espi_rst>; label = "ESPI_0"; #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>; label = "HOST_SUBS"; }; /* 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>; label = "I2CCTRL_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>; label = "I2CCTRL_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>; label = "I2CCTRL_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>; label = "I2CCTRL_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>; label = "I2CCTRL_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>; label = "I2CCTRL_5"; 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>; label = "I2CCTRL_6"; 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>; label = "I2CCTRL_7"; status = "disabled"; }; tach1: tach@400e1000 { compatible = "nuvoton,npcx-tach"; reg = <0x400e1000 0x2000>; clocks = <&pcc NPCX_CLOCK_BUS_LFCLK NPCX_PWDWN_CTL1 5>; label = "TACH_1"; status = "disabled"; }; tach2: tach@400e3000 { compatible = "nuvoton,npcx-tach"; reg = <0x400e3000 0x2000>; clocks = <&pcc NPCX_CLOCK_BUS_LFCLK NPCX_PWDWN_CTL1 6>; label = "TACH_2"; 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>; label = "PS2_CTRL_0"; /* PS2 Channels - Please use them as PS2 node */ ps2_channel0: io_ps2_channel0 { compatible = "nuvoton,npcx-ps2-channel"; channel = <0x00>; pinctrl-0 = <&alt3_ps2_0_sl>; /* PIN67.70 */ label = "PS2_CHANNEL_0"; status = "disabled"; }; ps2_channel1: io_ps2_channel1 { compatible = "nuvoton,npcx-ps2-channel"; channel = <0x01>; pinctrl-0 = <&alt3_ps2_1_sl>; /* PIN62.63 */ label = "PS2_CHANNEL_1"; status = "disabled"; }; ps2_channel2: io_ps2_channel2 { compatible = "nuvoton,npcx-ps2-channel"; channel = <0x02>; pinctrl-0 = <&alt3_ps2_2_sl>; /* PIN37.34 */ label = "PS2_CHANNEL_2"; status = "disabled"; }; ps2_channel3: io_ps2_channel3 { compatible = "nuvoton,npcx-ps2-channel"; channel = <0x03>; pinctrl-0 = <&altc_ps2_3_sl2>; /* PINA6.A7 */ label = "PS2_CHANNEL_3"; 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_APB3 NPCX_PWDWN_CTL1 2>; label = "SPI_FIU"; }; }; 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"; /* Host serial port pinmux PIN75 86 36 33 42 C7 B3 B2 */ pinctrl-0 = <&altb_rxd_sl &altb_txd_sl &altb_rts_sl &altb_cts_sl &altb_ri_sl &altb_dtr_bout_sl &altb_dcd_sl &altb_dsr_sl>; label = "HOST_UART_IO"; status = "disabled"; }; psl_out: psl-out { compatible = "nuvoton,npcx-psl-out"; controller = <&gpio8>; pin = <5>; label = "PSL_OUT"; }; i2c0_0: io_i2c_ctrl0_port0 { compatible = "nuvoton,npcx-i2c-port"; #address-cells = <1>; #size-cells = <0>; port = <0x00>; controller = <&i2c_ctrl0>; pinctrl-0 = <&alt2_i2c0_0_sl>; /* PINB5.B4 */ label = "I2C_0_PORT_0"; status = "disabled"; }; i2c1_0: io_i2c_ctrl1_port0 { compatible = "nuvoton,npcx-i2c-port"; #address-cells = <1>; #size-cells = <0>; port = <0x10>; controller = <&i2c_ctrl1>; pinctrl-0 = <&alt2_i2c1_0_sl>; /* PIN90.87 */ label = "I2C_1_PORT_0"; status = "disabled"; }; i2c2_0: io_i2c_ctrl2_port0 { compatible = "nuvoton,npcx-i2c-port"; #address-cells = <1>; #size-cells = <0>; port = <0x20>; controller = <&i2c_ctrl2>; pinctrl-0 = <&alt2_i2c2_0_sl>; /* PIN92.91 */ label = "I2C_2_PORT_0"; status = "disabled"; }; i2c3_0: io_i2c_ctrl3_port0 { compatible = "nuvoton,npcx-i2c-port"; #address-cells = <1>; #size-cells = <0>; port = <0x30>; controller = <&i2c_ctrl3>; pinctrl-0 = <&alt2_i2c3_0_sl>; /* PIND1.D0 */ label = "I2C_3_PORT_0"; status = "disabled"; }; i2c4_1: io_i2c_ctrl4_port1 { compatible = "nuvoton,npcx-i2c-port"; #address-cells = <1>; #size-cells = <0>; port = <0x41>; controller = <&i2c_ctrl4>; pinctrl-0 = <&alt6_i2c4_1_sl>; /* PINF3.F2 */ label = "I2C_4_PORT_1"; status = "disabled"; }; i2c5_0: io_i2c_ctrl5_port0 { compatible = "nuvoton,npcx-i2c-port"; #address-cells = <1>; #size-cells = <0>; port = <0x50>; controller = <&i2c_ctrl5>; pinctrl-0 = <&alt2_i2c5_0_sl>; /* PIN33.36 */ label = "I2C_5_PORT_0"; status = "disabled"; }; i2c5_1: io_i2c_ctrl5_port1 { compatible = "nuvoton,npcx-i2c-port"; #address-cells = <1>; #size-cells = <0>; port = <0x51>; controller = <&i2c_ctrl5>; pinctrl-0 = <&alt6_i2c5_1_sl>; /* PINF5.F4 */ label = "I2C_5_PORT_1"; status = "disabled"; }; i2c6_0: io_i2c_ctrl6_port0 { compatible = "nuvoton,npcx-i2c-port"; #address-cells = <1>; #size-cells = <0>; port = <0x60>; controller = <&i2c_ctrl6>; pinctrl-0 = <&alt2_i2c6_0_sl>; /* PINC2.C1 */ label = "I2C_6_PORT_0"; status = "disabled"; }; i2c6_1: io_i2c_ctrl6_port1 { compatible = "nuvoton,npcx-i2c-port"; #address-cells = <1>; #size-cells = <0>; port = <0x61>; controller = <&i2c_ctrl6>; pinctrl-0 = <&alt6_i2c6_1_sl>; /* PINE4.E3 */ label = "I2C_6_PORT_1"; status = "disabled"; }; i2c7_0: io_i2c_ctrl7_port0 { compatible = "nuvoton,npcx-i2c-port"; #address-cells = <1>; #size-cells = <0>; port = <0x70>; controller = <&i2c_ctrl7>; pinctrl-0 = <&alt2_i2c7_0_sl>; /* PINB3.B2 */ label = "I2C_7_PORT_0"; 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>; };