* [PATCH v4 1/5] dt-bindings: interconnect: Add Qualcomm IPQ5332 support
2024-07-23 9:02 [PATCH v4 0/5] Add interconnect driver for IPQ5332 SoC Varadarajan Narayanan
@ 2024-07-23 9:03 ` Varadarajan Narayanan
2024-07-23 9:03 ` [PATCH v4 2/5] dt-bindings: usb: qcom,dwc3: Update ipq5332 clock details Varadarajan Narayanan
` (3 subsequent siblings)
4 siblings, 0 replies; 12+ messages in thread
From: Varadarajan Narayanan @ 2024-07-23 9:03 UTC (permalink / raw)
To: andersson, mturquette, sboyd, robh, krzk+dt, conor+dt, gregkh,
konrad.dybcio, djakov, quic_wcheng, quic_kathirav, linux-arm-msm,
linux-clk, devicetree, linux-kernel, linux-usb, linux-pm
Cc: Varadarajan Narayanan, Krzysztof Kozlowski
Add interconnect-cells to clock provider so that it can be
used as icc provider.
Add master/slave ids for Qualcomm IPQ5332 Network-On-Chip
interfaces. This will be used by the gcc-ipq5332 driver
for providing interconnect services using the icc-clk
framework.
Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Signed-off-by: Varadarajan Narayanan <quic_varada@quicinc.com>
---
v4: Add Reviewed-By: Krzysztof
v3: Not taking Reviewed-By: Krzysztof, fixed copy paste error
INTERCONNECT_QCOM_IPQ9574_H -> INTERCONNECT_QCOM_IPQ5332_H
---
.../bindings/clock/qcom,ipq5332-gcc.yaml | 2 +
.../dt-bindings/interconnect/qcom,ipq5332.h | 46 +++++++++++++++++++
2 files changed, 48 insertions(+)
create mode 100644 include/dt-bindings/interconnect/qcom,ipq5332.h
diff --git a/Documentation/devicetree/bindings/clock/qcom,ipq5332-gcc.yaml b/Documentation/devicetree/bindings/clock/qcom,ipq5332-gcc.yaml
index adc30d84fa8f..9193de681de2 100644
--- a/Documentation/devicetree/bindings/clock/qcom,ipq5332-gcc.yaml
+++ b/Documentation/devicetree/bindings/clock/qcom,ipq5332-gcc.yaml
@@ -31,6 +31,8 @@ properties:
- description: USB PCIE wrapper pipe clock source
'#power-domain-cells': false
+ '#interconnect-cells':
+ const: 1
required:
- compatible
diff --git a/include/dt-bindings/interconnect/qcom,ipq5332.h b/include/dt-bindings/interconnect/qcom,ipq5332.h
new file mode 100644
index 000000000000..16475bb07a48
--- /dev/null
+++ b/include/dt-bindings/interconnect/qcom,ipq5332.h
@@ -0,0 +1,46 @@
+/* SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) */
+#ifndef INTERCONNECT_QCOM_IPQ5332_H
+#define INTERCONNECT_QCOM_IPQ5332_H
+
+#define MASTER_SNOC_PCIE3_1_M 0
+#define SLAVE_SNOC_PCIE3_1_M 1
+#define MASTER_ANOC_PCIE3_1_S 2
+#define SLAVE_ANOC_PCIE3_1_S 3
+#define MASTER_SNOC_PCIE3_2_M 4
+#define SLAVE_SNOC_PCIE3_2_M 5
+#define MASTER_ANOC_PCIE3_2_S 6
+#define SLAVE_ANOC_PCIE3_2_S 7
+#define MASTER_SNOC_USB 8
+#define SLAVE_SNOC_USB 9
+#define MASTER_NSSNOC_NSSCC 10
+#define SLAVE_NSSNOC_NSSCC 11
+#define MASTER_NSSNOC_SNOC_0 12
+#define SLAVE_NSSNOC_SNOC_0 13
+#define MASTER_NSSNOC_SNOC_1 14
+#define SLAVE_NSSNOC_SNOC_1 15
+#define MASTER_NSSNOC_ATB 16
+#define SLAVE_NSSNOC_ATB 17
+#define MASTER_NSSNOC_PCNOC_1 18
+#define SLAVE_NSSNOC_PCNOC_1 19
+#define MASTER_NSSNOC_QOSGEN_REF 20
+#define SLAVE_NSSNOC_QOSGEN_REF 21
+#define MASTER_NSSNOC_TIMEOUT_REF 22
+#define SLAVE_NSSNOC_TIMEOUT_REF 23
+#define MASTER_NSSNOC_XO_DCD 24
+#define SLAVE_NSSNOC_XO_DCD 25
+
+#define MASTER_NSSNOC_PPE 0
+#define SLAVE_NSSNOC_PPE 1
+#define MASTER_NSSNOC_PPE_CFG 2
+#define SLAVE_NSSNOC_PPE_CFG 3
+#define MASTER_NSSNOC_NSS_CSR 4
+#define SLAVE_NSSNOC_NSS_CSR 5
+#define MASTER_NSSNOC_CE_APB 6
+#define SLAVE_NSSNOC_CE_APB 7
+#define MASTER_NSSNOC_CE_AXI 8
+#define SLAVE_NSSNOC_CE_AXI 9
+
+#define MASTER_CNOC_AHB 0
+#define SLAVE_CNOC_AHB 1
+
+#endif /* INTERCONNECT_QCOM_IPQ5332_H */
--
2.34.1
^ permalink raw reply related [flat|nested] 12+ messages in thread* [PATCH v4 2/5] dt-bindings: usb: qcom,dwc3: Update ipq5332 clock details
2024-07-23 9:02 [PATCH v4 0/5] Add interconnect driver for IPQ5332 SoC Varadarajan Narayanan
2024-07-23 9:03 ` [PATCH v4 1/5] dt-bindings: interconnect: Add Qualcomm IPQ5332 support Varadarajan Narayanan
@ 2024-07-23 9:03 ` Varadarajan Narayanan
2024-07-24 6:27 ` Krzysztof Kozlowski
2024-07-23 9:03 ` [PATCH v4 3/5] clk: qcom: ipq5332: Register gcc_qdss_tsctr_clk_src Varadarajan Narayanan
` (2 subsequent siblings)
4 siblings, 1 reply; 12+ messages in thread
From: Varadarajan Narayanan @ 2024-07-23 9:03 UTC (permalink / raw)
To: andersson, mturquette, sboyd, robh, krzk+dt, conor+dt, gregkh,
konrad.dybcio, djakov, quic_wcheng, quic_kathirav, linux-arm-msm,
linux-clk, devicetree, linux-kernel, linux-usb, linux-pm
Cc: Varadarajan Narayanan
USB uses icc-clk framework to enable the NoC interface clock.
Hence the 'iface' clock is removed from the list of clocks.
Update the clock-names list accordingly.
Signed-off-by: Varadarajan Narayanan <quic_varada@quicinc.com>
---
.../devicetree/bindings/usb/qcom,dwc3.yaml | 17 ++++++++++++++++-
1 file changed, 16 insertions(+), 1 deletion(-)
diff --git a/Documentation/devicetree/bindings/usb/qcom,dwc3.yaml b/Documentation/devicetree/bindings/usb/qcom,dwc3.yaml
index efde47a5b145..6c5f962bbcf9 100644
--- a/Documentation/devicetree/bindings/usb/qcom,dwc3.yaml
+++ b/Documentation/devicetree/bindings/usb/qcom,dwc3.yaml
@@ -220,6 +220,22 @@ allOf:
- const: sleep
- const: mock_utmi
+ - if:
+ properties:
+ compatible:
+ contains:
+ enum:
+ - qcom,ipq5332-dwc3
+ then:
+ properties:
+ clocks:
+ maxItems: 3
+ clock-names:
+ items:
+ - const: core
+ - const: sleep
+ - const: mock_utmi
+
- if:
properties:
compatible:
@@ -267,7 +283,6 @@ allOf:
contains:
enum:
- qcom,ipq5018-dwc3
- - qcom,ipq5332-dwc3
- qcom,msm8994-dwc3
- qcom,qcs404-dwc3
then:
--
2.34.1
^ permalink raw reply related [flat|nested] 12+ messages in thread* Re: [PATCH v4 2/5] dt-bindings: usb: qcom,dwc3: Update ipq5332 clock details
2024-07-23 9:03 ` [PATCH v4 2/5] dt-bindings: usb: qcom,dwc3: Update ipq5332 clock details Varadarajan Narayanan
@ 2024-07-24 6:27 ` Krzysztof Kozlowski
2024-07-24 11:41 ` Varadarajan Narayanan
0 siblings, 1 reply; 12+ messages in thread
From: Krzysztof Kozlowski @ 2024-07-24 6:27 UTC (permalink / raw)
To: Varadarajan Narayanan, andersson, mturquette, sboyd, robh,
krzk+dt, conor+dt, gregkh, konrad.dybcio, djakov, quic_wcheng,
quic_kathirav, linux-arm-msm, linux-clk, devicetree, linux-kernel,
linux-usb, linux-pm
On 23/07/2024 11:03, Varadarajan Narayanan wrote:
> USB uses icc-clk framework to enable the NoC interface clock.
> Hence the 'iface' clock is removed from the list of clocks.
> Update the clock-names list accordingly.
But the clock is still there and is still used by this block. This looks
like adjusting hardware per Linux implementation.
Why suddenly this clock was removed from this hardware?
>
> Signed-off-by: Varadarajan Narayanan <quic_varada@quicinc.com>
> ---
> .../devicetree/bindings/usb/qcom,dwc3.yaml | 17 ++++++++++++++++-
> 1 file changed, 16 insertions(+), 1 deletion(-)
>
> diff --git a/Documentation/devicetree/bindings/usb/qcom,dwc3.yaml b/Documentation/devicetree/bindings/usb/qcom,dwc3.yaml
> index efde47a5b145..6c5f962bbcf9 100644
> --- a/Documentation/devicetree/bindings/usb/qcom,dwc3.yaml
> +++ b/Documentation/devicetree/bindings/usb/qcom,dwc3.yaml
> @@ -220,6 +220,22 @@ allOf:
> - const: sleep
> - const: mock_utmi
>
> + - if:
> + properties:
> + compatible:
> + contains:
> + enum:
> + - qcom,ipq5332-dwc3
> + then:
> + properties:
> + clocks:
> + maxItems: 3
> + clock-names:
> + items:
> + - const: core
> + - const: sleep
> + - const: mock_utmi
So this is the same as first case. Just put it there. It's your task to
check if you are duplicating a case, not reviewer's...
Best regards,
Krzysztof
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH v4 2/5] dt-bindings: usb: qcom,dwc3: Update ipq5332 clock details
2024-07-24 6:27 ` Krzysztof Kozlowski
@ 2024-07-24 11:41 ` Varadarajan Narayanan
2024-07-24 11:55 ` Krzysztof Kozlowski
0 siblings, 1 reply; 12+ messages in thread
From: Varadarajan Narayanan @ 2024-07-24 11:41 UTC (permalink / raw)
To: Krzysztof Kozlowski
Cc: andersson, mturquette, sboyd, robh, krzk+dt, conor+dt, gregkh,
konrad.dybcio, djakov, quic_wcheng, quic_kathirav, linux-arm-msm,
linux-clk, devicetree, linux-kernel, linux-usb, linux-pm
On Wed, Jul 24, 2024 at 08:27:03AM +0200, Krzysztof Kozlowski wrote:
> On 23/07/2024 11:03, Varadarajan Narayanan wrote:
> > USB uses icc-clk framework to enable the NoC interface clock.
> > Hence the 'iface' clock is removed from the list of clocks.
> > Update the clock-names list accordingly.
>
> But the clock is still there and is still used by this block. This looks
> like adjusting hardware per Linux implementation.
>
> Why suddenly this clock was removed from this hardware?
This clock per se is not used by the USB block. It is needed to
enable the path for CPU to reach the USB block (and vice versa).
Hence, we were adviced to use the ICC framework to enable this
clock and not the clocks/clock-names DT entries.
Please refer to [1] where similar clocks for IPQ9574 were NAK'ed.
[1] https://lore.kernel.org/linux-arm-msm/CAA8EJppabK8j9T40waMv=t-1aksXfqJibWuS41GhruzLhpatrg@mail.gmail.com/
> > Signed-off-by: Varadarajan Narayanan <quic_varada@quicinc.com>
> > ---
> > .../devicetree/bindings/usb/qcom,dwc3.yaml | 17 ++++++++++++++++-
> > 1 file changed, 16 insertions(+), 1 deletion(-)
> >
> > diff --git a/Documentation/devicetree/bindings/usb/qcom,dwc3.yaml b/Documentation/devicetree/bindings/usb/qcom,dwc3.yaml
> > index efde47a5b145..6c5f962bbcf9 100644
> > --- a/Documentation/devicetree/bindings/usb/qcom,dwc3.yaml
> > +++ b/Documentation/devicetree/bindings/usb/qcom,dwc3.yaml
> > @@ -220,6 +220,22 @@ allOf:
> > - const: sleep
> > - const: mock_utmi
> >
> > + - if:
> > + properties:
> > + compatible:
> > + contains:
> > + enum:
> > + - qcom,ipq5332-dwc3
> > + then:
> > + properties:
> > + clocks:
> > + maxItems: 3
> > + clock-names:
> > + items:
> > + - const: core
> > + - const: sleep
> > + - const: mock_utmi
>
> So this is the same as first case. Just put it there. It's your task to
> check if you are duplicating a case, not reviewer's...
Will fix that.
Thanks
Varada
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH v4 2/5] dt-bindings: usb: qcom,dwc3: Update ipq5332 clock details
2024-07-24 11:41 ` Varadarajan Narayanan
@ 2024-07-24 11:55 ` Krzysztof Kozlowski
2024-07-25 7:55 ` Varadarajan Narayanan
0 siblings, 1 reply; 12+ messages in thread
From: Krzysztof Kozlowski @ 2024-07-24 11:55 UTC (permalink / raw)
To: Varadarajan Narayanan
Cc: andersson, mturquette, sboyd, robh, krzk+dt, conor+dt, gregkh,
konrad.dybcio, djakov, quic_wcheng, quic_kathirav, linux-arm-msm,
linux-clk, devicetree, linux-kernel, linux-usb, linux-pm
On 24/07/2024 13:41, Varadarajan Narayanan wrote:
> On Wed, Jul 24, 2024 at 08:27:03AM +0200, Krzysztof Kozlowski wrote:
>> On 23/07/2024 11:03, Varadarajan Narayanan wrote:
>>> USB uses icc-clk framework to enable the NoC interface clock.
>>> Hence the 'iface' clock is removed from the list of clocks.
>>> Update the clock-names list accordingly.
>>
>> But the clock is still there and is still used by this block. This looks
>> like adjusting hardware per Linux implementation.
>>
>> Why suddenly this clock was removed from this hardware?
>
> This clock per se is not used by the USB block. It is needed to
> enable the path for CPU to reach the USB block (and vice versa).
> Hence, we were adviced to use the ICC framework to enable this
> clock and not the clocks/clock-names DT entries.
>
> Please refer to [1] where similar clocks for IPQ9574 were NAK'ed.
So the original submission was not correct?
You really need to stop sending DTS based on current driver support and
focus on proper hardware description.
Such things pop up from time to time for Qualcomm and I don't see much
of improvement. And we do not talk about some ancient code, predating
guidelines, but IPQ5332 upstreamed ~1 year ago.
Best regards,
Krzysztof
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH v4 2/5] dt-bindings: usb: qcom,dwc3: Update ipq5332 clock details
2024-07-24 11:55 ` Krzysztof Kozlowski
@ 2024-07-25 7:55 ` Varadarajan Narayanan
0 siblings, 0 replies; 12+ messages in thread
From: Varadarajan Narayanan @ 2024-07-25 7:55 UTC (permalink / raw)
To: Krzysztof Kozlowski
Cc: andersson, mturquette, sboyd, robh, krzk+dt, conor+dt, gregkh,
konrad.dybcio, djakov, quic_wcheng, quic_kathirav, linux-arm-msm,
linux-clk, devicetree, linux-kernel, linux-usb, linux-pm
On Wed, Jul 24, 2024 at 01:55:41PM +0200, Krzysztof Kozlowski wrote:
> On 24/07/2024 13:41, Varadarajan Narayanan wrote:
> > On Wed, Jul 24, 2024 at 08:27:03AM +0200, Krzysztof Kozlowski wrote:
> >> On 23/07/2024 11:03, Varadarajan Narayanan wrote:
> >>> USB uses icc-clk framework to enable the NoC interface clock.
> >>> Hence the 'iface' clock is removed from the list of clocks.
> >>> Update the clock-names list accordingly.
> >>
> >> But the clock is still there and is still used by this block. This looks
> >> like adjusting hardware per Linux implementation.
> >>
> >> Why suddenly this clock was removed from this hardware?
> >
> > This clock per se is not used by the USB block. It is needed to
> > enable the path for CPU to reach the USB block (and vice versa).
> > Hence, we were adviced to use the ICC framework to enable this
> > clock and not the clocks/clock-names DT entries.
> >
> > Please refer to [1] where similar clocks for IPQ9574 were NAK'ed.
>
> So the original submission was not correct?
Unlike MSM SoC, IPQ SoC doesn't use RPM to aggregate bandwidth
requests and scale the NoC frequency. The NoCs are turned on and
set to a specific frequency at boot time and that is used for the
lifetime of the system. Hence interconnect was not considered and
this submission was accepted.
The same approach was used for PCIe and at that point the
consensus was to move to interconnect. Hence implemented the ICC
driver and updating the existing USB driver to use the ICC
driver.
> You really need to stop sending DTS based on current driver support and
> focus on proper hardware description.
>
> Such things pop up from time to time for Qualcomm and I don't see much
> of improvement. And we do not talk about some ancient code, predating
> guidelines, but IPQ5332 upstreamed ~1 year ago.
We are trying, but falling short. Hopefully we meet the
expectations soon.
Thanks
Varada
^ permalink raw reply [flat|nested] 12+ messages in thread
* [PATCH v4 3/5] clk: qcom: ipq5332: Register gcc_qdss_tsctr_clk_src
2024-07-23 9:02 [PATCH v4 0/5] Add interconnect driver for IPQ5332 SoC Varadarajan Narayanan
2024-07-23 9:03 ` [PATCH v4 1/5] dt-bindings: interconnect: Add Qualcomm IPQ5332 support Varadarajan Narayanan
2024-07-23 9:03 ` [PATCH v4 2/5] dt-bindings: usb: qcom,dwc3: Update ipq5332 clock details Varadarajan Narayanan
@ 2024-07-23 9:03 ` Varadarajan Narayanan
2024-07-23 11:40 ` Dmitry Baryshkov
2024-07-23 9:03 ` [PATCH v4 4/5] clk: qcom: ipq5332: Use icc-clk for enabling NoC related clocks Varadarajan Narayanan
2024-07-23 9:03 ` [PATCH v4 5/5] arm64: dts: qcom: ipq5332: Add icc provider ability to gcc Varadarajan Narayanan
4 siblings, 1 reply; 12+ messages in thread
From: Varadarajan Narayanan @ 2024-07-23 9:03 UTC (permalink / raw)
To: andersson, mturquette, sboyd, robh, krzk+dt, conor+dt, gregkh,
konrad.dybcio, djakov, quic_wcheng, quic_kathirav, linux-arm-msm,
linux-clk, devicetree, linux-kernel, linux-usb, linux-pm
Cc: Varadarajan Narayanan
gcc_qdss_tsctr_clk_src (enabled in the boot loaders and dependent
on gpll4_main) was not registered as one of the ipq5332 clocks.
Hence clk_disable_unused() disabled 'gpll4_main' assuming there
were no consumers for 'gpll4_main' resulting in system freeze or
reboots.
Fixes: 3d89d52970fd ("clk: qcom: add Global Clock controller (GCC) driver for IPQ5332 SoC")
Signed-off-by: Varadarajan Narayanan <quic_varada@quicinc.com>
---
v4: Move gpll4_main change that removes CLK_IGNORE_UNUSED to next patch
Add 'Fixes' tag to commit message
---
drivers/clk/qcom/gcc-ipq5332.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/drivers/clk/qcom/gcc-ipq5332.c b/drivers/clk/qcom/gcc-ipq5332.c
index f98591148a97..6a4877d88829 100644
--- a/drivers/clk/qcom/gcc-ipq5332.c
+++ b/drivers/clk/qcom/gcc-ipq5332.c
@@ -3388,6 +3388,7 @@ static struct clk_regmap *gcc_ipq5332_clocks[] = {
[GCC_QDSS_DAP_DIV_CLK_SRC] = &gcc_qdss_dap_div_clk_src.clkr,
[GCC_QDSS_ETR_USB_CLK] = &gcc_qdss_etr_usb_clk.clkr,
[GCC_QDSS_EUD_AT_CLK] = &gcc_qdss_eud_at_clk.clkr,
+ [GCC_QDSS_TSCTR_CLK_SRC] = &gcc_qdss_tsctr_clk_src.clkr,
[GCC_QPIC_AHB_CLK] = &gcc_qpic_ahb_clk.clkr,
[GCC_QPIC_CLK] = &gcc_qpic_clk.clkr,
[GCC_QPIC_IO_MACRO_CLK] = &gcc_qpic_io_macro_clk.clkr,
--
2.34.1
^ permalink raw reply related [flat|nested] 12+ messages in thread* Re: [PATCH v4 3/5] clk: qcom: ipq5332: Register gcc_qdss_tsctr_clk_src
2024-07-23 9:03 ` [PATCH v4 3/5] clk: qcom: ipq5332: Register gcc_qdss_tsctr_clk_src Varadarajan Narayanan
@ 2024-07-23 11:40 ` Dmitry Baryshkov
0 siblings, 0 replies; 12+ messages in thread
From: Dmitry Baryshkov @ 2024-07-23 11:40 UTC (permalink / raw)
To: Varadarajan Narayanan
Cc: andersson, mturquette, sboyd, robh, krzk+dt, conor+dt, gregkh,
konrad.dybcio, djakov, quic_wcheng, quic_kathirav, linux-arm-msm,
linux-clk, devicetree, linux-kernel, linux-usb, linux-pm
On Tue, Jul 23, 2024 at 02:33:02PM GMT, Varadarajan Narayanan wrote:
> gcc_qdss_tsctr_clk_src (enabled in the boot loaders and dependent
> on gpll4_main) was not registered as one of the ipq5332 clocks.
> Hence clk_disable_unused() disabled 'gpll4_main' assuming there
> were no consumers for 'gpll4_main' resulting in system freeze or
> reboots.
>
> Fixes: 3d89d52970fd ("clk: qcom: add Global Clock controller (GCC) driver for IPQ5332 SoC")
> Signed-off-by: Varadarajan Narayanan <quic_varada@quicinc.com>
Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
--
With best wishes
Dmitry
^ permalink raw reply [flat|nested] 12+ messages in thread
* [PATCH v4 4/5] clk: qcom: ipq5332: Use icc-clk for enabling NoC related clocks
2024-07-23 9:02 [PATCH v4 0/5] Add interconnect driver for IPQ5332 SoC Varadarajan Narayanan
` (2 preceding siblings ...)
2024-07-23 9:03 ` [PATCH v4 3/5] clk: qcom: ipq5332: Register gcc_qdss_tsctr_clk_src Varadarajan Narayanan
@ 2024-07-23 9:03 ` Varadarajan Narayanan
2024-07-23 11:40 ` Dmitry Baryshkov
2024-07-23 9:03 ` [PATCH v4 5/5] arm64: dts: qcom: ipq5332: Add icc provider ability to gcc Varadarajan Narayanan
4 siblings, 1 reply; 12+ messages in thread
From: Varadarajan Narayanan @ 2024-07-23 9:03 UTC (permalink / raw)
To: andersson, mturquette, sboyd, robh, krzk+dt, conor+dt, gregkh,
konrad.dybcio, djakov, quic_wcheng, quic_kathirav, linux-arm-msm,
linux-clk, devicetree, linux-kernel, linux-usb, linux-pm
Cc: Varadarajan Narayanan
Use the icc-clk framework to enable few clocks to be able to
create paths and use the peripherals connected on those NoCs.
Remove CLK_IGNORE_UNUSED from gpll4_main as all consumers have
been identified.
Signed-off-by: Varadarajan Narayanan <quic_varada@quicinc.com>
---
v4: Remove CLK_IGNORE_UNUSED from gpll4_main
v3: Not taking Reviewed-by: Konrad as NAK-ed by Dmitry
Remove CLK_IGNORE_UNUSED -> CLK_IS_CRITICAL change and fix
that in a separate patch
---
drivers/clk/qcom/gcc-ipq5332.c | 35 +++++++++++++++++++++++-----------
1 file changed, 24 insertions(+), 11 deletions(-)
diff --git a/drivers/clk/qcom/gcc-ipq5332.c b/drivers/clk/qcom/gcc-ipq5332.c
index 6a4877d88829..9536b2b7d07c 100644
--- a/drivers/clk/qcom/gcc-ipq5332.c
+++ b/drivers/clk/qcom/gcc-ipq5332.c
@@ -4,12 +4,14 @@
*/
#include <linux/clk-provider.h>
+#include <linux/interconnect-provider.h>
#include <linux/mod_devicetable.h>
#include <linux/module.h>
#include <linux/platform_device.h>
#include <linux/regmap.h>
#include <dt-bindings/clock/qcom,ipq5332-gcc.h>
+#include <dt-bindings/interconnect/qcom,ipq5332.h>
#include "clk-alpha-pll.h"
#include "clk-branch.h"
@@ -126,17 +128,6 @@ static struct clk_alpha_pll gpll4_main = {
.parent_data = &gcc_parent_data_xo,
.num_parents = 1,
.ops = &clk_alpha_pll_stromer_ops,
- /*
- * There are no consumers for this GPLL in kernel yet,
- * (will be added soon), so the clock framework
- * disables this source. But some of the clocks
- * initialized by boot loaders uses this source. So we
- * need to keep this clock ON. Add the
- * CLK_IGNORE_UNUSED flag so the clock will not be
- * disabled. Once the consumer in kernel is added, we
- * can get rid of this flag.
- */
- .flags = CLK_IGNORE_UNUSED,
},
},
};
@@ -3629,6 +3620,24 @@ static const struct qcom_reset_map gcc_ipq5332_resets[] = {
[GCC_UNIPHY1_XPCS_ARES] = { 0x16060 },
};
+#define IPQ_APPS_ID 5332 /* some unique value */
+
+static struct qcom_icc_hws_data icc_ipq5332_hws[] = {
+ { MASTER_SNOC_PCIE3_1_M, SLAVE_SNOC_PCIE3_1_M, GCC_SNOC_PCIE3_1LANE_M_CLK },
+ { MASTER_ANOC_PCIE3_1_S, SLAVE_ANOC_PCIE3_1_S, GCC_SNOC_PCIE3_1LANE_S_CLK },
+ { MASTER_SNOC_PCIE3_2_M, SLAVE_SNOC_PCIE3_2_M, GCC_SNOC_PCIE3_2LANE_M_CLK },
+ { MASTER_ANOC_PCIE3_2_S, SLAVE_ANOC_PCIE3_2_S, GCC_SNOC_PCIE3_2LANE_S_CLK },
+ { MASTER_SNOC_USB, SLAVE_SNOC_USB, GCC_SNOC_USB_CLK },
+ { MASTER_NSSNOC_NSSCC, SLAVE_NSSNOC_NSSCC, GCC_NSSNOC_NSSCC_CLK },
+ { MASTER_NSSNOC_SNOC_0, SLAVE_NSSNOC_SNOC_0, GCC_NSSNOC_SNOC_CLK },
+ { MASTER_NSSNOC_SNOC_1, SLAVE_NSSNOC_SNOC_1, GCC_NSSNOC_SNOC_1_CLK },
+ { MASTER_NSSNOC_ATB, SLAVE_NSSNOC_ATB, GCC_NSSNOC_ATB_CLK },
+ { MASTER_NSSNOC_PCNOC_1, SLAVE_NSSNOC_PCNOC_1, GCC_NSSNOC_PCNOC_1_CLK },
+ { MASTER_NSSNOC_QOSGEN_REF, SLAVE_NSSNOC_QOSGEN_REF, GCC_NSSNOC_QOSGEN_REF_CLK },
+ { MASTER_NSSNOC_TIMEOUT_REF, SLAVE_NSSNOC_TIMEOUT_REF, GCC_NSSNOC_TIMEOUT_REF_CLK },
+ { MASTER_NSSNOC_XO_DCD, SLAVE_NSSNOC_XO_DCD, GCC_NSSNOC_XO_DCD_CLK },
+};
+
static const struct regmap_config gcc_ipq5332_regmap_config = {
.reg_bits = 32,
.reg_stride = 4,
@@ -3657,6 +3666,9 @@ static const struct qcom_cc_desc gcc_ipq5332_desc = {
.num_resets = ARRAY_SIZE(gcc_ipq5332_resets),
.clk_hws = gcc_ipq5332_hws,
.num_clk_hws = ARRAY_SIZE(gcc_ipq5332_hws),
+ .icc_hws = icc_ipq5332_hws,
+ .num_icc_hws = ARRAY_SIZE(icc_ipq5332_hws),
+ .icc_first_node_id = IPQ_APPS_ID,
};
static int gcc_ipq5332_probe(struct platform_device *pdev)
@@ -3675,6 +3687,7 @@ static struct platform_driver gcc_ipq5332_driver = {
.driver = {
.name = "gcc-ipq5332",
.of_match_table = gcc_ipq5332_match_table,
+ .sync_state = icc_sync_state,
},
};
--
2.34.1
^ permalink raw reply related [flat|nested] 12+ messages in thread* Re: [PATCH v4 4/5] clk: qcom: ipq5332: Use icc-clk for enabling NoC related clocks
2024-07-23 9:03 ` [PATCH v4 4/5] clk: qcom: ipq5332: Use icc-clk for enabling NoC related clocks Varadarajan Narayanan
@ 2024-07-23 11:40 ` Dmitry Baryshkov
0 siblings, 0 replies; 12+ messages in thread
From: Dmitry Baryshkov @ 2024-07-23 11:40 UTC (permalink / raw)
To: Varadarajan Narayanan
Cc: andersson, mturquette, sboyd, robh, krzk+dt, conor+dt, gregkh,
konrad.dybcio, djakov, quic_wcheng, quic_kathirav, linux-arm-msm,
linux-clk, devicetree, linux-kernel, linux-usb, linux-pm
On Tue, Jul 23, 2024 at 02:33:03PM GMT, Varadarajan Narayanan wrote:
> Use the icc-clk framework to enable few clocks to be able to
> create paths and use the peripherals connected on those NoCs.
>
> Remove CLK_IGNORE_UNUSED from gpll4_main as all consumers have
> been identified.
>
> Signed-off-by: Varadarajan Narayanan <quic_varada@quicinc.com>
> ---
> v4: Remove CLK_IGNORE_UNUSED from gpll4_main
>
> v3: Not taking Reviewed-by: Konrad as NAK-ed by Dmitry
> Remove CLK_IGNORE_UNUSED -> CLK_IS_CRITICAL change and fix
> that in a separate patch
> ---
> drivers/clk/qcom/gcc-ipq5332.c | 35 +++++++++++++++++++++++-----------
> 1 file changed, 24 insertions(+), 11 deletions(-)
>
Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
--
With best wishes
Dmitry
^ permalink raw reply [flat|nested] 12+ messages in thread
* [PATCH v4 5/5] arm64: dts: qcom: ipq5332: Add icc provider ability to gcc
2024-07-23 9:02 [PATCH v4 0/5] Add interconnect driver for IPQ5332 SoC Varadarajan Narayanan
` (3 preceding siblings ...)
2024-07-23 9:03 ` [PATCH v4 4/5] clk: qcom: ipq5332: Use icc-clk for enabling NoC related clocks Varadarajan Narayanan
@ 2024-07-23 9:03 ` Varadarajan Narayanan
4 siblings, 0 replies; 12+ messages in thread
From: Varadarajan Narayanan @ 2024-07-23 9:03 UTC (permalink / raw)
To: andersson, mturquette, sboyd, robh, krzk+dt, conor+dt, gregkh,
konrad.dybcio, djakov, quic_wcheng, quic_kathirav, linux-arm-msm,
linux-clk, devicetree, linux-kernel, linux-usb, linux-pm
Cc: Varadarajan Narayanan
IPQ SoCs dont involve RPM in managing NoC related clocks and
there is no NoC scaling. Linux itself handles these clocks.
However, these should not be exposed as just clocks and align
with other Qualcomm SoCs that handle these clocks from a
interconnect provider.
Hence include icc provider capability to the gcc node so that
peripherals can use the interconnect facility to enable these
clocks. Change USB to use the icc-clk framework for the iface
clock.
Reviewed-by: Konrad Dybcio <konrad.dybcio@linaro.org>
Signed-off-by: Varadarajan Narayanan <quic_varada@quicinc.com>
---
v3: Fix #include file order
---
arch/arm64/boot/dts/qcom/ipq5332.dtsi | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/arch/arm64/boot/dts/qcom/ipq5332.dtsi b/arch/arm64/boot/dts/qcom/ipq5332.dtsi
index 573656587c0d..7e8f9d578382 100644
--- a/arch/arm64/boot/dts/qcom/ipq5332.dtsi
+++ b/arch/arm64/boot/dts/qcom/ipq5332.dtsi
@@ -7,6 +7,7 @@
#include <dt-bindings/clock/qcom,apss-ipq.h>
#include <dt-bindings/clock/qcom,ipq5332-gcc.h>
+#include <dt-bindings/interconnect/qcom,ipq5332.h>
#include <dt-bindings/interrupt-controller/arm-gic.h>
/ {
@@ -208,6 +209,7 @@ gcc: clock-controller@1800000 {
reg = <0x01800000 0x80000>;
#clock-cells = <1>;
#reset-cells = <1>;
+ #interconnect-cells = <1>;
clocks = <&xo_board>,
<&sleep_clk>,
<0>,
@@ -327,11 +329,9 @@ usb: usb@8af8800 {
"dm_hs_phy_irq";
clocks = <&gcc GCC_USB0_MASTER_CLK>,
- <&gcc GCC_SNOC_USB_CLK>,
<&gcc GCC_USB0_SLEEP_CLK>,
<&gcc GCC_USB0_MOCK_UTMI_CLK>;
clock-names = "core",
- "iface",
"sleep",
"mock_utmi";
@@ -342,6 +342,9 @@ usb: usb@8af8800 {
#address-cells = <1>;
#size-cells = <1>;
ranges;
+ interconnects = <&gcc MASTER_SNOC_USB &gcc SLAVE_SNOC_USB>,
+ <&gcc MASTER_SNOC_USB &gcc SLAVE_SNOC_USB>;
+ interconnect-names = "usb-ddr", "apps-usb";
status = "disabled";
--
2.34.1
^ permalink raw reply related [flat|nested] 12+ messages in thread