* [PATCH v6 0/3] arm64: dts: qcom: eliza-evk: Enable PCIe0 and PCIe1 with M.2 and TC9563 switch
@ 2026-07-30 4:48 Krishna Chaitanya Chundru
2026-07-30 4:48 ` [PATCH v6 1/3] arm64: dts: qcom: eliza: Add PCIe PHY and controller nodes Krishna Chaitanya Chundru
` (2 more replies)
0 siblings, 3 replies; 14+ messages in thread
From: Krishna Chaitanya Chundru @ 2026-07-30 4:48 UTC (permalink / raw)
To: Bjorn Andersson, Konrad Dybcio, Rob Herring, Krzysztof Kozlowski,
Conor Dooley, Manivannan Sadhasivam, Bartosz Golaszewski
Cc: linux-arm-msm, devicetree, linux-kernel, linux-pci, linux-pm,
Krishna Chaitanya Chundru, Konrad Dybcio, Bartosz Golaszewski,
Abel Vesa
This series enables PCIe for the Eliza EVK board (CQS SoM on EVK carrier).
The Eliza EVK exposes two PCIe ports:
- PCIe0 drives an M.2 E key connector. The 3.3V supply is GPIO-controlled
via a TCA9538 I/O expander on I2C4. The slot hosts a WLAN module
(connected over PCIe) and a Bluetooth device (connected over UART5),
modelled with the pcie-m2-e-connector binding.
- PCIe1 (8GT/s x2) connects to a Toshiba TC9563 PCIe switch, whose
management interface sits on I2C4 (address 0x77). The TC9563 RESX# and
PERST# lines are OR-ed internally; reset is driven via a TLMM GPIO on
the RESX# pin. The iommu-map covers all downstream switch ports
(SID range 0x1400-0x1408).
The M.2 WLAN module carries a Qualcomm QCC2072 Bluetooth chip. A device-ID
entry is added to the M.2 power sequencer so the serdev node for the BT
UART interface is created on PCI enumeration.
This seris Depends-on:
https://lore.kernel.org/all/20260630-eliza-dts-qcs-evk-v4-3-18cbbdba6e7e@oss.qualcomm.com/
https://lore.kernel.org/all/20260630-dts-qcom-eliza-mtp-evk-add-pmics-v1-1-f4f320f7c88b@oss.qualcomm.com/
Signed-off-by: Krishna Chaitanya Chundru <krishna.chundru@oss.qualcomm.com>
---
Changes in v6:
- change 0 to 0x0 & remove num-lanes property (Mani)
- Link to v5: https://patch.msgid.link/20260729-eliza_evk-v5-0-41790a5a24de@oss.qualcomm.com
Changes in v5:
- change from pci to pcie for subnode names (konrad)
- Link to v4: https://patch.msgid.link/20260728-eliza_evk-v4-0-decc7fe5246e@oss.qualcomm.com
Changes in v4:
- Added new line and used pcie port names as pcieN_portM (Konrad).
- Link to v3: https://patch.msgid.link/20260721-eliza_evk-v3-0-92b10038f13d@oss.qualcomm.com
Changes in v3:
- Clubbed pcie nodes to this series (Bjorn A)
(https://lore.kernel.org/all/20260708-eliza_dt-v2-1-e6281da26408@oss.qualcomm.com/)
- Added comment for PERST (Mani).
- Extended ranges property for pcie1 (Konrad).
- Link to v2: https://patch.msgid.link/20260708-eliza_evk-v2-0-c599246ceba1@oss.qualcomm.com
Changes in v2:
- Drop patch 3, as this is already applied
- Rebase on top of https://lore.kernel.org/all/20260708055017.A90C91F000E9@smtp.kernel.org/
and remove pincntrl as pincntrl is added in the eliza.dtsi patch and also remove
pinctrl for resx as this is covered in pcie1_default_state as perst gpio.
- Link to v1: https://patch.msgid.link/20260703-eliza_evk-v1-0-7624440bd76d@oss.qualcomm.com
---
Krishna Chaitanya Chundru (3):
arm64: dts: qcom: eliza: Add PCIe PHY and controller nodes
arm64: dts: qcom: eliza-evk: Add PCIe0 with M.2 E key connector
arm64: dts: qcom: eliza-evk: Add PCIe1 with TC9563 PCIe switch
arch/arm64/boot/dts/qcom/eliza-evk.dtsi | 229 ++++++++++++++++++
arch/arm64/boot/dts/qcom/eliza.dtsi | 413 +++++++++++++++++++++++++++++++-
2 files changed, 640 insertions(+), 2 deletions(-)
---
base-commit: dc59e4fea9d83f03bad6bddf3fa2e52491777482
change-id: 20260629-eliza_evk-6f30686b161f
prerequisite-patch-id: 9e10dfbe360941cdac0300aaf163149755952f9f
prerequisite-patch-id: fecce0170351baf00cbe8f6b302d1def4d99bbfc
prerequisite-patch-id: 97cd6cb495fdd198f6de7fbe45ef32e4a638ec9c
prerequisite-message-id: <20260630-dts-qcom-eliza-mtp-evk-add-pmics-v1-1-f4f320f7c88b@oss.qualcomm.com>
prerequisite-patch-id: f3615b5c1e2222a2491f862a7fba3994058ecc53
Best regards,
--
Krishna Chaitanya Chundru <krishna.chundru@oss.qualcomm.com>
^ permalink raw reply [flat|nested] 14+ messages in thread* [PATCH v6 1/3] arm64: dts: qcom: eliza: Add PCIe PHY and controller nodes 2026-07-30 4:48 [PATCH v6 0/3] arm64: dts: qcom: eliza-evk: Enable PCIe0 and PCIe1 with M.2 and TC9563 switch Krishna Chaitanya Chundru @ 2026-07-30 4:48 ` Krishna Chaitanya Chundru 2026-07-30 5:18 ` sashiko-bot 2026-07-30 7:54 ` Manivannan Sadhasivam 2026-07-30 4:48 ` [PATCH v6 2/3] arm64: dts: qcom: eliza-evk: Add PCIe0 with M.2 E key connector Krishna Chaitanya Chundru 2026-07-30 4:48 ` [PATCH v6 3/3] arm64: dts: qcom: eliza-evk: Add PCIe1 with TC9563 PCIe switch Krishna Chaitanya Chundru 2 siblings, 2 replies; 14+ messages in thread From: Krishna Chaitanya Chundru @ 2026-07-30 4:48 UTC (permalink / raw) To: Bjorn Andersson, Konrad Dybcio, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Manivannan Sadhasivam, Bartosz Golaszewski Cc: linux-arm-msm, devicetree, linux-kernel, linux-pci, linux-pm, Krishna Chaitanya Chundru, Konrad Dybcio, Bartosz Golaszewski, Abel Vesa Eliza supports two PCIe instances: one 8GT/s x1 (PCIe0) and one 8GT/s x2 (PCIe1). Add PCIe controller and PHY nodes for both instances, and update the GCC clock references to use the newly added PHY nodes instead of placeholder zeros. Reviewed-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com> Reviewed-by: Bartosz Golaszewski <bartosz.golaszewski@oss.qualcomm.com> Reviewed-by: Manivannan Sadhasivam <mani@kernel.org> Reviewed-by: Abel Vesa <abel.vesa@oss.qualcomm.com> Signed-off-by: Krishna Chaitanya Chundru <krishna.chundru@oss.qualcomm.com> --- arch/arm64/boot/dts/qcom/eliza.dtsi | 413 +++++++++++++++++++++++++++++++++++- 1 file changed, 411 insertions(+), 2 deletions(-) diff --git a/arch/arm64/boot/dts/qcom/eliza.dtsi b/arch/arm64/boot/dts/qcom/eliza.dtsi index 977de44b816e..01e9d4c91404 100644 --- a/arch/arm64/boot/dts/qcom/eliza.dtsi +++ b/arch/arm64/boot/dts/qcom/eliza.dtsi @@ -640,8 +640,8 @@ gcc: clock-controller@100000 { clocks = <&bi_tcxo_div2>, <&sleep_clk>, - <0>, - <0>, + <&pcie0_phy>, + <&pcie1_phy>, <&ufs_mem_phy 0>, <&ufs_mem_phy 1>, <&ufs_mem_phy 2>, @@ -1786,6 +1786,369 @@ mmss_noc: interconnect@1780000 { #interconnect-cells = <2>; }; + pcie0: pcie@1c00000 { + device_type = "pci"; + compatible = "qcom,eliza-pcie", "qcom,pcie-sm8550"; + reg = <0x0 0x01c00000 0x0 0x3000>, + <0x0 0x40000000 0x0 0xf1d>, + <0x0 0x40000f20 0x0 0xa8>, + <0x0 0x40001000 0x0 0x1000>, + <0x0 0x40100000 0x0 0x100000>, + <0x0 0x01c03000 0x0 0x1000>; + reg-names = "parf", + "dbi", + "elbi", + "atu", + "config", + "mhi"; + #address-cells = <3>; + #size-cells = <2>; + ranges = <0x01000000 0x0 0x00000000 0x0 0x40200000 0x0 0x100000>, + <0x02000000 0x0 0x40300000 0x0 0x40300000 0x0 0x3d00000>; + + interrupts = <GIC_SPI 376 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 478 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 479 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 535 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 536 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 537 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 540 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 653 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 370 IRQ_TYPE_LEVEL_HIGH>; + interrupt-names = "msi0", + "msi1", + "msi2", + "msi3", + "msi4", + "msi5", + "msi6", + "msi7", + "global"; + + clocks = <&gcc GCC_PCIE_0_AUX_CLK>, + <&gcc GCC_PCIE_0_CFG_AHB_CLK>, + <&gcc GCC_PCIE_0_MSTR_AXI_CLK>, + <&gcc GCC_PCIE_0_SLV_AXI_CLK>, + <&gcc GCC_PCIE_0_SLV_Q2A_AXI_CLK>, + <&gcc GCC_DDRSS_PCIE_SF_QTB_CLK>, + <&gcc GCC_AGGRE_NOC_PCIE_AXI_CLK>, + <&gcc GCC_CNOC_PCIE_SF_AXI_CLK>; + clock-names = "aux", + "cfg", + "bus_master", + "bus_slave", + "slave_q2a", + "ddrss_sf_tbu", + "noc_aggr", + "cnoc_sf_axi"; + + resets = <&gcc GCC_PCIE_0_BCR>, + <&gcc GCC_PCIE_0_LINK_DOWN_BCR>; + reset-names = "pci", + "link_down"; + + interconnects = <&pcie_noc MASTER_PCIE_0 QCOM_ICC_TAG_ALWAYS + &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>, + <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY + &cnoc_main SLAVE_PCIE_0 QCOM_ICC_TAG_ACTIVE_ONLY>; + interconnect-names = "pcie-mem", + "cpu-pcie"; + + power-domains = <&gcc GCC_PCIE_0_GDSC>; + + operating-points-v2 = <&pcie0_opp_table>; + + iommu-map = <0x0 &apps_smmu 0x1480 0x1>, + <0x100 &apps_smmu 0x1481 0x1>; + + interrupt-map = <0 0 0 1 &intc 0 0 0 564 IRQ_TYPE_LEVEL_HIGH>, + <0 0 0 2 &intc 0 0 0 565 IRQ_TYPE_LEVEL_HIGH>, + <0 0 0 3 &intc 0 0 0 566 IRQ_TYPE_LEVEL_HIGH>, + <0 0 0 4 &intc 0 0 0 567 IRQ_TYPE_LEVEL_HIGH>; + interrupt-map-mask = <0x0 0x0 0x0 0x7>; + #interrupt-cells = <1>; + + linux,pci-domain = <0>; + bus-range = <0x0 0xff>; + + dma-coherent; + + pinctrl-0 = <&pcie0_default_state>; + pinctrl-names = "default"; + + status = "disabled"; + + pcie0_opp_table: opp-table { + compatible = "operating-points-v2"; + + /* 2.5 GT/s x1 */ + opp-2500000-1 { + opp-hz = /bits/ 64 <2500000>; + required-opps = <&rpmhpd_opp_low_svs>; + opp-peak-kBps = <250000 1>; + opp-level = <1>; + }; + + /* 5 GT/s x1 */ + opp-5000000-2 { + opp-hz = /bits/ 64 <5000000>; + required-opps = <&rpmhpd_opp_low_svs>; + opp-peak-kBps = <500000 1>; + opp-level = <2>; + }; + + /* 8 GT/s x1 */ + opp-8000000-3 { + opp-hz = /bits/ 64 <8000000>; + required-opps = <&rpmhpd_opp_low_svs>; + opp-peak-kBps = <984500 1>; + opp-level = <3>; + }; + + }; + + pcie0_port0: pcie@0 { + compatible = "pciclass,0604"; + device_type = "pci"; + reg = <0x0 0x0 0x0 0x0 0x0>; + bus-range = <0x01 0xff>; + + #address-cells = <3>; + #size-cells = <2>; + ranges; + phys = <&pcie0_phy>; + }; + }; + + pcie0_phy: phy@1c06000 { + compatible = "qcom,eliza-qmp-gen3x1-pcie-phy"; + reg = <0x0 0x01c06000 0x0 0x2000>; + + clocks = <&gcc GCC_PCIE_0_AUX_CLK>, + <&gcc GCC_PCIE_0_CFG_AHB_CLK>, + <&tcsr TCSR_PCIE_0_CLKREF_EN>, + <&gcc GCC_PCIE_0_PHY_RCHNG_CLK>, + <&gcc GCC_PCIE_0_PIPE_CLK>, + <&gcc GCC_PCIE_0_PIPE_DIV2_CLK>; + clock-names = "aux", + "cfg_ahb", + "ref", + "rchng", + "pipe", + "pipediv2"; + + assigned-clocks = <&gcc GCC_PCIE_0_PHY_RCHNG_CLK>; + assigned-clock-rates = <100000000>; + + resets = <&gcc GCC_PCIE_0_PHY_BCR>, + <&gcc GCC_PCIE_0_NOCSR_COM_PHY_BCR>; + reset-names = "phy", + "phy_nocsr"; + + power-domains = <&gcc GCC_PCIE_0_PHY_GDSC>; + + #clock-cells = <0>; + clock-output-names = "pcie0_pipe_clk"; + + #phy-cells = <0>; + + status = "disabled"; + }; + + pcie1: pcie@1c08000 { + device_type = "pci"; + compatible = "qcom,eliza-pcie", "qcom,pcie-sm8550"; + reg = <0x0 0x01c08000 0x0 0x3000>, + <0x0 0x44000000 0x0 0xf1d>, + <0x0 0x44000f20 0x0 0xa8>, + <0x0 0x44001000 0x0 0x1000>, + <0x0 0x44100000 0x0 0x100000>, + <0x0 0x01c0b000 0x0 0x1000>; + reg-names = "parf", + "dbi", + "elbi", + "atu", + "config", + "mhi"; + #address-cells = <3>; + #size-cells = <2>; + ranges = <0x01000000 0x0 0x00000000 0x0 0x44200000 0x0 0x100000>, + <0x02000000 0x0 0x44300000 0x0 0x44300000 0x0 0x3d00000>, + <0x03000000 0x4 0x00000000 0x4 0x00000000 0x3 0x00000000>; + + interrupts = <GIC_SPI 141 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 142 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 143 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 144 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 145 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 146 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 147 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 148 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 140 IRQ_TYPE_LEVEL_HIGH>; + interrupt-names = "msi0", + "msi1", + "msi2", + "msi3", + "msi4", + "msi5", + "msi6", + "msi7", + "global"; + + clocks = <&gcc GCC_PCIE_1_AUX_CLK>, + <&gcc GCC_PCIE_1_CFG_AHB_CLK>, + <&gcc GCC_PCIE_1_MSTR_AXI_CLK>, + <&gcc GCC_PCIE_1_SLV_AXI_CLK>, + <&gcc GCC_PCIE_1_SLV_Q2A_AXI_CLK>, + <&gcc GCC_DDRSS_PCIE_SF_QTB_CLK>, + <&gcc GCC_AGGRE_NOC_PCIE_AXI_CLK>, + <&gcc GCC_CNOC_PCIE_SF_AXI_CLK>; + clock-names = "aux", + "cfg", + "bus_master", + "bus_slave", + "slave_q2a", + "ddrss_sf_tbu", + "noc_aggr", + "cnoc_sf_axi"; + + resets = <&gcc GCC_PCIE_1_BCR>, + <&gcc GCC_PCIE_1_LINK_DOWN_BCR>; + reset-names = "pci", + "link_down"; + + interconnects = <&pcie_noc MASTER_PCIE_1 QCOM_ICC_TAG_ALWAYS + &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>, + <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY + &cnoc_main SLAVE_PCIE_1 QCOM_ICC_TAG_ACTIVE_ONLY>; + interconnect-names = "pcie-mem", + "cpu-pcie"; + + power-domains = <&gcc GCC_PCIE_1_GDSC>; + + operating-points-v2 = <&pcie1_opp_table>; + + iommu-map = <0x0 &apps_smmu 0x1400 0x1>, + <0x100 &apps_smmu 0x1401 0x1>; + + interrupt-map = <0 0 0 1 &intc 0 0 0 149 IRQ_TYPE_LEVEL_HIGH>, + <0 0 0 2 &intc 0 0 0 150 IRQ_TYPE_LEVEL_HIGH>, + <0 0 0 3 &intc 0 0 0 151 IRQ_TYPE_LEVEL_HIGH>, + <0 0 0 4 &intc 0 0 0 152 IRQ_TYPE_LEVEL_HIGH>; + interrupt-map-mask = <0x0 0x0 0x0 0x7>; + #interrupt-cells = <1>; + + linux,pci-domain = <1>; + bus-range = <0x0 0xff>; + + dma-coherent; + + pinctrl-0 = <&pcie1_default_state>; + pinctrl-names = "default"; + + status = "disabled"; + + pcie1_opp_table: opp-table { + compatible = "operating-points-v2"; + + /* 2.5 GT/s x1 */ + opp-2500000-1 { + opp-hz = /bits/ 64 <2500000>; + required-opps = <&rpmhpd_opp_low_svs>; + opp-peak-kBps = <250000 1>; + opp-level = <1>; + }; + + /* 2.5 GT/s x2 */ + opp-5000000-1 { + opp-hz = /bits/ 64 <5000000>; + required-opps = <&rpmhpd_opp_low_svs>; + opp-peak-kBps = <500000 1>; + opp-level = <1>; + }; + + /* 5 GT/s x1 */ + opp-5000000-2 { + opp-hz = /bits/ 64 <5000000>; + required-opps = <&rpmhpd_opp_low_svs>; + opp-peak-kBps = <500000 1>; + opp-level = <2>; + }; + + /* 5 GT/s x2 */ + opp-10000000-2 { + opp-hz = /bits/ 64 <10000000>; + required-opps = <&rpmhpd_opp_low_svs>; + opp-peak-kBps = <1000000 1>; + opp-level = <2>; + }; + + /* 8 GT/s x1 */ + opp-8000000-3 { + opp-hz = /bits/ 64 <8000000>; + required-opps = <&rpmhpd_opp_low_svs>; + opp-peak-kBps = <984500 1>; + opp-level = <3>; + }; + + /* 8 GT/s x2 */ + opp-16000000-3 { + opp-hz = /bits/ 64 <16000000>; + required-opps = <&rpmhpd_opp_low_svs>; + opp-peak-kBps = <1969000 1>; + opp-level = <3>; + }; + + }; + + pcie1_port0: pcie@0 { + compatible = "pciclass,0604"; + device_type = "pci"; + reg = <0x0 0x0 0x0 0x0 0x0>; + bus-range = <0x01 0xff>; + + #address-cells = <3>; + #size-cells = <2>; + ranges; + phys = <&pcie1_phy>; + }; + }; + + pcie1_phy: phy@1c0e000 { + compatible = "qcom,eliza-qmp-gen3x2-pcie-phy"; + reg = <0x0 0x01c0e000 0x0 0x2000>; + + clocks = <&gcc GCC_PCIE_1_AUX_CLK>, + <&gcc GCC_PCIE_1_CFG_AHB_CLK>, + <&tcsr TCSR_PCIE_1_CLKREF_EN>, + <&gcc GCC_PCIE_1_PHY_RCHNG_CLK>, + <&gcc GCC_PCIE_1_PIPE_CLK>, + <&gcc GCC_PCIE_1_PIPE_DIV2_CLK>; + clock-names = "aux", + "cfg_ahb", + "ref", + "rchng", + "pipe", + "pipediv2"; + + assigned-clocks = <&gcc GCC_PCIE_1_PHY_RCHNG_CLK>; + assigned-clock-rates = <100000000>; + + resets = <&gcc GCC_PCIE_1_PHY_BCR>, + <&gcc GCC_PCIE_1_NOCSR_COM_PHY_BCR>; + reset-names = "phy", + "phy_nocsr"; + + power-domains = <&gcc GCC_PCIE_1_PHY_GDSC>; + + #clock-cells = <0>; + clock-output-names = "pcie1_pipe_clk"; + + #phy-cells = <0>; + + status = "disabled"; + }; + ufs_mem_phy: phy@1d80000 { compatible = "qcom,eliza-qmp-ufs-phy", "qcom,sm8650-qmp-ufs-phy"; @@ -2843,6 +3206,52 @@ tlmm: pinctrl@f100000 { gpio-ranges = <&tlmm 0 0 184>; wakeup-parent = <&pdc>; + pcie0_default_state: pcie0-default-state { + perst-pins { + pins = "gpio78"; + function = "gpio"; + drive-strength = <2>; + bias-disable; + }; + + clkreq-pins { + pins = "gpio80"; + function = "pcie0_clk_req_n"; + drive-strength = <2>; + bias-pull-up; + }; + + wake-pins { + pins = "gpio114"; + function = "gpio"; + drive-strength = <2>; + bias-pull-up; + }; + }; + + pcie1_default_state: pcie1-default-state { + perst-pins { + pins = "gpio54"; + function = "gpio"; + drive-strength = <2>; + bias-disable; + }; + + clkreq-pins { + pins = "gpio52"; + function = "pcie1_clk_req_n"; + drive-strength = <2>; + bias-pull-up; + }; + + wake-pins { + pins = "gpio53"; + function = "gpio"; + drive-strength = <2>; + bias-pull-up; + }; + }; + qup_i2c0_data_clk: qup-i2c0-data-clk-state { pins = "gpio28", "gpio29"; function = "qup1_se0"; -- 2.34.1 ^ permalink raw reply related [flat|nested] 14+ messages in thread
* Re: [PATCH v6 1/3] arm64: dts: qcom: eliza: Add PCIe PHY and controller nodes 2026-07-30 4:48 ` [PATCH v6 1/3] arm64: dts: qcom: eliza: Add PCIe PHY and controller nodes Krishna Chaitanya Chundru @ 2026-07-30 5:18 ` sashiko-bot 2026-07-30 7:54 ` Manivannan Sadhasivam 1 sibling, 0 replies; 14+ messages in thread From: sashiko-bot @ 2026-07-30 5:18 UTC (permalink / raw) To: Krishna Chaitanya Chundru; +Cc: linux-pci, robh, devicetree, conor+dt Thank you for your contribution! Sashiko AI review found 2 potential issue(s) to consider: - [High] Missing `msi-map` property in `pcie0` and `pcie1` breaks GIC ITS MSI translation. - [Low] Hardcoded literal `0` used instead of `GIC_SPI` macro in `interrupt-map`. -- --- Patch [1]: [PATCH v6 1/3] arm64: dts: qcom: eliza: Add PCIe PHY and controller nodes --- commit f31bbbba6b5914ad12f809fe8f6dd440484e6594 Author: Krishna Chaitanya Chundru <krishna.chundru@oss.qualcomm.com> arm64: dts: qcom: eliza: Add PCIe PHY and controller nodes Eliza supports two PCIe instances: one 8GT/s x1 (PCIe0) and one 8GT/s x2 (PCIe1). Add PCIe controller and PHY nodes for both instances, and update the GCC clock references to use the newly added PHY nodes instead of placeholder zeros. > diff --git a/arch/arm64/boot/dts/qcom/eliza.dtsi b/arch/arm64/boot/dts/qcom/eliza.dtsi > index 357e8066c1768..f802398bc7b27 100644 > --- a/arch/arm64/boot/dts/qcom/eliza.dtsi > +++ b/arch/arm64/boot/dts/qcom/eliza.dtsi [ ... ] > @@ -1784,6 +1784,369 @@ mmss_noc: interconnect@1780000 { [ ... ] > + pcie0: pcie@1c00000 { [ ... ] > + iommu-map = <0x0 &apps_smmu 0x1480 0x1>, > + <0x100 &apps_smmu 0x1481 0x1>; > + [Severity: High] Does pcie0 need an msi-map property defined alongside iommu-map to map PCIe requester IDs to GIC ITS device IDs? > + interrupt-map = <0 0 0 1 &intc 0 0 0 564 IRQ_TYPE_LEVEL_HIGH>, [Severity: Low] This isn't a bug, but should the third 0 following the parent unit address use the GIC_SPI macro instead of a literal 0 for the interrupt type? > + <0 0 0 2 &intc 0 0 0 565 IRQ_TYPE_LEVEL_HIGH>, > + <0 0 0 3 &intc 0 0 0 566 IRQ_TYPE_LEVEL_HIGH>, > + <0 0 0 4 &intc 0 0 0 567 IRQ_TYPE_LEVEL_HIGH>; [ ... ] > + pcie1: pcie@1c08000 { [ ... ] > + iommu-map = <0x0 &apps_smmu 0x1400 0x1>, > + <0x100 &apps_smmu 0x1401 0x1>; > + [Severity: High] Does pcie1 also need an msi-map property defined alongside iommu-map to map PCIe requester IDs to GIC ITS device IDs? > + interrupt-map = <0 0 0 1 &intc 0 0 0 149 IRQ_TYPE_LEVEL_HIGH>, [Severity: Low] This isn't a bug, but should the third 0 following the parent unit address use the GIC_SPI macro instead of a literal 0 for the interrupt type? > + <0 0 0 2 &intc 0 0 0 150 IRQ_TYPE_LEVEL_HIGH>, > + <0 0 0 3 &intc 0 0 0 151 IRQ_TYPE_LEVEL_HIGH>, > + <0 0 0 4 &intc 0 0 0 152 IRQ_TYPE_LEVEL_HIGH>; [ ... ] -- Sashiko AI review · https://sashiko.dev/#/patchset/20260730-eliza_evk-v6-0-40ece2d33114@oss.qualcomm.com?part=1 ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH v6 1/3] arm64: dts: qcom: eliza: Add PCIe PHY and controller nodes 2026-07-30 4:48 ` [PATCH v6 1/3] arm64: dts: qcom: eliza: Add PCIe PHY and controller nodes Krishna Chaitanya Chundru 2026-07-30 5:18 ` sashiko-bot @ 2026-07-30 7:54 ` Manivannan Sadhasivam 1 sibling, 0 replies; 14+ messages in thread From: Manivannan Sadhasivam @ 2026-07-30 7:54 UTC (permalink / raw) To: Krishna Chaitanya Chundru Cc: Bjorn Andersson, Konrad Dybcio, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Bartosz Golaszewski, linux-arm-msm, devicetree, linux-kernel, linux-pci, linux-pm, Konrad Dybcio, Bartosz Golaszewski, Abel Vesa On Thu, Jul 30, 2026 at 10:18:53AM +0530, Krishna Chaitanya Chundru wrote: > Eliza supports two PCIe instances: one 8GT/s x1 (PCIe0) and one 8GT/s x2 > (PCIe1). Add PCIe controller and PHY nodes for both instances, and update > the GCC clock references to use the newly added PHY nodes instead of > placeholder zeros. > > Reviewed-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com> > Reviewed-by: Bartosz Golaszewski <bartosz.golaszewski@oss.qualcomm.com> > Reviewed-by: Manivannan Sadhasivam <mani@kernel.org> > Reviewed-by: Abel Vesa <abel.vesa@oss.qualcomm.com> > Signed-off-by: Krishna Chaitanya Chundru <krishna.chundru@oss.qualcomm.com> > --- > arch/arm64/boot/dts/qcom/eliza.dtsi | 413 +++++++++++++++++++++++++++++++++++- > 1 file changed, 411 insertions(+), 2 deletions(-) > > diff --git a/arch/arm64/boot/dts/qcom/eliza.dtsi b/arch/arm64/boot/dts/qcom/eliza.dtsi > index 977de44b816e..01e9d4c91404 100644 > --- a/arch/arm64/boot/dts/qcom/eliza.dtsi > +++ b/arch/arm64/boot/dts/qcom/eliza.dtsi > @@ -640,8 +640,8 @@ gcc: clock-controller@100000 { > > clocks = <&bi_tcxo_div2>, > <&sleep_clk>, > - <0>, > - <0>, > + <&pcie0_phy>, > + <&pcie1_phy>, > <&ufs_mem_phy 0>, > <&ufs_mem_phy 1>, > <&ufs_mem_phy 2>, > @@ -1786,6 +1786,369 @@ mmss_noc: interconnect@1780000 { > #interconnect-cells = <2>; > }; > > + pcie0: pcie@1c00000 { > + device_type = "pci"; > + compatible = "qcom,eliza-pcie", "qcom,pcie-sm8550"; > + reg = <0x0 0x01c00000 0x0 0x3000>, > + <0x0 0x40000000 0x0 0xf1d>, > + <0x0 0x40000f20 0x0 0xa8>, > + <0x0 0x40001000 0x0 0x1000>, > + <0x0 0x40100000 0x0 0x100000>, > + <0x0 0x01c03000 0x0 0x1000>; > + reg-names = "parf", > + "dbi", > + "elbi", > + "atu", > + "config", > + "mhi"; > + #address-cells = <3>; > + #size-cells = <2>; > + ranges = <0x01000000 0x0 0x00000000 0x0 0x40200000 0x0 0x100000>, > + <0x02000000 0x0 0x40300000 0x0 0x40300000 0x0 0x3d00000>; > + > + interrupts = <GIC_SPI 376 IRQ_TYPE_LEVEL_HIGH>, > + <GIC_SPI 478 IRQ_TYPE_LEVEL_HIGH>, > + <GIC_SPI 479 IRQ_TYPE_LEVEL_HIGH>, > + <GIC_SPI 535 IRQ_TYPE_LEVEL_HIGH>, > + <GIC_SPI 536 IRQ_TYPE_LEVEL_HIGH>, > + <GIC_SPI 537 IRQ_TYPE_LEVEL_HIGH>, > + <GIC_SPI 540 IRQ_TYPE_LEVEL_HIGH>, > + <GIC_SPI 653 IRQ_TYPE_LEVEL_HIGH>, > + <GIC_SPI 370 IRQ_TYPE_LEVEL_HIGH>; > + interrupt-names = "msi0", > + "msi1", > + "msi2", > + "msi3", > + "msi4", > + "msi5", > + "msi6", > + "msi7", > + "global"; > + > + clocks = <&gcc GCC_PCIE_0_AUX_CLK>, > + <&gcc GCC_PCIE_0_CFG_AHB_CLK>, > + <&gcc GCC_PCIE_0_MSTR_AXI_CLK>, > + <&gcc GCC_PCIE_0_SLV_AXI_CLK>, > + <&gcc GCC_PCIE_0_SLV_Q2A_AXI_CLK>, > + <&gcc GCC_DDRSS_PCIE_SF_QTB_CLK>, > + <&gcc GCC_AGGRE_NOC_PCIE_AXI_CLK>, > + <&gcc GCC_CNOC_PCIE_SF_AXI_CLK>; > + clock-names = "aux", > + "cfg", > + "bus_master", > + "bus_slave", > + "slave_q2a", > + "ddrss_sf_tbu", > + "noc_aggr", > + "cnoc_sf_axi"; > + > + resets = <&gcc GCC_PCIE_0_BCR>, > + <&gcc GCC_PCIE_0_LINK_DOWN_BCR>; > + reset-names = "pci", > + "link_down"; > + > + interconnects = <&pcie_noc MASTER_PCIE_0 QCOM_ICC_TAG_ALWAYS > + &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>, > + <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY > + &cnoc_main SLAVE_PCIE_0 QCOM_ICC_TAG_ACTIVE_ONLY>; > + interconnect-names = "pcie-mem", > + "cpu-pcie"; > + > + power-domains = <&gcc GCC_PCIE_0_GDSC>; > + > + operating-points-v2 = <&pcie0_opp_table>; > + > + iommu-map = <0x0 &apps_smmu 0x1480 0x1>, > + <0x100 &apps_smmu 0x1481 0x1>; As we learned recently, you need to use 2 cells for SID, since apps_smmu uses '#iommu-cells = <2>': iommu-map = <0x0 &apps_smmu 0x1480 0x0 0x1>, <0x100 &apps_smmu 0x1481 0x0 0x1>; Same for the other node. - Mani -- மணிவண்ணன் சதாசிவம் ^ permalink raw reply [flat|nested] 14+ messages in thread
* [PATCH v6 2/3] arm64: dts: qcom: eliza-evk: Add PCIe0 with M.2 E key connector 2026-07-30 4:48 [PATCH v6 0/3] arm64: dts: qcom: eliza-evk: Enable PCIe0 and PCIe1 with M.2 and TC9563 switch Krishna Chaitanya Chundru 2026-07-30 4:48 ` [PATCH v6 1/3] arm64: dts: qcom: eliza: Add PCIe PHY and controller nodes Krishna Chaitanya Chundru @ 2026-07-30 4:48 ` Krishna Chaitanya Chundru 2026-07-30 5:06 ` sashiko-bot 2026-07-30 5:08 ` Manivannan Sadhasivam 2026-07-30 4:48 ` [PATCH v6 3/3] arm64: dts: qcom: eliza-evk: Add PCIe1 with TC9563 PCIe switch Krishna Chaitanya Chundru 2 siblings, 2 replies; 14+ messages in thread From: Krishna Chaitanya Chundru @ 2026-07-30 4:48 UTC (permalink / raw) To: Bjorn Andersson, Konrad Dybcio, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Manivannan Sadhasivam, Bartosz Golaszewski Cc: linux-arm-msm, devicetree, linux-kernel, linux-pci, linux-pm, Krishna Chaitanya Chundru, Konrad Dybcio, Bartosz Golaszewski The Eliza EVK board features an M.2 E key connector connected to PCIe0. Enable the PCIe0 root port and its QMP PHY with the necessary RPMH regulator supplies. The M.2 slot's 3.3V supply rail is GPIO-controlled via a TCA9538 I/O expander on I2C4. The M.2 E key slot hosts a WLAN card connected over PCIe and a Bluetooth device connected over UART. Model the connector using the pcie-m2-e-connector binding, wiring the PCIe root port and UART5 for the respective interfaces. Reviewed-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com> Reviewed-by: Manivannan Sadhasivam <mani@kernel.org> Reviewed-by: Bartosz Golaszewski <bartosz.golaszewski@oss.qualcomm.com> Signed-off-by: Krishna Chaitanya Chundru <krishna.chundru@oss.qualcomm.com> --- arch/arm64/boot/dts/qcom/eliza-evk.dtsi | 116 ++++++++++++++++++++++++++++++++ 1 file changed, 116 insertions(+) diff --git a/arch/arm64/boot/dts/qcom/eliza-evk.dtsi b/arch/arm64/boot/dts/qcom/eliza-evk.dtsi index e47b24f8b827..b35fffb50976 100644 --- a/arch/arm64/boot/dts/qcom/eliza-evk.dtsi +++ b/arch/arm64/boot/dts/qcom/eliza-evk.dtsi @@ -11,6 +11,92 @@ aliases { chosen { stdout-path = "serial0:115200n8"; }; + + vreg_pcie_m_3p3: regulator-3p3 { + compatible = "regulator-fixed"; + + regulator-name = "vreg_3p3"; + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; + + gpio = <&gpio_expander1 6 GPIO_ACTIVE_HIGH>; + enable-active-high; + }; + + connector-0 { + compatible = "pcie-m2-e-connector"; + vpcie3v3-supply = <&vreg_pcie_m_3p3>; + w-disable1-gpios = <&tlmm 35 GPIO_ACTIVE_LOW>; + w-disable2-gpios = <&pm8550vs_g_gpios 4 GPIO_ACTIVE_HIGH>; + + pinctrl-0 = <&m2_w_disable1>, <&m2_w_disable2>; + pinctrl-names = "default"; + + ports { + #address-cells = <1>; + #size-cells = <0>; + + port@0 { + reg = <0>; + #address-cells = <1>; + #size-cells = <0>; + + m2_e_pcie_ep: endpoint@0 { + reg = <0>; + remote-endpoint = <&pcieport0_ep>; + }; + }; + + port@3 { + reg = <3>; + #address-cells = <1>; + #size-cells = <0>; + + m2_e_uart_ep: endpoint@0 { + reg = <0>; + remote-endpoint = <&uart5_ep>; + }; + }; + }; + }; +}; + +&i2c4 { + pinctrl-0 = <&qup_i2c4_data_clk>; + pinctrl-names = "default"; + + clock-frequency = <400000>; + + status = "okay"; + + gpio_expander1: gpio@3c { + compatible = "ti,tca9538"; + #gpio-cells = <2>; + gpio-controller; + reg = <0x3c>; + }; +}; + +&pcie0 { + status = "okay"; +}; + +&pcie0_phy { + vdda-phy-supply = <&vreg_l1k>; + vdda-pll-supply = <&vreg_l3k>; + + status = "okay"; +}; + +&pcie0_port0 { + wake-gpios = <&tlmm 114 GPIO_ACTIVE_LOW>; + reset-gpios = <&tlmm 78 GPIO_ACTIVE_LOW>; + + port { + pcieport0_ep: endpoint { + remote-endpoint = <&m2_e_pcie_ep>; + }; + }; }; &uart13 { @@ -18,3 +104,33 @@ &uart13 { status = "okay"; }; + +&uart5 { + status = "okay"; + + port { + uart5_ep: endpoint { + remote-endpoint = <&m2_e_uart_ep>; + }; + }; +}; + +&pm8550vs_g_gpios { + m2_w_disable2: m2-w-disable2-state { + pins = "gpio4"; + function = "normal"; + input-disable; + output-enable; + bias-disable; + power-source = <2>; + }; +}; + +&tlmm { + m2_w_disable1: m2-w-disable1-state { + pins = "gpio35"; + function = "gpio"; + drive-strength = <2>; + bias-pull-up; + }; +}; -- 2.34.1 ^ permalink raw reply related [flat|nested] 14+ messages in thread
* Re: [PATCH v6 2/3] arm64: dts: qcom: eliza-evk: Add PCIe0 with M.2 E key connector 2026-07-30 4:48 ` [PATCH v6 2/3] arm64: dts: qcom: eliza-evk: Add PCIe0 with M.2 E key connector Krishna Chaitanya Chundru @ 2026-07-30 5:06 ` sashiko-bot 2026-07-30 5:08 ` Manivannan Sadhasivam 1 sibling, 0 replies; 14+ messages in thread From: sashiko-bot @ 2026-07-30 5:06 UTC (permalink / raw) To: Krishna Chaitanya Chundru; +Cc: devicetree, conor+dt, robh, linux-pci Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider: - [Medium] W_DISABLE2# GPIO polarity is inconsistently configured as GPIO_ACTIVE_HIGH, likely inverting the intended PCIe M.2 power sequencing logic. -- --- Patch [2]: [PATCH v6 2/3] arm64: dts: qcom: eliza-evk: Add PCIe0 with M.2 E key connector --- commit b91f81c61ce6e56f3f53636edf8015143cf5ed8b Author: Krishna Chaitanya Chundru <krishna.chundru@oss.qualcomm.com> arm64: dts: qcom: eliza-evk: Add PCIe0 with M.2 E key connector The Eliza EVK board features an M.2 E key connector connected to PCIe0. This commit enables the PCIe0 root port and its QMP PHY with the necessary RPMH regulator supplies. It models the connector using the pcie-m2-e-connector binding to support a WLAN card and a Bluetooth device. > diff --git a/arch/arm64/boot/dts/qcom/eliza-evk.dtsi b/arch/arm64/boot/dts/qcom/eliza-evk.dtsi > index e47b24f8b8277..b35fffb509765 100644 > --- a/arch/arm64/boot/dts/qcom/eliza-evk.dtsi > +++ b/arch/arm64/boot/dts/qcom/eliza-evk.dtsi [ ... ] > + connector-0 { > + compatible = "pcie-m2-e-connector"; > + vpcie3v3-supply = <&vreg_pcie_m_3p3>; > + w-disable1-gpios = <&tlmm 35 GPIO_ACTIVE_LOW>; > + w-disable2-gpios = <&pm8550vs_g_gpios 4 GPIO_ACTIVE_HIGH>; [Severity: Medium] Is the GPIO_ACTIVE_HIGH polarity for w-disable2-gpios correct here? The pwrseq-pcie-m2 driver attempts to enable the Bluetooth UART interface by setting the logical value of w-disable2-gpios to 0. Unless there is an inverting level shifter involved for this specific PMIC GPIO, wouldn't an active-high configuration invert the intended PCIe M.2 power sequencing logic? This could cause the Bluetooth device to be disabled during the power-on sequence and enabled when it should be disabled, which would break Bluetooth functionality. > + > + pinctrl-0 = <&m2_w_disable1>, <&m2_w_disable2>; > + pinctrl-names = "default"; [ ... ] -- Sashiko AI review · https://sashiko.dev/#/patchset/20260730-eliza_evk-v6-0-40ece2d33114@oss.qualcomm.com?part=2 ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH v6 2/3] arm64: dts: qcom: eliza-evk: Add PCIe0 with M.2 E key connector 2026-07-30 4:48 ` [PATCH v6 2/3] arm64: dts: qcom: eliza-evk: Add PCIe0 with M.2 E key connector Krishna Chaitanya Chundru 2026-07-30 5:06 ` sashiko-bot @ 2026-07-30 5:08 ` Manivannan Sadhasivam 2026-07-30 6:23 ` Krishna Chaitanya Chundru 1 sibling, 1 reply; 14+ messages in thread From: Manivannan Sadhasivam @ 2026-07-30 5:08 UTC (permalink / raw) To: Krishna Chaitanya Chundru Cc: Bjorn Andersson, Konrad Dybcio, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Bartosz Golaszewski, linux-arm-msm, devicetree, linux-kernel, linux-pci, linux-pm, Konrad Dybcio, Bartosz Golaszewski On Thu, Jul 30, 2026 at 10:18:54AM +0530, Krishna Chaitanya Chundru wrote: > The Eliza EVK board features an M.2 E key connector connected to PCIe0. > Enable the PCIe0 root port and its QMP PHY with the necessary RPMH > regulator supplies. The M.2 slot's 3.3V supply rail is GPIO-controlled > via a TCA9538 I/O expander on I2C4. > > The M.2 E key slot hosts a WLAN card connected over PCIe and a Bluetooth > device connected over UART. Model the connector using the > pcie-m2-e-connector binding, wiring the PCIe root port and UART5 for > the respective interfaces. > > Reviewed-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com> > Reviewed-by: Manivannan Sadhasivam <mani@kernel.org> > Reviewed-by: Bartosz Golaszewski <bartosz.golaszewski@oss.qualcomm.com> > Signed-off-by: Krishna Chaitanya Chundru <krishna.chundru@oss.qualcomm.com> > --- > arch/arm64/boot/dts/qcom/eliza-evk.dtsi | 116 ++++++++++++++++++++++++++++++++ > 1 file changed, 116 insertions(+) > > diff --git a/arch/arm64/boot/dts/qcom/eliza-evk.dtsi b/arch/arm64/boot/dts/qcom/eliza-evk.dtsi > index e47b24f8b827..b35fffb50976 100644 > --- a/arch/arm64/boot/dts/qcom/eliza-evk.dtsi > +++ b/arch/arm64/boot/dts/qcom/eliza-evk.dtsi > @@ -11,6 +11,92 @@ aliases { > chosen { > stdout-path = "serial0:115200n8"; > }; > + > + vreg_pcie_m_3p3: regulator-3p3 { > + compatible = "regulator-fixed"; > + > + regulator-name = "vreg_3p3"; > + regulator-min-microvolt = <3300000>; > + regulator-max-microvolt = <3300000>; > + > + gpio = <&gpio_expander1 6 GPIO_ACTIVE_HIGH>; > + enable-active-high; > + }; > + > + connector-0 { > + compatible = "pcie-m2-e-connector"; > + vpcie3v3-supply = <&vreg_pcie_m_3p3>; > + w-disable1-gpios = <&tlmm 35 GPIO_ACTIVE_LOW>; > + w-disable2-gpios = <&pm8550vs_g_gpios 4 GPIO_ACTIVE_HIGH>; Hmm, Sashiko pointed out the polarity issue here, GPIO_ACTIVE_HIGH. Is it a mistake? - Mani > + > + pinctrl-0 = <&m2_w_disable1>, <&m2_w_disable2>; > + pinctrl-names = "default"; > + > + ports { > + #address-cells = <1>; > + #size-cells = <0>; > + > + port@0 { > + reg = <0>; > + #address-cells = <1>; > + #size-cells = <0>; > + > + m2_e_pcie_ep: endpoint@0 { > + reg = <0>; > + remote-endpoint = <&pcieport0_ep>; > + }; > + }; > + > + port@3 { > + reg = <3>; > + #address-cells = <1>; > + #size-cells = <0>; > + > + m2_e_uart_ep: endpoint@0 { > + reg = <0>; > + remote-endpoint = <&uart5_ep>; > + }; > + }; > + }; > + }; > +}; > + > +&i2c4 { > + pinctrl-0 = <&qup_i2c4_data_clk>; > + pinctrl-names = "default"; > + > + clock-frequency = <400000>; > + > + status = "okay"; > + > + gpio_expander1: gpio@3c { > + compatible = "ti,tca9538"; > + #gpio-cells = <2>; > + gpio-controller; > + reg = <0x3c>; > + }; > +}; > + > +&pcie0 { > + status = "okay"; > +}; > + > +&pcie0_phy { > + vdda-phy-supply = <&vreg_l1k>; > + vdda-pll-supply = <&vreg_l3k>; > + > + status = "okay"; > +}; > + > +&pcie0_port0 { > + wake-gpios = <&tlmm 114 GPIO_ACTIVE_LOW>; > + reset-gpios = <&tlmm 78 GPIO_ACTIVE_LOW>; > + > + port { > + pcieport0_ep: endpoint { > + remote-endpoint = <&m2_e_pcie_ep>; > + }; > + }; > }; > > &uart13 { > @@ -18,3 +104,33 @@ &uart13 { > > status = "okay"; > }; > + > +&uart5 { > + status = "okay"; > + > + port { > + uart5_ep: endpoint { > + remote-endpoint = <&m2_e_uart_ep>; > + }; > + }; > +}; > + > +&pm8550vs_g_gpios { > + m2_w_disable2: m2-w-disable2-state { > + pins = "gpio4"; > + function = "normal"; > + input-disable; > + output-enable; > + bias-disable; > + power-source = <2>; > + }; > +}; > + > +&tlmm { > + m2_w_disable1: m2-w-disable1-state { > + pins = "gpio35"; > + function = "gpio"; > + drive-strength = <2>; > + bias-pull-up; > + }; > +}; > > -- > 2.34.1 > -- மணிவண்ணன் சதாசிவம் ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH v6 2/3] arm64: dts: qcom: eliza-evk: Add PCIe0 with M.2 E key connector 2026-07-30 5:08 ` Manivannan Sadhasivam @ 2026-07-30 6:23 ` Krishna Chaitanya Chundru 0 siblings, 0 replies; 14+ messages in thread From: Krishna Chaitanya Chundru @ 2026-07-30 6:23 UTC (permalink / raw) To: Manivannan Sadhasivam Cc: Bjorn Andersson, Konrad Dybcio, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Bartosz Golaszewski, linux-arm-msm, devicetree, linux-kernel, linux-pci, linux-pm, Konrad Dybcio, Bartosz Golaszewski On 7/30/2026 10:38 AM, Manivannan Sadhasivam wrote: > On Thu, Jul 30, 2026 at 10:18:54AM +0530, Krishna Chaitanya Chundru wrote: >> The Eliza EVK board features an M.2 E key connector connected to PCIe0. >> Enable the PCIe0 root port and its QMP PHY with the necessary RPMH >> regulator supplies. The M.2 slot's 3.3V supply rail is GPIO-controlled >> via a TCA9538 I/O expander on I2C4. >> >> The M.2 E key slot hosts a WLAN card connected over PCIe and a Bluetooth >> device connected over UART. Model the connector using the >> pcie-m2-e-connector binding, wiring the PCIe root port and UART5 for >> the respective interfaces. >> >> Reviewed-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com> >> Reviewed-by: Manivannan Sadhasivam <mani@kernel.org> >> Reviewed-by: Bartosz Golaszewski <bartosz.golaszewski@oss.qualcomm.com> >> Signed-off-by: Krishna Chaitanya Chundru <krishna.chundru@oss.qualcomm.com> >> --- >> arch/arm64/boot/dts/qcom/eliza-evk.dtsi | 116 ++++++++++++++++++++++++++++++++ >> 1 file changed, 116 insertions(+) >> >> diff --git a/arch/arm64/boot/dts/qcom/eliza-evk.dtsi b/arch/arm64/boot/dts/qcom/eliza-evk.dtsi >> index e47b24f8b827..b35fffb50976 100644 >> --- a/arch/arm64/boot/dts/qcom/eliza-evk.dtsi >> +++ b/arch/arm64/boot/dts/qcom/eliza-evk.dtsi >> @@ -11,6 +11,92 @@ aliases { >> chosen { >> stdout-path = "serial0:115200n8"; >> }; >> + >> + vreg_pcie_m_3p3: regulator-3p3 { >> + compatible = "regulator-fixed"; >> + >> + regulator-name = "vreg_3p3"; >> + regulator-min-microvolt = <3300000>; >> + regulator-max-microvolt = <3300000>; >> + >> + gpio = <&gpio_expander1 6 GPIO_ACTIVE_HIGH>; >> + enable-active-high; >> + }; >> + >> + connector-0 { >> + compatible = "pcie-m2-e-connector"; >> + vpcie3v3-supply = <&vreg_pcie_m_3p3>; >> + w-disable1-gpios = <&tlmm 35 GPIO_ACTIVE_LOW>; >> + w-disable2-gpios = <&pm8550vs_g_gpios 4 GPIO_ACTIVE_HIGH>; > Hmm, Sashiko pointed out the polarity issue here, GPIO_ACTIVE_HIGH. Is it a > mistake? No it is working with active high only, it is how they connected in the HW. - Krishna Chaitanya. > - Mani > >> + >> + pinctrl-0 = <&m2_w_disable1>, <&m2_w_disable2>; >> + pinctrl-names = "default"; >> + >> + ports { >> + #address-cells = <1>; >> + #size-cells = <0>; >> + >> + port@0 { >> + reg = <0>; >> + #address-cells = <1>; >> + #size-cells = <0>; >> + >> + m2_e_pcie_ep: endpoint@0 { >> + reg = <0>; >> + remote-endpoint = <&pcieport0_ep>; >> + }; >> + }; >> + >> + port@3 { >> + reg = <3>; >> + #address-cells = <1>; >> + #size-cells = <0>; >> + >> + m2_e_uart_ep: endpoint@0 { >> + reg = <0>; >> + remote-endpoint = <&uart5_ep>; >> + }; >> + }; >> + }; >> + }; >> +}; >> + >> +&i2c4 { >> + pinctrl-0 = <&qup_i2c4_data_clk>; >> + pinctrl-names = "default"; >> + >> + clock-frequency = <400000>; >> + >> + status = "okay"; >> + >> + gpio_expander1: gpio@3c { >> + compatible = "ti,tca9538"; >> + #gpio-cells = <2>; >> + gpio-controller; >> + reg = <0x3c>; >> + }; >> +}; >> + >> +&pcie0 { >> + status = "okay"; >> +}; >> + >> +&pcie0_phy { >> + vdda-phy-supply = <&vreg_l1k>; >> + vdda-pll-supply = <&vreg_l3k>; >> + >> + status = "okay"; >> +}; >> + >> +&pcie0_port0 { >> + wake-gpios = <&tlmm 114 GPIO_ACTIVE_LOW>; >> + reset-gpios = <&tlmm 78 GPIO_ACTIVE_LOW>; >> + >> + port { >> + pcieport0_ep: endpoint { >> + remote-endpoint = <&m2_e_pcie_ep>; >> + }; >> + }; >> }; >> >> &uart13 { >> @@ -18,3 +104,33 @@ &uart13 { >> >> status = "okay"; >> }; >> + >> +&uart5 { >> + status = "okay"; >> + >> + port { >> + uart5_ep: endpoint { >> + remote-endpoint = <&m2_e_uart_ep>; >> + }; >> + }; >> +}; >> + >> +&pm8550vs_g_gpios { >> + m2_w_disable2: m2-w-disable2-state { >> + pins = "gpio4"; >> + function = "normal"; >> + input-disable; >> + output-enable; >> + bias-disable; >> + power-source = <2>; >> + }; >> +}; >> + >> +&tlmm { >> + m2_w_disable1: m2-w-disable1-state { >> + pins = "gpio35"; >> + function = "gpio"; >> + drive-strength = <2>; >> + bias-pull-up; >> + }; >> +}; >> >> -- >> 2.34.1 >> ^ permalink raw reply [flat|nested] 14+ messages in thread
* [PATCH v6 3/3] arm64: dts: qcom: eliza-evk: Add PCIe1 with TC9563 PCIe switch 2026-07-30 4:48 [PATCH v6 0/3] arm64: dts: qcom: eliza-evk: Enable PCIe0 and PCIe1 with M.2 and TC9563 switch Krishna Chaitanya Chundru 2026-07-30 4:48 ` [PATCH v6 1/3] arm64: dts: qcom: eliza: Add PCIe PHY and controller nodes Krishna Chaitanya Chundru 2026-07-30 4:48 ` [PATCH v6 2/3] arm64: dts: qcom: eliza-evk: Add PCIe0 with M.2 E key connector Krishna Chaitanya Chundru @ 2026-07-30 4:48 ` Krishna Chaitanya Chundru 2026-07-30 5:10 ` sashiko-bot 2026-07-30 5:25 ` Manivannan Sadhasivam 2 siblings, 2 replies; 14+ messages in thread From: Krishna Chaitanya Chundru @ 2026-07-30 4:48 UTC (permalink / raw) To: Bjorn Andersson, Konrad Dybcio, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Manivannan Sadhasivam, Bartosz Golaszewski Cc: linux-arm-msm, devicetree, linux-kernel, linux-pci, linux-pm, Krishna Chaitanya Chundru, Konrad Dybcio, Bartosz Golaszewski, Abel Vesa The Eliza EVK board connects PCIe1 (8GT/s x2) to a Toshiba TC9563 PCIe switch. Enable PCIe1 and its QMP PHY nodes. TC9563 uses I2C (at address 0x77 on I2C4) for its management interface. Override the base iommu-map with the expanded set covering all the switch's downstream ports (0x1400-0x1408 SID range). The TC9563 RESX# and PERST# are OR-ed internally to assert reset on the switch. Use TC9563 RESX# pin via a TLMM GPIO and skip wiring PERST# from the PCIe controller. Reviewed-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com> Reviewed-by: Bartosz Golaszewski <bartosz.golaszewski@oss.qualcomm.com> Reviewed-by: Abel Vesa <abel.vesa@oss.qualcomm.com> Reviewed-by: Manivannan Sadhasivam <mani@kernel.org> Signed-off-by: Krishna Chaitanya Chundru <krishna.chundru@oss.qualcomm.com> --- arch/arm64/boot/dts/qcom/eliza-evk.dtsi | 113 ++++++++++++++++++++++++++++++++ 1 file changed, 113 insertions(+) diff --git a/arch/arm64/boot/dts/qcom/eliza-evk.dtsi b/arch/arm64/boot/dts/qcom/eliza-evk.dtsi index b35fffb50976..419e737c54e6 100644 --- a/arch/arm64/boot/dts/qcom/eliza-evk.dtsi +++ b/arch/arm64/boot/dts/qcom/eliza-evk.dtsi @@ -12,6 +12,26 @@ chosen { stdout-path = "serial0:115200n8"; }; + vreg_0p9: regulator-0v9 { + compatible = "regulator-fixed"; + regulator-name = "VREG_0P9"; + + regulator-min-microvolt = <900000>; + regulator-max-microvolt = <900000>; + regulator-always-on; + regulator-boot-on; + }; + + vreg_1p8: regulator-1v8 { + compatible = "regulator-fixed"; + regulator-name = "VREG_1P8"; + + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; + regulator-always-on; + regulator-boot-on; + }; + vreg_pcie_m_3p3: regulator-3p3 { compatible = "regulator-fixed"; @@ -99,6 +119,99 @@ pcieport0_ep: endpoint { }; }; +&pcie1 { + iommu-map = <0x0 &apps_smmu 0x1400 0x1>, + <0x100 &apps_smmu 0x1401 0x1>, + <0x208 &apps_smmu 0x1402 0x1>, + <0x210 &apps_smmu 0x1403 0x1>, + <0x218 &apps_smmu 0x1404 0x1>, + <0x300 &apps_smmu 0x1405 0x1>, + <0x400 &apps_smmu 0x1406 0x1>, + <0x500 &apps_smmu 0x1407 0x1>, + <0x501 &apps_smmu 0x1408 0x1>; + + status = "okay"; +}; + +&pcie1_phy { + vdda-phy-supply = <&vreg_l1k>; + vdda-pll-supply = <&vreg_l3k>; + + status = "okay"; +}; + +&pcie1_port0 { + wake-gpios = <&tlmm 53 GPIO_ACTIVE_LOW>; + /* Same GPIO is used for both PERST# and resx-gpio */ + + tc9563: pcie@0,0 { + compatible = "pci1179,0623"; + reg = <0x10000 0x0 0x0 0x0 0x0>; + #address-cells = <3>; + #size-cells = <2>; + + device_type = "pci"; + ranges; + bus-range = <0x2 0xff>; + + vddc-supply = <&vreg_0p9>; + vdd18-supply = <&vreg_1p8>; + vdd09-supply = <&vreg_0p9>; + vddio1-supply = <&vreg_1p8>; + vddio2-supply = <&vreg_1p8>; + vddio18-supply = <&vreg_1p8>; + + i2c-parent = <&i2c4 0x77>; + + resx-gpios = <&tlmm 54 GPIO_ACTIVE_LOW>; + + pcie@1,0 { + reg = <0x20800 0x0 0x0 0x0 0x0>; + #address-cells = <3>; + #size-cells = <2>; + + device_type = "pci"; + ranges; + bus-range = <0x3 0xff>; + }; + + pcie@2,0 { + reg = <0x21000 0x0 0x0 0x0 0x0>; + #address-cells = <3>; + #size-cells = <2>; + + device_type = "pci"; + ranges; + bus-range = <0x4 0xff>; + }; + + pcie@3,0 { + reg = <0x21800 0x0 0x0 0x0 0x0>; + #address-cells = <3>; + #size-cells = <2>; + device_type = "pci"; + ranges; + bus-range = <0x5 0xff>; + + pcie@0,0 { + reg = <0x50000 0x0 0x0 0x0 0x0>; + #address-cells = <3>; + #size-cells = <2>; + device_type = "pci"; + ranges; + }; + + pcie@0,1 { + reg = <0x50100 0x0 0x0 0x0 0x0>; + #address-cells = <3>; + #size-cells = <2>; + device_type = "pci"; + ranges; + }; + }; + }; +}; + &uart13 { compatible = "qcom,geni-debug-uart"; -- 2.34.1 ^ permalink raw reply related [flat|nested] 14+ messages in thread
* Re: [PATCH v6 3/3] arm64: dts: qcom: eliza-evk: Add PCIe1 with TC9563 PCIe switch 2026-07-30 4:48 ` [PATCH v6 3/3] arm64: dts: qcom: eliza-evk: Add PCIe1 with TC9563 PCIe switch Krishna Chaitanya Chundru @ 2026-07-30 5:10 ` sashiko-bot 2026-07-30 5:25 ` Manivannan Sadhasivam 1 sibling, 0 replies; 14+ messages in thread From: sashiko-bot @ 2026-07-30 5:10 UTC (permalink / raw) To: Krishna Chaitanya Chundru; +Cc: robh, linux-pci, devicetree, conor+dt Thank you for your contribution! Sashiko AI review found 2 potential issue(s) to consider: - [Medium] Endpoint devices incorrectly define PCI bridge properties (`device_type = "pci"`, `ranges`, etc.). - [Low] The comment explaining that PERST# and RESX# share the same GPIO is misplaced, causing confusion about pin assignments. -- --- Patch [3]: [PATCH v6 3/3] arm64: dts: qcom: eliza-evk: Add PCIe1 with TC9563 PCIe switch --- commit 86f389de1416cf57b1a057c5cc8316c6fc164073 Author: Krishna Chaitanya Chundru <krishna.chundru@oss.qualcomm.com> arm64: dts: qcom: eliza-evk: Add PCIe1 with TC9563 PCIe switch The Eliza EVK board connects PCIe1 (8GT/s x2) to a Toshiba TC9563 PCIe switch. Enable PCIe1, QMP PHY nodes, and TC9563 nodes on I2C and PCIe. > diff --git a/arch/arm64/boot/dts/qcom/eliza-evk.dtsi b/arch/arm64/boot/dts/qcom/eliza-evk.dtsi > index b35fffb509765..419e737c54e6f 100644 > --- a/arch/arm64/boot/dts/qcom/eliza-evk.dtsi > +++ b/arch/arm64/boot/dts/qcom/eliza-evk.dtsi [ ... ] > +&pcie1_port0 { > + wake-gpios = <&tlmm 53 GPIO_ACTIVE_LOW>; > + /* Same GPIO is used for both PERST# and resx-gpio */ [Severity: Low] Is this comment placed correctly? The comment implies that wake-gpios (TLMM 53) is the shared reset GPIO, but resx-gpios is defined as TLMM 54 further down in the tc9563 node. Should this comment be moved above resx-gpios or the omitted reset-gpios property to avoid confusion? > + > + tc9563: pcie@0,0 { > + compatible = "pci1179,0623"; > + reg = <0x10000 0x0 0x0 0x0 0x0>; [ ... ] > + pcie@3,0 { > + reg = <0x21800 0x0 0x0 0x0 0x0>; > + #address-cells = <3>; > + #size-cells = <2>; > + device_type = "pci"; > + ranges; > + bus-range = <0x5 0xff>; > + > + pcie@0,0 { > + reg = <0x50000 0x0 0x0 0x0 0x0>; > + #address-cells = <3>; > + #size-cells = <2>; > + device_type = "pci"; > + ranges; > + }; > + > + pcie@0,1 { > + reg = <0x50100 0x0 0x0 0x0 0x0>; > + #address-cells = <3>; > + #size-cells = <2>; > + device_type = "pci"; > + ranges; > + }; [Severity: Medium] Are pcie@0,0 and pcie@0,1 leaf endpoints? If these child nodes represent leaf endpoints (like Ethernet MAC devices), they should not include properties strictly reserved for PCI-to-PCI bridges or Root Ports such as #address-cells, #size-cells, ranges, or device_type = "pci". Will this cause dtbs_check validation errors or cause the OF/PCI subsystem to misinterpret these leaf nodes as PCI bridges? > + }; > + }; > +}; -- Sashiko AI review · https://sashiko.dev/#/patchset/20260730-eliza_evk-v6-0-40ece2d33114@oss.qualcomm.com?part=3 ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH v6 3/3] arm64: dts: qcom: eliza-evk: Add PCIe1 with TC9563 PCIe switch 2026-07-30 4:48 ` [PATCH v6 3/3] arm64: dts: qcom: eliza-evk: Add PCIe1 with TC9563 PCIe switch Krishna Chaitanya Chundru 2026-07-30 5:10 ` sashiko-bot @ 2026-07-30 5:25 ` Manivannan Sadhasivam 2026-07-30 7:42 ` Konrad Dybcio 1 sibling, 1 reply; 14+ messages in thread From: Manivannan Sadhasivam @ 2026-07-30 5:25 UTC (permalink / raw) To: Krishna Chaitanya Chundru Cc: Bjorn Andersson, Konrad Dybcio, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Bartosz Golaszewski, linux-arm-msm, devicetree, linux-kernel, linux-pci, linux-pm, Konrad Dybcio, Bartosz Golaszewski, Abel Vesa On Thu, Jul 30, 2026 at 10:18:55AM +0530, Krishna Chaitanya Chundru wrote: > The Eliza EVK board connects PCIe1 (8GT/s x2) to a Toshiba TC9563 > PCIe switch. Enable PCIe1 and its QMP PHY nodes. > > TC9563 uses I2C (at address 0x77 on I2C4) for its management interface. > > Override the base iommu-map with the expanded set covering all the > switch's downstream ports (0x1400-0x1408 SID range). > > The TC9563 RESX# and PERST# are OR-ed internally to assert reset on the > switch. Use TC9563 RESX# pin via a TLMM GPIO and skip wiring PERST# > from the PCIe controller. > > Reviewed-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com> > Reviewed-by: Bartosz Golaszewski <bartosz.golaszewski@oss.qualcomm.com> > Reviewed-by: Abel Vesa <abel.vesa@oss.qualcomm.com> > Reviewed-by: Manivannan Sadhasivam <mani@kernel.org> > Signed-off-by: Krishna Chaitanya Chundru <krishna.chundru@oss.qualcomm.com> > --- > arch/arm64/boot/dts/qcom/eliza-evk.dtsi | 113 ++++++++++++++++++++++++++++++++ > 1 file changed, 113 insertions(+) > > diff --git a/arch/arm64/boot/dts/qcom/eliza-evk.dtsi b/arch/arm64/boot/dts/qcom/eliza-evk.dtsi > index b35fffb50976..419e737c54e6 100644 > --- a/arch/arm64/boot/dts/qcom/eliza-evk.dtsi > +++ b/arch/arm64/boot/dts/qcom/eliza-evk.dtsi > @@ -12,6 +12,26 @@ chosen { > stdout-path = "serial0:115200n8"; > }; > > + vreg_0p9: regulator-0v9 { > + compatible = "regulator-fixed"; > + regulator-name = "VREG_0P9"; > + > + regulator-min-microvolt = <900000>; > + regulator-max-microvolt = <900000>; > + regulator-always-on; > + regulator-boot-on; > + }; > + > + vreg_1p8: regulator-1v8 { > + compatible = "regulator-fixed"; > + regulator-name = "VREG_1P8"; > + > + regulator-min-microvolt = <1800000>; > + regulator-max-microvolt = <1800000>; > + regulator-always-on; > + regulator-boot-on; > + }; > + > vreg_pcie_m_3p3: regulator-3p3 { > compatible = "regulator-fixed"; > > @@ -99,6 +119,99 @@ pcieport0_ep: endpoint { > }; > }; > > +&pcie1 { > + iommu-map = <0x0 &apps_smmu 0x1400 0x1>, > + <0x100 &apps_smmu 0x1401 0x1>, > + <0x208 &apps_smmu 0x1402 0x1>, > + <0x210 &apps_smmu 0x1403 0x1>, > + <0x218 &apps_smmu 0x1404 0x1>, > + <0x300 &apps_smmu 0x1405 0x1>, > + <0x400 &apps_smmu 0x1406 0x1>, > + <0x500 &apps_smmu 0x1407 0x1>, > + <0x501 &apps_smmu 0x1408 0x1>; > + > + status = "okay"; > +}; > + > +&pcie1_phy { > + vdda-phy-supply = <&vreg_l1k>; > + vdda-pll-supply = <&vreg_l3k>; > + > + status = "okay"; > +}; > + > +&pcie1_port0 { > + wake-gpios = <&tlmm 53 GPIO_ACTIVE_LOW>; > + /* Same GPIO is used for both PERST# and resx-gpio */ > + > + tc9563: pcie@0,0 { > + compatible = "pci1179,0623"; > + reg = <0x10000 0x0 0x0 0x0 0x0>; > + #address-cells = <3>; > + #size-cells = <2>; > + > + device_type = "pci"; > + ranges; > + bus-range = <0x2 0xff>; > + > + vddc-supply = <&vreg_0p9>; > + vdd18-supply = <&vreg_1p8>; > + vdd09-supply = <&vreg_0p9>; > + vddio1-supply = <&vreg_1p8>; > + vddio2-supply = <&vreg_1p8>; > + vddio18-supply = <&vreg_1p8>; > + > + i2c-parent = <&i2c4 0x77>; > + > + resx-gpios = <&tlmm 54 GPIO_ACTIVE_LOW>; > + > + pcie@1,0 { > + reg = <0x20800 0x0 0x0 0x0 0x0>; > + #address-cells = <3>; > + #size-cells = <2>; > + > + device_type = "pci"; > + ranges; > + bus-range = <0x3 0xff>; > + }; > + > + pcie@2,0 { > + reg = <0x21000 0x0 0x0 0x0 0x0>; > + #address-cells = <3>; > + #size-cells = <2>; > + > + device_type = "pci"; > + ranges; > + bus-range = <0x4 0xff>; > + }; > + > + pcie@3,0 { > + reg = <0x21800 0x0 0x0 0x0 0x0>; > + #address-cells = <3>; > + #size-cells = <2>; > + device_type = "pci"; > + ranges; > + bus-range = <0x5 0xff>; > + > + pcie@0,0 { > + reg = <0x50000 0x0 0x0 0x0 0x0>; > + #address-cells = <3>; > + #size-cells = <2>; > + device_type = "pci"; > + ranges; Sashiko pointed out that you are using bridge specific properties in EP node: https://lore.kernel.org/linux-pci/20260730051031.20D8E1F000E9@smtp.kernel.org - Mani -- மணிவண்ணன் சதாசிவம் ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH v6 3/3] arm64: dts: qcom: eliza-evk: Add PCIe1 with TC9563 PCIe switch 2026-07-30 5:25 ` Manivannan Sadhasivam @ 2026-07-30 7:42 ` Konrad Dybcio 2026-07-30 7:52 ` Manivannan Sadhasivam 0 siblings, 1 reply; 14+ messages in thread From: Konrad Dybcio @ 2026-07-30 7:42 UTC (permalink / raw) To: Manivannan Sadhasivam, Krishna Chaitanya Chundru Cc: Bjorn Andersson, Konrad Dybcio, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Bartosz Golaszewski, linux-arm-msm, devicetree, linux-kernel, linux-pci, linux-pm, Bartosz Golaszewski, Abel Vesa On 7/30/26 7:25 AM, Manivannan Sadhasivam wrote: > On Thu, Jul 30, 2026 at 10:18:55AM +0530, Krishna Chaitanya Chundru wrote: >> The Eliza EVK board connects PCIe1 (8GT/s x2) to a Toshiba TC9563 >> PCIe switch. Enable PCIe1 and its QMP PHY nodes. >> >> TC9563 uses I2C (at address 0x77 on I2C4) for its management interface. [...] >> + pcie@3,0 { >> + reg = <0x21800 0x0 0x0 0x0 0x0>; >> + #address-cells = <3>; >> + #size-cells = <2>; >> + device_type = "pci"; >> + ranges; >> + bus-range = <0x5 0xff>; >> + >> + pcie@0,0 { >> + reg = <0x50000 0x0 0x0 0x0 0x0>; >> + #address-cells = <3>; >> + #size-cells = <2>; >> + device_type = "pci"; >> + ranges; > > Sashiko pointed out that you are using bridge specific properties in EP node: > https://lore.kernel.org/linux-pci/20260730051031.20D8E1F000E9@smtp.kernel.org Can we harden the bindings here? Konrad ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH v6 3/3] arm64: dts: qcom: eliza-evk: Add PCIe1 with TC9563 PCIe switch 2026-07-30 7:42 ` Konrad Dybcio @ 2026-07-30 7:52 ` Manivannan Sadhasivam 2026-07-30 7:59 ` Konrad Dybcio 0 siblings, 1 reply; 14+ messages in thread From: Manivannan Sadhasivam @ 2026-07-30 7:52 UTC (permalink / raw) To: Konrad Dybcio Cc: Krishna Chaitanya Chundru, Bjorn Andersson, Konrad Dybcio, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Bartosz Golaszewski, linux-arm-msm, devicetree, linux-kernel, linux-pci, linux-pm, Bartosz Golaszewski, Abel Vesa On Thu, Jul 30, 2026 at 09:42:29AM +0200, Konrad Dybcio wrote: > On 7/30/26 7:25 AM, Manivannan Sadhasivam wrote: > > On Thu, Jul 30, 2026 at 10:18:55AM +0530, Krishna Chaitanya Chundru wrote: > >> The Eliza EVK board connects PCIe1 (8GT/s x2) to a Toshiba TC9563 > >> PCIe switch. Enable PCIe1 and its QMP PHY nodes. > >> > >> TC9563 uses I2C (at address 0x77 on I2C4) for its management interface. > > [...] > > >> + pcie@3,0 { > >> + reg = <0x21800 0x0 0x0 0x0 0x0>; > >> + #address-cells = <3>; > >> + #size-cells = <2>; > >> + device_type = "pci"; > >> + ranges; > >> + bus-range = <0x5 0xff>; > >> + > >> + pcie@0,0 { > >> + reg = <0x50000 0x0 0x0 0x0 0x0>; > >> + #address-cells = <3>; > >> + #size-cells = <2>; > >> + device_type = "pci"; > >> + ranges; > > > > Sashiko pointed out that you are using bridge specific properties in EP node: > > https://lore.kernel.org/linux-pci/20260730051031.20D8E1F000E9@smtp.kernel.org > > Can we harden the bindings here? > Possible, but overkill IMO. The base dtschema for PCI bridge includes both 'pci-device' and 'pci-bus-common'. So for the Endpoints, we need to restrict them to use only 'pci-device' schema and that would require adding 'patternProperties' to cover the Endpoint nodes in each binding. Since this is not a recurring issue, I don't think we really need to go that far. - Mani -- மணிவண்ணன் சதாசிவம் ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH v6 3/3] arm64: dts: qcom: eliza-evk: Add PCIe1 with TC9563 PCIe switch 2026-07-30 7:52 ` Manivannan Sadhasivam @ 2026-07-30 7:59 ` Konrad Dybcio 0 siblings, 0 replies; 14+ messages in thread From: Konrad Dybcio @ 2026-07-30 7:59 UTC (permalink / raw) To: Manivannan Sadhasivam Cc: Krishna Chaitanya Chundru, Bjorn Andersson, Konrad Dybcio, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Bartosz Golaszewski, linux-arm-msm, devicetree, linux-kernel, linux-pci, linux-pm, Bartosz Golaszewski, Abel Vesa On 7/30/26 9:52 AM, Manivannan Sadhasivam wrote: > On Thu, Jul 30, 2026 at 09:42:29AM +0200, Konrad Dybcio wrote: >> On 7/30/26 7:25 AM, Manivannan Sadhasivam wrote: >>> On Thu, Jul 30, 2026 at 10:18:55AM +0530, Krishna Chaitanya Chundru wrote: >>>> The Eliza EVK board connects PCIe1 (8GT/s x2) to a Toshiba TC9563 >>>> PCIe switch. Enable PCIe1 and its QMP PHY nodes. >>>> >>>> TC9563 uses I2C (at address 0x77 on I2C4) for its management interface. >> >> [...] >> >>>> + pcie@3,0 { >>>> + reg = <0x21800 0x0 0x0 0x0 0x0>; >>>> + #address-cells = <3>; >>>> + #size-cells = <2>; >>>> + device_type = "pci"; >>>> + ranges; >>>> + bus-range = <0x5 0xff>; >>>> + >>>> + pcie@0,0 { >>>> + reg = <0x50000 0x0 0x0 0x0 0x0>; >>>> + #address-cells = <3>; >>>> + #size-cells = <2>; >>>> + device_type = "pci"; >>>> + ranges; >>> >>> Sashiko pointed out that you are using bridge specific properties in EP node: >>> https://lore.kernel.org/linux-pci/20260730051031.20D8E1F000E9@smtp.kernel.org >> >> Can we harden the bindings here? >> > > Possible, but overkill IMO. The base dtschema for PCI bridge includes both > 'pci-device' and 'pci-bus-common'. So for the Endpoints, we need to restrict > them to use only 'pci-device' schema and that would require adding > 'patternProperties' to cover the Endpoint nodes in each binding. > > Since this is not a recurring issue, I don't think we really need to go that > far. OK Konrad ^ permalink raw reply [flat|nested] 14+ messages in thread
end of thread, other threads:[~2026-07-30 8:00 UTC | newest] Thread overview: 14+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2026-07-30 4:48 [PATCH v6 0/3] arm64: dts: qcom: eliza-evk: Enable PCIe0 and PCIe1 with M.2 and TC9563 switch Krishna Chaitanya Chundru 2026-07-30 4:48 ` [PATCH v6 1/3] arm64: dts: qcom: eliza: Add PCIe PHY and controller nodes Krishna Chaitanya Chundru 2026-07-30 5:18 ` sashiko-bot 2026-07-30 7:54 ` Manivannan Sadhasivam 2026-07-30 4:48 ` [PATCH v6 2/3] arm64: dts: qcom: eliza-evk: Add PCIe0 with M.2 E key connector Krishna Chaitanya Chundru 2026-07-30 5:06 ` sashiko-bot 2026-07-30 5:08 ` Manivannan Sadhasivam 2026-07-30 6:23 ` Krishna Chaitanya Chundru 2026-07-30 4:48 ` [PATCH v6 3/3] arm64: dts: qcom: eliza-evk: Add PCIe1 with TC9563 PCIe switch Krishna Chaitanya Chundru 2026-07-30 5:10 ` sashiko-bot 2026-07-30 5:25 ` Manivannan Sadhasivam 2026-07-30 7:42 ` Konrad Dybcio 2026-07-30 7:52 ` Manivannan Sadhasivam 2026-07-30 7:59 ` Konrad Dybcio
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox