# Copyright (c) 2024, STMicroelectronics
# SPDX-License-Identifier: Apache-2.0

description: |
  STM32 Reset and Clock controller node for STM32H7RS 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(280)>; /* SYSCLK runs at 280MHz */
           dcpre = <1>;
           hpre = <1>;
           ppre1 = <1>;
           ppre2 = <1>;
           ppre4 = <1>;
           ppre5 = <1>;
  }

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

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

  dcpre:
    type: int
    required: true
    enum:
      - 1
      - 2
      - 4
      - 8
      - 16
      - 64
      - 128
      - 256
      - 512
    description: |
        CPU 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: |
        peripheral clock to the Bus Matrix APB (1/2/4/5) and AHB(1/2/3/4/5) peripheral
        divider of the CPU clock by this  prescaler (BMPRE register)
    enum:
      - 1
      - 2
      - 4
      - 8
      - 16
      - 64
      - 128
      - 256
      - 512

  ppre1:
    type: int
    required: true
    description: |
        APB1 peripheral prescaler
    enum:
      - 1
      - 2
      - 4
      - 8
      - 16

  ppre2:
    type: int
    required: true
    description: |
        APB2 peripheral prescaler
    enum:
      - 1
      - 2
      - 4
      - 8
      - 16

  ppre4:
    type: int
    required: true
    description: |
        APB4 peripheral prescaler
    enum:
      - 1
      - 2
      - 4
      - 8
      - 16

  ppre5:
    type: int
    required: true
    description: |
        APB5 peripheral prescaler
    enum:
      - 1
      - 2
      - 4
      - 8
      - 16

clock-cells:
  - bus
  - bits
