cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

gmsl-cameras.dtsi (5580B)


      1// SPDX-License-Identifier: GPL-2.0+
      2/*
      3 * Copyright (C) 2017 Ideas on Board <kieran.bingham@ideasonboard.com>
      4 * Copyright (C) 2021 Jacopo Mondi <jacopo+renesas@jmondi.org>
      5 *
      6 * Device Tree Source (overlay) that describes GMSL camera connected to
      7 * Fakra connectors for the Eagle V3M and Condor V3H (and compatible) boards.
      8 *
      9 * The following cameras are currently supported: RDACM20 and RDACM21.
     10 *
     11 * The board .dts file that include this has to select which cameras are in use
     12 * by specifying the camera model with:
     13 *
     14 * #define GMSL_CAMERA_RDACM20
     15 * or
     16 * #define GMSL_CAMERA_RDACM21
     17 *
     18 * And which cameras are connected to the board by defining:
     19 * for GMSL channel 0:
     20 *	   #define GMSL_CAMERA_0
     21 *	   #define GMSL_CAMERA_1
     22 *	   #define GMSL_CAMERA_2
     23 *	   #define GMSL_CAMERA_3
     24 *
     25 * for GMSL channel 1:
     26 *	   #define GMSL_CAMERA_4
     27 *	   #define GMSL_CAMERA_5
     28 *	   #define GMSL_CAMERA_6
     29 *	   #define GMSL_CAMERA_7
     30 */
     31
     32#include <dt-bindings/gpio/gpio.h>
     33
     34/* Validate the board file settings. */
     35#if !defined(GMSL_CAMERA_RDACM20) && !defined(GMSL_CAMERA_RDACM21)
     36#error "Camera model should be defined by the board file"
     37#endif
     38
     39#if defined(GMSL_CAMERA_RDACM20) && defined(GMSL_CAMERA_RDACM21)
     40#error "A single camera model should be selected"
     41#endif
     42
     43#if !defined(GMSL_CAMERA_0) && !defined(GMSL_CAMERA_1) && \
     44    !defined(GMSL_CAMERA_2) && !defined(GMSL_CAMERA_3) && \
     45    !defined(GMSL_CAMERA_4) && !defined(GMSL_CAMERA_5) && \
     46    !defined(GMSL_CAMERA_6) && !defined(GMSL_CAMERA_7)
     47#error "At least one camera should be selected"
     48#endif
     49
     50/* Deduce from the enabled cameras which GMSL channels are active. */
     51#if defined(GMSL_CAMERA_0) || defined(GMSL_CAMERA_1) || \
     52    defined(GMSL_CAMERA_2) || defined(GMSL_CAMERA_3)
     53#define GMSL_0
     54#endif
     55
     56#if defined(GMSL_CAMERA_4) || defined(GMSL_CAMERA_5) || \
     57    defined(GMSL_CAMERA_6) || defined(GMSL_CAMERA_7)
     58#define GMSL_1
     59#endif
     60
     61/* Deduce the camera model compatible string. */
     62#if defined(GMSL_CAMERA_RDACM20)
     63#define GMSL_CAMERA_MODEL "imi,rdacm20"
     64#elif defined(GMSL_CAMERA_RDACM21)
     65#define GMSL_CAMERA_MODEL "imi,rdacm21"
     66#endif
     67
     68#ifdef GMSL_0
     69&vin0 {
     70	status = "okay";
     71};
     72
     73&vin1 {
     74	status = "okay";
     75};
     76
     77&vin2 {
     78	status = "okay";
     79};
     80
     81&vin3 {
     82	status = "okay";
     83};
     84
     85&gmsl0 {
     86	status = "okay";
     87
     88#if defined(GMSL_CAMERA_RDACM21)
     89	maxim,reverse-channel-microvolt = <100000>;
     90#endif
     91
     92	ports {
     93#ifdef GMSL_CAMERA_0
     94		port@0 {
     95			max9286_in0: endpoint {
     96				remote-endpoint = <&fakra_con0>;
     97			};
     98		};
     99#endif
    100
    101#ifdef GMSL_CAMERA_1
    102		port@1 {
    103			max9286_in1: endpoint{
    104				remote-endpoint = <&fakra_con1>;
    105			};
    106
    107		};
    108#endif
    109
    110#ifdef GMSL_CAMERA_2
    111		port@2 {
    112			max9286_in2: endpoint {
    113				remote-endpoint = <&fakra_con2>;
    114			};
    115
    116		};
    117#endif
    118
    119#ifdef GMSL_CAMERA_3
    120		port@3 {
    121			max9286_in3: endpoint {
    122				remote-endpoint = <&fakra_con3>;
    123			};
    124
    125		};
    126#endif
    127	};
    128
    129	i2c-mux {
    130#ifdef GMSL_CAMERA_0
    131		i2c@0 {
    132			status = "okay";
    133
    134			camera@51 {
    135				compatible = GMSL_CAMERA_MODEL;
    136				reg = <0x51>, <0x61>;
    137
    138				port {
    139					fakra_con0: endpoint {
    140						remote-endpoint = <&max9286_in0>;
    141					};
    142				};
    143			};
    144		};
    145#endif
    146
    147#ifdef GMSL_CAMERA_1
    148		i2c@1 {
    149			status = "okay";
    150
    151			camera@52 {
    152				compatible = GMSL_CAMERA_MODEL;
    153				reg = <0x52>, <0x62>;
    154
    155				port {
    156					fakra_con1: endpoint {
    157						remote-endpoint = <&max9286_in1>;
    158					};
    159				};
    160			};
    161		};
    162#endif
    163
    164#ifdef GMSL_CAMERA_2
    165		i2c@2 {
    166			status = "okay";
    167
    168			camera@53 {
    169				compatible = GMSL_CAMERA_MODEL;
    170				reg = <0x53>, <0x63>;
    171
    172				port {
    173					fakra_con2: endpoint {
    174						remote-endpoint = <&max9286_in2>;
    175					};
    176				};
    177			};
    178		};
    179#endif
    180
    181#ifdef GMSL_CAMERA_3
    182		i2c@3 {
    183			status = "okay";
    184
    185			camera@54 {
    186				compatible = GMSL_CAMERA_MODEL;
    187				reg = <0x54>, <0x64>;
    188
    189				port {
    190					fakra_con3: endpoint {
    191						remote-endpoint = <&max9286_in3>;
    192					};
    193				};
    194			};
    195		};
    196#endif
    197	};
    198};
    199#endif /* ifdef GMSL_0 */
    200
    201#ifdef GMSL_1
    202&vin4 {
    203	status = "okay";
    204};
    205
    206&vin5 {
    207	status = "okay";
    208};
    209
    210&vin6 {
    211	status = "okay";
    212};
    213
    214&vin7 {
    215	status = "okay";
    216};
    217
    218&gmsl1 {
    219	status = "okay";
    220
    221#if defined(GMSL_CAMERA_RDACM21)
    222	maxim,reverse-channel-microvolt = <100000>;
    223#endif
    224
    225	ports {
    226#ifdef GMSL_CAMERA_4
    227		port@0 {
    228			max9286_in4: endpoint {
    229				remote-endpoint = <&fakra_con4>;
    230			};
    231		};
    232#endif
    233
    234#ifdef GMSL_CAMERA_5
    235		port@1 {
    236			max9286_in5: endpoint{
    237				remote-endpoint = <&fakra_con5>;
    238			};
    239
    240		};
    241#endif
    242
    243#ifdef GMSL_CAMERA_6
    244		port@2 {
    245			max9286_in6: endpoint {
    246				remote-endpoint = <&fakra_con6>;
    247			};
    248
    249		};
    250#endif
    251
    252#ifdef GMSL_CAMERA_7
    253		port@3 {
    254			max9286_in7: endpoint {
    255				remote-endpoint = <&fakra_con7>;
    256			};
    257
    258		};
    259#endif
    260	};
    261
    262	i2c-mux {
    263#ifdef GMSL_CAMERA_4
    264		i2c@0 {
    265			status = "okay";
    266
    267			camera@55 {
    268				compatible = GMSL_CAMERA_MODEL;
    269				reg = <0x55>, <0x65>;
    270
    271				port {
    272					fakra_con4: endpoint {
    273						remote-endpoint = <&max9286_in4>;
    274					};
    275				};
    276			};
    277		};
    278#endif
    279
    280#ifdef GMSL_CAMERA_5
    281		i2c@1 {
    282			status = "okay";
    283
    284			camera@56 {
    285				compatible = GMSL_CAMERA_MODEL;
    286				reg = <0x56>, <0x66>;
    287
    288				port {
    289					fakra_con5: endpoint {
    290						remote-endpoint = <&max9286_in5>;
    291					};
    292				};
    293			};
    294		};
    295#endif
    296
    297#ifdef GMSL_CAMERA_6
    298		i2c@2 {
    299			status = "okay";
    300
    301			camera@57 {
    302				compatible = GMSL_CAMERA_MODEL;
    303				reg = <0x57>, <0x67>;
    304
    305				port {
    306					fakra_con6: endpoint {
    307						remote-endpoint = <&max9286_in6>;
    308					};
    309				};
    310			};
    311		};
    312#endif
    313
    314#ifdef GMSL_CAMERA_7
    315		i2c@3 {
    316			status = "okay";
    317
    318			camera@58 {
    319				compatible = GMSL_CAMERA_MODEL;
    320				reg = <0x58>, <0x68>;
    321
    322				port {
    323					fakra_con7: endpoint {
    324						remote-endpoint = <&max9286_in7>;
    325					};
    326				};
    327			};
    328		};
    329#endif
    330	};
    331};
    332#endif /* ifdef GMSL_1 */