From 9417c62056f2462bd70d2138c7eaa4aa75bae67f Mon Sep 17 00:00:00 2001 From: cpchiang Date: Thu, 23 May 2024 02:04:09 -0700 Subject: [PATCH 1/6] boards: npcm400f: add doc and picture add doc and picture. Signed-off-by: cpchiang --- boards/nuvoton/npcm400f_evb/doc/index.rst | 99 ++++++++++++++++++ .../nuvoton/npcm400f_evb/doc/npcm400f_evb.jpg | Bin 0 -> 288783 bytes 2 files changed, 99 insertions(+) create mode 100644 boards/nuvoton/npcm400f_evb/doc/index.rst create mode 100644 boards/nuvoton/npcm400f_evb/doc/npcm400f_evb.jpg diff --git a/boards/nuvoton/npcm400f_evb/doc/index.rst b/boards/nuvoton/npcm400f_evb/doc/index.rst new file mode 100644 index 00000000000000..581235c20278e8 --- /dev/null +++ b/boards/nuvoton/npcm400f_evb/doc/index.rst @@ -0,0 +1,99 @@ +.. _npcm400f_evb: + +Nuvoton NPCM400F_EVB +#################### + +Overview +******** + +The NPCX400F_EVB kit is a development platform to evaluate the +Nuvoton NPCM4 series microcontrollers. This board needs to be mated with +part number NPCM400F. + +.. image:: npcm400f_evb.jpg + :align: center + :alt: NPCM400F Evaluation Board + +Hardware +******** + +- ARM Cortex-M4F Processor +- 768 KB RAM and 64 KB boot ROM +- ADC & GPIO headers +- UART0 and UART1 + +Supported Features +================== + +The following features are supported: + ++-----------+------------+-------------------------------------+ +| Interface | Controller | Driver/Component | ++===========+============+=====================================+ +| NVIC | on-chip | nested vector interrupt controller | ++-----------+------------+-------------------------------------+ +| ADC | on-chip | adc controller | ++-----------+------------+-------------------------------------+ +| CLOCK | on-chip | reset and clock control | ++-----------+------------+-------------------------------------+ +| GPIO | on-chip | gpio | ++-----------+------------+-------------------------------------+ +| I2C | on-chip | i2c port/controller | ++-----------+------------+-------------------------------------+ +| I3C | on-chip | i3c port/controller | ++-----------+------------+-------------------------------------+ +| PINMUX | on-chip | pinmux | ++-----------+------------+-------------------------------------+ +| UART | on-chip | serial port-polling; | +| | | serial port-interrupt | ++-----------+------------+-------------------------------------+ +| WDT | on-chip | watchdog | ++-----------+------------+-------------------------------------+ + +The default configuration can be found in the defconfig file: +:zephyr_file:`boards/nuvoton/npcm400f_evb/npcm400f_evb_defconfig` + + +Connections and IOs +=================== + +Nuvoton to provide the schematic for this board. + +System Clock +============ + +The NPCX400F MCU is configured to use the 96Mhz. + +Serial Port +=========== + +UART0 is configured for serial logs. + +Programming and Debugging +************************* + +This board comes with a Cortex ETM port which facilitates tracing and debugging +using a single physical connection. In addition, it comes with sockets for +JTAG-only sessions. + +Flashing +======== + +If the correct headers are installed, this board supports J-TAG. + +To flash with J-TAG, install the drivers for your programmer, for example: +SEGGER J-link's drivers are at https://www.segger.com/downloads/jlink/ + +Build and flash the shell module sample.:: + + west build -t clean && \ + west build -c -p auto -b npcm400f_evb samples/subsys/shell/shell_module/ && \ + west flash --openocd /usr/local/bin/openocd + +Debugging +========= + +Use JTAG/SWD with a J-Link + +References +********** diff --git a/boards/nuvoton/npcm400f_evb/doc/npcm400f_evb.jpg b/boards/nuvoton/npcm400f_evb/doc/npcm400f_evb.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a9781f7a9fc7ec826bbf805e8edf5afe96f4abe6 GIT binary patch literal 288783 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 z z$k4{YOOUzS_m_sp-mG62_~Q%z z_A{MGzLxo&AA@`qsr*y%#+#sN5dEi9)+Z2K#9db;`jT(}0F(4Sm21WNQ}`!a)wGFZ zS!dDiX0w%)=>>>v=U7j zAgKYE=jG+lq@F8D{>>vl?xnn*c@HHN7k52!#{~UNcVzj~tBI{B$$L0Q{{SXA@%dV( zMw*g*@_&JWHR+6H&#A7T#s2^gHQ$GJ8a%qiq?&u{mY;97hF%?@IKz?H9PygMztL^1 zF76QD+T8t`MT8h;4d%#HlFQ#>^xceSjlZ~5`{J#^iWbM&%lJ~BXIzI+@cTn;F0Ez5$T_)Y{ zwH-!pCJ0arxxpus*Z@gB)kDMyBoJLjs?tIwjiYv5z<^3SEXMJ{3QPXtnc`CudCsV zRa{;cb){=I`F%Fj`KM?iw&Zp=A3L;xQMZhrQ~Fm?@MGeii2fDp_fcpT+I{86iDQpWdu!`exQgja@wzS; zfDf98LCWDS-AO#IU^ioS66G`e+~R1_)Fp|ty;?Yyj|iXwvWTH+}kq89iueAX`C?QdBk8A z#{lilApaly6WkU9BOW4|A!GgI1J#O`Y2o7FAz%FD(mjHAsGmid${{RGw{knV~`v88>68PK2 zz7?Crc7J8r3|4|awOiaNCMgieLasM9dGyC3yU+M6FZ>pUU-&6*hoSgK!`>6S@Rx(M zn}yUbr_^qvn^4wnRSKf*jBJJk+{Xc#ob4xW+#kuM!Z_*YF^xDsV}10sx}R$t_Yd_a zCfBrGH9l|smHcnuZ-Kg9)cV9WTArtOf27@k9+mcwk~@oeriI!?+vTEp%F387>IUf$ z{IzXAXO9tn)%x~w^yBicF^m#((C4*#55pf8YTg>q z^h=EwThw%$#j}>)R3XGHx8o>i$pl-1)4t6Ntp) zZw9&Ac5LkR5BMW*j-hfbn(3FIBFT?lIj`t5{s?LCe^U4d{{RHE_+8;GTsYJ;pY2g7 zc*-~LHGA1tDtdgbEBX0v+6%{Me|6(e6m2cRI+Vvh`1OB5pYTLa5#RW?{t1Eb%TU!X zE_Dm({{Xdo%ZrH&l1aB#y-|{RI8Xrg0>3okTA6&X(O6nsvgTU(S^1xPm*H`gsyB$J zr5k=ac_aBX(J%5O)9#iS?dJJLf-f0@Fn4w{^Jjie0(WExyo#tQO#H_y9 zQcpkK1Kzw$pZ)fd{`7w|EZy4$SNt#XI%!<9?gVmk)7RFY3#kEs!%d83%7U=Z-#}g000MXjf|n zTx2lhW40=3%}H|xA~tp=nZnKTWe~Pk=G;K^Bx5yu!;xLvYt|PwU%QekxRgi$AzYGI zsNnpk9eNyeto6BBHy%FmI0FEEDq9^`;pm?$+wYSxLU8CvRyph3gZ5nNOKE)!kc|J=L zEym(v`T5T$HRs;}egSIwe~Eu;kA_+lc5_;4b{fW>(Tf{V5)kbzyDV;nVr5rQrV@rW z18K%ZZ205$&G3JTe{cT)1bFh&;`#h9rFeeVO1ik0Pq>AmmO1X^U?XG>z$}T#TyyMd zpTN)CC&E7sKWYz*+V$+3fY5wpHRtw4%r+Cbm7iwRC=j}Er|$vv_52=LHZBw`DlY!c zD{iWPnn&!5GsDWRl@^k3evN;biQ#KKQ^w!$N1Lc-OM8tY!+t2S*DZX=A!dwBRu@%m zzG?&K^1HUS@xUWB;t>HTBL#fE8Ow2w++*9{ujlMv4}LOeeiQ!yf^2I)4s{EMhs7Go z+nZ}sXK^Y_kjZG|`Kq2$k>s{FI5}Jq&3IOkGu+I4$pg7RG1^oU*VO+2I{hnxaMdV6 zyedbQ^&4Jl%T#1_P850I+Ea&8ze*!uU+e$^XC zhQTKzfK5F}Uc(29`__+zQfZ#``z`*>zwo(y8g6W_yhCrP&32Ya29IoIo^VomcN|

r-|vy!l0cu*=EhZs^3B6XycDL7*!S;XwIDb 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

wChLz^#jk|!ng5pWU`bxi{vm(oaB8%F# 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 Date: Wed, 22 May 2024 19:39:21 -0700 Subject: [PATCH 2/6] drivers: clock_control: add npcm clock control driver add npcm clock control driver. Signed-off-by: cpchiang --- .../npcm400f_evb/npcm400f_evb_defconfig | 3 + drivers/clock_control/CMakeLists.txt | 1 + drivers/clock_control/Kconfig | 2 + drivers/clock_control/Kconfig.npcm | 11 ++ drivers/clock_control/clock_control_npcm.c | 157 ++++++++++++++++ dts/arm/nuvoton/npcm/npcm.dtsi | 52 ++++++ dts/arm/nuvoton/npcm/npcm4.dtsi | 20 +-- dts/bindings/clock/nuvoton,npcm-pcc.yaml | 167 ++++++++++++++++++ include/zephyr/dt-bindings/clock/npcm_clock.h | 34 ++++ soc/nuvoton/npcm/common/soc_clock.h | 139 +++++++++++++++ soc/nuvoton/npcm/npcm4/soc.h | 4 + 11 files changed, 579 insertions(+), 11 deletions(-) create mode 100644 drivers/clock_control/Kconfig.npcm create mode 100644 drivers/clock_control/clock_control_npcm.c create mode 100644 dts/arm/nuvoton/npcm/npcm.dtsi create mode 100644 dts/bindings/clock/nuvoton,npcm-pcc.yaml create mode 100755 include/zephyr/dt-bindings/clock/npcm_clock.h create mode 100644 soc/nuvoton/npcm/common/soc_clock.h diff --git a/boards/nuvoton/npcm400f_evb/npcm400f_evb_defconfig b/boards/nuvoton/npcm400f_evb/npcm400f_evb_defconfig index eec39d055095c5..9b72d8b30377af 100644 --- a/boards/nuvoton/npcm400f_evb/npcm400f_evb_defconfig +++ b/boards/nuvoton/npcm400f_evb/npcm400f_evb_defconfig @@ -10,6 +10,9 @@ CONFIG_BOOTLOADER_SRAM_SIZE=0 CONFIG_SYS_CLOCK_HW_CYCLES_PER_SEC=96000000 CONFIG_XIP=n +# Clock Driver +CONFIG_CLOCK_CONTROL=y +CONFIG_CLOCK_CONTROL_NPCM=y # UART Driver CONFIG_SERIAL=n diff --git a/drivers/clock_control/CMakeLists.txt b/drivers/clock_control/CMakeLists.txt index 596b07676e0353..7d8ae6fb3612b0 100644 --- a/drivers/clock_control/CMakeLists.txt +++ b/drivers/clock_control/CMakeLists.txt @@ -17,6 +17,7 @@ zephyr_library_sources_ifdef(CONFIG_CLOCK_CONTROL_MCUX_PCC clock_cont zephyr_library_sources_ifdef(CONFIG_CLOCK_CONTROL_MCUX_SCG clock_control_mcux_scg.c) zephyr_library_sources_ifdef(CONFIG_CLOCK_CONTROL_MCUX_SIM clock_control_mcux_sim.c) zephyr_library_sources_ifdef(CONFIG_CLOCK_CONTROL_MCUX_SYSCON clock_control_mcux_syscon.c) +zephyr_library_sources_ifdef(CONFIG_CLOCK_CONTROL_NPCM clock_control_npcm.c) zephyr_library_sources_ifdef(CONFIG_CLOCK_CONTROL_NPCX clock_control_npcx.c) zephyr_library_sources_ifdef(CONFIG_CLOCK_CONTROL_NRF clock_control_nrf.c) zephyr_library_sources_ifdef(CONFIG_CLOCK_CONTROL_NRF_DRIVER_CALIBRATION nrf_clock_calibration.c) diff --git a/drivers/clock_control/Kconfig b/drivers/clock_control/Kconfig index b0c6cf8de48c7d..8188f93e9cc7a4 100644 --- a/drivers/clock_control/Kconfig +++ b/drivers/clock_control/Kconfig @@ -50,6 +50,8 @@ source "drivers/clock_control/Kconfig.mcux_sim" source "drivers/clock_control/Kconfig.mcux_syscon" +source "drivers/clock_control/Kconfig.npcm" + source "drivers/clock_control/Kconfig.npcx" source "drivers/clock_control/Kconfig.rv32m1" diff --git a/drivers/clock_control/Kconfig.npcm b/drivers/clock_control/Kconfig.npcm new file mode 100644 index 00000000000000..cdf96bfb02f825 --- /dev/null +++ b/drivers/clock_control/Kconfig.npcm @@ -0,0 +1,11 @@ +# NPCM Clock controller driver configuration options + +# Copyright (c) 2024 Nuvoton Technology Corporation. +# SPDX-License-Identifier: Apache-2.0 + +config CLOCK_CONTROL_NPCM + bool "NPCM clock controller driver" + default y + depends on DT_HAS_NUVOTON_NPCM_PCC_ENABLED + help + Enable support for NPCM clock controller driver. diff --git a/drivers/clock_control/clock_control_npcm.c b/drivers/clock_control/clock_control_npcm.c new file mode 100644 index 00000000000000..d1c043233d3ec8 --- /dev/null +++ b/drivers/clock_control/clock_control_npcm.c @@ -0,0 +1,157 @@ +/* + * Copyright (c) 2024 Nuvoton Technology Corporation. + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#define DT_DRV_COMPAT nuvoton_npcm_pcc + +#include +#include +#include + +#include +LOG_MODULE_REGISTER(clock_control_npcm, LOG_LEVEL_ERR); + +/* Driver config */ +struct npcm_pcc_config { + /* cdcg device base address */ + uintptr_t base_cdcg; + /* pmc device base address */ + uintptr_t base_pmc; +}; + +/* Driver convenience defines */ +#define DRV_CONFIG(dev) \ + ((const struct npcm_pcc_config *)(dev)->config) + +#define HAL_CDCG_INST(dev) \ + (struct cdcg_reg *)(DRV_CONFIG(dev)->base_cdcg) + +/* Clock controller local functions */ +static inline int npcm_clock_control_on(const struct device *dev, + clock_control_subsys_t sub_system) +{ + ARG_UNUSED(dev); + struct npcm_clk_cfg *clk_cfg = (struct npcm_clk_cfg *)(sub_system); + const uint32_t pmc_base = DRV_CONFIG(dev)->base_pmc; + + if (clk_cfg->ctrl >= NPCM_PWDWN_CTL_COUNT) + return -EINVAL; + + /* Clear related PD (Power-Down) bit of module to turn on clock */ + NPCM_PWDWN_CTL(pmc_base, clk_cfg->ctrl) &= ~(BIT(clk_cfg->bit)); + return 0; +} + +static inline int npcm_clock_control_off(const struct device *dev, + clock_control_subsys_t sub_system) +{ + ARG_UNUSED(dev); + struct npcm_clk_cfg *clk_cfg = (struct npcm_clk_cfg *)(sub_system); + const uint32_t pmc_base = DRV_CONFIG(dev)->base_pmc; + + if (clk_cfg->ctrl >= NPCM_PWDWN_CTL_COUNT) { + return -EINVAL; + } + + /* Set related PD (Power-Down) bit of module to turn off clock */ + NPCM_PWDWN_CTL(pmc_base, clk_cfg->ctrl) |= BIT(clk_cfg->bit); + return 0; +} + +static int npcm_clock_control_get_subsys_rate(const struct device *dev, + clock_control_subsys_t sub_system, + uint32_t *rate) +{ + ARG_UNUSED(dev); + struct npcm_clk_cfg *clk_cfg = (struct npcm_clk_cfg *)(sub_system); + + switch (clk_cfg->bus) { + case NPCM_CLOCK_BUS_APB1: + *rate = NPCM_APB_CLOCK(1); + break; + case NPCM_CLOCK_BUS_APB2: + *rate = NPCM_APB_CLOCK(2); + break; + case NPCM_CLOCK_BUS_APB3: + *rate = NPCM_APB_CLOCK(3); + break; + case NPCM_CLOCK_BUS_AHB6: + *rate = CORE_CLK/(AHB6DIV_VAL + 1); + break; + case NPCM_CLOCK_BUS_FIU: + *rate = CORE_CLK/(FIUDIV_VAL + 1); + break; + case NPCM_CLOCK_BUS_CORE: + *rate = CORE_CLK; + break; + case NPCM_CLOCK_BUS_LFCLK: + *rate = LFCLK; + break; + case NPCM_CLOCK_BUS_FMCLK: + *rate = FMCLK; + break; + default: + *rate = 0U; + /* Invalid parameters */ + return -EINVAL; + } + + return 0; +} + +/* Clock controller driver registration */ +static struct clock_control_driver_api npcm_clock_control_api = { + .on = npcm_clock_control_on, + .off = npcm_clock_control_off, + .get_rate = npcm_clock_control_get_subsys_rate, +}; + +static int npcm_clock_control_init(const struct device *dev) +{ + struct cdcg_reg *const inst_cdcg = HAL_CDCG_INST(dev); + + /* + * Resetting the OFMCLK (even to the same value) will make the clock + * unstable for a little which can affect peripheral communication like + * eSPI. Skip this if not needed. + */ + if (inst_cdcg->HFCGN != HFCGN_VAL || inst_cdcg->HFCGML != HFCGML_VAL + || inst_cdcg->HFCGMH != HFCGMH_VAL) { + /* + * Configure frequency multiplier M/N values according to + * the requested OFMCLK (Unit:Hz). + */ + inst_cdcg->HFCGN = HFCGN_VAL; + inst_cdcg->HFCGML = HFCGML_VAL; + inst_cdcg->HFCGMH = HFCGMH_VAL; + + /* Load M and N values into the frequency multiplier */ + inst_cdcg->HFCGCTRL |= BIT(NPCM_HFCGCTRL_LOAD); + /* Wait for stable */ + while (IS_BIT_SET(inst_cdcg->HFCGCTRL, NPCM_HFCGCTRL_CLK_CHNG)) + ; + } + + /* Set all clock prescalers of core and peripherals. */ + inst_cdcg->HFCGP = ((FPRED_VAL << 4) | AHB6DIV_VAL); + inst_cdcg->HFCBCD = (APB1DIV_VAL | (APB2DIV_VAL << 4)); + inst_cdcg->HFCBCD1 = FIUDIV_VAL; + inst_cdcg->HFCBCD2 = APB3DIV_VAL; + + return 0; +} + +const struct npcm_pcc_config pcc_config = { + .base_cdcg = DT_INST_REG_ADDR_BY_NAME(0, cdcg), + .base_pmc = DT_INST_REG_ADDR_BY_NAME(0, pmc), +}; + +DEVICE_DT_INST_DEFINE(0, + &npcm_clock_control_init, + NULL, + NULL, &pcc_config, + PRE_KERNEL_1, + CONFIG_KERNEL_INIT_PRIORITY_OBJECTS, + &npcm_clock_control_api); diff --git a/dts/arm/nuvoton/npcm/npcm.dtsi b/dts/arm/nuvoton/npcm/npcm.dtsi new file mode 100644 index 00000000000000..44bd794fd23ce4 --- /dev/null +++ b/dts/arm/nuvoton/npcm/npcm.dtsi @@ -0,0 +1,52 @@ +/* + * Copyright (c) 2024 Nuvoton Technology Corporation. + * + * SPDX-License-Identifier: Apache-2.0 + */ + +/ { + soc { + pcc: clock-controller@4000d000 { + compatible = "nuvoton,npcm-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,npcm-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>; + }; + }; + + soc-id { + compatible = "nuvoton,npcm-soc-id"; + family-id = <0x20>; + }; + + booter-variant { + compatible = "nuvoton,npcm-booter-variant"; + }; +}; diff --git a/dts/arm/nuvoton/npcm/npcm4.dtsi b/dts/arm/nuvoton/npcm/npcm4.dtsi index 35664956354215..258aae84be7ade 100644 --- a/dts/arm/nuvoton/npcm/npcm4.dtsi +++ b/dts/arm/nuvoton/npcm/npcm4.dtsi @@ -10,6 +10,9 @@ #include #include +/* Device tree declarations of npcm soc family */ +#include "npcm.dtsi" + / { cpus { #address-cells = <1>; @@ -23,17 +26,12 @@ }; soc { - - 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>; + pcc: clock-controller@4000d000 { + clock-frequency = ; /* OFMCLK runs at 96MHz */ + core-prescaler = <1>; /* CORE_CLK runs at 96MHz */ + apb1-prescaler = <8>; /* APB1_CLK runs at 12MHz */ + apb2-prescaler = <1>; /* APB2_CLK runs at 96MHz */ + apb3-prescaler = <1>; /* APB3_CLK runs at 96MHz */ }; }; diff --git a/dts/bindings/clock/nuvoton,npcm-pcc.yaml b/dts/bindings/clock/nuvoton,npcm-pcc.yaml new file mode 100644 index 00000000000000..cf8583a5e50c43 --- /dev/null +++ b/dts/bindings/clock/nuvoton,npcm-pcc.yaml @@ -0,0 +1,167 @@ +# Copyright (c) 2024 Nuvoton Technology Corporation. +# SPDX-License-Identifier: Apache-2.0 + +description: | + Nuvoton, NPCM PCC (Power and Clock Controller) node. + Besides power management, this node is also in charge of configuring the + Oscillator Frequency Multiplier Clock (OFMCLK), which is derived from + High-Frequency Clock Generator (HFCG), is the source clock of Cortex-M4 core + and most of NPCM hardware modules. + + Here is an example of configuring OFMCLK and the other clock sources derived + from it in board dts file. + &pcc { + clock-frequency = ; /* OFMCLK runs at 96MHz */ + core-prescaler = <1>; /* CORE_CLK runs at 96MHz */ + apb1-prescaler = <8>; /* APB1_CLK runs at 12MHz */ + apb2-prescaler = <1>; /* APB2_CLK runs at 96MHz */ + apb3-prescaler = <1>; /* APB3_CLK runs at 96MHz */ + }; + +compatible: "nuvoton,npcm-pcc" + +include: [clock-controller.yaml, base.yaml] + +properties: + reg: + required: true + + clock-frequency: + required: true + type: int + description: | + Default frequency in Hz for HFCG output clock (OFMCLK). Currently, + only the following values are allowed: + 96000000, 96 MHz + 48000000, 48 MHz + enum: + - 96000000 + - 48000000 + + core-prescaler: + type: int + required: true + description: | + Core clock prescaler (FPRED). It sets the Core frequency, CORE_CLK, by + dividing OFMCLK(MCLK) and needs to meet the following requirements. + - CORE_CLK must be set to 4MHz <= CORE_CLK <= 100MHz. + = Only the following values are allowed: + 1, CORE_CLK = OFMCLK + 2, CORE_CLK = OFMCLK / 2 + 3, CORE_CLK = OFMCLK / 3 + 4, CORE_CLK = OFMCLK / 4 + 5, CORE_CLK = OFMCLK / 5 + 6, CORE_CLK = OFMCLK / 6 + 7, CORE_CLK = OFMCLK / 7 + 8, CORE_CLK = OFMCLK / 8 + 9, CORE_CLK = OFMCLK / 9 + 10, CORE_CLK = OFMCLK / 10 + enum: + - 1 + - 2 + - 3 + - 4 + - 5 + - 6 + - 7 + - 8 + - 9 + - 10 + + apb1-prescaler: + type: int + required: true + description: | + APB1 prescaler. It sets the APB1 bus frequency, APB1_CLK, by dividing + OFMCLK(MCLK) and needs to meet the following requirements. + - APB1_CLK must be set to 4MHz <= APB1_CLK <= 50MHz. + - APB1_CLK must be an integer division (including 1) of CORE_CLK. + = Only the following values are allowed: + 1, APB1_CLK = OFMCLK + 2, APB1_CLK = OFMCLK / 2 + 3, APB1_CLK = OFMCLK / 3 + 4, APB1_CLK = OFMCLK / 4 + 5, APB1_CLK = OFMCLK / 5 + 6, APB1_CLK = OFMCLK / 6 + 7, APB1_CLK = OFMCLK / 7 + 8, APB1_CLK = OFMCLK / 8 + 9, APB1_CLK = OFMCLK / 9 + 10, APB1_CLK = OFMCLK / 10 + enum: + - 1 + - 2 + - 3 + - 4 + - 5 + - 6 + - 7 + - 8 + - 9 + - 10 + + apb2-prescaler: + type: int + required: true + description: | + APB2 prescaler. It sets the APB2 bus frequency, APB2_CLK, by dividing + OFMCLK(MCLK) and needs to meet the following requirements. + - APB2_CLK must be set to 8MHz <= APB2_CLK <= 50MHz. + - APB2_CLK must be an integer division (including 1) of CORE_CLK. + = Only the following values are allowed: + 1, APB2_CLK = OFMCLK + 2, APB2_CLK = OFMCLK / 2 + 3, APB2_CLK = OFMCLK / 3 + 4, APB2_CLK = OFMCLK / 4 + 5, APB2_CLK = OFMCLK / 5 + 6, APB2_CLK = OFMCLK / 6 + 7, APB2_CLK = OFMCLK / 7 + 8, APB2_CLK = OFMCLK / 8 + 9, APB2_CLK = OFMCLK / 9 + 10, APB2_CLK = OFMCLK / 10 + enum: + - 1 + - 2 + - 3 + - 4 + - 5 + - 6 + - 7 + - 8 + - 9 + - 10 + + apb3-prescaler: + type: int + required: true + description: | + APB3 prescaler. It sets the APB3 bus frequency, APB3_CLK, by dividing + OFMCLK(MCLK) and needs to meet the following requirements. + - APB3_CLK must be set to 12.5MHz <= APB3_CLK <= 50MHz. + - APB3_CLK must be an integer division (including 1) of CORE_CLK. + = Only the following values are allowed: + 1, APB3_CLK = OFMCLK + 2, APB3_CLK = OFMCLK / 2 + 3, APB3_CLK = OFMCLK / 3 + 4, APB3_CLK = OFMCLK / 4 + 5, APB3_CLK = OFMCLK / 5 + 6, APB3_CLK = OFMCLK / 6 + 7, APB3_CLK = OFMCLK / 7 + 8, APB3_CLK = OFMCLK / 8 + 9, APB3_CLK = OFMCLK / 9 + 10, APB3_CLK = OFMCLK / 10 + enum: + - 1 + - 2 + - 3 + - 4 + - 5 + - 6 + - 7 + - 8 + - 9 + - 10 + +clock-cells: + - bus + - ctl + - bit diff --git a/include/zephyr/dt-bindings/clock/npcm_clock.h b/include/zephyr/dt-bindings/clock/npcm_clock.h new file mode 100755 index 00000000000000..7308991ad4e265 --- /dev/null +++ b/include/zephyr/dt-bindings/clock/npcm_clock.h @@ -0,0 +1,34 @@ +/* + * Copyright (c) 2024 Nuvoton Technology Corporation. + * + * SPDX-License-Identifier: Apache-2.0 + */ +#ifndef ZEPHYR_INCLUDE_DT_BINDINGS_CLOCK_NPCM_CLOCK_H_ +#define ZEPHYR_INCLUDE_DT_BINDINGS_CLOCK_NPCM_CLOCK_H_ + +/* clock bus references */ +#define NPCM_CLOCK_BUS_FREERUN 0 +#define NPCM_CLOCK_BUS_LFCLK 1 +#define NPCM_CLOCK_BUS_OSC 2 +#define NPCM_CLOCK_BUS_FIU 3 +#define NPCM_CLOCK_BUS_CORE 4 +#define NPCM_CLOCK_BUS_APB1 5 +#define NPCM_CLOCK_BUS_APB2 6 +#define NPCM_CLOCK_BUS_APB3 7 +#define NPCM_CLOCK_BUS_APB4 8 +#define NPCM_CLOCK_BUS_AHB6 9 +#define NPCM_CLOCK_BUS_FMCLK 10 + +/* clock enable/disable references */ +#define NPCM_PWDWN_CTL0 0 +#define NPCM_PWDWN_CTL1 1 +#define NPCM_PWDWN_CTL2 2 +#define NPCM_PWDWN_CTL3 3 +#define NPCM_PWDWN_CTL4 4 +#define NPCM_PWDWN_CTL5 5 +#define NPCM_PWDWN_CTL6 6 +#define NPCM_PWDWN_CTL7 7 +#define NPCM_PWDWN_CTL8 8 +#define NPCM_PWDWN_CTL_COUNT 9 + +#endif /* ZEPHYR_INCLUDE_DT_BINDINGS_CLOCK_NPCX_CLOCK_H_ */ diff --git a/soc/nuvoton/npcm/common/soc_clock.h b/soc/nuvoton/npcm/common/soc_clock.h new file mode 100644 index 00000000000000..85b7f85120faac --- /dev/null +++ b/soc/nuvoton/npcm/common/soc_clock.h @@ -0,0 +1,139 @@ +/* + * Copyright (c) 2024 Nuvoton Technology Corporation. + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#ifndef _NUVOTON_NPCM_SOC_CLOCK_H_ +#define _NUVOTON_NPCM_SOC_CLOCK_H_ + +#ifdef __cplusplus +extern "C" { +#endif + +/* Common clock control device name for all NPCM series */ +#define NPCM_CLK_CTRL_NODE DT_NODELABEL(pcc) + +/** + * @brief NPCM clock configuration structure + * + * Used to indicate the device's clock bus type and corresponding PWDWN_CTL + * register/bit to turn on/off its source clock. + */ +struct npcm_clk_cfg { + uint16_t bus:8; + uint16_t ctrl:5; + uint16_t bit:3; +}; + +/* Clock settings from pcc node */ +/* Target OFMCLK freq */ +#define OFMCLK DT_PROP(DT_NODELABEL(pcc), clock_frequency) +/* Core clock prescaler */ +#define FPRED_VAL (DT_PROP(DT_NODELABEL(pcc), core_prescaler) - 1) +/* APB1 clock divider */ +#define APB1DIV_VAL (DT_PROP(DT_NODELABEL(pcc), apb1_prescaler) - 1) +/* APB2 clock divider */ +#define APB2DIV_VAL (DT_PROP(DT_NODELABEL(pcc), apb2_prescaler) - 1) +/* APB3 clock divider */ +#define APB3DIV_VAL (DT_PROP(DT_NODELABEL(pcc), apb3_prescaler) - 1) + +/* Core domain clock */ +#define CORE_CLK (OFMCLK / DT_PROP(DT_NODELABEL(pcc), core_prescaler)) +/* Low Frequency clock */ +#define LFCLK 32768 + +/* FMUL clock */ +#define FMCLK OFMCLK /* FMUL clock = OFMCLK */ + +/* APBs source clock */ +#define APBSRC_CLK OFMCLK + +/* AHB6 clock */ +#define AHB6DIV_VAL 0 /* AHB6_CLK = CORE_CLK */ +/* FIU clock divider */ +#define FIUDIV_VAL 0 /* FIU_CLK = CORE_CLK */ +/* Get APB clock freq */ +#define NPCM_APB_CLOCK(no) (APBSRC_CLK / (APB##no##DIV_VAL + 1)) + +/* + * Frequency multiplier M/N value definitions according to the requested + * OFMCLK (Unit:Hz). + */ +#if (OFMCLK > 50000000) +#define HFCGN_VAL 0x82 /* Set XF_RANGE as 1 if OFMCLK > 50MHz */ +#else +#define HFCGN_VAL 0x02 +#endif +#if (OFMCLK == 100000000) +#define HFCGMH_VAL 0x0B +#define HFCGML_VAL 0xEC +#elif (OFMCLK == 96000000) +#define HFCGMH_VAL 0x0B +#define HFCGML_VAL 0x72 +#elif (OFMCLK == 90000000) +#define HFCGMH_VAL 0x0A +#define HFCGML_VAL 0xBA +#elif (OFMCLK == 80000000) +#define HFCGMH_VAL 0x09 +#define HFCGML_VAL 0x89 +#elif (OFMCLK == 66000000) +#define HFCGMH_VAL 0x07 +#define HFCGML_VAL 0xDE +#elif (OFMCLK == 50000000) +#define HFCGMH_VAL 0x0B +#define HFCGML_VAL 0xEC +#elif (OFMCLK == 48000000) +#define HFCGMH_VAL 0x0B +#define HFCGML_VAL 0x72 +#elif (OFMCLK == 40000000) +#define HFCGMH_VAL 0x09 +#define HFCGML_VAL 0x89 +#elif (OFMCLK == 33000000) +#define HFCGMH_VAL 0x07 +#define HFCGML_VAL 0xDE +#else +#error "Unsupported OFMCLK Frequency" +#endif + +/** + * @brief Function to notify clock driver that backup the counter value of + * low-frequency timer before ec entered deep idle state. + */ +void npcm_clock_capture_low_freq_timer(void); + +/** + * @brief Function to notify clock driver that compensate the counter value of + * system timer by low-frequency timer after ec left deep idle state. + * + */ +void npcm_clock_compensate_system_timer(void); + +/** + * @brief Function to get time ticks in system sleep/deep sleep state. The unit + * is ticks. + * + */ +uint64_t npcm_clock_get_sleep_ticks(void); + +/** + * @brief Function to configure system sleep settings. After ec received "wfi" + * instruction, ec will enter sleep/deep sleep state for better power + * consumption. + * + * @param is_deep A boolean indicating ec enters deep sleep or sleep state + * @param is_instant A boolean indicating 'Instant Wake-up' from deep idle is + * enabled + */ +void npcm_clock_control_turn_on_system_sleep(bool is_deep, bool is_instant); + +/** + * @brief Function to turn off system sleep mode. + */ +void npcm_clock_control_turn_off_system_sleep(void); + +#ifdef __cplusplus +} +#endif + +#endif /* _NUVOTON_NPCM_SOC_CLOCK_H_ */ diff --git a/soc/nuvoton/npcm/npcm4/soc.h b/soc/nuvoton/npcm/npcm4/soc.h index 6449769087e13e..43e0e5da741b0f 100644 --- a/soc/nuvoton/npcm/npcm4/soc.h +++ b/soc/nuvoton/npcm/npcm4/soc.h @@ -15,4 +15,8 @@ #include #include +#include +#include +#include + #endif /* _NUVOTON_NPCM_SOC_H_ */ From 41b57e49b825d87855d83682650df5331979bd47 Mon Sep 17 00:00:00 2001 From: cpchiang Date: Wed, 22 May 2024 20:43:16 -0700 Subject: [PATCH 3/6] drivers: pinctrl : add npcm pinctrl driver add npcm pinctrl driver. default set below pin as GPIOs: GPIO50, GPIO51, GPIO52 GPIO60, GPIO61, GPIO62 GPIOE0, GPIOE1, GPIOE2 GPIOE4, GPIOE5, GPIOE6 Signed-off-by: cpchiang --- boards/nuvoton/npcm400f_evb/npcm400f_evb.dts | 2 +- .../npcm400f_evb/npcm400f_evb_defconfig | 4 + drivers/pinctrl/CMakeLists.txt | 1 + drivers/pinctrl/Kconfig | 1 + drivers/pinctrl/Kconfig.npcm | 13 + drivers/pinctrl/pinctrl_npcm.c | 96 +++ dts/arm/nuvoton/npcm/npcm-alts-map.dtsi | 807 ++++++++++++++++++ dts/arm/nuvoton/npcm/npcm.dtsi | 34 + dts/arm/nuvoton/npcm/npcm4.dtsi | 35 +- .../nuvoton/npcm/npcm4/npcm4-alts-map.dtsi | 8 + dts/arm/nuvoton/npcm/npcm4/npcm4-pinctrl.dtsi | 187 ++++ .../pinctrl/nuvoton,npcm-pinctrl-conf.yaml | 16 + .../pinctrl/nuvoton,npcm-pinctrl-def.yaml | 14 + .../pinctrl/nuvoton,npcm-pinctrl.yaml | 97 +++ dts/bindings/pinctrl/nuvoton,npcm-scfg.yaml | 32 + .../zephyr/dt-bindings/pinctrl/npcm-pinctrl.h | 16 + soc/nuvoton/npcm/common/CMakeLists.txt | 4 + soc/nuvoton/npcm/common/pinctrl_soc.h | 182 ++++ soc/nuvoton/npcm/common/scfg.c | 84 ++ soc/nuvoton/npcm/common/soc_dt.h | 418 +++++++++ soc/nuvoton/npcm/common/soc_pins.h | 35 + soc/nuvoton/npcm/npcm4/soc.h | 4 + 22 files changed, 2071 insertions(+), 19 deletions(-) create mode 100644 drivers/pinctrl/Kconfig.npcm create mode 100644 drivers/pinctrl/pinctrl_npcm.c create mode 100644 dts/arm/nuvoton/npcm/npcm-alts-map.dtsi create mode 100644 dts/arm/nuvoton/npcm/npcm4/npcm4-alts-map.dtsi create mode 100644 dts/arm/nuvoton/npcm/npcm4/npcm4-pinctrl.dtsi create mode 100644 dts/bindings/pinctrl/nuvoton,npcm-pinctrl-conf.yaml create mode 100644 dts/bindings/pinctrl/nuvoton,npcm-pinctrl-def.yaml create mode 100644 dts/bindings/pinctrl/nuvoton,npcm-pinctrl.yaml create mode 100644 dts/bindings/pinctrl/nuvoton,npcm-scfg.yaml create mode 100644 include/zephyr/dt-bindings/pinctrl/npcm-pinctrl.h create mode 100644 soc/nuvoton/npcm/common/pinctrl_soc.h create mode 100644 soc/nuvoton/npcm/common/scfg.c create mode 100644 soc/nuvoton/npcm/common/soc_dt.h create mode 100644 soc/nuvoton/npcm/common/soc_pins.h diff --git a/boards/nuvoton/npcm400f_evb/npcm400f_evb.dts b/boards/nuvoton/npcm400f_evb/npcm400f_evb.dts index 1e84578d30feb8..8f2ede6107fcb0 100644 --- a/boards/nuvoton/npcm400f_evb/npcm400f_evb.dts +++ b/boards/nuvoton/npcm400f_evb/npcm400f_evb.dts @@ -7,6 +7,7 @@ /dts-v1/; #include +#include / { model = "Nuvoton NPCM400F evaluation board"; @@ -18,5 +19,4 @@ aliases { }; - }; diff --git a/boards/nuvoton/npcm400f_evb/npcm400f_evb_defconfig b/boards/nuvoton/npcm400f_evb/npcm400f_evb_defconfig index 9b72d8b30377af..051da2924c497a 100644 --- a/boards/nuvoton/npcm400f_evb/npcm400f_evb_defconfig +++ b/boards/nuvoton/npcm400f_evb/npcm400f_evb_defconfig @@ -14,6 +14,10 @@ CONFIG_XIP=n CONFIG_CLOCK_CONTROL=y CONFIG_CLOCK_CONTROL_NPCM=y +# Pinctrl Driver +CONFIG_PINCTRL=y +CONFIG_PINCTRL_NPCM=y + # UART Driver CONFIG_SERIAL=n diff --git a/drivers/pinctrl/CMakeLists.txt b/drivers/pinctrl/CMakeLists.txt index 91bbb8b3d51618..fce099bf8c529e 100644 --- a/drivers/pinctrl/CMakeLists.txt +++ b/drivers/pinctrl/CMakeLists.txt @@ -8,6 +8,7 @@ zephyr_library_sources_ifdef(CONFIG_PINCTRL_AMBIQ pinctrl_ambiq.c) zephyr_library_sources_ifdef(CONFIG_PINCTRL_GD32_AF pinctrl_gd32_af.c) zephyr_library_sources_ifdef(CONFIG_PINCTRL_GD32_AFIO pinctrl_gd32_afio.c) zephyr_library_sources_ifdef(CONFIG_PINCTRL_ITE_IT8XXX2 pinctrl_ite_it8xxx2.c) +zephyr_library_sources_ifdef(CONFIG_PINCTRL_NPCM pinctrl_npcm.c) zephyr_library_sources_ifdef(CONFIG_PINCTRL_NPCX pinctrl_npcx.c) zephyr_library_sources_ifdef(CONFIG_PINCTRL_NUMICRO pinctrl_numicro.c) zephyr_library_sources_ifdef(CONFIG_PINCTRL_NRF pinctrl_nrf.c) diff --git a/drivers/pinctrl/Kconfig b/drivers/pinctrl/Kconfig index ab6ea86bcc9a81..e83f33c1f2435f 100644 --- a/drivers/pinctrl/Kconfig +++ b/drivers/pinctrl/Kconfig @@ -37,6 +37,7 @@ source "drivers/pinctrl/Kconfig.b91" source "drivers/pinctrl/Kconfig.ambiq" source "drivers/pinctrl/Kconfig.gd32" source "drivers/pinctrl/Kconfig.it8xxx2" +source "drivers/pinctrl/Kconfig.npcm" source "drivers/pinctrl/Kconfig.npcx" source "drivers/pinctrl/Kconfig.numicro" source "drivers/pinctrl/Kconfig.nrf" diff --git a/drivers/pinctrl/Kconfig.npcm b/drivers/pinctrl/Kconfig.npcm new file mode 100644 index 00000000000000..d7ff4a73d8e3f0 --- /dev/null +++ b/drivers/pinctrl/Kconfig.npcm @@ -0,0 +1,13 @@ +# NPCM Pin Controller configuration options + +# Copyright (c) 2024 Nuvoton Technology Corporation. +# SPDX-License-Identifier: Apache-2.0 + + +config PINCTRL_NPCM + bool "Nuvoton NPCM enhanced Super I/O (eSIO) pin controller driver" + default y + depends on DT_HAS_NUVOTON_NPCM_PINCTRL_ENABLED + help + This option enables the pin controller driver for NPCM family of + processors. diff --git a/drivers/pinctrl/pinctrl_npcm.c b/drivers/pinctrl/pinctrl_npcm.c new file mode 100644 index 00000000000000..d287fbfd244f02 --- /dev/null +++ b/drivers/pinctrl/pinctrl_npcm.c @@ -0,0 +1,96 @@ +/* + * Copyright (c) 2024 Nuvoton Technology Corporation. + * + * SPDX-License-Identifier: Apache-2.0 + */ +#include +#include +#include + +/* Driver config */ +struct npcm_pinctrl_config { + /* Device base address used for pinctrl driver */ + uintptr_t base_scfg; + uintptr_t base_glue; +}; + +static const struct npcm_pinctrl_config npcm_pinctrl_cfg = { + .base_scfg = NPCM_SCFG_REG_ADDR, + .base_glue = NPCM_GLUE_REG_ADDR, +}; + +static void npcm_periph_pinmux_configure(const struct npcm_periph *alt, bool is_alternate) +{ + const uintptr_t scfg_base = npcm_pinctrl_cfg.base_scfg; + uint8_t alt_mask = BIT(alt->bit); + + /* + * is_alternate == 0 means select GPIO, otherwise Alternate Func. + * inverted == 0: + * Set devalt bit to select Alternate Func. + * inverted == 1: + * Clear devalt bit to select Alternate Func. + */ + if (is_alternate != alt->inverted) { + NPCM_DEVALT(scfg_base, alt->group) |= alt_mask; + } else { + NPCM_DEVALT(scfg_base, alt->group) &= ~alt_mask; + } +} + +static void npcm_periph_pupd_configure(const struct npcm_periph *pupd, + enum npcm_io_bias_type type) +{ + const uintptr_t scfg_base = npcm_pinctrl_cfg.base_scfg; + + if (type == NPCM_BIAS_TYPE_NONE) { + NPCM_PUPD_EN(scfg_base, pupd->group) &= ~BIT(pupd->bit); + } else { + NPCM_PUPD_EN(scfg_base, pupd->group) |= BIT(pupd->bit); + } +} + +static void npcm_periph_configure(const pinctrl_soc_pin_t *pin, uintptr_t reg) +{ + if (pin->cfg.periph.type == NPCM_PINCTRL_TYPE_PERIPH_PINMUX) { + /* Configure peripheral device's pinmux functionality */ + npcm_periph_pinmux_configure(&pin->cfg.periph, + !pin->flags.pinmux_gpio); + } else if (pin->cfg.periph.type == NPCM_PINCTRL_TYPE_PERIPH_PUPD) { + /* Configure peripheral device's internal PU/PD */ + npcm_periph_pupd_configure(&pin->cfg.periph, + pin->flags.io_bias_type); + } +} + +static void npcm_device_control_configure(const pinctrl_soc_pin_t *pin) +{ + const struct npcm_dev_ctl *ctrl = (const struct npcm_dev_ctl *)&pin->cfg.dev_ctl; + const uintptr_t scfg_base = npcm_pinctrl_cfg.base_scfg; + + SET_FIELD(NPCM_DEV_CTL(scfg_base, ctrl->offest), + FIELD(ctrl->field_offset, ctrl->field_size), + ctrl->field_value); +} + +/* Pinctrl API implementation */ +int pinctrl_configure_pins(const pinctrl_soc_pin_t *pins, uint8_t pin_cnt, + uintptr_t reg) +{ + ARG_UNUSED(reg); + + /* Configure all peripheral devices' properties here. */ + for (uint8_t i = 0; i < pin_cnt; i++) { + if (pins[i].flags.type == NPCM_PINCTRL_TYPE_PERIPH) { + /* Configure peripheral device's pinmux functionality */ + npcm_periph_configure(&pins[i], reg); + } else if (pins[i].flags.type == NPCM_PINCTRL_TYPE_DEVICE_CTRL) { + /* Configure device's io characteristics */ + npcm_device_control_configure(&pins[i]); + } else { + return -ENOTSUP; + } + } + + return 0; +} diff --git a/dts/arm/nuvoton/npcm/npcm-alts-map.dtsi b/dts/arm/nuvoton/npcm/npcm-alts-map.dtsi new file mode 100644 index 00000000000000..28da8cb946fbc8 --- /dev/null +++ b/dts/arm/nuvoton/npcm/npcm-alts-map.dtsi @@ -0,0 +1,807 @@ +/* + * Copyright (c) 2024 Nuvoton Technology Corporation. + * + * SPDX-License-Identifier: Apache-2.0 + */ + +/ { + npcm-alts-map { + compatible = "nuvoton,npcm-pinctrl-conf"; + + /* SCFG device alternative table */ + /* SCFG DEVALT 0 */ + alt0_espi_cs2_sl: alt00 { + alts = <&scfg 0x10 0x0 0>; + }; + alt0_fiu_back_cs_sl: alt02 { + alts = <&scfg 0x10 0x2 0>; + }; + alt0_clkrn_sl: alt05 { + alts = <&scfg 0x10 0x5 0>; + }; + alt0_lpcpd_sl: alt06 { + alts = <&scfg 0x10 0x6 0>; + }; + alt0_serirq_sl: alt07 { + alts = <&scfg 0x10 0x7 0>; + }; + + /* SCFG DEVALT 1 */ + alt1_vin1_sl: alt11 { + alts = <&scfg 0x11 0x1 0>; + }; + alt1_vin2_sl: alt12 { + alts = <&scfg 0x11 0x2 0>; + }; + alt1_vin3_sl: alt13 { + alts = <&scfg 0x11 0x3 0>; + }; + alt1_atx5vsb_sl: alt14 { + alts = <&scfg 0x11 0x4 0>; + }; + alt1_vin5_sl: alt15 { + alts = <&scfg 0x11 0x5 0>; + }; + alt1_vin7_sl: alt17 { + alts = <&scfg 0x11 0x7 0>; + }; + + /* SCFG DEVALT 2 */ + alt2_vin14_sl: alt20 { + alts = <&scfg 0x12 0x0 0>; + }; + alt2_vin15_sl: alt21 { + alts = <&scfg 0x12 0x1 0>; + }; + alt2_vin16_sl: alt22 { + alts = <&scfg 0x12 0x2 0>; + }; + + /* SCFG DEVALT 3 */ + alt3_ta0_sl: alt30 { + alts = <&scfg 0x13 0x0 0>; + }; + alt3_ta1_sl: alt31 { + alts = <&scfg 0x13 0x1 0>; + }; + alt3_ta2_sl: alt32 { + alts = <&scfg 0x13 0x2 0>; + }; + alt3_ta3_sl: alt33 { + alts = <&scfg 0x13 0x3 0>; + }; + alt3_ta4_sl: alt34 { + alts = <&scfg 0x13 0x4 0>; + }; + alt3_ta5_sl: alt35 { + alts = <&scfg 0x13 0x5 0>; + }; + alt3_ta6_sl: alt36 { + alts = <&scfg 0x13 0x6 0>; + }; + alt3_ta7_sl: alt37 { + alts = <&scfg 0x13 0x7 0>; + }; + + + /* SCFG DEVALT 4 */ + alt4_ta8_sl: alt40 { + alts = <&scfg 0x14 0x0 0>; + }; + alt4_ta9_sl: alt41 { + alts = <&scfg 0x14 0x1 0>; + }; + alt4_pwm0_sl: alt42 { + alts = <&scfg 0x14 0x2 0>; + }; + alt4_pwm1_sl: alt43 { + alts = <&scfg 0x14 0x3 0>; + }; + alt4_pwm2_sl: alt44 { + alts = <&scfg 0x14 0x4 0>; + }; + alt4_pwm3_sl: alt45 { + alts = <&scfg 0x14 0x5 0>; + }; + alt4_pwm4_sl: alt46 { + alts = <&scfg 0x14 0x6 0>; + }; + alt4_pwm5_sl: alt47 { + alts = <&scfg 0x14 0x7 0>; + }; + + /* SCFG DEVALT 5 */ + alt5_pwm6_sl: alt50 { + alts = <&scfg 0x15 0x0 0>; + }; + alt5_pwm7_sl: alt51 { + alts = <&scfg 0x15 0x1 0>; + }; + alt5_pwm8_sl: alt52 { + alts = <&scfg 0x15 0x2 0>; + }; + alt5_pwm9_sl: alt53 { + alts = <&scfg 0x15 0x3 0>; + }; + alt5_peci_en: alt54 { + alts = <&scfg 0x15 0x4 0>; + }; + alt5_ecsci_sl: alt55 { + alts = <&scfg 0x15 0x5 0>; + }; + alt5_smi_sl: alt56 { + alts = <&scfg 0x15 0x6 0>; + }; + + /* SCFG DEVALT 6 */ + alt6_p80_d_inv: alt60 { + alts = <&scfg 0x16 0x0 0>; + }; + alt6_prt_sl: alt62 { + alts = <&scfg 0x16 0x2 0>; + }; + alt6_port80_sl: alt63 { + alts = <&scfg 0x16 0x3 0>; + }; + alt6_p80_g_inv: alt64 { + alts = <&scfg 0x16 0x4 0>; + }; + alt6_espi_s5s4_sl: alt65 { + alts = <&scfg 0x16 0x5 0>; + }; + alt6_espi_out_sel: alt66 { + alts = <&scfg 0x16 0x6 0>; + }; + alt6_uart_ext_sel: alt67 { + alts = <&scfg 0x16 0x7 0>; + }; + + /* SCFG DEVALT 7 */ + alt7_fw_rdy_sl: alt70-inv { + alts = <&scfg 0x17 0x0 1>; + }; + alt7_cirrx_sl: alt71 { + alts = <&scfg 0x17 0x1 0>; + }; + alt7_i3c6_sl: alt72 { + alts = <&scfg 0x17 0x2 0>; + }; + alt7_no_gp96: alt73-inv { + alts = <&scfg 0x17 0x3 1>; + }; + alt7_no_gp97: alt74-inv { + alts = <&scfg 0x17 0x4 1>; + }; + alt7_ext32ksl: alt75 { + alts = <&scfg 0x17 0x5 0>; + }; + alt7_clkout_sl: alt76 { + alts = <&scfg 0x17 0x6 0>; + }; + alt7_clkom_rtc32k: alt77 { + alts = <&scfg 0x17 0x7 0>; + }; + + /* SCFG DEVALT 8 */ + alt8_kb_irqtocore_en: alt80 { + alts = <&scfg 0x18 0x0 0>; + }; + alt8_ms_irqtocore_en: alt81 { + alts = <&scfg 0x18 0x1 0>; + }; + alt8_cir_irqtocore_en: alt82 { + alts = <&scfg 0x18 0x2 0>; + }; + alt8_prt_irqtocore_en: alt83 { + alts = <&scfg 0x18 0x3 0>; + }; + + /* SCFG DEVALT 9 */ + alt9_rts2_sl: alt90 { + alts = <&scfg 0x19 0x0 0>; + }; + alt9_sp2i_sl: alt91 { + alts = <&scfg 0x19 0x1 0>; + }; + alt9_sp2o_sl: alt92 { + alts = <&scfg 0x19 0x2 0>; + }; + alt9_sp2ctl_sl: alt93 { + alts = <&scfg 0x19 0x3 0>; + }; + alt9_cts2_sl: alt94 { + alts = <&scfg 0x19 0x4 0>; + }; + alt9_ri2_sl: alt95 { + alts = <&scfg 0x19 0x5 0>; + }; + alt9_dpwrok_sl: alt96 { + alts = <&scfg 0x19 0x6 0>; + }; + alt9_s0ix_sl: alt97 { + alts = <&scfg 0x19 0x7 0>; + }; + + /* SCFG DEVALT A */ + alta_smb1a_sl: alta0 { + alts = <&scfg 0x1A 0x0 0>; + }; + alta_smb3a_sl: alta1 { + alts = <&scfg 0x1A 0x1 0>; + }; + alta_smb4a_sl: alta2 { + alts = <&scfg 0x1A 0x2 0>; + }; + alta_smb5a_sl: alta3 { + alts = <&scfg 0x1A 0x3 0>; + }; + alta_i3c5_sl: alta4 { + alts = <&scfg 0x1A 0x4 0>; + }; + alta_smb1b_sl: alta5 { + alts = <&scfg 0x1A 0x5 0>; + }; + alta_urto1_sl: alta6 { + alts = <&scfg 0x1A 0x6 0>; + }; + alta_urto2_sl: alta7 { + alts = <&scfg 0x1A 0x7 0>; + }; + + /* SCFG DEVALT B */ + altb_rts1_sl: altb0 { + alts = <&scfg 0x1B 0x0 0>; + }; + altb_urti_sl: altb1 { + alts = <&scfg 0x1B 0x1 0>; + }; + altb_sp1i_sl: altb2 { + alts = <&scfg 0x1B 0x2 0>; + }; + altb_sp1o_sl: altb3 { + alts = <&scfg 0x1B 0x3 0>; + }; + altb_sp1ctl_sl: altb4 { + alts = <&scfg 0x1B 0x4 0>; + }; + altb_cts1_sl: altb5 { + alts = <&scfg 0x1B 0x5 0>; + }; + altb_ri1_sl: altb6 { + alts = <&scfg 0x1B 0x6 0>; + }; + altb_ldrq_sl: altb7 { + alts = <&scfg 0x1B 0x7 0>; + }; + + /* SCFG DEVALT C */ + altc_spip1_sl: altc1 { + alts = <&scfg 0x1C 0x1 0>; + }; + altc_shd_spi_quad: altc2 { + alts = <&scfg 0x1C 0x2 0>; + }; + altc_shd_spi: altc3 { + alts = <&scfg 0x1C 0x3 0>; + }; + altc_spip_dio23_gpio: altc4-inv { + alts = <&scfg 0x1C 0x4 1>; + }; + altc_urti1_sl: altc6 { + alts = <&scfg 0x1C 0x6 0>; + }; + altc_souta_p80_sl: altc7 { + alts = <&scfg 0x1C 0x7 0>; + }; + + /* SCFG DEVALT D */ + altd_gpioe0_lv: altd2 { + alts = <&scfg 0x1D 0x2 0>; + }; + altd_gpioe1_lv: altd3 { + alts = <&scfg 0x1D 0x3 0>; + }; + altd_caseopen_lv: altd4 { + alts = <&scfg 0x1D 0x4 0>; + }; + altd_sktocc_lv: altd5 { + alts = <&scfg 0x1D 0x5 0>; + }; + altd_gpioe2_lv: altd6 { + alts = <&scfg 0x1D 0x6 0>; + }; + + /* SCFG DEVALT E */ + alte_kcb_test: alte0 { + alts = <&scfg 0x1E 0x0 0>; + }; + alte_kbc_sl: alte3 { + alts = <&scfg 0x1E 0x3 0>; + }; + alte_kbcrst_sl: alte4 { + alts = <&scfg 0x1E 0x4 0>; + }; + alte_smb2a_sl: alte5 { + alts = <&scfg 0x1E 0x5 0>; + }; + alte_grn_led_sel: alte6 { + alts = <&scfg 0x1E 0x6 0>; + }; + alte_ylw_led_sel: alte7 { + alts = <&scfg 0x1E 0x7 0>; + }; + + /* SCFG DEVALT F */ + altf_gpioe5_lv: altf7 { + alts = <&scfg 0x1F 0x7 0>; + }; + + + /* SCFG DEVALT 10 */ + alt10_crgpio_rst_sl: alt100 { + alts = <&scfg 0x0B 0x0 0>; + }; + alt10_i3c2_sl: alt101 { + alts = <&scfg 0x0B 0x1 0>; + }; + alt10_i3c3_sl: alt102 { + alts = <&scfg 0x0B 0x2 0>; + }; + alt10_i3c4_sl: alt103 { + alts = <&scfg 0x0B 0x3 0>; + }; + alt10_i3c1_sl: alt106 { + alts = <&scfg 0x0B 0x6 0>; + }; + + /* SCFG DEVALT 11 */ + alt11_miwu_acpi_en: alt111 { + alts = <&scfg 0x0C 0x0 0>; + }; + alt11_sib_sync_all: alt112 { + alts = <&scfg 0x0C 0x1 0>; + }; + alt11_sib_sync_address: alt113 { + alts = <&scfg 0x0C 0x2 0>; + }; + + /* SCFG DEVALT 2E */ + alt2e_usbd_phy_en: alt2e4 { + alts = <&scfg 0x2E 0x4 0>; + }; + alt2e_usbd_phy_clk_sel: alt2e6 { + alts = <&scfg 0x2E 0x6 0>; + }; + + /* SCFG DEVALT 30 */ + alt30_vhif_pad_test_d: alt300 { + alts = <&scfg 0x30 0x0 0>; + }; + alt30_vhif_pad_test_en: alt301 { + alts = <&scfg 0x30 0x1 0>; + }; + alt30_vspi_pad_test_d: alt302 { + alts = <&scfg 0x30 0x2 0>; + }; + alt30_vspi_pad_test_en: alt303 { + alts = <&scfg 0x30 0x3 0>; + }; + + /* SCFG DEVALT 31 */ + alt31_fwctrl_cruart1: alt310 { + alts = <&scfg 0x31 0x0 0>; + }; + alt31_fwctrl_cruart1n: alt311 { + alts = <&scfg 0x31 0x1 0>; + }; + alt31_fwctrl_cruart2: alt312 { + alts = <&scfg 0x31 0x2 0>; + }; + alt31_fwctrl_cruart2n: alt313 { + alts = <&scfg 0x31 0x3 0>; + }; + alt31_urti2_sl: alt314 { + alts = <&scfg 0x31 0x4 0>; + }; + alt31_urto3_sl: alt315 { + alts = <&scfg 0x31 0x5 0>; + }; + alt31_urti3_sl: alt316 { + alts = <&scfg 0x31 0x6 0>; + }; + alt31_urto4_sl: alt317 { + alts = <&scfg 0x31 0x7 0>; + }; + + /* SCFG DEVALT 32 */ + alt32_uartf_irq2core_en: alt320 { + alts = <&scfg 0x32 0x0 0>; + }; + alt32_uarte_irq2core_en: alt321 { + alts = <&scfg 0x32 0x1 0>; + }; + alt32_uartd_irq2core_en: alt322 { + alts = <&scfg 0x32 0x2 0>; + }; + alt32_uartc_irq2core_en: alt323 { + alts = <&scfg 0x32 0x3 0>; + }; + alt32_uartb_irq2core_en: alt324 { + alts = <&scfg 0x32 0x4 0>; + }; + alt32_uarta_irq2core_en: alt325 { + alts = <&scfg 0x32 0x5 0>; + }; + + /* SCFG DEVALT 34 */ + alt34_can1_clkstop_req: alt340 { + alts = <&scfg 0x34 0x0 0>; + }; + alt34_can1_cclk_sel: alt341 { + alts = <&scfg 0x34 0x1 0>; + }; + alt34_can2_clkstop_req: alt342 { + alts = <&scfg 0x34 0x2 0>; + }; + alt34_can2_cclk_sel: alt343 { + alts = <&scfg 0x34 0x3 0>; + }; + alt34_can1_sl: alt346 { + alts = <&scfg 0x34 0x6 0>; + }; + alt34_can2_sl: alt347 { + alts = <&scfg 0x34 0x7 0>; + }; + + /* SCFG DEVALT 50 */ + alt50_psin_ctl: alt500 { + alts = <&scfg 0x50 0x0 0>; + }; + alt50_psout_ctl: alt501 { + alts = <&scfg 0x50 0x1 0>; + }; + alt50_pson_ctl: alt502 { + alts = <&scfg 0x50 0x2 0>; + }; + alt50_pme_ctl: alt503 { + alts = <&scfg 0x50 0x3 0>; + }; + alt50_3vsbsw_ctl: alt505 { + alts = <&scfg 0x50 0x5 0>; + }; + + /* SCFG DEVALT 51 */ + alt51_rstout0_ctl: alt510 { + alts = <&scfg 0x51 0x0 0>; + }; + alt51_rstout1_ctl: alt511 { + alts = <&scfg 0x51 0x1 0>; + }; + alt51_rstout2_ctl: alt512 { + alts = <&scfg 0x51 0x2 0>; + }; + + /* SCFG DEVALT 52 */ + alt52_dpwrok_ctl: alt520 { + alts = <&scfg 0x52 0x0 0>; + }; + alt52_rsmrst_ctl: alt521 { + alts = <&scfg 0x52 0x1 0>; + }; + alt52_deep_s5_ctl: alt522 { + alts = <&scfg 0x52 0x2 0>; + }; + alt52_pwrok0_ctl: alt523 { + alts = <&scfg 0x52 0x3 0>; + }; + + /* SCFG DEVALT 53 */ + alt53_psin_val: alt530 { + alts = <&scfg 0x53 0x0 0>; + }; + alt53_psout_val: alt531 { + alts = <&scfg 0x53 0x1 0>; + }; + alt53_pson_val: alt532 { + alts = <&scfg 0x53 0x2 0>; + }; + alt53_pme_val: alt533 { + alts = <&scfg 0x53 0x3 0>; + }; + alt53_3vsbsw_val: alt535 { + alts = <&scfg 0x53 0x5 0>; + }; + + /* SCFG DEVALT 54 */ + alt54_rstout0_val: alt540 { + alts = <&scfg 0x54 0x0 0>; + }; + alt54_rstout1_val: alt541 { + alts = <&scfg 0x54 0x1 0>; + }; + alt54_rstout2_val: alt542 { + alts = <&scfg 0x54 0x2 0>; + }; + + /* SCFG DEVALT 55 */ + alt55_dpwrok_val: alt550 { + alts = <&scfg 0x55 0x0 0>; + }; + alt55_rsmrst_val: alt551 { + alts = <&scfg 0x55 0x1 0>; + }; + alt55_deep_s5_val: alt552 { + alts = <&scfg 0x55 0x2 0>; + }; + alt55_pwrok0_val: alt553 { + alts = <&scfg 0x55 0x4 0>; + }; + + /* SCFG DEVALT 59 */ + alt59_psout_mod: alt591 { + alts = <&scfg 0x59 0x1 0>; + }; + alt59_pson_mod: alt592 { + alts = <&scfg 0x59 0x2 0>; + }; + alt59_pme_mod: alt593 { + alts = <&scfg 0x59 0x3 0>; + }; + alt59_3vsbsw_mod: alt595 { + alts = <&scfg 0x59 0x5 0>; + }; + + /* SCFG DEVALT 5A */ + alt5a_rstout0_mod: alt5a0 { + alts = <&scfg 0x5A 0x0 0>; + }; + alt5a_rstout1_mod: alt5a1 { + alts = <&scfg 0x5A 0x1 0>; + }; + alt5a_rstout2_mod: alt5a2 { + alts = <&scfg 0x5A 0x2 0>; + }; + + /* SCFG DEVALT 5B */ + alt5b_dpwrok_mod: alt5b0 { + alts = <&scfg 0x5B 0x0 0>; + }; + alt5b_rsmrst_mod: alt5b1 { + alts = <&scfg 0x5B 0x1 0>; + }; + alt5b_deep_s5_mod: alt5b2 { + alts = <&scfg 0x5B 0x2 0>; + }; + alt5b_dpwrok0_mod: alt5b3 { + alts = <&scfg 0x5B 0x3 0>; + }; + alt5b_dpwrok_pp: alt5b6 { + alts = <&scfg 0x5B 0x6 0>; + }; + alt5b_rsmrst_pp: alt5b7 { + alts = <&scfg 0x5B 0x7 0>; + }; + + /* SCFG DEVALT 5C */ + alt5c_psin_sel: alt5c0-inv { + alts = <&scfg 0x5C 0x0 1>; + }; + alt5c_psout_sel: alt5c1-inv { + alts = <&scfg 0x5C 0x1 1>; + }; + alt5c_pson_sel: alt5c2-inv { + alts = <&scfg 0x5C 0x2 1>; + }; + alt5c_pme_sel: alt5c3-inv { + alts = <&scfg 0x5C 0x3 1>; + }; + alt5c_3vsbsw_sel: alt5c4 { + alts = <&scfg 0x5C 0x4 0>; + }; + alt5c_slpsus_sel: alt5c5-inv { + alts = <&scfg 0x5C 0x5 1>; + }; + + /* SCFG DEVALT 5D */ + alt5d_rstout0_sel: alt5d0-inv { + alts = <&scfg 0x5D 0x0 1>; + }; + alt5d_rstout1_sel: alt5d1-inv { + alts = <&scfg 0x5D 0x1 1>; + }; + alt5d_rstout2_sel: alt5d2-inv { + alts = <&scfg 0x5D 0x2 1>; + }; + alt5d_sktocc_sel: alt5d4-inv { + alts = <&scfg 0x5D 0x4 1>; + }; + alt5d_caseopen_sel: alt5d5-inv { + alts = <&scfg 0x5D 0x5 1>; + }; + + /* SCFG DEVALT 5E */ + alt5e_dpwrok_sel: alt5e0-inv { + alts = <&scfg 0x5E 0x0 1>; + }; + alt5e_rsmrst_sel: alt5e1-inv { + alts = <&scfg 0x5E 0x1 1>; + }; + alt5e_deep_s5_sel: alt5e2-inv { + alts = <&scfg 0x5E 0x2 1>; + }; + alt5e_pwrok0_sel: alt5e3-inv { + alts = <&scfg 0x5E 0x3 1>; + }; + alt5e_3vsbsw_sel: alt5e5-inv { + alts = <&scfg 0x5E 0x5 1>; + }; + + /* SCFG DEVALT 5F */ + alt5f_slp_s3_sel: alt5f0-inv { + alts = <&scfg 0x5F 0x0 1>; + }; + alt5f_slp_s5_sel: alt5f1-inv { + alts = <&scfg 0x5F 0x1 1>; + }; + alt5f_atxpgd_sel: alt5f2-inv { + alts = <&scfg 0x5F 0x2 1>; + }; + alt5f_resetcon_sel: alt5f3 { + alts = <&scfg 0x5F 0x3 0>; + }; + alt5f_espi_pin_vw_sel: alt5f5 { + alts = <&scfg 0x5F 0x5 0>; + }; + + /* SCFG DEVALT 62 */ + alt62_sinc_sl: alt620 { + alts = <&scfg 0x62 0x0 0>; + }; + alt62_soutc_sl: alt621 { + alts = <&scfg 0x62 0x1 0>; + }; + alt62_rtsc_sl: alt622 { + alts = <&scfg 0x62 0x2 0>; + }; + alt62_ctsc_sl: alt623 { + alts = <&scfg 0x62 0x3 0>; + }; + alt62_sind_sl: alt624 { + alts = <&scfg 0x62 0x4 0>; + }; + alt62_soutd_sl: alt625 { + alts = <&scfg 0x62 0x5 0>; + }; + alt62_rtsd_sl: alt626 { + alts = <&scfg 0x62 0x6 0>; + }; + alt62_ctsd_sl: alt627 { + alts = <&scfg 0x62 0x7 0>; + }; + + /* SCFG DEVALT 66 */ + alt66_sine_sl: alt660 { + alts = <&scfg 0x66 0x0 0>; + }; + alt66_soute_sl: alt661 { + alts = <&scfg 0x66 0x1 0>; + }; + alt66_rtse_sl: alt662 { + alts = <&scfg 0x66 0x2 0>; + }; + alt66_ctse_sl: alt663 { + alts = <&scfg 0x66 0x3 0>; + }; + alt66_sinf_sl: alt664 { + alts = <&scfg 0x66 0x4 0>; + }; + alt66_soutf_sl: alt665 { + alts = <&scfg 0x66 0x5 0>; + }; + alt66_rtsf_sl: alt666 { + alts = <&scfg 0x66 0x6 0>; + }; + alt66_ctsf_sl: alt667 { + alts = <&scfg 0x66 0x7 0>; + }; + + /* SCFG DEVALT 67 */ + alt67_fw_rdy_en: alt670 { + alts = <&scfg 0x67 0x0 0>; + }; + alt67_fw_rdy_sel: alt671 { + alts = <&scfg 0x67 0x1 0>; + }; + alt67_fw_rdy_type: alt672 { + alts = <&scfg 0x67 0x2 0>; + }; + alt67_deeps5_en: alt677 { + alts = <&scfg 0x67 0x7 0>; + }; + + /* SCFG DEVALT 69 */ + alt69_usbd_phy_ponrst: alt695 { + alts = <&scfg 0x69 0x5 0>; + }; + + /* SCFG DEVALT 6A */ + alt6a_siox1_sl: alt6a0 { + alts = <&scfg 0x6A 0x0 0>; + }; + alt6a_siox2_sl: alt6a1 { + alts = <&scfg 0x6A 0x1 0>; + }; + alt6a_siox1_pu_en: alt6a2 { + alts = <&scfg 0x6A 0x2 0>; + }; + alt6a_siox2_pu_en: alt6a3 { + alts = <&scfg 0x6A 0x3 0>; + }; + + /* SCFG DEVALT 6B */ + alt6b_urtb_sin_sl2: alt6b0 { + alts = <&scfg 0x6B 0x0 0>; + }; + alt6b_urtb_sout_sl2: alt6b1 { + alts = <&scfg 0x6B 0x1 0>; + }; + alt6b_urtb_rts_sl2: alt6b2 { + alts = <&scfg 0x6B 0x2 0>; + }; + alt6b_urtb_cts_sl2: alt6b3 { + alts = <&scfg 0x6B 0x3 0>; + }; + alt6b_urtb_dsr_sl2: alt6b4 { + alts = <&scfg 0x6B 0x4 0>; + }; + alt6b_urtb_dtr_sl2: alt6b5 { + alts = <&scfg 0x6B 0x5 0>; + }; + alt6b_urtb_dcd_sl2: alt6b6 { + alts = <&scfg 0x6B 0x6 0>; + }; + alt6b_urtb_ri_sl2: alt6b7 { + alts = <&scfg 0x6B 0x7 0>; + }; + + /* SCFG DEVALT 6C */ + alt6c_urti4_sl: alt6c0 { + alts = <&scfg 0x6C 0x0 0>; + }; + alt6c_urto5_sl: alt6c1 { + alts = <&scfg 0x6C 0x1 0>; + }; + + /* SCFG DEVALT 6D */ + alt6d_smb7a_sl: alt6d0 { + alts = <&scfg 0x6D 0x0 0>; + }; + alt6d_smb8a_sl: alt6d1 { + alts = <&scfg 0x6D 0x1 0>; + }; + alt6d_smb9a_sl: alt6d2 { + alts = <&scfg 0x6D 0x2 0>; + }; + alt6d_smb10a_sl: alt6d3 { + alts = <&scfg 0x6D 0x3 0>; + }; + alt6d_smb11a_sl: alt6d4 { + alts = <&scfg 0x6D 0x4 0>; + }; + alt6d_smb12a_sl: alt6d5 { + alts = <&scfg 0x6D 0x5 0>; + }; + alt6d_smb4b_sl: alt6d6 { + alts = <&scfg 0x6D 0x6 0>; + }; + alt6d_smb6b_sl: alt6d7 { + alts = <&scfg 0x6D 0x7 0>; + }; + + /* SCFG DEVALT CX */ + altcx_gpio_out_pullen: altcx7 { + alts = <&scfg 0x24 0x7 0>; + }; + + }; +}; diff --git a/dts/arm/nuvoton/npcm/npcm.dtsi b/dts/arm/nuvoton/npcm/npcm.dtsi index 44bd794fd23ce4..7e47f87ff3e334 100644 --- a/dts/arm/nuvoton/npcm/npcm.dtsi +++ b/dts/arm/nuvoton/npcm/npcm.dtsi @@ -4,7 +4,37 @@ * SPDX-License-Identifier: Apache-2.0 */ +#include + +/* Macros for device tree declarations of npcm soc family */ +#include +#include +#include +#include +#include + / { + cpus { + #address-cells = <1>; + #size-cells = <0>; + + cpu0: cpu@0 { + device_type = "cpu"; + compatible = "arm,cortex-m4"; + reg = <0>; + }; + }; + + def-io-conf-list { + compatible = "nuvoton,npcm-pinctrl-def"; + pinmux = <>; + }; + + pinctrl: pinctrl { + compatible = "nuvoton,npcm-pinctrl"; + status = "okay"; + }; + soc { pcc: clock-controller@4000d000 { compatible = "nuvoton,npcm-pcc"; @@ -50,3 +80,7 @@ compatible = "nuvoton,npcm-booter-variant"; }; }; + +&nvic { + arm,num-irq-priority-bits = <3>; +}; diff --git a/dts/arm/nuvoton/npcm/npcm4.dtsi b/dts/arm/nuvoton/npcm/npcm4.dtsi index 258aae84be7ade..66cddb070bc59c 100644 --- a/dts/arm/nuvoton/npcm/npcm4.dtsi +++ b/dts/arm/nuvoton/npcm/npcm4.dtsi @@ -4,25 +4,28 @@ * SPDX-License-Identifier: Apache-2.0 */ -#include - -#include -#include -#include +/* npcm4 series pinmux mapping table */ +#include "npcm4/npcm4-alts-map.dtsi" /* Device tree declarations of npcm soc family */ #include "npcm.dtsi" / { - cpus { - #address-cells = <1>; - #size-cells = <0>; - - cpu0: cpu@0 { - device_type = "cpu"; - compatible = "arm,cortex-m4"; - reg = <0>; - }; + def-io-conf-list { + /* Change default functional pads to GPIOs */ + pinmux = <&alt5c_psin_sel + &alt5c_psout_sel + &alt5c_pson_sel + &alt5d_rstout0_sel + &alt5d_rstout1_sel + &alt5d_rstout2_sel + &alt5d_sktocc_sel + &alt5d_caseopen_sel + &alt5e_dpwrok_sel + &alt5e_rsmrst_sel + &alt5e_deep_s5_sel + &alt5e_pwrok0_sel + &alt5e_3vsbsw_sel>; }; soc { @@ -42,7 +45,3 @@ */ }; }; - -&nvic { - arm,num-irq-priority-bits = <3>; -}; diff --git a/dts/arm/nuvoton/npcm/npcm4/npcm4-alts-map.dtsi b/dts/arm/nuvoton/npcm/npcm4/npcm4-alts-map.dtsi new file mode 100644 index 00000000000000..b43679b2b71308 --- /dev/null +++ b/dts/arm/nuvoton/npcm/npcm4/npcm4-alts-map.dtsi @@ -0,0 +1,8 @@ +/* + * Copyright (c) 2024 Nuvoton Technology Corporation. + * + * SPDX-License-Identifier: Apache-2.0 + */ + +/* Common pin-mux configurations in npcm family */ +#include diff --git a/dts/arm/nuvoton/npcm/npcm4/npcm4-pinctrl.dtsi b/dts/arm/nuvoton/npcm/npcm4/npcm4-pinctrl.dtsi new file mode 100644 index 00000000000000..06a544ebe057e2 --- /dev/null +++ b/dts/arm/nuvoton/npcm/npcm4/npcm4-pinctrl.dtsi @@ -0,0 +1,187 @@ +/* + * Copyright (c) 2024 Nuvoton Technology Corporation. + * + * SPDX-License-Identifier: Apache-2.0 + */ + +&pinctrl { + + /* Prebuild nodes for peripheral device's pin-muxing and pad properties */ + /* Flash Interface Unit (FIU) */ + /omit-if-no-ref/ fiu0_shd_cs_io0_io1_clk_gp44_45_46_47: periph-fiu0-shd { + dev-ctl = <0x0 6 1 0x00>; + pinmux = <&altc_shd_spi>; + }; + + /omit-if-no-ref/ fiu0_shd_quad_io2_io3_clk_gp55_56: periph-fiu0-shd-quad { + pinmux = <&altc_shd_spi_quad>; + }; + + /* PSPI Intefaces */ + /omit-if-no-ref/ pspi1_clk_io0_io1_io2_io3_cs_gp66_67_70_73_76_77: periph-pspi1 { + pinmux = <&altc_spip1_sl>; + }; + + /* I2C peripheral interfaces */ + /omit-if-no-ref/ i2c1a_scl_sda_gp60_61: periph-i2c1a { + pinmux = <&alta_smb1a_sl>; + }; + + /omit-if-no-ref/ i2c1b_scl_sda_gp26_25: periph-i2c1b { + pinmux = <&alta_smb1b_sl>; + }; + + /omit-if-no-ref/ i2c2a_scl_sda_gp11_13: periph-i2c2a { + pinmux = <&alte_smb2a_sl>; + }; + + /omit-if-no-ref/ i2c3a_scl_sda_gpa7_a2: periph-i2c3a { + pinmux = <&alta_smb3a_sl>; + }; + + /omit-if-no-ref/ i2c4a_scl_sda_gp36_37: periph-i2c4a { + pinmux = <&alta_smb4a_sl>; + }; + + /omit-if-no-ref/ i2c4b_scl_sda_gpf0_f1: periph-i2c4b { + pinmux = <&alt6d_smb4b_sl>; + }; + + /omit-if-no-ref/ i2c5a_scl_sda_gp34_35: periph-i2c5a { + pinmux = <&alta_smb5a_sl>; + }; + + /omit-if-no-ref/ i2c6a_scl_gp96: periph-i2c6a-scl { + pinmux = <&alt7_no_gp96>; + }; + + /omit-if-no-ref/ i2c6a_sda_gp97: periph-i2c6a-sda { + pinmux = <&alt7_no_gp97>; + }; + + /omit-if-no-ref/ i2c6b_scl_sda_gp16_17: periph-i2c6b { + pinmux = <&alt6d_smb6b_sl>; + }; + + /omit-if-no-ref/ i2c7a_scl_sda_gpc2_c3: periph-i2c7a { + pinmux = <&alt6d_smb7a_sl>; + }; + + /omit-if-no-ref/ i2c8a_scl_sda_gpc6_c7: periph-i2c8a { + pinmux = <&alt6d_smb8a_sl>; + }; + + /omit-if-no-ref/ i2c9a_scl_sda_gp32_33: periph-i2c9a { + pinmux = <&alt6d_smb9a_sl>; + }; + + /omit-if-no-ref/ i2c10a_scl_sda_gpd2_d3: periph-i2c10a { + pinmux = <&alt6d_smb10a_sl>; + }; + + /omit-if-no-ref/ i2c11a_scl_sda_gpd4_d5: periph-i2c11a { + pinmux = <&alt6d_smb11a_sl>; + }; + + /omit-if-no-ref/ i2c12a_scl_sda_gpd6_d7: periph-i2c12a { + pinmux = <&alt6d_smb12a_sl>; + }; + + /* I3C peripheral interfaces */ + /omit-if-no-ref/ i3c1_scl_sda_gp21_22: periph-i3c1 { + pinmux = <&alt10_i3c1_sl>; + }; + + /omit-if-no-ref/ i3c2_scl_sda_gp23_24: periph-i3c2 { + pinmux = <&alt10_i3c2_sl>; + }; + + /omit-if-no-ref/ i3c3_scl_sda_gp26_25: periph-i3c3 { + pinmux = <&alt10_i3c3_sl>; + }; + + /omit-if-no-ref/ i3c4_scl_sda_gpd0_d1: periph-i3c4 { + pinmux = <&alt10_i3c4_sl>; + }; + + /omit-if-no-ref/ i3c5_scl_sda_gp82_83: periph-i3c5 { + pinmux = <&alta_i3c5_sl>; + }; + + /omit-if-no-ref/ i3c6_scl_sda_gp96_97: periph-i3c6 { + pinmux = <&alt7_i3c6_sl>; + }; + + /* UART peripheral interfaces */ + /omit-if-no-ref/ cr_uart1_sin_gp14: periph-cr-uart1-in { + pinmux = <&altc_urti1_sl>; + }; + + /omit-if-no-ref/ cr_uart1_sout_gp15: periph-cr-uart1-out { + pinmux = <&alta_urto2_sl>; + }; + + /omit-if-no-ref/ cr_uart2_sin_gp30: periph-cr-uart2-in { + pinmux = <&alt31_urti2_sl>; + }; + + /omit-if-no-ref/ cr_uart2_sout_gp31: periph-cr-uart2-out { + pinmux = <&alt31_urto3_sl>; + }; + + /* ADC peripheral interfaces */ + /omit-if-no-ref/ adc_vin1_gp93: periph-adc-vin1 { + pinmux = <&alt1_vin1_sl>; + }; + + /omit-if-no-ref/ adc_vin2_gp94: periph-adc-vin2 { + pinmux = <&alt1_vin2_sl>; + }; + + /omit-if-no-ref/ adc_vin3_gp95: periph-adc-vin3 { + pinmux = <&alt1_vin3_sl>; + }; + + /omit-if-no-ref/ adc_vin5_gp87: periph-adc-vin5 { + pinmux = <&alt1_vin5_sl>; + }; + + /omit-if-no-ref/ adc_vin7_gp86: periph-adc-vin7 { + pinmux = <&alt1_vin7_sl>; + }; + + /omit-if-no-ref/ adc_vin14_gp92: periph-adc-vin14 { + pinmux = <&alt2_vin14_sl>; + }; + + /omit-if-no-ref/ adc_vin15_gp91: periph-adc-vin15 { + pinmux = <&alt2_vin15_sl>; + }; + + /omit-if-no-ref/ adc_vin16_gp91: periph-adc-vin16 { + pinmux = <&alt2_vin16_sl>; + }; + + /* SGPIO peripheral interfaces */ + /omit-if-no-ref/ iox1_ldsh_dout_din_sclk_gp74_75_f2_f3: periph-siox1 { + pinmux = <&alt6a_siox1_sl>; + }; + + /omit-if-no-ref/ iox2_ldsh_dout_din_sclk_gpa0_a1_a3_a4: periph-siox2 { + pinmux = <&alt6a_siox2_sl>; + }; + + /* PECI peripheral interfaces */ + /omit-if-no-ref/ peci0_gp97: periph-peci0 { + pinmux = <&alt5_peci_en>; + }; + + /* USB peripheral interfaces */ + /omit-if-no-ref/ usbdphy_en: periph-usbd-phy-en { + pinmux = <&alt2e_usbd_phy_en>; + }; + + /omit-if-no-ref/ usbdphy_clk_external: periph-usbd-phy-clk-sel { + pinmux = <&alt2e_usbd_phy_clk_sel>; + }; +}; diff --git a/dts/bindings/pinctrl/nuvoton,npcm-pinctrl-conf.yaml b/dts/bindings/pinctrl/nuvoton,npcm-pinctrl-conf.yaml new file mode 100644 index 00000000000000..8565b5adfcafa4 --- /dev/null +++ b/dts/bindings/pinctrl/nuvoton,npcm-pinctrl-conf.yaml @@ -0,0 +1,16 @@ +# Copyright (c) 2024 Nuvoton Technology Corporation. +# SPDX-License-Identifier: Apache-2.0 + +description: | + Nuvoton NPCM Pin-Mux Configuration + Configuration map from Nuvoton NPCM GPIO to pinmux controller + (SCFG) driver instances. + +compatible: "nuvoton,npcm-pinctrl-conf" +child-binding: + description: NPCM Pinmux configuration child node + properties: + alts: + type: phandle-array + required: true + description: A SCFG ALT (Alternative controllers) specifier for pinmuxing of npcm esio diff --git a/dts/bindings/pinctrl/nuvoton,npcm-pinctrl-def.yaml b/dts/bindings/pinctrl/nuvoton,npcm-pinctrl-def.yaml new file mode 100644 index 00000000000000..f81c8475d339fa --- /dev/null +++ b/dts/bindings/pinctrl/nuvoton,npcm-pinctrl-def.yaml @@ -0,0 +1,14 @@ +# Copyright (c) 2024 Nuvoton Technology Corporation. +# SPDX-License-Identifier: Apache-2.0 + +description: Nuvoton, NPCM Default Pins Configurations + +compatible: "nuvoton,npcm-pinctrl-def" + +include: [base.yaml] + +properties: + pinmux: + type: phandles + required: true + description: list of configurations of pinmux controllers need to set diff --git a/dts/bindings/pinctrl/nuvoton,npcm-pinctrl.yaml b/dts/bindings/pinctrl/nuvoton,npcm-pinctrl.yaml new file mode 100644 index 00000000000000..d096a4718f04ed --- /dev/null +++ b/dts/bindings/pinctrl/nuvoton,npcm-pinctrl.yaml @@ -0,0 +1,97 @@ +# Copyright (c) 2024 Nuvoton Technology Corporation. +# SPDX-License-Identifier: Apache-2.0 + +description: | + The Nuvoton pin controller is a singleton node responsible for controlling + pin function selection and pin properties. For example, you can use these + nodes to select peripheral pin functions. + + Here is a list of supported standard pin properties: + - bias-pull-down: Enable pull-down resistor. + - bias-pull-up: Enable pull-up resistor. + + Custom pin properties for npcx series are available also: + - pinmux-gpio: Inverse pinmux back to gpio + + An example for NPCM4 family, include the chip level pinctrl DTSI file in the + board level DTS: + + #include + + We want to use the I2C0_0 port of the NPCM400F controller and enable the + internal 3.3V pull-up if its i2c frequency won't exceed 400kHz. + + To change a pin's pinctrl default properties, add a reference to the + pin in the board's DTS file and set the properties as below: + + &i2c0_0_sda_scl_gpb4_b5 { + bias-pull-up; /* Enable internal pull-up for i2c0_0 */ + pinmux-locked; /* Lock pinmuxing */ + }; + + &i2c0_0 { + pinctrl-0 = <&i2c0_0_sda_scl_gpb4_b5>; + pinctrl-names = "default"; + } + +compatible: "nuvoton,npcm-pinctrl" + +include: base.yaml + +child-binding: + description: | + NPCM pin controller pin configuration nodes + + include: + - name: pincfg-node.yaml + property-allowlist: + - bias-pull-down + - bias-pull-up + - drive-open-drain + + properties: + pinmux: + type: phandle + description: Configurations of pinmux selection + dev-ctl: + type: array + description: Configurations of device control such as tri-state, io type and so on. + periph-pupd: + type: array + description: | + A map to PUPD_ENn register/bit that enable pull-up/down of NPCX peripheral devices. + Please don't overwrite this property in the board-level DT driver. + psl-offset: + type: int + description: | + Offset to PSL_CTS register that is used for PSL input's status and detection mode. + Please don't overwrite this property in the board-level DT driver. + psl-polarity: + type: phandle + description: | + A map to DEVALTn that configures detection polarity of PSL input pads. + Please don't overwrite this property in the board-level DT driver. + pinmux-locked: + type: boolean + description: Lock pinmux selection + pinmux-gpio: + type: boolean + description: Inverse pinmux selection to GPIO + psl-in-mode: + type: string + description: | + The assertion detection mode of PSL input selection + - "level": Select the detection mode to level detection + - "edge": Select the detection mode to edge detection + enum: + - "level" + - "edge" + psl-in-pol: + type: string + description: | + The assertion detection polarity of PSL input selection + - "low-falling": Select the detection polarity to low/falling + - "high-rising": Select the detection polarity to high/rising + enum: + - "low-falling" + - "high-rising" diff --git a/dts/bindings/pinctrl/nuvoton,npcm-scfg.yaml b/dts/bindings/pinctrl/nuvoton,npcm-scfg.yaml new file mode 100644 index 00000000000000..30898ed862891c --- /dev/null +++ b/dts/bindings/pinctrl/nuvoton,npcm-scfg.yaml @@ -0,0 +1,32 @@ +# Copyright (c) 2024 Nuvoton Technology Corporation. +# SPDX-License-Identifier: Apache-2.0 + +description: Nuvoton, NPCM System Configuration (Pinmux, 1.8V support and so on) node + +compatible: "nuvoton,npcm-scfg" + +include: [base.yaml] + +properties: + reg: + required: true + + "#alt-cells": + type: int + required: true + description: Number of items to expect in a SCFG ALT (Alternative controllers) specifier + + "#lvol-cells": + type: int + required: true + description: | + Number of items to expect in a SCFG LV_GPIO_CTL (Low level IO controllers) specifier + +alt-cells: + - group + - bit + - inv + +lvol-cells: + - ctrl + - bit diff --git a/include/zephyr/dt-bindings/pinctrl/npcm-pinctrl.h b/include/zephyr/dt-bindings/pinctrl/npcm-pinctrl.h new file mode 100644 index 00000000000000..ce565bdc033f0d --- /dev/null +++ b/include/zephyr/dt-bindings/pinctrl/npcm-pinctrl.h @@ -0,0 +1,16 @@ +/* + * Copyright (c) 2024 Nuvoton Technology Corporation. + * + * SPDX-License-Identifier: Apache-2.0 + */ +#ifndef ZEPHYR_INCLUDE_DT_BINDINGS_PINCTRL_NPCM_PINCTRL_H_ +#define ZEPHYR_INCLUDE_DT_BINDINGS_PINCTRL_NPCM_PINCTRL_H_ + +/** + * @brief NPCM specific PIN configuration flag + * + * Pin configuration is coded with the following fields + * Reserved [ 0 : 31] + */ + +#endif /* ZEPHYR_INCLUDE_DT_BINDINGS_PINCTRL_NPCM_PINCTRL_H_ */ diff --git a/soc/nuvoton/npcm/common/CMakeLists.txt b/soc/nuvoton/npcm/common/CMakeLists.txt index 371a459d829483..10cb1e6f11c6e0 100644 --- a/soc/nuvoton/npcm/common/CMakeLists.txt +++ b/soc/nuvoton/npcm/common/CMakeLists.txt @@ -5,6 +5,10 @@ zephyr_include_directories(.) +zephyr_sources( + scfg.c +) + set(NPCM_BIN_NAME ${CONFIG_KERNEL_BIN_NAME}_signed.bin) string(TOUPPER "${SOC_NAME}" soc_name_upper) diff --git a/soc/nuvoton/npcm/common/pinctrl_soc.h b/soc/nuvoton/npcm/common/pinctrl_soc.h new file mode 100644 index 00000000000000..b2dadb807ca3a2 --- /dev/null +++ b/soc/nuvoton/npcm/common/pinctrl_soc.h @@ -0,0 +1,182 @@ +/* + * Copyright (c) 2024 Nuvoton Technology Corporation. + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#ifndef _NUVOTON_PINCTRL_SOC_H_ +#define _NUVOTON_PINCTRL_SOC_H_ + +#include +#include +#include + +/** + * @brief Pinctrl node types in NPCM series + */ +enum npcm_pinctrl_type { + NPCM_PINCTRL_TYPE_PERIPH, + NPCM_PINCTRL_TYPE_DEVICE_CTRL, + NPCM_PINCTRL_TYPE_RESERVED, +}; + +/** + * @brief Suppoerted peripheral device configuration type in NPCM series + */ +enum npcm_periph_type { + NPCM_PINCTRL_TYPE_PERIPH_PINMUX, + NPCM_PINCTRL_TYPE_PERIPH_PUPD, +}; + +/** + * @brief Suppoerted IO bias type in NPCM series + */ +enum npcm_io_bias_type { + NPCM_BIAS_TYPE_NONE, + NPCM_BIAS_TYPE_PULL_DOWN, + NPCM_BIAS_TYPE_PULL_UP, +}; + +/** + * @brief NPCM peripheral device configuration structure + * + * Used to indicate the peripheral device's corresponding register/bit for + * pin-muxing, pull-up/down and so on. + */ +struct npcm_periph { + /** Related register group for peripheral device. */ + uint16_t group: 8; + /** Related register bit for peripheral device. */ + uint16_t bit: 3; + /** The polarity for peripheral device functionality. */ + bool inverted: 1; + /** The type of peripheral device configuration. */ + enum npcm_periph_type type: 2; + /** Reserved field. */ + uint16_t reserved: 2; +} __packed; + +/** + * @brief NPCM device control structure + * + * Used to indicate the device's corresponding register/field for its io + * characteristics such as tri-state, power supply type selection, and so on. + */ +struct npcm_dev_ctl { + /** Related register offset for device configuration. */ + uint16_t offest: 5; + /** Related register field offset for device control. */ + uint16_t field_offset: 3; + /** Related register field size for device control. */ + uint16_t field_size: 3; + /** field value */ + uint16_t field_value: 5; +} __packed; + +/** + * @brief Type for NPCM pin configuration. Please make sure the size of this + * structure is 4 bytes in case the impact of ROM usage. + */ +struct npcm_pinctrl { + union { + struct npcm_periph periph; + struct npcm_dev_ctl dev_ctl; + uint16_t cfg_word; + } cfg; + struct { + /** Indicates the current pinctrl type. */ + enum npcm_pinctrl_type type :2; + /** Properties used for pinmuxing. */ + bool pinmux_gpio :1; + /** Properties used for io-pad. */ + enum npcm_io_bias_type io_bias_type :2; + uint16_t reserved :11; + } flags; +} __packed; + +typedef struct npcm_pinctrl pinctrl_soc_pin_t; + +/** Helper macros for NPCM pinctrl configurations. */ +#define Z_PINCTRL_NPCM_BIAS_TYPE(node_id) \ + COND_CODE_1(DT_PROP(node_id, bias_pull_up), (NPCM_BIAS_TYPE_PULL_UP), \ + (COND_CODE_1(DT_PROP(node_id, bias_pull_down), \ + (NPCM_BIAS_TYPE_PULL_DOWN), (NPCM_BIAS_TYPE_NONE)))) + +#define Z_PINCTRL_NPCM_HAS_PUPD_PROP(node_id) \ + UTIL_OR(DT_PROP(node_id, bias_pull_down), \ + DT_PROP(node_id, bias_pull_up)) + +/** + * @brief Utility macro to initialize a periphral pinmux configuration. + * + * @param node_id Node identifier. + * @param prop Property name for pinmux configuration. (i.e. 'pinmux') + */ +#define Z_PINCTRL_NPCM_PERIPH_PINMUX_INIT(node_id, prop) \ + { \ + .flags.type = NPCM_PINCTRL_TYPE_PERIPH, \ + .flags.pinmux_gpio = DT_PROP(node_id, pinmux_gpio), \ + .cfg.periph.type = NPCM_PINCTRL_TYPE_PERIPH_PINMUX, \ + .cfg.periph.group = DT_PHA(DT_PROP(node_id, prop), alts, group), \ + .cfg.periph.bit = DT_PHA(DT_PROP(node_id, prop), alts, bit), \ + .cfg.periph.inverted = DT_PHA(DT_PROP(node_id, prop), alts, inv), \ + }, + +/** + * @brief Utility macro to initialize a periphral pinmux configuration. + * + * @param node_id Node identifier. + * @param prop Property name for pinmux configuration. (i.e. 'pinmux') + */ +#define Z_PINCTRL_NPCM_DEVICE_CONTROL_INIT(node_id, prop) \ + { \ + .flags.type = NPCM_PINCTRL_TYPE_DEVICE_CTRL, \ + .cfg.dev_ctl.offest = DT_PROP_BY_IDX(node_id, prop, 0), \ + .cfg.dev_ctl.field_offset = DT_PROP_BY_IDX(node_id, prop, 1), \ + .cfg.dev_ctl.field_size = DT_PROP_BY_IDX(node_id, prop, 2), \ + .cfg.dev_ctl.field_value = DT_PROP_BY_IDX(node_id, prop, 3), \ + }, + +/** + * @brief Utility macro to initialize a periphral pull-up/down configuration. + * + * @param node_id Node identifier. + * @param prop Property name for pull-up/down configuration. (i.e. 'periph-pupd') + */ +#define Z_PINCTRL_NPCM_PERIPH_PUPD_INIT(node_id, prop) \ + { \ + .flags.type = NPCM_PINCTRL_TYPE_PERIPH, \ + .flags.io_bias_type = Z_PINCTRL_NPCM_BIAS_TYPE(node_id), \ + .cfg.periph.type = NPCM_PINCTRL_TYPE_PERIPH_PUPD, \ + .cfg.periph.group = DT_PROP_BY_IDX(node_id, prop, 0), \ + .cfg.periph.bit = DT_PROP_BY_IDX(node_id, prop, 1), \ + }, + +/** + * @brief Utility macro to initialize all peripheral confiurations for each pin. + * + * @param node_id Node identifier. + * @param prop Pinctrl state property name. (i.e. 'pinctrl-0/1/2') + * @param idx Property entry index. + */ +#define Z_PINCTRL_STATE_PIN_INIT(node_id, prop, idx) \ + COND_CODE_1(Z_PINCTRL_NPCM_HAS_PUPD_PROP(DT_PROP_BY_IDX(node_id, prop, idx)), \ + (Z_PINCTRL_NPCM_PERIPH_PUPD_INIT( \ + DT_PROP_BY_IDX(node_id, prop, idx), periph_pupd)), ()) \ + COND_CODE_1(DT_NODE_HAS_PROP(DT_PROP_BY_IDX(node_id, prop, idx), dev_ctl), \ + (Z_PINCTRL_NPCM_DEVICE_CONTROL_INIT( \ + DT_PROP_BY_IDX(node_id, prop, idx), dev_ctl)), ()) \ + COND_CODE_1(DT_NODE_HAS_PROP(DT_PROP_BY_IDX(node_id, prop, idx), pinmux), \ + (Z_PINCTRL_NPCM_PERIPH_PINMUX_INIT( \ + DT_PROP_BY_IDX(node_id, prop, idx), pinmux)), ()) + +/** + * @brief Utility macro to initialize state pins contained in a given property. + * + * @param node_id Node identifier. + * @param prop Property name describing state pins. + */ +#define Z_PINCTRL_STATE_PINS_INIT(node_id, prop) \ + {DT_FOREACH_PROP_ELEM(node_id, prop, Z_PINCTRL_STATE_PIN_INIT)} + +#endif /* _NUVOTON_PINCTRL_SOC_H_ */ diff --git a/soc/nuvoton/npcm/common/scfg.c b/soc/nuvoton/npcm/common/scfg.c new file mode 100644 index 00000000000000..cfac6f2d392e90 --- /dev/null +++ b/soc/nuvoton/npcm/common/scfg.c @@ -0,0 +1,84 @@ +/* + * Copyright (c) 2024 Nuvoton Technology Corporation. + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#include +#include +#include +#include + +#include +LOG_MODULE_REGISTER(pimux_npcm, LOG_LEVEL_ERR); + +/* Driver config */ +struct npcm_scfg_config { + /* scfg device base address */ + uintptr_t base_scfg; + uintptr_t base_glue; +}; + +/* + * Get io list which default functionality are not IOs. Then switch them to + * GPIO in pin-mux init function. + * + * def-io-conf-list { + * pinmux = <&alt0_gpio_no_spip + * &alt0_gpio_no_fpip + * ...>; + * }; + */ +#define NPCM_NO_GPIO_ALT_ITEM(node_id, prop, idx) { \ + .group = DT_PHA(DT_PROP_BY_IDX(node_id, prop, idx), alts, group), \ + .bit = DT_PHA(DT_PROP_BY_IDX(node_id, prop, idx), alts, bit), \ + .inverted = DT_PHA(DT_PROP_BY_IDX(node_id, prop, idx), alts, inv), \ + }, + +static const struct npcm_alt def_alts[] = { + DT_FOREACH_PROP_ELEM(DT_INST(0, nuvoton_npcm_pinctrl_def), pinmux, + NPCM_NO_GPIO_ALT_ITEM) +}; + +static const struct npcm_scfg_config npcm_scfg_cfg = { + .base_scfg = DT_REG_ADDR_BY_NAME(DT_NODELABEL(scfg), scfg), + .base_glue = DT_REG_ADDR_BY_NAME(DT_NODELABEL(scfg), glue), +}; + +/* Driver convenience defines */ +#define HAL_SFCG_INST() (struct scfg_reg *)(npcm_scfg_cfg.base_scfg) + +#define HAL_GLUE_INST() (struct glue_reg *)(npcm_scfg_cfg.base_glue) + +/* Pin-control local functions */ +static void npcm_pinctrl_alt_sel(const struct npcm_alt *alt, int alt_func) +{ + const uint32_t scfg_base = npcm_scfg_cfg.base_scfg; + uint8_t alt_mask = BIT(alt->bit); + + /* + * alt_fun == 0 means select GPIO, otherwise Alternate Func. + * inverted == 0: + * Set devalt bit to select Alternate Func. + * inverted == 1: + * Clear devalt bit to select Alternate Func. + */ + if (!!alt_func != !!alt->inverted) { + NPCM_DEVALT(scfg_base, alt->group) |= alt_mask; + } else { + NPCM_DEVALT(scfg_base, alt->group) &= ~alt_mask; + } +} + +/* Pin-control driver registration */ +static int npcm_scfg_init(void) +{ + /* Change all pads whose default functionality isn't IO to GPIO */ + for (int i = 0; i < ARRAY_SIZE(def_alts); i++) { + npcm_pinctrl_alt_sel(&def_alts[i], 0); + } + + return 0; +} + +SYS_INIT(npcm_scfg_init, PRE_KERNEL_1, CONFIG_KERNEL_INIT_PRIORITY_DEFAULT); diff --git a/soc/nuvoton/npcm/common/soc_dt.h b/soc/nuvoton/npcm/common/soc_dt.h new file mode 100644 index 00000000000000..c426e4beefa64b --- /dev/null +++ b/soc/nuvoton/npcm/common/soc_dt.h @@ -0,0 +1,418 @@ +/* + * Copyright (c) 2024 Nuvoton Technology Corporation. + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#ifndef _NUVOTON_NPCM_SOC_DT_H_ +#define _NUVOTON_NPCM_SOC_DT_H_ + +#include +#include +#include + +/** + * @brief Like DT_PROP(), but expand parameters with + * DT_ENUM_UPPER_TOKEN not DT_PROP + * + * If the prop exists, this expands to DT_ENUM_UPPER_TOKEN(node_id, prop). + * The default_value parameter is not expanded in this case. + * + * Otherwise, this expands to default_value. + * + * @param node_id node identifier + * @param prop lowercase-and-underscores property name + * @param default_value a fallback value to expand to + * @return the property's enum upper token value or default_value + */ +#define NPCM_DT_PROP_ENUM_OR(node_id, prop, default_value) \ + COND_CODE_1(DT_NODE_HAS_PROP(node_id, prop), \ + (DT_STRING_UPPER_TOKEN(node_id, prop)), (default_value)) + +/** + * @brief Like DT_INST_PROP_OR(), but expand parameters with + * NPCM_DT_PROP_ENUM_OR not DT_PROP_OR + * @param inst instance number + * @param prop lowercase-and-underscores property name + * @param default_value a fallback value to expand to + * @return the property's enum upper token value or default_value + */ +#define NPCM_DT_INST_PROP_ENUM_OR(inst, prop, default_value) \ + NPCM_DT_PROP_ENUM_OR(DT_DRV_INST(inst), prop, default_value) + +/** + * @brief Construct a npcm_clk_cfg item from first item in 'clocks' prop which + * type is 'phandle-array' to handle "clock-cells" in current driver. + * + * Example devicetree fragment: + * / { + * uart1: serial@400c4000 { + * clocks = <&pcc NPCM_CLOCK_BUS_APB2 NPCM_PWDWN_CTL1 4>; + * ... + * }; + * }; + * + * Example usage: + * const struct npcm_clk_cfg clk_cfg = NPCM_DT_CLK_CFG_ITEM(inst); + * + * @param inst instance number for compatible defined in DT_DRV_COMPAT. + * @return npcm_clk_cfg item. + */ +#define NPCM_DT_CLK_CFG_ITEM(inst) \ + { \ + .bus = NPCM_DT_INST_PROP_ENUM_OR(inst, clock_bus, \ + DT_PHA(DT_DRV_INST(inst), clocks, bus)), \ + .ctrl = DT_PHA(DT_DRV_INST(inst), clocks, ctl), \ + .bit = DT_PHA(DT_DRV_INST(inst), clocks, bit), \ + } + +/** + * @brief Construct a npcm_clk_cfg structure from 'clocks' property at index 'i' + * + * @param inst instance number for compatible defined in DT_DRV_COMPAT. + * @param i index of clocks prop which type is 'phandle-array' + * @return npcm_clk_cfg item from 'clocks' property at index 'i' + */ +#define NPCM_DT_CLK_CFG_ITEM_BY_IDX(inst, i) \ + { \ + .bus = DT_CLOCKS_CELL_BY_IDX(DT_DRV_INST(inst), i, bus), \ + .ctrl = DT_CLOCKS_CELL_BY_IDX(DT_DRV_INST(inst), i, ctl), \ + .bit = DT_CLOCKS_CELL_BY_IDX(DT_DRV_INST(inst), i, bit), \ + } + +/** + * @brief Construct a npcm_clk_cfg structure from 'clocks' with the same clock 'name'. + * + * @param inst instance number for compatible defined in DT_DRV_COMPAT. + * @param name name of the clock + * @return npcm_clk_cfg item from 'clocks' property with the same clock 'name' + */ +#define NPCM_DT_CLK_CFG_ITEM_BY_NAME(inst, name) \ + { \ + .bus = DT_CLOCKS_CELL_BY_NAME(DT_DRV_INST(inst), name, bus), \ + .ctrl = DT_CLOCKS_CELL_BY_NAME(DT_DRV_INST(inst), name, ctl), \ + .bit = DT_CLOCKS_CELL_BY_NAME(DT_DRV_INST(inst), name, bit), \ + } + +/** + * @brief Length of 'clocks' property which type is 'phandle-array' + * + * @param inst instance number for compatible defined in DT_DRV_COMPAT. + * @return length of 'clocks' property which type is 'phandle-array' + */ +#define NPCM_DT_CLK_CFG_ITEMS_LEN(inst) DT_INST_PROP_LEN(inst, clocks) + +/** + * @brief Macro function to construct npcm_clk_cfg item in UTIL_LISTIFY + * extension. + * + * @param child child index in UTIL_LISTIFY extension. + * @param inst instance number for compatible defined in DT_DRV_COMPAT. + * @return macro function to construct a npcm_clk_cfg structure. + */ +#define NPCM_DT_CLK_CFG_ITEMS_FUNC(child, inst) \ + NPCM_DT_CLK_CFG_ITEM_BY_IDX(inst, child) + +/** + * @brief Macro function to construct a list of npcm_clk_cfg items by + * UTIL_LISTIFY func + * + * Example devicetree fragment: + * / { + * host_sub: lpc@400c1000 { + * clocks = <&pcc NPCM_CLOCK_BUS_APB3 NPCM_PWDWN_CTL5 3>, + * <&pcc NPCM_CLOCK_BUS_APB3 NPCM_PWDWN_CTL5 4>, + * <&pcc NPCM_CLOCK_BUS_APB3 NPCM_PWDWN_CTL5 5>, + * <&pcc NPCM_CLOCK_BUS_APB3 NPCM_PWDWN_CTL5 6>, + * <&pcc NPCM_CLOCK_BUS_APB3 NPCM_PWDWN_CTL5 7>; + * ... + * }; + * Example usage: + * const struct npcm_clk_cfg clk_cfg[] = NPCM_DT_CLK_CFG_ITEMS_LIST(0); + * + * @param inst instance number for compatible defined in DT_DRV_COMPAT. + * @return an array of npcm_clk_cfg items. + */ +#define NPCM_DT_CLK_CFG_ITEMS_LIST(inst) { \ + LISTIFY(NPCM_DT_CLK_CFG_ITEMS_LEN(inst), \ + NPCM_DT_CLK_CFG_ITEMS_FUNC, (,), \ + inst) \ + } + +/** + * @brief Get phandle from "name" property which contains wui information. + * + * @param inst instance number for compatible defined in DT_DRV_COMPAT. + * @param name property 'name' which type is 'phandle' and contains wui info. + * @return phandle from 'name' property. + */ +#define NPCM_DT_PHANDLE_FROM_WUI_NAME(inst, name) \ + DT_INST_PHANDLE(inst, name) + +/** + * @brief Construct a npcm_wui structure from 'name' property + * + * @param inst instance number for compatible defined in DT_DRV_COMPAT. + * @param name property 'name'which type is 'phandle' and contains wui info. + * @return npcm_wui item from 'name' property. + */ +#define NPCM_DT_WUI_ITEM_BY_NAME(inst, name) \ + { \ + .table = DT_PROP(DT_PHANDLE(NPCM_DT_PHANDLE_FROM_WUI_NAME(inst, \ + name), miwus), index), \ + .group = DT_PHA(NPCM_DT_PHANDLE_FROM_WUI_NAME(inst, name), miwus, \ + group), \ + .bit = DT_PHA(NPCM_DT_PHANDLE_FROM_WUI_NAME(inst, name), miwus, \ + bit), \ + } + +/** + * @brief Get phandle from 'wui-maps' prop which type is 'phandles' at index 'i' + * + * @param inst instance number for compatible defined in DT_DRV_COMPAT. + * @param i index of 'wui-maps' prop which type is 'phandles' + * @return phandle from 'wui-maps' prop at index 'i' + */ +#define NPCM_DT_PHANDLE_FROM_WUI_MAPS(inst, i) \ + DT_INST_PHANDLE_BY_IDX(inst, wui_maps, i) + +/** + * @brief Construct a npcm_wui structure from wui-maps property at index 'i' + * + * @param inst instance number for compatible defined in DT_DRV_COMPAT. + * @param i index of 'wui-maps' prop which type is 'phandles' + * @return npcm_wui item at index 'i' + */ +#define NPCM_DT_WUI_ITEM_BY_IDX(inst, i) \ + { \ + .table = DT_PROP(DT_PHANDLE(NPCM_DT_PHANDLE_FROM_WUI_MAPS(inst, i), \ + miwus), index), \ + .group = DT_PHA(NPCM_DT_PHANDLE_FROM_WUI_MAPS(inst, i), miwus, \ + group), \ + .bit = DT_PHA(NPCM_DT_PHANDLE_FROM_WUI_MAPS(inst, i), miwus, bit), \ + } + +/** + * @brief Length of npcm_wui structures in 'wui-maps' property + * + * @param inst instance number for compatible defined in DT_DRV_COMPAT. + * @return length of 'wui-maps' prop which type is 'phandles' + */ +#define NPCM_DT_WUI_ITEMS_LEN(inst) DT_INST_PROP_LEN(inst, wui_maps) + +/** + * @brief Macro function to construct a list of npcm_wui items by UTIL_LISTIFY + * + * @param child child index in UTIL_LISTIFY extension. + * @param inst instance number for compatible defined in DT_DRV_COMPAT. + * @return macro function to construct a npcm_wui structure. + */ +#define NPCM_DT_WUI_ITEMS_FUNC(child, inst) NPCM_DT_WUI_ITEM_BY_IDX(inst, child) + +/** + * @brief Macro function to construct a list of npcm_wui items by UTIL_LISTIFY + * func. + * + * Example devicetree fragment: + * / { + * uart1: serial@400c4000 { + * uart-rx = <&wui_cr_sin1>; + * ... + * }; + * + * gpio0: gpio@40081000 { + * wui-maps = <&wui_io00 &wui_io01 &wui_io02 &wui_io03 + * &wui_io04 &wui_io05 &wui_io06 &wui_io07>; + * ... + * }; + * }; + * + * Example usage: + * const struct npcm_wui wui_map = NPCM_DT_PHANDLE_FROM_WUI_NAME(inst, uart_rx); + * const struct npcm_wui wui_maps[] = NPCM_DT_WUI_ITEMS_LIST(inst); + * + * @param inst instance number for compatible defined in DT_DRV_COMPAT. + * @return an array of npcm_wui items. + */ +#define NPCM_DT_WUI_ITEMS_LIST(inst) { \ + LISTIFY(NPCM_DT_WUI_ITEMS_LEN(inst), \ + NPCM_DT_WUI_ITEMS_FUNC, (,), \ + inst) \ + } + +/** + * @brief Get a node from path '/npcm_miwus_map/map_miwu(0/1/2)_groups' + * + * @param i index of npcm miwu devices + * @return node identifier with that path. + */ +#define NPCM_DT_NODE_FROM_MIWU_MAP(i) DT_PATH(npcm_miwus_int_map, \ + map_miwu##i##_groups) +/** + * @brief Get the index prop from parent MIWU device node. + * + * @param child index in UTIL_LISTIFY extension. + * @return 'index' prop value of the node which compatible type is + * "nuvoton,npcm-miwu". + */ +#define NPCM_DT_MIWU_IRQ_TABLE_IDX(child) \ + DT_PROP(DT_PHANDLE(DT_PARENT(child), parent), index) + +/** + * @brief Macro function for DT_FOREACH_CHILD to generate a IRQ_CONNECT + * implementation. + * + * @param child index in UTIL_LISTIFY extension. + * @return implementation to initialize interrupts of MIWU groups and enable + * them. + */ +#define NPCM_DT_MIWU_IRQ_CONNECT_IMPL_CHILD_FUNC(child) \ + NPCM_DT_MIWU_IRQ_CONNECT_IMPL_CHILD_FUNC_OBJ(child); + +#define NPCM_DT_MIWU_IRQ_CONNECT_IMPL_CHILD_FUNC_OBJ(child) \ + do { \ + IRQ_CONNECT(DT_PROP(child, irq), \ + DT_PROP(child, irq_prio), \ + NPCM_MIWU_ISR_FUNC(NPCM_DT_MIWU_IRQ_TABLE_IDX(child)), \ + DT_PROP(child, group_mask), \ + 0); \ + irq_enable(DT_PROP(child, irq)); \ + } while (false) + +/** + * @brief Get a child node from path '/npcm-espi-vws-map/name'. + * + * @param name a path which name is /npcm-espi-vws-map/'name'. + * @return child node identifier with that path. + */ +#define NPCM_DT_NODE_FROM_VWTABLE(name) DT_CHILD(DT_PATH(npcm_espi_vws_map), \ + name) + +/** + * @brief Get phandle from vw-wui property of child node with that path. + * + * @param name path which name is /npcm-espi-vws-map/'name'. + * @return phandle from "vw-wui" prop of child node with that path. + */ +#define NPCM_DT_PHANDLE_VW_WUI(name) DT_PHANDLE(NPCM_DT_NODE_FROM_VWTABLE( \ + name), vw_wui) + +/** + * @brief Construct a npcm_wui structure from vw-wui property of a child node + * with that path. + * + * @param name a path which name is /npcm-espi-vws-map/'name'. + * @return npcm_wui item with that path. + */ +#define NPCM_DT_VW_WUI_ITEM(name) \ + { \ + .table = DT_PROP(DT_PHANDLE(NPCM_DT_PHANDLE_VW_WUI(name), miwus), \ + index),\ + .group = DT_PHA(NPCM_DT_PHANDLE_VW_WUI(name), miwus, group), \ + .bit = DT_PHA(NPCM_DT_PHANDLE_VW_WUI(name), miwus, bit), \ + } + +/** + * @brief Construct a npcm espi device configuration of vw input signal from + * a child node with that path. + * + * @signal vw input signal name. + * @param name a path which name is /npcm-espi-vws-map/'name'. + * @return npcm_vw_in_config item with that path. + */ +#define NPCM_DT_VW_IN_CONF(signal, name) \ + { \ + .sig = signal, \ + .reg_idx = DT_PROP_BY_IDX(NPCM_DT_NODE_FROM_VWTABLE(name), vw_reg, \ + 0), \ + .bitmask = DT_PROP_BY_IDX(NPCM_DT_NODE_FROM_VWTABLE(name), vw_reg, \ + 1), \ + .vw_wui = NPCM_DT_VW_WUI_ITEM(name), \ + } + +/** + * @brief Construct a npcm espi device configuration of vw output signal from + * a child node with that path. + * + * @signal vw output signal name. + * @param name a path which name is /npcm-espi-vws-map/'name'. + * @return npcm_vw_in_config item with that path. + */ +#define NPCM_DT_VW_OUT_CONF(signal, name) \ + { \ + .sig = signal, \ + .reg_idx = DT_PROP_BY_IDX(NPCM_DT_NODE_FROM_VWTABLE(name), vw_reg, \ + 0), \ + .bitmask = DT_PROP_BY_IDX(NPCM_DT_NODE_FROM_VWTABLE(name), vw_reg, \ + 1), \ + } + +/** + * @brief Construct a npcm_lvol structure from 'lvol-maps' property at index 'i'. + * + * @param node_id Node identifier. + * @param prop Low voltage configurations property name. (i.e. 'lvol-maps') + * @param idx Property entry index. + */ +#define NPCM_DT_LVOL_CTRL_NONE \ + DT_PHA(DT_NODELABEL(lvol_none), lvols, ctrl) + +/** + * @brief Length of npcm_lvol structures in 'lvol-maps' property + * + * @param inst instance number for compatible defined in DT_DRV_COMPAT. + * @return length of 'lvol-maps' prop which type is 'phandles' + */ +#define NPCM_DT_LVOL_ITEMS_LEN(inst) DT_INST_PROP_LEN(inst, lvol_maps) + +/** + * @brief Construct a npcm_lvol structure from 'lvol-maps' property at index 'i'. + * + * @param node_id Node identifier. + * @param prop Low voltage configurations property name. (i.e. 'lvol-maps') + * @param idx Property entry index. + */ +#define NPCM_DT_LVOL_ITEMS_INIT(node_id, prop, idx) \ + { \ + .ctrl = DT_PHA(DT_PROP_BY_IDX(node_id, prop, idx), lvols, ctrl), \ + .bit = DT_PHA(DT_PROP_BY_IDX(node_id, prop, idx), lvols, bit), \ + }, + +/** + * @brief Macro function to construct a list of npcm_lvol items from 'lvol-maps' + * property. + * + * @param inst instance number for compatible defined in DT_DRV_COMPAT. + * @return an array of npcm_lvol items. + */ +#define NPCM_DT_LVOL_ITEMS_LIST(inst) { \ + DT_FOREACH_PROP_ELEM(DT_DRV_INST(inst), lvol_maps, \ + NPCM_DT_LVOL_ITEMS_INIT)} + +/** + * @brief Check if the host interface type is automatically configured by + * booter. + * + * @return TRUE - if the host interface is configured by booter, + * FALSE - otherwise. + */ +#define NPCM_BOOTER_IS_HIF_TYPE_SET() \ + DT_PROP(DT_PATH(booter_variant), hif_type_auto) + +/** + * @brief Helper macro to get address of system configuration module which is + * used by serval peripheral device drivers in npcm series. + * + * @return base address of system configuration module. + */ +#define NPCM_SCFG_REG_ADDR DT_REG_ADDR_BY_NAME(DT_NODELABEL(scfg), scfg) + +/** + * @brief Helper macro to get address of system glue module which is + * used by serval peripheral device drivers in npcm series. + * + * @return base address of system glue module. + */ +#define NPCM_GLUE_REG_ADDR DT_REG_ADDR_BY_NAME(DT_NODELABEL(scfg), glue) + +#endif /* _NUVOTON_NPCM_SOC_DT_H_ */ diff --git a/soc/nuvoton/npcm/common/soc_pins.h b/soc/nuvoton/npcm/common/soc_pins.h new file mode 100644 index 00000000000000..13bd062ffe10fb --- /dev/null +++ b/soc/nuvoton/npcm/common/soc_pins.h @@ -0,0 +1,35 @@ +/* + * Copyright (c) 2024 Nuvoton Technology Corporation. + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#ifndef _NUVOTON_NPCM_SOC_PINS_H_ +#define _NUVOTON_NPCM_SOC_PINS_H_ + +#include + +#include "reg/reg_def.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @brief NPCM pin-mux configuration structure + * + * Used to indicate the device's corresponding DEVALT register/bit for + * pin-muxing and its polarity to enable alternative functionality. + */ +struct npcm_alt { + uint8_t group; + uint8_t bit:3; + uint8_t inverted:1; + uint8_t reserved:4; +}; + +#ifdef __cplusplus +} +#endif + +#endif /* _NUVOTON_NPCM_SOC_PINS_H_ */ diff --git a/soc/nuvoton/npcm/npcm4/soc.h b/soc/nuvoton/npcm/npcm4/soc.h index 43e0e5da741b0f..ce557126e35357 100644 --- a/soc/nuvoton/npcm/npcm4/soc.h +++ b/soc/nuvoton/npcm/npcm4/soc.h @@ -17,6 +17,10 @@ #include #include +#include #include +#include + +#define NPCM_PUPD_EN_OFFSET(n) (0x028 + n) #endif /* _NUVOTON_NPCM_SOC_H_ */ From bfbbc7d1952a0ba5b6254ca558cdb395c7193b1c Mon Sep 17 00:00:00 2001 From: cpchiang Date: Thu, 23 May 2024 22:10:01 -0700 Subject: [PATCH 4/6] drivers: gpio: add npcm gpio driver add npcm gpio driver. gpio shell test GPIO50-52 ok Signed-off-by: cpchiang --- .../npcm400f_evb/npcm400f_evb_defconfig | 4 + drivers/gpio/CMakeLists.txt | 1 + drivers/gpio/Kconfig | 1 + drivers/gpio/Kconfig.npcm | 13 + drivers/gpio/gpio_npcm.c | 430 ++++++++++++++ dts/arm/nuvoton/npcm/npcm-miwus-wui-map.dtsi | 555 ++++++++++++++++++ dts/arm/nuvoton/npcm/npcm.dtsi | 149 +++++ dts/arm/nuvoton/npcm/npcm4.dtsi | 82 +++ .../npcm/npcm4/npcm4-miwus-wui-map.dtsi | 16 + dts/bindings/gpio/nuvoton,npcm-gpio.yaml | 36 ++ .../nuvoton,npcm-miwu-wui-map.yaml | 13 + .../nuvoton,npcm-miwu.yaml | 23 + soc/nuvoton/npcm/common/soc_gpio.h | 49 ++ soc/nuvoton/npcm/common/soc_miwu.h | 232 ++++++++ 14 files changed, 1604 insertions(+) create mode 100644 drivers/gpio/Kconfig.npcm create mode 100644 drivers/gpio/gpio_npcm.c create mode 100644 dts/arm/nuvoton/npcm/npcm-miwus-wui-map.dtsi create mode 100644 dts/arm/nuvoton/npcm/npcm4/npcm4-miwus-wui-map.dtsi create mode 100644 dts/bindings/gpio/nuvoton,npcm-gpio.yaml create mode 100644 dts/bindings/interrupt-controller/nuvoton,npcm-miwu-wui-map.yaml create mode 100644 dts/bindings/interrupt-controller/nuvoton,npcm-miwu.yaml create mode 100644 soc/nuvoton/npcm/common/soc_gpio.h create mode 100644 soc/nuvoton/npcm/common/soc_miwu.h diff --git a/boards/nuvoton/npcm400f_evb/npcm400f_evb_defconfig b/boards/nuvoton/npcm400f_evb/npcm400f_evb_defconfig index 051da2924c497a..1f751b41fc082a 100644 --- a/boards/nuvoton/npcm400f_evb/npcm400f_evb_defconfig +++ b/boards/nuvoton/npcm400f_evb/npcm400f_evb_defconfig @@ -25,3 +25,7 @@ CONFIG_SERIAL=n # Console Driver CONFIG_CONSOLE=n CONFIG_UART_CONSOLE=n + +# GPIO Driver +CONFIG_GPIO=y +CONFIG_GPIO_NPCM=y diff --git a/drivers/gpio/CMakeLists.txt b/drivers/gpio/CMakeLists.txt index 787a10d7dd5d41..38d200f750e286 100644 --- a/drivers/gpio/CMakeLists.txt +++ b/drivers/gpio/CMakeLists.txt @@ -52,6 +52,7 @@ zephyr_library_sources_ifdef(CONFIG_GPIO_NCT38XX gpio_nct38xx.c) zephyr_library_sources_ifdef(CONFIG_GPIO_NCT38XX gpio_nct38xx_port.c) zephyr_library_sources_ifdef(CONFIG_GPIO_NCT38XX_ALERT gpio_nct38xx_alert.c) zephyr_library_sources_ifdef(CONFIG_GPIO_NEORV32 gpio_neorv32.c) +zephyr_library_sources_ifdef(CONFIG_GPIO_NPCM gpio_npcm.c) zephyr_library_sources_ifdef(CONFIG_GPIO_NPCX gpio_npcx.c) zephyr_library_sources_ifdef(CONFIG_GPIO_NPM1300 gpio_npm1300.c) zephyr_library_sources_ifdef(CONFIG_GPIO_NPM6001 gpio_npm6001.c) diff --git a/drivers/gpio/Kconfig b/drivers/gpio/Kconfig index 9ce2b7f5859f96..7c967c878cb977 100644 --- a/drivers/gpio/Kconfig +++ b/drivers/gpio/Kconfig @@ -138,6 +138,7 @@ source "drivers/gpio/Kconfig.mcux_rgpio" source "drivers/gpio/Kconfig.mmio32" source "drivers/gpio/Kconfig.nct38xx" source "drivers/gpio/Kconfig.neorv32" +source "drivers/gpio/Kconfig.npcm" source "drivers/gpio/Kconfig.npcx" source "drivers/gpio/Kconfig.npm1300" source "drivers/gpio/Kconfig.npm6001" diff --git a/drivers/gpio/Kconfig.npcm b/drivers/gpio/Kconfig.npcm new file mode 100644 index 00000000000000..6893ee4387a4d4 --- /dev/null +++ b/drivers/gpio/Kconfig.npcm @@ -0,0 +1,13 @@ +# NPCX GPIO driver configuration options + +# Copyright (c) 2024 Nuvoton Technology Corporation. +# SPDX-License-Identifier: Apache-2.0 + +config GPIO_NPCM + bool "Nuvoton NPCM enhance Super I/O (eSIO) gpio driver" + default y + depends on DT_HAS_NUVOTON_NPCM_GPIO_ENABLED + help + This option enables the GPIO driver for NPCM family of + processors. + Say y if you wish to use serial port on NPCM MCU. diff --git a/drivers/gpio/gpio_npcm.c b/drivers/gpio/gpio_npcm.c new file mode 100644 index 00000000000000..e35520ac073bb0 --- /dev/null +++ b/drivers/gpio/gpio_npcm.c @@ -0,0 +1,430 @@ +/* + * Copyright (c) 2024 Nuvoton Technology Corporation. + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#define DT_DRV_COMPAT nuvoton_npcm_gpio + +#include +#include +#include +#include + +#include +#include "soc_gpio.h" +#include "soc_miwu.h" + +#include +LOG_MODULE_REGISTER(gpio_npcm, LOG_LEVEL_ERR); + +/* GPIO module instances */ +#define NPCM_GPIO_DEV(inst) DEVICE_DT_INST_GET(inst), +static const struct device *gpio_devs[] = { + DT_INST_FOREACH_STATUS_OKAY(NPCM_GPIO_DEV) +}; + +/* Driver config */ +struct gpio_npcm_config { + /* gpio_driver_config needs to be first */ + struct gpio_driver_config common; + /* GPIO controller base address */ + uintptr_t base; + /* IO port */ + int port; + /* Mapping table between gpio bits and wui */ + struct npcm_wui wui_maps[]; +}; + +/* Driver data */ +struct gpio_npcm_data { + /* gpio_driver_data needs to be first */ + struct gpio_driver_data common; +}; + +struct npcm_scfg_config { + /* scfg device base address */ + uintptr_t base_scfg; +}; + +static const struct npcm_scfg_config npcm_scfg_cfg = { + .base_scfg = DT_REG_ADDR_BY_NAME(DT_NODELABEL(scfg), scfg), +}; + +/* Driver convenience defines */ +#define HAL_INSTANCE(dev) \ + ((struct gpio_reg *)((const struct gpio_npcm_config *)(dev)->config)->base) + +#define HAL_SFCG_INST() (struct scfg_reg *)(npcm_scfg_cfg.base_scfg) + +/* Platform specific GPIO functions */ +const struct device *npcm_get_gpio_dev(int port) +{ + if (port >= ARRAY_SIZE(gpio_devs)) + return NULL; + + return gpio_devs[port]; +} + +#ifdef CONFIG_NPCM_MIWU +void npcm_gpio_enable_io_pads(const struct device *dev, int pin) +{ + const struct gpio_npcm_config *const config = dev->config; + const struct npcm_wui *io_wui = &config->wui_maps[pin]; + + if (io_wui->table == NPCM_MIWU_TABLE_NONE) { + LOG_ERR("Cannot enable GPIO(%x, %d) pad", config->port, pin); + return; + } + + /* + * If this pin is configurred as a GPIO interrupt source, do not + * implement bypass. Or ec cannot wake up via this event. + */ + if (pin < NPCM_GPIO_PORT_PIN_NUM && !npcm_miwu_irq_get_state(io_wui)) { + npcm_miwu_io_enable(io_wui); + } +} + +void npcm_gpio_disable_io_pads(const struct device *dev, int pin) +{ + const struct gpio_npcm_config *const config = dev->config; + const struct npcm_wui *io_wui = &config->wui_maps[pin]; + + if (io_wui->table == NPCM_MIWU_TABLE_NONE) { + LOG_ERR("Cannot enable GPIO(%x, %d) pad", config->port, pin); + return; + } + + /* + * If this pin is configurred as a GPIO interrupt source, do not + * implement bypass. Or ec cannot wake up via this event. + */ + if (pin < NPCM_GPIO_PORT_PIN_NUM && !npcm_miwu_irq_get_state(io_wui)) { + npcm_miwu_io_disable(io_wui); + } +} +#else +void npcm_gpio_enable_io_pads(const struct device *dev, int pin) +{ +} +void npcm_gpio_disable_io_pads(const struct device *dev, int pin) +{ +} +#endif + +/* GPIO api functions */ +static int gpio_npcm_config(const struct device *dev, + gpio_pin_t pin, gpio_flags_t flags) +{ + struct gpio_reg *const inst = HAL_INSTANCE(dev); + struct scfg_reg *inst_scfg = HAL_SFCG_INST(); + uint32_t mask = BIT(pin); + + /* Don't support simultaneous in/out mode */ + if (((flags & GPIO_INPUT) != 0) && ((flags & GPIO_OUTPUT) != 0)) { + return -ENOTSUP; + } + + /* Don't support "open source" mode */ + if (((flags & GPIO_SINGLE_ENDED) != 0) && + ((flags & GPIO_LINE_OPEN_DRAIN) == 0)) { + return -ENOTSUP; + } + + /* + * Configure pin as input, if requested. Output is configured only + * after setting all other attributes, so as not to create a + * temporary incorrect logic state 0:input 1:output + */ + if ((flags & GPIO_OUTPUT) == 0) + inst->PDIR &= ~mask; + + /* Select open drain 0:push-pull 1:open-drain */ + if ((flags & GPIO_OPEN_DRAIN) != 0) + inst->PTYPE |= mask; + else + inst->PTYPE &= ~mask; + + /* Select opend drain with pull up need enable GPIO_PULL_EN */ + if (((flags & GPIO_OPEN_DRAIN) != 0) && + ((flags & GPIO_PULL_UP) != 0)) { + inst_scfg->DEVALTCX |= BIT(NPCM_DEVALTCX_GPIO_PULL_EN); + } + + /* Select pull-up/down of GPIO 0:pull-up 1:pull-down */ + if ((flags & GPIO_PULL_UP) != 0) { + inst->PPUD &= ~mask; + inst->PPULL |= mask; + } else if ((flags & GPIO_PULL_DOWN) != 0) { + inst->PPUD |= mask; + inst->PPULL |= mask; + } else { + /* disable pull down/up */ + inst->PPULL &= ~mask; + } + + /* Set level 0:low 1:high */ + if ((flags & GPIO_OUTPUT_INIT_HIGH) != 0) + inst->PDOUT |= mask; + else if ((flags & GPIO_OUTPUT_INIT_LOW) != 0) + inst->PDOUT &= ~mask; + + /* Configure pin as output, if requested 0:input 1:output */ + if ((flags & GPIO_OUTPUT) != 0) + inst->PDIR |= mask; + + return 0; +} + +#ifdef CONFIG_GPIO_GET_CONFIG +static int gpio_npcm_pin_get_config(const struct device *port, gpio_pin_t pin, + gpio_flags_t *out_flags) +{ + const struct gpio_npcm_config *const config = port->config; + struct gpio_reg *const inst = HAL_INSTANCE(port); + uint32_t mask = BIT(pin); + gpio_flags_t flags = 0; + + /* 0:input 1:output */ + if (inst->PDIR & mask) { + flags |= GPIO_OUTPUT; + + /* 0:push-pull 1:open-drain */ + if (inst->PTYPE & mask) { + flags |= GPIO_OPEN_DRAIN; + } + + /* 0:low 1:high */ + if (inst->PDOUT & mask) { + flags |= GPIO_OUTPUT_HIGH; + } else { + flags |= GPIO_OUTPUT_LOW; + } + } else { + flags |= GPIO_INPUT; + + /* 0:disabled 1:enabled pull */ + if (inst->PPULL & mask) { + /* 0:pull-up 1:pull-down */ + if (inst->PPUD & mask) { + flags |= GPIO_PULL_DOWN; + } else { + flags |= GPIO_PULL_UP; + } + } + } + + *out_flags = flags; + + return 0; +} +#endif + +static int gpio_npcm_port_get_raw(const struct device *dev, + gpio_port_value_t *value) +{ + struct gpio_reg *const inst = HAL_INSTANCE(dev); + + /* Get raw bits of GPIO input registers */ + *value = inst->PDIN; + + return 0; +} + +static int gpio_npcm_port_set_masked_raw(const struct device *dev, + gpio_port_pins_t mask, + gpio_port_value_t value) +{ + struct gpio_reg *const inst = HAL_INSTANCE(dev); + uint8_t out = inst->PDOUT; + + inst->PDOUT = ((out & ~mask) | (value & mask)); + + return 0; +} + +static int gpio_npcm_port_set_bits_raw(const struct device *dev, + gpio_port_value_t mask) +{ + struct gpio_reg *const inst = HAL_INSTANCE(dev); + + /* Set raw bits of GPIO output registers */ + inst->PDOUT |= mask; + + return 0; +} + +static int gpio_npcm_port_clear_bits_raw(const struct device *dev, + gpio_port_value_t mask) +{ + struct gpio_reg *const inst = HAL_INSTANCE(dev); + + /* Clear raw bits of GPIO output registers */ + inst->PDOUT &= ~mask; + + return 0; +} + +static int gpio_npcm_port_toggle_bits(const struct device *dev, + gpio_port_value_t mask) +{ + struct gpio_reg *const inst = HAL_INSTANCE(dev); + + /* Toggle raw bits of GPIO output registers */ + inst->PDOUT ^= mask; + + return 0; +} + +#ifdef CONFIG_NPCM_MIWU +static int gpio_npcm_pin_interrupt_configure(const struct device *dev, + gpio_pin_t pin, + enum gpio_int_mode mode, + enum gpio_int_trig trig) +{ + const struct gpio_npcm_config *const config = dev->config; + + if (config->wui_maps[pin].table == NPCM_MIWU_TABLE_NONE) { + LOG_ERR("Cannot configure GPIO(%x, %d)", config->port, pin); + return -EINVAL; + } + + LOG_DBG("pin_int_conf (%d, %d) match (%d, %d, %d)!!!", + config->port, pin, config->wui_maps[pin].table, + config->wui_maps[pin].group, + config->wui_maps[pin].bit); + + /* Disable irq of wake-up input io-pads before configuring them */ + npcm_miwu_irq_disable(&config->wui_maps[pin]); + + /* Configure and enable interrupt? */ + if (mode != GPIO_INT_MODE_DISABLED) { + enum miwu_int_mode miwu_mode; + enum miwu_int_trig miwu_trig; + int ret = 0; + + /* Determine interrupt is level or edge mode? */ + if (mode == GPIO_INT_MODE_EDGE) { + miwu_mode = NPCM_MIWU_MODE_EDGE; + } else { + miwu_mode = NPCM_MIWU_MODE_LEVEL; + } + + /* Determine trigger mode is low, high or both? */ + if (trig == GPIO_INT_TRIG_LOW) { + miwu_trig = NPCM_MIWU_TRIG_LOW; + } else if (trig == GPIO_INT_TRIG_HIGH) { + miwu_trig = NPCM_MIWU_TRIG_HIGH; + } else if (trig == GPIO_INT_TRIG_BOTH) { + miwu_trig = NPCM_MIWU_TRIG_BOTH; + } else { + LOG_ERR("Invalid interrupt trigger type %d", trig); + return -EINVAL; + } + + /* Call MIWU routine to setup interrupt configuration */ + ret = npcm_miwu_interrupt_configure(&config->wui_maps[pin], + miwu_mode, miwu_trig); + if (ret != 0) { + LOG_ERR("Configure MIWU interrupt failed"); + return ret; + } + + /* Enable it after configuration is completed */ + npcm_miwu_irq_enable(&config->wui_maps[pin]); + } + + return 0; +} +#else +static int gpio_npcm_pin_interrupt_configure(const struct device *dev, + gpio_pin_t pin, + enum gpio_int_mode mode, + enum gpio_int_trig trig) +{ + return -EINVAL; +} +#endif + + +#ifdef CONFIG_NPCM_MIWU +static int gpio_npcm_manage_callback(const struct device *dev, + struct gpio_callback *callback, bool set) +{ + const struct gpio_npcm_config *const config = dev->config; + struct miwu_io_callback *miwu_cb = (struct miwu_io_callback *)callback; + int pin = find_lsb_set(callback->pin_mask) - 1; + + /* pin_mask should not be zero */ + if (pin < 0) { + return -EINVAL; + } + + /* Has the IO pin valid MIWU input source? */ + if (config->wui_maps[pin].table == NPCM_MIWU_TABLE_NONE) { + LOG_ERR("Cannot manage GPIO(%x, %d) callback!", config->port, + pin); + return -EINVAL; + } + + /* Initialize WUI information in unused bits field */ + npcm_miwu_init_gpio_callback(miwu_cb, &config->wui_maps[pin], + config->port); + + /* Insert or remove a IO callback which being called in MIWU ISRs */ + return npcm_miwu_manage_gpio_callback(miwu_cb, set); +} +#else +static int gpio_npcm_manage_callback(const struct device *dev, + struct gpio_callback *callback, bool set) +{ + return -EINVAL; +} +#endif + +/* GPIO driver registration */ +static const struct gpio_driver_api gpio_npcm_driver = { + .pin_configure = gpio_npcm_config, +#ifdef CONFIG_GPIO_GET_CONFIG + .pin_get_config = gpio_npcm_pin_get_config, +#endif + .port_get_raw = gpio_npcm_port_get_raw, + .port_set_masked_raw = gpio_npcm_port_set_masked_raw, + .port_set_bits_raw = gpio_npcm_port_set_bits_raw, + .port_clear_bits_raw = gpio_npcm_port_clear_bits_raw, + .port_toggle_bits = gpio_npcm_port_toggle_bits, + .pin_interrupt_configure = gpio_npcm_pin_interrupt_configure, + .manage_callback = gpio_npcm_manage_callback, +}; + +int gpio_npcm_init(const struct device *dev) +{ + ARG_UNUSED(dev); + + return 0; +} + +#define NPCM_GPIO_DEVICE_INIT(inst) \ + static const struct gpio_npcm_config gpio_npcm_cfg_##inst = { \ + .common = { \ + .port_pin_mask = \ + GPIO_PORT_PIN_MASK_FROM_NGPIOS(NPCM_GPIO_PORT_PIN_NUM), \ + }, \ + .base = DT_INST_REG_ADDR(inst), \ + .port = inst, \ + .wui_maps = NPCM_DT_WUI_ITEMS_LIST(inst), \ + }; \ + BUILD_ASSERT(NPCM_DT_WUI_ITEMS_LEN(inst) == NPCM_GPIO_PORT_PIN_NUM, \ + "size of prop. wui-maps must equal to pin number!"); \ + static struct gpio_npcm_data gpio_npcm_data_##inst; \ + \ + DEVICE_DT_INST_DEFINE(inst, \ + gpio_npcm_init, \ + NULL, \ + &gpio_npcm_data_##inst, \ + &gpio_npcm_cfg_##inst, \ + PRE_KERNEL_1, \ + CONFIG_GPIO_INIT_PRIORITY, \ + &gpio_npcm_driver); +DT_INST_FOREACH_STATUS_OKAY(NPCM_GPIO_DEVICE_INIT) diff --git a/dts/arm/nuvoton/npcm/npcm-miwus-wui-map.dtsi b/dts/arm/nuvoton/npcm/npcm-miwus-wui-map.dtsi new file mode 100644 index 00000000000000..28ba917a41df0a --- /dev/null +++ b/dts/arm/nuvoton/npcm/npcm-miwus-wui-map.dtsi @@ -0,0 +1,555 @@ +/* + * Copyright (c) 2024 Nuvoton Technology Corporation. + * + * SPDX-License-Identifier: Apache-2.0 + */ + +/ { + /* Mapping between MIWU wui bits and source device */ + npcm_miwus_wui { + compatible = "nuvoton,npcm-miwu-wui-map"; + + /* MIWU table 0 */ + /* MIWU group A */ + wui_io00: wui0-1-0 { + miwus = <&miwu0 0 0>; /* GPIO00 */ + }; + wui_io01: wui0-1-1 { + miwus = <&miwu0 0 1>; /* GPIO01 */ + }; + wui_io02: wui0-1-2 { + miwus = <&miwu0 0 2>; /* GPIO02 */ + }; + wui_io03: wui0-1-3 { + miwus = <&miwu0 0 3>; /* GPIO03 */ + }; + wui_io04: wui0-1-4 { + miwus = <&miwu0 0 4>; /* GPIO04 */ + }; + wui_io05: wui0-1-5 { + miwus = <&miwu0 0 5>; /* GPIO05 */ + }; + wui_io06: wui0-1-6 { + miwus = <&miwu0 0 6>; /* GPIO06 */ + }; + wui_io07: wui0-1-7 { + miwus = <&miwu0 0 7>; /* GPIO07 */ + }; + + /* MIWU group B */ + wui_io10: wui0-2-0 { + miwus = <&miwu0 1 0>; /* GPIO10 */ + }; + wui_io11: wui0-2-1 { + miwus = <&miwu0 1 1>; /* GPIO11 */ + }; + wui_io12: wui0-2-2 { + miwus = <&miwu0 1 2>; /* GPIO12 */ + }; + wui_io13: wui0-2-3 { + miwus = <&miwu0 1 3>; /* GPIO13 */ + }; + wui_io14: wui0-2-4 { + miwus = <&miwu0 1 4>; /* GPIO14 */ + }; + wui_io15: wui0-2-5 { + miwus = <&miwu0 1 5>; /* GPIO15 */ + }; + wui_io16: wui0-2-6 { + miwus = <&miwu0 1 6>; /* GPIO16 */ + }; + wui_io17: wui0-2-7 { + miwus = <&miwu0 1 7>; /* GPIO17 */ + }; + + /* MIWU group C */ + wui_io20: wui0-3-0 { + miwus = <&miwu0 2 0>; /* GPIO20 */ + }; + wui_io21: wui0-3-1 { + miwus = <&miwu0 2 1>; /* GPIO21 */ + }; + wui_io22: wui0-3-2 { + miwus = <&miwu0 2 2>; /* GPIO22 */ + }; + wui_io23: wui0-3-3 { + miwus = <&miwu0 2 3>; /* GPIO23 */ + }; + wui_io24: wui0-3-4 { + miwus = <&miwu0 2 4>; /* GPIO24 */ + }; + wui_io25: wui0-3-5 { + miwus = <&miwu0 2 5>; /* GPIO25 */ + }; + wui_io26: wui0-3-6 { + miwus = <&miwu0 2 6>; /* GPIO26 */ + }; + wui_io27: wui0-3-7 { + miwus = <&miwu0 2 7>; /* GPIO27 */ + }; + + /* MIWU group D */ + wui_io30: wui0-4-0 { + miwus = <&miwu0 3 0>; /* GPIO30 */ + }; + wui_io31: wui0-4-1 { + miwus = <&miwu0 3 1>; /* GPIO31 */ + }; + wui_io32: wui0-4-2 { + miwus = <&miwu0 3 2>; /* GPIO32 */ + }; + wui_io33: wui0-4-3 { + miwus = <&miwu0 3 3>; /* GPIO33 */ + }; + wui_io34: wui0-4-4 { + miwus = <&miwu0 3 4>; /* GPIO34 */ + }; + wui_io35: wui0-4-5 { + miwus = <&miwu0 3 5>; /* GPIO35 */ + }; + wui_io36: wui0-4-6 { + miwus = <&miwu0 3 6>; /* GPIO36 */ + }; + wui_io37: wui0-4-7 { + miwus = <&miwu0 3 7>; /* GPIO37 */ + }; + + /* MIWU group E */ + wui_io40: wui0-5-0 { + miwus = <&miwu0 4 0>; /* GPIO40 */ + }; + wui_io41: wui0-5-1 { + miwus = <&miwu0 4 1>; /* GPIO41 */ + }; + wui_io42: wui0-5-2 { + miwus = <&miwu0 4 2>; /* GPIO42 */ + }; + wui_io43: wui0-5-3 { + miwus = <&miwu0 4 3>; /* GPIO43 */ + }; + wui_io44: wui0-5-4 { + miwus = <&miwu0 4 4>; /* GPIO44 */ + }; + wui_io45: wui0-5-5 { + miwus = <&miwu0 4 5>; /* GPIO45 */ + }; + wui_io46: wui0-5-6 { + miwus = <&miwu0 4 6>; /* GPIO46 */ + }; + wui_io47: wui0-5-7 { + miwus = <&miwu0 4 7>; /* GPIO47 */ + }; + + /* MIWU group F */ + wui_io50: wui0-6-0 { + miwus = <&miwu0 5 0>; /* GPIO50 */ + }; + wui_io51: wui0-6-1 { + miwus = <&miwu0 5 1>; /* GPIO51 */ + }; + wui_io52: wui0-6-2 { + miwus = <&miwu0 5 2>; /* GPIO52 */ + }; + wui_io53: wui0-6-3 { + miwus = <&miwu0 5 3>; /* GPIO53 */ + }; + wui_io54: wui0-6-4 { + miwus = <&miwu0 5 4>; /* GPIO54 */ + }; + wui_io55: wui0-6-5 { + miwus = <&miwu0 5 5>; /* GPIO55 */ + }; + wui_io56: wui0-6-6 { + miwus = <&miwu0 5 6>; /* GPIO56 */ + }; + wui_io57: wui0-6-7 { + miwus = <&miwu0 5 7>; /* GPIO57 */ + }; + + /* MIWU group G */ + wui_io60: wui0-7-0 { + miwus = <&miwu0 6 0>; /* GPIO60 */ + }; + wui_io61: wui0-7-1 { + miwus = <&miwu0 6 1>; /* GPIO61 */ + }; + wui_io62: wui0-7-2 { + miwus = <&miwu0 6 2>; /* GPIO62 */ + }; + wui_io63: wui0-7-3 { + miwus = <&miwu0 6 3>; /* GPIO63 */ + }; + wui_io64: wui0-7-4 { + miwus = <&miwu0 6 4>; /* GPIO64 */ + }; + wui_io65: wui0-7-5 { + miwus = <&miwu0 6 5>; /* GPIO65 */ + }; + wui_io66: wui0-7-6 { + miwus = <&miwu0 6 6>; /* GPIO66 */ + }; + wui_io67: wui0-7-7 { + miwus = <&miwu0 6 7>; /* GPIO67 */ + }; + + /* MIWU group H */ + wui_io70: wui0-8-0 { + miwus = <&miwu0 7 0>; /* GPIO70 */ + }; + wui_io71: wui0-8-1 { + miwus = <&miwu0 7 1>; /* GPIO71 */ + }; + wui_io72: wui0-8-2 { + miwus = <&miwu0 7 2>; /* GPIO72 */ + }; + wui_io73: wui0-8-3 { + miwus = <&miwu0 7 3>; /* GPIO73 */ + }; + wui_io74: wui0-8-4 { + miwus = <&miwu0 7 4>; /* GPIO74 */ + }; + wui_io75: wui0-8-5 { + miwus = <&miwu0 7 5>; /* GPIO75 */ + }; + wui_io76: wui0-8-6 { + miwus = <&miwu0 7 6>; /* GPIO76 */ + }; + wui_io77: wui0-8-7 { + miwus = <&miwu0 7 7>; /* GPIO77 */ + }; + + /* MIWU table 1 */ + /* MIWU group A */ + wui_io80: wui1-1-0 { + miwus = <&miwu1 0 0>; /* GPIO80 */ + }; + wui_io81: wui1-1-1 { + miwus = <&miwu1 0 1>; /* GPIO81 */ + }; + wui_io82: wui1-1-2 { + miwus = <&miwu1 0 2>; /* GPIO82 */ + }; + wui_io83: wui1-1-3 { + miwus = <&miwu1 0 3>; /* GPIO83 */ + }; + wui_io84: wui1-1-4 { + miwus = <&miwu1 0 4>; /* GPIO84 */ + }; + wui_io85: wui1-1-5 { + miwus = <&miwu1 0 5>; /* GPIO85 */ + }; + wui_io86: wui1-1-6 { + miwus = <&miwu1 0 6>; /* GPIO86 */ + }; + wui_io87: wui1-1-7 { + miwus = <&miwu1 0 7>; /* GPIO87 */ + }; + + /* MIWU group B */ + wui_io90: wui1-2-0 { + miwus = <&miwu1 1 0>; /* GPIO90 */ + }; + wui_io91: wui1-2-1 { + miwus = <&miwu1 1 1>; /* GPIO91 */ + }; + wui_io92: wui1-2-2 { + miwus = <&miwu1 1 2>; /* GPIO92 */ + }; + wui_io93: wui1-2-3 { + miwus = <&miwu1 1 3>; /* GPIO93 */ + }; + wui_io94: wui1-2-4 { + miwus = <&miwu1 1 4>; /* GPIO94 */ + }; + wui_io95: wui1-2-5 { + miwus = <&miwu1 1 5>; /* GPIO95 */ + }; + wui_io96: wui1-2-6 { + miwus = <&miwu1 1 6>; /* GPIO96 */ + }; + wui_io97: wui1-2-7 { + miwus = <&miwu1 1 7>; /* GPIO97 */ + }; + + /* MIWU group C */ + wui_ioa0: wui1-3-0 { + miwus = <&miwu1 2 0>; /* GPIOA0 */ + }; + wui_ioa1: wui1-3-1 { + miwus = <&miwu1 2 1>; /* GPIOA1 */ + }; + wui_ioa2: wui1-3-2 { + miwus = <&miwu1 2 2>; /* GPIOA2 */ + }; + wui_ioa3: wui1-3-3 { + miwus = <&miwu1 2 3>; /* GPIOA3 */ + }; + wui_ioa4: wui1-3-4 { + miwus = <&miwu1 2 4>; /* GPIOA4 */ + }; + wui_ioa5: wui1-3-5 { + miwus = <&miwu1 2 5>; /* GPIOA5 */ + }; + wui_ioa6: wui1-3-6 { + miwus = <&miwu1 2 6>; /* GPIOA6 */ + }; + wui_ioa7: wui1-3-7 { + miwus = <&miwu1 2 7>; /* GPIOA7 */ + }; + + /* MIWU group D */ + wui_cdbg: wui1-4-4 { + miwus = <&miwu1 3 4>; /* CDBGPWRUPREQ */ + }; + wui_lpc_ev: wui1-4-5 { + miwus = <&miwu1 3 5>; /* LPC_EV_WKUP */ + }; + wui_host_acc: wui1-4-6 { + miwus = <&miwu1 3 6>; /* HOST_ACC */ + }; + wui_espi_rst: wui1-4-7 { + miwus = <&miwu1 3 7>; /* PLT_RST/ESPI_RST */ + }; + + /* MIWU group E */ + wui_emac: wui1-5-0 { + miwus = <&miwu1 4 0>; /* EMAC */ + }; + wui_mswc: wui1-5-2 { + miwus = <&miwu1 4 2>; /* MSWC */ + }; + wui_t0out: wui1-5-3 { + miwus = <&miwu1 4 3>; /* T0OUT */ + }; + + /* MIWU group F */ + wui_iob0: wui1-6-0 { + miwus = <&miwu1 5 0>; /* GPIOB0 */ + }; + wui_iob1: wui1-6-1 { + miwus = <&miwu1 5 1>; /* GPIOB1 */ + }; + wui_iob2: wui1-6-2 { + miwus = <&miwu1 5 2>; /* GPIOB2 */ + }; + wui_iob3: wui1-6-3 { + miwus = <&miwu1 5 3>; /* GPIOB3 */ + }; + wui_iob4: wui1-6-4 { + miwus = <&miwu1 5 4>; /* GPIOB4 */ + }; + wui_iob5: wui1-6-5 { + miwus = <&miwu1 5 5>; /* GPIOB5 */ + }; + wui_iob6: wui1-6-6 { + miwus = <&miwu1 5 6>; /* GPIOB6 */ + }; + wui_iob7: wui1-6-7 { + miwus = <&miwu1 5 7>; /* GPIOB7 */ + }; + + /* MIWU group G */ + wui_i3c: wui1-7-7 { + miwus = <&miwu1 6 7>; /* I3C1/2 */ + }; + + /* MIWU group H */ + wui_smb1: wui1-8-1 { + miwus = <&miwu1 7 1>; /* SMB1 */ + }; + wui_smb3: wui1-8-3 { + miwus = <&miwu1 7 3>; /* SMB3 */ + }; + wui_smb4: wui1-8-4 { + miwus = <&miwu1 7 4>; /* SMB4 */ + }; + wui_smb5: wui1-8-5 { + miwus = <&miwu1 7 5>; /* SMB5 */ + }; + wui_smb6: wui1-8-6 { + miwus = <&miwu1 7 6>; /* SMB6 */ + }; + wui_rtc: wui1-8-7 { + miwus = <&miwu1 7 7>; /* RTC */ + }; + + /* MIWU table 2 */ + /* MIWU group A */ + /* eSPI VW Events */ + wui_vw_slp_s3: wui2-1-0 { + miwus = <&miwu2 0 0>; /* VW020 SLP_S3_L */ + }; + wui_vw_slp_s4: wui2-1-1 { + miwus = <&miwu2 0 1>; /* VW021 SLP_S4_L */ + }; + wui_vw_slp_s5: wui2-1-2 { + miwus = <&miwu2 0 2>; /* VW022 SLP_S5_L */ + }; + wui_vw_sus_stat: wui2-1-4 { + miwus = <&miwu2 0 4>; /* SUS_STAT_L */ + }; + wui_vw_plt_rst: wui2-1-5 { + miwus = <&miwu2 0 5>; /* PLTRST_L */ + }; + wui_vw_oob_rst_warn: wui2-1-6 { + miwus = <&miwu2 0 6>; /* OOB_RST_WARN */ + }; + + /* MIWU group B */ + wui_vw_host_rst_warn: wui2-2-0 { + miwus = <&miwu2 1 0>; /* HOST_RST_WARN */ + }; + wui_vw_sus_warn: wui2-2-4 { + miwus = <&miwu2 1 4>; /* SUS_WARN_L */ + }; + wui_vw_sus_pwrdn_ack: wui2-2-5 { + miwus = <&miwu2 1 5>; /* SUS_PWRDN_ACK */ + }; + wui_vw_slp_a: wui2-2-7 { + miwus = <&miwu2 1 7>; /* SLP_A_L */ + }; + + /* MIWU group C */ + /* eSPI VW Events */ + wui_vw_slp_lan: wui2-3-0 { + miwus = <&miwu2 2 0>; /* SLP_LAN_L */ + }; + wui_vw_slp_wlan: wui2-3-1 { + miwus = <&miwu2 2 1>; /* SLP_WLAN_L) */ + }; + wui_vw_pch_to_ec_gen_0: wui2-3-4 { + miwus = <&miwu2 2 4>; /* PCH_TO_EC_GENERIC_0 */ + }; + wui_vw_pch_to_ec_gen_1: wui2-3-5 { + miwus = <&miwu2 2 5>; /* PCH_TO_EC_GENERIC_1 */ + }; + wui_vw_pch_to_ec_gen_2: wui2-3-6 { + miwus = <&miwu2 2 6>; /* PCH_TO_EC_GENERIC_2 */ + }; + wui_vw_pch_to_ec_gen_3: wui2-3-7 { + miwus = <&miwu2 2 7>; /* PCH_TO_EC_GENERIC_3 */ + }; + + /* MIWU group D */ + wui_vw_pch_to_ec_gen_4: wui2-4-0 { + miwus = <&miwu2 3 0>; /* PCH_TO_EC_GENERIC_4 */ + }; + wui_vw_pch_to_ec_gen_5: wui2-4-1 { + miwus = <&miwu2 3 1>; /* PCH_TO_EC_GENERIC_5 */ + }; + wui_vw_pch_to_ec_gen_6: wui2-4-2 { + miwus = <&miwu2 3 2>; /* PCH_TO_EC_GENERIC_6 */ + }; + wui_vw_pch_to_ec_gen_7: wui2-4-3 { + miwus = <&miwu2 3 3>; /* PCH_TO_EC_GENERIC_7 */ + }; + wui_vw_host_c10: wui2-4-4 { + miwus = <&miwu2 3 4>; /* HOST_C10 */ + }; + + /* MIWU group E */ + wui_ioc0: wui2-5-0 { + miwus = <&miwu2 4 0>; /* GPIOC0 */ + }; + wui_ioc1: wui2-5-1 { + miwus = <&miwu2 4 1>; /* GPIOC1 */ + }; + wui_ioc2: wui2-5-2 { + miwus = <&miwu2 4 2>; /* GPIOC2 */ + }; + wui_ioc3: wui2-5-3 { + miwus = <&miwu2 4 3>; /* GPIOC3 */ + }; + wui_ioc4: wui2-5-4 { + miwus = <&miwu2 4 4>; /* GPIOC4 */ + }; + wui_ioc5: wui2-5-5 { + miwus = <&miwu2 4 5>; /* GPIOC5 */ + }; + wui_ioc6: wui2-5-6 { + miwus = <&miwu2 4 6>; /* GPIOC6 */ + }; + wui_ioc7: wui2-5-7 { + miwus = <&miwu2 4 7>; /* GPIOC7 */ + }; + + /* MIWU group F */ + wui_iod0: wui2-6-0 { + miwus = <&miwu2 5 0>; /* GPIOD0 */ + }; + wui_iod1: wui2-6-1 { + miwus = <&miwu2 5 1>; /* GPIOD1 */ + }; + wui_iod2: wui2-6-2 { + miwus = <&miwu2 5 2>; /* GPIOD2 */ + }; + wui_iod3: wui2-6-3 { + miwus = <&miwu2 5 3>; /* GPIOD3 */ + }; + wui_iod4: wui2-6-4 { + miwus = <&miwu2 5 4>; /* GPIOD4 */ + }; + wui_iod5: wui2-6-5 { + miwus = <&miwu2 5 5>; /* GPIOD5 */ + }; + wui_iod6: wui2-6-6 { + miwus = <&miwu2 5 6>; /* GPIOD6 */ + }; + wui_iod7: wui2-6-7 { + miwus = <&miwu2 5 7>; /* GPIOD7 */ + }; + + /* MIWU group G */ + wui_ioe0: wui2-7-0 { + miwus = <&miwu2 6 0>; /* GPIOE0 */ + }; + wui_ioe1: wui2-7-1 { + miwus = <&miwu2 6 1>; /* GPIOE1 */ + }; + wui_ioe2: wui2-7-2 { + miwus = <&miwu2 6 2>; /* GPIOE2 */ + }; + wui_ioe3: wui2-7-3 { + miwus = <&miwu2 6 3>; /* GPIOE3 */ + }; + wui_ioe4: wui2-7-4 { + miwus = <&miwu2 6 4>; /* GPIOE4 */ + }; + wui_ioe5: wui2-7-5 { + miwus = <&miwu2 6 5>; /* GPIOE5 */ + }; + wui_ioe6: wui2-7-6 { + miwus = <&miwu2 6 6>; /* GPIOE6 */ + }; + + /* MIWU group H */ + wui_iof0: wui2-8-0 { + miwus = <&miwu2 7 0>; /* GPIOF0 */ + }; + wui_iof1: wui2-8-1 { + miwus = <&miwu2 7 1>; /* GPIOF1 */ + }; + wui_iof2: wui2-8-2 { + miwus = <&miwu2 7 2>; /* GPIOF2 */ + }; + wui_iof3: wui2-8-3 { + miwus = <&miwu2 7 3>; /* GPIOF3 */ + }; + wui_vcc: wui2-8-7 { + miwus = <&miwu2 7 7>; /* VCC */ + }; + + /* Pseudo wui item means no mapping between source and wui */ + wui_none: wui-pseudo { + miwus = <&miwu_none 7 7>; + }; + }; + + /* Pseudo MIWU device to present no mapping relationship */ + miwu_none: miwu-pseudo { + compatible = "nuvoton,npcm-miwu"; + index = <3>; + #miwu-cells = <2>; + status = "disabled"; + }; +}; diff --git a/dts/arm/nuvoton/npcm/npcm.dtsi b/dts/arm/nuvoton/npcm/npcm.dtsi index 7e47f87ff3e334..5d6b81f5ca2336 100644 --- a/dts/arm/nuvoton/npcm/npcm.dtsi +++ b/dts/arm/nuvoton/npcm/npcm.dtsi @@ -69,6 +69,155 @@ reg = <0x4000c00a 0x4>; reg-io-width = <2>; }; + + miwu0: miwu@400bb000 { + compatible = "nuvoton,npcm-miwu"; + reg = <0x400bb000 0x2000>; + index = <0>; + #miwu-cells = <2>; + }; + + miwu1: miwu@400bd000 { + compatible = "nuvoton,npcm-miwu"; + reg = <0x400bd000 0x2000>; + index = <1>; + #miwu-cells = <2>; + }; + + miwu2: miwu@400bf000 { + compatible = "nuvoton,npcm-miwu"; + reg = <0x400bf000 0x2000>; + index = <2>; + #miwu-cells = <2>; + }; + + gpio0: gpio@40081000 { + compatible = "nuvoton,npcm-gpio"; + reg = <0x40081000 0x2000>; + gpio-controller; + index = <0x0>; + #gpio-cells=<2>; + }; + + gpio1: gpio@40083000 { + compatible = "nuvoton,npcm-gpio"; + reg = <0x40083000 0x2000>; + gpio-controller; + index = <0x1>; + #gpio-cells=<2>; + }; + + gpio2: gpio@40085000 { + compatible = "nuvoton,npcm-gpio"; + reg = <0x40085000 0x2000>; + gpio-controller; + index = <0x2>; + #gpio-cells=<2>; + }; + + gpio3: gpio@40087000 { + compatible = "nuvoton,npcm-gpio"; + reg = <0x40087000 0x2000>; + gpio-controller; + index = <0x3>; + #gpio-cells=<2>; + }; + + gpio4: gpio@40089000 { + compatible = "nuvoton,npcm-gpio"; + reg = <0x40089000 0x2000>; + gpio-controller; + index = <0x4>; + #gpio-cells=<2>; + }; + + gpio5: gpio@4008b000 { + compatible = "nuvoton,npcm-gpio"; + reg = <0x4008b000 0x2000>; + gpio-controller; + index = <0x5>; + #gpio-cells=<2>; + }; + + gpio6: gpio@4008d000 { + compatible = "nuvoton,npcm-gpio"; + reg = <0x4008d000 0x2000>; + gpio-controller; + index = <0x6>; + #gpio-cells=<2>; + }; + + gpio7: gpio@4008f000 { + compatible = "nuvoton,npcm-gpio"; + reg = <0x4008f000 0x2000>; + gpio-controller; + index = <0x7>; + #gpio-cells=<2>; + }; + + gpio8: gpio@40091000 { + compatible = "nuvoton,npcm-gpio"; + reg = <0x40091000 0x2000>; + gpio-controller; + index = <0x8>; + #gpio-cells=<2>; + }; + + gpio9: gpio@40093000 { + compatible = "nuvoton,npcm-gpio"; + reg = <0x40093000 0x2000>; + gpio-controller; + index = <0x9>; + #gpio-cells=<2>; + }; + + gpioa: gpio@40095000 { + compatible = "nuvoton,npcm-gpio"; + reg = <0x40095000 0x2000>; + gpio-controller; + index = <0xA>; + #gpio-cells=<2>; + }; + + gpiob: gpio@40097000 { + compatible = "nuvoton,npcm-gpio"; + reg = <0x40097000 0x2000>; + gpio-controller; + index = <0xB>; + #gpio-cells=<2>; + }; + + gpioc: gpio@40099000 { + compatible = "nuvoton,npcm-gpio"; + reg = <0x40099000 0x2000>; + gpio-controller; + index = <0xC>; + #gpio-cells=<2>; + }; + + gpiod: gpio@4009b000 { + compatible = "nuvoton,npcm-gpio"; + reg = <0x4009b000 0x2000>; + gpio-controller; + index = <0xD>; + #gpio-cells=<2>; + }; + + gpioe: gpio@4009d000 { + compatible = "nuvoton,npcm-gpio"; + reg = <0x4009d000 0x2000>; + gpio-controller; + index = <0xE>; + #gpio-cells=<2>; + }; + + gpiof: gpio@4009f000 { + compatible = "nuvoton,npcm-gpio"; + reg = <0x4009f000 0x2000>; + gpio-controller; + index = <0xF>; + #gpio-cells=<2>; + }; }; soc-id { diff --git a/dts/arm/nuvoton/npcm/npcm4.dtsi b/dts/arm/nuvoton/npcm/npcm4.dtsi index 66cddb070bc59c..a7cb004755e272 100644 --- a/dts/arm/nuvoton/npcm/npcm4.dtsi +++ b/dts/arm/nuvoton/npcm/npcm4.dtsi @@ -6,6 +6,8 @@ /* npcm4 series pinmux mapping table */ #include "npcm4/npcm4-alts-map.dtsi" +/* npcm4 series mapping table between MIWU groups and interrupts */ +#include "npcm4/npcm4-miwus-wui-map.dtsi" /* Device tree declarations of npcm soc family */ #include "npcm.dtsi" @@ -36,6 +38,86 @@ apb2-prescaler = <1>; /* APB2_CLK runs at 96MHz */ apb3-prescaler = <1>; /* APB3_CLK runs at 96MHz */ }; + + gpio0: gpio@40081000 { + wui-maps = <&wui_io00 &wui_io01 &wui_io02 &wui_io03 + &wui_io04 &wui_io05 &wui_io06 &wui_io07>; + }; + + gpio1: gpio@40083000 { + wui-maps = <&wui_io10 &wui_io11 &wui_io12 &wui_io13 + &wui_io14 &wui_io15 &wui_io16 &wui_io17>; + }; + + gpio2: gpio@40085000 { + wui-maps = <&wui_io20 &wui_io21 &wui_io22 &wui_io23 + &wui_io24 &wui_io25 &wui_io26 &wui_io27>; + }; + + gpio3: gpio@40087000 { + wui-maps = <&wui_io30 &wui_io31 &wui_io32 &wui_io33 + &wui_io34 &wui_io35 &wui_io36 &wui_io37>; + }; + + gpio4: gpio@40089000 { + wui-maps = <&wui_io40 &wui_io41 &wui_io42 &wui_io43 + &wui_io44 &wui_io45 &wui_io46 &wui_io47>; + }; + + gpio5: gpio@4008b000 { + wui-maps = <&wui_io50 &wui_io51 &wui_io52 &wui_io53 + &wui_io54 &wui_io55 &wui_io56 &wui_io57>; + }; + + gpio6: gpio@4008d000 { + wui-maps = <&wui_io60 &wui_io61 &wui_io62 &wui_io63 + &wui_io64 &wui_io65 &wui_io66 &wui_io67>; + }; + + gpio7: gpio@4008f000 { + wui-maps = <&wui_io70 &wui_io71 &wui_io72 &wui_io73 + &wui_io74 &wui_io75 &wui_io76 &wui_io77>; + }; + + gpio8: gpio@40091000 { + wui-maps = <&wui_io80 &wui_io81 &wui_io82 &wui_io83 + &wui_io84 &wui_io85 &wui_io86 &wui_io87>; + }; + + gpio9: gpio@40093000 { + wui-maps = <&wui_io90 &wui_io91 &wui_io92 &wui_io93 + &wui_io94 &wui_io95 &wui_io96 &wui_io97>; + }; + + gpioa: gpio@40095000 { + wui-maps = <&wui_ioa0 &wui_ioa1 &wui_ioa2 &wui_ioa3 + &wui_ioa4 &wui_ioa5 &wui_ioa6 &wui_ioa7>; + }; + + gpiob: gpio@40097000 { + wui-maps = <&wui_iob0 &wui_iob1 &wui_iob2 &wui_iob3 + &wui_iob4 &wui_iob5 &wui_iob6 &wui_iob7>; + }; + + gpioc: gpio@40099000 { + wui-maps = <&wui_ioc0 &wui_ioc1 &wui_ioc2 &wui_ioc3 + &wui_ioc4 &wui_ioc5 &wui_ioc6 &wui_ioc7>; + }; + + gpiod: gpio@4009b000 { + wui-maps = <&wui_iod0 &wui_iod1 &wui_iod2 &wui_iod3 + &wui_iod4 &wui_iod5 &wui_iod6 &wui_iod7>; + }; + + gpioe: gpio@4009d000 { + wui-maps = <&wui_ioe0 &wui_ioe1 &wui_ioe2 &wui_ioe3 + &wui_ioe4 &wui_ioe5 &wui_ioe6 &wui_none>; + }; + + gpiof: gpio@4009f000 { + wui-maps = <&wui_iof0 &wui_iof1 &wui_iof2 &wui_iof3 + &wui_none &wui_none &wui_none &wui_none>; + }; }; soc-if { diff --git a/dts/arm/nuvoton/npcm/npcm4/npcm4-miwus-wui-map.dtsi b/dts/arm/nuvoton/npcm/npcm4/npcm4-miwus-wui-map.dtsi new file mode 100644 index 00000000000000..481ba366e4e789 --- /dev/null +++ b/dts/arm/nuvoton/npcm/npcm4/npcm4-miwus-wui-map.dtsi @@ -0,0 +1,16 @@ +/* + * Copyright (c) 2024 Nuvoton Technology Corporation. + * + * SPDX-License-Identifier: Apache-2.0 + */ + +/* Common Wake-Up Unit Input (WUI) mapping configurations in npcm family */ +#include + +/* Specific Wake-Up Unit Input (WUI) mapping configurations in npcm4 series */ +/ { + /* Mapping between MIWU wui bits and source device */ + npcm-miwus-wui-map { + compatible = "nuvoton,npcm-miwu-wui-map"; + }; +}; diff --git a/dts/bindings/gpio/nuvoton,npcm-gpio.yaml b/dts/bindings/gpio/nuvoton,npcm-gpio.yaml new file mode 100644 index 00000000000000..ace4f853232eb6 --- /dev/null +++ b/dts/bindings/gpio/nuvoton,npcm-gpio.yaml @@ -0,0 +1,36 @@ +# Copyright (c) 2024 Nuvoton Technology Corporation. +# SPDX-License-Identifier: Apache-2.0 + +description: Nuvoton, NPCM-GPIO node + +compatible: "nuvoton,npcm-gpio" + +include: [gpio-controller.yaml, base.yaml] + +properties: + reg: + required: true + + index: + type: int + required: true + description: index of gpio device + + wui-maps: + type: phandles + required: true + description: | + Mapping table between Wake-Up Input (WUI) and 8 IOs belong to this device. + Please notice not all IOs connect to WUIs. + In this case, it will be presented by wui_none. + + For example the WUI mapping on NPCM4 GPIO8 would be + wui-maps = <&wui_io80 &wui_io81 &wui_io82 &wui_io83 + &wui_none &wui_none &wui_io86 &wui_io87>; + + "#gpio-cells": + const: 2 + +gpio-cells: + - pin + - flags diff --git a/dts/bindings/interrupt-controller/nuvoton,npcm-miwu-wui-map.yaml b/dts/bindings/interrupt-controller/nuvoton,npcm-miwu-wui-map.yaml new file mode 100644 index 00000000000000..f4d6d21c93056d --- /dev/null +++ b/dts/bindings/interrupt-controller/nuvoton,npcm-miwu-wui-map.yaml @@ -0,0 +1,13 @@ +# Copyright (c) 2024 Nuvoton Technology Corporation. +# SPDX-License-Identifier: Apache-2.0 + +description: NPCM-MIWU Wake-Up Unit Input (WUI) mapping child node + +compatible: "nuvoton,npcm-miwu-wui-map" + +child-binding: + description: Child node to present the mapping between input of MIWU and its source device + properties: + miwus: + type: phandle-array + required: true diff --git a/dts/bindings/interrupt-controller/nuvoton,npcm-miwu.yaml b/dts/bindings/interrupt-controller/nuvoton,npcm-miwu.yaml new file mode 100644 index 00000000000000..1bed91c845edaa --- /dev/null +++ b/dts/bindings/interrupt-controller/nuvoton,npcm-miwu.yaml @@ -0,0 +1,23 @@ +# Copyright (c) 2024 Nuvoton Technology Corporation. +# SPDX-License-Identifier: Apache-2.0 + +description: Nuvoton, NPCM Multi-Input Wake-Up Unit (MIWU) node + +compatible: "nuvoton,npcm-miwu" + +include: [base.yaml] + +properties: + index: + type: int + required: true + description: index of miwu device + + "#miwu-cells": + type: int + required: true + description: Number of items to present a MIWU input source specifier + +miwu-cells: + - group + - bit diff --git a/soc/nuvoton/npcm/common/soc_gpio.h b/soc/nuvoton/npcm/common/soc_gpio.h new file mode 100644 index 00000000000000..7d83ce0a2e6377 --- /dev/null +++ b/soc/nuvoton/npcm/common/soc_gpio.h @@ -0,0 +1,49 @@ +/* + * Copyright (c) 2024 Nuvoton Technology Corporation. + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#ifndef _NUVOTON_NPCM_SOC_GPIO_H_ +#define _NUVOTON_NPCM_SOC_GPIO_H_ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Pin number for each GPIO device */ +#define NPCM_GPIO_PORT_PIN_NUM 8U + +/** + * @brief Get GPIO device instance by port index + * + * @param port GPIO device index + * + * @retval Pointer to structure device + * @retval NULL Invalid parameter of GPIO port index + */ +const struct device *npcm_get_gpio_dev(int port); + +/** + * @brief Enable the connection between io pads and GPIO instance + * + * @param dev Pointer to device structure for the gpio driver instance. + * @param pin Pin number. + */ +void npcm_gpio_enable_io_pads(const struct device *dev, int pin); + +/** + * @brief Disable the connection between io pads and GPIO instance + * + * @param dev Pointer to device structure for the gpio driver instance. + * @param pin Pin number. + */ +void npcm_gpio_disable_io_pads(const struct device *dev, int pin); + +#ifdef __cplusplus +} +#endif + +#endif /* _NUVOTON_NPCM_SOC_GPIO_H_ */ diff --git a/soc/nuvoton/npcm/common/soc_miwu.h b/soc/nuvoton/npcm/common/soc_miwu.h new file mode 100644 index 00000000000000..620f957de14b88 --- /dev/null +++ b/soc/nuvoton/npcm/common/soc_miwu.h @@ -0,0 +1,232 @@ +/* + * Copyright (c) 2024 Nuvoton Technology Corporation. + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#ifndef _NUVOTON_NPCM_SOC_MIWU_H_ +#define _NUVOTON_NPCM_SOC_MIWU_H_ + +#include + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +enum miwu_table { + NPCM_MIWU_TABLE_0, + NPCM_MIWU_TABLE_1, + NPCM_MIWU_TABLE_2, + NPCM_MIWU_TABLE_COUNT +}; + +enum miwu_group { + NPCM_MIWU_GROUP_1, + NPCM_MIWU_GROUP_2, + NPCM_MIWU_GROUP_3, + NPCM_MIWU_GROUP_4, + NPCM_MIWU_GROUP_5, + NPCM_MIWU_GROUP_6, + NPCM_MIWU_GROUP_7, + NPCM_MIWU_GROUP_8, + NPCM_MIWU_GROUP_COUNT +}; + +#define NPCM_MIWU_TABLE_NONE NPCM_MIWU_TABLE_COUNT + +/* Interrupt modes supported by npcm miwu modules */ +enum miwu_int_mode { + NPCM_MIWU_MODE_LEVEL, + NPCM_MIWU_MODE_EDGE, +}; + +/* Interrupt trigger modes supported by npcm miwu modules */ +enum miwu_int_trig { + NPCM_MIWU_TRIG_LOW, /** Edge failing or active low detection */ + NPCM_MIWU_TRIG_HIGH, /** Edge rising or active high detection */ + NPCM_MIWU_TRIG_BOTH, /** Both edge rising and failing detection */ +}; + +/** + * @brief NPCM wake-up input source structure + * + * Used to indicate a Wake-Up Input source (WUI) belongs to which group and bit + * of Multi-Input Wake-Up Unit (MIWU) modules. + */ +struct npcm_wui { + uint8_t table : 2; /** A source belongs to which MIWU table. */ + uint8_t group : 3; /** A source belongs to which group of MIWU table. */ + uint8_t bit : 3; /** A source belongs to which bit of MIWU group. */ +}; + +/** + * Define npcm miwu driver callback handler signature for wake-up input source + * of generic hardware. Its parameters contain the device issued interrupt + * and corresponding WUI source. + */ +typedef void (*miwu_dev_callback_handler_t)(const struct device *source, + struct npcm_wui *wui); + +/** + * @brief MIWU/GPIO information structure + * + * It contains both GPIO and MIWU information which is stored in unused field + * of struct gpio_port_pins_t since a interested mask of pins is only 8 bits. + * Beware the size of such structure must equal struct gpio_port_pins_t. + */ +struct miwu_io_params { + uint8_t pin_mask; /** A mask of pins the callback is interested in. */ + uint8_t reserved; + uint8_t gpio_port; /** GPIO device index */ + struct npcm_wui wui; /** Wake-up input source of GPIO */ +}; + +/** + * @brief MIWU callback structure for a GPIO input + * + * Used to register a GPIO callback in the driver instance callback list. + * Beware such structure should not be allocated on stack and its size must + * equal struct gpio_callback. + * + * Note: To help setting it, see npcx_miwu_init_gpio_callback() below + */ +struct miwu_io_callback { + /** Node of single-linked list */ + sys_snode_t node; + /** Callback function being called when GPIO event occurred */ + gpio_callback_handler_t handler; + /** GPIO callback parameters used in MIWU ISR */ + struct miwu_io_params params; +}; + +/** + * @brief MIWU callback structure for a device input + * + * Used to register a generic hardware device callback in the driver instance + * callback list. Beware such structure should not be allocated on stack. + * + * Note: To help setting it, see npcm_miwu_init_dev_callback() below + */ +struct miwu_dev_callback { + /** Node of single-linked list */ + sys_snode_t node; + /** Callback function being called when device event occurred */ + miwu_dev_callback_handler_t handler; + /** Device instance register callback function */ + const struct device *source; + /* Wake-up input source */ + struct npcm_wui wui; +}; + +/** + * @brief Enable interrupt of the wake-up input source + * + * @param A pointer on wake-up input source + */ +void npcm_miwu_irq_enable(const struct npcm_wui *wui); + +/** + * @brief Disable interrupt of the wake-up input source + * + * @param wui A pointer on wake-up input source + */ +void npcm_miwu_irq_disable(const struct npcm_wui *wui); + +/** + * @brief Connect io to the wake-up input source + * + * @param wui A pointer on wake-up input source + */ +void npcm_miwu_io_enable(const struct npcm_wui *wui); + +/** + * @brief Disconnect io to the wake-up input source + * + * @param wui A pointer on wake-up input source + */ +void npcm_miwu_io_disable(const struct npcm_wui *wui); + +/** + * @brief Get interrupt state of the wake-up input source + * + * @param wui A pointer on wake-up input source + * + * @retval 0 if interrupt is disabled, otherwise interrupt is enabled + */ +bool npcm_miwu_irq_get_state(const struct npcm_wui *wui); + +/** + * @brief Get & clear interrupt pending bit of the wake-up input source + * + * @param wui A pointer on wake-up input source + * + * @retval 1 if interrupt is pending + */ +bool npcm_miwu_irq_get_and_clear_pending(const struct npcm_wui *wui); + +/** + * @brief Configure interrupt type of the wake-up input source + * + * @param wui Pointer to wake-up input source for configuring + * @param mode Interrupt mode supported by NPCM MIWU + * @param trig Interrupt trigger mode supported by NPCM MIWU + * + * @retval 0 If successful + * @retval -EINVAL Invalid parameters + */ +int npcm_miwu_interrupt_configure(const struct npcm_wui *wui, + enum miwu_int_mode mode, enum miwu_int_trig trig); + +/** + * @brief Function to initialize a struct miwu_io_callback properly + * + * @param callback Pointer to io callback structure for initialization + * @param io_wui Pointer to wake-up input IO source + * @param port GPIO port issued a callback function + */ +void npcm_miwu_init_gpio_callback(struct miwu_io_callback *callback, + const struct npcm_wui *io_wui, int port); + +/** + * @brief Function to initialize a struct miwu_dev_callback properly + * + * @param callback Pointer to device callback structure for initialization + * @param dev_wui Pointer to wake-up input device source + * @param handler A function called when its device input event issued + * @param source Pointer to device instance issued a callback function + */ +void npcm_miwu_init_dev_callback(struct miwu_dev_callback *callback, + const struct npcm_wui *dev_wui, + miwu_dev_callback_handler_t handler, + const struct device *source); + +/** + * @brief Function to insert or remove a IO callback from a callback list + * + * @param callback Pointer to io callback structure + * @param set A boolean indicating insertion or removal of the callback + * + * @retval 0 If successful. + * @retval -EINVAL Invalid parameters + */ +int npcm_miwu_manage_gpio_callback(struct miwu_io_callback *callback, bool set); + + +/** + * @brief Function to insert or remove a device callback from a callback list + * + * @param callback Pointer to device callback structure + * @param set A boolean indicating insertion or removal of the callback + * + * @retval 0 If successful. + * @retval -EINVAL Invalid parameters + */ +int npcm_miwu_manage_dev_callback(struct miwu_dev_callback *cb, bool set); + +#ifdef __cplusplus +} +#endif +#endif /* _NUVOTON_NPCM_SOC_MIWU_H_ */ From 052a7bc70af6eeb3f3e77232fcc1fe4074ade982 Mon Sep 17 00:00:00 2001 From: cpchiang Date: Thu, 23 May 2024 23:32:32 -0700 Subject: [PATCH 5/6] soc: npcm: add mpu support add mpu support, use arm_mpu_regions mapping table. Signed-off-by: cpchiang --- boards/nuvoton/npcm400f_evb/npcm400f_evb_defconfig | 2 ++ soc/nuvoton/npcm/npcm4/Kconfig | 1 - 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/boards/nuvoton/npcm400f_evb/npcm400f_evb_defconfig b/boards/nuvoton/npcm400f_evb/npcm400f_evb_defconfig index 1f751b41fc082a..4580914584068e 100644 --- a/boards/nuvoton/npcm400f_evb/npcm400f_evb_defconfig +++ b/boards/nuvoton/npcm400f_evb/npcm400f_evb_defconfig @@ -10,6 +10,8 @@ CONFIG_BOOTLOADER_SRAM_SIZE=0 CONFIG_SYS_CLOCK_HW_CYCLES_PER_SEC=96000000 CONFIG_XIP=n +# CONFIG_ARM_MPU=y + # Clock Driver CONFIG_CLOCK_CONTROL=y CONFIG_CLOCK_CONTROL_NPCM=y diff --git a/soc/nuvoton/npcm/npcm4/Kconfig b/soc/nuvoton/npcm/npcm4/Kconfig index 6042048cebfaf5..5cdb452dbd830e 100644 --- a/soc/nuvoton/npcm/npcm4/Kconfig +++ b/soc/nuvoton/npcm/npcm4/Kconfig @@ -10,6 +10,5 @@ config SOC_SERIES_NPCM4 select SOC_FAMILY_NPCM select CORTEX_M_SYSTICK select CPU_HAS_ARM_MPU - select CPU_HAS_CUSTOM_FIXED_SOC_MPU_REGIONS help Enable support for Nuvoton NPCM4 series From b0a6f9544b7f846b18f4b24698296501c6239a78 Mon Sep 17 00:00:00 2001 From: cpchiang Date: Sun, 26 May 2024 18:17:22 -0700 Subject: [PATCH 6/6] boards: npcm400f_evb: add XIP support add XIP support. Signed-off-by: cpchiang --- boards/nuvoton/npcm400f_evb/npcm400f_evb_defconfig | 1 + 1 file changed, 1 insertion(+) diff --git a/boards/nuvoton/npcm400f_evb/npcm400f_evb_defconfig b/boards/nuvoton/npcm400f_evb/npcm400f_evb_defconfig index 4580914584068e..830affe8ab9733 100644 --- a/boards/nuvoton/npcm400f_evb/npcm400f_evb_defconfig +++ b/boards/nuvoton/npcm400f_evb/npcm400f_evb_defconfig @@ -8,6 +8,7 @@ CONFIG_SRAM_VECTOR_TABLE=y CONFIG_BOOTLOADER_SRAM_SIZE=0 # General Kernel Options CONFIG_SYS_CLOCK_HW_CYCLES_PER_SEC=96000000 +# CONFIG_FLASH_LOAD_OFFSET=0x600 CONFIG_XIP=n # CONFIG_ARM_MPU=y

`lNQS8D@un+a(3C7x)h@ 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 z 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 ?(7e_ET;PzcVEy78)B2P^UD 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