diff mbox series

arm64: dts: allwinner: a64: set GPU clock to 432 MHz

Message ID 20191203021420.164129-1-anarsoul@gmail.com (mailing list archive)
State New, archived
Headers show
Series arm64: dts: allwinner: a64: set GPU clock to 432 MHz | expand

Commit Message

Vasily Khoruzhick Dec. 3, 2019, 2:14 a.m. UTC
That's what BSP kernel sets it to and it seems to work fine.

Signed-off-by: Vasily Khoruzhick <anarsoul@gmail.com>
---
 arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi | 3 +++
 1 file changed, 3 insertions(+)

Comments

Maxime Ripard Dec. 9, 2019, 7:31 p.m. UTC | #1
Hi,

On Mon, Dec 02, 2019 at 06:14:20PM -0800, Vasily Khoruzhick wrote:
> That's what BSP kernel sets it to and it seems to work fine.
>
> Signed-off-by: Vasily Khoruzhick <anarsoul@gmail.com>
> ---
>  arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi | 3 +++
>  1 file changed, 3 insertions(+)
>
> diff --git a/arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi b/arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi
> index 27e48234f1c2..0051f39b3d98 100644
> --- a/arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi
> +++ b/arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi
> @@ -976,6 +976,9 @@ mali: gpu@1c40000 {
>  			clocks = <&ccu CLK_BUS_GPU>, <&ccu CLK_GPU>;
>  			clock-names = "bus", "core";
>  			resets = <&ccu RST_BUS_GPU>;
> +
> +			assigned-clocks = <&ccu CLK_GPU>;
> +			assigned-clock-rates = <432000000>;
>  		};

This doesn't really guarantee anything. If the GPU needs to remain at
that rate, it should be set in the driver. I just saw that you did
send a PR in github, I just merged it.

Maxime
Vasily Khoruzhick Dec. 9, 2019, 8:23 p.m. UTC | #2
On Mon, Dec 9, 2019 at 12:03 PM Maxime Ripard <mripard@kernel.org> wrote:
>
> Hi,
>
> On Mon, Dec 02, 2019 at 06:14:20PM -0800, Vasily Khoruzhick wrote:
> > That's what BSP kernel sets it to and it seems to work fine.
> >
> > Signed-off-by: Vasily Khoruzhick <anarsoul@gmail.com>
> > ---
> >  arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi | 3 +++
> >  1 file changed, 3 insertions(+)
> >
> > diff --git a/arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi b/arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi
> > index 27e48234f1c2..0051f39b3d98 100644
> > --- a/arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi
> > +++ b/arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi
> > @@ -976,6 +976,9 @@ mali: gpu@1c40000 {
> >                       clocks = <&ccu CLK_BUS_GPU>, <&ccu CLK_GPU>;
> >                       clock-names = "bus", "core";
> >                       resets = <&ccu RST_BUS_GPU>;
> > +
> > +                     assigned-clocks = <&ccu CLK_GPU>;
> > +                     assigned-clock-rates = <432000000>;
> >               };
>
> This doesn't really guarantee anything. If the GPU needs to remain at
> that rate, it should be set in the driver. I just saw that you did
> send a PR in github, I just merged it.

Lima doesn't set GPU frequency at all since it's different for
different SoCs and we don't support operation points nor frequency
scaling yet.

So this change effectively sets GPU frequency to 432MHz on A64 when using lima.

>
> Maxime
Maxime Ripard Dec. 10, 2019, 8:33 a.m. UTC | #3
On Mon, Dec 09, 2019 at 12:23:18PM -0800, Vasily Khoruzhick wrote:
> On Mon, Dec 9, 2019 at 12:03 PM Maxime Ripard <mripard@kernel.org> wrote:
> > On Mon, Dec 02, 2019 at 06:14:20PM -0800, Vasily Khoruzhick wrote:
> > > That's what BSP kernel sets it to and it seems to work fine.
> > >
> > > Signed-off-by: Vasily Khoruzhick <anarsoul@gmail.com>
> > > ---
> > >  arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi | 3 +++
> > >  1 file changed, 3 insertions(+)
> > >
> > > diff --git a/arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi b/arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi
> > > index 27e48234f1c2..0051f39b3d98 100644
> > > --- a/arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi
> > > +++ b/arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi
> > > @@ -976,6 +976,9 @@ mali: gpu@1c40000 {
> > >                       clocks = <&ccu CLK_BUS_GPU>, <&ccu CLK_GPU>;
> > >                       clock-names = "bus", "core";
> > >                       resets = <&ccu RST_BUS_GPU>;
> > > +
> > > +                     assigned-clocks = <&ccu CLK_GPU>;
> > > +                     assigned-clock-rates = <432000000>;
> > >               };
> >
> > This doesn't really guarantee anything. If the GPU needs to remain at
> > that rate, it should be set in the driver. I just saw that you did
> > send a PR in github, I just merged it.
>
> Lima doesn't set GPU frequency at all since it's different for
> different SoCs and we don't support operation points nor frequency
> scaling yet.

You don't really need frequency scaling though, you just need to set
it to any of the OPP. And if that's still too complicated, the binding
mandates to associate a vendor compatible, so you can base the
information on that.

> So this change effectively sets GPU frequency to 432MHz on A64 when
> using lima.

Right before the driver is probed. For all you now, that frequency can
be changed to anything else at the very next operation and you'd end
up in the exact same situation than the one you're trying to fix.

Maxime
Robin Murphy Dec. 10, 2019, 11:48 a.m. UTC | #4
On 10/12/2019 8:33 am, Maxime Ripard wrote:
> On Mon, Dec 09, 2019 at 12:23:18PM -0800, Vasily Khoruzhick wrote:
>> On Mon, Dec 9, 2019 at 12:03 PM Maxime Ripard <mripard@kernel.org> wrote:
>>> On Mon, Dec 02, 2019 at 06:14:20PM -0800, Vasily Khoruzhick wrote:
>>>> That's what BSP kernel sets it to and it seems to work fine.
>>>>
>>>> Signed-off-by: Vasily Khoruzhick <anarsoul@gmail.com>
>>>> ---
>>>>   arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi | 3 +++
>>>>   1 file changed, 3 insertions(+)
>>>>
>>>> diff --git a/arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi b/arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi
>>>> index 27e48234f1c2..0051f39b3d98 100644
>>>> --- a/arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi
>>>> +++ b/arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi
>>>> @@ -976,6 +976,9 @@ mali: gpu@1c40000 {
>>>>                        clocks = <&ccu CLK_BUS_GPU>, <&ccu CLK_GPU>;
>>>>                        clock-names = "bus", "core";
>>>>                        resets = <&ccu RST_BUS_GPU>;
>>>> +
>>>> +                     assigned-clocks = <&ccu CLK_GPU>;
>>>> +                     assigned-clock-rates = <432000000>;
>>>>                };
>>>
>>> This doesn't really guarantee anything. If the GPU needs to remain at
>>> that rate, it should be set in the driver. I just saw that you did
>>> send a PR in github, I just merged it.
>>
>> Lima doesn't set GPU frequency at all since it's different for
>> different SoCs and we don't support operation points nor frequency
>> scaling yet.
> 
> You don't really need frequency scaling though, you just need to set
> it to any of the OPP. And if that's still too complicated, the binding
> mandates to associate a vendor compatible, so you can base the
> information on that.

Right, even just wiring up minimal OPP support with the userspace 
governor would be really useful for SoCs like RK3328, where the GPU PLL 
defaults to something pathetic, but the most useful upper frequencies 
typically require regulator adjustment as well.

Robin.

>> So this change effectively sets GPU frequency to 432MHz on A64 when
>> using lima.
> 
> Right before the driver is probed. For all you now, that frequency can
> be changed to anything else at the very next operation and you'd end
> up in the exact same situation than the one you're trying to fix.
> 
> Maxime
> 
> _______________________________________________
> linux-arm-kernel mailing list
> linux-arm-kernel@lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
>
diff mbox series

Patch

diff --git a/arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi b/arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi
index 27e48234f1c2..0051f39b3d98 100644
--- a/arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi
+++ b/arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi
@@ -976,6 +976,9 @@  mali: gpu@1c40000 {
 			clocks = <&ccu CLK_BUS_GPU>, <&ccu CLK_GPU>;
 			clock-names = "bus", "core";
 			resets = <&ccu RST_BUS_GPU>;
+
+			assigned-clocks = <&ccu CLK_GPU>;
+			assigned-clock-rates = <432000000>;
 		};
 
 		gic: interrupt-controller@1c81000 {