On 4/18/26 5:34 PM, Erikas Bitovtas wrote:
>
>
> On 4/16/26 5:31 PM, Bryan O'Donoghue wrote:
>> On 16/04/2026 14:43, Erikas Bitovtas wrote:
>>> + video-decoder {
>>> + compatible = "venus-decoder";
>>> + clocks = <&gcc GCC_VENUS0_CORE0_VCODEC0_CLK>,
>>> + <&gcc GCC_VENUS0_CORE1_VCODEC0_CLK>;
>>> + clock-names = "core0", "core1";
>>> + power-domains = <&gcc VENUS_CORE0_GDSC>,
>>> + <&gcc VENUS_CORE1_GDSC>;
>>
>> This doesn't make sense.
>>
>> You have two cores => assign one to encoder and the other to decoder.
>>
>
> This way during decode only one of the cores gets powered up instead of
> both, resulting in power collapse fails.
> Core clocks and power domains can be moved into Venus node instead of
> sub-nodes, like this:
> venus: video-codec@1d00000 {
> compatible = "qcom,msm8939-venus";
> reg = <0x01d00000 0xff000>;
> interrupts = <GIC_SPI 44 IRQ_TYPE_LEVEL_HIGH>;
> clocks = <&gcc GCC_VENUS0_VCODEC0_CLK>,
> <&gcc GCC_VENUS0_AHB_CLK>,
> <&gcc GCC_VENUS0_AXI_CLK>,
> <&gcc GCC_VENUS0_CORE0_VCODEC0_CLK>,
> <&gcc GCC_VENUS0_CORE1_VCODEC0_CLK>;
> clock-names = "core",
> "iface",
> "bus",
> "core0",
> "core1";
> power-domains = <&gcc VENUS_GDSC>,
> <&gcc VENUS_C0RE0_GDSC>,
> <&gcc VENUS_CORE1_GDSC>;
> power-domain-names = "venus", "core0", "core1";
> };
>
> And then they can be powered up regardless if the session is for
> encoding or decoding.
> My first question was actually about this - whether these cores should
> be powered up only decoding or for encoding as well. Bus configs
> downstream signify they are only for decoding:
> https://github.com/msm8916-mainline/linux-downstream/blob/b20608408caff817ec874f325127b07609fbaeb8/arch/arm/boot/dts/qcom/msm8939-common.dtsi#L1589
> https://github.com/msm8916-mainline/linux-downstream/blob/b20608408caff817ec874f325127b07609fbaeb8/Documentation/devicetree/bindings/media/video/msm-vidc.txt#L35
> Unfortunately, I couldn't test encoding on my device. It appears to be
> broken.
Do we know whether it works on msm8916? (+Stephan)
Konrad