| // SPDX-License-Identifier: GPL-2.0+ |
| /* |
| * Copyright (C) 2017 Ideas on Board <kieran.bingham@ideasonboard.com> |
| * Copyright (C) 2021 Jacopo Mondi <jacopo+renesas@jmondi.org> |
| * |
| * Device Tree Source (overlay) that describes GMSL camera connected to |
| * Fakra connectors for the Eagle V3M and Condor V3H (and compatible) boards. |
| * |
| * The following cameras are currently supported: RDACM20 and RDACM21. |
| * |
| * The board .dts file that include this has to select which cameras are in use |
| * by specifying the camera model with: |
| * |
| * #define GMSL_CAMERA_RDACM20 |
| * or |
| * #define GMSL_CAMERA_RDACM21 |
| * |
| * And which cameras are connected to the board by defining: |
| * for GMSL channel 0: |
| * #define GMSL_CAMERA_0 |
| * #define GMSL_CAMERA_1 |
| * #define GMSL_CAMERA_2 |
| * #define GMSL_CAMERA_3 |
| * |
| * for GMSL channel 1: |
| * #define GMSL_CAMERA_4 |
| * #define GMSL_CAMERA_5 |
| * #define GMSL_CAMERA_6 |
| * #define GMSL_CAMERA_7 |
| */ |
| |
| #include <dt-bindings/gpio/gpio.h> |
| |
| /* Validate the board file settings. */ |
| #if !defined(GMSL_CAMERA_RDACM20) && !defined(GMSL_CAMERA_RDACM21) |
| #error "Camera model should be defined by the board file" |
| #endif |
| |
| #if defined(GMSL_CAMERA_RDACM20) && defined(GMSL_CAMERA_RDACM21) |
| #error "A single camera model should be selected" |
| #endif |
| |
| #if !defined(GMSL_CAMERA_0) && !defined(GMSL_CAMERA_1) && \ |
| !defined(GMSL_CAMERA_2) && !defined(GMSL_CAMERA_3) && \ |
| !defined(GMSL_CAMERA_4) && !defined(GMSL_CAMERA_5) && \ |
| !defined(GMSL_CAMERA_6) && !defined(GMSL_CAMERA_7) |
| #error "At least one camera should be selected" |
| #endif |
| |
| /* Deduce from the enabled cameras which GMSL channels are active. */ |
| #if defined(GMSL_CAMERA_0) || defined(GMSL_CAMERA_1) || \ |
| defined(GMSL_CAMERA_2) || defined(GMSL_CAMERA_3) |
| #define GMSL_0 |
| #endif |
| |
| #if defined(GMSL_CAMERA_4) || defined(GMSL_CAMERA_5) || \ |
| defined(GMSL_CAMERA_6) || defined(GMSL_CAMERA_7) |
| #define GMSL_1 |
| #endif |
| |
| /* Deduce the camera model compatible string. */ |
| #if defined(GMSL_CAMERA_RDACM20) |
| #define GMSL_CAMERA_MODEL "imi,rdacm20" |
| #elif defined(GMSL_CAMERA_RDACM21) |
| #define GMSL_CAMERA_MODEL "imi,rdacm21" |
| #endif |
| |
| #ifdef GMSL_0 |
| &vin0 { |
| status = "okay"; |
| }; |
| |
| &vin1 { |
| status = "okay"; |
| }; |
| |
| &vin2 { |
| status = "okay"; |
| }; |
| |
| &vin3 { |
| status = "okay"; |
| }; |
| |
| &gmsl0 { |
| status = "okay"; |
| |
| #if defined(GMSL_CAMERA_RDACM21) |
| maxim,reverse-channel-microvolt = <100000>; |
| #endif |
| |
| ports { |
| #ifdef GMSL_CAMERA_0 |
| port@0 { |
| max9286_in0: endpoint { |
| remote-endpoint = <&fakra_con0>; |
| }; |
| }; |
| #endif |
| |
| #ifdef GMSL_CAMERA_1 |
| port@1 { |
| max9286_in1: endpoint{ |
| remote-endpoint = <&fakra_con1>; |
| }; |
| |
| }; |
| #endif |
| |
| #ifdef GMSL_CAMERA_2 |
| port@2 { |
| max9286_in2: endpoint { |
| remote-endpoint = <&fakra_con2>; |
| }; |
| |
| }; |
| #endif |
| |
| #ifdef GMSL_CAMERA_3 |
| port@3 { |
| max9286_in3: endpoint { |
| remote-endpoint = <&fakra_con3>; |
| }; |
| |
| }; |
| #endif |
| }; |
| |
| i2c-mux { |
| #ifdef GMSL_CAMERA_0 |
| i2c@0 { |
| status = "okay"; |
| |
| camera@51 { |
| compatible = GMSL_CAMERA_MODEL; |
| reg = <0x51>, <0x61>; |
| |
| port { |
| fakra_con0: endpoint { |
| remote-endpoint = <&max9286_in0>; |
| }; |
| }; |
| }; |
| }; |
| #endif |
| |
| #ifdef GMSL_CAMERA_1 |
| i2c@1 { |
| status = "okay"; |
| |
| camera@52 { |
| compatible = GMSL_CAMERA_MODEL; |
| reg = <0x52>, <0x62>; |
| |
| port { |
| fakra_con1: endpoint { |
| remote-endpoint = <&max9286_in1>; |
| }; |
| }; |
| }; |
| }; |
| #endif |
| |
| #ifdef GMSL_CAMERA_2 |
| i2c@2 { |
| status = "okay"; |
| |
| camera@53 { |
| compatible = GMSL_CAMERA_MODEL; |
| reg = <0x53>, <0x63>; |
| |
| port { |
| fakra_con2: endpoint { |
| remote-endpoint = <&max9286_in2>; |
| }; |
| }; |
| }; |
| }; |
| #endif |
| |
| #ifdef GMSL_CAMERA_3 |
| i2c@3 { |
| status = "okay"; |
| |
| camera@54 { |
| compatible = GMSL_CAMERA_MODEL; |
| reg = <0x54>, <0x64>; |
| |
| port { |
| fakra_con3: endpoint { |
| remote-endpoint = <&max9286_in3>; |
| }; |
| }; |
| }; |
| }; |
| #endif |
| }; |
| }; |
| #endif /* ifdef GMSL_0 */ |
| |
| #ifdef GMSL_1 |
| &vin4 { |
| status = "okay"; |
| }; |
| |
| &vin5 { |
| status = "okay"; |
| }; |
| |
| &vin6 { |
| status = "okay"; |
| }; |
| |
| &vin7 { |
| status = "okay"; |
| }; |
| |
| &gmsl1 { |
| status = "okay"; |
| |
| #if defined(GMSL_CAMERA_RDACM21) |
| maxim,reverse-channel-microvolt = <100000>; |
| #endif |
| |
| ports { |
| #ifdef GMSL_CAMERA_4 |
| port@0 { |
| max9286_in4: endpoint { |
| remote-endpoint = <&fakra_con4>; |
| }; |
| }; |
| #endif |
| |
| #ifdef GMSL_CAMERA_5 |
| port@1 { |
| max9286_in5: endpoint{ |
| remote-endpoint = <&fakra_con5>; |
| }; |
| |
| }; |
| #endif |
| |
| #ifdef GMSL_CAMERA_6 |
| port@2 { |
| max9286_in6: endpoint { |
| remote-endpoint = <&fakra_con6>; |
| }; |
| |
| }; |
| #endif |
| |
| #ifdef GMSL_CAMERA_7 |
| port@3 { |
| max9286_in7: endpoint { |
| remote-endpoint = <&fakra_con7>; |
| }; |
| |
| }; |
| #endif |
| }; |
| |
| i2c-mux { |
| #ifdef GMSL_CAMERA_4 |
| i2c@0 { |
| status = "okay"; |
| |
| camera@55 { |
| compatible = GMSL_CAMERA_MODEL; |
| reg = <0x55>, <0x65>; |
| |
| port { |
| fakra_con4: endpoint { |
| remote-endpoint = <&max9286_in4>; |
| }; |
| }; |
| }; |
| }; |
| #endif |
| |
| #ifdef GMSL_CAMERA_5 |
| i2c@1 { |
| status = "okay"; |
| |
| camera@56 { |
| compatible = GMSL_CAMERA_MODEL; |
| reg = <0x56>, <0x66>; |
| |
| port { |
| fakra_con5: endpoint { |
| remote-endpoint = <&max9286_in5>; |
| }; |
| }; |
| }; |
| }; |
| #endif |
| |
| #ifdef GMSL_CAMERA_6 |
| i2c@2 { |
| status = "okay"; |
| |
| camera@57 { |
| compatible = GMSL_CAMERA_MODEL; |
| reg = <0x57>, <0x67>; |
| |
| port { |
| fakra_con6: endpoint { |
| remote-endpoint = <&max9286_in6>; |
| }; |
| }; |
| }; |
| }; |
| #endif |
| |
| #ifdef GMSL_CAMERA_7 |
| i2c@3 { |
| status = "okay"; |
| |
| camera@58 { |
| compatible = GMSL_CAMERA_MODEL; |
| reg = <0x58>, <0x68>; |
| |
| port { |
| fakra_con7: endpoint { |
| remote-endpoint = <&max9286_in7>; |
| }; |
| }; |
| }; |
| }; |
| #endif |
| }; |
| }; |
| #endif /* ifdef GMSL_1 */ |