mbox series

[00/47] arm64: qcom: dts: add QCS9100 support

Message ID 20240703025850.2172008-1-quic_tengfan@quicinc.com (mailing list archive)
Headers show
Series arm64: qcom: dts: add QCS9100 support | expand

Message

Tengfei Fan July 3, 2024, 2:58 a.m. UTC
Introduce support for the QCS9100 SoC device tree (DTSI) and the
QCS9100 RIDE board DTS. The QCS9100 is a variant of the SA8775p.
While the QCS9100 platform is still in the early design stage, the
QCS9100 RIDE board is identical to the SA8775p RIDE board, except it
mounts the QCS9100 SoC instead of the SA8775p SoC.

The QCS9100 SoC DTSI was directly renamed from the SA8775p SoC DTSI. In
the upcoming weeks, Nikunj Kela will develop a new device tree related
to SA8775p, specifically supporting the SCMI resource firmware solution
for the SA8775p platform. If you're already familiar with the
background, feel free to skip part[2], which provides a detailed
explanation.

All compatible strings have been updated from “SA8775P” to “QCS9100.”
If you’re already aware of the context, feel free to skip part[3], which
provides a detailed explanation of various other options.

Here’s the reason and background: Bjorn Andersson, Nikunj Kela,
Srinivas Kandagatla, and other Qualcomm engineers contributed to the
current design, and we’ve finalized this series for broader audience
review.

*This patch series aligns with upstream efforts toward a new design
solution: “Using logical performance and power domains to achieve
resource abstraction over SCMI.” For more details, refer to [1]:
[1]https://resources.linaro.org/en/resource/wfnfEwBhRjLV1PEAJoDDte

*The SA8775p-RIDE will transition to using SCMI resources. This involves
migrating to SCMI power and performance protocols for requesting and
configuring peripheral resources such as clocks, regulators,
interconnects, and PHYs. Consequently, most devices in the SA8775p-RIDE
will require updates to drivers, bindings, and device trees.

*The QCS9100-RIDE project will continue using the existing resources.
It will rely on the current kernel infrastructure for clocks, regulators,
interconnects, PHYs, and APIs.

[2] The reason of qcs9100.dtsi renamed from sa8775.dtsi:
The proposal is to maintain two separate platform.dtsi files.
qcs9100.dtsi for non-scmi resources and sa8775p.dtsi for SCMI resources.
Currently, the upstream sa8775p.dtsi contains 176 nodes with specified
“compatible” strings. Among these, 142 nodes require distinct properties
for SCMI and non-SCMI. As the IoT target is being upstreamed, both node
counts are expected to increase for the IoT/QCS platform.

If we do not implement platform separation, any modifications to the
base sa8775p.dtsi-whether for automotive or IoT purposes-must consider
the other platform. Each node(e.g., remoteproc, multimedia) added should
be countered with an overlay that disables it in the automotive context.
Care must be taken to avoid introducing changes that inferfere with the
automotive system design, This structure poses challenges for human
reasioning, leading to issues during development, code review, and
maintenance.

Furthermore, we are addressing the complexity of resuing marketing names
accross both the IoT(QCS9100) and automotive(SA8775p) platforms. This
decision has significations throughout DeviceTree and the kernel.
Consequently, renameing the QCS9100 device tree files from the SA8775p
device files is our definitive choice.

[3] The reason of All Compatible Strings Changed from “SA8775P” to
“QCS9100”:
During discussions, three options were considered. Ultimately, Option
B was chosen as the best approach for separating QCS projects from SA
projects. This decision simplifies the reviewer’s task by focusing on
each platform independently. Developers only need to verify the
affected platform.

*Option A: “And” (qcs9100+sa8775):

Add all qcs9100-compatible strings alongside the current
sa8775p-compatible strings in each binding file. For example:
aggre1_noc: interconnect-aggre1-noc {
-    compatible = "qcom,sa8775p-aggre1-noc";
+    compatible = "qcom,qcs9100-aggre1-noc", "qcom,sa8775p-aggre1-noc";
    #interconnect-cells = <2>;
    qcom,bcm-voters = <&apps_bcm_voter>; };

Some device tree (DT) nodes may share common compatibles. For instance:
firmware {
    scm {
-        compatible = "qcom,scm-sa8775p", "qcom,scm";
+        compatible = "qcom,scm-qcs9100", "qcom,scm";
    };
};

Approximately 50+ sa8775p-related compatible names need to be changed
to qcs9100-compatible names in the binding files and DT nodes.
When the SCMI resource driver owner adds SCMI support, they need to
update both the qcs9100 DT (non-SCMI resource) and the sa8775 DT (SCMI
resource) simultaneously.
For this option:

DT and binding changes are needed.
No driver C file changes are required at this time.
Technical driver owners must handle both the qcs DT and sa DT.

*Option B: “Or” (qcs9100 or sa8775):

Replace all qcs9100-compatible strings with the current
sa8775p-compatible strings in the qcs9100 DT. For example:
aggre1_noc: interconnect-aggre1-noc {
-    compatible = "qcom,sa8775p-aggre1-noc";
+    compatible = "qcom,qcs9100-aggre1-noc";
    #interconnect-cells = <2>;
    qcom,bcm-voters = <&apps_bcm_voter>; };

Add the necessary “qcs9100” compatible strings to the C driver. In
drivers/interconnect/qcom/sa8775p.c:
static const struct of_device_id qnoc_of_match[] = {
    { .compatible = "qcom,sa8775p-aggre1-noc", .data = &sa8775p_aggre1_noc },
+   { .compatible = "qcom,qcs9100-aggre1-noc", .data =
&sa8775p_aggre1_noc },
    { .compatible = "qcom,sa8775p-aggre2-noc", .data = &sa8775p_aggre2_noc },
+   { .compatible = "qcom,qcs9100-aggre2-noc", .data =
&sa8775p_aggre2_noc },
    // ...
};

Some DT nodes may share common compatibles, similar to the example above.
Approximately 50+ sa8775p-related compatible names need to be changed to
qcs9100-compatible names in the binding files and DT nodes.
When the SCMI resource driver owner adds SCMI support, they only need to
update the sa8775 DT (SCMI resource).
For this option:
DT, binding, and C driver changes are needed.
Technical driver owners only need to handle the sa DT.

*Option C: “Depends” (sa8775 in qcs9100, depends on driver to change
necessary driver + DT later):
This option depends on the SCMI resource solution and requires minimal
driver changes.

Change common compatibles to “qcs9100,” as shown in the example:
firmware {
    scm {
-        compatible = "qcom,scm-sa8775p", "qcom,scm";
+        compatible = "qcom,scm-qcs9100", "qcom,scm";
    };
};

Approximately 30+ sa8775p-related compatible names need to be changed
to qcs9100-compatible names in the binding files and DT nodes.
When the SCMI resource driver owner adds SCMI support, they must
update both the qcs9100 DT and the sa8775 DT (SCMI resource)
simultaneously.
For example:

{ .compatible = "qcom,sa8775p-aggre1-noc", .data = &sa8775p_aggre1_noc },
+ { .compatible = "qcom,qcs9100-aggre1-noc", .data = &qcs9100_aggre1_noc
+ },
{ .compatible = "qcom,sa8775p-aggre2-noc", .data = &sa8775p_aggre2_noc },
+ { .compatible = "qcom,qcs9100-aggre2-noc", .data = &qcs9100_aggre2_noc
+ },
// ...

For this option:
DT changes are needed.
Technical driver owners are responsible for making the final different
driver changes and ensuring the exact binding of qcs9100 and sa8775
with different compatibles.

In summary, the current solution primarily targets SCMI-based resource
transactions. However, both the qcs project and the SA project, which
are in the development stage, require independent development processes.

Co-developed-by: Maria Yu <quic_aiquny@quicinc.com>
Signed-off-by: Maria Yu <quic_aiquny@quicinc.com>
Signed-off-by: Tengfei Fan <quic_tengfan@quicinc.com>
---

Tengfei Fan (47):
  dt-bindings: arm: qcom: Document QCS9100 SoC and RIDE board
  arm64: dts: qcom: qcs9100: Introduce QCS9100 SoC dtsi
  arm64: dts: qcom: qcs9100: Introduce QCS9100 PMIC dtsi
  arm64: dts: qcom: qcs9100: Add QCS9100 RIDE board dts
  dt-bindings: firmware: qcom,scm: document SCM on QCS9100 SoC
  dt-bindings: interconnect: qcom: document the interconnect compatibles
    for QCS9100
  dt-bindings: clock: document QCS9100 GCC compatible
  dt-bindings: mailbox: qcom-ipcc: Document the QCS9100 IPCC
  dt-bindings: phy: Add QMP UFS PHY comptible for QCS9100
  dt-bindings: crypto: ice: Document QCS9100 inline crypto engine
  dt-bindings: crypto: qcom,prng: document QCS9100
  dt-bindings: phy: qcom,usb-snps-femto-v2: Add bindings for QCS9100
  dt-bindings: ufs: qcom: document QCS9100 UFS
  dt-bindings: phy: qcom,qmp-usb: Add QCS9100 USB3 PHY
  dt-bindings: usb: dwc3: Add QCS9100 compatible
  dt-bindings: clock: qcom: describe the GPUCC clock for QCS9100
  dt-bindings: arm-smmu: Document QCS9100 GPU SMMU
  dt-bindings: phy: describe the Qualcomm SGMII PHY for QCS9100
  dt-bindings: cache: qcom,llcc: Add QCS9100 description
  dt-bindings: interrupt-controller: qcom,pdc: document pdc on QCS9100
  dt-bindings: thermal: qcom-tsens: document the QCS9100 Temperature
    Sensor
  dt-bindings: soc: qcom,aoss-qmp: Document the QCS9100 AOSS channel
  dt-bindings: pinctrl: add qcs9100-tlmm compatible
  dt-bindings: soc: qcom: add qcom,qcs9100-imem compatible
  dt-bindings: watchdog: qcom-wdt: document QCS9100
  dt-bindings: clock: qcom-rpmhcc: Add RPMHCC bindings for QCS9100
  dt-bindings: cpufreq: cpufreq-qcom-hw: Add QCS9100 compatibles
  dt-bindings: power: qcom,rpmpd: document the QCS9100 RPMh Power
    Domains
  dt-bindings: net: qcom,ethqos: add description for qcs9100
  dt-bindings: PCI: Document compatible for QCS9100
  dt-bindings: PCI: qcom-ep: Add support for QCS9100 SoC
  dt-bindings: phy: qcom,qmp: Add qcs9100 QMP PCIe PHY
  interconnect: qcom: add driver support for qcs9100
  clk: qcom: add the GCC driver support for QCS9100
  phy: qcom-qmp-ufs: Add QCS9100 support
  phy: qcpm-qmp-usb: Add support for QCS9100
  clk: qcom: add the GPUCC driver support for QCS9100
  phy: qcom: add the SGMII SerDes PHY driver support
  soc: qcom: llcc: Add llcc configuration support for the QCS9100
    platform
  pinctrl: qcom: add the tlmm driver support for qcs9100 platform
  clk: qcom: rpmh: Add support for QCS9100 rpmh clocks
  soc: qcom: rmphpd: add power domains for QCS9100
  net: stmmac: dwmac-qcom-ethqos: add support for emac4 on qcs9100
    platforms
  PCI: qcom: Add support for QCS9100 SoC
  PCI: qcom-ep: Add HDMA support for QCS9100 SoC
  cpufreq: qcom-nvmem: add support for QCS9100
  phy: qcom-qmp-pcie: add x4 lane EP support for QCS9100

 .../devicetree/bindings/arm/qcom.yaml         |   3 +
 .../devicetree/bindings/cache/qcom,llcc.yaml  |   2 +
 .../devicetree/bindings/clock/qcom,gpucc.yaml |   1 +
 .../bindings/clock/qcom,rpmhcc.yaml           |   1 +
 .../bindings/clock/qcom,sa8775p-gcc.yaml      |   5 +-
 .../bindings/cpufreq/cpufreq-qcom-hw.yaml     |   1 +
 .../crypto/qcom,inline-crypto-engine.yaml     |   1 +
 .../devicetree/bindings/crypto/qcom,prng.yaml |   1 +
 .../bindings/firmware/qcom,scm.yaml           |   1 +
 .../interconnect/qcom,sa8775p-rpmh.yaml       |  14 +++
 .../interrupt-controller/qcom,pdc.yaml        |   1 +
 .../devicetree/bindings/iommu/arm,smmu.yaml   |   3 +
 .../bindings/mailbox/qcom-ipcc.yaml           |   1 +
 .../devicetree/bindings/net/qcom,ethqos.yaml  |   1 +
 .../devicetree/bindings/net/snps,dwmac.yaml   |   3 +
 .../devicetree/bindings/pci/qcom,pcie-ep.yaml |   2 +
 .../bindings/pci/qcom,pcie-sa8775p.yaml       |   5 +-
 .../phy/qcom,sa8775p-dwmac-sgmii-phy.yaml     |   5 +-
 .../phy/qcom,sc8280xp-qmp-pcie-phy.yaml       |   4 +
 .../phy/qcom,sc8280xp-qmp-ufs-phy.yaml        |   2 +
 .../phy/qcom,sc8280xp-qmp-usb3-uni-phy.yaml   |   3 +
 .../bindings/phy/qcom,usb-snps-femto-v2.yaml  |   1 +
 .../bindings/pinctrl/qcom,sa8775p-tlmm.yaml   |   5 +-
 .../devicetree/bindings/power/qcom,rpmpd.yaml |   1 +
 .../bindings/soc/qcom/qcom,aoss-qmp.yaml      |   1 +
 .../devicetree/bindings/sram/qcom,imem.yaml   |   1 +
 .../bindings/thermal/qcom-tsens.yaml          |   1 +
 .../devicetree/bindings/ufs/qcom,ufs.yaml     |   2 +
 .../devicetree/bindings/usb/qcom,dwc3.yaml    |   3 +
 .../bindings/watchdog/qcom-wdt.yaml           |   1 +
 arch/arm64/boot/dts/qcom/Makefile             |   2 +-
 ...{sa8775p-pmics.dtsi => qcs9100-pmics.dtsi} |   0
 .../{sa8775p-ride.dts => qcs9100-ride.dts}    |   8 +-
 .../dts/qcom/{sa8775p.dtsi => qcs9100.dtsi}   | 112 +++++++++---------
 drivers/clk/qcom/clk-rpmh.c                   |   1 +
 drivers/clk/qcom/gcc-sa8775p.c                |   1 +
 drivers/clk/qcom/gpucc-sa8775p.c              |   1 +
 drivers/cpufreq/cpufreq-dt-platdev.c          |   1 +
 drivers/interconnect/qcom/sa8775p.c           |  14 +++
 .../stmicro/stmmac/dwmac-qcom-ethqos.c        |   1 +
 drivers/pci/controller/dwc/pcie-qcom-ep.c     |   1 +
 drivers/pci/controller/dwc/pcie-qcom.c        |   1 +
 drivers/phy/qualcomm/phy-qcom-qmp-pcie.c      |   6 +
 drivers/phy/qualcomm/phy-qcom-qmp-ufs.c       |   3 +
 drivers/phy/qualcomm/phy-qcom-qmp-usb.c       |   3 +
 drivers/phy/qualcomm/phy-qcom-sgmii-eth.c     |   1 +
 drivers/pinctrl/qcom/pinctrl-sa8775p.c        |   1 +
 drivers/pmdomain/qcom/rpmhpd.c                |   1 +
 drivers/soc/qcom/llcc-qcom.c                  |   1 +
 49 files changed, 170 insertions(+), 65 deletions(-)
 rename arch/arm64/boot/dts/qcom/{sa8775p-pmics.dtsi => qcs9100-pmics.dtsi} (100%)
 rename arch/arm64/boot/dts/qcom/{sa8775p-ride.dts => qcs9100-ride.dts} (99%)
 rename arch/arm64/boot/dts/qcom/{sa8775p.dtsi => qcs9100.dtsi} (97%)


base-commit: 82e4255305c554b0bb18b7ccf2db86041b4c8b6e

Comments

Tengfei Fan July 3, 2024, 3:56 a.m. UTC | #1
Introduce support for the QCS9100 SoC device tree (DTSI) and the
QCS9100 RIDE board DTS. The QCS9100 is a variant of the SA8775p.
While the QCS9100 platform is still in the early design stage, the
QCS9100 RIDE board is identical to the SA8775p RIDE board, except it
mounts the QCS9100 SoC instead of the SA8775p SoC.

The QCS9100 SoC DTSI was directly renamed from the SA8775p SoC DTSI. In
the upcoming weeks, Nikunj Kela will develop a new device tree related
to SA8775p, specifically supporting the SCMI resource firmware solution
for the SA8775p platform. If you're already familiar with the
background, feel free to skip part[2], which provides a detailed
explanation.

All compatible strings have been updated from “SA8775P” to “QCS9100.”
If you’re already aware of the context, feel free to skip part[3], which
provides a detailed explanation of various other options.

Here’s the reason and background: Bjorn Andersson, Nikunj Kela,
Srinivas Kandagatla, and other Qualcomm engineers contributed to the
current design, and we’ve finalized this series for broader audience
review.

*This patch series aligns with upstream efforts toward a new design
solution: “Using logical performance and power domains to achieve
resource abstraction over SCMI.” For more details, refer to [1]:
[1]https://resources.linaro.org/en/resource/wfnfEwBhRjLV1PEAJoDDte

*The SA8775p-RIDE will transition to using SCMI resources. This involves
migrating to SCMI power and performance protocols for requesting and
configuring peripheral resources such as clocks, regulators,
interconnects, and PHYs. Consequently, most devices in the SA8775p-RIDE
will require updates to drivers, bindings, and device trees.

*The QCS9100-RIDE project will continue using the existing resources.
It will rely on the current kernel infrastructure for clocks, regulators,
interconnects, PHYs, and APIs.

[2] The reason of qcs9100.dtsi renamed from sa8775.dtsi:
The proposal is to maintain two separate platform.dtsi files.
qcs9100.dtsi for non-scmi resources and sa8775p.dtsi for SCMI resources.
Currently, the upstream sa8775p.dtsi contains 176 nodes with specified
“compatible” strings. Among these, 142 nodes require distinct properties
for SCMI and non-SCMI. As the IoT target is being upstreamed, both node
counts are expected to increase for the IoT/QCS platform.

If we do not implement platform separation, any modifications to the
base sa8775p.dtsi-whether for automotive or IoT purposes-must consider
the other platform. Each node(e.g., remoteproc, multimedia) added should
be countered with an overlay that disables it in the automotive context.
Care must be taken to avoid introducing changes that inferfere with the
automotive system design, This structure poses challenges for human
reasioning, leading to issues during development, code review, and
maintenance.

Furthermore, we are addressing the complexity of resuing marketing names
accross both the IoT(QCS9100) and automotive(SA8775p) platforms. This
decision has significations throughout DeviceTree and the kernel.
Consequently, renameing the QCS9100 device tree files from the SA8775p
device files is our definitive choice.

[3] The reason of All Compatible Strings Changed from “SA8775P” to
“QCS9100”:
During discussions, three options were considered. Ultimately, Option
B was chosen as the best approach for separating QCS projects from SA
projects. This decision simplifies the reviewer’s task by focusing on
each platform independently. Developers only need to verify the
affected platform.

*Option A: “And” (qcs9100+sa8775):

Add all qcs9100-compatible strings alongside the current
sa8775p-compatible strings in each binding file. For example:
aggre1_noc: interconnect-aggre1-noc {
-    compatible = "qcom,sa8775p-aggre1-noc";
+    compatible = "qcom,qcs9100-aggre1-noc", "qcom,sa8775p-aggre1-noc";
    #interconnect-cells = <2>;
    qcom,bcm-voters = <&apps_bcm_voter>; };

Some device tree (DT) nodes may share common compatibles. For instance:
firmware {
    scm {
-        compatible = "qcom,scm-sa8775p", "qcom,scm";
+        compatible = "qcom,scm-qcs9100", "qcom,scm";
    };
};

Approximately 50+ sa8775p-related compatible names need to be changed
to qcs9100-compatible names in the binding files and DT nodes.
When the SCMI resource driver owner adds SCMI support, they need to
update both the qcs9100 DT (non-SCMI resource) and the sa8775 DT (SCMI
resource) simultaneously.
For this option:

DT and binding changes are needed.
No driver C file changes are required at this time.
Technical driver owners must handle both the qcs DT and sa DT.

*Option B: “Or” (qcs9100 or sa8775):

Replace all qcs9100-compatible strings with the current
sa8775p-compatible strings in the qcs9100 DT. For example:
aggre1_noc: interconnect-aggre1-noc {
-    compatible = "qcom,sa8775p-aggre1-noc";
+    compatible = "qcom,qcs9100-aggre1-noc";
    #interconnect-cells = <2>;
    qcom,bcm-voters = <&apps_bcm_voter>; };

Add the necessary “qcs9100” compatible strings to the C driver. In
drivers/interconnect/qcom/sa8775p.c:
static const struct of_device_id qnoc_of_match[] = {
    { .compatible = "qcom,sa8775p-aggre1-noc", .data = &sa8775p_aggre1_noc },
+   { .compatible = "qcom,qcs9100-aggre1-noc", .data =
&sa8775p_aggre1_noc },
    { .compatible = "qcom,sa8775p-aggre2-noc", .data = &sa8775p_aggre2_noc },
+   { .compatible = "qcom,qcs9100-aggre2-noc", .data =
&sa8775p_aggre2_noc },
    // ...
};

Some DT nodes may share common compatibles, similar to the example above.
Approximately 50+ sa8775p-related compatible names need to be changed to
qcs9100-compatible names in the binding files and DT nodes.
When the SCMI resource driver owner adds SCMI support, they only need to
update the sa8775 DT (SCMI resource).
For this option:
DT, binding, and C driver changes are needed.
Technical driver owners only need to handle the sa DT.

*Option C: “Depends” (sa8775 in qcs9100, depends on driver to change
necessary driver + DT later):
This option depends on the SCMI resource solution and requires minimal
driver changes.

Change common compatibles to “qcs9100,” as shown in the example:
firmware {
    scm {
-        compatible = "qcom,scm-sa8775p", "qcom,scm";
+        compatible = "qcom,scm-qcs9100", "qcom,scm";
    };
};

Approximately 30+ sa8775p-related compatible names need to be changed
to qcs9100-compatible names in the binding files and DT nodes.
When the SCMI resource driver owner adds SCMI support, they must
update both the qcs9100 DT and the sa8775 DT (SCMI resource)
simultaneously.
For example:

{ .compatible = "qcom,sa8775p-aggre1-noc", .data = &sa8775p_aggre1_noc },
+ { .compatible = "qcom,qcs9100-aggre1-noc", .data = &qcs9100_aggre1_noc
+ },
{ .compatible = "qcom,sa8775p-aggre2-noc", .data = &sa8775p_aggre2_noc },
+ { .compatible = "qcom,qcs9100-aggre2-noc", .data = &qcs9100_aggre2_noc
+ },
// ...

For this option:
DT changes are needed.
Technical driver owners are responsible for making the final different
driver changes and ensuring the exact binding of qcs9100 and sa8775
with different compatibles.

In summary, the current solution primarily targets SCMI-based resource
transactions. However, both the qcs project and the SA project, which
are in the development stage, require independent development processes.

Co-developed-by: Maria Yu <quic_aiquny@quicinc.com>
Signed-off-by: Maria Yu <quic_aiquny@quicinc.com>
Signed-off-by: Tengfei Fan <quic_tengfan@quicinc.com>
---

Tengfei Fan (47):
  dt-bindings: arm: qcom: Document QCS9100 SoC and RIDE board
  arm64: dts: qcom: qcs9100: Introduce QCS9100 SoC dtsi
  arm64: dts: qcom: qcs9100: Introduce QCS9100 PMIC dtsi
  arm64: dts: qcom: qcs9100: Add QCS9100 RIDE board dts
  dt-bindings: firmware: qcom,scm: document SCM on QCS9100 SoC
  dt-bindings: interconnect: qcom: document the interconnect compatibles
    for QCS9100
  dt-bindings: clock: document QCS9100 GCC compatible
  dt-bindings: mailbox: qcom-ipcc: Document the QCS9100 IPCC
  dt-bindings: phy: Add QMP UFS PHY comptible for QCS9100
  dt-bindings: crypto: ice: Document QCS9100 inline crypto engine
  dt-bindings: crypto: qcom,prng: document QCS9100
  dt-bindings: phy: qcom,usb-snps-femto-v2: Add bindings for QCS9100
  dt-bindings: ufs: qcom: document QCS9100 UFS
  dt-bindings: phy: qcom,qmp-usb: Add QCS9100 USB3 PHY
  dt-bindings: usb: dwc3: Add QCS9100 compatible
  dt-bindings: clock: qcom: describe the GPUCC clock for QCS9100
  dt-bindings: arm-smmu: Document QCS9100 GPU SMMU
  dt-bindings: phy: describe the Qualcomm SGMII PHY for QCS9100
  dt-bindings: cache: qcom,llcc: Add QCS9100 description
  dt-bindings: interrupt-controller: qcom,pdc: document pdc on QCS9100
  dt-bindings: thermal: qcom-tsens: document the QCS9100 Temperature
    Sensor
  dt-bindings: soc: qcom,aoss-qmp: Document the QCS9100 AOSS channel
  dt-bindings: pinctrl: add qcs9100-tlmm compatible
  dt-bindings: soc: qcom: add qcom,qcs9100-imem compatible
  dt-bindings: watchdog: qcom-wdt: document QCS9100
  dt-bindings: clock: qcom-rpmhcc: Add RPMHCC bindings for QCS9100
  dt-bindings: cpufreq: cpufreq-qcom-hw: Add QCS9100 compatibles
  dt-bindings: power: qcom,rpmpd: document the QCS9100 RPMh Power
    Domains
  dt-bindings: net: qcom,ethqos: add description for qcs9100
  dt-bindings: PCI: Document compatible for QCS9100
  dt-bindings: PCI: qcom-ep: Add support for QCS9100 SoC
  dt-bindings: phy: qcom,qmp: Add qcs9100 QMP PCIe PHY
  interconnect: qcom: add driver support for qcs9100
  clk: qcom: add the GCC driver support for QCS9100
  phy: qcom-qmp-ufs: Add QCS9100 support
  phy: qcpm-qmp-usb: Add support for QCS9100
  clk: qcom: add the GPUCC driver support for QCS9100
  phy: qcom: add the SGMII SerDes PHY driver support
  soc: qcom: llcc: Add llcc configuration support for the QCS9100
    platform
  pinctrl: qcom: add the tlmm driver support for qcs9100 platform
  clk: qcom: rpmh: Add support for QCS9100 rpmh clocks
  soc: qcom: rmphpd: add power domains for QCS9100
  net: stmmac: dwmac-qcom-ethqos: add support for emac4 on qcs9100
    platforms
  PCI: qcom: Add support for QCS9100 SoC
  PCI: qcom-ep: Add HDMA support for QCS9100 SoC
  cpufreq: qcom-nvmem: add support for QCS9100
  phy: qcom-qmp-pcie: add x4 lane EP support for QCS9100

 .../devicetree/bindings/arm/qcom.yaml         |   3 +
 .../devicetree/bindings/cache/qcom,llcc.yaml  |   2 +
 .../devicetree/bindings/clock/qcom,gpucc.yaml |   1 +
 .../bindings/clock/qcom,rpmhcc.yaml           |   1 +
 .../bindings/clock/qcom,sa8775p-gcc.yaml      |   5 +-
 .../bindings/cpufreq/cpufreq-qcom-hw.yaml     |   1 +
 .../crypto/qcom,inline-crypto-engine.yaml     |   1 +
 .../devicetree/bindings/crypto/qcom,prng.yaml |   1 +
 .../bindings/firmware/qcom,scm.yaml           |   1 +
 .../interconnect/qcom,sa8775p-rpmh.yaml       |  14 +++
 .../interrupt-controller/qcom,pdc.yaml        |   1 +
 .../devicetree/bindings/iommu/arm,smmu.yaml   |   3 +
 .../bindings/mailbox/qcom-ipcc.yaml           |   1 +
 .../devicetree/bindings/net/qcom,ethqos.yaml  |   1 +
 .../devicetree/bindings/net/snps,dwmac.yaml   |   3 +
 .../devicetree/bindings/pci/qcom,pcie-ep.yaml |   2 +
 .../bindings/pci/qcom,pcie-sa8775p.yaml       |   5 +-
 .../phy/qcom,sa8775p-dwmac-sgmii-phy.yaml     |   5 +-
 .../phy/qcom,sc8280xp-qmp-pcie-phy.yaml       |   4 +
 .../phy/qcom,sc8280xp-qmp-ufs-phy.yaml        |   2 +
 .../phy/qcom,sc8280xp-qmp-usb3-uni-phy.yaml   |   3 +
 .../bindings/phy/qcom,usb-snps-femto-v2.yaml  |   1 +
 .../bindings/pinctrl/qcom,sa8775p-tlmm.yaml   |   5 +-
 .../devicetree/bindings/power/qcom,rpmpd.yaml |   1 +
 .../bindings/soc/qcom/qcom,aoss-qmp.yaml      |   1 +
 .../devicetree/bindings/sram/qcom,imem.yaml   |   1 +
 .../bindings/thermal/qcom-tsens.yaml          |   1 +
 .../devicetree/bindings/ufs/qcom,ufs.yaml     |   2 +
 .../devicetree/bindings/usb/qcom,dwc3.yaml    |   3 +
 .../bindings/watchdog/qcom-wdt.yaml           |   1 +
 arch/arm64/boot/dts/qcom/Makefile             |   2 +-
 ...{sa8775p-pmics.dtsi => qcs9100-pmics.dtsi} |   0
 .../{sa8775p-ride.dts => qcs9100-ride.dts}    |   8 +-
 .../dts/qcom/{sa8775p.dtsi => qcs9100.dtsi}   | 112 +++++++++---------
 drivers/clk/qcom/clk-rpmh.c                   |   1 +
 drivers/clk/qcom/gcc-sa8775p.c                |   1 +
 drivers/clk/qcom/gpucc-sa8775p.c              |   1 +
 drivers/cpufreq/cpufreq-dt-platdev.c          |   1 +
 drivers/interconnect/qcom/sa8775p.c           |  14 +++
 .../stmicro/stmmac/dwmac-qcom-ethqos.c        |   1 +
 drivers/pci/controller/dwc/pcie-qcom-ep.c     |   1 +
 drivers/pci/controller/dwc/pcie-qcom.c        |   1 +
 drivers/phy/qualcomm/phy-qcom-qmp-pcie.c      |   6 +
 drivers/phy/qualcomm/phy-qcom-qmp-ufs.c       |   3 +
 drivers/phy/qualcomm/phy-qcom-qmp-usb.c       |   3 +
 drivers/phy/qualcomm/phy-qcom-sgmii-eth.c     |   1 +
 drivers/pinctrl/qcom/pinctrl-sa8775p.c        |   1 +
 drivers/pmdomain/qcom/rpmhpd.c                |   1 +
 drivers/soc/qcom/llcc-qcom.c                  |   1 +
 49 files changed, 170 insertions(+), 65 deletions(-)
 rename arch/arm64/boot/dts/qcom/{sa8775p-pmics.dtsi => qcs9100-pmics.dtsi} (100%)
 rename arch/arm64/boot/dts/qcom/{sa8775p-ride.dts => qcs9100-ride.dts} (99%)
 rename arch/arm64/boot/dts/qcom/{sa8775p.dtsi => qcs9100.dtsi} (97%)


base-commit: 82e4255305c554b0bb18b7ccf2db86041b4c8b6e
patchwork-bot+netdevbpf@kernel.org July 3, 2024, 4:20 a.m. UTC | #2
Hello:

This series was applied to netdev/net-next.git (main)
by Jakub Kicinski <kuba@kernel.org>:

On Wed, 3 Jul 2024 10:58:03 +0800 you wrote:
> Introduce support for the QCS9100 SoC device tree (DTSI) and the
> QCS9100 RIDE board DTS. The QCS9100 is a variant of the SA8775p.
> While the QCS9100 platform is still in the early design stage, the
> QCS9100 RIDE board is identical to the SA8775p RIDE board, except it
> mounts the QCS9100 SoC instead of the SA8775p SoC.
> 
> The QCS9100 SoC DTSI was directly renamed from the SA8775p SoC DTSI. In
> the upcoming weeks, Nikunj Kela will develop a new device tree related
> to SA8775p, specifically supporting the SCMI resource firmware solution
> for the SA8775p platform. If you're already familiar with the
> background, feel free to skip part[2], which provides a detailed
> explanation.
> 
> [...]

Here is the summary with links:
  - [01/47] dt-bindings: arm: qcom: Document QCS9100 SoC and RIDE board
    (no matching commit)
  - [02/47] arm64: dts: qcom: qcs9100: Introduce QCS9100 SoC dtsi
    (no matching commit)
  - [03/47] arm64: dts: qcom: qcs9100: Introduce QCS9100 PMIC dtsi
    https://git.kernel.org/netdev/net-next/c/df18948d331e
  - [04/47] arm64: dts: qcom: qcs9100: Add QCS9100 RIDE board dts
    (no matching commit)
  - [05/47] dt-bindings: firmware: qcom,scm: document SCM on QCS9100 SoC
    (no matching commit)
  - [06/47] dt-bindings: interconnect: qcom: document the interconnect compatibles for QCS9100
    (no matching commit)
  - [07/47] dt-bindings: clock: document QCS9100 GCC compatible
    (no matching commit)
  - [08/47] dt-bindings: mailbox: qcom-ipcc: Document the QCS9100 IPCC
    (no matching commit)
  - [09/47] dt-bindings: phy: Add QMP UFS PHY comptible for QCS9100
    (no matching commit)
  - [10/47] dt-bindings: crypto: ice: Document QCS9100 inline crypto engine
    (no matching commit)
  - [11/47] dt-bindings: crypto: qcom,prng: document QCS9100
    (no matching commit)
  - [12/47] dt-bindings: phy: qcom,usb-snps-femto-v2: Add bindings for QCS9100
    (no matching commit)
  - [13/47] dt-bindings: ufs: qcom: document QCS9100 UFS
    (no matching commit)
  - [14/47] dt-bindings: phy: qcom,qmp-usb: Add QCS9100 USB3 PHY
    (no matching commit)
  - [15/47] dt-bindings: usb: dwc3: Add QCS9100 compatible
    (no matching commit)
  - [16/47] dt-bindings: clock: qcom: describe the GPUCC clock for QCS9100
    (no matching commit)
  - [17/47] dt-bindings: arm-smmu: Document QCS9100 GPU SMMU
    (no matching commit)
  - [18/47] dt-bindings: phy: describe the Qualcomm SGMII PHY for QCS9100
    (no matching commit)
  - [19/47] dt-bindings: cache: qcom,llcc: Add QCS9100 description
    (no matching commit)
  - [20/47] dt-bindings: interrupt-controller: qcom,pdc: document pdc on QCS9100
    (no matching commit)
  - [21/47] dt-bindings: thermal: qcom-tsens: document the QCS9100 Temperature Sensor
    (no matching commit)
  - [22/47] dt-bindings: soc: qcom,aoss-qmp: Document the QCS9100 AOSS channel
    (no matching commit)
  - [23/47] dt-bindings: pinctrl: add qcs9100-tlmm compatible
    (no matching commit)
  - [24/47] dt-bindings: soc: qcom: add qcom,qcs9100-imem compatible
    (no matching commit)
  - [25/47] dt-bindings: watchdog: qcom-wdt: document QCS9100
    (no matching commit)
  - [26/47] dt-bindings: clock: qcom-rpmhcc: Add RPMHCC bindings for QCS9100
    (no matching commit)
  - [27/47] dt-bindings: cpufreq: cpufreq-qcom-hw: Add QCS9100 compatibles
    (no matching commit)
  - [28/47] dt-bindings: power: qcom,rpmpd: document the QCS9100 RPMh Power Domains
    (no matching commit)
  - [29/47] dt-bindings: net: qcom,ethqos: add description for qcs9100
    (no matching commit)
  - [30/47] dt-bindings: PCI: Document compatible for QCS9100
    (no matching commit)
  - [31/47] dt-bindings: PCI: qcom-ep: Add support for QCS9100 SoC
    (no matching commit)
  - [32/47] dt-bindings: phy: qcom,qmp: Add qcs9100 QMP PCIe PHY
    (no matching commit)
  - [33/47] interconnect: qcom: add driver support for qcs9100
    (no matching commit)
  - [34/47] clk: qcom: add the GCC driver support for QCS9100
    (no matching commit)
  - [35/47] phy: qcom-qmp-ufs: Add QCS9100 support
    (no matching commit)
  - [36/47] phy: qcpm-qmp-usb: Add support for QCS9100
    (no matching commit)
  - [37/47] clk: qcom: add the GPUCC driver support for QCS9100
    (no matching commit)
  - [38/47] phy: qcom: add the SGMII SerDes PHY driver support
    (no matching commit)
  - [39/47] soc: qcom: llcc: Add llcc configuration support for the QCS9100 platform
    (no matching commit)
  - [40/47] pinctrl: qcom: add the tlmm driver support for qcs9100 platform
    (no matching commit)
  - [41/47] clk: qcom: rpmh: Add support for QCS9100 rpmh clocks
    (no matching commit)

You are awesome, thank you!
Krzysztof Kozlowski July 3, 2024, 4:45 a.m. UTC | #3
On 03/07/2024 05:56, Tengfei Fan wrote:
> Introduce support for the QCS9100 SoC device tree (DTSI) and the
> QCS9100 RIDE board DTS. The QCS9100 is a variant of the SA8775p.
> While the QCS9100 platform is still in the early design stage, the
> QCS9100 RIDE board is identical to the SA8775p RIDE board, except it
> mounts the QCS9100 SoC instead of the SA8775p SoC.

The same huge patchset, to huge number of recipients was sent twice.
First, sorry, this is way too big. Second, it has way too many
recipients, but this is partially a result of first point. Only
partially because you put here dozen of totally unrelated emails. Sorry,
that does not make even sense. See form letter at the end how this
works. Third, sending it to everyone twice is a way to annoy them off
twice... Fourth,

Please split your work and do not cc dozen of unrelated folks.

<form letter>
Please use scripts/get_maintainers.pl to get a list of necessary people
and lists to CC (and consider --no-git-fallback argument). It might
happen, that command when run on an older kernel, gives you outdated
entries. Therefore please be sure you base your patches on recent Linux
kernel.

Tools like b4 or scripts/get_maintainer.pl provide you proper list of
people, so fix your workflow. Tools might also fail if you work on some
ancient tree (don't, instead use mainline), work on fork of kernel
(don't, instead use mainline) or you ignore some maintainers (really
don't). Just use b4 and everything should be fine, although remember
about `b4 prep --auto-to-cc` if you added new patches to the patchset.
</form letter>

Best regards,
Krzysztof
Conor Dooley July 3, 2024, 6:28 a.m. UTC | #4
On Wed, Jul 03, 2024 at 06:45:00AM +0200, Krzysztof Kozlowski wrote:
> On 03/07/2024 05:56, Tengfei Fan wrote:
> > Introduce support for the QCS9100 SoC device tree (DTSI) and the
> > QCS9100 RIDE board DTS. The QCS9100 is a variant of the SA8775p.
> > While the QCS9100 platform is still in the early design stage, the
> > QCS9100 RIDE board is identical to the SA8775p RIDE board, except it
> > mounts the QCS9100 SoC instead of the SA8775p SoC.
> 
> The same huge patchset, to huge number of recipients was sent twice.
> First, sorry, this is way too big. Second, it has way too many
> recipients, but this is partially a result of first point. Only
> partially because you put here dozen of totally unrelated emails. Sorry,
> that does not make even sense. See form letter at the end how this
> works. Third, sending it to everyone twice is a way to annoy them off
> twice... Fourth,
> 
> Please split your work and do not cc dozen of unrelated folks.

One of the extra recipients is cos that of that patch I sent adding the
cache bindings to the cache entry, forgetting that that would CC the
riscv list on all cache bindings. I modified that patch to drop the riscv
list from the entry.

Cheers,
Conor.
Tengfei Fan July 3, 2024, 9:39 a.m. UTC | #5
On 7/3/2024 12:45 PM, Krzysztof Kozlowski wrote:
> On 03/07/2024 05:56, Tengfei Fan wrote:
>> Introduce support for the QCS9100 SoC device tree (DTSI) and the
>> QCS9100 RIDE board DTS. The QCS9100 is a variant of the SA8775p.
>> While the QCS9100 platform is still in the early design stage, the
>> QCS9100 RIDE board is identical to the SA8775p RIDE board, except it
>> mounts the QCS9100 SoC instead of the SA8775p SoC.
> 
> The same huge patchset, to huge number of recipients was sent twice.
> First, sorry, this is way too big. Second, it has way too many
> recipients, but this is partially a result of first point. Only
> partially because you put here dozen of totally unrelated emails. Sorry,
> that does not make even sense. See form letter at the end how this
> works. Third, sending it to everyone twice is a way to annoy them off
> twice... Fourth,
> 
> Please split your work and do not cc dozen of unrelated folks.

I can split this patch series, there are two options for splitting:
Option A:
   1. Initial qcs9100.dtsi, qcs9100-pmics.dtsi, qcs9100-ride.dts renamed 
from sa8775p with existing compatible.

   2. Each subsystem have single patch series to each limited driver 
maintainers.

      - About 15 series need to update related drivers, so each series 
will have 3 patches (bindings, drivers, the compatible names in 
subsystem-related parts of dtsi/dts).

      - About 14 series only need to add qcs9100 compatible in 
bindings., so each series will have 2 patches (bindings, the compatible 
names in subsystem-related parts of dtsi/dts).

Option B:

   1. Each subsystem have single patch series to each limited driver 
maintainers. Each patch series only update bindings, drivers, but no 
compatible names change in dts.

      - About 15 series in total and each series will have 2 patches 
(bindings, drivers).

      - About 14 series only need to add qcs9100 compatible in bindings, 
so each series will have 1 patches (bindings).

   2. Squash current qcs9100.dtsi, qcs9100-pmics.dtsi, qcs9100-ride.dts 
with compatible changed to qcs9100 dt files.

We tend to use Option A.

Welcome to other ideas ideas for splitting the huge numbers of patches 
as well.

Another, each splited series will also have cover letter contain the 
whole story like this cover letter.

> 
> <form letter>
> Please use scripts/get_maintainers.pl to get a list of necessary people
> and lists to CC (and consider --no-git-fallback argument). It might
> happen, that command when run on an older kernel, gives you outdated
> entries. Therefore please be sure you base your patches on recent Linux
> kernel.
> 
> Tools like b4 or scripts/get_maintainer.pl provide you proper list of
> people, so fix your workflow. Tools might also fail if you work on some
> ancient tree (don't, instead use mainline), work on fork of kernel
> (don't, instead use mainline) or you ignore some maintainers (really
> don't). Just use b4 and everything should be fine, although remember
> about `b4 prep --auto-to-cc` if you added new patches to the patchset.
> </form letter>
> 
> Best regards,
> Krzysztof
> 

Previously, I've been using scripts/get_maintainers.pl to obtain a list 
of recipients and manually removing duplicate email addresses(although I 
noticed you have two different email addresses, so I included both).
I'll follow your advice and use b4 to submit a new version patch series 
to upstream, confident that similar issues won't arise again.
Dmitry Baryshkov July 3, 2024, 10:33 a.m. UTC | #6
On Wed, Jul 03, 2024 at 11:56:48AM GMT, Tengfei Fan wrote:
> Introduce support for the QCS9100 SoC device tree (DTSI) and the
> QCS9100 RIDE board DTS. The QCS9100 is a variant of the SA8775p.
> While the QCS9100 platform is still in the early design stage, the
> QCS9100 RIDE board is identical to the SA8775p RIDE board, except it
> mounts the QCS9100 SoC instead of the SA8775p SoC.

Your patch series includes a second copy of your patches, wich have
different Message-IDs:

20240703035735.2182165-1-quic_tengfan@quicinc.com vs
20240703025850.2172008-1-quic_tengfan@quicinc.com

Please consider switching to the b4 tool or just
checking what is being sent.
Jakub Kicinski July 3, 2024, 6:49 p.m. UTC | #7
On Wed, 03 Jul 2024 04:20:29 +0000 patchwork-bot+netdevbpf@kernel.org
wrote:
> This series was applied to netdev/net-next.git (main)
> by Jakub Kicinski <kuba@kernel.org>:

> Here is the summary with links:
>   - [01/47] dt-bindings: arm: qcom: Document QCS9100 SoC and RIDE board
>     (no matching commit)
>   - [02/47] arm64: dts: qcom: qcs9100: Introduce QCS9100 SoC dtsi
>     (no matching commit)
>   - [03/47] arm64: dts: qcom: qcs9100: Introduce QCS9100 PMIC dtsi
>     https://git.kernel.org/netdev/net-next/c/df18948d331e

This is some bug / false positive in the bot, to be clear.
Commit df18948d331e is ("Merge branch 'device-memory-tcp'").
No idea how it got from that to DTS.
Tengfei Fan July 4, 2024, 12:57 a.m. UTC | #8
On 7/3/2024 6:33 PM, Dmitry Baryshkov wrote:
> On Wed, Jul 03, 2024 at 11:56:48AM GMT, Tengfei Fan wrote:
>> Introduce support for the QCS9100 SoC device tree (DTSI) and the
>> QCS9100 RIDE board DTS. The QCS9100 is a variant of the SA8775p.
>> While the QCS9100 platform is still in the early design stage, the
>> QCS9100 RIDE board is identical to the SA8775p RIDE board, except it
>> mounts the QCS9100 SoC instead of the SA8775p SoC.
> 
> Your patch series includes a second copy of your patches, wich have
> different Message-IDs:
> 
> 20240703035735.2182165-1-quic_tengfan@quicinc.com vs
> 20240703025850.2172008-1-quic_tengfan@quicinc.com
> 
> Please consider switching to the b4 tool or just
> checking what is being sent.
> 

This is because I encountered a "Connection timed out" error while 
sending this patch series using "git send-email". I wanted to add 
"--in-reply-to=" git paramater to resend the patches that haven't been 
pushed yet, which resulted in this second copy error result.

I'll following your suggestion and use the b4 tool when sending the new 
version patch series to avoid similar error.
Tengfei Fan July 4, 2024, 1:06 a.m. UTC | #9
On 7/4/2024 2:49 AM, Jakub Kicinski wrote:
> This is some bug / false positive in the bot, to be clear.
> Commit df18948d331e is ("Merge branch 'device-memory-tcp'").
> No idea how it got from that to DTS.

This issue may be due to the patch series being too large. In the 
future, I plan to split the patch series by different subsystem, which 
should prevent similar issue.
Tengfei Fan July 8, 2024, 7:47 a.m. UTC | #10
On 7/3/2024 2:28 PM, Conor Dooley wrote:
> On Wed, Jul 03, 2024 at 06:45:00AM +0200, Krzysztof Kozlowski wrote:
>> On 03/07/2024 05:56, Tengfei Fan wrote:
>>> Introduce support for the QCS9100 SoC device tree (DTSI) and the
>>> QCS9100 RIDE board DTS. The QCS9100 is a variant of the SA8775p.
>>> While the QCS9100 platform is still in the early design stage, the
>>> QCS9100 RIDE board is identical to the SA8775p RIDE board, except it
>>> mounts the QCS9100 SoC instead of the SA8775p SoC.
>>
>> The same huge patchset, to huge number of recipients was sent twice.
>> First, sorry, this is way too big. Second, it has way too many
>> recipients, but this is partially a result of first point. Only
>> partially because you put here dozen of totally unrelated emails. Sorry,
>> that does not make even sense. See form letter at the end how this
>> works. Third, sending it to everyone twice is a way to annoy them off
>> twice... Fourth,
>>
>> Please split your work and do not cc dozen of unrelated folks.
> 
> One of the extra recipients is cos that of that patch I sent adding the
> cache bindings to the cache entry, forgetting that that would CC the
> riscv list on all cache bindings. I modified that patch to drop the riscv
> list from the entry.
> 
> Cheers,
> Conor.


Thank you, Conor!