| # Copyright (c) 2020 Nuvoton Technology Corporation. |
| # SPDX-License-Identifier: Apache-2.0 |
| |
| description: | |
| Nuvoton, NPCX 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 NPCX hardware modules. |
| |
| Here is an example of configuring OFMCLK and the other clock sources derived |
| from it in board dts file. |
| &pcc { |
| clock-frequency = <DT_FREQ_M(100)>; /* OFMCLK runs at 100MHz */ |
| core-prescaler = <5>; /* CORE_CLK runs at 20MHz */ |
| apb1-prescaler = <5>; /* APB1_CLK runs at 20MHz */ |
| apb2-prescaler = <5>; /* APB2_CLK runs at 20MHz */ |
| apb3-prescaler = <5>; /* APB3_CLK runs at 20MHz */ |
| }; |
| |
| compatible: "nuvoton,npcx-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: |
| 100000000, 100 MHz |
| 96000000, 96 MHz |
| 90000000, 90 MHz |
| 80000000, 80 MHz |
| 66000000, 66 MHz |
| 50000000, 50 MHz |
| 48000000, 48 MHz |
| 40000000, 40 MHz (default value after reset) |
| 33000000, 33 MHz |
| enum: |
| - 100000000 |
| - 96000000 |
| - 90000000 |
| - 80000000 |
| - 66000000 |
| - 50000000 |
| - 48000000 |
| - 40000000 |
| - 33000000 |
| |
| 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 |
| |
| apb4-prescaler: |
| type: int |
| required: false |
| description: | |
| APB4 prescaler. It sets the APB4 bus frequency, APB4_CLK, by dividing |
| OFMCLK(MCLK) and needs to meet the following requirements. |
| - APB4_CLK must be set to 8MHz <= APB4_CLK <= 50MHz. |
| - APB4_CLK must be an integer division (including 1) of CORE_CLK. |
| = Only the following values are allowed: |
| 1, APB4_CLK = OFMCLK |
| 2, APB4_CLK = OFMCLK / 2 |
| 3, APB4_CLK = OFMCLK / 3 |
| 4, APB4_CLK = OFMCLK / 4 |
| 5, APB4_CLK = OFMCLK / 5 |
| 6, APB4_CLK = OFMCLK / 6 |
| 7, APB4_CLK = OFMCLK / 7 |
| 8, APB4_CLK = OFMCLK / 8 |
| 9, APB4_CLK = OFMCLK / 9 |
| 10, APB4_CLK = OFMCLK / 10 |
| enum: |
| - 1 |
| - 2 |
| - 3 |
| - 4 |
| - 5 |
| - 6 |
| - 7 |
| - 8 |
| - 9 |
| - 10 |
| |
| ram-pd-depth: |
| required: false |
| type: int |
| enum: |
| - 12 |
| - 15 |
| description: | |
| Valid bit-depth of RAM block Power-Down control (RAM_PD) registers. |
| Each bit in RAM_PDn can power down the relevant RAM block by setting |
| itself to 1 for better power consumption and this valid bit-depth |
| varies in different NPCX series. |
| |
| clock-cells: |
| - bus |
| - ctl |
| - bit |