xref: /freebsd/sys/contrib/device-tree/src/arm64/ti/k3-j721e-sk-csi2-dual-imx219.dtso (revision 01950c46b8155250f64374fb72fc11faa44bf099)
1*01950c46SEmmanuel Vadot// SPDX-License-Identifier: GPL-2.0-only OR MIT
2*01950c46SEmmanuel Vadot/**
3*01950c46SEmmanuel Vadot * DT Overlay for dual RPi Camera V2.1 (Sony IMX219) interfaced with CSI2
4*01950c46SEmmanuel Vadot * on J721E SK, AM68 SK or AM69-SK board.
5*01950c46SEmmanuel Vadot * https://datasheets.raspberrypi.org/camera/camera-v2-schematic.pdf
6*01950c46SEmmanuel Vadot *
7*01950c46SEmmanuel Vadot * Copyright (C) 2024 Texas Instruments Incorporated - https://www.ti.com/
8*01950c46SEmmanuel Vadot */
9*01950c46SEmmanuel Vadot
10*01950c46SEmmanuel Vadot/dts-v1/;
11*01950c46SEmmanuel Vadot/plugin/;
12*01950c46SEmmanuel Vadot
13*01950c46SEmmanuel Vadot#include <dt-bindings/gpio/gpio.h>
14*01950c46SEmmanuel Vadot#include "k3-pinctrl.h"
15*01950c46SEmmanuel Vadot
16*01950c46SEmmanuel Vadot&{/} {
17*01950c46SEmmanuel Vadot	clk_imx219_fixed: imx219-xclk {
18*01950c46SEmmanuel Vadot		compatible = "fixed-clock";
19*01950c46SEmmanuel Vadot		#clock-cells = <0>;
20*01950c46SEmmanuel Vadot		clock-frequency = <24000000>;
21*01950c46SEmmanuel Vadot	};
22*01950c46SEmmanuel Vadot};
23*01950c46SEmmanuel Vadot
24*01950c46SEmmanuel Vadot&csi_mux {
25*01950c46SEmmanuel Vadot	idle-state = <1>;
26*01950c46SEmmanuel Vadot};
27*01950c46SEmmanuel Vadot
28*01950c46SEmmanuel Vadot/* CAM0 I2C */
29*01950c46SEmmanuel Vadot&cam0_i2c {
30*01950c46SEmmanuel Vadot	#address-cells = <1>;
31*01950c46SEmmanuel Vadot	#size-cells = <0>;
32*01950c46SEmmanuel Vadot	imx219_0: imx219-0@10 {
33*01950c46SEmmanuel Vadot		compatible = "sony,imx219";
34*01950c46SEmmanuel Vadot		reg = <0x10>;
35*01950c46SEmmanuel Vadot
36*01950c46SEmmanuel Vadot		clocks = <&clk_imx219_fixed>;
37*01950c46SEmmanuel Vadot		clock-names = "xclk";
38*01950c46SEmmanuel Vadot
39*01950c46SEmmanuel Vadot		port {
40*01950c46SEmmanuel Vadot			csi2_cam0: endpoint {
41*01950c46SEmmanuel Vadot				remote-endpoint = <&csi2rx0_in_sensor>;
42*01950c46SEmmanuel Vadot				link-frequencies = /bits/ 64 <456000000>;
43*01950c46SEmmanuel Vadot				clock-lanes = <0>;
44*01950c46SEmmanuel Vadot				data-lanes = <1 2>;
45*01950c46SEmmanuel Vadot			};
46*01950c46SEmmanuel Vadot		};
47*01950c46SEmmanuel Vadot	};
48*01950c46SEmmanuel Vadot};
49*01950c46SEmmanuel Vadot
50*01950c46SEmmanuel Vadot/* CAM1 I2C */
51*01950c46SEmmanuel Vadot&cam1_i2c {
52*01950c46SEmmanuel Vadot	#address-cells = <1>;
53*01950c46SEmmanuel Vadot	#size-cells = <0>;
54*01950c46SEmmanuel Vadot	imx219_1: imx219-1@10 {
55*01950c46SEmmanuel Vadot		compatible = "sony,imx219";
56*01950c46SEmmanuel Vadot		reg = <0x10>;
57*01950c46SEmmanuel Vadot
58*01950c46SEmmanuel Vadot		clocks = <&clk_imx219_fixed>;
59*01950c46SEmmanuel Vadot		clock-names = "xclk";
60*01950c46SEmmanuel Vadot
61*01950c46SEmmanuel Vadot		port {
62*01950c46SEmmanuel Vadot			csi2_cam1: endpoint {
63*01950c46SEmmanuel Vadot				remote-endpoint = <&csi2rx1_in_sensor>;
64*01950c46SEmmanuel Vadot				link-frequencies = /bits/ 64 <456000000>;
65*01950c46SEmmanuel Vadot				clock-lanes = <0>;
66*01950c46SEmmanuel Vadot				data-lanes = <1 2>;
67*01950c46SEmmanuel Vadot			};
68*01950c46SEmmanuel Vadot		};
69*01950c46SEmmanuel Vadot	};
70*01950c46SEmmanuel Vadot};
71*01950c46SEmmanuel Vadot
72*01950c46SEmmanuel Vadot
73*01950c46SEmmanuel Vadot&cdns_csi2rx0 {
74*01950c46SEmmanuel Vadot	ports {
75*01950c46SEmmanuel Vadot		#address-cells = <1>;
76*01950c46SEmmanuel Vadot		#size-cells = <0>;
77*01950c46SEmmanuel Vadot
78*01950c46SEmmanuel Vadot		csi0_port0: port@0 {
79*01950c46SEmmanuel Vadot			reg = <0>;
80*01950c46SEmmanuel Vadot			status = "okay";
81*01950c46SEmmanuel Vadot
82*01950c46SEmmanuel Vadot			csi2rx0_in_sensor: endpoint {
83*01950c46SEmmanuel Vadot				remote-endpoint = <&csi2_cam0>;
84*01950c46SEmmanuel Vadot				bus-type = <4>; /* CSI2 DPHY. */
85*01950c46SEmmanuel Vadot				clock-lanes = <0>;
86*01950c46SEmmanuel Vadot				data-lanes = <1 2>;
87*01950c46SEmmanuel Vadot			};
88*01950c46SEmmanuel Vadot		};
89*01950c46SEmmanuel Vadot
90*01950c46SEmmanuel Vadot		csi0_port1: port@1 {
91*01950c46SEmmanuel Vadot			reg = <1>;
92*01950c46SEmmanuel Vadot			status = "disabled";
93*01950c46SEmmanuel Vadot		};
94*01950c46SEmmanuel Vadot
95*01950c46SEmmanuel Vadot		csi0_port2: port@2 {
96*01950c46SEmmanuel Vadot			reg = <2>;
97*01950c46SEmmanuel Vadot			status = "disabled";
98*01950c46SEmmanuel Vadot		};
99*01950c46SEmmanuel Vadot
100*01950c46SEmmanuel Vadot		csi0_port3: port@3 {
101*01950c46SEmmanuel Vadot			reg = <3>;
102*01950c46SEmmanuel Vadot			status = "disabled";
103*01950c46SEmmanuel Vadot		};
104*01950c46SEmmanuel Vadot
105*01950c46SEmmanuel Vadot		csi0_port4: port@4 {
106*01950c46SEmmanuel Vadot			reg = <4>;
107*01950c46SEmmanuel Vadot			status = "disabled";
108*01950c46SEmmanuel Vadot		};
109*01950c46SEmmanuel Vadot	};
110*01950c46SEmmanuel Vadot};
111*01950c46SEmmanuel Vadot
112*01950c46SEmmanuel Vadot&dphy0 {
113*01950c46SEmmanuel Vadot	status = "okay";
114*01950c46SEmmanuel Vadot};
115*01950c46SEmmanuel Vadot
116*01950c46SEmmanuel Vadot&ti_csi2rx0 {
117*01950c46SEmmanuel Vadot	status = "okay";
118*01950c46SEmmanuel Vadot};
119*01950c46SEmmanuel Vadot
120*01950c46SEmmanuel Vadot&cdns_csi2rx1 {
121*01950c46SEmmanuel Vadot	ports {
122*01950c46SEmmanuel Vadot		#address-cells = <1>;
123*01950c46SEmmanuel Vadot		#size-cells = <0>;
124*01950c46SEmmanuel Vadot
125*01950c46SEmmanuel Vadot		csi1_port0: port@0 {
126*01950c46SEmmanuel Vadot			reg = <0>;
127*01950c46SEmmanuel Vadot			status = "okay";
128*01950c46SEmmanuel Vadot
129*01950c46SEmmanuel Vadot			csi2rx1_in_sensor: endpoint {
130*01950c46SEmmanuel Vadot				remote-endpoint = <&csi2_cam1>;
131*01950c46SEmmanuel Vadot				bus-type = <4>; /* CSI2 DPHY. */
132*01950c46SEmmanuel Vadot				clock-lanes = <0>;
133*01950c46SEmmanuel Vadot				data-lanes = <1 2>;
134*01950c46SEmmanuel Vadot			};
135*01950c46SEmmanuel Vadot		};
136*01950c46SEmmanuel Vadot
137*01950c46SEmmanuel Vadot		csi1_port1: port@1 {
138*01950c46SEmmanuel Vadot			reg = <1>;
139*01950c46SEmmanuel Vadot			status = "disabled";
140*01950c46SEmmanuel Vadot		};
141*01950c46SEmmanuel Vadot
142*01950c46SEmmanuel Vadot		csi1_port2: port@2 {
143*01950c46SEmmanuel Vadot			reg = <2>;
144*01950c46SEmmanuel Vadot			status = "disabled";
145*01950c46SEmmanuel Vadot		};
146*01950c46SEmmanuel Vadot
147*01950c46SEmmanuel Vadot		csi1_port3: port@3 {
148*01950c46SEmmanuel Vadot			reg = <3>;
149*01950c46SEmmanuel Vadot			status = "disabled";
150*01950c46SEmmanuel Vadot		};
151*01950c46SEmmanuel Vadot
152*01950c46SEmmanuel Vadot		csi1_port4: port@4 {
153*01950c46SEmmanuel Vadot			reg = <4>;
154*01950c46SEmmanuel Vadot			status = "disabled";
155*01950c46SEmmanuel Vadot		};
156*01950c46SEmmanuel Vadot	};
157*01950c46SEmmanuel Vadot};
158*01950c46SEmmanuel Vadot
159*01950c46SEmmanuel Vadot&dphy1 {
160*01950c46SEmmanuel Vadot	status = "okay";
161*01950c46SEmmanuel Vadot};
162*01950c46SEmmanuel Vadot
163*01950c46SEmmanuel Vadot&ti_csi2rx1 {
164*01950c46SEmmanuel Vadot	status = "okay";
165*01950c46SEmmanuel Vadot};
166