Skip to content

Commit e69386d

Browse files
Taniya Dasandersson
authored andcommitted
clk: qcom: gpucc-sa8775p: Remove the CLK_IS_CRITICAL and ALWAYS_ON flags
The GPU clocks/GDSCs have been marked critical from the clock driver but the GPU driver votes on these resources as per the HW requirement. In the case where these clocks & GDSCs are left enabled, would have power impact and also cause GPU stability/corruptions. Fix the same by removing the CLK_IS_CRITICAL for clocks and ALWAYS_ON flags for the GPU GDSCs. Fixes: 0afa16a ("clk: qcom: add the GPUCC driver for sa8775p") Signed-off-by: Taniya Das <[email protected]> Link: https://lore.kernel.org/r/20240612-sa8775p-v2-gcc-gpucc-fixes-v2-4-adcc756a23df@quicinc.com Signed-off-by: Bjorn Andersson <[email protected]>
1 parent 955606a commit e69386d

File tree

1 file changed

+11
-16
lines changed

1 file changed

+11
-16
lines changed

drivers/clk/qcom/gpucc-sa8775p.c

Lines changed: 11 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
// SPDX-License-Identifier: GPL-2.0-only
22
/*
3-
* Copyright (c) 2021-2022, Qualcomm Innovation Center, Inc. All rights reserved.
3+
* Copyright (c) 2021-2022, 2024, Qualcomm Innovation Center, Inc. All rights reserved.
44
* Copyright (c) 2023, Linaro Limited
55
*/
66

@@ -280,7 +280,7 @@ static struct clk_branch gpu_cc_ahb_clk = {
280280
&gpu_cc_hub_ahb_div_clk_src.clkr.hw,
281281
},
282282
.num_parents = 1,
283-
.flags = CLK_SET_RATE_PARENT | CLK_IS_CRITICAL,
283+
.flags = CLK_SET_RATE_PARENT,
284284
.ops = &clk_branch2_ops,
285285
},
286286
},
@@ -294,7 +294,6 @@ static struct clk_branch gpu_cc_cb_clk = {
294294
.enable_mask = BIT(0),
295295
.hw.init = &(const struct clk_init_data){
296296
.name = "gpu_cc_cb_clk",
297-
.flags = CLK_IS_CRITICAL,
298297
.ops = &clk_branch2_ops,
299298
},
300299
},
@@ -312,7 +311,7 @@ static struct clk_branch gpu_cc_crc_ahb_clk = {
312311
&gpu_cc_hub_ahb_div_clk_src.clkr.hw,
313312
},
314313
.num_parents = 1,
315-
.flags = CLK_SET_RATE_PARENT | CLK_IS_CRITICAL,
314+
.flags = CLK_SET_RATE_PARENT,
316315
.ops = &clk_branch2_ops,
317316
},
318317
},
@@ -330,7 +329,7 @@ static struct clk_branch gpu_cc_cx_ff_clk = {
330329
&gpu_cc_ff_clk_src.clkr.hw,
331330
},
332331
.num_parents = 1,
333-
.flags = CLK_SET_RATE_PARENT | CLK_IS_CRITICAL,
332+
.flags = CLK_SET_RATE_PARENT,
334333
.ops = &clk_branch2_ops,
335334
},
336335
},
@@ -348,7 +347,7 @@ static struct clk_branch gpu_cc_cx_gmu_clk = {
348347
&gpu_cc_gmu_clk_src.clkr.hw,
349348
},
350349
.num_parents = 1,
351-
.flags = CLK_SET_RATE_PARENT | CLK_IS_CRITICAL,
350+
.flags = CLK_SET_RATE_PARENT,
352351
.ops = &clk_branch2_aon_ops,
353352
},
354353
},
@@ -362,7 +361,6 @@ static struct clk_branch gpu_cc_cx_snoc_dvm_clk = {
362361
.enable_mask = BIT(0),
363362
.hw.init = &(const struct clk_init_data){
364363
.name = "gpu_cc_cx_snoc_dvm_clk",
365-
.flags = CLK_IS_CRITICAL,
366364
.ops = &clk_branch2_ops,
367365
},
368366
},
@@ -380,7 +378,7 @@ static struct clk_branch gpu_cc_cxo_aon_clk = {
380378
&gpu_cc_xo_clk_src.clkr.hw,
381379
},
382380
.num_parents = 1,
383-
.flags = CLK_SET_RATE_PARENT | CLK_IS_CRITICAL,
381+
.flags = CLK_SET_RATE_PARENT,
384382
.ops = &clk_branch2_ops,
385383
},
386384
},
@@ -398,7 +396,7 @@ static struct clk_branch gpu_cc_cxo_clk = {
398396
&gpu_cc_xo_clk_src.clkr.hw,
399397
},
400398
.num_parents = 1,
401-
.flags = CLK_SET_RATE_PARENT | CLK_IS_CRITICAL,
399+
.flags = CLK_SET_RATE_PARENT,
402400
.ops = &clk_branch2_ops,
403401
},
404402
},
@@ -416,7 +414,7 @@ static struct clk_branch gpu_cc_demet_clk = {
416414
&gpu_cc_demet_div_clk_src.clkr.hw,
417415
},
418416
.num_parents = 1,
419-
.flags = CLK_SET_RATE_PARENT | CLK_IS_CRITICAL,
417+
.flags = CLK_SET_RATE_PARENT,
420418
.ops = &clk_branch2_aon_ops,
421419
},
422420
},
@@ -430,7 +428,6 @@ static struct clk_branch gpu_cc_hlos1_vote_gpu_smmu_clk = {
430428
.enable_mask = BIT(0),
431429
.hw.init = &(const struct clk_init_data){
432430
.name = "gpu_cc_hlos1_vote_gpu_smmu_clk",
433-
.flags = CLK_IS_CRITICAL,
434431
.ops = &clk_branch2_ops,
435432
},
436433
},
@@ -448,7 +445,7 @@ static struct clk_branch gpu_cc_hub_aon_clk = {
448445
&gpu_cc_hub_clk_src.clkr.hw,
449446
},
450447
.num_parents = 1,
451-
.flags = CLK_SET_RATE_PARENT | CLK_IS_CRITICAL,
448+
.flags = CLK_SET_RATE_PARENT,
452449
.ops = &clk_branch2_aon_ops,
453450
},
454451
},
@@ -466,7 +463,7 @@ static struct clk_branch gpu_cc_hub_cx_int_clk = {
466463
&gpu_cc_hub_cx_int_div_clk_src.clkr.hw,
467464
},
468465
.num_parents = 1,
469-
.flags = CLK_SET_RATE_PARENT | CLK_IS_CRITICAL,
466+
.flags = CLK_SET_RATE_PARENT,
470467
.ops = &clk_branch2_aon_ops,
471468
},
472469
},
@@ -480,7 +477,6 @@ static struct clk_branch gpu_cc_memnoc_gfx_clk = {
480477
.enable_mask = BIT(0),
481478
.hw.init = &(const struct clk_init_data){
482479
.name = "gpu_cc_memnoc_gfx_clk",
483-
.flags = CLK_IS_CRITICAL,
484480
.ops = &clk_branch2_ops,
485481
},
486482
},
@@ -494,7 +490,6 @@ static struct clk_branch gpu_cc_sleep_clk = {
494490
.enable_mask = BIT(0),
495491
.hw.init = &(const struct clk_init_data){
496492
.name = "gpu_cc_sleep_clk",
497-
.flags = CLK_IS_CRITICAL,
498493
.ops = &clk_branch2_ops,
499494
},
500495
},
@@ -533,7 +528,7 @@ static struct gdsc cx_gdsc = {
533528
.name = "cx_gdsc",
534529
},
535530
.pwrsts = PWRSTS_OFF_ON,
536-
.flags = VOTABLE | RETAIN_FF_ENABLE | ALWAYS_ON,
531+
.flags = VOTABLE | RETAIN_FF_ENABLE,
537532
};
538533

539534
static struct gdsc gx_gdsc = {

0 commit comments

Comments
 (0)