1*7d0873ebSEmmanuel Vadot// SPDX-License-Identifier: GPL-2.0 2*7d0873ebSEmmanuel Vadot/* 3*7d0873ebSEmmanuel Vadot * Device Tree Source for the Eagle V3M Function expansion board. 4*7d0873ebSEmmanuel Vadot * 5*7d0873ebSEmmanuel Vadot * Copyright (C) 2024 Niklas Söderlund <niklas.soderlund@ragnatech.se> 6*7d0873ebSEmmanuel Vadot */ 7*7d0873ebSEmmanuel Vadot 8*7d0873ebSEmmanuel Vadot/dts-v1/; 9*7d0873ebSEmmanuel Vadot/plugin/; 10*7d0873ebSEmmanuel Vadot 11*7d0873ebSEmmanuel Vadot#include <dt-bindings/gpio/gpio.h> 12*7d0873ebSEmmanuel Vadot#include <dt-bindings/interrupt-controller/irq.h> 13*7d0873ebSEmmanuel Vadot 14*7d0873ebSEmmanuel Vadot/ { 15*7d0873ebSEmmanuel Vadot /* CN4 */ 16*7d0873ebSEmmanuel Vadot /* Eagle: SW18 set to OFF */ 17*7d0873ebSEmmanuel Vadot cvbs-in-cn4 { 18*7d0873ebSEmmanuel Vadot compatible = "composite-video-connector"; 19*7d0873ebSEmmanuel Vadot label = "CVBS IN CN4"; 20*7d0873ebSEmmanuel Vadot 21*7d0873ebSEmmanuel Vadot port { 22*7d0873ebSEmmanuel Vadot cvbs_con: endpoint { 23*7d0873ebSEmmanuel Vadot remote-endpoint = <&adv7482_ain7>; 24*7d0873ebSEmmanuel Vadot }; 25*7d0873ebSEmmanuel Vadot }; 26*7d0873ebSEmmanuel Vadot }; 27*7d0873ebSEmmanuel Vadot 28*7d0873ebSEmmanuel Vadot /* CN2 */ 29*7d0873ebSEmmanuel Vadot /* Eagle: SW35 set 5, 6 and 8 to OFF */ 30*7d0873ebSEmmanuel Vadot hdmi-in-cn2 { 31*7d0873ebSEmmanuel Vadot compatible = "hdmi-connector"; 32*7d0873ebSEmmanuel Vadot label = "HDMI IN CN2"; 33*7d0873ebSEmmanuel Vadot type = "a"; 34*7d0873ebSEmmanuel Vadot 35*7d0873ebSEmmanuel Vadot port { 36*7d0873ebSEmmanuel Vadot hdmi_in_con2: endpoint { 37*7d0873ebSEmmanuel Vadot remote-endpoint = <&adv7612_in>; 38*7d0873ebSEmmanuel Vadot }; 39*7d0873ebSEmmanuel Vadot }; 40*7d0873ebSEmmanuel Vadot }; 41*7d0873ebSEmmanuel Vadot 42*7d0873ebSEmmanuel Vadot /* CN3 */ 43*7d0873ebSEmmanuel Vadot /* Eagle: SW18 set to OFF */ 44*7d0873ebSEmmanuel Vadot hdmi-in-cn3 { 45*7d0873ebSEmmanuel Vadot compatible = "hdmi-connector"; 46*7d0873ebSEmmanuel Vadot label = "HDMI IN CN3"; 47*7d0873ebSEmmanuel Vadot type = "a"; 48*7d0873ebSEmmanuel Vadot 49*7d0873ebSEmmanuel Vadot port { 50*7d0873ebSEmmanuel Vadot hdmi_in_con: endpoint { 51*7d0873ebSEmmanuel Vadot remote-endpoint = <&adv7482_hdmi>; 52*7d0873ebSEmmanuel Vadot }; 53*7d0873ebSEmmanuel Vadot }; 54*7d0873ebSEmmanuel Vadot }; 55*7d0873ebSEmmanuel Vadot}; 56*7d0873ebSEmmanuel Vadot 57*7d0873ebSEmmanuel Vadot/* Disconnect MAX9286 GMSL I2C. */ 58*7d0873ebSEmmanuel Vadot&i2c3 { 59*7d0873ebSEmmanuel Vadot status = "disabled"; 60*7d0873ebSEmmanuel Vadot}; 61*7d0873ebSEmmanuel Vadot 62*7d0873ebSEmmanuel Vadot/* Connect expansion board I2C. */ 63*7d0873ebSEmmanuel Vadot&i2c0 { 64*7d0873ebSEmmanuel Vadot #address-cells = <1>; 65*7d0873ebSEmmanuel Vadot #size-cells = <0>; 66*7d0873ebSEmmanuel Vadot 67*7d0873ebSEmmanuel Vadot gpio@27 { 68*7d0873ebSEmmanuel Vadot compatible = "onnn,pca9654"; 69*7d0873ebSEmmanuel Vadot reg = <0x27>; 70*7d0873ebSEmmanuel Vadot gpio-controller; 71*7d0873ebSEmmanuel Vadot #gpio-cells = <2>; 72*7d0873ebSEmmanuel Vadot 73*7d0873ebSEmmanuel Vadot vin0_adv7612_en { 74*7d0873ebSEmmanuel Vadot gpio-hog; 75*7d0873ebSEmmanuel Vadot gpios = <3 GPIO_ACTIVE_LOW>; 76*7d0873ebSEmmanuel Vadot output-high; 77*7d0873ebSEmmanuel Vadot line-name = "VIN0_ADV7612_ENn"; 78*7d0873ebSEmmanuel Vadot }; 79*7d0873ebSEmmanuel Vadot }; 80*7d0873ebSEmmanuel Vadot 81*7d0873ebSEmmanuel Vadot hdmi-decoder@4c { 82*7d0873ebSEmmanuel Vadot compatible = "adi,adv7612"; 83*7d0873ebSEmmanuel Vadot reg = <0x4c>, <0x50>, <0x52>, <0x54>, <0x56>, <0x58>; 84*7d0873ebSEmmanuel Vadot reg-names = "main", "afe", "rep", "edid", "hdmi", "cp"; 85*7d0873ebSEmmanuel Vadot interrupt-parent = <&gpio3>; 86*7d0873ebSEmmanuel Vadot interrupts = <2 IRQ_TYPE_LEVEL_LOW>; 87*7d0873ebSEmmanuel Vadot default-input = <0>; 88*7d0873ebSEmmanuel Vadot 89*7d0873ebSEmmanuel Vadot ports { 90*7d0873ebSEmmanuel Vadot #address-cells = <1>; 91*7d0873ebSEmmanuel Vadot #size-cells = <0>; 92*7d0873ebSEmmanuel Vadot 93*7d0873ebSEmmanuel Vadot port@0 { 94*7d0873ebSEmmanuel Vadot reg = <0>; 95*7d0873ebSEmmanuel Vadot 96*7d0873ebSEmmanuel Vadot adv7612_in: endpoint { 97*7d0873ebSEmmanuel Vadot remote-endpoint = <&hdmi_in_con2>; 98*7d0873ebSEmmanuel Vadot }; 99*7d0873ebSEmmanuel Vadot }; 100*7d0873ebSEmmanuel Vadot 101*7d0873ebSEmmanuel Vadot port@2 { 102*7d0873ebSEmmanuel Vadot reg = <2>; 103*7d0873ebSEmmanuel Vadot 104*7d0873ebSEmmanuel Vadot adv7612_out: endpoint { 105*7d0873ebSEmmanuel Vadot remote-endpoint = <&vin0_in>; 106*7d0873ebSEmmanuel Vadot }; 107*7d0873ebSEmmanuel Vadot }; 108*7d0873ebSEmmanuel Vadot }; 109*7d0873ebSEmmanuel Vadot }; 110*7d0873ebSEmmanuel Vadot 111*7d0873ebSEmmanuel Vadot video-receiver@70 { 112*7d0873ebSEmmanuel Vadot compatible = "adi,adv7482"; 113*7d0873ebSEmmanuel Vadot reg = <0x70 0x71 0x72 0x73 0x74 0x75 114*7d0873ebSEmmanuel Vadot 0x60 0x61 0x62 0x63 0x64 0x65>; 115*7d0873ebSEmmanuel Vadot reg-names = "main", "dpll", "cp", "hdmi", "edid", "repeater", 116*7d0873ebSEmmanuel Vadot "infoframe", "cbus", "cec", "sdp", "txa", "txb" ; 117*7d0873ebSEmmanuel Vadot interrupt-parent = <&gpio3>; 118*7d0873ebSEmmanuel Vadot interrupts = <03 IRQ_TYPE_LEVEL_LOW>, <04 IRQ_TYPE_LEVEL_LOW>; 119*7d0873ebSEmmanuel Vadot interrupt-names = "intrq1", "intrq2"; 120*7d0873ebSEmmanuel Vadot 121*7d0873ebSEmmanuel Vadot ports { 122*7d0873ebSEmmanuel Vadot #address-cells = <1>; 123*7d0873ebSEmmanuel Vadot #size-cells = <0>; 124*7d0873ebSEmmanuel Vadot 125*7d0873ebSEmmanuel Vadot port@7 { 126*7d0873ebSEmmanuel Vadot reg = <7>; 127*7d0873ebSEmmanuel Vadot 128*7d0873ebSEmmanuel Vadot adv7482_ain7: endpoint { 129*7d0873ebSEmmanuel Vadot remote-endpoint = <&cvbs_con>; 130*7d0873ebSEmmanuel Vadot }; 131*7d0873ebSEmmanuel Vadot }; 132*7d0873ebSEmmanuel Vadot 133*7d0873ebSEmmanuel Vadot port@8 { 134*7d0873ebSEmmanuel Vadot reg = <8>; 135*7d0873ebSEmmanuel Vadot 136*7d0873ebSEmmanuel Vadot adv7482_hdmi: endpoint { 137*7d0873ebSEmmanuel Vadot remote-endpoint = <&hdmi_in_con>; 138*7d0873ebSEmmanuel Vadot }; 139*7d0873ebSEmmanuel Vadot }; 140*7d0873ebSEmmanuel Vadot 141*7d0873ebSEmmanuel Vadot port@a { 142*7d0873ebSEmmanuel Vadot reg = <10>; 143*7d0873ebSEmmanuel Vadot 144*7d0873ebSEmmanuel Vadot adv7482_txa: endpoint { 145*7d0873ebSEmmanuel Vadot clock-lanes = <0>; 146*7d0873ebSEmmanuel Vadot data-lanes = <1 2 3 4>; 147*7d0873ebSEmmanuel Vadot remote-endpoint = <&csi40_in>; 148*7d0873ebSEmmanuel Vadot }; 149*7d0873ebSEmmanuel Vadot }; 150*7d0873ebSEmmanuel Vadot }; 151*7d0873ebSEmmanuel Vadot }; 152*7d0873ebSEmmanuel Vadot 153*7d0873ebSEmmanuel Vadot}; 154*7d0873ebSEmmanuel Vadot 155*7d0873ebSEmmanuel Vadot&csi40 { 156*7d0873ebSEmmanuel Vadot status = "okay"; 157*7d0873ebSEmmanuel Vadot 158*7d0873ebSEmmanuel Vadot ports { 159*7d0873ebSEmmanuel Vadot #address-cells = <1>; 160*7d0873ebSEmmanuel Vadot #size-cells = <0>; 161*7d0873ebSEmmanuel Vadot 162*7d0873ebSEmmanuel Vadot port@0 { 163*7d0873ebSEmmanuel Vadot reg = <0>; 164*7d0873ebSEmmanuel Vadot 165*7d0873ebSEmmanuel Vadot csi40_in: endpoint { 166*7d0873ebSEmmanuel Vadot clock-lanes = <0>; 167*7d0873ebSEmmanuel Vadot data-lanes = <1 2 3 4>; 168*7d0873ebSEmmanuel Vadot remote-endpoint = <&adv7482_txa>; 169*7d0873ebSEmmanuel Vadot }; 170*7d0873ebSEmmanuel Vadot }; 171*7d0873ebSEmmanuel Vadot }; 172*7d0873ebSEmmanuel Vadot}; 173*7d0873ebSEmmanuel Vadot 174*7d0873ebSEmmanuel Vadot&pfc { 175*7d0873ebSEmmanuel Vadot vin0_pins_parallel: vin0 { 176*7d0873ebSEmmanuel Vadot groups = "vin0_data12", "vin0_sync", "vin0_clk", "vin0_clkenb"; 177*7d0873ebSEmmanuel Vadot function = "vin0"; 178*7d0873ebSEmmanuel Vadot }; 179*7d0873ebSEmmanuel Vadot}; 180*7d0873ebSEmmanuel Vadot 181*7d0873ebSEmmanuel Vadot&vin0 { 182*7d0873ebSEmmanuel Vadot status = "okay"; 183*7d0873ebSEmmanuel Vadot 184*7d0873ebSEmmanuel Vadot pinctrl-0 = <&vin0_pins_parallel>; 185*7d0873ebSEmmanuel Vadot pinctrl-names = "default"; 186*7d0873ebSEmmanuel Vadot 187*7d0873ebSEmmanuel Vadot ports { 188*7d0873ebSEmmanuel Vadot #address-cells = <1>; 189*7d0873ebSEmmanuel Vadot #size-cells = <0>; 190*7d0873ebSEmmanuel Vadot 191*7d0873ebSEmmanuel Vadot port@0 { 192*7d0873ebSEmmanuel Vadot reg = <0>; 193*7d0873ebSEmmanuel Vadot 194*7d0873ebSEmmanuel Vadot vin0_in: endpoint { 195*7d0873ebSEmmanuel Vadot pclk-sample = <0>; 196*7d0873ebSEmmanuel Vadot hsync-active = <0>; 197*7d0873ebSEmmanuel Vadot vsync-active = <0>; 198*7d0873ebSEmmanuel Vadot remote-endpoint = <&adv7612_out>; 199*7d0873ebSEmmanuel Vadot }; 200*7d0873ebSEmmanuel Vadot }; 201*7d0873ebSEmmanuel Vadot }; 202*7d0873ebSEmmanuel Vadot}; 203*7d0873ebSEmmanuel Vadot 204*7d0873ebSEmmanuel Vadot&vin1 { 205*7d0873ebSEmmanuel Vadot status = "okay"; 206*7d0873ebSEmmanuel Vadot}; 207*7d0873ebSEmmanuel Vadot 208*7d0873ebSEmmanuel Vadot&vin2 { 209*7d0873ebSEmmanuel Vadot status = "okay"; 210*7d0873ebSEmmanuel Vadot}; 211*7d0873ebSEmmanuel Vadot 212*7d0873ebSEmmanuel Vadot&vin3 { 213*7d0873ebSEmmanuel Vadot status = "okay"; 214*7d0873ebSEmmanuel Vadot}; 215