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

description: |
  STM32 Reset and Clock controller node for STM32H7 devices
  This node is in charge of system clock ('SYSCLK') source selection and
  System Clock Generation.

  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_csi', 'pll', ...).
  As part of this node configuration, SYSCLK frequency should also be defined, using
  "clock-frequency" property.
  Last, bus clocks (typically HCLK, PCLK1, PCLK2) should be configured using matching
  prescaler properties.
  Here is an example of correctly configured rcc node:
  &rcc {
           clocks = <&pll>;  /* Set pll as SYSCLK source */
           clock-frequency = <DT_FREQ_M(480)>; /* SYSCLK runs at 480MHz */
           d1cpre = <1>;
           hpre = <1>;
           d1ppre = <1>;
           d2ppre1 = <1>;
           d2ppre2 = <1>;
           d3ppre = <1>;
  }

  Confere st,stm32-rcc binding for information about domain clocks configuration.

compatible: "st,stm32h7-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

  d1cpre:
    type: int
    required: true
    enum:
      - 1
    description: |
        D1 Domain, CPU1 clock prescaler. Sets a HCLK frequency (feeding Cortex-M Systick)
        lower than SYSCLK frequency (actual core frequency).
        Zephyr doesn't make a difference today between these two clocks.
        Changing this prescaler is not allowed until it is made possible to
        use them independently in Zephyr clock subsystem.

  hpre:
    type: int
    required: true
    description: |
        D2 domain, CPU2 core clock and AHB(1/2/3/4) peripheral prescaler
    enum:
      - 1
      - 2
      - 4
      - 8
      - 16
      - 64
      - 128
      - 256
      - 512

  d1ppre:
    type: int
    required: true
    description: |
        D1 domain, APB3 peripheral prescaler
    enum:
      - 1
      - 2
      - 4
      - 8
      - 16

  d2ppre1:
    type: int
    required: true
    description: |
        D2 domain, APB1 peripheral prescaler
    enum:
      - 1
      - 2
      - 4
      - 8
      - 16

  d2ppre2:
    type: int
    required: true
    description: |
        D2 domain, APB2 peripheral prescaler
    enum:
      - 1
      - 2
      - 4
      - 8
      - 16

  d3ppre:
    type: int
    required: true
    description: |
        D3 domain, APB4 peripheral prescaler
    enum:
      - 1
      - 2
      - 4
      - 8
      - 16

clock-cells:
  - bus
  - bits
