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

description: |
  STM32 HSI Clock node description for STM32G0 devices
  On STM32G0, HSI is a 16MHz fixed clock.

  It also produces a HSISYS secondary clk which can be used as system clock
  source. In that case, a HSI divisor (ranges from 1 to 128) can be applied:
  SYSCLK = HSI16 / HSI DIV
        enum:
        - 1 ==> HSISYS = 16MHZ
        - 2 ==> HSISYS = 8MHZ
        - 4 ==> HSISYS = 4MHZ
        - 8 ==> HSISYS = 2MHZ
        - 16 ==> HSISYS = 1MHZ
        - 32 ==> HSISYS = 0.5MHz
        - 64 ==> HSISYS = 0.25MHZ
        - 128 ==> HSISYS = 0.125MHz

compatible: "st,stm32g0-hsi-clock"

include: [fixed-clock.yaml]

properties:
    hsi-div:
      type: int
      required: true
      description: |
        HSI clock divider. Configures the output HSI clock frequency (HSISYS),
        It does not apply to HSI clk selected as peripheral source clock
        (eg: RNG clk driven by HSI)
      enum:
        - 1
        - 2
        - 4
        - 8
        - 16
        - 32
        - 64
        - 128
