@@ -20,6 +20,38 @@ aliases {
chosen {
stdout-path = "serial0:115200n8";
};
+
+ vreg_cam0_1p8: vreg_cam0_1p8 {
+ compatible = "regulator-fixed";
+ regulator-name = "vreg_cam0_1p8";
+ startup-delay-us = <10000>;
+ enable-active-high;
+ gpio = <&pmm8654au_0_gpios 7 GPIO_ACTIVE_HIGH>;
+ };
+
+ vreg_cam1_1p8: vreg_cam1_1p8 {
+ compatible = "regulator-fixed";
+ regulator-name = "vreg_cam1_1p8";
+ startup-delay-us = <10000>;
+ enable-active-high;
+ gpio = <&pmm8654au_0_gpios 8 GPIO_ACTIVE_HIGH>;
+ };
+
+ vreg_cam2_1p8: vreg_cam2_1p8 {
+ compatible = "regulator-fixed";
+ regulator-name = "vreg_cam2_1p8";
+ startup-delay-us = <10000>;
+ enable-active-high;
+ gpio = <&pmm8654au_0_gpios 9 GPIO_ACTIVE_HIGH>;
+ };
+
+ vreg_cam3_1p8: vreg_cam3_1p8 {
+ compatible = "regulator-fixed";
+ regulator-name = "vreg_cam3_1p8";
+ startup-delay-us = <10000>;
+ enable-active-high;
+ gpio = <&pmm8654au_0_gpios 10 GPIO_ACTIVE_HIGH>;
+ };
};
&apps_rsc {
@@ -241,6 +273,84 @@ vreg_l8e: ldo8 {
};
};
+&camcc {
+ status = "okay";
+};
+
+&camss {
+ vdda-pll-supply = <&vreg_l1c>;
+ vdda-phy-supply = <&vreg_l4a>;
+
+ status = "okay";
+
+ ports {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ port@3 {
+ reg = <3>;
+ csiphy3_ep: endpoint {
+ clock-lanes = <7>;
+ data-lanes = <0 1 2 3>;
+ remote-endpoint = <&imx577_ep3>;
+ };
+ };
+ };
+};
+
+&cci0 {
+ status = "disabled";
+ pinctrl-0 = <&cci0_0_default>;
+ pinctrl-1 = <&cci0_0_sleep>;
+};
+
+&cci1 {
+ status = "disabled";
+ pinctrl-0 = <&cci1_0_default>;
+ pinctrl-1 = <&cci1_0_sleep>;
+};
+
+&cci2 {
+ status = "disabled";
+ pinctrl-0 = <&cci2_0_default>;
+ pinctrl-1 = <&cci2_0_sleep>;
+};
+
+&cci3 {
+ status = "okay";
+ pinctrl-0 = <&cci3_0_default>;
+ pinctrl-1 = <&cci3_0_sleep>;
+};
+
+&cci3_i2c0 {
+ camera@1a {
+ compatible = "sony,imx577";
+ reg = <0x1a>;
+
+ reset-gpios = <&tlmm 135 GPIO_ACTIVE_LOW>;
+ pinctrl-names = "default", "suspend";
+ pinctrl-0 = <&cam3_default>;
+ pinctrl-1 = <&cam3_suspend>;
+
+ clocks = <&camcc CAM_CC_MCLK3_CLK>;
+ assigned-clocks = <&camcc CAM_CC_MCLK3_CLK>;
+ assigned-clock-rates = <24000000>;
+
+ dovdd-supply = <&vreg_s4a>;
+ avdd-supply = <&vreg_cam3_1p8>;
+ /* dvdd-supply = <&vdc_5v>; */
+
+ port {
+ imx577_ep3: endpoint {
+ clock-lanes = <7>;
+ link-frequencies = /bits/ 64 <600000000>;
+ data-lanes = <0 1 2 3>;
+ remote-endpoint = <&csiphy3_ep>;
+ };
+ };
+ };
+};
+
&qupv3_id_1 {
status = "okay";
};
@@ -4756,6 +4756,138 @@ tlmm: pinctrl@f000000 {
gpio-ranges = <&tlmm 0 0 149>;
wakeup-parent = <&pdc>;
+ cam0_default: cam0-default {
+ mclk {
+ pins = "gpio72";
+ function = "cam_mclk";
+ drive-strength = <2>;
+ bias-disable;
+ };
+
+ rst {
+ pins = "gpio132";
+ function = "gpio";
+ drive-strength = <2>;
+ bias-disable;
+ };
+ };
+
+ cam0_suspend: cam0-suspend {
+ mclk {
+ pins = "gpio72";
+ function = "cam_mclk";
+ drive-strength = <2>;
+ bias-disable;
+ };
+
+ rst {
+ pins = "gpio132";
+ function = "gpio";
+ drive-strength = <2>;
+ bias-pull-down;
+ output-low;
+ };
+ };
+
+ cam1_default: cam1-default {
+ mclk {
+ pins = "gpio73";
+ function = "cam_mclk";
+ drive-strength = <2>;
+ bias-disable;
+ };
+
+ rst {
+ pins = "gpio133";
+ function = "gpio";
+ drive-strength = <2>;
+ bias-disable;
+ };
+ };
+
+ cam1_suspend: cam1-suspend {
+ mclk {
+ pins = "gpio73";
+ function = "cam_mclk";
+ drive-strength = <2>;
+ bias-disable;
+ };
+
+ rst {
+ pins = "gpio133";
+ function = "gpio";
+ drive-strength = <2>;
+ bias-pull-down;
+ output-low;
+ };
+ };
+
+ cam2_default: cam2-default {
+ mclk {
+ pins = "gpio74";
+ function = "cam_mclk";
+ drive-strength = <2>;
+ bias-disable;
+ };
+
+ rst {
+ pins = "gpio134";
+ function = "gpio";
+ drive-strength = <2>;
+ bias-disable;
+ };
+ };
+
+ cam2_suspend: cam2-suspend {
+ mclk {
+ pins = "gpio74";
+ function = "cam_mclk";
+ drive-strength = <2>;
+ bias-disable;
+ };
+
+ rst {
+ pins = "gpio134";
+ function = "gpio";
+ drive-strength = <2>;
+ bias-pull-down;
+ output-low;
+ };
+ };
+
+ cam3_default: cam3-default {
+ mclk {
+ pins = "gpio75";
+ function = "cam_mclk";
+ drive-strength = <2>;
+ bias-disable;
+ };
+
+ rst {
+ pins = "gpio135";
+ function = "gpio";
+ drive-strength = <2>;
+ bias-disable;
+ };
+ };
+
+ cam3_suspend: cam3-suspend {
+ mclk {
+ pins = "gpio75";
+ function = "cam_mclk";
+ drive-strength = <2>;
+ bias-disable;
+ };
+
+ rst {
+ pins = "gpio135";
+ function = "gpio";
+ drive-strength = <2>;
+ bias-pull-down;
+ output-low;
+ };
+ };
+
cci0_0_default: cci0-0-default-state {
pins = "gpio60", "gpio61";
function = "cci_i2c";
The qcs9075-iq-9075-evk board has 4 camera CSI interfaces. Enable the third interface with an imx577 sensor for qcs9075-iq-9075-evk. An example media-ctl pipeline for the imx577 is: media-ctl --reset media-ctl -V '"imx577 '0-001a'":0[fmt:SRGGB10/4056x3040 field:none]' media-ctl -V '"msm_csiphy3":0[fmt:SRGGB10/4056x3040]' media-ctl -V '"msm_csid0":0[fmt:SRGGB10/4056x3040]' media-ctl -V '"msm_vfe0_rdi0":0[fmt:SRGGB10/4056x3040]' media-ctl -l '"msm_csiphy3":1->"msm_csid0":0[1]' media-ctl -l '"msm_csid0":1->"msm_vfe0_rdi0":0[1]' yavta -B capture-mplane -c -I -n 5 -f SRGGB10P -s 4056x3040 -F /dev/video0 Signed-off-by: Wenmeng Liu <quic_wenmliu@quicinc.com> --- arch/arm64/boot/dts/qcom/qcs9075-iq-9075-evk.dts | 110 +++++++++++++++++++ arch/arm64/boot/dts/qcom/sa8775p.dtsi | 132 +++++++++++++++++++++++ 2 files changed, 242 insertions(+)