mbox series

[v2,00/14] Add binding updates and DT files for SC7280 SoC

Message ID 1614773878-8058-1-git-send-email-rnayak@codeaurora.org
Headers show
Series Add binding updates and DT files for SC7280 SoC | expand

Message

Rajendra Nayak March 3, 2021, 12:17 p.m. UTC
This series includes a few minor binding updates and base device tree
files (to boot to shell) for SC7280 SoC and the IDP board using this SoC.

Maulik Shah (3):
  arm64: dts: qcom: sc7280: Add RSC and PDC devices
  arm64: dts: qcom: Add reserved memory for fw
  arm64: dts: qcom: sc7280: Add cpuidle states

Rajendra Nayak (6):
  dt-bindings: arm: qcom: Document sc7280 SoC and board
  dt-bindings: firmware: scm: Add sc7280 support
  arm64: dts: sc7280: Add basic dts/dtsi files for sc7280 soc
  dt-bindings: qcom,pdc: Add compatible for sc7280
  arm64: dts: qcom: SC7280: Add rpmhcc clock controller node
  arm64: dts: qcom: sc7280: Add rpmh power-domain node

Sai Prakash Ranjan (4):
  dt-bindings: arm-smmu: Add compatible for SC7280 SoC
  arm64: dts: qcom: sc7280: Add device node for APPS SMMU
  dt-bindings: watchdog: Add compatible for SC7280 SoC
  arm64: dts: qcom: sc7280: Add APSS watchdog node

satya priya (1):
  arm64: dts: qcom: sc7280: Add SPMI PMIC arbiter device for SC7280

 Documentation/devicetree/bindings/arm/qcom.yaml    |   6 +
 .../devicetree/bindings/firmware/qcom,scm.txt      |   1 +
 .../bindings/interrupt-controller/qcom,pdc.txt     |   1 +
 .../devicetree/bindings/iommu/arm,smmu.yaml        |   1 +
 .../devicetree/bindings/watchdog/qcom-wdt.yaml     |   1 +
 arch/arm64/boot/dts/qcom/Makefile                  |   1 +
 arch/arm64/boot/dts/qcom/sc7280-idp.dts            |  47 ++
 arch/arm64/boot/dts/qcom/sc7280.dtsi               | 609 +++++++++++++++++++++
 8 files changed, 667 insertions(+)
 create mode 100644 arch/arm64/boot/dts/qcom/sc7280-idp.dts
 create mode 100644 arch/arm64/boot/dts/qcom/sc7280.dtsi

Comments

Stephen Boyd March 4, 2021, 12:04 a.m. UTC | #1
Quoting Rajendra Nayak (2021-03-03 04:17:49)
> diff --git a/arch/arm64/boot/dts/qcom/sc7280.dtsi b/arch/arm64/boot/dts/qcom/sc7280.dtsi
> index 4a56d9c..21c2399 100644
> --- a/arch/arm64/boot/dts/qcom/sc7280.dtsi
> +++ b/arch/arm64/boot/dts/qcom/sc7280.dtsi
> @@ -30,6 +31,18 @@
>                 };
>         };
>  
> +       reserved_memory: reserved-memory {

Do we plan to use this label at any point? I'd prefer we remove this
until it becomes useful.

> +               #address-cells = <2>;
> +               #size-cells = <2>;
> +               ranges;
> +
> +               aop_cmd_db_mem: memory@80860000 {
> +                       reg = <0x0 0x80860000 0x0 0x20000>;
> +                       compatible = "qcom,cmd-db";
> +                       no-map;
> +               };
> +       };
> +
>         cpus {
>                 #address-cells = <2>;
>                 #size-cells = <0>;
> @@ -203,6 +229,7 @@
>                         interrupt-controller;
>                         #interrupt-cells = <2>;
>                         gpio-ranges = <&tlmm 0 0 175>;
> +                       wakeup-parent = <&pdc>;
>  
>                         qup_uart5_default: qup-uart5-default {
>                                 pins = "gpio46", "gpio47";
> @@ -287,6 +314,23 @@
>                                 status = "disabled";
>                         };
>                 };
> +
> +               apps_rsc: rsc@18200000 {

Any better name than 'rsc'? Maybe 'power-controller'?

> +                       compatible = "qcom,rpmh-rsc";
> +                       reg = <0 0x18200000 0 0x10000>,
> +                             <0 0x18210000 0 0x10000>,
> +                             <0 0x18220000 0 0x10000>;
> +                       reg-names = "drv-0", "drv-1", "drv-2";
> +                       interrupts = <GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>,
> +                                    <GIC_SPI 4 IRQ_TYPE_LEVEL_HIGH>,
> +                                    <GIC_SPI 5 IRQ_TYPE_LEVEL_HIGH>;
> +                       qcom,tcs-offset = <0xd00>;
> +                       qcom,drv-id = <2>;
> +                       qcom,tcs-config = <ACTIVE_TCS  2>,
> +                                         <SLEEP_TCS   3>,
> +                                         <WAKE_TCS    3>,
> +                                         <CONTROL_TCS 1>;
> +               };
>         };
Stephen Boyd March 4, 2021, 12:04 a.m. UTC | #2
Quoting Rajendra Nayak (2021-03-03 04:17:50)
> Add rpmhcc clock controller node for SC7280. Also add references to
> rpmhcc clocks in gcc.
> 
> Signed-off-by: Taniya Das <tdas@codeaurora.org>
> Signed-off-by: Rajendra Nayak <rnayak@codeaurora.org>
> ---

Reviewed-by: Stephen Boyd <swboyd@chromium.org>
Stephen Boyd March 4, 2021, 12:07 a.m. UTC | #3
Quoting Rajendra Nayak (2021-03-03 04:17:47)
> diff --git a/arch/arm64/boot/dts/qcom/sc7280.dtsi b/arch/arm64/boot/dts/qcom/sc7280.dtsi
> new file mode 100644
> index 0000000..4a56d9c
> --- /dev/null
> +++ b/arch/arm64/boot/dts/qcom/sc7280.dtsi
> @@ -0,0 +1,299 @@
> +// SPDX-License-Identifier: BSD-3-Clause
> +/*
> + * sc7280 SoC device tree source
> + *
> + * Copyright (c) 2020-2021, The Linux Foundation. All rights reserved.
> + */
> +
> +#include <dt-bindings/clock/qcom,gcc-sc7280.h>
> +#include <dt-bindings/interrupt-controller/arm-gic.h>
> +
> +/ {
> +       interrupt-parent = <&intc>;
> +
> +       #address-cells = <2>;
> +       #size-cells = <2>;
> +
> +       chosen { };
> +
> +       clocks {
> +               xo_board: xo-board {
> +                       compatible = "fixed-clock";
> +                       clock-frequency = <76800000>;

If this is the correct frequency I think we need to update the rpmh clk
driver to use the correct divider? Right now I think it is a 2 when it
should be 4?

> +                       #clock-cells = <0>;
> +               };
> +
> +               sleep_clk: sleep-clk {
> +                       compatible = "fixed-clock";
> +                       clock-frequency = <32000>;
> +                       #clock-cells = <0>;
> +               };
> +       };
Stephen Boyd March 4, 2021, 12:12 a.m. UTC | #4
Quoting Rajendra Nayak (2021-03-03 04:17:56)
> diff --git a/arch/arm64/boot/dts/qcom/sc7280.dtsi b/arch/arm64/boot/dts/qcom/sc7280.dtsi
> index fe4fdb9..aa6f847 100644
> --- a/arch/arm64/boot/dts/qcom/sc7280.dtsi
> +++ b/arch/arm64/boot/dts/qcom/sc7280.dtsi
> @@ -239,6 +239,25 @@
>                         interrupt-controller;
>                 };
>  
> +               spmi_bus: spmi@c440000 {
> +                       compatible = "qcom,spmi-pmic-arb";
> +                       reg = <0 0x0c440000 0 0x1100>,
> +                             <0 0x0c600000 0 0x2000000>,
> +                             <0 0x0e600000 0 0x100000>,
> +                             <0 0x0e700000 0 0xa0000>,
> +                             <0 0x0c40a000 0 0x26000>;
> +                       reg-names = "core", "chnls", "obsrvr", "intr", "cnfg";
> +                       interrupt-names = "periph_irq";
> +                       interrupts-extended = <&pdc 1 IRQ_TYPE_LEVEL_HIGH>;
> +                       qcom,ee = <0>;
> +                       qcom,channel = <0>;
> +                       #address-cells = <1>;
> +                       #size-cells = <1>;

I see the binding says these should be 2 instead of 1 but I suspect that
is incorrect.

> +                       interrupt-controller;
> +                       #interrupt-cells = <4>;
> +                       cell-index = <0>;

Is cell-index used? Please remove as I don't see it used anywhere and
not in the binding.

> +               };
> +
>                 tlmm: pinctrl@f100000 {
>                         compatible = "qcom,sc7280-pinctrl";
>                         reg = <0 0x0f100000 0 0x1000000>;
Stephen Boyd March 4, 2021, 12:13 a.m. UTC | #5
Quoting Rajendra Nayak (2021-03-03 04:17:57)
> From: Maulik Shah <mkshah@codeaurora.org>
> 
> Add cpuidle states for little and big cpus.

Please also say "The latency values are preliminary placeholders and will be updated
once testing provides the real numbers".

> 
> Signed-off-by: Maulik Shah <mkshah@codeaurora.org>
> Signed-off-by: Rajendra Nayak <rnayak@codeaurora.org>
> ---

With that commit text update

Reviewed-by: Stephen Boyd <swboyd@chromium.org>
Stephen Boyd March 4, 2021, 12:14 a.m. UTC | #6
Quoting Rajendra Nayak (2021-03-03 04:17:58)
> Add the DT node for the rpmhpd power controller on SC7280 SoCs.
> 
> Signed-off-by: Rajendra Nayak <rnayak@codeaurora.org>
> ---

Reviewed-by: Stephen Boyd <swboyd@chromium.org>
Rajendra Nayak March 5, 2021, 5:42 a.m. UTC | #7
On 3/4/2021 5:34 AM, Stephen Boyd wrote:
> Quoting Rajendra Nayak (2021-03-03 04:17:49)
>> diff --git a/arch/arm64/boot/dts/qcom/sc7280.dtsi b/arch/arm64/boot/dts/qcom/sc7280.dtsi
>> index 4a56d9c..21c2399 100644
>> --- a/arch/arm64/boot/dts/qcom/sc7280.dtsi
>> +++ b/arch/arm64/boot/dts/qcom/sc7280.dtsi
>> @@ -30,6 +31,18 @@
>>                  };
>>          };
>>   
>> +       reserved_memory: reserved-memory {
> 
> Do we plan to use this label at any point? I'd prefer we remove this
> until it becomes useful.

sure, i'll drop it

> 
>> +               #address-cells = <2>;
>> +               #size-cells = <2>;
>> +               ranges;
>> +
>> +               aop_cmd_db_mem: memory@80860000 {
>> +                       reg = <0x0 0x80860000 0x0 0x20000>;
>> +                       compatible = "qcom,cmd-db";
>> +                       no-map;
>> +               };
>> +       };
>> +
>>          cpus {
>>                  #address-cells = <2>;
>>                  #size-cells = <0>;
>> @@ -203,6 +229,7 @@
>>                          interrupt-controller;
>>                          #interrupt-cells = <2>;
>>                          gpio-ranges = <&tlmm 0 0 175>;
>> +                       wakeup-parent = <&pdc>;
>>   
>>                          qup_uart5_default: qup-uart5-default {
>>                                  pins = "gpio46", "gpio47";
>> @@ -287,6 +314,23 @@
>>                                  status = "disabled";
>>                          };
>>                  };
>> +
>> +               apps_rsc: rsc@18200000 {
> 
> Any better name than 'rsc'? Maybe 'power-controller'?

hmm, Maulik, any thoughts? This would perhaps need the bindings docs
to be updated as well (and maybe the existing platform DTs using rsc too)

> 
>> +                       compatible = "qcom,rpmh-rsc";
>> +                       reg = <0 0x18200000 0 0x10000>,
>> +                             <0 0x18210000 0 0x10000>,
>> +                             <0 0x18220000 0 0x10000>;
>> +                       reg-names = "drv-0", "drv-1", "drv-2";
>> +                       interrupts = <GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>,
>> +                                    <GIC_SPI 4 IRQ_TYPE_LEVEL_HIGH>,
>> +                                    <GIC_SPI 5 IRQ_TYPE_LEVEL_HIGH>;
>> +                       qcom,tcs-offset = <0xd00>;
>> +                       qcom,drv-id = <2>;
>> +                       qcom,tcs-config = <ACTIVE_TCS  2>,
>> +                                         <SLEEP_TCS   3>,
>> +                                         <WAKE_TCS    3>,
>> +                                         <CONTROL_TCS 1>;
>> +               };
>>          };
Rajendra Nayak March 5, 2021, 5:44 a.m. UTC | #8
On 3/4/2021 5:42 AM, Stephen Boyd wrote:
> Quoting Rajendra Nayak (2021-03-03 04:17:56)
>> diff --git a/arch/arm64/boot/dts/qcom/sc7280.dtsi b/arch/arm64/boot/dts/qcom/sc7280.dtsi
>> index fe4fdb9..aa6f847 100644
>> --- a/arch/arm64/boot/dts/qcom/sc7280.dtsi
>> +++ b/arch/arm64/boot/dts/qcom/sc7280.dtsi
>> @@ -239,6 +239,25 @@
>>                          interrupt-controller;
>>                  };
>>   
>> +               spmi_bus: spmi@c440000 {
>> +                       compatible = "qcom,spmi-pmic-arb";
>> +                       reg = <0 0x0c440000 0 0x1100>,
>> +                             <0 0x0c600000 0 0x2000000>,
>> +                             <0 0x0e600000 0 0x100000>,
>> +                             <0 0x0e700000 0 0xa0000>,
>> +                             <0 0x0c40a000 0 0x26000>;
>> +                       reg-names = "core", "chnls", "obsrvr", "intr", "cnfg";
>> +                       interrupt-names = "periph_irq";
>> +                       interrupts-extended = <&pdc 1 IRQ_TYPE_LEVEL_HIGH>;
>> +                       qcom,ee = <0>;
>> +                       qcom,channel = <0>;
>> +                       #address-cells = <1>;
>> +                       #size-cells = <1>;
> 
> I see the binding says these should be 2 instead of 1 but I suspect that
> is incorrect.

yeah looks like the bindings need to be fixed

> 
>> +                       interrupt-controller;
>> +                       #interrupt-cells = <4>;
>> +                       cell-index = <0>;
> 
> Is cell-index used? Please remove as I don't see it used anywhere and
> not in the binding.

I'll drop it. thanks

> 
>> +               };
>> +
>>                  tlmm: pinctrl@f100000 {
>>                          compatible = "qcom,sc7280-pinctrl";
>>                          reg = <0 0x0f100000 0 0x1000000>;
Rajendra Nayak March 5, 2021, 5:44 a.m. UTC | #9
On 3/4/2021 5:43 AM, Stephen Boyd wrote:
> Quoting Rajendra Nayak (2021-03-03 04:17:57)
>> From: Maulik Shah <mkshah@codeaurora.org>
>>
>> Add cpuidle states for little and big cpus.
> 
> Please also say "The latency values are preliminary placeholders and will be updated
> once testing provides the real numbers".

will do when I respin, thanks.

> 
>>
>> Signed-off-by: Maulik Shah <mkshah@codeaurora.org>
>> Signed-off-by: Rajendra Nayak <rnayak@codeaurora.org>
>> ---
> 
> With that commit text update
> 
> Reviewed-by: Stephen Boyd <swboyd@chromium.org>
>
Maulik Shah March 8, 2021, 5:21 a.m. UTC | #10
Hi,

On 3/5/2021 11:12 AM, Rajendra Nayak wrote:
>
> On 3/4/2021 5:34 AM, Stephen Boyd wrote:
>> Quoting Rajendra Nayak (2021-03-03 04:17:49)
>>> diff --git a/arch/arm64/boot/dts/qcom/sc7280.dtsi 
>>> b/arch/arm64/boot/dts/qcom/sc7280.dtsi
>>> index 4a56d9c..21c2399 100644
>>> --- a/arch/arm64/boot/dts/qcom/sc7280.dtsi
>>> +++ b/arch/arm64/boot/dts/qcom/sc7280.dtsi
>>> @@ -30,6 +31,18 @@
>>>                  };
>>>          };
>>>   +       reserved_memory: reserved-memory {
>>
>> Do we plan to use this label at any point? I'd prefer we remove this
>> until it becomes useful.
>
> sure, i'll drop it
>
>>
>>> +               #address-cells = <2>;
>>> +               #size-cells = <2>;
>>> +               ranges;
>>> +
>>> +               aop_cmd_db_mem: memory@80860000 {
>>> +                       reg = <0x0 0x80860000 0x0 0x20000>;
>>> +                       compatible = "qcom,cmd-db";
>>> +                       no-map;
>>> +               };
>>> +       };
>>> +
>>>          cpus {
>>>                  #address-cells = <2>;
>>>                  #size-cells = <0>;
>>> @@ -203,6 +229,7 @@
>>>                          interrupt-controller;
>>>                          #interrupt-cells = <2>;
>>>                          gpio-ranges = <&tlmm 0 0 175>;
>>> +                       wakeup-parent = <&pdc>;
>>>                            qup_uart5_default: qup-uart5-default {
>>>                                  pins = "gpio46", "gpio47";
>>> @@ -287,6 +314,23 @@
>>>                                  status = "disabled";
>>>                          };
>>>                  };
>>> +
>>> +               apps_rsc: rsc@18200000 {
>>
>> Any better name than 'rsc'? Maybe 'power-controller'?
>
> hmm, Maulik, any thoughts? This would perhaps need the bindings docs
> to be updated as well (and maybe the existing platform DTs using rsc too)

I think we should be good with rsc (resource-state-coordinator). RSC 
itself don't do any resource power management.

Thanks,
Maulik
>
>>
>>> +                       compatible = "qcom,rpmh-rsc";
>>> +                       reg = <0 0x18200000 0 0x10000>,
>>> +                             <0 0x18210000 0 0x10000>,
>>> +                             <0 0x18220000 0 0x10000>;
>>> +                       reg-names = "drv-0", "drv-1", "drv-2";
>>> +                       interrupts = <GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>,
>>> +                                    <GIC_SPI 4 IRQ_TYPE_LEVEL_HIGH>,
>>> +                                    <GIC_SPI 5 IRQ_TYPE_LEVEL_HIGH>;
>>> +                       qcom,tcs-offset = <0xd00>;
>>> +                       qcom,drv-id = <2>;
>>> +                       qcom,tcs-config = <ACTIVE_TCS 2>,
>>> +                                         <SLEEP_TCS 3>,
>>> +                                         <WAKE_TCS 3>,
>>> +                                         <CONTROL_TCS 1>;
>>> +               };
>>>          };
>
Rajendra Nayak March 11, 2021, 9:18 a.m. UTC | #11
On 3/4/2021 5:37 AM, Stephen Boyd wrote:
> Quoting Rajendra Nayak (2021-03-03 04:17:47)
>> diff --git a/arch/arm64/boot/dts/qcom/sc7280.dtsi b/arch/arm64/boot/dts/qcom/sc7280.dtsi
>> new file mode 100644
>> index 0000000..4a56d9c
>> --- /dev/null
>> +++ b/arch/arm64/boot/dts/qcom/sc7280.dtsi
>> @@ -0,0 +1,299 @@
>> +// SPDX-License-Identifier: BSD-3-Clause
>> +/*
>> + * sc7280 SoC device tree source
>> + *
>> + * Copyright (c) 2020-2021, The Linux Foundation. All rights reserved.
>> + */
>> +
>> +#include <dt-bindings/clock/qcom,gcc-sc7280.h>
>> +#include <dt-bindings/interrupt-controller/arm-gic.h>
>> +
>> +/ {
>> +       interrupt-parent = <&intc>;
>> +
>> +       #address-cells = <2>;
>> +       #size-cells = <2>;
>> +
>> +       chosen { };
>> +
>> +       clocks {
>> +               xo_board: xo-board {
>> +                       compatible = "fixed-clock";
>> +                       clock-frequency = <76800000>;
> 
> If this is the correct frequency I think we need to update the rpmh clk
> driver to use the correct divider? Right now I think it is a 2 when it
> should be 4?

Looks like this is fixed now [1]

[1] https://lore.kernel.org/patchwork/patch/1393159/

> 
>> +                       #clock-cells = <0>;
>> +               };
>> +
>> +               sleep_clk: sleep-clk {
>> +                       compatible = "fixed-clock";
>> +                       clock-frequency = <32000>;
>> +                       #clock-cells = <0>;
>> +               };
>> +       };
Stephen Boyd March 23, 2021, 7:06 a.m. UTC | #12
Quoting Maulik Shah (2021-03-07 21:21:04)
> Hi,
> 
> On 3/5/2021 11:12 AM, Rajendra Nayak wrote:
> >
> > On 3/4/2021 5:34 AM, Stephen Boyd wrote:
> >> Quoting Rajendra Nayak (2021-03-03 04:17:49)
> >>> diff --git a/arch/arm64/boot/dts/qcom/sc7280.dtsi 
> >>> b/arch/arm64/boot/dts/qcom/sc7280.dtsi
> >>> index 4a56d9c..21c2399 100644
> >>> --- a/arch/arm64/boot/dts/qcom/sc7280.dtsi
> >>> +++ b/arch/arm64/boot/dts/qcom/sc7280.dtsi
> >>> @@ -30,6 +31,18 @@
> >>>                  };
> >>>          };
> >>>   +       reserved_memory: reserved-memory {
> >>
> >> Do we plan to use this label at any point? I'd prefer we remove this
> >> until it becomes useful.
> >
> > sure, i'll drop it
> >
> >>
> >>> +               #address-cells = <2>;
> >>> +               #size-cells = <2>;
> >>> +               ranges;
> >>> +
> >>> +               aop_cmd_db_mem: memory@80860000 {
> >>> +                       reg = <0x0 0x80860000 0x0 0x20000>;
> >>> +                       compatible = "qcom,cmd-db";
> >>> +                       no-map;
> >>> +               };
> >>> +       };
> >>> +
> >>>          cpus {
> >>>                  #address-cells = <2>;
> >>>                  #size-cells = <0>;
> >>> @@ -203,6 +229,7 @@
> >>>                          interrupt-controller;
> >>>                          #interrupt-cells = <2>;
> >>>                          gpio-ranges = <&tlmm 0 0 175>;
> >>> +                       wakeup-parent = <&pdc>;
> >>>                            qup_uart5_default: qup-uart5-default {
> >>>                                  pins = "gpio46", "gpio47";
> >>> @@ -287,6 +314,23 @@
> >>>                                  status = "disabled";
> >>>                          };
> >>>                  };
> >>> +
> >>> +               apps_rsc: rsc@18200000 {
> >>
> >> Any better name than 'rsc'? Maybe 'power-controller'?
> >
> > hmm, Maulik, any thoughts? This would perhaps need the bindings docs
> > to be updated as well (and maybe the existing platform DTs using rsc too)
> 
> I think we should be good with rsc (resource-state-coordinator). RSC 
> itself don't do any resource power management.
> 

Maybe 'mailbox' then? Or 'remoteproc'? I am not "good" with rsc as it
isn't part of the standardized nodes names per the DT spec.