zephyr/dts/bindings/clock/st,stm32mp13-pll-clock.yaml
Alain Volmat d95b7c4e64 dts: bindings: stm32: add div-q and div-r on stm32mp13 plls
Depending on the PLL, all DIV-P / DIV-Q and DIV-R are available
on STM32MP13 PLLs.
Adjust valid range in order to be able to set for all 4 PLLs.
Clarify DT properties description.

Signed-off-by: Alain Volmat <alain.volmat@foss.st.com>
2025-05-14 11:03:41 +01:00

87 lines
2.3 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Copyright (c) 2025 STMicroelectronics
# SPDX-License-Identifier: Apache-2.0
description: |
PLL node binding for STM32MP13 devices
It can be used to describe 4 different PLLs: PLL1, PLL2, PLL3 and PLL4.
These PLLs can take one of hse_ck, hsi_ck or csi_ck as input clock.
PLLM factor is used to set the input clock in this acceptable range.
Each PLL has one output clock whose frequency can be computed with the
following formula:
f(PLL_P) = f(VCO clock) / (DIVP × DIVR × DIVQ)
with f(VCO clock) = f(PLL clock input) × 2 × (((DIVN + 1) + (FRACV / 8192)) / DIVM1)
Note: To reduce the power consumption, it is recommended to configure the VCOx
clock output to the lowest frequency.
The PLL1 output frequency must not exceed 2000 MHz.
The PLL2 output frequency must not exceed 1600 MHz.
The PLL3 output frequency must not exceed 800 MHz.
The PLL4 output frequency must not exceed 800 MHz.
Note: The CPU clock should not exceed 1Ghz so avoid configuring the PLL1 to more
than 1000 MHz or program the mpuss_ck mux to use the MPUDIV
(refer to the stm32mp13 reference manual for details)
div-m (aka DIVM1 + 1), div-p (aka DIVP + 1), div-q (aka DIVQ + 1),
div-r (aka DIVR + 1) have identical valid ranges for all 4 PLLs.
mul-n (aka DIVN + 1) valid range depends on the PLL
PLL1: 31 - 125
PLL2: 25 - 100
PLL3: 25 - 200
PLL4: 25 - 200
compatible: "st,stm32mp13-pll-clock"
include: [clock-controller.yaml, base.yaml]
properties:
"#clock-cells":
const: 0
clocks:
required: true
div-m:
type: int
required: true
description: |
PLLx division factor (aka DIVM1 + 1) of the input clock divider
Valid range: 1 - 64
mul-n:
type: int
required: true
description: |
PLLx multiplication factor (aka DIVN + 1) for VCO
Valid range: 25 - 200
div-p:
type: int
description: |
PLLx_P division factor (aka DIVP + 1)
Valid range: 1 - 128
div-q:
type: int
description: |
PLLx_Q division factor (aka DIVQ + 1)
Valid range: 1 - 128
div-r:
type: int
description: |
PLLx_R division factor (aka DIVR + 1)
Valid range: 1 - 128
frac-v:
type: int
description: |
PLLx FRACV fractional latch
Valid range: 1 - 8192