[PATCH 4/4] arm64: dts: ti: Add overlays for IMX728 RCM

Sebastian LaVine
2025-02-12T19:57:39Z

Adds overlays for the D3 IMX728 RCM.

Only a connection on port 0 is currently supported.

Signed-off-by: Sebastian LaVine <slavine@d3embedded.com>
Mentored-by: Stuart Burtner <sburtner@d3embedded.com>
---
MAINTAINERS | 1 +
arch/arm64/boot/dts/ti/Makefile | 3 +
.../dts/ti/k3-fpdlink-imx728-rcm-0-0.dtso | 108 ++++++++++++++++++
3 files changed, 112 insertions(+)
create mode 100644 arch/arm64/boot/dts/ti/k3-fpdlink-imx728-rcm-0-0.dtso

diff --git a/MAINTAINERS b/MAINTAINERS
index bf6a48da0887..f109b5dc8fa5 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -21891,6 +21891,7 @@ L: linux-media@vger.kernel.org
S: Odd Fixes
F: Documentation/devicetree/bindings/media/i2c/sony,imx728.yaml
F: arch/arm64/boot/dts/ti/k3-am62a7-sk-fusion-2.dtso
+F: arch/arm64/boot/dts/ti/k3-fpdlink-imx728-rcm-0-0.dtso
F: drivers/media/i2c/imx728.c

SONY MEMORYSTICK SUBSYSTEM
diff --git a/arch/arm64/boot/dts/ti/Makefile b/arch/arm64/boot/dts/ti/Makefile
index fcd8d11e5678..6c8bbea246f1 100644
--- a/arch/arm64/boot/dts/ti/Makefile
+++ b/arch/arm64/boot/dts/ti/Makefile
@@ -240,6 +240,9 @@ dtb- += k3-am625-beagleplay-csi2-ov5640.dtb \
k3-j784s4-evm-quad-port-eth-exp1.dtb \
k3-j784s4-evm-usxgmii-exp1-exp2.dtb

+# FPDLink Sensors
+dtb-$(CONFIG_ARCH_K3) += k3-fpdlink-imx728-rcm-0-0.dtbo
+
# Enable support for device-tree overlays
DTC_FLAGS_k3-am625-beagleplay += -@
DTC_FLAGS_k3-am625-phyboard-lyra-rdk += -@
diff --git a/arch/arm64/boot/dts/ti/k3-fpdlink-imx728-rcm-0-0.dtso b/arch/arm64/boot/dts/ti/k3-fpdlink-imx728-rcm-0-0.dtso
new file mode 100644
index 000000000000..97631184ff65
--- /dev/null
+++ b/arch/arm64/boot/dts/ti/k3-fpdlink-imx728-rcm-0-0.dtso
@@ -0,0 +1,108 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * D3 IMX728 FPD-Link 4 Camera Module
+ *
+ * Copyright (c) 2024 Define Design Deploy Corp - https://www.d3embedded.com
+ */
+
+/dts-v1/;
+/plugin/;
+
+#include <dt-bindings/gpio/gpio.h>
+
+&{/} {
+ clk_imx728_fixed_00: imx728-inck-00 {
+ compatible = "fixed-clock";
+ #clock-cells = <0>;
+ clock-frequency = <24000000>;
+ };
+};
+
+&ds90ub9702_0_ports {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ /* FPDLink RX 0 */
+ port@0 {
+ reg = <0>;
+ ub9702_fpd4_1_in: endpoint {
+ remote-endpoint = <&ub971_1_out>;
+ };
+ };
+};
+
+&ds90ub9702_0_links {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ link@0 {
+ reg = <0>;
+ i2c-alias = <0x44>;
+
+ ti,cdr-mode = <1>;
+ ti,rx-mode = <3>;
+
+ serializer: serializer {
+ compatible = "ti,ds90ub971-q1";
+ gpio-controller;
+ #gpio-cells = <2>;
+
+ #clock-cells = <0>;
+
+ ports {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ port@0 {
+ reg = <0>;
+ ub971_1_in: endpoint {
+ data-lanes = <1 2 3 4>;
+ remote-endpoint = <&sensor_1_out>;
+ };
+ };
+
+ port@1 {
+ reg = <1>;
+
+ ub971_1_out: endpoint {
+ remote-endpoint = <&ub9702_fpd4_1_in>;
+ };
+ };
+ };
+
+ i2c {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ sens_exp: gpio@70 {
+ compatible = "nxp,pca9538";
+ reg = <0x70>;
+ gpio-controller;
+ #gpio-cells = <2>;
+ gpio-line-names = "IMG_RESET", "IMG_ERR0",
+ "IMG_ERR1", "IMG_GPI0",
+ "IMG_GPI1", "NC",
+ "NC", "NC";
+ };
+
+ sensor@1a {
+ compatible = "sony,imx728";
+ reg = <0x1a>;
+
+ clocks = <&clk_imx728_fixed_00>;
+ clock-names = "inck";
+
+ reset-gpios = <&sens_exp 0 GPIO_ACTIVE_LOW>;
+ error0-gpios = <&sens_exp 1 GPIO_ACTIVE_HIGH>;
+ error1-gpios = <&sens_exp 2 GPIO_ACTIVE_HIGH>;
+
+ port {
+ sensor_1_out: endpoint {
+ remote-endpoint = <&ub971_1_in>;
+ };
+ };
+ };
+ };
+ };
+ };
+};
--
2.34.1