Message ID | 20230620-topic-sc8280_gccgdsc-v2-1-562c1428c10d@linaro.org |
---|---|
State | Accepted |
Commit | 2fd02de27054576a4a8c89302e2f77122c55e957 |
Headers | show |
Series | Fix up 8280 GCC GDSCs | expand |
On Mon, Jun 26, 2023 at 07:48:06PM +0200, Konrad Dybcio wrote: > All of the 8280's GCC GDSCs can and should use the retain registers so > as not to lose their state when entering lower power modes. > > Fixes: d65d005f9a6c ("clk: qcom: add sc8280xp GCC driver") > Signed-off-by: Konrad Dybcio <konrad.dybcio@linaro.org> Acked-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org> - Mani > --- > drivers/clk/qcom/gcc-sc8280xp.c | 21 ++++++++++++++------- > 1 file changed, 14 insertions(+), 7 deletions(-) > > diff --git a/drivers/clk/qcom/gcc-sc8280xp.c b/drivers/clk/qcom/gcc-sc8280xp.c > index b90c71637814..64bea886322d 100644 > --- a/drivers/clk/qcom/gcc-sc8280xp.c > +++ b/drivers/clk/qcom/gcc-sc8280xp.c > @@ -6761,7 +6761,7 @@ static struct gdsc pcie_0_tunnel_gdsc = { > .name = "pcie_0_tunnel_gdsc", > }, > .pwrsts = PWRSTS_OFF_ON, > - .flags = VOTABLE, > + .flags = VOTABLE | RETAIN_FF_ENABLE, > }; > > static struct gdsc pcie_1_tunnel_gdsc = { > @@ -6772,7 +6772,7 @@ static struct gdsc pcie_1_tunnel_gdsc = { > .name = "pcie_1_tunnel_gdsc", > }, > .pwrsts = PWRSTS_OFF_ON, > - .flags = VOTABLE, > + .flags = VOTABLE | RETAIN_FF_ENABLE, > }; > > /* > @@ -6787,7 +6787,7 @@ static struct gdsc pcie_2a_gdsc = { > .name = "pcie_2a_gdsc", > }, > .pwrsts = PWRSTS_OFF_ON, > - .flags = VOTABLE | ALWAYS_ON, > + .flags = VOTABLE | RETAIN_FF_ENABLE | ALWAYS_ON, > }; > > static struct gdsc pcie_2b_gdsc = { > @@ -6798,7 +6798,7 @@ static struct gdsc pcie_2b_gdsc = { > .name = "pcie_2b_gdsc", > }, > .pwrsts = PWRSTS_OFF_ON, > - .flags = VOTABLE | ALWAYS_ON, > + .flags = VOTABLE | RETAIN_FF_ENABLE | ALWAYS_ON, > }; > > static struct gdsc pcie_3a_gdsc = { > @@ -6809,7 +6809,7 @@ static struct gdsc pcie_3a_gdsc = { > .name = "pcie_3a_gdsc", > }, > .pwrsts = PWRSTS_OFF_ON, > - .flags = VOTABLE | ALWAYS_ON, > + .flags = VOTABLE | RETAIN_FF_ENABLE | ALWAYS_ON, > }; > > static struct gdsc pcie_3b_gdsc = { > @@ -6820,7 +6820,7 @@ static struct gdsc pcie_3b_gdsc = { > .name = "pcie_3b_gdsc", > }, > .pwrsts = PWRSTS_OFF_ON, > - .flags = VOTABLE | ALWAYS_ON, > + .flags = VOTABLE | RETAIN_FF_ENABLE | ALWAYS_ON, > }; > > static struct gdsc pcie_4_gdsc = { > @@ -6831,7 +6831,7 @@ static struct gdsc pcie_4_gdsc = { > .name = "pcie_4_gdsc", > }, > .pwrsts = PWRSTS_OFF_ON, > - .flags = VOTABLE | ALWAYS_ON, > + .flags = VOTABLE | RETAIN_FF_ENABLE | ALWAYS_ON, > }; > > static struct gdsc ufs_card_gdsc = { > @@ -6840,6 +6840,7 @@ static struct gdsc ufs_card_gdsc = { > .name = "ufs_card_gdsc", > }, > .pwrsts = PWRSTS_OFF_ON, > + .flags = RETAIN_FF_ENABLE, > }; > > static struct gdsc ufs_phy_gdsc = { > @@ -6848,6 +6849,7 @@ static struct gdsc ufs_phy_gdsc = { > .name = "ufs_phy_gdsc", > }, > .pwrsts = PWRSTS_OFF_ON, > + .flags = RETAIN_FF_ENABLE, > }; > > static struct gdsc usb30_mp_gdsc = { > @@ -6856,6 +6858,7 @@ static struct gdsc usb30_mp_gdsc = { > .name = "usb30_mp_gdsc", > }, > .pwrsts = PWRSTS_RET_ON, > + .flags = RETAIN_FF_ENABLE, > }; > > static struct gdsc usb30_prim_gdsc = { > @@ -6864,6 +6867,7 @@ static struct gdsc usb30_prim_gdsc = { > .name = "usb30_prim_gdsc", > }, > .pwrsts = PWRSTS_RET_ON, > + .flags = RETAIN_FF_ENABLE, > }; > > static struct gdsc usb30_sec_gdsc = { > @@ -6872,6 +6876,7 @@ static struct gdsc usb30_sec_gdsc = { > .name = "usb30_sec_gdsc", > }, > .pwrsts = PWRSTS_RET_ON, > + .flags = RETAIN_FF_ENABLE, > }; > > static struct gdsc emac_0_gdsc = { > @@ -6880,6 +6885,7 @@ static struct gdsc emac_0_gdsc = { > .name = "emac_0_gdsc", > }, > .pwrsts = PWRSTS_OFF_ON, > + .flags = RETAIN_FF_ENABLE, > }; > > static struct gdsc emac_1_gdsc = { > @@ -6888,6 +6894,7 @@ static struct gdsc emac_1_gdsc = { > .name = "emac_1_gdsc", > }, > .pwrsts = PWRSTS_OFF_ON, > + .flags = RETAIN_FF_ENABLE, > }; > > static struct clk_regmap *gcc_sc8280xp_clocks[] = { > > -- > 2.41.0 >
diff --git a/drivers/clk/qcom/gcc-sc8280xp.c b/drivers/clk/qcom/gcc-sc8280xp.c index b90c71637814..64bea886322d 100644 --- a/drivers/clk/qcom/gcc-sc8280xp.c +++ b/drivers/clk/qcom/gcc-sc8280xp.c @@ -6761,7 +6761,7 @@ static struct gdsc pcie_0_tunnel_gdsc = { .name = "pcie_0_tunnel_gdsc", }, .pwrsts = PWRSTS_OFF_ON, - .flags = VOTABLE, + .flags = VOTABLE | RETAIN_FF_ENABLE, }; static struct gdsc pcie_1_tunnel_gdsc = { @@ -6772,7 +6772,7 @@ static struct gdsc pcie_1_tunnel_gdsc = { .name = "pcie_1_tunnel_gdsc", }, .pwrsts = PWRSTS_OFF_ON, - .flags = VOTABLE, + .flags = VOTABLE | RETAIN_FF_ENABLE, }; /* @@ -6787,7 +6787,7 @@ static struct gdsc pcie_2a_gdsc = { .name = "pcie_2a_gdsc", }, .pwrsts = PWRSTS_OFF_ON, - .flags = VOTABLE | ALWAYS_ON, + .flags = VOTABLE | RETAIN_FF_ENABLE | ALWAYS_ON, }; static struct gdsc pcie_2b_gdsc = { @@ -6798,7 +6798,7 @@ static struct gdsc pcie_2b_gdsc = { .name = "pcie_2b_gdsc", }, .pwrsts = PWRSTS_OFF_ON, - .flags = VOTABLE | ALWAYS_ON, + .flags = VOTABLE | RETAIN_FF_ENABLE | ALWAYS_ON, }; static struct gdsc pcie_3a_gdsc = { @@ -6809,7 +6809,7 @@ static struct gdsc pcie_3a_gdsc = { .name = "pcie_3a_gdsc", }, .pwrsts = PWRSTS_OFF_ON, - .flags = VOTABLE | ALWAYS_ON, + .flags = VOTABLE | RETAIN_FF_ENABLE | ALWAYS_ON, }; static struct gdsc pcie_3b_gdsc = { @@ -6820,7 +6820,7 @@ static struct gdsc pcie_3b_gdsc = { .name = "pcie_3b_gdsc", }, .pwrsts = PWRSTS_OFF_ON, - .flags = VOTABLE | ALWAYS_ON, + .flags = VOTABLE | RETAIN_FF_ENABLE | ALWAYS_ON, }; static struct gdsc pcie_4_gdsc = { @@ -6831,7 +6831,7 @@ static struct gdsc pcie_4_gdsc = { .name = "pcie_4_gdsc", }, .pwrsts = PWRSTS_OFF_ON, - .flags = VOTABLE | ALWAYS_ON, + .flags = VOTABLE | RETAIN_FF_ENABLE | ALWAYS_ON, }; static struct gdsc ufs_card_gdsc = { @@ -6840,6 +6840,7 @@ static struct gdsc ufs_card_gdsc = { .name = "ufs_card_gdsc", }, .pwrsts = PWRSTS_OFF_ON, + .flags = RETAIN_FF_ENABLE, }; static struct gdsc ufs_phy_gdsc = { @@ -6848,6 +6849,7 @@ static struct gdsc ufs_phy_gdsc = { .name = "ufs_phy_gdsc", }, .pwrsts = PWRSTS_OFF_ON, + .flags = RETAIN_FF_ENABLE, }; static struct gdsc usb30_mp_gdsc = { @@ -6856,6 +6858,7 @@ static struct gdsc usb30_mp_gdsc = { .name = "usb30_mp_gdsc", }, .pwrsts = PWRSTS_RET_ON, + .flags = RETAIN_FF_ENABLE, }; static struct gdsc usb30_prim_gdsc = { @@ -6864,6 +6867,7 @@ static struct gdsc usb30_prim_gdsc = { .name = "usb30_prim_gdsc", }, .pwrsts = PWRSTS_RET_ON, + .flags = RETAIN_FF_ENABLE, }; static struct gdsc usb30_sec_gdsc = { @@ -6872,6 +6876,7 @@ static struct gdsc usb30_sec_gdsc = { .name = "usb30_sec_gdsc", }, .pwrsts = PWRSTS_RET_ON, + .flags = RETAIN_FF_ENABLE, }; static struct gdsc emac_0_gdsc = { @@ -6880,6 +6885,7 @@ static struct gdsc emac_0_gdsc = { .name = "emac_0_gdsc", }, .pwrsts = PWRSTS_OFF_ON, + .flags = RETAIN_FF_ENABLE, }; static struct gdsc emac_1_gdsc = { @@ -6888,6 +6894,7 @@ static struct gdsc emac_1_gdsc = { .name = "emac_1_gdsc", }, .pwrsts = PWRSTS_OFF_ON, + .flags = RETAIN_FF_ENABLE, }; static struct clk_regmap *gcc_sc8280xp_clocks[] = {
All of the 8280's GCC GDSCs can and should use the retain registers so as not to lose their state when entering lower power modes. Fixes: d65d005f9a6c ("clk: qcom: add sc8280xp GCC driver") Signed-off-by: Konrad Dybcio <konrad.dybcio@linaro.org> --- drivers/clk/qcom/gcc-sc8280xp.c | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-)