2023-09-19 08:09:52

by Shengjiu Wang

[permalink] [raw]
Subject: [PATCH] arm64: dts: imx8mp: assign parent clock and rate for audio clocks

Assign parent clock for audio AHB and AXI clocks, and assign
clock rate for audio PLL1 and PLL2.

Signed-off-by: Shengjiu Wang <[email protected]>
---
arch/arm64/boot/dts/freescale/imx8mp.dtsi | 16 +++++++++++++---
1 file changed, 13 insertions(+), 3 deletions(-)

diff --git a/arch/arm64/boot/dts/freescale/imx8mp.dtsi b/arch/arm64/boot/dts/freescale/imx8mp.dtsi
index 6f2f50e1639c..8a8a2c4aff9f 100644
--- a/arch/arm64/boot/dts/freescale/imx8mp.dtsi
+++ b/arch/arm64/boot/dts/freescale/imx8mp.dtsi
@@ -734,16 +734,26 @@ clk: clock-controller@30380000 {
<&clk IMX8MP_CLK_A53_CORE>,
<&clk IMX8MP_CLK_NOC>,
<&clk IMX8MP_CLK_NOC_IO>,
- <&clk IMX8MP_CLK_GIC>;
+ <&clk IMX8MP_CLK_GIC>,
+ <&clk IMX8MP_CLK_AUDIO_AHB>,
+ <&clk IMX8MP_CLK_AUDIO_AXI_SRC>,
+ <&clk IMX8MP_AUDIO_PLL1>,
+ <&clk IMX8MP_AUDIO_PLL2>;
assigned-clock-parents = <&clk IMX8MP_SYS_PLL1_800M>,
<&clk IMX8MP_ARM_PLL_OUT>,
<&clk IMX8MP_SYS_PLL2_1000M>,
<&clk IMX8MP_SYS_PLL1_800M>,
- <&clk IMX8MP_SYS_PLL2_500M>;
+ <&clk IMX8MP_SYS_PLL2_500M>,
+ <&clk IMX8MP_SYS_PLL1_800M>,
+ <&clk IMX8MP_SYS_PLL1_800M>;
assigned-clock-rates = <0>, <0>,
<1000000000>,
<800000000>,
- <500000000>;
+ <500000000>,
+ <400000000>,
+ <800000000>,
+ <393216000>,
+ <361267200>;
};

src: reset-controller@30390000 {
--
2.34.1


2023-09-19 08:24:21

by Lucas Stach

[permalink] [raw]
Subject: Re: [PATCH] arm64: dts: imx8mp: assign parent clock and rate for audio clocks

Hi Shengjiu,

Am Dienstag, dem 19.09.2023 um 15:32 +0800 schrieb Shengjiu Wang:
> Assign parent clock for audio AHB and AXI clocks, and assign
> clock rate for audio PLL1 and PLL2.
>
Please don't do this. Configuring all those clocks in the clock
controller is a pain to override if the board uses the PLLs in any
other way than the reference design.

The audio AXI and AHB clocks are already properly configured with Adams
patch [1], so there is no need for the changes in this patch.

Please set up the audio PLLs in the board DT in peripheral nodes that
are actually using those clocks.

Regards,
Lucas

[1] https://lore.kernel.org/all/[email protected]/

> Signed-off-by: Shengjiu Wang <[email protected]>
> ---
> arch/arm64/boot/dts/freescale/imx8mp.dtsi | 16 +++++++++++++---
> 1 file changed, 13 insertions(+), 3 deletions(-)
>
> diff --git a/arch/arm64/boot/dts/freescale/imx8mp.dtsi b/arch/arm64/boot/dts/freescale/imx8mp.dtsi
> index 6f2f50e1639c..8a8a2c4aff9f 100644
> --- a/arch/arm64/boot/dts/freescale/imx8mp.dtsi
> +++ b/arch/arm64/boot/dts/freescale/imx8mp.dtsi
> @@ -734,16 +734,26 @@ clk: clock-controller@30380000 {
> <&clk IMX8MP_CLK_A53_CORE>,
> <&clk IMX8MP_CLK_NOC>,
> <&clk IMX8MP_CLK_NOC_IO>,
> - <&clk IMX8MP_CLK_GIC>;
> + <&clk IMX8MP_CLK_GIC>,
> + <&clk IMX8MP_CLK_AUDIO_AHB>,
> + <&clk IMX8MP_CLK_AUDIO_AXI_SRC>,
> + <&clk IMX8MP_AUDIO_PLL1>,
> + <&clk IMX8MP_AUDIO_PLL2>;
> assigned-clock-parents = <&clk IMX8MP_SYS_PLL1_800M>,
> <&clk IMX8MP_ARM_PLL_OUT>,
> <&clk IMX8MP_SYS_PLL2_1000M>,
> <&clk IMX8MP_SYS_PLL1_800M>,
> - <&clk IMX8MP_SYS_PLL2_500M>;
> + <&clk IMX8MP_SYS_PLL2_500M>,
> + <&clk IMX8MP_SYS_PLL1_800M>,
> + <&clk IMX8MP_SYS_PLL1_800M>;
> assigned-clock-rates = <0>, <0>,
> <1000000000>,
> <800000000>,
> - <500000000>;
> + <500000000>,
> + <400000000>,
> + <800000000>,
> + <393216000>,
> + <361267200>;
> };
>
> src: reset-controller@30390000 {

2023-09-19 10:37:09

by Lucas Stach

[permalink] [raw]
Subject: Re: [PATCH] arm64: dts: imx8mp: assign parent clock and rate for audio clocks

Am Dienstag, dem 19.09.2023 um 17:59 +0800 schrieb Shengjiu Wang:
> On Tue, Sep 19, 2023 at 4:20 PM Lucas Stach <[email protected]> wrote:
> >
> > Hi Shengjiu,
> >
> > Am Dienstag, dem 19.09.2023 um 15:32 +0800 schrieb Shengjiu Wang:
> > > Assign parent clock for audio AHB and AXI clocks, and assign
> > > clock rate for audio PLL1 and PLL2.
> > >
> > Please don't do this. Configuring all those clocks in the clock
> > controller is a pain to override if the board uses the PLLs in any
> > other way than the reference design.
> >
> > The audio AXI and AHB clocks are already properly configured with Adams
> > patch [1], so there is no need for the changes in this patch.
> >
> > Please set up the audio PLLs in the board DT in peripheral nodes that
> > are actually using those clocks.
> >
> > Regards,
> > Lucas
> >
> > [1] https://lore.kernel.org/all/[email protected]/
>
> For this patch, it changes the AXI clock to 600M. But the parent clock
> is 800M, so the result AXI clock is 400M actually, the 800M can't be divided
> to 600MHz.
>
That's right. Please review that patch and suggest changes if you see a
better option. Adding another conflicting clock setup in the clk
controller node isn't the solution to this.

One possible solution would be to promote the VPU PLL to be the system
PLL running at 600MHz, as there are quite a few peripherals which seem
to need a 600MHz clock for nominal drive mode and we don't need any
other specific VPU clocks, which couldn't be sourced from the system
PLLs + VPU PLL running at 600MHz.

Regards,
Lucas

> Best regards
> Wang shengjiu
>
>
>
> >
> > > Signed-off-by: Shengjiu Wang <[email protected]>
> > > ---
> > > arch/arm64/boot/dts/freescale/imx8mp.dtsi | 16 +++++++++++++---
> > > 1 file changed, 13 insertions(+), 3 deletions(-)
> > >
> > > diff --git a/arch/arm64/boot/dts/freescale/imx8mp.dtsi b/arch/arm64/boot/dts/freescale/imx8mp.dtsi
> > > index 6f2f50e1639c..8a8a2c4aff9f 100644
> > > --- a/arch/arm64/boot/dts/freescale/imx8mp.dtsi
> > > +++ b/arch/arm64/boot/dts/freescale/imx8mp.dtsi
> > > @@ -734,16 +734,26 @@ clk: clock-controller@30380000 {
> > > <&clk IMX8MP_CLK_A53_CORE>,
> > > <&clk IMX8MP_CLK_NOC>,
> > > <&clk IMX8MP_CLK_NOC_IO>,
> > > - <&clk IMX8MP_CLK_GIC>;
> > > + <&clk IMX8MP_CLK_GIC>,
> > > + <&clk IMX8MP_CLK_AUDIO_AHB>,
> > > + <&clk IMX8MP_CLK_AUDIO_AXI_SRC>,
> > > + <&clk IMX8MP_AUDIO_PLL1>,
> > > + <&clk IMX8MP_AUDIO_PLL2>;
> > > assigned-clock-parents = <&clk IMX8MP_SYS_PLL1_800M>,
> > > <&clk IMX8MP_ARM_PLL_OUT>,
> > > <&clk IMX8MP_SYS_PLL2_1000M>,
> > > <&clk IMX8MP_SYS_PLL1_800M>,
> > > - <&clk IMX8MP_SYS_PLL2_500M>;
> > > + <&clk IMX8MP_SYS_PLL2_500M>,
> > > + <&clk IMX8MP_SYS_PLL1_800M>,
> > > + <&clk IMX8MP_SYS_PLL1_800M>;
> > > assigned-clock-rates = <0>, <0>,
> > > <1000000000>,
> > > <800000000>,
> > > - <500000000>;
> > > + <500000000>,
> > > + <400000000>,
> > > + <800000000>,
> > > + <393216000>,
> > > + <361267200>;
> > > };
> > >
> > > src: reset-controller@30390000 {
> >
>

2023-09-19 16:26:57

by Shengjiu Wang

[permalink] [raw]
Subject: Re: [PATCH] arm64: dts: imx8mp: assign parent clock and rate for audio clocks

On Tue, Sep 19, 2023 at 4:20 PM Lucas Stach <[email protected]> wrote:
>
> Hi Shengjiu,
>
> Am Dienstag, dem 19.09.2023 um 15:32 +0800 schrieb Shengjiu Wang:
> > Assign parent clock for audio AHB and AXI clocks, and assign
> > clock rate for audio PLL1 and PLL2.
> >
> Please don't do this. Configuring all those clocks in the clock
> controller is a pain to override if the board uses the PLLs in any
> other way than the reference design.
>
> The audio AXI and AHB clocks are already properly configured with Adams
> patch [1], so there is no need for the changes in this patch.
>
> Please set up the audio PLLs in the board DT in peripheral nodes that
> are actually using those clocks.
>
> Regards,
> Lucas
>
> [1] https://lore.kernel.org/all/[email protected]/

For this patch, it changes the AXI clock to 600M. But the parent clock
is 800M, so the result AXI clock is 400M actually, the 800M can't be divided
to 600MHz.

Best regards
Wang shengjiu



>
> > Signed-off-by: Shengjiu Wang <[email protected]>
> > ---
> > arch/arm64/boot/dts/freescale/imx8mp.dtsi | 16 +++++++++++++---
> > 1 file changed, 13 insertions(+), 3 deletions(-)
> >
> > diff --git a/arch/arm64/boot/dts/freescale/imx8mp.dtsi b/arch/arm64/boot/dts/freescale/imx8mp.dtsi
> > index 6f2f50e1639c..8a8a2c4aff9f 100644
> > --- a/arch/arm64/boot/dts/freescale/imx8mp.dtsi
> > +++ b/arch/arm64/boot/dts/freescale/imx8mp.dtsi
> > @@ -734,16 +734,26 @@ clk: clock-controller@30380000 {
> > <&clk IMX8MP_CLK_A53_CORE>,
> > <&clk IMX8MP_CLK_NOC>,
> > <&clk IMX8MP_CLK_NOC_IO>,
> > - <&clk IMX8MP_CLK_GIC>;
> > + <&clk IMX8MP_CLK_GIC>,
> > + <&clk IMX8MP_CLK_AUDIO_AHB>,
> > + <&clk IMX8MP_CLK_AUDIO_AXI_SRC>,
> > + <&clk IMX8MP_AUDIO_PLL1>,
> > + <&clk IMX8MP_AUDIO_PLL2>;
> > assigned-clock-parents = <&clk IMX8MP_SYS_PLL1_800M>,
> > <&clk IMX8MP_ARM_PLL_OUT>,
> > <&clk IMX8MP_SYS_PLL2_1000M>,
> > <&clk IMX8MP_SYS_PLL1_800M>,
> > - <&clk IMX8MP_SYS_PLL2_500M>;
> > + <&clk IMX8MP_SYS_PLL2_500M>,
> > + <&clk IMX8MP_SYS_PLL1_800M>,
> > + <&clk IMX8MP_SYS_PLL1_800M>;
> > assigned-clock-rates = <0>, <0>,
> > <1000000000>,
> > <800000000>,
> > - <500000000>;
> > + <500000000>,
> > + <400000000>,
> > + <800000000>,
> > + <393216000>,
> > + <361267200>;
> > };
> >
> > src: reset-controller@30390000 {
>