[PATCH 1/7] dt-bindings: PCI: qcom: Add IPQ9574 specific compatible

Devi Priya quic_devipriy at quicinc.com
Tue Mar 7 06:40:02 PST 2023



On 3/7/2023 6:26 PM, Manivannan Sadhasivam wrote:
> On Tue, Mar 07, 2023 at 03:15:08PM +0530, Devi Priya wrote:
>>
>>
>> On 3/3/2023 11:10 PM, Manivannan Sadhasivam wrote:
>>> On Fri, Mar 03, 2023 at 05:16:58PM +0200, Dmitry Baryshkov wrote:
>>>> 28 февраля 2023 г. 08:33:58 GMT+02:00, Manivannan Sadhasivam <mani at kernel.org> пишет:
>>>>> On Tue, Feb 28, 2023 at 10:56:53AM +0530, Devi Priya wrote:
>>>>>>
>>>>>>
>>>>>> On 2/24/2023 1:53 PM, Manivannan Sadhasivam wrote:
>>>>>>> On Tue, Feb 14, 2023 at 10:11:29PM +0530, Devi Priya wrote:
>>>>>>>> Document the compatible for IPQ9574
>>>>>>>>
>>>>>> Hi Mani, Thanks for taking time to review the patch.
>>>>>>>
>>>>>>> You didn't mention about the "msi-parent" property that is being added
>>>>>>> by this patch
>>>>>> Sure, will update the commit message in the next spin
>>>>>>>
>>>>>>>> Signed-off-by: Devi Priya <quic_devipriy at quicinc.com>
>>>>>>>> ---
>>>>>>>>     .../devicetree/bindings/pci/qcom,pcie.yaml    | 72 ++++++++++++++++++-
>>>>>>>>     1 file changed, 70 insertions(+), 2 deletions(-)
>>>>>>>>
>>>>>>>> diff --git a/Documentation/devicetree/bindings/pci/qcom,pcie.yaml b/Documentation/devicetree/bindings/pci/qcom,pcie.yaml
>>>>>>>> index 872817d6d2bd..dabdf2684e2d 100644
>>>>>>>> --- a/Documentation/devicetree/bindings/pci/qcom,pcie.yaml
>>>>>>>> +++ b/Documentation/devicetree/bindings/pci/qcom,pcie.yaml
>>>>>>>> @@ -26,6 +26,7 @@ properties:
>>>>>>>>               - qcom,pcie-ipq8064-v2
>>>>>>>>               - qcom,pcie-ipq8074
>>>>>>>>               - qcom,pcie-ipq8074-gen3
>>>>>>>> +          - qcom,pcie-ipq9574
>>>>>>>>               - qcom,pcie-msm8996
>>>>>>>>               - qcom,pcie-qcs404
>>>>>>>>               - qcom,pcie-sa8540p
>>>>>>>> @@ -44,11 +45,11 @@ properties:
>>>>>>>>       reg:
>>>>>>>>         minItems: 4
>>>>>>>> -    maxItems: 5
>>>>>>>> +    maxItems: 6
>>>>>>>>       reg-names:
>>>>>>>>         minItems: 4
>>>>>>>> -    maxItems: 5
>>>>>>>> +    maxItems: 6
>>>>>>>>       interrupts:
>>>>>>>>         minItems: 1
>>>>>>>> @@ -105,6 +106,8 @@ properties:
>>>>>>>>         items:
>>>>>>>>           - const: pciephy
>>>>>>>> +  msi-parent: true
>>>>>>>> +
>>>>>>>>       power-domains:
>>>>>>>>         maxItems: 1
>>>>>>>> @@ -173,6 +176,27 @@ allOf:
>>>>>>>>                 - const: parf # Qualcomm specific registers
>>>>>>>>                 - const: config # PCIe configuration space
>>>>>>>> +  - if:
>>>>>>>> +      properties:
>>>>>>>> +        compatible:
>>>>>>>> +          contains:
>>>>>>>> +            enum:
>>>>>>>> +              - qcom,pcie-ipq9574
>>>>>>>> +    then:
>>>>>>>> +      properties:
>>>>>>>> +        reg:
>>>>>>>> +          minItems: 5
>>>>>>>> +          maxItems: 6
>>>>>>>> +        reg-names:
>>>>>>>> +          minItems: 5
>>>>>>>> +          items:
>>>>>>>> +            - const: dbi # DesignWare PCIe registers
>>>>>>>> +            - const: elbi # External local bus interface registers
>>>>>>>> +            - const: atu # ATU address space
>>>>>>>> +            - const: parf # Qualcomm specific registers
>>>>>>>> +            - const: config # PCIe configuration space
>>>>>>>> +            - const: aggr_noc #PCIe aggr_noc
>>>>>>>
>>>>>>> Why do you need this region unlike other SoCs? Is the driver making use of it?
>>>>>> We have the aggr_noc region in ipq9574 to achieve higher throughput & to
>>>>>> handle multiple PCIe instances. The driver uses it to rate adapt 1-lane PCIe
>>>>>> clocks. My bad, missed it. Will add the driver changes in V2.
>>>>>
>>>>> Hmm, this is something new. How can you achieve higher throughput with this
>>>>> region? Can you explain more on how it is used?
>>>>
>>>> Based on the name of the region, it looks like it is an interconnect region.
>>>>
>>>
>>> Well, we only have BCM based interconnects so far. That's why I was curious
>>> about this region and its purpose.
>> For connected PCIe slave devices that are running at frequency lesser
>> than the ANOC frequency (342MHz), the rate adapter of ANOC needs to be
>> configured
>>>
>>>> Devi, if this is the case, then you have to handle it through the interconnect driver, rather than poking directly into these registers.
>>>
>>> If that so, it doesn't need to be added in this series itself. I believe that
>>> without aggr_noc region, the PCIe controller can still function properly with
>>> reduced performance. But you can add the interconnect support later as a
>>> separate series.
>> Sure, okay. The ANOC runs at a fixed frequency of 342MHz and the
>> interconnect clocks are not scaled. The aggr_noc register is just a magic
>> register for configuring it's rate adapter to ensure no wait cycles are
>> inserted.
>>
> 
> If the purpose of the aggr_noc region is to configure the interconnect clock,
> then it should be modeled as an interconnect driver.
Can we use 'syscon' here, as we are not scaling the interconnect
frequency and this is just a single register write for setting
the rate adapter?
> 
> Thanks,
> Mani
> 
>>>
>>> Thanks,
>>> Mani
>>>
>>>>
>>>>
>>>>>
>>>>> Thanks,
>>>>> Mani
>>>>>
>>>>>>>
>>>>>>> Thanks,
>>>>>>> Mani
>>>>>>>
>>>>>>>> +
>>>>>>>>       - if:
>>>>>>>>           properties:
>>>>>>>>             compatible:
>>>>>>>> @@ -365,6 +389,39 @@ allOf:
>>>>>>>>                 - const: ahb # AHB Reset
>>>>>>>>                 - const: axi_m_sticky # AXI Master Sticky reset
>>>>>>>> +  - if:
>>>>>>>> +      properties:
>>>>>>>> +        compatible:
>>>>>>>> +          contains:
>>>>>>>> +            enum:
>>>>>>>> +              - qcom,pcie-ipq9574
>>>>>>>> +    then:
>>>>>>>> +      properties:
>>>>>>>> +        clocks:
>>>>>>>> +          minItems: 6
>>>>>>>> +          maxItems: 6
>>>>>>>> +        clock-names:
>>>>>>>> +          items:
>>>>>>>> +            - const: ahb  # AHB clock
>>>>>>>> +            - const: aux  # Auxiliary clock
>>>>>>>> +            - const: axi_m # AXI Master clock
>>>>>>>> +            - const: axi_s # AXI Slave clock
>>>>>>>> +            - const: axi_bridge # AXI bridge clock
>>>>>>>> +            - const: rchng
>>>>>>>> +        resets:
>>>>>>>> +          minItems: 8
>>>>>>>> +          maxItems: 8
>>>>>>>> +        reset-names:
>>>>>>>> +          items:
>>>>>>>> +            - const: pipe # PIPE reset
>>>>>>>> +            - const: sticky # Core Sticky reset
>>>>>>>> +            - const: axi_s_sticky # AXI Slave Sticky reset
>>>>>>>> +            - const: axi_s # AXI Slave reset
>>>>>>>> +            - const: axi_m_sticky # AXI Master Sticky reset
>>>>>>>> +            - const: axi_m # AXI Master reset
>>>>>>>> +            - const: aux # AUX Reset
>>>>>>>> +            - const: ahb # AHB Reset
>>>>>>>> +
>>>>>>>>       - if:
>>>>>>>>           properties:
>>>>>>>>             compatible:
>>>>>>>> @@ -681,6 +738,16 @@ allOf:
>>>>>>>>             - interconnects
>>>>>>>>             - interconnect-names
>>>>>>>> +  - if:
>>>>>>>> +      properties:
>>>>>>>> +        compatible:
>>>>>>>> +          contains:
>>>>>>>> +            enum:
>>>>>>>> +              - qcom,pcie-ipq9574
>>>>>>>> +    then:
>>>>>>>> +      required:
>>>>>>>> +        - msi-parent
>>>>>>>> +
>>>>>>>>       - if:
>>>>>>>>           not:
>>>>>>>>             properties:
>>>>>>>> @@ -693,6 +760,7 @@ allOf:
>>>>>>>>                     - qcom,pcie-ipq8064v2
>>>>>>>>                     - qcom,pcie-ipq8074
>>>>>>>>                     - qcom,pcie-ipq8074-gen3
>>>>>>>> +                - qcom,pcie-ipq9574
>>>>>>>>                     - qcom,pcie-qcs404
>>>>>>>>         then:
>>>>>>>>           required:
>>>>>>>> -- 
>>>>>>>> 2.17.1
>>>>>>>>
>>>>>>>
>>>>>> Thanks,
>>>>>> Devi Priya
>>>>>
>>>>
>>>
>> Thanks,
>> Devi Priya
> 



More information about the linux-phy mailing list