diff mbox series

[v2] dt-bindings: arm-smmu: Add sc7180 compatible string and mem_iface clock

Message ID 1588219187-19295-1-git-send-email-smasetty@codeaurora.org (mailing list archive)
State New, archived
Headers show
Series [v2] dt-bindings: arm-smmu: Add sc7180 compatible string and mem_iface clock | expand

Commit Message

Sharat Masetty April 30, 2020, 3:59 a.m. UTC
This patch adds a new compatible string for sc7180 and also an
additional clock listing needed to power the TBUs and the TCU.

Signed-off-by: Sharat Masetty <smasetty@codeaurora.org>
---
v2: Addressed review comments from Doug

 Documentation/devicetree/bindings/iommu/arm,smmu.yaml | 8 ++++++++
 1 file changed, 8 insertions(+)

--
1.9.1

Comments

Jordan Crouse April 30, 2020, 6:12 p.m. UTC | #1
On Thu, Apr 30, 2020 at 09:29:47AM +0530, Sharat Masetty wrote:
> This patch adds a new compatible string for sc7180 and also an
> additional clock listing needed to power the TBUs and the TCU.
> 
> Signed-off-by: Sharat Masetty <smasetty@codeaurora.org>
> ---
> v2: Addressed review comments from Doug
> 
>  Documentation/devicetree/bindings/iommu/arm,smmu.yaml | 8 ++++++++
>  1 file changed, 8 insertions(+)
> 
> diff --git a/Documentation/devicetree/bindings/iommu/arm,smmu.yaml b/Documentation/devicetree/bindings/iommu/arm,smmu.yaml
> index 6515dbe..ba5dba4 100644
> --- a/Documentation/devicetree/bindings/iommu/arm,smmu.yaml
> +++ b/Documentation/devicetree/bindings/iommu/arm,smmu.yaml
> @@ -28,6 +28,7 @@ properties:
>            - enum:
>                - qcom,msm8996-smmu-v2
>                - qcom,msm8998-smmu-v2
> +              - qcom,sc7180-smmu-v2
>                - qcom,sdm845-smmu-v2
>            - const: qcom,smmu-v2
> 
> @@ -113,16 +114,23 @@ properties:
>        present in such cases.
> 
>    clock-names:
> +    minItems: 2
> +    maxItems: 3
>      items:
>        - const: bus
>        - const: iface
> +      - const: mem_iface

Hi Sharat -

I think there was a bit of confusion due to renaming between downstream and
upstream.  Currently for the sdm845 and friends we have:

  clocks = <&gcc GCC_GPU_MEMNOC_GFX_CLK>,
     <&gcc GCC_GPU_CFG_AHB_CLK>;
  clock-names = "bus", "iface";

Confusingly these same clocks downstream are "mem_iface_clk" and "iface_clk"
respectively.

It looks like you are trying to add GCC_DDRSS_GPU_AXI_CLK as "mem_iface" which
was formerly "mem_clk" downstream. I'm not sure if the naming change is
intentional or you were trying to make upstream and downstream match and didn't
realize that they were renamed.

I'm not sure if we need DDRSS_GPU_AXI_CLK or not. Empirically it works without
it for sdm845 (I don't have a sc7180 to test) but we should probably loop back
with either the clock team or the hardware designers to be sure there isn't a
corner case that is missing. I agree with Doug that its always best if we don't
need to add a clock.

Jordan
> 
>    clocks:
> +    minItems: 2
> +    maxItems: 3
>      items:
>        - description: bus clock required for downstream bus access and for the
>            smmu ptw
>        - description: interface clock required to access smmu's registers
>            through the TCU's programming interface.
> +      - description: clock required for the inner working of SMMU TBUs and the
> +          TCU like the pagetable walks and the TLB flushes.
> 
>    power-domains:
>      maxItems: 1
> --
> 1.9.1
>
Doug Anderson April 30, 2020, 6:21 p.m. UTC | #2
Hi,

On Thu, Apr 30, 2020 at 11:12 AM Jordan Crouse <jcrouse@codeaurora.org> wrote:
>
> On Thu, Apr 30, 2020 at 09:29:47AM +0530, Sharat Masetty wrote:
> > This patch adds a new compatible string for sc7180 and also an
> > additional clock listing needed to power the TBUs and the TCU.
> >
> > Signed-off-by: Sharat Masetty <smasetty@codeaurora.org>
> > ---
> > v2: Addressed review comments from Doug
> >
> >  Documentation/devicetree/bindings/iommu/arm,smmu.yaml | 8 ++++++++
> >  1 file changed, 8 insertions(+)
> >
> > diff --git a/Documentation/devicetree/bindings/iommu/arm,smmu.yaml b/Documentation/devicetree/bindings/iommu/arm,smmu.yaml
> > index 6515dbe..ba5dba4 100644
> > --- a/Documentation/devicetree/bindings/iommu/arm,smmu.yaml
> > +++ b/Documentation/devicetree/bindings/iommu/arm,smmu.yaml
> > @@ -28,6 +28,7 @@ properties:
> >            - enum:
> >                - qcom,msm8996-smmu-v2
> >                - qcom,msm8998-smmu-v2
> > +              - qcom,sc7180-smmu-v2
> >                - qcom,sdm845-smmu-v2
> >            - const: qcom,smmu-v2
> >
> > @@ -113,16 +114,23 @@ properties:
> >        present in such cases.
> >
> >    clock-names:
> > +    minItems: 2
> > +    maxItems: 3
> >      items:
> >        - const: bus
> >        - const: iface
> > +      - const: mem_iface
>
> Hi Sharat -
>
> I think there was a bit of confusion due to renaming between downstream and
> upstream.  Currently for the sdm845 and friends we have:
>
>   clocks = <&gcc GCC_GPU_MEMNOC_GFX_CLK>,
>      <&gcc GCC_GPU_CFG_AHB_CLK>;
>   clock-names = "bus", "iface";
>
> Confusingly these same clocks downstream are "mem_iface_clk" and "iface_clk"
> respectively.
>
> It looks like you are trying to add GCC_DDRSS_GPU_AXI_CLK as "mem_iface" which
> was formerly "mem_clk" downstream. I'm not sure if the naming change is
> intentional or you were trying to make upstream and downstream match and didn't
> realize that they were renamed.
>
> I'm not sure if we need DDRSS_GPU_AXI_CLK or not. Empirically it works without
> it for sdm845 (I don't have a sc7180 to test) but we should probably loop back
> with either the clock team or the hardware designers to be sure there isn't a
> corner case that is missing. I agree with Doug that its always best if we don't
> need to add a clock.

I can confirm that on sc7180 the GPU seems to come up just fine
without the clock being specified in the iommu node.  Definitely would
be good to know what's broken and if nothing is broken maybe we can
change this patch to just add the sc7180 compatible string and drop
the clock.  I do note that the GMU already has a reference to the same
"GCC_DDRSS_GPU_AXI_CLK" clock.

-Doug
Sharat Masetty May 1, 2020, 8:08 a.m. UTC | #3
On 4/30/2020 11:51 PM, Doug Anderson wrote:
> Hi,
>
> On Thu, Apr 30, 2020 at 11:12 AM Jordan Crouse <jcrouse@codeaurora.org> wrote:
>> On Thu, Apr 30, 2020 at 09:29:47AM +0530, Sharat Masetty wrote:
>>> This patch adds a new compatible string for sc7180 and also an
>>> additional clock listing needed to power the TBUs and the TCU.
>>>
>>> Signed-off-by: Sharat Masetty <smasetty@codeaurora.org>
>>> ---
>>> v2: Addressed review comments from Doug
>>>
>>>   Documentation/devicetree/bindings/iommu/arm,smmu.yaml | 8 ++++++++
>>>   1 file changed, 8 insertions(+)
>>>
>>> diff --git a/Documentation/devicetree/bindings/iommu/arm,smmu.yaml b/Documentation/devicetree/bindings/iommu/arm,smmu.yaml
>>> index 6515dbe..ba5dba4 100644
>>> --- a/Documentation/devicetree/bindings/iommu/arm,smmu.yaml
>>> +++ b/Documentation/devicetree/bindings/iommu/arm,smmu.yaml
>>> @@ -28,6 +28,7 @@ properties:
>>>             - enum:
>>>                 - qcom,msm8996-smmu-v2
>>>                 - qcom,msm8998-smmu-v2
>>> +              - qcom,sc7180-smmu-v2
>>>                 - qcom,sdm845-smmu-v2
>>>             - const: qcom,smmu-v2
>>>
>>> @@ -113,16 +114,23 @@ properties:
>>>         present in such cases.
>>>
>>>     clock-names:
>>> +    minItems: 2
>>> +    maxItems: 3
>>>       items:
>>>         - const: bus
>>>         - const: iface
>>> +      - const: mem_iface
>> Hi Sharat -
>>
>> I think there was a bit of confusion due to renaming between downstream and
>> upstream.  Currently for the sdm845 and friends we have:
>>
>>    clocks = <&gcc GCC_GPU_MEMNOC_GFX_CLK>,
>>       <&gcc GCC_GPU_CFG_AHB_CLK>;
>>    clock-names = "bus", "iface";
>>
>> Confusingly these same clocks downstream are "mem_iface_clk" and "iface_clk"
>> respectively.
>>
>> It looks like you are trying to add GCC_DDRSS_GPU_AXI_CLK as "mem_iface" which
>> was formerly "mem_clk" downstream. I'm not sure if the naming change is
>> intentional or you were trying to make upstream and downstream match and didn't
>> realize that they were renamed.
>>
>> I'm not sure if we need DDRSS_GPU_AXI_CLK or not. Empirically it works without
>> it for sdm845 (I don't have a sc7180 to test) but we should probably loop back
>> with either the clock team or the hardware designers to be sure there isn't a
>> corner case that is missing. I agree with Doug that its always best if we don't
>> need to add a clock.

Thanks Jordan and Doug for the updates. My intention was to add the 
third clock as listed downstream, but as you said the naming is a bit 
misleading. From the clock GCC_DDRSS_GPU_AXI_CLK description, this is 
needed for the GPU to DDR access and all transactions to the DDR from 
the GPU go through the SMMU. It is listed in the SMMU dt node because 
its needed by SMMU to perform pagetable walks.

I think we may be fine by not listing this clock in the SMMU node 
because the same clock is listed in both the GMU and also the GPU.

> I can confirm that on sc7180 the GPU seems to come up just fine
> without the clock being specified in the iommu node.  Definitely would
> be good to know what's broken and if nothing is broken maybe we can
> change this patch to just add the sc7180 compatible string and drop
> the clock.  I do note that the GMU already has a reference to the same
> "GCC_DDRSS_GPU_AXI_CLK" clock.
>
> -Doug
> _______________________________________________
> Freedreno mailing list
> Freedreno@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/freedreno
diff mbox series

Patch

diff --git a/Documentation/devicetree/bindings/iommu/arm,smmu.yaml b/Documentation/devicetree/bindings/iommu/arm,smmu.yaml
index 6515dbe..ba5dba4 100644
--- a/Documentation/devicetree/bindings/iommu/arm,smmu.yaml
+++ b/Documentation/devicetree/bindings/iommu/arm,smmu.yaml
@@ -28,6 +28,7 @@  properties:
           - enum:
               - qcom,msm8996-smmu-v2
               - qcom,msm8998-smmu-v2
+              - qcom,sc7180-smmu-v2
               - qcom,sdm845-smmu-v2
           - const: qcom,smmu-v2

@@ -113,16 +114,23 @@  properties:
       present in such cases.

   clock-names:
+    minItems: 2
+    maxItems: 3
     items:
       - const: bus
       - const: iface
+      - const: mem_iface

   clocks:
+    minItems: 2
+    maxItems: 3
     items:
       - description: bus clock required for downstream bus access and for the
           smmu ptw
       - description: interface clock required to access smmu's registers
           through the TCU's programming interface.
+      - description: clock required for the inner working of SMMU TBUs and the
+          TCU like the pagetable walks and the TLB flushes.

   power-domains:
     maxItems: 1