Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
1f7ef55
FROMLIST: dt-bindings: phy: qcom: Add CSI2 C-PHY/DPHY schema
0xB0D Feb 26, 2026
84d8594
FROMLIST: phy: qcom-mipi-csi2: Add a CSI2 MIPI DPHY driver
0xB0D Feb 26, 2026
6240f0e
FROMLIST: dt-bindings: media: qcom,x1e80100-camss: Add optional PHY h…
0xB0D Feb 26, 2026
33e6c2d
FROMLIST: dt-bindings: media: qcom,x1e80100-camss: Add support for co…
0xB0D Feb 26, 2026
47343ac
FROMLIST: dt-bindings: media: qcom,x1e80100-camss: Add iommus minItem…
0xB0D Feb 26, 2026
f82a866
FROMLIST: dt-bindings: media: qcom,x1e80100-camss: Allow CSIPHY suppl…
0xB0D Feb 26, 2026
9ee2b9b
FROMLIST: media: qcom: camss: Add legacy_phy flag to SoC definition s…
0xB0D Feb 26, 2026
f617c69
FROMLIST: media: qcom: camss: Add support for PHY API devices
0xB0D Feb 26, 2026
100784f
FROMLIST: media: qcom: camss: Drop legacy PHY descriptions from x1e
0xB0D Feb 26, 2026
05d8e13
FROMLIST: arm64: dts: qcom: x1e80100: Add CAMCC block definition
0xB0D Feb 26, 2026
c4f6faf
FROMLIST: arm64: dts: qcom: x1e80100: Add CCI definitions
0xB0D Feb 26, 2026
bf65bd5
FROMLIST: arm64: dts: qcom: x1e80100: Add MIPI CSI PHY nodes
0xB0D Feb 26, 2026
bbbb1d9
FROMLIST: arm64: dts: qcom: x1e80100: Add CAMSS block definition
0xB0D Feb 26, 2026
f4615f9
FROMLIST: arm64: dts: qcom: x1e80100-crd: Add pm8010 CRD pmic,id=m re…
0xB0D Feb 26, 2026
d892747
FROMLIST: arm64: dts: qcom: x1e80100-crd: Add ov08x40 RGB sensor on C…
0xB0D Feb 26, 2026
e008c74
FROMLIST: arm64: dts: qcom: x1e80100-t14s: Add pm8010 camera PMIC wit…
0xB0D Feb 26, 2026
3020335
FROMLIST: arm64: dts: qcom: x1e80100-t14s: Add on ov02c10 RGB sensor …
0xB0D Feb 26, 2026
7a52ef7
FROMLIST: arm64: dts: qcom: x1e80100-lenovo-yoga-slim7x: Add pm8010 c…
0xB0D Feb 26, 2026
ab477fa
FROMLIST: arm64: dts: qcom: hamoa-iot-som: Add pm8010 L4M regulator
tingguoc Feb 27, 2026
edfe235
FROMLIST: arm64: dts: qcom: hamoa-iot-evk-camera-imx577: Add DT overlay
wenmliu Feb 27, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
90 changes: 81 additions & 9 deletions Documentation/devicetree/bindings/media/qcom,x1e80100-camss.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -104,6 +104,7 @@ properties:
- const: sf_icp_mnoc

iommus:
minItems: 5
maxItems: 8

power-domains:
Expand All @@ -126,38 +127,109 @@ properties:
description:
Phandle to 1.8V regulator supply to a PHY.

phys:
maxItems: 4

phy-names:
items:
- const: csiphy0
- const: csiphy1
- const: csiphy2
- const: csiphy4

ports:
$ref: /schemas/graph.yaml#/properties/ports

description:
CSI input ports.
CSI input ports. Supports either standard single sensor mode or
Qualcomm's combo mode with one sensor in 2x1 + 1x1 data-lane, clock-lane mode.

patternProperties:
"^port@[0-3]$":
$ref: /schemas/graph.yaml#/$defs/port-base
unevaluatedProperties: false

description:
Input port for receiving CSI data from a CSIPHY.
Input port for receiving CSI data.

properties:
endpoint:
endpoint@0:
$ref: video-interfaces.yaml#
unevaluatedProperties: false

description:
Endpoint for receiving a single sensor input (or first leg of combo).

properties:
data-lanes:
minItems: 1
maxItems: 4
maxItems: 4 # Base max allows 4 (for D-PHY)

clock-lanes:
maxItems: 1

bus-type:
enum:
- 1 # MEDIA_BUS_TYPE_CSI2_CPHY
- 4 # MEDIA_BUS_TYPE_CSI2_DPHY

endpoint@1:
$ref: video-interfaces.yaml#
unevaluatedProperties: false

description:
Endpoint for receiving the second leg of a combo sensor input.

properties:
data-lanes:
maxItems: 1

clock-lanes:
maxItems: 1

bus-type:
const: 4 # Combo is D-PHY specific

required:
- data-lanes

allOf:
# Case 1: Combo Mode (endpoint@1 is present)
# If endpoint@1 exists, we restrict endpoint@0 to 2 lanes (D-PHY split)
- if:
required:
- endpoint@1
then:
properties:
endpoint@0:
properties:
data-lanes:
minItems: 2
maxItems: 2
bus-type:
const: 4
endpoint@1:
properties:
data-lanes:
minItems: 1
maxItems: 1
bus-type:
const: 4

# Case 2: Single Mode (endpoint@1 is missing)
# We explicitly allow up to 4 lanes here to cover the D-PHY use case.
- if:
not:
required:
- endpoint@1
then:
properties:
endpoint@0:
properties:
data-lanes:
minItems: 1
maxItems: 4

required:
- compatible
- reg
Expand All @@ -171,8 +243,6 @@ required:
- iommus
- power-domains
- power-domain-names
- vdd-csiphy-0p8-supply
- vdd-csiphy-1p2-supply
- ports

additionalProperties: false
Expand Down Expand Up @@ -333,11 +403,8 @@ examples:

iommus = <&apps_smmu 0x800 0x60>,
<&apps_smmu 0x860 0x60>,
<&apps_smmu 0x1800 0x60>,
<&apps_smmu 0x1860 0x60>,
<&apps_smmu 0x18e0 0x00>,
<&apps_smmu 0x1980 0x20>,
<&apps_smmu 0x1900 0x00>,
<&apps_smmu 0x19a0 0x20>;

power-domains = <&camcc CAM_CC_IFE_0_GDSC>,
Expand All @@ -351,6 +418,11 @@ examples:
vdd-csiphy-0p8-supply = <&csiphy_0p8_supply>;
vdd-csiphy-1p2-supply = <&csiphy_1p2_supply>;

phys = <&csiphy0>, <&csiphy1>,
<&csiphy2>, <&csiphy4>;
phy-names = "csiphy0", "csiphy1",
"csiphy2", "csiphy4";

ports {
#address-cells = <1>;
#size-cells = <0>;
Expand Down
114 changes: 114 additions & 0 deletions Documentation/devicetree/bindings/phy/qcom,x1e80100-csi2-phy.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,114 @@
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/phy/qcom,x1e80100-csi2-phy.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Qualcomm CSI2 PHY

maintainers:
- Bryan O'Donoghue <bod@kernel.org>

description:
Qualcomm MIPI CSI2 C-PHY/D-PHY combination PHY. Connects MIPI CSI2 sensors
to Qualcomm's Camera CSI Decoder. The PHY supports both C-PHY and D-PHY
modes.

properties:
compatible:
const: qcom,x1e80100-csi2-phy

reg:
maxItems: 1

"#phy-cells":
const: 1

clocks:
maxItems: 4

clock-names:
items:
- const: csiphy
- const: csiphy_timer
- const: camnoc_axi
- const: cpas_ahb

interrupts:
maxItems: 1

operating-points-v2:
maxItems: 1

power-domains:
maxItems: 1

vdda-0p8-supply:
description: Phandle to a 0.8V regulator supply to a PHY.

vdda-1p2-supply:
description: Phandle to 1.2V regulator supply to a PHY.

required:
- compatible
- reg
- "#phy-cells"
- clocks
- clock-names
- interrupts
- operating-points-v2
- power-domains
- vdda-0p8-supply
- vdda-1p2-supply

additionalProperties: false

examples:
- |
#include <dt-bindings/interrupt-controller/arm-gic.h>
#include <dt-bindings/clock/qcom,x1e80100-camcc.h>
#include <dt-bindings/clock/qcom,x1e80100-gcc.h>
#include <dt-bindings/phy/phy.h>

csiphy@ace4000 {
compatible = "qcom,x1e80100-csi2-phy";
reg = <0x0ace4000 0x2000>;
#phy-cells = <1>;

clocks = <&camcc CAM_CC_CSIPHY0_CLK>,
<&camcc CAM_CC_CSI0PHYTIMER_CLK>,
<&camcc CAM_CC_CAMNOC_AXI_RT_CLK>,
<&camcc CAM_CC_CPAS_AHB_CLK>;
clock-names = "csiphy",
"csiphy_timer",
"camnoc_axi",
"cpas_ahb";

operating-points-v2 = <&csiphy_opp_table>;

interrupts = <GIC_SPI 477 IRQ_TYPE_EDGE_RISING>;

power-domains = <&camcc CAM_CC_TITAN_TOP_GDSC>;

vdda-0p8-supply = <&vreg_l2c_0p8>;
vdda-1p2-supply = <&vreg_l1c_1p2>;
};

csiphy_opp_table: opp-table-csiphy {
compatible = "operating-points-v2";

opp-300000000 {
opp-hz = /bits/ 64 <300000000>;
required-opps = <&rpmhpd_opp_low_svs_d1>;
};

opp-400000000 {
opp-hz = /bits/ 64 <400000000>;
required-opps = <&rpmhpd_opp_low_svs>;
};

opp-480000000 {
opp-hz = /bits/ 64 <480000000>;
required-opps = <&rpmhpd_opp_low_svs>;
};
};
11 changes: 11 additions & 0 deletions MAINTAINERS
Original file line number Diff line number Diff line change
Expand Up @@ -21243,6 +21243,17 @@ S: Maintained
F: Documentation/devicetree/bindings/media/qcom,*-iris.yaml
F: drivers/media/platform/qcom/iris/

QUALCOMM MIPI CSI2 PHY DRIVER
M: Bryan O'Donoghue <bod@kernel.org>
L: linux-phy@lists.infradead.org
L: linux-media@vger.kernel.org
L: linux-arm-msm@vger.kernel.org
S: Supported
F: Documentation/devicetree/bindings/phy/qcom,*-csi2-phy.yaml
F: drivers/phy/qualcomm/phy-qcom-mipi-csi2*.c
F: drivers/phy/qualcomm/phy-qcom-mipi-csi2*.h
F: include/dt-bindings/phy/phy-qcom-mipi-csi2*

QUALCOMM NAND CONTROLLER DRIVER
M: Manivannan Sadhasivam <mani@kernel.org>
L: linux-mtd@lists.infradead.org
Expand Down
5 changes: 5 additions & 0 deletions arch/arm64/boot/dts/qcom/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,11 @@ dtb-$(CONFIG_ARCH_QCOM) += apq8096-db820c.dtb
dtb-$(CONFIG_ARCH_QCOM) += apq8096-ifc6640.dtb
dtb-$(CONFIG_ARCH_QCOM) += glymur-crd.dtb
dtb-$(CONFIG_ARCH_QCOM) += hamoa-iot-evk.dtb
dtb-$(CONFIG_ARCH_QCOM) += hamoa-iot-evk-camera-imx577.dtbo

hamoa-iot-evk-camera-imx577-dtbs := hamoa-iot-evk.dtb hamoa-iot-evk-camera-imx577.dtbo

dtb-$(CONFIG_ARCH_QCOM) += hamoa-iot-evk-camera-imx577.dtb
dtb-$(CONFIG_ARCH_QCOM) += ipq5018-rdp432-c2.dtb
dtb-$(CONFIG_ARCH_QCOM) += ipq5018-tplink-archer-ax55-v1.dtb
dtb-$(CONFIG_ARCH_QCOM) += ipq5332-rdp441.dtb
Expand Down
81 changes: 81 additions & 0 deletions arch/arm64/boot/dts/qcom/hamoa-iot-evk-camera-imx577.dtso
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
// SPDX-License-Identifier: BSD-3-Clause
/*
* Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.
*/

/dts-v1/;
/plugin/;

#include <dt-bindings/clock/qcom,x1e80100-camcc.h>
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/phy/phy.h>

&{/} {
vreg_cam1_1p8: regulator-cam1 {
compatible = "regulator-fixed";
regulator-name = "vreg_cam1";
startup-delay-us = <1000>;
enable-active-high;
gpio = <&tlmm 19 GPIO_ACTIVE_HIGH>;
};
};

&camss {
status = "okay";

ports {
#address-cells = <1>;
#size-cells = <0>;

port@1 {
#address-cells = <1>;
#size-cells = <0>;

csiphy1_ep: endpoint@0 {
clock-lanes = <7>;
data-lanes = <0 1 2 3>;
remote-endpoint = <&imx577_ep>;
};
};
};
};

&cci0 {
status = "okay";
};

&cci0_i2c1 {
#address-cells = <1>;
#size-cells = <0>;

camera@1a {
compatible = "sony,imx577";
reg = <0x1a>;

reset-gpios = <&tlmm 110 GPIO_ACTIVE_LOW>;
pinctrl-0 = <&cam1_default>;
pinctrl-names = "default";

clocks = <&camcc CAM_CC_MCLK1_CLK>;
assigned-clocks = <&camcc CAM_CC_MCLK1_CLK>;
assigned-clock-rates = <24000000>;

dvdd-supply = <&vreg_cam1_1p8>;
dovdd-supply = <&vreg_l4m_1p8>;

port {
imx577_ep: endpoint {
link-frequencies = /bits/ 64 <600000000>;
data-lanes = <0 1 2 3>;
remote-endpoint = <&csiphy1_ep>;
};
};
};
};

&csiphy1 {
vdda-0p8-supply = <&vreg_l2c_0p8>;
vdda-1p2-supply = <&vreg_l1c_1p2>;

status = "okay";
};
Loading