.../bindings/clock/qcom,sm7635-camcc.yaml | 51 + .../bindings/clock/qcom,sm7635-dispcc.yaml | 63 + .../devicetree/bindings/clock/qcom,sm7635-gcc.yaml | 62 + .../bindings/clock/qcom,sm7635-videocc.yaml | 53 + .../bindings/clock/qcom,sm8450-gpucc.yaml | 2 + drivers/clk/qcom/Kconfig | 47 + drivers/clk/qcom/Makefile | 5 + drivers/clk/qcom/camcc-sm7635.c | 2148 +++++++++++++ drivers/clk/qcom/dispcc-sm7635.c | 962 ++++++ drivers/clk/qcom/gcc-sm7635.c | 3227 ++++++++++++++++++++ drivers/clk/qcom/gpucc-sm7635.c | 563 ++++ drivers/clk/qcom/videocc-sm7635.c | 412 +++ include/dt-bindings/clock/qcom,sm7635-camcc.h | 131 + include/dt-bindings/clock/qcom,sm7635-dispcc.h | 61 + include/dt-bindings/clock/qcom,sm7635-gcc.h | 210 ++ include/dt-bindings/clock/qcom,sm7635-gpucc.h | 56 + include/dt-bindings/clock/qcom,sm7635-videocc.h | 36 + 17 files changed, 8089 insertions(+)
Document and add the clock drivers for GCC, CAMCC, DISPCC, GPUCC and VIDEOCC on the SM7635 SoC. Signed-off-by: Luca Weiss <luca.weiss@fairphone.com> --- Luca Weiss (10): dt-bindings: clock: qcom: document the SM7635 Global Clock Controller clk: qcom: Add Global Clock controller (GCC) driver for SM7635 dt-bindings: clock: qcom: document the SM7635 Camera Clock Controller clk: qcom: Add Camera Clock controller (CAMCC) driver for SM7635 dt-bindings: clock: qcom: document the SM7635 Display Clock Controller clk: qcom: Add Display Clock controller (DISPCC) driver for SM7635 dt-bindings: clock: qcom: document the SM7635 GPU Clock Controller clk: qcom: Add Graphics Clock controller (GPUCC) driver for SM7635 dt-bindings: clock: qcom: document the SM7635 Video Clock Controller clk: qcom: Add Video Clock controller (VIDEOCC) driver for SM7635 .../bindings/clock/qcom,sm7635-camcc.yaml | 51 + .../bindings/clock/qcom,sm7635-dispcc.yaml | 63 + .../devicetree/bindings/clock/qcom,sm7635-gcc.yaml | 62 + .../bindings/clock/qcom,sm7635-videocc.yaml | 53 + .../bindings/clock/qcom,sm8450-gpucc.yaml | 2 + drivers/clk/qcom/Kconfig | 47 + drivers/clk/qcom/Makefile | 5 + drivers/clk/qcom/camcc-sm7635.c | 2148 +++++++++++++ drivers/clk/qcom/dispcc-sm7635.c | 962 ++++++ drivers/clk/qcom/gcc-sm7635.c | 3227 ++++++++++++++++++++ drivers/clk/qcom/gpucc-sm7635.c | 563 ++++ drivers/clk/qcom/videocc-sm7635.c | 412 +++ include/dt-bindings/clock/qcom,sm7635-camcc.h | 131 + include/dt-bindings/clock/qcom,sm7635-dispcc.h | 61 + include/dt-bindings/clock/qcom,sm7635-gcc.h | 210 ++ include/dt-bindings/clock/qcom,sm7635-gpucc.h | 56 + include/dt-bindings/clock/qcom,sm7635-videocc.h | 36 + 17 files changed, 8089 insertions(+) --- base-commit: 19272b37aa4f83ca52bdf9c16d5d81bdd1354494 change-id: 20250620-sm7635-clocks-7699d338dc37 Best regards, -- Luca Weiss <luca.weiss@fairphone.com>
On 6/25/25 11:12 AM, Luca Weiss wrote: > Document and add the clock drivers for GCC, CAMCC, DISPCC, GPUCC and > VIDEOCC on the SM7635 SoC. > > Signed-off-by: Luca Weiss <luca.weiss@fairphone.com> > --- > Luca Weiss (10): > dt-bindings: clock: qcom: document the SM7635 Global Clock Controller > clk: qcom: Add Global Clock controller (GCC) driver for SM7635 > dt-bindings: clock: qcom: document the SM7635 Camera Clock Controller > clk: qcom: Add Camera Clock controller (CAMCC) driver for SM7635 > dt-bindings: clock: qcom: document the SM7635 Display Clock Controller > clk: qcom: Add Display Clock controller (DISPCC) driver for SM7635 > dt-bindings: clock: qcom: document the SM7635 GPU Clock Controller > clk: qcom: Add Graphics Clock controller (GPUCC) driver for SM7635 > dt-bindings: clock: qcom: document the SM7635 Video Clock Controller > clk: qcom: Add Video Clock controller (VIDEOCC) driver for SM7635 We had a massive yak shaving patchset go in this season, please move the magic settings in .probe to qcom_cc_driver_data {} Konrad
On Fri Jun 27, 2025 at 5:10 PM CEST, Konrad Dybcio wrote: > On 6/25/25 11:12 AM, Luca Weiss wrote: >> Document and add the clock drivers for GCC, CAMCC, DISPCC, GPUCC and >> VIDEOCC on the SM7635 SoC. >> >> Signed-off-by: Luca Weiss <luca.weiss@fairphone.com> >> --- >> Luca Weiss (10): >> dt-bindings: clock: qcom: document the SM7635 Global Clock Controller >> clk: qcom: Add Global Clock controller (GCC) driver for SM7635 >> dt-bindings: clock: qcom: document the SM7635 Camera Clock Controller >> clk: qcom: Add Camera Clock controller (CAMCC) driver for SM7635 >> dt-bindings: clock: qcom: document the SM7635 Display Clock Controller >> clk: qcom: Add Display Clock controller (DISPCC) driver for SM7635 >> dt-bindings: clock: qcom: document the SM7635 GPU Clock Controller >> clk: qcom: Add Graphics Clock controller (GPUCC) driver for SM7635 >> dt-bindings: clock: qcom: document the SM7635 Video Clock Controller >> clk: qcom: Add Video Clock controller (VIDEOCC) driver for SM7635 > > We had a massive yak shaving patchset go in this season, please move > the magic settings in .probe to qcom_cc_driver_data {} Okay cool, I found them https://lore.kernel.org/linux-arm-msm/174970084192.547582.612305407582982706.b4-ty@kernel.org/ > > Konrad
Hi Konrad, On Fri Jun 27, 2025 at 5:14 PM CEST, Luca Weiss wrote: > On Fri Jun 27, 2025 at 5:10 PM CEST, Konrad Dybcio wrote: >> On 6/25/25 11:12 AM, Luca Weiss wrote: >>> Document and add the clock drivers for GCC, CAMCC, DISPCC, GPUCC and >>> VIDEOCC on the SM7635 SoC. >>> >>> Signed-off-by: Luca Weiss <luca.weiss@fairphone.com> >>> --- >>> Luca Weiss (10): >>> dt-bindings: clock: qcom: document the SM7635 Global Clock Controller >>> clk: qcom: Add Global Clock controller (GCC) driver for SM7635 >>> dt-bindings: clock: qcom: document the SM7635 Camera Clock Controller >>> clk: qcom: Add Camera Clock controller (CAMCC) driver for SM7635 >>> dt-bindings: clock: qcom: document the SM7635 Display Clock Controller >>> clk: qcom: Add Display Clock controller (DISPCC) driver for SM7635 >>> dt-bindings: clock: qcom: document the SM7635 GPU Clock Controller >>> clk: qcom: Add Graphics Clock controller (GPUCC) driver for SM7635 >>> dt-bindings: clock: qcom: document the SM7635 Video Clock Controller >>> clk: qcom: Add Video Clock controller (VIDEOCC) driver for SM7635 >> >> We had a massive yak shaving patchset go in this season, please move >> the magic settings in .probe to qcom_cc_driver_data {} > > Okay cool, I found them > https://lore.kernel.org/linux-arm-msm/174970084192.547582.612305407582982706.b4-ty@kernel.org/ For camcc, gpucc and videocc it seems quite simple to follow these changes. For dispcc I don't know what to do with this line. /* Enable clock gating for MDP clocks */ regmap_update_bits(regmap, DISP_CC_MISC_CMD, 0x10, 0x10); Do I just keep the regmap references in this probe function and just move the clk_lucid_ole_pll_configure & qcom_branch_set_clk_en to the config struct? And similar for gcc, I can move the qcom_branch_set_clk_en calls there but the qcom_cc_register_rcg_dfs needs to be kept. Does that sound okay, or what exactly is the desired outcome of the requested changes? Regards Luca > >> >> Konrad
On Mon, Jun 30, 2025 at 10:01:35AM +0200, Luca Weiss wrote: > Hi Konrad, > > On Fri Jun 27, 2025 at 5:14 PM CEST, Luca Weiss wrote: > > On Fri Jun 27, 2025 at 5:10 PM CEST, Konrad Dybcio wrote: > >> On 6/25/25 11:12 AM, Luca Weiss wrote: > >>> Document and add the clock drivers for GCC, CAMCC, DISPCC, GPUCC and > >>> VIDEOCC on the SM7635 SoC. > >>> > >>> Signed-off-by: Luca Weiss <luca.weiss@fairphone.com> > >>> --- > >>> Luca Weiss (10): > >>> dt-bindings: clock: qcom: document the SM7635 Global Clock Controller > >>> clk: qcom: Add Global Clock controller (GCC) driver for SM7635 > >>> dt-bindings: clock: qcom: document the SM7635 Camera Clock Controller > >>> clk: qcom: Add Camera Clock controller (CAMCC) driver for SM7635 > >>> dt-bindings: clock: qcom: document the SM7635 Display Clock Controller > >>> clk: qcom: Add Display Clock controller (DISPCC) driver for SM7635 > >>> dt-bindings: clock: qcom: document the SM7635 GPU Clock Controller > >>> clk: qcom: Add Graphics Clock controller (GPUCC) driver for SM7635 > >>> dt-bindings: clock: qcom: document the SM7635 Video Clock Controller > >>> clk: qcom: Add Video Clock controller (VIDEOCC) driver for SM7635 > >> > >> We had a massive yak shaving patchset go in this season, please move > >> the magic settings in .probe to qcom_cc_driver_data {} > > > > Okay cool, I found them > > https://lore.kernel.org/linux-arm-msm/174970084192.547582.612305407582982706.b4-ty@kernel.org/ > > For camcc, gpucc and videocc it seems quite simple to follow these > changes. > > For dispcc I don't know what to do with this line. > > /* Enable clock gating for MDP clocks */ > regmap_update_bits(regmap, DISP_CC_MISC_CMD, 0x10, 0x10); Use clk_regs_configure() callback to set this bit. > > Do I just keep the regmap references in this probe function and just > move the clk_lucid_ole_pll_configure & qcom_branch_set_clk_en to the > config struct? > > And similar for gcc, I can move the qcom_branch_set_clk_en calls there > but the qcom_cc_register_rcg_dfs needs to be kept. Would you mind extnding struct qcom_cc_desc with args to call qcom_cc_register_rcg_dfs() and call it from qcom_cc_really_probe()? > > Does that sound okay, or what exactly is the desired outcome of the > requested changes? > > Regards > Luca > > > > >> > >> Konrad > -- With best wishes Dmitry
On Tue Jul 1, 2025 at 1:16 PM CEST, Dmitry Baryshkov wrote: > On Mon, Jun 30, 2025 at 10:01:35AM +0200, Luca Weiss wrote: >> Hi Konrad, >> >> On Fri Jun 27, 2025 at 5:14 PM CEST, Luca Weiss wrote: >> > On Fri Jun 27, 2025 at 5:10 PM CEST, Konrad Dybcio wrote: >> >> On 6/25/25 11:12 AM, Luca Weiss wrote: >> >>> Document and add the clock drivers for GCC, CAMCC, DISPCC, GPUCC and >> >>> VIDEOCC on the SM7635 SoC. >> >>> >> >>> Signed-off-by: Luca Weiss <luca.weiss@fairphone.com> >> >>> --- >> >>> Luca Weiss (10): >> >>> dt-bindings: clock: qcom: document the SM7635 Global Clock Controller >> >>> clk: qcom: Add Global Clock controller (GCC) driver for SM7635 >> >>> dt-bindings: clock: qcom: document the SM7635 Camera Clock Controller >> >>> clk: qcom: Add Camera Clock controller (CAMCC) driver for SM7635 >> >>> dt-bindings: clock: qcom: document the SM7635 Display Clock Controller >> >>> clk: qcom: Add Display Clock controller (DISPCC) driver for SM7635 >> >>> dt-bindings: clock: qcom: document the SM7635 GPU Clock Controller >> >>> clk: qcom: Add Graphics Clock controller (GPUCC) driver for SM7635 >> >>> dt-bindings: clock: qcom: document the SM7635 Video Clock Controller >> >>> clk: qcom: Add Video Clock controller (VIDEOCC) driver for SM7635 >> >> >> >> We had a massive yak shaving patchset go in this season, please move >> >> the magic settings in .probe to qcom_cc_driver_data {} >> > >> > Okay cool, I found them >> > https://lore.kernel.org/linux-arm-msm/174970084192.547582.612305407582982706.b4-ty@kernel.org/ >> >> For camcc, gpucc and videocc it seems quite simple to follow these >> changes. >> >> For dispcc I don't know what to do with this line. >> >> /* Enable clock gating for MDP clocks */ >> regmap_update_bits(regmap, DISP_CC_MISC_CMD, 0x10, 0x10); > > Use clk_regs_configure() callback to set this bit. Got it, found an example on the lists. > >> >> Do I just keep the regmap references in this probe function and just >> move the clk_lucid_ole_pll_configure & qcom_branch_set_clk_en to the >> config struct? >> >> And similar for gcc, I can move the qcom_branch_set_clk_en calls there >> but the qcom_cc_register_rcg_dfs needs to be kept. > > Would you mind extnding struct qcom_cc_desc with args to call > qcom_cc_register_rcg_dfs() and call it from qcom_cc_really_probe()? Something like this? Not quite sure when (in what order) this should be called, is that place fine? I'd include a patch then in the v2 of this series. diff --git a/drivers/clk/qcom/common.c b/drivers/clk/qcom/common.c index b3838d885db2..d53f290c6121 100644 --- a/drivers/clk/qcom/common.c +++ b/drivers/clk/qcom/common.c @@ -390,6 +390,14 @@ int qcom_cc_really_probe(struct device *dev, goto put_rpm; } + if (desc->dfs_rcgs && desc->num_dfs_rcgs) { + ret = qcom_cc_register_rcg_dfs(regmap, + desc->dfs_rcgs, + desc->num_dfs_rcgs); + if (ret) + goto put_rpm; + } + cc->rclks = rclks; cc->num_rclks = num_clks; diff --git a/drivers/clk/qcom/common.h b/drivers/clk/qcom/common.h index 0f4b2d40c65c..dbe7ebe5b871 100644 --- a/drivers/clk/qcom/common.h +++ b/drivers/clk/qcom/common.h @@ -43,6 +43,8 @@ struct qcom_cc_desc { size_t num_gdscs; struct clk_hw **clk_hws; size_t num_clk_hws; + const struct clk_rcg_dfs_data *dfs_rcgs; + size_t num_dfs_rcgs; const struct qcom_icc_hws_data *icc_hws; size_t num_icc_hws; unsigned int icc_first_node_id; Regards Luca > >> >> Does that sound okay, or what exactly is the desired outcome of the >> requested changes? >> >> Regards >> Luca >> >> > >> >> >> >> Konrad >>
On 01-Jul-25 15:42, Luca Weiss wrote: > On Tue Jul 1, 2025 at 1:16 PM CEST, Dmitry Baryshkov wrote: >> On Mon, Jun 30, 2025 at 10:01:35AM +0200, Luca Weiss wrote: >>> Hi Konrad, >>> >>> On Fri Jun 27, 2025 at 5:14 PM CEST, Luca Weiss wrote: >>>> On Fri Jun 27, 2025 at 5:10 PM CEST, Konrad Dybcio wrote: >>>>> On 6/25/25 11:12 AM, Luca Weiss wrote: >>>>>> Document and add the clock drivers for GCC, CAMCC, DISPCC, GPUCC and >>>>>> VIDEOCC on the SM7635 SoC. >>>>>> >>>>>> Signed-off-by: Luca Weiss <luca.weiss@fairphone.com> >>>>>> --- >>>>>> Luca Weiss (10): >>>>>> dt-bindings: clock: qcom: document the SM7635 Global Clock Controller >>>>>> clk: qcom: Add Global Clock controller (GCC) driver for SM7635 >>>>>> dt-bindings: clock: qcom: document the SM7635 Camera Clock Controller >>>>>> clk: qcom: Add Camera Clock controller (CAMCC) driver for SM7635 >>>>>> dt-bindings: clock: qcom: document the SM7635 Display Clock Controller >>>>>> clk: qcom: Add Display Clock controller (DISPCC) driver for SM7635 >>>>>> dt-bindings: clock: qcom: document the SM7635 GPU Clock Controller >>>>>> clk: qcom: Add Graphics Clock controller (GPUCC) driver for SM7635 >>>>>> dt-bindings: clock: qcom: document the SM7635 Video Clock Controller >>>>>> clk: qcom: Add Video Clock controller (VIDEOCC) driver for SM7635 >>>>> >>>>> We had a massive yak shaving patchset go in this season, please move >>>>> the magic settings in .probe to qcom_cc_driver_data {} >>>> >>>> Okay cool, I found them >>>> https://lore.kernel.org/linux-arm-msm/174970084192.547582.612305407582982706.b4-ty@kernel.org/ >>> >>> For camcc, gpucc and videocc it seems quite simple to follow these >>> changes. >>> >>> For dispcc I don't know what to do with this line. >>> >>> /* Enable clock gating for MDP clocks */ >>> regmap_update_bits(regmap, DISP_CC_MISC_CMD, 0x10, 0x10); >> >> Use clk_regs_configure() callback to set this bit. > > Got it, found an example on the lists. > >> >>> >>> Do I just keep the regmap references in this probe function and just >>> move the clk_lucid_ole_pll_configure & qcom_branch_set_clk_en to the >>> config struct? >>> >>> And similar for gcc, I can move the qcom_branch_set_clk_en calls there >>> but the qcom_cc_register_rcg_dfs needs to be kept. >> >> Would you mind extnding struct qcom_cc_desc with args to call >> qcom_cc_register_rcg_dfs() and call it from qcom_cc_really_probe()? > > Something like this? Not quite sure when (in what order) this should be > called, is that place fine? > > I'd include a patch then in the v2 of this series. > > diff --git a/drivers/clk/qcom/common.c b/drivers/clk/qcom/common.c > index b3838d885db2..d53f290c6121 100644 > --- a/drivers/clk/qcom/common.c > +++ b/drivers/clk/qcom/common.c > @@ -390,6 +390,14 @@ int qcom_cc_really_probe(struct device *dev, > goto put_rpm; > } > > + if (desc->dfs_rcgs && desc->num_dfs_rcgs) { > + ret = qcom_cc_register_rcg_dfs(regmap, > + desc->dfs_rcgs, > + desc->num_dfs_rcgs); > + if (ret) > + goto put_rpm; > + } These were previously registered a bit earlier, but this should be good as well Konrad
© 2016 - 2025 Red Hat, Inc.