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

description: |
  STM32WB and STM32WL PLL node.

  It can be used to describe 2 different PLLs: PLL, PLLSAI1.
  Only main PLL is supported for now.

  These PLLs could take one of clk_hse, clk_hsi or clk_msi 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.

  Each 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  --> PLLPCLK
    f(PLL_Q) = f(VCO clock) / PLLQ  --> PLLQCLK
    f(PLL_R) = f(VCO clock) / PLLR  --> PLLRCLK (System Clock)

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

  The PLL output frequency must not exceed:
          - 64 MHz on STM32WB
          - 62 MHz on STM32WL

compatible: "st,stm32wb-pll-clock"

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

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

    clocks:
      required: true

    div-m:
      type: int
      required: true
      description: |
          Main PLL 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: 6 - 127

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

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

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