[v8,16/18] dt-bindings: clock: imx8m-clock: support spread spectrum clocking
Commit Message
The addition of DT bindings for enabling and tuning spread spectrum
clocking generation can be applied specifically to the PLLs.
The "" value for the fsl,ssc-method property is specifically intended to
specify a "no SSC" case, as in the example, when you don't want to
configure spread spectrum for one of the PLLs, thus avoiding the use of
a method that would only make sense if SSC were being set.
Signed-off-by: Dario Binacchi <dario.binacchi@amarulasolutions.com>
Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
---
(no changes since v7)
Changes in v7:
- List the PLLs to strictly define the setup order for each of the
added properties
- Drop maxItems from "fsl,ssc-modfreq-hz" and "fsl,ssc-modrate-percent"
properties
- Add 'Reviewed-by' tag of Krzysztof Kozlowski
Changes in v6:
- Improve the commit message
- change minItems from 7 to 1 for all the ssc properties added
- change maxItems from 10 to 4 for alle the ssc properties added
- update the DTS example
Changes in v4:
- Drop "fsl,ssc-clocks" property. The other added properties now refer
to the clock list.
- Updated minItems and maxItems of
- clocks
- clock-names
- fsl,ssc-modfreq-hz
- fsl,ssc-modrate-percent
- fsl,ssc-modmethod
- Updated the dts examples
Changes in v3:
- Added in v3
- The dt-bindings have been moved from fsl,imx8m-anatop.yaml to
imx8m-clock.yaml. The anatop device (fsl,imx8m-anatop.yaml) is
indeed more or less a syscon, so it represents a memory area
accessible by ccm (imx8m-clock.yaml) to setup the PLLs.
Changes in v2:
- Add "allOf:" and place it after "required:" block, like in the
example schema.
- Move the properties definition to the top-level.
- Drop unit types as requested by the "make dt_binding_check" command.
.../bindings/clock/imx8m-clock.yaml | 47 +++++++++++++++++++
1 file changed, 47 insertions(+)
@@ -43,6 +43,46 @@ properties:
ID in its "clocks" phandle cell. See include/dt-bindings/clock/imx8m-clock.h
for the full list of i.MX8M clock IDs.
+ fsl,ssc-modfreq-hz:
+ description:
+ The values of modulation frequency (Hz unit) for each clock
+ supporting spread spectrum.
+ minItems: 1
+ items:
+ - description: audio_pll1
+ - description: audio_pll2
+ - description: dram_pll
+ - description: video_pll
+
+ fsl,ssc-modrate-percent:
+ description:
+ The percentage values of modulation rate for each clock
+ supporting spread spectrum.
+ minItems: 1
+ items:
+ - description: audio_pll1
+ - description: audio_pll2
+ - description: dram_pll
+ - description: video_pll
+
+ fsl,ssc-modmethod:
+ $ref: /schemas/types.yaml#/definitions/non-unique-string-array
+ description: |
+ The modulation techniques for each clock supporting spread
+ spectrum in this order::
+ - audio_pll1
+ - audio_pll2
+ - dram_pll
+ - video_pll
+ minItems: 1
+ maxItems: 4
+ items:
+ enum:
+ - ""
+ - down-spread
+ - up-spread
+ - center-spread
+
required:
- compatible
- reg
@@ -76,6 +116,10 @@ allOf:
- const: clk_ext2
- const: clk_ext3
- const: clk_ext4
+ fsl,ssc-modfreq-hz: false
+ fsl,ssc-modrate-percent: false
+ fsl,ssc-modmethod: false
+
else:
properties:
clocks:
@@ -124,6 +168,9 @@ examples:
clock-names = "osc_32k", "osc_24m", "clk_ext1", "clk_ext2",
"clk_ext3", "clk_ext4", "audio_pll1", "audio_pll2",
"dram_pll", "video_pll";
+ fsl,ssc-modfreq-hz = <6818>, <0>, <0>, <2419>;
+ fsl,ssc-modrate-percent = <3>, <0>, <0>, <7>;
+ fsl,ssc-modmethod = "down-spread", "", "", "center-spread";
};
- |