[PATCH] clk: qcom: gcc-glymur: use collapse-voting for PCIe GDSCs

From: Taniya Das

Date: Wed Oct 28 2026 - 05:38:52 EST


The PCIe GDSCs can be shared with other masters and should use the APCS
collapse-vote register when updating the power state.

This is also needed to disable power domains that boot firmware enabled
through the vote register.

Describe the collapse-vote register and mask for every PCIe and PCIe PHY
GDSC.

Fixes: efe504300a17 ("clk: qcom: gcc: Add support for Global Clock Controller")
Signed-off-by: Taniya Das <taniya.das@xxxxxxxxxxxxxxxx>
---
drivers/clk/qcom/gcc-glymur.c | 26 ++++++++++++++++++++++++++
1 file changed, 26 insertions(+)

diff --git a/drivers/clk/qcom/gcc-glymur.c b/drivers/clk/qcom/gcc-glymur.c
index be18a555fe314a41e5335ce8cc100ae8ed226ccb..11be8fa7c7de7c26cc3f69279cc3d5608bbb89a7 100644
--- a/drivers/clk/qcom/gcc-glymur.c
+++ b/drivers/clk/qcom/gcc-glymur.c
@@ -7581,6 +7581,8 @@ static struct gdsc gcc_pcie_0_tunnel_gdsc = {
.en_rest_wait_val = 0x2,
.en_few_wait_val = 0x2,
.clk_dis_wait_val = 0xf,
+ .collapse_ctrl = 0x6214c,
+ .collapse_mask = BIT(2),
.pd = {
.name = "gcc_pcie_0_tunnel_gdsc",
},
@@ -7593,6 +7595,8 @@ static struct gdsc gcc_pcie_1_tunnel_gdsc = {
.en_rest_wait_val = 0x2,
.en_few_wait_val = 0x2,
.clk_dis_wait_val = 0xf,
+ .collapse_ctrl = 0x6214c,
+ .collapse_mask = BIT(1),
.pd = {
.name = "gcc_pcie_1_tunnel_gdsc",
},
@@ -7605,6 +7609,8 @@ static struct gdsc gcc_pcie_2_tunnel_gdsc = {
.en_rest_wait_val = 0x2,
.en_few_wait_val = 0x2,
.clk_dis_wait_val = 0xf,
+ .collapse_ctrl = 0x6214c,
+ .collapse_mask = BIT(3),
.pd = {
.name = "gcc_pcie_2_tunnel_gdsc",
},
@@ -7617,6 +7623,8 @@ static struct gdsc gcc_pcie_3a_gdsc = {
.en_rest_wait_val = 0x2,
.en_few_wait_val = 0x2,
.clk_dis_wait_val = 0xf,
+ .collapse_ctrl = 0x6214c,
+ .collapse_mask = BIT(4),
.pd = {
.name = "gcc_pcie_3a_gdsc",
},
@@ -7629,6 +7637,8 @@ static struct gdsc gcc_pcie_3a_phy_gdsc = {
.en_rest_wait_val = 0x2,
.en_few_wait_val = 0x2,
.clk_dis_wait_val = 0x2,
+ .collapse_ctrl = 0x6214c,
+ .collapse_mask = BIT(5),
.pd = {
.name = "gcc_pcie_3a_phy_gdsc",
},
@@ -7641,6 +7651,8 @@ static struct gdsc gcc_pcie_3b_gdsc = {
.en_rest_wait_val = 0x2,
.en_few_wait_val = 0x2,
.clk_dis_wait_val = 0xf,
+ .collapse_ctrl = 0x6214c,
+ .collapse_mask = BIT(6),
.pd = {
.name = "gcc_pcie_3b_gdsc",
},
@@ -7653,6 +7665,8 @@ static struct gdsc gcc_pcie_3b_phy_gdsc = {
.en_rest_wait_val = 0x2,
.en_few_wait_val = 0x2,
.clk_dis_wait_val = 0x2,
+ .collapse_ctrl = 0x6214c,
+ .collapse_mask = BIT(7),
.pd = {
.name = "gcc_pcie_3b_phy_gdsc",
},
@@ -7665,6 +7679,8 @@ static struct gdsc gcc_pcie_4_gdsc = {
.en_rest_wait_val = 0x2,
.en_few_wait_val = 0x2,
.clk_dis_wait_val = 0xf,
+ .collapse_ctrl = 0x6214c,
+ .collapse_mask = BIT(10),
.pd = {
.name = "gcc_pcie_4_gdsc",
},
@@ -7677,6 +7693,8 @@ static struct gdsc gcc_pcie_4_phy_gdsc = {
.en_rest_wait_val = 0x2,
.en_few_wait_val = 0x2,
.clk_dis_wait_val = 0x2,
+ .collapse_ctrl = 0x6214c,
+ .collapse_mask = BIT(11),
.pd = {
.name = "gcc_pcie_4_phy_gdsc",
},
@@ -7689,6 +7707,8 @@ static struct gdsc gcc_pcie_5_gdsc = {
.en_rest_wait_val = 0x2,
.en_few_wait_val = 0x2,
.clk_dis_wait_val = 0xf,
+ .collapse_ctrl = 0x6214c,
+ .collapse_mask = BIT(8),
.pd = {
.name = "gcc_pcie_5_gdsc",
},
@@ -7701,6 +7721,8 @@ static struct gdsc gcc_pcie_5_phy_gdsc = {
.en_rest_wait_val = 0x2,
.en_few_wait_val = 0x2,
.clk_dis_wait_val = 0x2,
+ .collapse_ctrl = 0x6214c,
+ .collapse_mask = BIT(9),
.pd = {
.name = "gcc_pcie_5_phy_gdsc",
},
@@ -7713,6 +7735,8 @@ static struct gdsc gcc_pcie_6_gdsc = {
.en_rest_wait_val = 0x2,
.en_few_wait_val = 0x2,
.clk_dis_wait_val = 0xf,
+ .collapse_ctrl = 0x6214c,
+ .collapse_mask = BIT(12),
.pd = {
.name = "gcc_pcie_6_gdsc",
},
@@ -7725,6 +7749,8 @@ static struct gdsc gcc_pcie_6_phy_gdsc = {
.en_rest_wait_val = 0x2,
.en_few_wait_val = 0x2,
.clk_dis_wait_val = 0x2,
+ .collapse_ctrl = 0x6214c,
+ .collapse_mask = BIT(13),
.pd = {
.name = "gcc_pcie_6_phy_gdsc",
},

---
base-commit: 151a134a4e6ec66f69db8750c66006f5207f7a9d
change-id: 20261028-gcc_glymur_pcie-b38a0970773d

Best regards,
--
Taniya Das <taniya.das@xxxxxxxxxxxxxxxx>