[PATCH] arm64: dts: imx8mq: Restore VPU G2 clock to 600MHz for 4K60fps decoding

Ming Qian(OSS) ming.qian at oss.nxp.com
Sun Feb 1 21:56:47 PST 2026


Hi Alexander,

On 2/2/2026 10:41 AM, Peng Fan wrote:
> On Fri, Jan 30, 2026 at 10:09:46AM +0100, Alexander Stein wrote:
>> Am Freitag, 30. Januar 2026, 09:41:31 CET schrieb ming.qian at oss.nxp.com:
>>> From: Ming Qian <ming.qian at oss.nxp.com>
>>>
>>> The VPU G2 clock was reduced from 600MHz to 300MHz in commit
>>> b27bfc5103c7 ("arm64: dts: freescale: Fix VPU G2 clock") to address
>>> pixel errors with high-resolution HEVC postprocessor output.
>>>
>>> However, testing shows the 300MHz clock rate is insufficient for
>>> 4K60fps decoding and the original pixel errors no longer occur at
>>> 600MHz with current drivers.
>>>
>>> Test results with 3840x2160 at 60fps HEVC stream decoded to NV12
>>> (the same scenario that exhibited pixel errors previously):
>>>
>>> 300MHz performance:
>>> - Severe frame dropping throughout playback
>>> - Only 336 frames rendered in 11:53 (0.471 fps)
>>> - Continuous "A lot of buffers are being dropped" warnings
>>> - Completely unusable for 4K video
>>>
>>> 600MHz performance:
>>> - Smooth playback with only 1 frame dropped at startup
>>> - 37981 frames rendered in 10:34 (59.857 fps)
>>> - Achieves target 60fps performance
>>> - No pixel errors or artifacts observed
>>>
>>> Restore the clock to 600MHz to enable proper 4K60fps decoding
>>> capability while maintaining stability.
>>>
>>> Test pipeline:
>>>    gst-launch-1.0 filesrc location=<4K60_HEVC.mkv> ! \
>>>      video/x-matroska ! aiurdemux ! h265parse ! \
>>>      v4l2slh265dec ! video/x-raw,format=NV12 ! \
>>>      queue ! waylandsink
>>>
>>> Fixes: b27bfc5103c7 ("arm64: dts: freescale: Fix VPU G2 clock")
>>> Signed-off-by: Ming Qian <ming.qian at oss.nxp.com>
>>> ---
>>>   arch/arm64/boot/dts/freescale/imx8mq.dtsi | 2 +-
>>>   1 file changed, 1 insertion(+), 1 deletion(-)
>>>
>>> diff --git a/arch/arm64/boot/dts/freescale/imx8mq.dtsi b/arch/arm64/boot/dts/freescale/imx8mq.dtsi
>>> index 607962f807be..731142176625 100644
>>> --- a/arch/arm64/boot/dts/freescale/imx8mq.dtsi
>>> +++ b/arch/arm64/boot/dts/freescale/imx8mq.dtsi
>>> @@ -960,7 +960,7 @@ pgc_vpu: power-domain at 6 {
>>>   									 <&clk IMX8MQ_SYS1_PLL_800M>,
>>>   									 <&clk IMX8MQ_VPU_PLL>;
>>>   						assigned-clock-rates = <600000000>,
>>> -								       <300000000>,
>>> +								       <600000000>,
>>
>> If I read the Datasheet correctly 600 MHz is only supported by overdrive
>> mode (also depending on the VDD_VPU).
>> Is this frequency really correct?
> 
> G1 and BUS clk were already set as Overdrive frequency.
> 
> This change is to only upgrading G2 from 300M to 600M.
> 
> So if your question is should we downgrade all to Nominal mode, I think
> no. The freq could be override in board dts, or adding a new dts
> as arch/arm64/boot/dts/freescale/imx8mp-nominal.dtsi
> 
> Regards
> Peng
> 
>>
>> Best regards,
>> Alexander
>>

Yes, you are right, 600MHz is the Overdriver frequency.
However, to achieve the 4K 60fps target, we set the VPU to run in
overdrive mode by default, just as Peng said.

Regards,
Ming

>>>   								       <800000000>,
>>>   								       <0>;
>>>   					};
>>>
>>> base-commit: c824345288d11e269ce41b36c105715bc2286050
>>> prerequisite-patch-id: 0000000000000000000000000000000000000000
>>>
>>
>>
>>
>>



More information about the linux-arm-kernel mailing list