# 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
