Skip to content

Commit be208c0

Browse files
Taniya Dasandersson
authored andcommitted
clk: qcom: gcc-sa8775p: Update the GDSC wait_val fields and flags
Update the GDSC wait_val fields as per the default hardware values as otherwise they would lead to GDSC FSM state to be stuck and causing failures to power on/off. Also add the GDSC flags as applicable and add support to control PCIE GDSC's using collapse vote registers. Fixes: 08c51ce ("clk: qcom: add the GCC driver for sa8775p") Signed-off-by: Taniya Das <[email protected]> Link: https://lore.kernel.org/r/20240612-sa8775p-v2-gcc-gpucc-fixes-v2-2-adcc756a23df@quicinc.com Signed-off-by: Bjorn Andersson <[email protected]>
1 parent d3b3384 commit be208c0

File tree

1 file changed

+40
-0
lines changed

1 file changed

+40
-0
lines changed

drivers/clk/qcom/gcc-sa8775p.c

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4203,74 +4203,114 @@ static struct clk_branch gcc_video_axi1_clk = {
42034203

42044204
static struct gdsc pcie_0_gdsc = {
42054205
.gdscr = 0xa9004,
4206+
.collapse_ctrl = 0x4b104,
4207+
.collapse_mask = BIT(0),
4208+
.en_rest_wait_val = 0x2,
4209+
.en_few_wait_val = 0x2,
4210+
.clk_dis_wait_val = 0xf,
42064211
.pd = {
42074212
.name = "pcie_0_gdsc",
42084213
},
42094214
.pwrsts = PWRSTS_OFF_ON,
4215+
.flags = VOTABLE | RETAIN_FF_ENABLE | POLL_CFG_GDSCR,
42104216
};
42114217

42124218
static struct gdsc pcie_1_gdsc = {
42134219
.gdscr = 0x77004,
4220+
.collapse_ctrl = 0x4b104,
4221+
.collapse_mask = BIT(1),
4222+
.en_rest_wait_val = 0x2,
4223+
.en_few_wait_val = 0x2,
4224+
.clk_dis_wait_val = 0xf,
42144225
.pd = {
42154226
.name = "pcie_1_gdsc",
42164227
},
42174228
.pwrsts = PWRSTS_OFF_ON,
4229+
.flags = VOTABLE | RETAIN_FF_ENABLE | POLL_CFG_GDSCR,
42184230
};
42194231

42204232
static struct gdsc ufs_card_gdsc = {
42214233
.gdscr = 0x81004,
4234+
.en_rest_wait_val = 0x2,
4235+
.en_few_wait_val = 0x2,
4236+
.clk_dis_wait_val = 0xf,
42224237
.pd = {
42234238
.name = "ufs_card_gdsc",
42244239
},
42254240
.pwrsts = PWRSTS_OFF_ON,
4241+
.flags = RETAIN_FF_ENABLE | POLL_CFG_GDSCR,
42264242
};
42274243

42284244
static struct gdsc ufs_phy_gdsc = {
42294245
.gdscr = 0x83004,
4246+
.en_rest_wait_val = 0x2,
4247+
.en_few_wait_val = 0x2,
4248+
.clk_dis_wait_val = 0xf,
42304249
.pd = {
42314250
.name = "ufs_phy_gdsc",
42324251
},
42334252
.pwrsts = PWRSTS_OFF_ON,
4253+
.flags = RETAIN_FF_ENABLE | POLL_CFG_GDSCR,
42344254
};
42354255

42364256
static struct gdsc usb20_prim_gdsc = {
42374257
.gdscr = 0x1c004,
4258+
.en_rest_wait_val = 0x2,
4259+
.en_few_wait_val = 0x2,
4260+
.clk_dis_wait_val = 0xf,
42384261
.pd = {
42394262
.name = "usb20_prim_gdsc",
42404263
},
42414264
.pwrsts = PWRSTS_OFF_ON,
4265+
.flags = RETAIN_FF_ENABLE | POLL_CFG_GDSCR,
42424266
};
42434267

42444268
static struct gdsc usb30_prim_gdsc = {
42454269
.gdscr = 0x1b004,
4270+
.en_rest_wait_val = 0x2,
4271+
.en_few_wait_val = 0x2,
4272+
.clk_dis_wait_val = 0xf,
42464273
.pd = {
42474274
.name = "usb30_prim_gdsc",
42484275
},
42494276
.pwrsts = PWRSTS_OFF_ON,
4277+
.flags = RETAIN_FF_ENABLE | POLL_CFG_GDSCR,
42504278
};
42514279

42524280
static struct gdsc usb30_sec_gdsc = {
42534281
.gdscr = 0x2f004,
4282+
.en_rest_wait_val = 0x2,
4283+
.en_few_wait_val = 0x2,
4284+
.clk_dis_wait_val = 0xf,
42544285
.pd = {
42554286
.name = "usb30_sec_gdsc",
42564287
},
42574288
.pwrsts = PWRSTS_OFF_ON,
4289+
.flags = RETAIN_FF_ENABLE | POLL_CFG_GDSCR,
42584290
};
42594291

42604292
static struct gdsc emac0_gdsc = {
42614293
.gdscr = 0xb6004,
4294+
.en_rest_wait_val = 0x2,
4295+
.en_few_wait_val = 0x2,
4296+
.clk_dis_wait_val = 0xf,
42624297
.pd = {
42634298
.name = "emac0_gdsc",
42644299
},
42654300
.pwrsts = PWRSTS_OFF_ON,
4301+
.flags = RETAIN_FF_ENABLE | POLL_CFG_GDSCR,
42664302
};
42674303

42684304
static struct gdsc emac1_gdsc = {
42694305
.gdscr = 0xb4004,
4306+
.en_rest_wait_val = 0x2,
4307+
.en_few_wait_val = 0x2,
4308+
.clk_dis_wait_val = 0xf,
42704309
.pd = {
42714310
.name = "emac1_gdsc",
42724311
},
42734312
.pwrsts = PWRSTS_OFF_ON,
4313+
.flags = RETAIN_FF_ENABLE | POLL_CFG_GDSCR,
42744314
};
42754315

42764316
static struct clk_regmap *gcc_sa8775p_clocks[] = {

0 commit comments

Comments
 (0)