diff mbox series

[5/5] arm64: dts: mediatek: mt8188: Add support for Mali GPU on Panfrost

Message ID 20240527093908.97574-6-angelogioacchino.delregno@collabora.com (mailing list archive)
State New
Headers show
Series Support for MT8188 power domains, gpu, gce, vdo | expand

Commit Message

AngeloGioacchino Del Regno May 27, 2024, 9:39 a.m. UTC
Add the necessary OPP table for the GPU and also add a GPU node
to enable support for the Valhall-JM G57 MC3 found on this SoC,
using the Panfrost driver.

Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
---
 arch/arm64/boot/dts/mediatek/mt8188.dtsi | 123 +++++++++++++++++++++++
 1 file changed, 123 insertions(+)

Comments

Julien Panis May 27, 2024, 2:53 p.m. UTC | #1
On 5/27/24 11:39, AngeloGioacchino Del Regno wrote:
> Add the necessary OPP table for the GPU and also add a GPU node
> to enable support for the Valhall-JM G57 MC3 found on this SoC,
> using the Panfrost driver.
>
> Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
> ---

[...]

>   
> +		gpu: gpu@13000000 {
> +			compatible = "mediatek,mt8188-mali", "arm,mali-valhall-jm";
> +			reg = <0 0x13000000 0 0x4000>;
> +
> +			clocks = <&mfgcfg CLK_MFGCFG_BG3D>;
> +			interrupts = <GIC_SPI 383 IRQ_TYPE_LEVEL_HIGH 0>,
> +				     <GIC_SPI 382 IRQ_TYPE_LEVEL_HIGH 0>,
> +				     <GIC_SPI 381 IRQ_TYPE_LEVEL_HIGH 0>;
> +			interrupt-names = "job", "mmu", "gpu";
> +			operating-points-v2 = <&gpu_opp_table>;
> +			power-domains = <&spm MT8188_POWER_DOMAIN_MFG2>,
> +					<&spm MT8188_POWER_DOMAIN_MFG3>,
> +					<&spm MT8188_POWER_DOMAIN_MFG4>;
> +			power-domain-names = "core0", "core1", "core2";

Hi Angelo,

I think you should add something like that here:
#cooling-cells = <2>;
(the warning is raised when I run 'make dtbs_check')

Julien
AngeloGioacchino Del Regno May 28, 2024, 10:36 a.m. UTC | #2
Il 27/05/24 16:53, Julien Panis ha scritto:
> On 5/27/24 11:39, AngeloGioacchino Del Regno wrote:
>> Add the necessary OPP table for the GPU and also add a GPU node
>> to enable support for the Valhall-JM G57 MC3 found on this SoC,
>> using the Panfrost driver.
>>
>> Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
>> ---
> 
> [...]
> 
>> +        gpu: gpu@13000000 {
>> +            compatible = "mediatek,mt8188-mali", "arm,mali-valhall-jm";
>> +            reg = <0 0x13000000 0 0x4000>;
>> +
>> +            clocks = <&mfgcfg CLK_MFGCFG_BG3D>;
>> +            interrupts = <GIC_SPI 383 IRQ_TYPE_LEVEL_HIGH 0>,
>> +                     <GIC_SPI 382 IRQ_TYPE_LEVEL_HIGH 0>,
>> +                     <GIC_SPI 381 IRQ_TYPE_LEVEL_HIGH 0>;
>> +            interrupt-names = "job", "mmu", "gpu";
>> +            operating-points-v2 = <&gpu_opp_table>;
>> +            power-domains = <&spm MT8188_POWER_DOMAIN_MFG2>,
>> +                    <&spm MT8188_POWER_DOMAIN_MFG3>,
>> +                    <&spm MT8188_POWER_DOMAIN_MFG4>;
>> +            power-domain-names = "core0", "core1", "core2";
> 
> Hi Angelo,
> 
> I think you should add something like that here:
> #cooling-cells = <2>;
> (the warning is raised when I run 'make dtbs_check')
> 
> Julien
> 

I can either add it to a v2 of this series, or you can add it in your patch where
you're actually adding the thermal support.

I have no preferences about who adds it, and I agree that cooling-cells should
eventually get there, so I'll leave the choice to you :-)

Cheers,
Angelo
Julien Panis May 28, 2024, 1:13 p.m. UTC | #3
On 5/28/24 12:36, AngeloGioacchino Del Regno wrote:
> Il 27/05/24 16:53, Julien Panis ha scritto:
>> On 5/27/24 11:39, AngeloGioacchino Del Regno wrote:
>>> Add the necessary OPP table for the GPU and also add a GPU node
>>> to enable support for the Valhall-JM G57 MC3 found on this SoC,
>>> using the Panfrost driver.
>>>
>>> Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
>>> ---
>>
>> [...]
>>
>>> +        gpu: gpu@13000000 {
>>> +            compatible = "mediatek,mt8188-mali", "arm,mali-valhall-jm";
>>> +            reg = <0 0x13000000 0 0x4000>;
>>> +
>>> +            clocks = <&mfgcfg CLK_MFGCFG_BG3D>;
>>> +            interrupts = <GIC_SPI 383 IRQ_TYPE_LEVEL_HIGH 0>,
>>> +                     <GIC_SPI 382 IRQ_TYPE_LEVEL_HIGH 0>,
>>> +                     <GIC_SPI 381 IRQ_TYPE_LEVEL_HIGH 0>;
>>> +            interrupt-names = "job", "mmu", "gpu";
>>> +            operating-points-v2 = <&gpu_opp_table>;
>>> +            power-domains = <&spm MT8188_POWER_DOMAIN_MFG2>,
>>> +                    <&spm MT8188_POWER_DOMAIN_MFG3>,
>>> +                    <&spm MT8188_POWER_DOMAIN_MFG4>;
>>> +            power-domain-names = "core0", "core1", "core2";
>>
>> Hi Angelo,
>>
>> I think you should add something like that here:
>> #cooling-cells = <2>;
>> (the warning is raised when I run 'make dtbs_check')
>>
>> Julien
>>
>
> I can either add it to a v2 of this series, or you can add it in your patch where
> you're actually adding the thermal support.
>
> I have no preferences about who adds it, and I agree that cooling-cells should
> eventually get there, so I'll leave the choice to you :-)
>
> Cheers,
> Angelo

I will add it to my patch.
Julien
Chen-Yu Tsai May 29, 2024, 6:34 a.m. UTC | #4
On Mon, May 27, 2024 at 5:40 PM AngeloGioacchino Del Regno
<angelogioacchino.delregno@collabora.com> wrote:
>
> Add the necessary OPP table for the GPU and also add a GPU node
> to enable support for the Valhall-JM G57 MC3 found on this SoC,
> using the Panfrost driver.
>
> Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
> ---
>  arch/arm64/boot/dts/mediatek/mt8188.dtsi | 123 +++++++++++++++++++++++
>  1 file changed, 123 insertions(+)
>
> diff --git a/arch/arm64/boot/dts/mediatek/mt8188.dtsi b/arch/arm64/boot/dts/mediatek/mt8188.dtsi
> index 0bca6c9f15fe..29d012d28edb 100644
> --- a/arch/arm64/boot/dts/mediatek/mt8188.dtsi
> +++ b/arch/arm64/boot/dts/mediatek/mt8188.dtsi
> @@ -294,6 +294,112 @@ clk32k: oscillator-32k {
>                 clock-output-names = "clk32k";
>         };
>
> +       gpu_opp_table: opp-table-gpu {
> +               compatible = "operating-points-v2";
> +               opp-shared;
> +
> +               opp-390000000 {
> +                       opp-hz = /bits/ 64 <390000000>;
> +                       opp-microvolt = <575000>;
> +                       opp-supported-hw = <0xff>;
> +               };
> +               opp-431000000 {
> +                       opp-hz = /bits/ 64 <431000000>;
> +                       opp-microvolt = <587500>;
> +                       opp-supported-hw = <0xff>;
> +               };
> +               opp-473000000 {
> +                       opp-hz = /bits/ 64 <473000000>;
> +                       opp-microvolt = <600000>;
> +                       opp-supported-hw = <0xff>;
> +               };
> +               opp-515000000 {
> +                       opp-hz = /bits/ 64 <515000000>;
> +                       opp-microvolt = <612500>;
> +                       opp-supported-hw = <0xff>;
> +               };
> +               opp-556000000 {
> +                       opp-hz = /bits/ 64 <556000000>;
> +                       opp-microvolt = <625000>;
> +                       opp-supported-hw = <0xff>;
> +               };
> +               opp-598000000 {
> +                       opp-hz = /bits/ 64 <598000000>;
> +                       opp-microvolt = <637500>;
> +                       opp-supported-hw = <0xff>;
> +               };
> +               opp-640000000 {
> +                       opp-hz = /bits/ 64 <640000000>;
> +                       opp-microvolt = <650000>;
> +                       opp-supported-hw = <0xff>;
> +               };
> +               opp-670000000 {
> +                       opp-hz = /bits/ 64 <670000000>;
> +                       opp-microvolt = <662500>;
> +                       opp-supported-hw = <0xff>;
> +               };
> +               opp-700000000 {
> +                       opp-hz = /bits/ 64 <700000000>;
> +                       opp-microvolt = <675000>;
> +                       opp-supported-hw = <0xff>;
> +               };
> +               opp-730000000 {
> +                       opp-hz = /bits/ 64 <730000000>;
> +                       opp-microvolt = <687500>;
> +                       opp-supported-hw = <0xff>;
> +               };
> +               opp-760000000 {
> +                       opp-hz = /bits/ 64 <760000000>;
> +                       opp-microvolt = <700000>;
> +                       opp-supported-hw = <0xff>;
> +               };
> +               opp-790000000 {
> +                       opp-hz = /bits/ 64 <790000000>;
> +                       opp-microvolt = <712500>;
> +                       opp-supported-hw = <0xff>;
> +               };
> +               opp-835000000 {
> +                       opp-hz = /bits/ 64 <835000000>;
> +                       opp-microvolt = <731250>;
> +                       opp-supported-hw = <0xff>;
> +               };
> +               opp-880000000 {
> +                       opp-hz = /bits/ 64 <880000000>;
> +                       opp-microvolt = <750000>;
> +                       opp-supported-hw = <0xff>;
> +               };
> +               opp-915000000 {
> +                       opp-hz = /bits/ 64 <915000000>;
> +                       opp-microvolt = <775000>;
> +                       opp-supported-hw = <0x8f>;
> +               };
> +               opp-915000000-5 {
> +                       opp-hz = /bits/ 64 <915000000>;
> +                       opp-microvolt = <762500>;
> +                       opp-supported-hw = <0x30>;
> +               };
> +               opp-915000000-6 {
> +                       opp-hz = /bits/ 64 <915000000>;
> +                       opp-microvolt = <750000>;
> +                       opp-supported-hw = <0x70>;
> +               };
> +               opp-950000000 {
> +                       opp-hz = /bits/ 64 <950000000>;
> +                       opp-microvolt = <800000>;
> +                       opp-supported-hw = <0x8f>;
> +               };
> +               opp-950000000-5 {
> +                       opp-hz = /bits/ 64 <950000000>;
> +                       opp-microvolt = <775000>;
> +                       opp-supported-hw = <0x30>;
> +               };
> +               opp-950000000-6 {
> +                       opp-hz = /bits/ 64 <950000000>;
> +                       opp-microvolt = <750000>;
> +                       opp-supported-hw = <0x70>;
> +               };
> +       };
> +
>         pmu-a55 {
>                 compatible = "arm,cortex-a55-pmu";
>                 interrupt-parent = <&gic>;
> @@ -1167,6 +1273,23 @@ imp_iic_wrap_en: clock-controller@11ec2000 {
>                         #clock-cells = <1>;
>                 };
>
> +               gpu: gpu@13000000 {
> +                       compatible = "mediatek,mt8188-mali", "arm,mali-valhall-jm";
> +                       reg = <0 0x13000000 0 0x4000>;
> +
> +                       clocks = <&mfgcfg CLK_MFGCFG_BG3D>;
> +                       interrupts = <GIC_SPI 383 IRQ_TYPE_LEVEL_HIGH 0>,
> +                                    <GIC_SPI 382 IRQ_TYPE_LEVEL_HIGH 0>,
> +                                    <GIC_SPI 381 IRQ_TYPE_LEVEL_HIGH 0>;
> +                       interrupt-names = "job", "mmu", "gpu";
> +                       operating-points-v2 = <&gpu_opp_table>;
> +                       power-domains = <&spm MT8188_POWER_DOMAIN_MFG2>,
> +                                       <&spm MT8188_POWER_DOMAIN_MFG3>,
> +                                       <&spm MT8188_POWER_DOMAIN_MFG4>;
> +                       power-domain-names = "core0", "core1", "core2";
> +                       status = "disabled";
> +               };
> +

This block no longer applies cleanly on the MTK tree because of
"arm64: dts: mediatek: mt8188: add lvts definitions" being applied.

ChenYu

>                 mfgcfg: clock-controller@13fbf000 {
>                         compatible = "mediatek,mt8188-mfgcfg";
>                         reg = <0 0x13fbf000 0 0x1000>;
> --
> 2.45.1
>
>
AngeloGioacchino Del Regno May 29, 2024, 8:16 a.m. UTC | #5
Il 29/05/24 08:34, Chen-Yu Tsai ha scritto:
> On Mon, May 27, 2024 at 5:40 PM AngeloGioacchino Del Regno
> <angelogioacchino.delregno@collabora.com> wrote:
>>
>> Add the necessary OPP table for the GPU and also add a GPU node
>> to enable support for the Valhall-JM G57 MC3 found on this SoC,
>> using the Panfrost driver.
>>
>> Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
>> ---
>>   arch/arm64/boot/dts/mediatek/mt8188.dtsi | 123 +++++++++++++++++++++++
>>   1 file changed, 123 insertions(+)
>>
>> diff --git a/arch/arm64/boot/dts/mediatek/mt8188.dtsi b/arch/arm64/boot/dts/mediatek/mt8188.dtsi
>> index 0bca6c9f15fe..29d012d28edb 100644
>> --- a/arch/arm64/boot/dts/mediatek/mt8188.dtsi
>> +++ b/arch/arm64/boot/dts/mediatek/mt8188.dtsi
>> @@ -294,6 +294,112 @@ clk32k: oscillator-32k {
>>                  clock-output-names = "clk32k";
>>          };
>>
>> +       gpu_opp_table: opp-table-gpu {
>> +               compatible = "operating-points-v2";
>> +               opp-shared;
>> +
>> +               opp-390000000 {
>> +                       opp-hz = /bits/ 64 <390000000>;
>> +                       opp-microvolt = <575000>;
>> +                       opp-supported-hw = <0xff>;
>> +               };
>> +               opp-431000000 {
>> +                       opp-hz = /bits/ 64 <431000000>;
>> +                       opp-microvolt = <587500>;
>> +                       opp-supported-hw = <0xff>;
>> +               };
>> +               opp-473000000 {
>> +                       opp-hz = /bits/ 64 <473000000>;
>> +                       opp-microvolt = <600000>;
>> +                       opp-supported-hw = <0xff>;
>> +               };
>> +               opp-515000000 {
>> +                       opp-hz = /bits/ 64 <515000000>;
>> +                       opp-microvolt = <612500>;
>> +                       opp-supported-hw = <0xff>;
>> +               };
>> +               opp-556000000 {
>> +                       opp-hz = /bits/ 64 <556000000>;
>> +                       opp-microvolt = <625000>;
>> +                       opp-supported-hw = <0xff>;
>> +               };
>> +               opp-598000000 {
>> +                       opp-hz = /bits/ 64 <598000000>;
>> +                       opp-microvolt = <637500>;
>> +                       opp-supported-hw = <0xff>;
>> +               };
>> +               opp-640000000 {
>> +                       opp-hz = /bits/ 64 <640000000>;
>> +                       opp-microvolt = <650000>;
>> +                       opp-supported-hw = <0xff>;
>> +               };
>> +               opp-670000000 {
>> +                       opp-hz = /bits/ 64 <670000000>;
>> +                       opp-microvolt = <662500>;
>> +                       opp-supported-hw = <0xff>;
>> +               };
>> +               opp-700000000 {
>> +                       opp-hz = /bits/ 64 <700000000>;
>> +                       opp-microvolt = <675000>;
>> +                       opp-supported-hw = <0xff>;
>> +               };
>> +               opp-730000000 {
>> +                       opp-hz = /bits/ 64 <730000000>;
>> +                       opp-microvolt = <687500>;
>> +                       opp-supported-hw = <0xff>;
>> +               };
>> +               opp-760000000 {
>> +                       opp-hz = /bits/ 64 <760000000>;
>> +                       opp-microvolt = <700000>;
>> +                       opp-supported-hw = <0xff>;
>> +               };
>> +               opp-790000000 {
>> +                       opp-hz = /bits/ 64 <790000000>;
>> +                       opp-microvolt = <712500>;
>> +                       opp-supported-hw = <0xff>;
>> +               };
>> +               opp-835000000 {
>> +                       opp-hz = /bits/ 64 <835000000>;
>> +                       opp-microvolt = <731250>;
>> +                       opp-supported-hw = <0xff>;
>> +               };
>> +               opp-880000000 {
>> +                       opp-hz = /bits/ 64 <880000000>;
>> +                       opp-microvolt = <750000>;
>> +                       opp-supported-hw = <0xff>;
>> +               };
>> +               opp-915000000 {
>> +                       opp-hz = /bits/ 64 <915000000>;
>> +                       opp-microvolt = <775000>;
>> +                       opp-supported-hw = <0x8f>;
>> +               };
>> +               opp-915000000-5 {
>> +                       opp-hz = /bits/ 64 <915000000>;
>> +                       opp-microvolt = <762500>;
>> +                       opp-supported-hw = <0x30>;
>> +               };
>> +               opp-915000000-6 {
>> +                       opp-hz = /bits/ 64 <915000000>;
>> +                       opp-microvolt = <750000>;
>> +                       opp-supported-hw = <0x70>;
>> +               };
>> +               opp-950000000 {
>> +                       opp-hz = /bits/ 64 <950000000>;
>> +                       opp-microvolt = <800000>;
>> +                       opp-supported-hw = <0x8f>;
>> +               };
>> +               opp-950000000-5 {
>> +                       opp-hz = /bits/ 64 <950000000>;
>> +                       opp-microvolt = <775000>;
>> +                       opp-supported-hw = <0x30>;
>> +               };
>> +               opp-950000000-6 {
>> +                       opp-hz = /bits/ 64 <950000000>;
>> +                       opp-microvolt = <750000>;
>> +                       opp-supported-hw = <0x70>;
>> +               };
>> +       };
>> +
>>          pmu-a55 {
>>                  compatible = "arm,cortex-a55-pmu";
>>                  interrupt-parent = <&gic>;
>> @@ -1167,6 +1273,23 @@ imp_iic_wrap_en: clock-controller@11ec2000 {
>>                          #clock-cells = <1>;
>>                  };
>>
>> +               gpu: gpu@13000000 {
>> +                       compatible = "mediatek,mt8188-mali", "arm,mali-valhall-jm";
>> +                       reg = <0 0x13000000 0 0x4000>;
>> +
>> +                       clocks = <&mfgcfg CLK_MFGCFG_BG3D>;
>> +                       interrupts = <GIC_SPI 383 IRQ_TYPE_LEVEL_HIGH 0>,
>> +                                    <GIC_SPI 382 IRQ_TYPE_LEVEL_HIGH 0>,
>> +                                    <GIC_SPI 381 IRQ_TYPE_LEVEL_HIGH 0>;
>> +                       interrupt-names = "job", "mmu", "gpu";
>> +                       operating-points-v2 = <&gpu_opp_table>;
>> +                       power-domains = <&spm MT8188_POWER_DOMAIN_MFG2>,
>> +                                       <&spm MT8188_POWER_DOMAIN_MFG3>,
>> +                                       <&spm MT8188_POWER_DOMAIN_MFG4>;
>> +                       power-domain-names = "core0", "core1", "core2";
>> +                       status = "disabled";
>> +               };
>> +
> 
> This block no longer applies cleanly on the MTK tree because of
> "arm64: dts: mediatek: mt8188: add lvts definitions" being applied.
> 

Thanks for checking - it's okay, it's about reordering the two series anyway.
This was sent to unblock Julien's work with LVTS sensors, and I was expecting
a new version of the patch that you just mentioned anyway.

So, the patch that is in the MediaTek trees will be replaced by his new ones ASAP
and merge issues will fly away, since Julien rebased his series on top of this.

Cheers!
Angelo

> ChenYu
> 
>>                  mfgcfg: clock-controller@13fbf000 {
>>                          compatible = "mediatek,mt8188-mfgcfg";
>>                          reg = <0 0x13fbf000 0 0x1000>;
>> --
>> 2.45.1
>>
>>
diff mbox series

Patch

diff --git a/arch/arm64/boot/dts/mediatek/mt8188.dtsi b/arch/arm64/boot/dts/mediatek/mt8188.dtsi
index 0bca6c9f15fe..29d012d28edb 100644
--- a/arch/arm64/boot/dts/mediatek/mt8188.dtsi
+++ b/arch/arm64/boot/dts/mediatek/mt8188.dtsi
@@ -294,6 +294,112 @@  clk32k: oscillator-32k {
 		clock-output-names = "clk32k";
 	};
 
+	gpu_opp_table: opp-table-gpu {
+		compatible = "operating-points-v2";
+		opp-shared;
+
+		opp-390000000 {
+			opp-hz = /bits/ 64 <390000000>;
+			opp-microvolt = <575000>;
+			opp-supported-hw = <0xff>;
+		};
+		opp-431000000 {
+			opp-hz = /bits/ 64 <431000000>;
+			opp-microvolt = <587500>;
+			opp-supported-hw = <0xff>;
+		};
+		opp-473000000 {
+			opp-hz = /bits/ 64 <473000000>;
+			opp-microvolt = <600000>;
+			opp-supported-hw = <0xff>;
+		};
+		opp-515000000 {
+			opp-hz = /bits/ 64 <515000000>;
+			opp-microvolt = <612500>;
+			opp-supported-hw = <0xff>;
+		};
+		opp-556000000 {
+			opp-hz = /bits/ 64 <556000000>;
+			opp-microvolt = <625000>;
+			opp-supported-hw = <0xff>;
+		};
+		opp-598000000 {
+			opp-hz = /bits/ 64 <598000000>;
+			opp-microvolt = <637500>;
+			opp-supported-hw = <0xff>;
+		};
+		opp-640000000 {
+			opp-hz = /bits/ 64 <640000000>;
+			opp-microvolt = <650000>;
+			opp-supported-hw = <0xff>;
+		};
+		opp-670000000 {
+			opp-hz = /bits/ 64 <670000000>;
+			opp-microvolt = <662500>;
+			opp-supported-hw = <0xff>;
+		};
+		opp-700000000 {
+			opp-hz = /bits/ 64 <700000000>;
+			opp-microvolt = <675000>;
+			opp-supported-hw = <0xff>;
+		};
+		opp-730000000 {
+			opp-hz = /bits/ 64 <730000000>;
+			opp-microvolt = <687500>;
+			opp-supported-hw = <0xff>;
+		};
+		opp-760000000 {
+			opp-hz = /bits/ 64 <760000000>;
+			opp-microvolt = <700000>;
+			opp-supported-hw = <0xff>;
+		};
+		opp-790000000 {
+			opp-hz = /bits/ 64 <790000000>;
+			opp-microvolt = <712500>;
+			opp-supported-hw = <0xff>;
+		};
+		opp-835000000 {
+			opp-hz = /bits/ 64 <835000000>;
+			opp-microvolt = <731250>;
+			opp-supported-hw = <0xff>;
+		};
+		opp-880000000 {
+			opp-hz = /bits/ 64 <880000000>;
+			opp-microvolt = <750000>;
+			opp-supported-hw = <0xff>;
+		};
+		opp-915000000 {
+			opp-hz = /bits/ 64 <915000000>;
+			opp-microvolt = <775000>;
+			opp-supported-hw = <0x8f>;
+		};
+		opp-915000000-5 {
+			opp-hz = /bits/ 64 <915000000>;
+			opp-microvolt = <762500>;
+			opp-supported-hw = <0x30>;
+		};
+		opp-915000000-6 {
+			opp-hz = /bits/ 64 <915000000>;
+			opp-microvolt = <750000>;
+			opp-supported-hw = <0x70>;
+		};
+		opp-950000000 {
+			opp-hz = /bits/ 64 <950000000>;
+			opp-microvolt = <800000>;
+			opp-supported-hw = <0x8f>;
+		};
+		opp-950000000-5 {
+			opp-hz = /bits/ 64 <950000000>;
+			opp-microvolt = <775000>;
+			opp-supported-hw = <0x30>;
+		};
+		opp-950000000-6 {
+			opp-hz = /bits/ 64 <950000000>;
+			opp-microvolt = <750000>;
+			opp-supported-hw = <0x70>;
+		};
+	};
+
 	pmu-a55 {
 		compatible = "arm,cortex-a55-pmu";
 		interrupt-parent = <&gic>;
@@ -1167,6 +1273,23 @@  imp_iic_wrap_en: clock-controller@11ec2000 {
 			#clock-cells = <1>;
 		};
 
+		gpu: gpu@13000000 {
+			compatible = "mediatek,mt8188-mali", "arm,mali-valhall-jm";
+			reg = <0 0x13000000 0 0x4000>;
+
+			clocks = <&mfgcfg CLK_MFGCFG_BG3D>;
+			interrupts = <GIC_SPI 383 IRQ_TYPE_LEVEL_HIGH 0>,
+				     <GIC_SPI 382 IRQ_TYPE_LEVEL_HIGH 0>,
+				     <GIC_SPI 381 IRQ_TYPE_LEVEL_HIGH 0>;
+			interrupt-names = "job", "mmu", "gpu";
+			operating-points-v2 = <&gpu_opp_table>;
+			power-domains = <&spm MT8188_POWER_DOMAIN_MFG2>,
+					<&spm MT8188_POWER_DOMAIN_MFG3>,
+					<&spm MT8188_POWER_DOMAIN_MFG4>;
+			power-domain-names = "core0", "core1", "core2";
+			status = "disabled";
+		};
+
 		mfgcfg: clock-controller@13fbf000 {
 			compatible = "mediatek,mt8188-mfgcfg";
 			reg = <0 0x13fbf000 0 0x1000>;