* [PATCH v2 0/6] Add CAMSS support for Qualcomm Glymur
@ 2026-09-07 8:13 Nihal Kumar Gupta
2026-09-07 8:13 ` [PATCH v2 1/6] dt-bindings: phy: qcom,x1e80100-csi2-phy: Add Glymur compatible Nihal Kumar Gupta
` (6 more replies)
0 siblings, 7 replies; 14+ messages in thread
From: Nihal Kumar Gupta @ 2026-09-07 8:13 UTC (permalink / raw)
To: Bryan O'Donoghue, Vinod Koul, Neil Armstrong,
Manivannan Sadhasivam, Rob Herring, Krzysztof Kozlowski,
Conor Dooley, Bryan O'Donoghue, Vladimir Zapolskiy,
Loic Poulain, Mauro Carvalho Chehab, Lee Jones,
Guru Das Srinagesh, Liam Girdwood, Mark Brown
Cc: linux-arm-msm, linux-phy, linux-media, devicetree, linux-kernel,
mfd, Suresh Vankadara, Vikram Sharma, Nihal Kumar Gupta,
Dhruvin Rajpura, Konrad Dybcio, Jishnu Prakash
This series adds Camera Subsystem (CAMSS) support for the Qualcomm
Glymur SoC.
Glymur's camera hardware topology:
- 3x CSIPHY (CSI Physical Layer)
- 3x CSID + 2x CSID Lite (CSI Decoder)
- 3x TPG (Test Pattern Generator)
- 2x VFE + 2x VFE Lite (Video Front End)
The CSIPHY block is the same hardware version as x1e80100 (3ph-1-0),
differing only in instance count (3 vs 4). TPG, CSID, VFE, CSID wrapper,
and ICC resources are fully shared with x1e80100.
Used following tools for the sanity check of these changes.
- make -j32 W=1
- checkpatch.pl
- make DT_CHECKER_FLAGS=-m W=1 DT_SCHEMA_FILES=i2c/qcom,i2c-cci.yaml dt_binding_check
- make DT_CHECKER_FLAGS=-m DT_SCHEMA_FILES=media/qcom,glymur-camss.yaml dt_binding_check W=1
Patch 1 depends on the following dt-bindings series:
[1] https://lore.kernel.org/all/20260903-x1e-csi2-phy-v17-0-26606fa9a039@linaro.org
Functional dependency:
[2] https://lore.kernel.org/all/20260906-b4-linux-next-25-03-13-dtsi-x1e80100-camss-v17-0-e2197a3e2551@linaro.org
Changes in v2:
- Glymur is now defined exclusively with the new PHY API architecture.
CSIPHYs are standalone qcom,glymur-csi2-phy nodes falling back to
qcom,x1e80100-csi2-phy. The CSIPHY supplies and register regions are
removed from the CAMSS binding; they live in the PHY nodes.
- CAMSS_GLYMUR enum is dropped. Glymur wires directly to
x1e80100_resources in the OF match table. The CSIPHY instance
difference (3 vs 4) is expressed entirely in DT - Bryan
- The incomplete compatible + resource enumeration from v1 are collapsed
into a single self-contained patch. The pointless VFE enum patch is
dropped - Krzysztof, Bryan
- Add dt-bindings, MFD and regulator support for PM8010 I2C PMIC with
qcom,pm8010-i2c compatible; qcom,pm8008 is not equivalent - Konrad
- Drop dt-bindings: i2c: qcom-cci: Document Glymur compatible; already picked
by Andi Shyti into her i2c tree (now in linux-next as 7c9474bd4a8d)
- Link to v1: https://lore.kernel.org/all/20260529-glymur_camss-v1-0-bee535396d22@oss.qualcomm.com/
Signed-off-by: Nihal Kumar Gupta <nihal.gupta@oss.qualcomm.com>
---
Dhruvin Rajpura (1):
dt-bindings: mfd: pm8008: Add PM8010 I2C support
Jishnu Prakash (2):
mfd: qcom-pm8008: Add support for PM8010 PMIC
regulator: qcom-pm8008-regulator: Add support for PM8010 PMIC
Nihal Kumar Gupta (3):
dt-bindings: phy: qcom,x1e80100-csi2-phy: Add Glymur compatible
dt-bindings: media: qcom,glymur-camss: Add Glymur CAMSS
media: qcom: camss: Add Glymur compatible
.../bindings/media/qcom,glymur-camss.yaml | 300 +++++++++++++++++++++
.../devicetree/bindings/mfd/qcom,pm8008.yaml | 14 +-
.../bindings/phy/qcom,x1e80100-csi2-phy.yaml | 6 +-
drivers/media/platform/qcom/camss/camss.c | 1 +
drivers/mfd/qcom-pm8008.c | 140 ++++++++--
drivers/regulator/qcom-pm8008-regulator.c | 184 +++++++++++--
6 files changed, 583 insertions(+), 62 deletions(-)
---
base-commit: 9a4cdc958dd79fc6c3b20b51a10debec6ca09fec
change-id: 20260529-glymur_camss-27af71b1d3d3
prerequisite-message-id: <20260903-x1e-csi2-phy-v17-0-26606fa9a039@linaro.org>
prerequisite-patch-id: 4a27a90c3a55c1f9ef46e9b941576309242f75f8
prerequisite-patch-id: ec5e059c23defd7db6c47bb17d70d01c9c6cc31b
Best regards,
--
Nihal Kumar Gupta <nihal.gupta@oss.qualcomm.com>
^ permalink raw reply [flat|nested] 14+ messages in thread
* [PATCH v2 1/6] dt-bindings: phy: qcom,x1e80100-csi2-phy: Add Glymur compatible
2026-09-07 8:13 [PATCH v2 0/6] Add CAMSS support for Qualcomm Glymur Nihal Kumar Gupta
@ 2026-09-07 8:13 ` Nihal Kumar Gupta
2026-09-07 10:56 ` Pankaj Patil
2026-09-07 8:13 ` [PATCH v2 2/6] dt-bindings: media: qcom,glymur-camss: Add Glymur CAMSS Nihal Kumar Gupta
` (5 subsequent siblings)
6 siblings, 1 reply; 14+ messages in thread
From: Nihal Kumar Gupta @ 2026-09-07 8:13 UTC (permalink / raw)
To: Bryan O'Donoghue, Vinod Koul, Neil Armstrong,
Manivannan Sadhasivam, Rob Herring, Krzysztof Kozlowski,
Conor Dooley, Bryan O'Donoghue, Vladimir Zapolskiy,
Loic Poulain, Mauro Carvalho Chehab, Lee Jones,
Guru Das Srinagesh, Liam Girdwood, Mark Brown
Cc: linux-arm-msm, linux-phy, linux-media, devicetree, linux-kernel,
mfd, Suresh Vankadara, Vikram Sharma, Nihal Kumar Gupta
Glymur integrates the same CSI2 PHY IP as X1E80100. Add
qcom,glymur-csi2-phy falling back to qcom,x1e80100-csi2-phy.
Signed-off-by: Nihal Kumar Gupta <nihal.gupta@oss.qualcomm.com>
---
Documentation/devicetree/bindings/phy/qcom,x1e80100-csi2-phy.yaml | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/Documentation/devicetree/bindings/phy/qcom,x1e80100-csi2-phy.yaml b/Documentation/devicetree/bindings/phy/qcom,x1e80100-csi2-phy.yaml
index 993271c42fa063a82cb0f6edd41e87b30bc8e109..7ac944974849b99abd982b1544ef39fc32e1f21b 100644
--- a/Documentation/devicetree/bindings/phy/qcom,x1e80100-csi2-phy.yaml
+++ b/Documentation/devicetree/bindings/phy/qcom,x1e80100-csi2-phy.yaml
@@ -16,7 +16,11 @@ description:
properties:
compatible:
- const: qcom,x1e80100-csi2-phy
+ oneOf:
+ - const: qcom,x1e80100-csi2-phy
+ - items:
+ - const: qcom,glymur-csi2-phy
+ - const: qcom,x1e80100-csi2-phy
reg:
maxItems: 1
--
2.34.1
^ permalink raw reply related [flat|nested] 14+ messages in thread
* [PATCH v2 2/6] dt-bindings: media: qcom,glymur-camss: Add Glymur CAMSS
2026-09-07 8:13 [PATCH v2 0/6] Add CAMSS support for Qualcomm Glymur Nihal Kumar Gupta
2026-09-07 8:13 ` [PATCH v2 1/6] dt-bindings: phy: qcom,x1e80100-csi2-phy: Add Glymur compatible Nihal Kumar Gupta
@ 2026-09-07 8:13 ` Nihal Kumar Gupta
2026-09-07 9:29 ` Bryan O'Donoghue
2026-09-09 10:45 ` Bryan O'Donoghue
2026-09-07 8:13 ` [PATCH v2 3/6] dt-bindings: mfd: pm8008: Add PM8010 I2C support Nihal Kumar Gupta
` (4 subsequent siblings)
6 siblings, 2 replies; 14+ messages in thread
From: Nihal Kumar Gupta @ 2026-09-07 8:13 UTC (permalink / raw)
To: Bryan O'Donoghue, Vinod Koul, Neil Armstrong,
Manivannan Sadhasivam, Rob Herring, Krzysztof Kozlowski,
Conor Dooley, Bryan O'Donoghue, Vladimir Zapolskiy,
Loic Poulain, Mauro Carvalho Chehab, Lee Jones,
Guru Das Srinagesh, Liam Girdwood, Mark Brown
Cc: linux-arm-msm, linux-phy, linux-media, devicetree, linux-kernel,
mfd, Suresh Vankadara, Vikram Sharma, Nihal Kumar Gupta
X1E80100 supports both the legacy CSIPHY resources and the new PHY API;
Glymur uses only the new PHY API via standalone phy@ child nodes,
so per-CSIPHY clocks, interrupts and supplies are absent here.
X1E80100 has four CSIPHY instances while Glymur has three
(CSIPHY0, CSIPHY1, CSIPHY4), expressed entirely in DT.
Co-developed-by: Vikram Sharma <vikram.sharma@oss.qualcomm.com>
Signed-off-by: Vikram Sharma <vikram.sharma@oss.qualcomm.com>
Signed-off-by: Nihal Kumar Gupta <nihal.gupta@oss.qualcomm.com>
---
.../bindings/media/qcom,glymur-camss.yaml | 300 +++++++++++++++++++++
1 file changed, 300 insertions(+)
diff --git a/Documentation/devicetree/bindings/media/qcom,glymur-camss.yaml b/Documentation/devicetree/bindings/media/qcom,glymur-camss.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..a0b77edc212319fad69113f3d55ca24f184d4b23
--- /dev/null
+++ b/Documentation/devicetree/bindings/media/qcom,glymur-camss.yaml
@@ -0,0 +1,300 @@
+# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/media/qcom,glymur-camss.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Qualcomm Glymur Camera Subsystem (CAMSS)
+
+maintainers:
+ - Nihal Kumar Gupta <nihal.gupta@oss.qualcomm.com>
+
+description:
+ The CAMSS IP is a CSI decoder and ISP present on Qualcomm platforms.
+
+properties:
+ compatible:
+ const: qcom,glymur-camss
+
+ reg:
+ maxItems: 13
+
+ reg-names:
+ items:
+ - const: csid_wrapper
+ - const: csid0
+ - const: csid1
+ - const: csid2
+ - const: csid_lite0
+ - const: csid_lite1
+ - const: csitpg0
+ - const: csitpg1
+ - const: csitpg2
+ - const: vfe0
+ - const: vfe1
+ - const: vfe_lite0
+ - const: vfe_lite1
+
+ clocks:
+ maxItems: 20
+
+ clock-names:
+ items:
+ - const: camnoc_nrt_axi
+ - const: camnoc_rt_axi
+ - const: core_ahb
+ - const: cpas_ahb
+ - const: cpas_fast_ahb
+ - const: cpas_vfe0
+ - const: cpas_vfe1
+ - const: cpas_vfe_lite
+ - const: csid
+ - const: csid_csiphy_rx
+ - const: gcc_axi_hf
+ - const: gcc_axi_sf
+ - const: vfe0
+ - const: vfe0_fast_ahb
+ - const: vfe1
+ - const: vfe1_fast_ahb
+ - const: vfe_lite
+ - const: vfe_lite_ahb
+ - const: vfe_lite_cphy_rx
+ - const: vfe_lite_csid
+
+ interrupts:
+ maxItems: 9
+
+ interrupt-names:
+ items:
+ - const: csid0
+ - const: csid1
+ - const: csid2
+ - const: csid_lite0
+ - const: csid_lite1
+ - const: vfe0
+ - const: vfe1
+ - const: vfe_lite0
+ - const: vfe_lite1
+
+ interconnects:
+ maxItems: 4
+
+ interconnect-names:
+ items:
+ - const: ahb
+ - const: hf_mnoc
+ - const: sf_mnoc
+ - const: sf_icp_mnoc
+
+ iommus:
+ items:
+ - description: S1 HLOS IFE and IFE_LITE non-protected
+
+ power-domains:
+ items:
+ - description: IFE0 GDSC - Image Front End, Global Distributed Switch Controller.
+ - description: IFE1 GDSC - Image Front End, Global Distributed Switch Controller.
+ - description: Titan Top GDSC - Titan ISP Block, Global Distributed Switch Controller.
+
+ power-domain-names:
+ items:
+ - const: ife0
+ - const: ife1
+ - const: top
+
+ ports:
+ $ref: /schemas/graph.yaml#/properties/ports
+
+ description:
+ CSI input ports.
+
+ patternProperties:
+ "^port@[0-3]$":
+ $ref: /schemas/graph.yaml#/$defs/port-base
+ unevaluatedProperties: false
+
+ description:
+ Input port for receiving CSI data.
+
+ properties:
+ endpoint:
+ $ref: video-interfaces.yaml#
+ unevaluatedProperties: false
+
+ properties:
+ data-lanes:
+ minItems: 1
+ maxItems: 4
+
+required:
+ - compatible
+ - reg
+ - reg-names
+ - clocks
+ - clock-names
+ - interrupts
+ - interrupt-names
+ - interconnects
+ - interconnect-names
+ - iommus
+ - power-domains
+ - power-domain-names
+ - ports
+
+additionalProperties: false
+
+examples:
+ - |
+ #include <dt-bindings/clock/qcom,glymur-gcc.h>
+ #include <dt-bindings/clock/qcom,glymur-camcc.h>
+ #include <dt-bindings/interconnect/qcom,glymur-rpmh.h>
+ #include <dt-bindings/interconnect/qcom,icc.h>
+ #include <dt-bindings/interrupt-controller/arm-gic.h>
+ #include <dt-bindings/power/qcom-rpmpd.h>
+
+ soc {
+ #address-cells = <2>;
+ #size-cells = <2>;
+
+ camss: isp@acb6000 {
+ compatible = "qcom,glymur-camss";
+
+ reg = <0x0 0x0acb6000 0x0 0x1000>,
+ <0x0 0x0acb7000 0x0 0x2000>,
+ <0x0 0x0acb9000 0x0 0x2000>,
+ <0x0 0x0acbb000 0x0 0x2000>,
+ <0x0 0x0acc6000 0x0 0x1000>,
+ <0x0 0x0acca000 0x0 0x1000>,
+ <0x0 0x0acf6000 0x0 0x1000>,
+ <0x0 0x0acf7000 0x0 0x1000>,
+ <0x0 0x0acf8000 0x0 0x1000>,
+ <0x0 0x0ac62000 0x0 0xf000>,
+ <0x0 0x0ac71000 0x0 0xf000>,
+ <0x0 0x0acc7000 0x0 0x2000>,
+ <0x0 0x0accb000 0x0 0x2000>;
+ reg-names = "csid_wrapper",
+ "csid0",
+ "csid1",
+ "csid2",
+ "csid_lite0",
+ "csid_lite1",
+ "csitpg0",
+ "csitpg1",
+ "csitpg2",
+ "vfe0",
+ "vfe1",
+ "vfe_lite0",
+ "vfe_lite1";
+
+ clocks = <&camcc CAM_CC_CAMNOC_AXI_NRT_CLK>,
+ <&camcc CAM_CC_CAMNOC_AXI_RT_CLK>,
+ <&camcc CAM_CC_CORE_AHB_CLK>,
+ <&camcc CAM_CC_CPAS_AHB_CLK>,
+ <&camcc CAM_CC_CPAS_FAST_AHB_CLK>,
+ <&camcc CAM_CC_CPAS_IFE_0_CLK>,
+ <&camcc CAM_CC_CPAS_IFE_1_CLK>,
+ <&camcc CAM_CC_CPAS_IFE_LITE_CLK>,
+ <&camcc CAM_CC_CSID_CLK>,
+ <&camcc CAM_CC_CSID_CSIPHY_RX_CLK>,
+ <&gcc GCC_CAMERA_HF_AXI_CLK>,
+ <&gcc GCC_CAMERA_SF_AXI_CLK>,
+ <&camcc CAM_CC_IFE_0_CLK>,
+ <&camcc CAM_CC_IFE_0_FAST_AHB_CLK>,
+ <&camcc CAM_CC_IFE_1_CLK>,
+ <&camcc CAM_CC_IFE_1_FAST_AHB_CLK>,
+ <&camcc CAM_CC_IFE_LITE_CLK>,
+ <&camcc CAM_CC_IFE_LITE_AHB_CLK>,
+ <&camcc CAM_CC_IFE_LITE_CPHY_RX_CLK>,
+ <&camcc CAM_CC_IFE_LITE_CSID_CLK>;
+ clock-names = "camnoc_nrt_axi",
+ "camnoc_rt_axi",
+ "core_ahb",
+ "cpas_ahb",
+ "cpas_fast_ahb",
+ "cpas_vfe0",
+ "cpas_vfe1",
+ "cpas_vfe_lite",
+ "csid",
+ "csid_csiphy_rx",
+ "gcc_axi_hf",
+ "gcc_axi_sf",
+ "vfe0",
+ "vfe0_fast_ahb",
+ "vfe1",
+ "vfe1_fast_ahb",
+ "vfe_lite",
+ "vfe_lite_ahb",
+ "vfe_lite_cphy_rx",
+ "vfe_lite_csid";
+
+ interrupts = <GIC_SPI 601 IRQ_TYPE_EDGE_RISING>,
+ <GIC_SPI 603 IRQ_TYPE_EDGE_RISING>,
+ <GIC_SPI 431 IRQ_TYPE_EDGE_RISING>,
+ <GIC_SPI 457 IRQ_TYPE_EDGE_RISING>,
+ <GIC_SPI 436 IRQ_TYPE_EDGE_RISING>,
+ <GIC_SPI 270 IRQ_TYPE_EDGE_RISING>,
+ <GIC_SPI 271 IRQ_TYPE_EDGE_RISING>,
+ <GIC_SPI 458 IRQ_TYPE_EDGE_RISING>,
+ <GIC_SPI 860 IRQ_TYPE_EDGE_RISING>;
+ interrupt-names = "csid0",
+ "csid1",
+ "csid2",
+ "csid_lite0",
+ "csid_lite1",
+ "vfe0",
+ "vfe1",
+ "vfe_lite0",
+ "vfe_lite1";
+
+ interconnects = <&hsc_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
+ &config_noc SLAVE_CAMERA_CFG QCOM_ICC_TAG_ACTIVE_ONLY>,
+ <&mmss_noc MASTER_CAMNOC_HF QCOM_ICC_TAG_ALWAYS
+ &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>,
+ <&mmss_noc MASTER_CAMNOC_SF QCOM_ICC_TAG_ALWAYS
+ &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>,
+ <&mmss_noc MASTER_CAMNOC_ICP QCOM_ICC_TAG_ALWAYS
+ &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>;
+ interconnect-names = "ahb",
+ "hf_mnoc",
+ "sf_mnoc",
+ "sf_icp_mnoc";
+
+ iommus = <&apps_smmu 0x800 0x20>;
+
+ power-domains = <&camcc CAM_CC_IFE_0_GDSC>,
+ <&camcc CAM_CC_IFE_1_GDSC>,
+ <&camcc CAM_CC_TITAN_TOP_GDSC>;
+ power-domain-names = "ife0",
+ "ife1",
+ "top";
+
+ ports {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ port@0 {
+ reg = <0>;
+ camss_csiphy0_ep: endpoint {
+ data-lanes = <1 2 3 4>;
+ remote-endpoint = <&csiphy0_out>;
+ };
+ };
+
+ port@1 {
+ reg = <1>;
+ camss_csiphy1_ep: endpoint {
+ data-lanes = <1 2 3 4>;
+ remote-endpoint = <&csiphy1_out>;
+ };
+ };
+
+ port@3 {
+ reg = <3>;
+ camss_csiphy4_ep: endpoint {
+ data-lanes = <1 2 3 4>;
+ remote-endpoint = <&csiphy4_out>;
+ };
+ };
+ };
+ };
+ };
--
2.34.1
^ permalink raw reply related [flat|nested] 14+ messages in thread
* [PATCH v2 3/6] dt-bindings: mfd: pm8008: Add PM8010 I2C support
2026-09-07 8:13 [PATCH v2 0/6] Add CAMSS support for Qualcomm Glymur Nihal Kumar Gupta
2026-09-07 8:13 ` [PATCH v2 1/6] dt-bindings: phy: qcom,x1e80100-csi2-phy: Add Glymur compatible Nihal Kumar Gupta
2026-09-07 8:13 ` [PATCH v2 2/6] dt-bindings: media: qcom,glymur-camss: Add Glymur CAMSS Nihal Kumar Gupta
@ 2026-09-07 8:13 ` Nihal Kumar Gupta
2026-09-07 8:13 ` [PATCH v2 4/6] media: qcom: camss: Add Glymur compatible Nihal Kumar Gupta
` (3 subsequent siblings)
6 siblings, 0 replies; 14+ messages in thread
From: Nihal Kumar Gupta @ 2026-09-07 8:13 UTC (permalink / raw)
To: Bryan O'Donoghue, Vinod Koul, Neil Armstrong,
Manivannan Sadhasivam, Rob Herring, Krzysztof Kozlowski,
Conor Dooley, Bryan O'Donoghue, Vladimir Zapolskiy,
Loic Poulain, Mauro Carvalho Chehab, Lee Jones,
Guru Das Srinagesh, Liam Girdwood, Mark Brown
Cc: linux-arm-msm, linux-phy, linux-media, devicetree, linux-kernel,
mfd, Suresh Vankadara, Vikram Sharma, Nihal Kumar Gupta,
Dhruvin Rajpura, Konrad Dybcio
From: Dhruvin Rajpura <drajpura@qti.qualcomm.com>
Some designs integrate the PM8008/PM8010 with the interrupt pin left
unconnected, deliberately. That compromises some functionality, but
the core function of programming the voltage regulators remains
available, so make interrupts (and the interrupt-controller
properties that depend on it) optional.
PM8010 can communicate over either SPMI or I2C, depending on whether
GPIO1 is pulled high or low. Since qcom,pm8010 is already used by the
SPMI PMIC bindings, whose properties are tailored to SPMI, add a
separate qcom,pm8010-i2c compatible for the I2C case.
Signed-off-by: Dhruvin Rajpura <drajpura@qti.qualcomm.com>
Signed-off-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>
Signed-off-by: Nihal Kumar Gupta <nihal.gupta@oss.qualcomm.com>
---
Documentation/devicetree/bindings/mfd/qcom,pm8008.yaml | 14 ++++++--------
1 file changed, 6 insertions(+), 8 deletions(-)
diff --git a/Documentation/devicetree/bindings/mfd/qcom,pm8008.yaml b/Documentation/devicetree/bindings/mfd/qcom,pm8008.yaml
index 0c6e1870db1dc571af668c37655017cefe82e139..2f439ff9805d253bdd815bc85ac206ed1be964b6 100644
--- a/Documentation/devicetree/bindings/mfd/qcom,pm8008.yaml
+++ b/Documentation/devicetree/bindings/mfd/qcom,pm8008.yaml
@@ -16,7 +16,9 @@ description: |
properties:
compatible:
- const: qcom,pm8008
+ enum:
+ - qcom,pm8008
+ - qcom,pm8010-i2c
reg:
maxItems: 1
@@ -88,18 +90,14 @@ properties:
required:
- compatible
- reg
- - interrupts
- vdd-l1-l2-supply
- vdd-l3-l4-supply
- vdd-l5-supply
- vdd-l6-supply
- vdd-l7-supply
- - gpio-controller
- - "#gpio-cells"
- - gpio-ranges
- - interrupt-controller
- - "#interrupt-cells"
- - "#thermal-sensor-cells"
+
+dependencies:
+ interrupt-controller: [ interrupts, "#interrupt-cells" ]
additionalProperties: false
--
2.34.1
^ permalink raw reply related [flat|nested] 14+ messages in thread
* [PATCH v2 4/6] media: qcom: camss: Add Glymur compatible
2026-09-07 8:13 [PATCH v2 0/6] Add CAMSS support for Qualcomm Glymur Nihal Kumar Gupta
` (2 preceding siblings ...)
2026-09-07 8:13 ` [PATCH v2 3/6] dt-bindings: mfd: pm8008: Add PM8010 I2C support Nihal Kumar Gupta
@ 2026-09-07 8:13 ` Nihal Kumar Gupta
2026-09-07 8:13 ` [PATCH v2 5/6] mfd: qcom-pm8008: Add support for PM8010 PMIC Nihal Kumar Gupta
` (2 subsequent siblings)
6 siblings, 0 replies; 14+ messages in thread
From: Nihal Kumar Gupta @ 2026-09-07 8:13 UTC (permalink / raw)
To: Bryan O'Donoghue, Vinod Koul, Neil Armstrong,
Manivannan Sadhasivam, Rob Herring, Krzysztof Kozlowski,
Conor Dooley, Bryan O'Donoghue, Vladimir Zapolskiy,
Loic Poulain, Mauro Carvalho Chehab, Lee Jones,
Guru Das Srinagesh, Liam Girdwood, Mark Brown
Cc: linux-arm-msm, linux-phy, linux-media, devicetree, linux-kernel,
mfd, Suresh Vankadara, Vikram Sharma, Nihal Kumar Gupta
Glymur's camera subsystem hardware is a functional subset of X1E80100.
TPG, CSID, VFE, CSID wrapper and ICC resources are shared; Glymur has
three CSIPHY instances versus X1E80100's four.
qcom,x1e80100-camss is not used as a fallback compatible since it is
already claimed by its own binding schema, causing a duplicate
compatible warning in the DT schema checker.
Signed-off-by: Nihal Kumar Gupta <nihal.gupta@oss.qualcomm.com>
---
drivers/media/platform/qcom/camss/camss.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/drivers/media/platform/qcom/camss/camss.c b/drivers/media/platform/qcom/camss/camss.c
index 2123f6388e3d7eafe669efd6b033e22d8eb5cf79..3585c63c45848793696fbdc3004ddc867a5f115c 100644
--- a/drivers/media/platform/qcom/camss/camss.c
+++ b/drivers/media/platform/qcom/camss/camss.c
@@ -5758,6 +5758,7 @@ static const struct of_device_id camss_dt_match[] = {
{ .compatible = "qcom,sm8550-camss", .data = &sm8550_resources },
{ .compatible = "qcom,sm8650-camss", .data = &sm8650_resources },
{ .compatible = "qcom,x1e80100-camss", .data = &x1e80100_resources },
+ { .compatible = "qcom,glymur-camss", .data = &x1e80100_resources },
{ }
};
--
2.34.1
^ permalink raw reply related [flat|nested] 14+ messages in thread
* [PATCH v2 5/6] mfd: qcom-pm8008: Add support for PM8010 PMIC
2026-09-07 8:13 [PATCH v2 0/6] Add CAMSS support for Qualcomm Glymur Nihal Kumar Gupta
` (3 preceding siblings ...)
2026-09-07 8:13 ` [PATCH v2 4/6] media: qcom: camss: Add Glymur compatible Nihal Kumar Gupta
@ 2026-09-07 8:13 ` Nihal Kumar Gupta
2026-09-07 8:13 ` [PATCH v2 6/6] regulator: qcom-pm8008-regulator: " Nihal Kumar Gupta
2026-09-08 15:43 ` [PATCH v2 0/6] Add CAMSS support for Qualcomm Glymur Mark Brown
6 siblings, 0 replies; 14+ messages in thread
From: Nihal Kumar Gupta @ 2026-09-07 8:13 UTC (permalink / raw)
To: Bryan O'Donoghue, Vinod Koul, Neil Armstrong,
Manivannan Sadhasivam, Rob Herring, Krzysztof Kozlowski,
Conor Dooley, Bryan O'Donoghue, Vladimir Zapolskiy,
Loic Poulain, Mauro Carvalho Chehab, Lee Jones,
Guru Das Srinagesh, Liam Girdwood, Mark Brown
Cc: linux-arm-msm, linux-phy, linux-media, devicetree, linux-kernel,
mfd, Suresh Vankadara, Vikram Sharma, Nihal Kumar Gupta,
Jishnu Prakash, Dhruvin Rajpura, Konrad Dybcio
From: Jishnu Prakash <jishnu.prakash@oss.qualcomm.com>
The PM8010 is a variant of the PM8008 PMIC with a slightly different
IRQ layout and MFD cells. Introduce per-variant match data (IRQ chip
descriptor and MFD cells) selected via the new "qcom,pm8010-i2c"
compatible string, and support probing without an interrupt line by
falling back to a reduced set of MFD cells when the client has no IRQ
assigned.
Signed-off-by: Jishnu Prakash <jishnu.prakash@oss.qualcomm.com>
Signed-off-by: Dhruvin Rajpura <drajpura@qti.qualcomm.com>
Signed-off-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>
Signed-off-by: Nihal Kumar Gupta <nihal.gupta@oss.qualcomm.com>
---
drivers/mfd/qcom-pm8008.c | 140 ++++++++++++++++++++++++++++++++++++----------
1 file changed, 112 insertions(+), 28 deletions(-)
diff --git a/drivers/mfd/qcom-pm8008.c b/drivers/mfd/qcom-pm8008.c
index 60204cc9a2dc60cc1fe1b64030f5d803100e7874..28532cef7908ef3409a3dfc0779aae3b1a3885b9 100644
--- a/drivers/mfd/qcom-pm8008.c
+++ b/drivers/mfd/qcom-pm8008.c
@@ -34,6 +34,7 @@ enum {
PM8008_GPIO1,
PM8008_GPIO2,
PM8008_NUM_PERIPHS,
+ PM8010_NUM_PERIPHS = 2,
};
#define PM8008_PERIPH_0_BASE 0x900
@@ -55,6 +56,10 @@ enum {
#define PM8008_IRQ_GPIO1 6
#define PM8008_IRQ_GPIO2 7
+#define PM8010_IRQ_MISC_MBG_FAULT 0
+/* 1-3 are unused */
+#define PM8010_IRQ_MISC_LDO_OCP 4
+
enum {
SET_TYPE_INDEX,
POLARITY_HI_INDEX,
@@ -88,6 +93,12 @@ static const struct regmap_irq pm8008_irqs[] = {
_IRQ(PM8008_IRQ_GPIO2, PM8008_GPIO2, BIT(0), IRQ_TYPE_SENSE_MASK),
};
+static const struct regmap_irq pm8010_irqs[] = {
+ _IRQ(PM8010_IRQ_MISC_MBG_FAULT, PM8008_MISC, BIT(0), IRQ_TYPE_EDGE_RISING),
+ _IRQ(PM8010_IRQ_MISC_LDO_OCP, PM8008_MISC, BIT(4), IRQ_TYPE_EDGE_RISING),
+ _IRQ(PM8008_IRQ_TEMP_ALARM, PM8008_TEMP_ALARM, BIT(0), IRQ_TYPE_SENSE_MASK),
+};
+
static const unsigned int pm8008_periph_base[] = {
PM8008_PERIPH_0_BASE,
PM8008_PERIPH_1_BASE,
@@ -158,6 +169,25 @@ static const struct regmap_irq_chip pm8008_irq_chip = {
.get_irq_reg = pm8008_get_irq_reg,
};
+static const struct regmap_irq_chip pm8010_irq_chip = {
+ .name = "pm8010",
+ .main_status = I2C_INTR_STATUS_BASE,
+ .num_main_regs = 1,
+ .irqs = pm8010_irqs,
+ .num_irqs = ARRAY_SIZE(pm8010_irqs),
+ .num_regs = PM8010_NUM_PERIPHS,
+ .status_base = INT_LATCHED_STS_OFFSET,
+ .mask_base = INT_EN_CLR_OFFSET,
+ .unmask_base = INT_EN_SET_OFFSET,
+ .mask_unmask_non_inverted = true,
+ .ack_base = INT_LATCHED_CLR_OFFSET,
+ .config_base = pm8008_config_regs,
+ .num_config_bases = ARRAY_SIZE(pm8008_config_regs),
+ .num_config_regs = PM8010_NUM_PERIPHS,
+ .set_type_config = pm8008_set_type_config,
+ .get_irq_reg = pm8008_get_irq_reg,
+};
+
static const struct regmap_config qcom_mfd_regmap_cfg = {
.name = "primary",
.reg_bits = 16,
@@ -179,10 +209,32 @@ static const struct resource pm8008_temp_res[] = {
static const struct mfd_cell pm8008_cells[] = {
MFD_CELL_NAME("pm8008-regulator"),
- MFD_CELL_RES("qpnp-temp-alarm", pm8008_temp_res),
+ MFD_CELL_RES("spmi-temp-alarm", pm8008_temp_res),
MFD_CELL_NAME("pm8008-gpio"),
};
+static const struct mfd_cell pm8010_cells[] = {
+ MFD_CELL_NAME("pm8010-regulator"),
+ MFD_CELL_RES("spmi-temp-alarm", pm8008_temp_res),
+ MFD_CELL_NAME("pm8008-gpio"),
+};
+
+static const struct mfd_cell pm8008_no_irq_cells[] = {
+ MFD_CELL_NAME("pm8008-regulator"),
+};
+
+static const struct mfd_cell pm8010_no_irq_cells[] = {
+ MFD_CELL_NAME("pm8010-regulator"),
+};
+
+struct pm8008_match_data {
+ const struct regmap_irq_chip *irq_chip_desc;
+ const struct mfd_cell *mfd_cells;
+ const struct mfd_cell *no_irq_mfd_cells;
+ int num_mfd_cells;
+ int no_irq_num_mfd_cells;
+};
+
static void devm_irq_domain_fwnode_release(void *data)
{
struct fwnode_handle *fwnode = data;
@@ -192,15 +244,22 @@ static void devm_irq_domain_fwnode_release(void *data)
static int pm8008_probe(struct i2c_client *client)
{
- struct regmap_irq_chip_data *irq_data;
+ struct regmap_irq_chip_data *irq_data = NULL;
+ const struct pm8008_match_data *data;
struct device *dev = &client->dev;
struct regmap *regmap, *regmap2;
struct fwnode_handle *fwnode;
+ const struct mfd_cell *cells;
struct i2c_client *dummy;
struct gpio_desc *reset;
+ int num_cells;
char *name;
int ret;
+ data = device_get_match_data(dev);
+ if (!data)
+ return dev_err_probe(dev, -ENODATA, "Missing driver match data\n");
+
dummy = devm_i2c_new_dummy_device(dev, client->adapter, client->addr + 1);
if (IS_ERR(dummy)) {
ret = PTR_ERR(dummy);
@@ -231,37 +290,62 @@ static int pm8008_probe(struct i2c_client *client)
*/
usleep_range(1000, 2000);
- name = devm_kasprintf(dev, GFP_KERNEL, "%pOF-internal", dev->of_node);
- if (!name)
- return -ENOMEM;
-
- name = strreplace(name, '/', ':');
-
- fwnode = irq_domain_alloc_named_fwnode(name);
- if (!fwnode)
- return -ENOMEM;
-
- ret = devm_add_action_or_reset(dev, devm_irq_domain_fwnode_release, fwnode);
- if (ret)
- return ret;
-
- ret = devm_regmap_add_irq_chip_fwnode(dev, fwnode, regmap, client->irq,
- IRQF_SHARED, 0, &pm8008_irq_chip, &irq_data);
- if (ret) {
- dev_err(dev, "failed to add IRQ chip: %d\n", ret);
- return ret;
+ if (client->irq) {
+ name = devm_kasprintf(dev, GFP_KERNEL, "%pOF-internal", dev->of_node);
+ if (!name)
+ return -ENOMEM;
+
+ name = strreplace(name, '/', ':');
+
+ fwnode = irq_domain_alloc_named_fwnode(name);
+ if (!fwnode)
+ return -ENOMEM;
+
+ ret = devm_add_action_or_reset(dev, devm_irq_domain_fwnode_release, fwnode);
+ if (ret)
+ return ret;
+
+ ret = devm_regmap_add_irq_chip_fwnode(dev, fwnode, regmap, client->irq,
+ IRQF_SHARED, 0, data->irq_chip_desc,
+ &irq_data);
+ if (ret) {
+ dev_err(dev, "failed to add IRQ chip: %d\n", ret);
+ return ret;
+ }
+
+ /* Needed by GPIO driver. */
+ dev_set_drvdata(dev, regmap_irq_get_domain(irq_data));
+ cells = data->mfd_cells;
+ num_cells = data->num_mfd_cells;
+ } else {
+ cells = data->no_irq_mfd_cells;
+ num_cells = data->no_irq_num_mfd_cells;
}
- /* Needed by GPIO driver. */
- dev_set_drvdata(dev, regmap_irq_get_domain(irq_data));
-
- return devm_mfd_add_devices(dev, PLATFORM_DEVID_AUTO, pm8008_cells,
- ARRAY_SIZE(pm8008_cells), NULL, 0,
- regmap_irq_get_domain(irq_data));
+ return devm_mfd_add_devices(dev, PLATFORM_DEVID_AUTO, cells,
+ num_cells, NULL, 0,
+ regmap_irq_get_domain(irq_data));
}
+static const struct pm8008_match_data pm8008_data = {
+ .irq_chip_desc = &pm8008_irq_chip,
+ .mfd_cells = pm8008_cells,
+ .no_irq_mfd_cells = pm8008_no_irq_cells,
+ .num_mfd_cells = ARRAY_SIZE(pm8008_cells),
+ .no_irq_num_mfd_cells = ARRAY_SIZE(pm8008_no_irq_cells),
+};
+
+static const struct pm8008_match_data pm8010_data = {
+ .irq_chip_desc = &pm8010_irq_chip,
+ .mfd_cells = pm8010_cells,
+ .no_irq_mfd_cells = pm8010_no_irq_cells,
+ .num_mfd_cells = ARRAY_SIZE(pm8010_cells),
+ .no_irq_num_mfd_cells = ARRAY_SIZE(pm8010_no_irq_cells),
+};
+
static const struct of_device_id pm8008_match[] = {
- { .compatible = "qcom,pm8008", },
+ { .compatible = "qcom,pm8008", .data = &pm8008_data },
+ { .compatible = "qcom,pm8010-i2c", .data = &pm8010_data },
{ },
};
MODULE_DEVICE_TABLE(of, pm8008_match);
--
2.34.1
^ permalink raw reply related [flat|nested] 14+ messages in thread
* [PATCH v2 6/6] regulator: qcom-pm8008-regulator: Add support for PM8010 PMIC
2026-09-07 8:13 [PATCH v2 0/6] Add CAMSS support for Qualcomm Glymur Nihal Kumar Gupta
` (4 preceding siblings ...)
2026-09-07 8:13 ` [PATCH v2 5/6] mfd: qcom-pm8008: Add support for PM8010 PMIC Nihal Kumar Gupta
@ 2026-09-07 8:13 ` Nihal Kumar Gupta
2026-09-08 15:43 ` [PATCH v2 0/6] Add CAMSS support for Qualcomm Glymur Mark Brown
6 siblings, 0 replies; 14+ messages in thread
From: Nihal Kumar Gupta @ 2026-09-07 8:13 UTC (permalink / raw)
To: Bryan O'Donoghue, Vinod Koul, Neil Armstrong,
Manivannan Sadhasivam, Rob Herring, Krzysztof Kozlowski,
Conor Dooley, Bryan O'Donoghue, Vladimir Zapolskiy,
Loic Poulain, Mauro Carvalho Chehab, Lee Jones,
Guru Das Srinagesh, Liam Girdwood, Mark Brown
Cc: linux-arm-msm, linux-phy, linux-media, devicetree, linux-kernel,
mfd, Suresh Vankadara, Vikram Sharma, Nihal Kumar Gupta,
Jishnu Prakash, Dhruvin Rajpura, Konrad Dybcio
From: Jishnu Prakash <jishnu.prakash@oss.qualcomm.com>
The PM8010 is a variant of the PM8008 PMIC with additional LDO
regulators, a wider voltage range on some LDOs, and LPM/NPM mode
support. Add PM8010 regulator data tables and voltage ranges, and
implement set_mode()/get_mode() for switching between LPM and NPM.
Detect PM8010 via the parent I2C client's compatible string and
select the matching regulator_ops and register data accordingly.
Signed-off-by: Jishnu Prakash <jishnu.prakash@oss.qualcomm.com>
Signed-off-by: Dhruvin Rajpura <drajpura@qti.qualcomm.com>
Signed-off-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>
Signed-off-by: Nihal Kumar Gupta <nihal.gupta@oss.qualcomm.com>
---
drivers/regulator/qcom-pm8008-regulator.c | 184 ++++++++++++++++++++++++++----
1 file changed, 159 insertions(+), 25 deletions(-)
diff --git a/drivers/regulator/qcom-pm8008-regulator.c b/drivers/regulator/qcom-pm8008-regulator.c
index 9c9b8be2e15a499fa61a05cc9650338d0bbcd122..87807d5d9e8fdbbe422202156bcbf1d0e3fbc155 100644
--- a/drivers/regulator/qcom-pm8008-regulator.c
+++ b/drivers/regulator/qcom-pm8008-regulator.c
@@ -8,6 +8,7 @@
#include <linux/array_size.h>
#include <linux/bits.h>
#include <linux/device.h>
+#include <linux/i2c.h>
#include <linux/math.h>
#include <linux/module.h>
#include <linux/of.h>
@@ -24,9 +25,19 @@
#define LDO_VSET_LB_REG 0x40
+#define LDO_MODE_CTL1_REG 0x45
+#define MODE_PRIMARY_MASK GENMASK(2, 0)
+#define LDO_MODE_NPM 7
+#define LDO_MODE_LPM 4
+
#define LDO_ENABLE_REG 0x46
#define ENABLE_BIT BIT(7)
+#define LDO_STATUS1_REG 0x08
+#define MODE_STATE_MASK GENMASK(1, 0)
+#define MODE_STATE_NPM 3
+#define MODE_STATE_LPM 2
+
struct pm8008_regulator {
struct regmap *regmap;
struct regulator_desc desc;
@@ -39,24 +50,59 @@ struct pm8008_regulator_data {
unsigned int base;
int min_dropout_uV;
const struct linear_range *voltage_range;
+ int n_linear_ranges;
+};
+
+struct pm8008_match_data {
+ const bool has_stepper_ctl_reg;
+ const struct pm8008_regulator_data *regulator_data;
+ const int num_regulators;
};
-static const struct linear_range nldo_ranges[] = {
+static const struct linear_range pm8008_nldo_ranges[] = {
REGULATOR_LINEAR_RANGE(528000, 0, 122, 8000),
};
-static const struct linear_range pldo_ranges[] = {
+static const struct linear_range pm8008_pldo_ranges[] = {
REGULATOR_LINEAR_RANGE(1504000, 0, 237, 8000),
};
+static const struct linear_range pm8010_nldo_ranges[] = {
+ REGULATOR_LINEAR_RANGE(528000, 0, 127, 8000),
+};
+
+static const struct linear_range pm8010_pldo_ranges[] = {
+ REGULATOR_LINEAR_RANGE(1504000, 0, 255, 8000),
+};
+
+static const struct linear_range pm8010_pldo_lv_ranges[] = {
+ REGULATOR_LINEAR_RANGE(1800000, 0, 2, 200000),
+ REGULATOR_LINEAR_RANGE(2608000, 3, 28, 16000),
+ REGULATOR_LINEAR_RANGE(3104000, 29, 30, 96000),
+ REGULATOR_LINEAR_RANGE(3312000, 31, 31, 0),
+};
+
+#define PM8008_REGULATOR(_name, _supply, _base, _dropout, _range) \
+ { _name, _supply, _base, _dropout, _range, ARRAY_SIZE(_range) }
+
static const struct pm8008_regulator_data pm8008_reg_data[] = {
- { "ldo1", "vdd-l1-l2", 0x4000, 225000, nldo_ranges, },
- { "ldo2", "vdd-l1-l2", 0x4100, 225000, nldo_ranges, },
- { "ldo3", "vdd-l3-l4", 0x4200, 300000, pldo_ranges, },
- { "ldo4", "vdd-l3-l4", 0x4300, 300000, pldo_ranges, },
- { "ldo5", "vdd-l5", 0x4400, 200000, pldo_ranges, },
- { "ldo6", "vdd-l6", 0x4500, 200000, pldo_ranges, },
- { "ldo7", "vdd-l7", 0x4600, 200000, pldo_ranges, },
+ PM8008_REGULATOR("ldo1", "vdd-l1-l2", 0x4000, 225000, pm8008_nldo_ranges),
+ PM8008_REGULATOR("ldo2", "vdd-l1-l2", 0x4100, 225000, pm8008_nldo_ranges),
+ PM8008_REGULATOR("ldo3", "vdd-l3-l4", 0x4200, 300000, pm8008_pldo_ranges),
+ PM8008_REGULATOR("ldo4", "vdd-l3-l4", 0x4300, 300000, pm8008_pldo_ranges),
+ PM8008_REGULATOR("ldo5", "vdd-l5", 0x4400, 200000, pm8008_pldo_ranges),
+ PM8008_REGULATOR("ldo6", "vdd-l6", 0x4500, 200000, pm8008_pldo_ranges),
+ PM8008_REGULATOR("ldo7", "vdd-l7", 0x4600, 200000, pm8008_pldo_ranges),
+};
+
+static const struct pm8008_regulator_data pm8010_reg_data[] = {
+ PM8008_REGULATOR("ldo1", "vdd-l1-l2", 0x4000, 172000, pm8010_nldo_ranges),
+ PM8008_REGULATOR("ldo2", "vdd-l1-l2", 0x4100, 172000, pm8010_nldo_ranges),
+ PM8008_REGULATOR("ldo3", "vdd-l3-l4", 0x4200, 80000, pm8010_pldo_lv_ranges),
+ PM8008_REGULATOR("ldo4", "vdd-l3-l4", 0x4300, 80000, pm8010_pldo_lv_ranges),
+ PM8008_REGULATOR("ldo5", "vdd-l5", 0x4400, 296000, pm8010_pldo_ranges),
+ PM8008_REGULATOR("ldo6", "vdd-l6", 0x4500, 80000, pm8010_pldo_lv_ranges),
+ PM8008_REGULATOR("ldo7", "vdd-l7", 0x4600, 296000, pm8010_pldo_ranges),
};
static int pm8008_regulator_set_voltage_sel(struct regulator_dev *rdev, unsigned int sel)
@@ -99,8 +145,53 @@ static int pm8008_regulator_get_voltage_sel(struct regulator_dev *rdev)
return regulator_map_voltage_linear_range(rdev, uV, INT_MAX);
}
+static int pm8010_regulator_set_mode(struct regulator_dev *rdev, unsigned int mode)
+{
+ struct pm8008_regulator *preg = rdev_get_drvdata(rdev);
+ unsigned int val;
+
+ switch (mode) {
+ case REGULATOR_MODE_NORMAL:
+ val = LDO_MODE_NPM;
+ break;
+ case REGULATOR_MODE_IDLE:
+ val = LDO_MODE_LPM;
+ break;
+ default:
+ return -EINVAL;
+ }
+
+ return regmap_update_bits(preg->regmap, preg->base + LDO_MODE_CTL1_REG,
+ MODE_PRIMARY_MASK, val);
+}
+
+static unsigned int pm8010_regulator_get_mode(struct regulator_dev *rdev)
+{
+ struct pm8008_regulator *preg = rdev_get_drvdata(rdev);
+ unsigned int val;
+ int ret;
+
+ ret = regmap_read(preg->regmap, preg->base + LDO_STATUS1_REG, &val);
+ if (ret < 0)
+ return REGULATOR_MODE_INVALID;
+
+ return (val & MODE_STATE_MASK) == MODE_STATE_NPM ?
+ REGULATOR_MODE_NORMAL : REGULATOR_MODE_IDLE;
+}
+
+static unsigned int pm8010_regulator_of_map_mode(unsigned int mode)
+{
+ switch (mode) {
+ case REGULATOR_MODE_NORMAL:
+ case REGULATOR_MODE_IDLE:
+ return mode;
+ default:
+ return REGULATOR_MODE_INVALID;
+ }
+}
+
static const struct regulator_ops pm8008_regulator_ops = {
- .list_voltage = regulator_list_voltage_linear,
+ .list_voltage = regulator_list_voltage_linear_range,
.set_voltage_sel = pm8008_regulator_set_voltage_sel,
.get_voltage_sel = pm8008_regulator_get_voltage_sel,
.enable = regulator_enable_regmap,
@@ -108,8 +199,20 @@ static const struct regulator_ops pm8008_regulator_ops = {
.is_enabled = regulator_is_enabled_regmap,
};
+static const struct regulator_ops pm8010_regulator_ops = {
+ .list_voltage = regulator_list_voltage_linear_range,
+ .set_voltage_sel = pm8008_regulator_set_voltage_sel,
+ .get_voltage_sel = pm8008_regulator_get_voltage_sel,
+ .enable = regulator_enable_regmap,
+ .disable = regulator_disable_regmap,
+ .is_enabled = regulator_is_enabled_regmap,
+ .set_mode = pm8010_regulator_set_mode,
+ .get_mode = pm8010_regulator_get_mode,
+};
+
static int pm8008_regulator_probe(struct platform_device *pdev)
{
+ const struct pm8008_match_data *match_data;
const struct pm8008_regulator_data *data;
struct regulator_config config = {};
struct device *dev = &pdev->dev;
@@ -117,15 +220,28 @@ static int pm8008_regulator_probe(struct platform_device *pdev)
struct regulator_desc *desc;
struct regulator_dev *rdev;
struct regmap *regmap;
+ const struct platform_device_id *id;
unsigned int val;
+ bool is_pm8010;
int ret, i;
+ id = platform_get_device_id(pdev);
+ if (!id)
+ return dev_err_probe(dev, -ENODEV, "Missing platform device id\n");
+
+ match_data = (const struct pm8008_match_data *)id->driver_data;
+ if (!match_data)
+ return dev_err_probe(dev, -ENODATA, "Missing driver match data\n");
+
regmap = dev_get_regmap(dev->parent, "secondary");
if (!regmap)
return -EINVAL;
- for (i = 0; i < ARRAY_SIZE(pm8008_reg_data); i++) {
- data = &pm8008_reg_data[i];
+ is_pm8010 = of_device_is_compatible(to_i2c_client(dev->parent)->dev.of_node,
+ "qcom,pm8010-i2c");
+
+ for (i = 0; i < match_data->num_regulators; i++) {
+ data = &match_data->regulator_data[i];
preg = devm_kzalloc(dev, sizeof(*preg), GFP_KERNEL);
if (!preg)
@@ -140,23 +256,28 @@ static int pm8008_regulator_probe(struct platform_device *pdev)
desc->supply_name = data->supply_name;
desc->of_match = data->name;
desc->regulators_node = of_match_ptr("regulators");
- desc->ops = &pm8008_regulator_ops;
+ desc->ops = is_pm8010 ? &pm8010_regulator_ops : &pm8008_regulator_ops;
+ if (is_pm8010)
+ desc->of_map_mode = pm8010_regulator_of_map_mode;
desc->type = REGULATOR_VOLTAGE;
desc->owner = THIS_MODULE;
desc->linear_ranges = data->voltage_range;
- desc->n_linear_ranges = 1;
- desc->uV_step = desc->linear_ranges[0].step;
- desc->min_uV = desc->linear_ranges[0].min;
- desc->n_voltages = linear_range_values_in_range(&desc->linear_ranges[0]);
-
- ret = regmap_read(regmap, preg->base + LDO_STEPPER_CTL_REG, &val);
- if (ret < 0) {
- dev_err(dev, "failed to read step rate: %d\n", ret);
- return ret;
+ desc->n_linear_ranges = data->n_linear_ranges;
+ desc->n_voltages = linear_range_values_in_range_array(desc->linear_ranges,
+ desc->n_linear_ranges);
+
+ if (match_data->has_stepper_ctl_reg) {
+ ret = regmap_read(regmap, preg->base + LDO_STEPPER_CTL_REG, &val);
+ if (ret < 0) {
+ dev_err(dev, "failed to read step rate: %d\n", ret);
+ return ret;
+ }
+ val &= STEP_RATE_MASK;
+ desc->ramp_delay = DEFAULT_VOLTAGE_STEPPER_RATE >> val;
+ } else {
+ desc->ramp_delay = DEFAULT_VOLTAGE_STEPPER_RATE;
}
- val &= STEP_RATE_MASK;
- desc->ramp_delay = DEFAULT_VOLTAGE_STEPPER_RATE >> val;
desc->min_dropout_uV = data->min_dropout_uV;
@@ -179,8 +300,21 @@ static int pm8008_regulator_probe(struct platform_device *pdev)
return 0;
}
+static const struct pm8008_match_data pm8008_data = {
+ .has_stepper_ctl_reg = true,
+ .regulator_data = pm8008_reg_data,
+ .num_regulators = ARRAY_SIZE(pm8008_reg_data),
+};
+
+static const struct pm8008_match_data pm8010_data = {
+ .has_stepper_ctl_reg = false,
+ .regulator_data = pm8010_reg_data,
+ .num_regulators = ARRAY_SIZE(pm8010_reg_data),
+};
+
static const struct platform_device_id pm8008_regulator_id_table[] = {
- { .name = "pm8008-regulator" },
+ { .name = "pm8008-regulator", .driver_data = (kernel_ulong_t)&pm8008_data },
+ { .name = "pm8010-regulator", .driver_data = (kernel_ulong_t)&pm8010_data },
{ }
};
MODULE_DEVICE_TABLE(platform, pm8008_regulator_id_table);
--
2.34.1
^ permalink raw reply related [flat|nested] 14+ messages in thread
* Re: [PATCH v2 2/6] dt-bindings: media: qcom,glymur-camss: Add Glymur CAMSS
2026-09-07 8:13 ` [PATCH v2 2/6] dt-bindings: media: qcom,glymur-camss: Add Glymur CAMSS Nihal Kumar Gupta
@ 2026-09-07 9:29 ` Bryan O'Donoghue
2026-09-07 10:42 ` Nihal Kumar Gupta
2026-09-09 10:45 ` Bryan O'Donoghue
1 sibling, 1 reply; 14+ messages in thread
From: Bryan O'Donoghue @ 2026-09-07 9:29 UTC (permalink / raw)
To: Nihal Kumar Gupta, Vinod Koul, Neil Armstrong,
Manivannan Sadhasivam, Rob Herring, Krzysztof Kozlowski,
Conor Dooley, Bryan O'Donoghue, Vladimir Zapolskiy,
Loic Poulain, Mauro Carvalho Chehab, Lee Jones,
Guru Das Srinagesh, Liam Girdwood, Mark Brown
Cc: linux-arm-msm, linux-phy, linux-media, devicetree, linux-kernel,
mfd, Suresh Vankadara, Vikram Sharma
On 07/09/2026 09:13, Nihal Kumar Gupta wrote:
> X1E80100 supports both the legacy CSIPHY resources and the new PHY API;
> Glymur uses only the new PHY API via standalone phy@ child nodes,
> so per-CSIPHY clocks, interrupts and supplies are absent here.
What's up with the commit log here ? There is no legacy CSIPHY in this.. ?
>
> X1E80100 has four CSIPHY instances while Glymur has three
> (CSIPHY0, CSIPHY1, CSIPHY4), expressed entirely in DT.
>
> Co-developed-by: Vikram Sharma <vikram.sharma@oss.qualcomm.com>
> Signed-off-by: Vikram Sharma <vikram.sharma@oss.qualcomm.com>
> Signed-off-by: Nihal Kumar Gupta <nihal.gupta@oss.qualcomm.com>
> ---
> .../bindings/media/qcom,glymur-camss.yaml | 300 +++++++++++++++++++++
> 1 file changed, 300 insertions(+)
>
> diff --git a/Documentation/devicetree/bindings/media/qcom,glymur-camss.yaml b/Documentation/devicetree/bindings/media/qcom,glymur-camss.yaml
> new file mode 100644
> index 0000000000000000000000000000000000000000..a0b77edc212319fad69113f3d55ca24f184d4b23
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/media/qcom,glymur-camss.yaml
> @@ -0,0 +1,300 @@
> +# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
> +%YAML 1.2
> +---
> +$id: http://devicetree.org/schemas/media/qcom,glymur-camss.yaml#
> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> +
> +title: Qualcomm Glymur Camera Subsystem (CAMSS)
> +
> +maintainers:
> + - Nihal Kumar Gupta <nihal.gupta@oss.qualcomm.com>
> +
> +description:
> + The CAMSS IP is a CSI decoder and ISP present on Qualcomm platforms.
> +
> +properties:
> + compatible:
> + const: qcom,glymur-camss
> +
> + reg:
> + maxItems: 13
> +
> + reg-names:
> + items:
> + - const: csid_wrapper
> + - const: csid0
> + - const: csid1
> + - const: csid2
> + - const: csid_lite0
> + - const: csid_lite1
> + - const: csitpg0
> + - const: csitpg1
> + - const: csitpg2
> + - const: vfe0
> + - const: vfe1
> + - const: vfe_lite0
> + - const: vfe_lite1
> +
> + clocks:
> + maxItems: 20
> +
> + clock-names:
> + items:
> + - const: camnoc_nrt_axi
> + - const: camnoc_rt_axi
> + - const: core_ahb
> + - const: cpas_ahb
> + - const: cpas_fast_ahb
> + - const: cpas_vfe0
> + - const: cpas_vfe1
> + - const: cpas_vfe_lite
> + - const: csid
> + - const: csid_csiphy_rx
> + - const: gcc_axi_hf
> + - const: gcc_axi_sf
> + - const: vfe0
> + - const: vfe0_fast_ahb
> + - const: vfe1
> + - const: vfe1_fast_ahb
> + - const: vfe_lite
> + - const: vfe_lite_ahb
> + - const: vfe_lite_cphy_rx
> + - const: vfe_lite_csid
> +
> + interrupts:
> + maxItems: 9
> +
> + interrupt-names:
> + items:
> + - const: csid0
> + - const: csid1
> + - const: csid2
> + - const: csid_lite0
> + - const: csid_lite1
> + - const: vfe0
> + - const: vfe1
> + - const: vfe_lite0
> + - const: vfe_lite1
> +
> + interconnects:
> + maxItems: 4
> +
> + interconnect-names:
> + items:
> + - const: ahb
> + - const: hf_mnoc
> + - const: sf_mnoc
> + - const: sf_icp_mnoc
> +
> + iommus:
> + items:
> + - description: S1 HLOS IFE and IFE_LITE non-protected
> +
> + power-domains:
> + items:
> + - description: IFE0 GDSC - Image Front End, Global Distributed Switch Controller.
> + - description: IFE1 GDSC - Image Front End, Global Distributed Switch Controller.
> + - description: Titan Top GDSC - Titan ISP Block, Global Distributed Switch Controller.
> +
> + power-domain-names:
> + items:
> + - const: ife0
> + - const: ife1
> + - const: top
> +
> + ports:
> + $ref: /schemas/graph.yaml#/properties/ports
> +
> + description:
> + CSI input ports.
> +
> + patternProperties:
> + "^port@[0-3]$":
> + $ref: /schemas/graph.yaml#/$defs/port-base
> + unevaluatedProperties: false
> +
> + description:
> + Input port for receiving CSI data.
> +
> + properties:
> + endpoint:
> + $ref: video-interfaces.yaml#
> + unevaluatedProperties: false
> +
> + properties:
> + data-lanes:
> + minItems: 1
> + maxItems: 4
> +
> +required:
> + - compatible
> + - reg
> + - reg-names
> + - clocks
> + - clock-names
> + - interrupts
> + - interrupt-names
> + - interconnects
> + - interconnect-names
> + - iommus
> + - power-domains
> + - power-domain-names
> + - ports
> +
> +additionalProperties: false
> +
> +examples:
> + - |
> + #include <dt-bindings/clock/qcom,glymur-gcc.h>
> + #include <dt-bindings/clock/qcom,glymur-camcc.h>
> + #include <dt-bindings/interconnect/qcom,glymur-rpmh.h>
> + #include <dt-bindings/interconnect/qcom,icc.h>
> + #include <dt-bindings/interrupt-controller/arm-gic.h>
> + #include <dt-bindings/power/qcom-rpmpd.h>
> +
> + soc {
> + #address-cells = <2>;
> + #size-cells = <2>;
> +
> + camss: isp@acb6000 {
> + compatible = "qcom,glymur-camss";
> +
> + reg = <0x0 0x0acb6000 0x0 0x1000>,
> + <0x0 0x0acb7000 0x0 0x2000>,
> + <0x0 0x0acb9000 0x0 0x2000>,
> + <0x0 0x0acbb000 0x0 0x2000>,
> + <0x0 0x0acc6000 0x0 0x1000>,
> + <0x0 0x0acca000 0x0 0x1000>,
> + <0x0 0x0acf6000 0x0 0x1000>,
> + <0x0 0x0acf7000 0x0 0x1000>,
> + <0x0 0x0acf8000 0x0 0x1000>,
> + <0x0 0x0ac62000 0x0 0xf000>,
> + <0x0 0x0ac71000 0x0 0xf000>,
> + <0x0 0x0acc7000 0x0 0x2000>,
> + <0x0 0x0accb000 0x0 0x2000>;
> + reg-names = "csid_wrapper",
> + "csid0",
> + "csid1",
> + "csid2",
> + "csid_lite0",
> + "csid_lite1",
> + "csitpg0",
> + "csitpg1",
> + "csitpg2",
> + "vfe0",
> + "vfe1",
> + "vfe_lite0",
> + "vfe_lite1";
> +
> + clocks = <&camcc CAM_CC_CAMNOC_AXI_NRT_CLK>,
> + <&camcc CAM_CC_CAMNOC_AXI_RT_CLK>,
> + <&camcc CAM_CC_CORE_AHB_CLK>,
> + <&camcc CAM_CC_CPAS_AHB_CLK>,
> + <&camcc CAM_CC_CPAS_FAST_AHB_CLK>,
> + <&camcc CAM_CC_CPAS_IFE_0_CLK>,
> + <&camcc CAM_CC_CPAS_IFE_1_CLK>,
> + <&camcc CAM_CC_CPAS_IFE_LITE_CLK>,
> + <&camcc CAM_CC_CSID_CLK>,
> + <&camcc CAM_CC_CSID_CSIPHY_RX_CLK>,
> + <&gcc GCC_CAMERA_HF_AXI_CLK>,
> + <&gcc GCC_CAMERA_SF_AXI_CLK>,
> + <&camcc CAM_CC_IFE_0_CLK>,
> + <&camcc CAM_CC_IFE_0_FAST_AHB_CLK>,
> + <&camcc CAM_CC_IFE_1_CLK>,
> + <&camcc CAM_CC_IFE_1_FAST_AHB_CLK>,
> + <&camcc CAM_CC_IFE_LITE_CLK>,
> + <&camcc CAM_CC_IFE_LITE_AHB_CLK>,
> + <&camcc CAM_CC_IFE_LITE_CPHY_RX_CLK>,
> + <&camcc CAM_CC_IFE_LITE_CSID_CLK>;
> + clock-names = "camnoc_nrt_axi",
> + "camnoc_rt_axi",
> + "core_ahb",
> + "cpas_ahb",
> + "cpas_fast_ahb",
> + "cpas_vfe0",
> + "cpas_vfe1",
> + "cpas_vfe_lite",
> + "csid",
> + "csid_csiphy_rx",
> + "gcc_axi_hf",
> + "gcc_axi_sf",
> + "vfe0",
> + "vfe0_fast_ahb",
> + "vfe1",
> + "vfe1_fast_ahb",
> + "vfe_lite",
> + "vfe_lite_ahb",
> + "vfe_lite_cphy_rx",
> + "vfe_lite_csid";
> +
> + interrupts = <GIC_SPI 601 IRQ_TYPE_EDGE_RISING>,
> + <GIC_SPI 603 IRQ_TYPE_EDGE_RISING>,
> + <GIC_SPI 431 IRQ_TYPE_EDGE_RISING>,
> + <GIC_SPI 457 IRQ_TYPE_EDGE_RISING>,
> + <GIC_SPI 436 IRQ_TYPE_EDGE_RISING>,
> + <GIC_SPI 270 IRQ_TYPE_EDGE_RISING>,
> + <GIC_SPI 271 IRQ_TYPE_EDGE_RISING>,
> + <GIC_SPI 458 IRQ_TYPE_EDGE_RISING>,
> + <GIC_SPI 860 IRQ_TYPE_EDGE_RISING>;
> + interrupt-names = "csid0",
> + "csid1",
> + "csid2",
> + "csid_lite0",
> + "csid_lite1",
> + "vfe0",
> + "vfe1",
> + "vfe_lite0",
> + "vfe_lite1";
> +
> + interconnects = <&hsc_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
> + &config_noc SLAVE_CAMERA_CFG QCOM_ICC_TAG_ACTIVE_ONLY>,
> + <&mmss_noc MASTER_CAMNOC_HF QCOM_ICC_TAG_ALWAYS
> + &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>,
> + <&mmss_noc MASTER_CAMNOC_SF QCOM_ICC_TAG_ALWAYS
> + &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>,
> + <&mmss_noc MASTER_CAMNOC_ICP QCOM_ICC_TAG_ALWAYS
> + &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>;
> + interconnect-names = "ahb",
> + "hf_mnoc",
> + "sf_mnoc",
> + "sf_icp_mnoc";
> +
> + iommus = <&apps_smmu 0x800 0x20>;
> +
> + power-domains = <&camcc CAM_CC_IFE_0_GDSC>,
> + <&camcc CAM_CC_IFE_1_GDSC>,
> + <&camcc CAM_CC_TITAN_TOP_GDSC>;
> + power-domain-names = "ife0",
> + "ife1",
> + "top";
> +
> + ports {
> + #address-cells = <1>;
> + #size-cells = <0>;
> +
> + port@0 {
> + reg = <0>;
> + camss_csiphy0_ep: endpoint {
> + data-lanes = <1 2 3 4>;
> + remote-endpoint = <&csiphy0_out>;
> + };
> + };
> +
> + port@1 {
> + reg = <1>;
> + camss_csiphy1_ep: endpoint {
> + data-lanes = <1 2 3 4>;
> + remote-endpoint = <&csiphy1_out>;
> + };
> + };
> +
> + port@3 {
> + reg = <3>;
> + camss_csiphy4_ep: endpoint {
> + data-lanes = <1 2 3 4>;
> + remote-endpoint = <&csiphy4_out>;
> + };
> + };
> + };
> + };
> + };
>
> --
> 2.34.1
>
>
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH v2 2/6] dt-bindings: media: qcom,glymur-camss: Add Glymur CAMSS
2026-09-07 9:29 ` Bryan O'Donoghue
@ 2026-09-07 10:42 ` Nihal Kumar Gupta
2026-09-07 11:05 ` Bryan O'Donoghue
0 siblings, 1 reply; 14+ messages in thread
From: Nihal Kumar Gupta @ 2026-09-07 10:42 UTC (permalink / raw)
To: Bryan O'Donoghue, Vinod Koul, Neil Armstrong,
Manivannan Sadhasivam, Rob Herring, Krzysztof Kozlowski,
Conor Dooley, Bryan O'Donoghue, Vladimir Zapolskiy,
Loic Poulain, Mauro Carvalho Chehab, Lee Jones,
Guru Das Srinagesh, Liam Girdwood, Mark Brown
Cc: linux-arm-msm, linux-phy, linux-media, devicetree, linux-kernel,
mfd, Suresh Vankadara, Vikram Sharma
On 07-09-2026 14:59, Bryan O'Donoghue wrote:
>> X1E80100 supports both the legacy CSIPHY resources and the new PHY API;
>> Glymur uses only the new PHY API via standalone phy@ child nodes,
>> so per-CSIPHY clocks, interrupts and supplies are absent here.
>
> What's up with the commit log here ? There is no legacy CSIPHY in this.. ?
>
Right, Glymur has none — that's the point. X1E80100 supports both;
camss_detect_legacy_phy() picks the path at runtime by checking if
the remote endpoint is a phy@ node. Glymur is new-path only, hence
a dedicated binding without those legacy properties.
The example shows port@0/1/3 → csiphy0/1/4_out; port@2 is absent
as CSIPHY2 does not exist on Glymur silicon.
>>
>> X1E80100 has four CSIPHY instances while Glymur has three
>> (CSIPHY0, CSIPHY1, CSIPHY4), expressed entirely in DT.
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH v2 1/6] dt-bindings: phy: qcom,x1e80100-csi2-phy: Add Glymur compatible
2026-09-07 8:13 ` [PATCH v2 1/6] dt-bindings: phy: qcom,x1e80100-csi2-phy: Add Glymur compatible Nihal Kumar Gupta
@ 2026-09-07 10:56 ` Pankaj Patil
2026-09-07 11:04 ` Nihal Kumar Gupta
0 siblings, 1 reply; 14+ messages in thread
From: Pankaj Patil @ 2026-09-07 10:56 UTC (permalink / raw)
To: Nihal Kumar Gupta, Bryan O'Donoghue, Vinod Koul,
Neil Armstrong, Manivannan Sadhasivam, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Bryan O'Donoghue,
Vladimir Zapolskiy, Loic Poulain, Mauro Carvalho Chehab,
Lee Jones, Guru Das Srinagesh, Liam Girdwood, Mark Brown
Cc: linux-arm-msm, linux-phy, linux-media, devicetree, linux-kernel,
mfd, Suresh Vankadara, Vikram Sharma
On 9/7/2026 1:43 PM, Nihal Kumar Gupta wrote:
> Glymur integrates the same CSI2 PHY IP as X1E80100. Add
> qcom,glymur-csi2-phy falling back to qcom,x1e80100-csi2-phy.
>
> Signed-off-by: Nihal Kumar Gupta <nihal.gupta@oss.qualcomm.com>
> ---
> Documentation/devicetree/bindings/phy/qcom,x1e80100-csi2-phy.yaml | 6 +++++-
> 1 file changed, 5 insertions(+), 1 deletion(-)
>
> diff --git a/Documentation/devicetree/bindings/phy/qcom,x1e80100-csi2-phy.yaml b/Documentation/devicetree/bindings/phy/qcom,x1e80100-csi2-phy.yaml
> index 993271c42fa063a82cb0f6edd41e87b30bc8e109..7ac944974849b99abd982b1544ef39fc32e1f21b 100644
> --- a/Documentation/devicetree/bindings/phy/qcom,x1e80100-csi2-phy.yaml
> +++ b/Documentation/devicetree/bindings/phy/qcom,x1e80100-csi2-phy.yaml
There is no such file as qcom,x1e80100-csi2-phy.yaml,
Same was pointed out earlier on another patch,
https://lore.kernel.org/all/20260722-literate-nondescript-seagull-cbdfaa@quoll/
> @@ -16,7 +16,11 @@ description:
>
> properties:
> compatible:
> - const: qcom,x1e80100-csi2-phy
> + oneOf:
> + - const: qcom,x1e80100-csi2-phy
> + - items:
> + - const: qcom,glymur-csi2-phy
> + - const: qcom,x1e80100-csi2-phy
>
> reg:
> maxItems: 1
>
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH v2 1/6] dt-bindings: phy: qcom,x1e80100-csi2-phy: Add Glymur compatible
2026-09-07 10:56 ` Pankaj Patil
@ 2026-09-07 11:04 ` Nihal Kumar Gupta
0 siblings, 0 replies; 14+ messages in thread
From: Nihal Kumar Gupta @ 2026-09-07 11:04 UTC (permalink / raw)
To: Pankaj Patil, Bryan O'Donoghue, Vinod Koul, Neil Armstrong,
Manivannan Sadhasivam, Rob Herring, Krzysztof Kozlowski,
Conor Dooley, Bryan O'Donoghue, Vladimir Zapolskiy,
Loic Poulain, Mauro Carvalho Chehab, Lee Jones,
Guru Das Srinagesh, Liam Girdwood, Mark Brown
Cc: linux-arm-msm, linux-phy, linux-media, devicetree, linux-kernel,
mfd, Suresh Vankadara, Vikram Sharma
On 07-09-2026 16:26, Pankaj Patil wrote:
>> 993271c42fa063a82cb0f6edd41e87b30bc8e109..7ac944974849b99abd982b1544ef39fc32e1f21b 100644
>> --- a/Documentation/devicetree/bindings/phy/qcom,x1e80100-csi2-phy.yaml
>> +++ b/Documentation/devicetree/bindings/phy/qcom,x1e80100-csi2-phy.yaml
> There is no such file as qcom,x1e80100-csi2-phy.yaml,
> Same was pointed out earlier on another patch,
> https://lore.kernel.org/all/20260722-literate-nondescript-seagull-cbdfaa@quoll/
This patch depends on the CSI2 PHY binding series noted in the cover
letter [1]. The prerequisite is also tracked in the b4 metadata.
The file lands with that series before this one is applied.
[1] https://lore.kernel.org/all/20260903-x1e-csi2-phy-v17-0-26606fa9a039@linaro.org
---
Regards,
Nihal Kumar Gupta
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH v2 2/6] dt-bindings: media: qcom,glymur-camss: Add Glymur CAMSS
2026-09-07 10:42 ` Nihal Kumar Gupta
@ 2026-09-07 11:05 ` Bryan O'Donoghue
0 siblings, 0 replies; 14+ messages in thread
From: Bryan O'Donoghue @ 2026-09-07 11:05 UTC (permalink / raw)
To: Nihal Kumar Gupta, Vinod Koul, Neil Armstrong,
Manivannan Sadhasivam, Rob Herring, Krzysztof Kozlowski,
Conor Dooley, Bryan O'Donoghue, Vladimir Zapolskiy,
Loic Poulain, Mauro Carvalho Chehab, Lee Jones,
Guru Das Srinagesh, Liam Girdwood, Mark Brown
Cc: linux-arm-msm, linux-phy, linux-media, devicetree, linux-kernel,
mfd, Suresh Vankadara, Vikram Sharma
On 07/09/2026 11:42, Nihal Kumar Gupta wrote:
>>> X1E80100 supports both the legacy CSIPHY resources and the new PHY API;
>>> Glymur uses only the new PHY API via standalone phy@ child nodes,
>>> so per-CSIPHY clocks, interrupts and supplies are absent here.
>> What's up with the commit log here ? There is no legacy CSIPHY in this.. ?
>>
> Right, Glymur has none — that's the point. X1E80100 supports both;
> camss_detect_legacy_phy() picks the path at runtime by checking if
> the remote endpoint is a phy@ node. Glymur is new-path only, hence
> a dedicated binding without those legacy properties.
Yes OK I see.
Do you really need to mention Hamoa here ? I'd just drop that from the
commit log.
Describe Glymur - Hamoa is irrelevant to this file.
---
bod
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH v2 0/6] Add CAMSS support for Qualcomm Glymur
2026-09-07 8:13 [PATCH v2 0/6] Add CAMSS support for Qualcomm Glymur Nihal Kumar Gupta
` (5 preceding siblings ...)
2026-09-07 8:13 ` [PATCH v2 6/6] regulator: qcom-pm8008-regulator: " Nihal Kumar Gupta
@ 2026-09-08 15:43 ` Mark Brown
6 siblings, 0 replies; 14+ messages in thread
From: Mark Brown @ 2026-09-08 15:43 UTC (permalink / raw)
To: Nihal Kumar Gupta, Konrad Dybcio, Krzysztof Kozlowski
Cc: Bryan O'Donoghue, Vinod Koul, Neil Armstrong,
Manivannan Sadhasivam, Rob Herring, Conor Dooley,
Bryan O'Donoghue, Vladimir Zapolskiy, Loic Poulain,
Mauro Carvalho Chehab, Lee Jones, Guru Das Srinagesh,
Liam Girdwood, linux-arm-msm, linux-phy, linux-media, devicetree,
linux-kernel, mfd, Suresh Vankadara, Vikram Sharma,
Dhruvin Rajpura, Jishnu Prakash
[-- Attachment #1: Type: text/plain, Size: 771 bytes --]
On Mon, Sep 07, 2026 at 01:43:36PM +0530, Nihal Kumar Gupta wrote:
> Patch 1 depends on the following dt-bindings series:
> [1] https://lore.kernel.org/all/20260903-x1e-csi2-phy-v17-0-26606fa9a039@linaro.org
Qualcomm people, could you *please* stop sending me serieses that can't
be applied. As previously indicated I am getting far too much of this,
it makes everything unmanagable. Nihal, this isn't you or this series
specifically, it's been a general problem with how Qualcomm is working
that I've raised before.
Resend this once enough of the dependencies are in that it can at least
be applied. Reworking the series so that it can be applied without
other in flight serieses would be fine, even if it needs everything to
land in order to actually fully work.
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 488 bytes --]
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH v2 2/6] dt-bindings: media: qcom,glymur-camss: Add Glymur CAMSS
2026-09-07 8:13 ` [PATCH v2 2/6] dt-bindings: media: qcom,glymur-camss: Add Glymur CAMSS Nihal Kumar Gupta
2026-09-07 9:29 ` Bryan O'Donoghue
@ 2026-09-09 10:45 ` Bryan O'Donoghue
1 sibling, 0 replies; 14+ messages in thread
From: Bryan O'Donoghue @ 2026-09-09 10:45 UTC (permalink / raw)
To: Nihal Kumar Gupta, Vinod Koul, Neil Armstrong,
Manivannan Sadhasivam, Rob Herring, Krzysztof Kozlowski,
Conor Dooley, Bryan O'Donoghue, Vladimir Zapolskiy,
Loic Poulain, Mauro Carvalho Chehab, Lee Jones,
Guru Das Srinagesh, Liam Girdwood, Mark Brown
Cc: linux-arm-msm, linux-phy, linux-media, devicetree, linux-kernel,
mfd, Suresh Vankadara, Vikram Sharma
On 07/09/2026 09:13, Nihal Kumar Gupta wrote:
> X1E80100 supports both the legacy CSIPHY resources and the new PHY API;
> Glymur uses only the new PHY API via standalone phy@ child nodes,
> so per-CSIPHY clocks, interrupts and supplies are absent here.
>
> X1E80100 has four CSIPHY instances while Glymur has three
> (CSIPHY0, CSIPHY1, CSIPHY4), expressed entirely in DT.
>
> Co-developed-by: Vikram Sharma <vikram.sharma@oss.qualcomm.com>
> Signed-off-by: Vikram Sharma <vikram.sharma@oss.qualcomm.com>
> Signed-off-by: Nihal Kumar Gupta <nihal.gupta@oss.qualcomm.com>
Reviewed-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
^ permalink raw reply [flat|nested] 14+ messages in thread
end of thread, other threads:[~2026-09-09 10:45 UTC | newest]
Thread overview: 14+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-09-07 8:13 [PATCH v2 0/6] Add CAMSS support for Qualcomm Glymur Nihal Kumar Gupta
2026-09-07 8:13 ` [PATCH v2 1/6] dt-bindings: phy: qcom,x1e80100-csi2-phy: Add Glymur compatible Nihal Kumar Gupta
2026-09-07 10:56 ` Pankaj Patil
2026-09-07 11:04 ` Nihal Kumar Gupta
2026-09-07 8:13 ` [PATCH v2 2/6] dt-bindings: media: qcom,glymur-camss: Add Glymur CAMSS Nihal Kumar Gupta
2026-09-07 9:29 ` Bryan O'Donoghue
2026-09-07 10:42 ` Nihal Kumar Gupta
2026-09-07 11:05 ` Bryan O'Donoghue
2026-09-09 10:45 ` Bryan O'Donoghue
2026-09-07 8:13 ` [PATCH v2 3/6] dt-bindings: mfd: pm8008: Add PM8010 I2C support Nihal Kumar Gupta
2026-09-07 8:13 ` [PATCH v2 4/6] media: qcom: camss: Add Glymur compatible Nihal Kumar Gupta
2026-09-07 8:13 ` [PATCH v2 5/6] mfd: qcom-pm8008: Add support for PM8010 PMIC Nihal Kumar Gupta
2026-09-07 8:13 ` [PATCH v2 6/6] regulator: qcom-pm8008-regulator: " Nihal Kumar Gupta
2026-09-08 15:43 ` [PATCH v2 0/6] Add CAMSS support for Qualcomm Glymur Mark Brown
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox