# Copyright (c) 2021, Linaro ltd
# SPDX-License-Identifier: Apache-2.0

description: |
  STM32 Reset and Clock controller node.
  This node is in charge of system clock ('SYSCLK') source selection and controlling
  clocks for AHB (Advanced High Performance) and APB (Advanced Peripheral) bus domains.

  Configuring STM32 Reset and Clock controller node:

  System clock source should be selected amongst the clock nodes available in "clocks"
  node (typically 'clk_hse, clk_hsi', 'pll', ...).
  Core clock frequency should also be defined, using "clock-frequency" property.
  Note:
          Core clock frequency  = SYSCLK / AHB prescaler
  Last, peripheral bus clocks (typically PCLK1, PCLK2) should be configured using matching
  prescaler properties.
  Here is an example of correctly configured rcc node:
  &rcc {
           clocks = <&pll>;  /* Select 80MHz pll as SYSCLK source */
           ahb-prescaler = <2>;
           clock-frequency = <DT_FREQ_M(40)>; /* = SYSCLK / AHB prescaler */
           apb1-presacler = <1>;
           apb2-presacler = <1>;
  }

  Specifying a gated clock:

  To specify a gated clock, a peripheral should define a "clocks" property encoded
  in the following way:
  ... {
           ...
           clocks = <&rcc STM32_CLOCK_BUS_APB2 0x00000020>;
           ...
  }
  After the phandle referring to rcc node, the first index specifies the registers of
  the bus controlling the peripheral and the second index specifies the bit used to
  control the peripheral clock in that bus register.

compatible: "st,stm32-rcc"

include: [clock-controller.yaml, base.yaml]

properties:
    reg:
      required: true

    "#clock-cells":
      const: 2

    clock-frequency:
      required: true
      type: int
      description: |
        default frequency in Hz for clock output

    ahb-prescaler:
      type: int
      required: true
      enum:
        - 1
        - 2
        - 4
        - 8
        - 16
        - 64
        - 128
        - 256
        - 512
      description: |
          AHB prescaler. Defines actual core clock frequency (HCLK)
          based on system frequency input.
          The HCLK clocks CPU, AHB, memories and DMA.

    apb1-prescaler:
      type: int
      required: true
      enum:
        - 1
        - 2
        - 4
        - 8
        - 16

    apb2-prescaler:
      type: int
      required: true
      enum:
        - 1
        - 2
        - 4
        - 8
        - 16

    undershoot-prevention:
      type: boolean
      required: false
      description: |
        On some parts, it could be required to set up highest core frequencies
        (>80MHz) in two steps in order to prevent undershoot.
        This is done by applying an intermediate AHB prescaler before switching
        System Clock source to PLL. Once done, prescaler is set back to expected
        value.

clock-cells:
  - bus
  - bits
