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

description: |
  PLL node binding for STM32G0 devices

  It can take one of clk_hse or clk_hsi as input clock, with
  an input frequency from 2.66 to 16 MHz. PLLM factor is used to set the input
  clock in this acceptable range.

  PLL can have up to 3 output clocks and for each output clock, the
  frequency can be computed with the following formulae:

    f(PLL_P) = f(VCO clock) / PLLP  --> to I2S
    f(PLL_Q) = f(VCO clock) / PLLQ  --> to RNG
    f(PLL_R) = f(VCO clock) / PLLR  --> PLLCLK (System Clock)

      with f(VCO clock) = f(PLL clock input) × (PLLN / PLLM)

  The PLL output frequency must not exceed 64 MHz.

compatible: "st,stm32g0-pll-clock"

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

properties:
    "#clock-cells":
      const: 0

    clocks:
      required: true

    div-m:
      type: int
      required: true
      description: |
          Division factor for PLL input clock
          Valid range: 1 - 8

    mul-n:
      type: int
      required: true
      description: |
          Main PLL multiplication factor for VCO
          Valid range: 8 - 86

    div-p:
      type: int
      required: false
      description: |
          PLL division factor for PLL P output
          Valid range: 2 - 32

    div-q:
      type: int
      required: false
      description: |
          PLL division factor for PLL Q output
          Valid range: 2 - 8

    div-r:
      type: int
      required: true
      description: |
          PLL division factor for PLLCLK (system clock)
          Valid range: 2 - 8
