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

description: |
  STM32L4/L5 main PLL.

  It can be used to describe 3 different PLLs: PLL, PLLSAI1 and PLLSAI2.
  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 4 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  --> PLLSAI3CLK
    f(PLL_Q) = f(VCO clock) / PLLQ  --> PLL48M1CLK
    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 80 MHz.

compatible: "st,stm32l4-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 the main PLL and audio PLLs (PLLSAI1 and PLLSAI2)
        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
    description: |
        Main PLL division factor for PLLSAI3CLK
    enum:
      - 7
      - 17

  div-q:
    type: int
    description: |
        Main PLL division factor for PLL48M1CLK (48 MHz clock).
    enum:
      - 2
      - 4
      - 6
      - 8

  div-r:
    type: int
    required: true
    description: |
        Main PLL division factor for PLLCLK (system clock)
    enum:
      - 2
      - 4
      - 6
      - 8
