[PATCH 1/2] dt-bindings: net: qcom,ipa: document qcm2290 compatible

Wojciech Slenska posted 2 patches 1 year, 1 month ago
[PATCH 1/2] dt-bindings: net: qcom,ipa: document qcm2290 compatible
Posted by Wojciech Slenska 1 year, 1 month ago
Document that ipa on qcm2290 uses version 4.2, the same
as sc7180.

Signed-off-by: Wojciech Slenska <wojciech.slenska@gmail.com>
---
 Documentation/devicetree/bindings/net/qcom,ipa.yaml | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/Documentation/devicetree/bindings/net/qcom,ipa.yaml b/Documentation/devicetree/bindings/net/qcom,ipa.yaml
index 53cae71d9957..ea44d02d1e5c 100644
--- a/Documentation/devicetree/bindings/net/qcom,ipa.yaml
+++ b/Documentation/devicetree/bindings/net/qcom,ipa.yaml
@@ -58,6 +58,10 @@ properties:
           - enum:
               - qcom,sm8650-ipa
           - const: qcom,sm8550-ipa
+      - items:
+          - enum:
+              - qcom,qcm2290-ipa
+          - const: qcom,sc7180-ipa
 
   reg:
     items:
-- 
2.34.1
Re: [PATCH 1/2] dt-bindings: net: qcom,ipa: document qcm2290 compatible
Posted by Krzysztof Kozlowski 1 year, 1 month ago
On 20/12/2024 08:35, Wojciech Slenska wrote:
> Document that ipa on qcm2290 uses version 4.2, the same
> as sc7180.
> 
> Signed-off-by: Wojciech Slenska <wojciech.slenska@gmail.com>
> ---
>  Documentation/devicetree/bindings/net/qcom,ipa.yaml | 4 ++++
>  1 file changed, 4 insertions(+)
> 
> diff --git a/Documentation/devicetree/bindings/net/qcom,ipa.yaml b/Documentation/devicetree/bindings/net/qcom,ipa.yaml
> index 53cae71d9957..ea44d02d1e5c 100644
> --- a/Documentation/devicetree/bindings/net/qcom,ipa.yaml
> +++ b/Documentation/devicetree/bindings/net/qcom,ipa.yaml
> @@ -58,6 +58,10 @@ properties:
>            - enum:
>                - qcom,sm8650-ipa
>            - const: qcom,sm8550-ipa
> +      - items:
> +          - enum:
> +              - qcom,qcm2290-ipa
> +          - const: qcom,sc7180-ipa
>  
We usually keep such lists between each other ordered by fallback, so
this should go before sm8550-fallback-list.

With that change:

Acked-by: Krzysztof Kozlowski <krzk@kernel.org>

Best regards,
Krzysztof
Re: [PATCH 1/2] dt-bindings: net: qcom,ipa: document qcm2290 compatible
Posted by Konrad Dybcio 8 months, 3 weeks ago
On 12/21/24 9:44 PM, Krzysztof Kozlowski wrote:
> On 20/12/2024 08:35, Wojciech Slenska wrote:
>> Document that ipa on qcm2290 uses version 4.2, the same
>> as sc7180.
>>
>> Signed-off-by: Wojciech Slenska <wojciech.slenska@gmail.com>
>> ---
>>  Documentation/devicetree/bindings/net/qcom,ipa.yaml | 4 ++++
>>  1 file changed, 4 insertions(+)
>>
>> diff --git a/Documentation/devicetree/bindings/net/qcom,ipa.yaml b/Documentation/devicetree/bindings/net/qcom,ipa.yaml
>> index 53cae71d9957..ea44d02d1e5c 100644
>> --- a/Documentation/devicetree/bindings/net/qcom,ipa.yaml
>> +++ b/Documentation/devicetree/bindings/net/qcom,ipa.yaml
>> @@ -58,6 +58,10 @@ properties:
>>            - enum:
>>                - qcom,sm8650-ipa
>>            - const: qcom,sm8550-ipa
>> +      - items:
>> +          - enum:
>> +              - qcom,qcm2290-ipa
>> +          - const: qcom,sc7180-ipa
>>  
> We usually keep such lists between each other ordered by fallback, so
> this should go before sm8550-fallback-list.
> 
> With that change:
> 
> Acked-by: Krzysztof Kozlowski <krzk@kernel.org>

(half a year later)

I've now sent a series that resolves the issue described in the
other branch of this thread. Feel free to pick up this binding
Krzysztof/Rob/Kuba.



Patch 2 will need an update and some prerequisite changes.
Wojciech, you'll need:

https://lore.kernel.org/linux-arm-msm/20250523-topic-ipa_imem-v1-0-b5d536291c7f@oss.qualcomm.com
https://lore.kernel.org/linux-arm-msm/20250523-topic-ipa_mem_dts-v1-0-f7aa94fac1ab@oss.qualcomm.com
https://github.com/quic-kdybcio/linux/commits/topic/ipa_qcm2290

and a snippet like 

-----------o<-----------------------------------
 			qcom,smem-state-names = "ipa-clock-enabled-valid",
 						"ipa-clock-enabled";
 
+			sram = <&ipa_modem_tables>;
+
 			status = "disabled";
-----------o<-----------------------------------

added to your DT change

please let me know if it works with the above

if you're not interested anymore or don't have the board on hand,
I can take up your patch, preserving your authorship ofc

Konrad
Re: [PATCH 1/2] dt-bindings: net: qcom,ipa: document qcm2290 compatible
Posted by Wojciech Sleńska 8 months, 2 weeks ago
pt., 23 maj 2025 o 01:30 Konrad Dybcio
<konrad.dybcio@oss.qualcomm.com> napisał(a):
>
> On 12/21/24 9:44 PM, Krzysztof Kozlowski wrote:
> > On 20/12/2024 08:35, Wojciech Slenska wrote:
> >> Document that ipa on qcm2290 uses version 4.2, the same
> >> as sc7180.
> >>
> >> Signed-off-by: Wojciech Slenska <wojciech.slenska@gmail.com>
> >> ---
> >>  Documentation/devicetree/bindings/net/qcom,ipa.yaml | 4 ++++
> >>  1 file changed, 4 insertions(+)
> >>
> >> diff --git a/Documentation/devicetree/bindings/net/qcom,ipa.yaml b/Documentation/devicetree/bindings/net/qcom,ipa.yaml
> >> index 53cae71d9957..ea44d02d1e5c 100644
> >> --- a/Documentation/devicetree/bindings/net/qcom,ipa.yaml
> >> +++ b/Documentation/devicetree/bindings/net/qcom,ipa.yaml
> >> @@ -58,6 +58,10 @@ properties:
> >>            - enum:
> >>                - qcom,sm8650-ipa
> >>            - const: qcom,sm8550-ipa
> >> +      - items:
> >> +          - enum:
> >> +              - qcom,qcm2290-ipa
> >> +          - const: qcom,sc7180-ipa
> >>
> > We usually keep such lists between each other ordered by fallback, so
> > this should go before sm8550-fallback-list.
> >
> > With that change:
> >
> > Acked-by: Krzysztof Kozlowski <krzk@kernel.org>
>
> (half a year later)
>
> I've now sent a series that resolves the issue described in the
> other branch of this thread. Feel free to pick up this binding
> Krzysztof/Rob/Kuba.
>
>
>
> Patch 2 will need an update and some prerequisite changes.
> Wojciech, you'll need:
>
> https://lore.kernel.org/linux-arm-msm/20250523-topic-ipa_imem-v1-0-b5d536291c7f@oss.qualcomm.com
> https://lore.kernel.org/linux-arm-msm/20250523-topic-ipa_mem_dts-v1-0-f7aa94fac1ab@oss.qualcomm.com
> https://github.com/quic-kdybcio/linux/commits/topic/ipa_qcm2290
>
> and a snippet like
>
> -----------o<-----------------------------------
>                         qcom,smem-state-names = "ipa-clock-enabled-valid",
>                                                 "ipa-clock-enabled";
>
> +                       sram = <&ipa_modem_tables>;
> +
>                         status = "disabled";
> -----------o<-----------------------------------
>
> added to your DT change
>
> please let me know if it works with the above
>
> if you're not interested anymore or don't have the board on hand,
> I can take up your patch, preserving your authorship ofc
>
> Konrad

Hello Konrad,

I have applied your patches on top of the 6.15 kernel.
I used the following:
Konrad Dybcio: arm64: dts: qcom: qcm2290: Explicitly describe the IPA IMEM slice
Konrad Dybcio: dt-bindings: sram: qcom,imem: Document QCM2290 IMEM
Konrad Dybcio: net: ipa: Grab IMEM slice base/size from DTS
Konrad Dybcio: dt-bindings: net: qcom,ipa: Add sram property for
describing IMEM slice
Konrad Dybcio: dt-bindings: sram: qcom,imem: Allow modem-tables
Konrad Dybcio: net: ipa: Make the SMEM item ID constant

Two corrections were needed:
1. A small change in the DTS:
-                       reg = <0x0c100000 0x2a000>;
-                       ranges = <0x0 0x0c100000 0x2a000>;
+                       reg = <0 0x0c100000 0 0x2a000>;
+                       ranges = <0 0 0x0c100000 0x2a000>;

This was necessary because, in the original version, the following line:
ret = of_address_to_resource(ipa_slice_np, 0, res);
returns -22

2. I also made a small modification here, because local variables were
not used in the function call. However, this issue has already been
reported.
-       ret = ipa_imem_init(ipa, mem_data->imem_addr, mem_data->imem_size);
+       dev_err(dev, "ipa_imem_init %0x %0x\n", imem_base, imem_size);
+       ret = ipa_imem_init(ipa, imem_base, imem_size);

Results
With these corrections, everything works perfectly.
dmesg:
[    0.832180] platform 5840000.ipa: Adding to iommu group 3
[    5.798469] ipa 5840000.ipa: ipa_imem_init c123000 2000
[    5.829216] ipa 5840000.ipa: IPA driver initialized
[    5.929674] ipa 5840000.ipa: IPA driver setup completed successfully
[    8.039075] ipa 5840000.ipa: received modem starting event
[    8.374774] ipa 5840000.ipa: received modem running event

Ipa is visible in ifaces:
5: qmapmux0.0@rmnet_ipa0: <UP,LOWER_UP> mtu 1496 qdisc pfifo_fast
state UNKNOWN group default qlen 1000
    link/[519]
    inet 10.86.101.79/27 brd 10.86.101.95 scope global qmapmux0.0
       valid_lft forever preferred_lft forever
    inet6 fe80::a8dc:ccff:feb3:e683/64 scope link proto kernel_ll
       valid_lft forever preferred_lft forever

Speedtest is also working fine:
$ speedtest
...
Testing download
speed................................................................................
Download: 8.62 Mbit/s
Testing upload speed......................................................................................................
Upload: 0.42 Mbit/s

Once your changes have been integrated, I will resubmit my patches.

BR
Wojtek
Re: [PATCH 1/2] dt-bindings: net: qcom,ipa: document qcm2290 compatible
Posted by Konrad Dybcio 8 months, 2 weeks ago
On 5/26/25 9:39 PM, Wojciech Sleńska wrote:
> pt., 23 maj 2025 o 01:30 Konrad Dybcio
> <konrad.dybcio@oss.qualcomm.com> napisał(a):
>>
>> On 12/21/24 9:44 PM, Krzysztof Kozlowski wrote:
>>> On 20/12/2024 08:35, Wojciech Slenska wrote:
>>>> Document that ipa on qcm2290 uses version 4.2, the same
>>>> as sc7180.
>>>>
>>>> Signed-off-by: Wojciech Slenska <wojciech.slenska@gmail.com>
>>>> ---
>>>>  Documentation/devicetree/bindings/net/qcom,ipa.yaml | 4 ++++
>>>>  1 file changed, 4 insertions(+)
>>>>
>>>> diff --git a/Documentation/devicetree/bindings/net/qcom,ipa.yaml b/Documentation/devicetree/bindings/net/qcom,ipa.yaml
>>>> index 53cae71d9957..ea44d02d1e5c 100644
>>>> --- a/Documentation/devicetree/bindings/net/qcom,ipa.yaml
>>>> +++ b/Documentation/devicetree/bindings/net/qcom,ipa.yaml
>>>> @@ -58,6 +58,10 @@ properties:
>>>>            - enum:
>>>>                - qcom,sm8650-ipa
>>>>            - const: qcom,sm8550-ipa
>>>> +      - items:
>>>> +          - enum:
>>>> +              - qcom,qcm2290-ipa
>>>> +          - const: qcom,sc7180-ipa
>>>>
>>> We usually keep such lists between each other ordered by fallback, so
>>> this should go before sm8550-fallback-list.
>>>
>>> With that change:
>>>
>>> Acked-by: Krzysztof Kozlowski <krzk@kernel.org>
>>
>> (half a year later)
>>
>> I've now sent a series that resolves the issue described in the
>> other branch of this thread. Feel free to pick up this binding
>> Krzysztof/Rob/Kuba.
>>
>>
>>
>> Patch 2 will need an update and some prerequisite changes.
>> Wojciech, you'll need:
>>
>> https://lore.kernel.org/linux-arm-msm/20250523-topic-ipa_imem-v1-0-b5d536291c7f@oss.qualcomm.com
>> https://lore.kernel.org/linux-arm-msm/20250523-topic-ipa_mem_dts-v1-0-f7aa94fac1ab@oss.qualcomm.com
>> https://github.com/quic-kdybcio/linux/commits/topic/ipa_qcm2290
>>
>> and a snippet like
>>
>> -----------o<-----------------------------------
>>                         qcom,smem-state-names = "ipa-clock-enabled-valid",
>>                                                 "ipa-clock-enabled";
>>
>> +                       sram = <&ipa_modem_tables>;
>> +
>>                         status = "disabled";
>> -----------o<-----------------------------------
>>
>> added to your DT change
>>
>> please let me know if it works with the above
>>
>> if you're not interested anymore or don't have the board on hand,
>> I can take up your patch, preserving your authorship ofc
>>
>> Konrad
> 
> Hello Konrad,
> 
> I have applied your patches on top of the 6.15 kernel.
> I used the following:
> Konrad Dybcio: arm64: dts: qcom: qcm2290: Explicitly describe the IPA IMEM slice
> Konrad Dybcio: dt-bindings: sram: qcom,imem: Document QCM2290 IMEM
> Konrad Dybcio: net: ipa: Grab IMEM slice base/size from DTS
> Konrad Dybcio: dt-bindings: net: qcom,ipa: Add sram property for
> describing IMEM slice
> Konrad Dybcio: dt-bindings: sram: qcom,imem: Allow modem-tables
> Konrad Dybcio: net: ipa: Make the SMEM item ID constant
> 
> Two corrections were needed:
> 1. A small change in the DTS:
> -                       reg = <0x0c100000 0x2a000>;
> -                       ranges = <0x0 0x0c100000 0x2a000>;
> +                       reg = <0 0x0c100000 0 0x2a000>;
> +                       ranges = <0 0 0x0c100000 0x2a000>;
> 
> This was necessary because, in the original version, the following line:
> ret = of_address_to_resource(ipa_slice_np, 0, res);
> returns -22

Ouch! thanks for noticing this and for all the testing

Konrad
Re: [PATCH 1/2] dt-bindings: net: qcom,ipa: document qcm2290 compatible
Posted by Wojciech Sleńska 8 months, 3 weeks ago
pt., 23 maj 2025 o 01:30 Konrad Dybcio
<konrad.dybcio@oss.qualcomm.com> napisał(a):
>
> On 12/21/24 9:44 PM, Krzysztof Kozlowski wrote:
> > On 20/12/2024 08:35, Wojciech Slenska wrote:
> >> Document that ipa on qcm2290 uses version 4.2, the same
> >> as sc7180.
> >>
> >> Signed-off-by: Wojciech Slenska <wojciech.slenska@gmail.com>
> >> ---
> >>  Documentation/devicetree/bindings/net/qcom,ipa.yaml | 4 ++++
> >>  1 file changed, 4 insertions(+)
> >>
> >> diff --git a/Documentation/devicetree/bindings/net/qcom,ipa.yaml b/Documentation/devicetree/bindings/net/qcom,ipa.yaml
> >> index 53cae71d9957..ea44d02d1e5c 100644
> >> --- a/Documentation/devicetree/bindings/net/qcom,ipa.yaml
> >> +++ b/Documentation/devicetree/bindings/net/qcom,ipa.yaml
> >> @@ -58,6 +58,10 @@ properties:
> >>            - enum:
> >>                - qcom,sm8650-ipa
> >>            - const: qcom,sm8550-ipa
> >> +      - items:
> >> +          - enum:
> >> +              - qcom,qcm2290-ipa
> >> +          - const: qcom,sc7180-ipa
> >>
> > We usually keep such lists between each other ordered by fallback, so
> > this should go before sm8550-fallback-list.
> >
> > With that change:
> >
> > Acked-by: Krzysztof Kozlowski <krzk@kernel.org>
>
> (half a year later)
>
> I've now sent a series that resolves the issue described in the
> other branch of this thread. Feel free to pick up this binding
> Krzysztof/Rob/Kuba.
>
>
>
> Patch 2 will need an update and some prerequisite changes.
> Wojciech, you'll need:
>
> https://lore.kernel.org/linux-arm-msm/20250523-topic-ipa_imem-v1-0-b5d536291c7f@oss.qualcomm.com
> https://lore.kernel.org/linux-arm-msm/20250523-topic-ipa_mem_dts-v1-0-f7aa94fac1ab@oss.qualcomm.com
> https://github.com/quic-kdybcio/linux/commits/topic/ipa_qcm2290
>
> and a snippet like
>
> -----------o<-----------------------------------
>                         qcom,smem-state-names = "ipa-clock-enabled-valid",
>                                                 "ipa-clock-enabled";
>
> +                       sram = <&ipa_modem_tables>;
> +
>                         status = "disabled";
> -----------o<-----------------------------------
>
> added to your DT change
>
> please let me know if it works with the above
>
> if you're not interested anymore or don't have the board on hand,
> I can take up your patch, preserving your authorship ofc
>
> Konrad

Hello Konrad,

Thank you very much for your input.

IPA is working stable and without any issues in my project, which is
using the QCM2290.

I will integrate and test your changes, and once they are submitted, I
will resend my patch.

Wojtek
Re: [PATCH 1/2] dt-bindings: net: qcom,ipa: document qcm2290 compatible
Posted by Konrad Dybcio 1 year, 1 month ago
On 20.12.2024 8:35 AM, Wojciech Slenska wrote:
> Document that ipa on qcm2290 uses version 4.2, the same
> as sc7180.
> 
> Signed-off-by: Wojciech Slenska <wojciech.slenska@gmail.com>
> ---

FWIW this needs some more work on the Linux side, the IPA driver
currently hardcodes a reference to IMEM, which has a different
base between these two SoCs.

The IMEM region doesn't seem to be used as of current, but things
will explode the second it is.

A long overdue update would be to make the IPA driver consume
a syscon/memory-region-like property pointing to IMEM (or a slice
of it, maybe Alex knows what it was supposed to be used for).

Konrad
Re: [PATCH 1/2] dt-bindings: net: qcom,ipa: document qcm2290 compatible
Posted by Alex Elder 8 months, 3 weeks ago
On 12/20/24 7:25 AM, Konrad Dybcio wrote:
> On 20.12.2024 8:35 AM, Wojciech Slenska wrote:
>> Document that ipa on qcm2290 uses version 4.2, the same
>> as sc7180.
>>
>> Signed-off-by: Wojciech Slenska <wojciech.slenska@gmail.com>
>> ---
> 
> FWIW this needs some more work on the Linux side, the IPA driver
> currently hardcodes a reference to IMEM, which has a different
> base between these two SoCs.

Everything currently assumes the IPA version dictates many things.
That works, so far.  But a lot of these fixed/hard-coded definitions
(per version) could be changed for specific implementations--they
just haven't needed to be.

> The IMEM region doesn't seem to be used as of current, but things
> will explode the second it is.
> 
> A long overdue update would be to make the IPA driver consume
> a syscon/memory-region-like property pointing to IMEM (or a slice
> of it, maybe Alex knows what it was supposed to be used for).

Yes, we talked about this last year, or the year before.

Konrad's patches to put this in DT is the right solution.
It doesn't matter that it's six months later.  I really
appreciate the improvement.

					-Alex

> 
> Konrad
Re: [PATCH 1/2] dt-bindings: net: qcom,ipa: document qcm2290 compatible
Posted by Alex Elder 1 year, 1 month ago
On 12/20/24 7:25 AM, Konrad Dybcio wrote:
> On 20.12.2024 8:35 AM, Wojciech Slenska wrote:
>> Document that ipa on qcm2290 uses version 4.2, the same
>> as sc7180.
>>
>> Signed-off-by: Wojciech Slenska <wojciech.slenska@gmail.com>
>> ---
> 
> FWIW this needs some more work on the Linux side, the IPA driver
> currently hardcodes a reference to IMEM, which has a different
> base between these two SoCs.

I have only glanced at this so far.  At the moment I don't
know whether this device uses a different range in IMEM, but
Konrad's message suggests it does.  And if so, he's correct:
the IMEM range needs to be defined differently (perhaps in
Device Tree) so that different SoCs using the same version
of IPA but different IMEM ranges can function correctly.

Downstream code should be consulted to determine this, and
as of now I have not done that.

					-Alex

> The IMEM region doesn't seem to be used as of current, but things
> will explode the second it is.
> 
> A long overdue update would be to make the IPA driver consume
> a syscon/memory-region-like property pointing to IMEM (or a slice
> of it, maybe Alex knows what it was supposed to be used for).
> 
> Konrad