Re: [PATCH v2] clk: qcom: mmcc-msm8998: fix venus clock issue

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, Apr 10, 2024 at 01:13:17PM +0200, Marc Gonzalez wrote:
> Video decoder (venus) was broken on msm8998.

Could you please express something about in what way it was broken, or
how this manifested itself etc?

> 
> PH found crude work-around:

Would be nice if these names are spelled out, if you'd like to give
credit to the individuals.

> Drop venus_sys_set_power_control() call.
> 
> Bryan suggested proper fix:
> Set required register offsets in venus GDSC structs.
> Set HW_CTRL flag.
> 
> GDSC = Globally Distributed Switch Controller
> 
> Use same code as mmcc-msm8996 with:
> s/venus_gdsc/video_top_gdsc/
> s/venus_core0_gdsc/video_subcore0_gdsc/
> s/venus_core1_gdsc/video_subcore1_gdsc/
> 
> https://git.codelinaro.org/clo/la/kernel/msm-4.4/-/blob/caf_migration/kernel.lnx.4.4.r38-rel/include/dt-bindings/clock/msm-clocks-hwio-8996.h
> https://git.codelinaro.org/clo/la/kernel/msm-4.4/-/blob/caf_migration/kernel.lnx.4.4.r38-rel/include/dt-bindings/clock/msm-clocks-hwio-8998.h
> 
> 0x1024 = MMSS_VIDEO GDSCR (undocumented)
> 0x1028 = MMSS_VIDEO_CORE_CBCR
> 0x1030 = MMSS_VIDEO_AHB_CBCR
> 0x1034 = MMSS_VIDEO_AXI_CBCR
> 0x1038 = MMSS_VIDEO_MAXI_CBCR
> 0x1040 = MMSS_VIDEO_SUBCORE0 GDSCR (undocumented)
> 0x1044 = MMSS_VIDEO_SUBCORE1 GDSCR (undocumented)
> 0x1048 = MMSS_VIDEO_SUBCORE0_CBCR
> 0x104c = MMSS_VIDEO_SUBCORE1_CBCR
> 

Would you mind providing me a Fixes tag as well?

Thanks,
Bjorn

> Suggested-by: Bryan O'Donoghue <bryan.odonoghue@xxxxxxxxxx>
> Reviewed-by: Bryan O'Donoghue <bryan.odonoghue@xxxxxxxxxx>
> Signed-off-by: Marc Gonzalez <mgonzalez@xxxxxxxxxx>
> ---
>  drivers/clk/qcom/mmcc-msm8998.c | 8 ++++++++
>  1 file changed, 8 insertions(+)
> 
> diff --git a/drivers/clk/qcom/mmcc-msm8998.c b/drivers/clk/qcom/mmcc-msm8998.c
> index 1180e48c687ac..275fb3b71ede4 100644
> --- a/drivers/clk/qcom/mmcc-msm8998.c
> +++ b/drivers/clk/qcom/mmcc-msm8998.c
> @@ -2535,6 +2535,8 @@ static struct clk_branch vmem_ahb_clk = {
>  
>  static struct gdsc video_top_gdsc = {
>  	.gdscr = 0x1024,
> +	.cxcs = (unsigned int []){ 0x1028, 0x1034, 0x1038 },
> +	.cxc_count = 3,
>  	.pd = {
>  		.name = "video_top",
>  	},
> @@ -2543,20 +2545,26 @@ static struct gdsc video_top_gdsc = {
>  
>  static struct gdsc video_subcore0_gdsc = {
>  	.gdscr = 0x1040,
> +	.cxcs = (unsigned int []){ 0x1048 },
> +	.cxc_count = 1,
>  	.pd = {
>  		.name = "video_subcore0",
>  	},
>  	.parent = &video_top_gdsc.pd,
>  	.pwrsts = PWRSTS_OFF_ON,
> +	.flags = HW_CTRL,
>  };
>  
>  static struct gdsc video_subcore1_gdsc = {
>  	.gdscr = 0x1044,
> +	.cxcs = (unsigned int []){ 0x104c },
> +	.cxc_count = 1,
>  	.pd = {
>  		.name = "video_subcore1",
>  	},
>  	.parent = &video_top_gdsc.pd,
>  	.pwrsts = PWRSTS_OFF_ON,
> +	.flags = HW_CTRL,
>  };
>  
>  static struct gdsc mdss_gdsc = {
> -- 
> 2.34.1
> 




[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [Linux for Sparc]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux