[PATCH v20 13/13] arm64: dts: qcom: kaanapali-mtp-camera-s5kjn5: Add DT overlay
From: Hangxiang Ma
Date: Sat Oct 10 2026 - 12:09:16 EST
Enable the S5KJN5 image sensor via CCI on Kaanapali MTP board.
The Kaanapali MTP board connect S5KJN5 with QUP I2C bus by default. This
DTBO enables S5KJN5 on CCI-0 interface connected to the CSIPHY2 in four
lane mode on a rework camera module.
Signed-off-by: Hangxiang Ma <hangxiang.ma@xxxxxxxxxxxxxxxx>
---
arch/arm64/boot/dts/qcom/Makefile | 5 ++
.../boot/dts/qcom/kaanapali-mtp-camera-s5kjn5.dtso | 78 ++++++++++++++++++++++
arch/arm64/boot/dts/qcom/kaanapali-mtp.dts | 7 ++
3 files changed, 90 insertions(+)
diff --git a/arch/arm64/boot/dts/qcom/Makefile b/arch/arm64/boot/dts/qcom/Makefile
index 88230c4e00ea..84b244d43e9e 100644
--- a/arch/arm64/boot/dts/qcom/Makefile
+++ b/arch/arm64/boot/dts/qcom/Makefile
@@ -48,6 +48,11 @@ dtb-$(CONFIG_ARCH_QCOM) += ipq9574-rdp449.dtb
dtb-$(CONFIG_ARCH_QCOM) += ipq9574-rdp453.dtb
dtb-$(CONFIG_ARCH_QCOM) += ipq9574-rdp454.dtb
dtb-$(CONFIG_ARCH_QCOM) += ipq9650-rdp488.dtb
+dtb-$(CONFIG_ARCH_QCOM) += kaanapali-mtp-camera-s5kjn5.dtbo
+
+kaanapali-mtp-camera-s5kjn5-dtbs := kaanapali-mtp.dtb kaanapali-mtp-camera-s5kjn5.dtbo
+
+dtb-$(CONFIG_ARCH_QCOM) += kaanapali-mtp-camera-s5kjn5.dtb
dtb-$(CONFIG_ARCH_QCOM) += kaanapali-mtp.dtb
dtb-$(CONFIG_ARCH_QCOM) += kaanapali-qrd.dtb
dtb-$(CONFIG_ARCH_QCOM) += lemans-evk.dtb
diff --git a/arch/arm64/boot/dts/qcom/kaanapali-mtp-camera-s5kjn5.dtso b/arch/arm64/boot/dts/qcom/kaanapali-mtp-camera-s5kjn5.dtso
new file mode 100644
index 000000000000..7b574e2ed373
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/kaanapali-mtp-camera-s5kjn5.dtso
@@ -0,0 +1,78 @@
+// SPDX-License-Identifier: BSD-3-Clause
+/*
+ * Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.
+ */
+
+/dts-v1/;
+/plugin/;
+
+#include <dt-bindings/clock/qcom,kaanapali-cambistmclkcc.h>
+#include <dt-bindings/clock/qcom,kaanapali-camcc.h>
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/media/video-interfaces.h>
+
+&camss {
+ status = "okay";
+};
+
+&camss_csiphy2_in_port {
+ camss_csiphy2_inep: endpoint {
+ data-lanes = <1 2 3 4>;
+ remote-endpoint = <&csiphy2_out_ep>;
+ };
+};
+
+&cci0 {
+ status = "okay";
+};
+
+&cci0_i2c1 {
+ camera@10 {
+ compatible = "samsung,s5kjn5";
+ reg = <0x10>;
+
+ reset-gpios = <&tlmm 3 GPIO_ACTIVE_LOW>;
+ pinctrl-names = "default";
+ pinctrl-0 = <&cam_mclk2_default &cam_reset2_default>;
+
+ clocks = <&cambistmclkcc CAM_BIST_MCLK_CC_MCLK2_CLK>;
+ assigned-clocks = <&cambistmclkcc CAM_BIST_MCLK_CC_MCLK2_CLK>;
+ assigned-clock-rates = <19200000>;
+
+ vddio-supply = <&vreg_l4n_1p8>;
+ vddd-supply = <&vreg_l1m_1p0>;
+ vdda-supply = <&vreg_l4m_2p2>;
+ vddio1p2-supply = <&vreg_l2n_1p2>;
+ afvdd-supply = <&vreg_l7m_2p8>;
+
+ port {
+ s5kjn5_out_ep: endpoint {
+ data-lanes = <1 2 3 4>;
+ link-frequencies = /bits/ 64 <1248000000>;
+ remote-endpoint = <&csiphy2_in_ep>;
+ };
+ };
+ };
+};
+
+&csiphy2 {
+ vdda-0p9-supply = <&vreg_l3d_0p8>;
+ vdda-1p2-supply = <&vreg_l1d_1p2>;
+
+ status = "okay";
+};
+
+&csiphy2_in_port {
+ csiphy2_in_ep: endpoint {
+ bus-type = <MEDIA_BUS_TYPE_CSI2_DPHY>;
+ clock-lanes = <0>;
+ data-lanes = <1 2 3 4>;
+ remote-endpoint = <&s5kjn5_out_ep>;
+ };
+};
+
+&csiphy2_out_port {
+ csiphy2_out_ep: endpoint {
+ remote-endpoint = <&camss_csiphy2_inep>;
+ };
+};
diff --git a/arch/arm64/boot/dts/qcom/kaanapali-mtp.dts b/arch/arm64/boot/dts/qcom/kaanapali-mtp.dts
index 9eb02fd09dab..c70cd39bcb75 100644
--- a/arch/arm64/boot/dts/qcom/kaanapali-mtp.dts
+++ b/arch/arm64/boot/dts/qcom/kaanapali-mtp.dts
@@ -1243,6 +1243,13 @@ &tlmm {
<119 2>, /* SoCCP */
<144 4>; /* CXM UART */
+ cam_reset2_default: cam-reset2-default-state {
+ pins = "gpio3";
+ function = "gpio";
+ drive-strength = <16>;
+ bias-disable;
+ };
+
wlan_en: wlan-en-state {
pins = "gpio16";
function = "gpio";
--
2.34.1