From b7d0e4d918d57ed3c015558a11c3aa8487b7e729 Mon Sep 17 00:00:00 2001 From: Vladimir Barinov Date: Thu, 13 Jul 2017 06:17:32 +0300 Subject: [PATCH] arm64: dts: r8a7795-h3ulcb-vb: add ADAS board Videobox board on R8A7795 SoC Signed-off-by: Vladimir Barinov --- arch/arm64/boot/dts/renesas/Makefile | 1 + .../boot/dts/renesas/r8a7795-es1-h3ulcb-vb.dts | 1787 ++++++++++++++++++++ arch/arm64/boot/dts/renesas/r8a7795-h3ulcb-vb.dts | 1787 ++++++++++++++++++++ arch/arm64/boot/dts/renesas/ulcb-vb-cn12.dtsi | 507 ++++++ 4 files changed, 4082 insertions(+) create mode 100644 arch/arm64/boot/dts/renesas/r8a7795-es1-h3ulcb-vb.dts create mode 100644 arch/arm64/boot/dts/renesas/r8a7795-h3ulcb-vb.dts create mode 100644 arch/arm64/boot/dts/renesas/ulcb-vb-cn12.dtsi diff --git a/arch/arm64/boot/dts/renesas/Makefile b/arch/arm64/boot/dts/renesas/Makefile index 86a08db..c9b3e96 100644 --- a/arch/arm64/boot/dts/renesas/Makefile +++ b/arch/arm64/boot/dts/renesas/Makefile @@ -16,6 +16,7 @@ dtb-$(CONFIG_ARCH_R8A7795) += r8a7795-salvator-x-view.dtb dtb-$(CONFIG_ARCH_R8A7795) += r8a7795-h3ulcb-view.dtb dtb-$(CONFIG_ARCH_R8A7795) += r8a7795-h3ulcb-had-alfa.dtb r8a7795-h3ulcb-had-beta.dtb dtb-$(CONFIG_ARCH_R8A7795) += r8a7795-h3ulcb-kf.dtb r8a7795-h3ulcb-kf-v1.dtb +dtb-$(CONFIG_ARCH_R8A7795) += r8a7795-h3ulcb-vb.dtb r8a7795-es1-h3ulcb-vb.dtb always := $(dtb-y) clean-files := *.dtb diff --git a/arch/arm64/boot/dts/renesas/r8a7795-es1-h3ulcb-vb.dts b/arch/arm64/boot/dts/renesas/r8a7795-es1-h3ulcb-vb.dts new file mode 100644 index 0000000..77ad679 --- /dev/null +++ b/arch/arm64/boot/dts/renesas/r8a7795-es1-h3ulcb-vb.dts @@ -0,0 +1,1787 @@ +/* + * Device Tree Source for the H3ULCB Videobox board on r8a7795 ES1.x + * + * Copyright (C) 2017 Renesas Electronics Corp. + * Copyright (C) 2017 Cogent Embedded, Inc. + * + * This file is licensed under the terms of the GNU General Public License + * version 2. This program is licensed "as is" without any warranty of any + * kind, whether express or implied. + */ + +#include "r8a7795-es1-h3ulcb.dts" + +/ { + model = "Renesas H3ULCB Videobox board based on r8a7795"; + + leds { + compatible = "gpio-leds"; + + led5 { + gpios = <&gpio6 12 GPIO_ACTIVE_HIGH>; + }; + led6 { + gpios = <&gpio6 13 GPIO_ACTIVE_HIGH>; + }; + /* D13 - status 0 */ + led_ext00 { + gpios = <&gpio_ext_led 0 GPIO_ACTIVE_LOW>; + linux,default-trigger = "heartbeat"; + }; + /* D14 - status 1 */ + led_ext01 { + gpios = <&gpio_ext_led 1 GPIO_ACTIVE_LOW>; + linux,default-trigger = "mmc1"; + }; + /* D16 - HDMI1 */ + led_ext02 { + gpios = <&gpio_ext_led 2 GPIO_ACTIVE_LOW>; + }; + /* D18 - HDMI0 */ + led_ext03 { + gpios = <&gpio_ext_led 3 GPIO_ACTIVE_LOW>; + }; + /* D20 - USB3.0 - 0.1 */ + led_ext04 { + gpios = <&gpio_ext_led 4 GPIO_ACTIVE_LOW>; + }; + /* D21 - USB3.0 - 0.2 */ + led_ext05 { + gpios = <&gpio_ext_led 5 GPIO_ACTIVE_LOW>; + }; + /* D24 - USB3.0 - 1.1 */ + led6_ext06 { + gpios = <&gpio_ext_led 6 GPIO_ACTIVE_LOW>; + }; + /* D25 - USB3.0 - 1.2 */ + led_ext07 { + gpios = <&gpio_ext_led 7 GPIO_ACTIVE_LOW>; + }; + }; + + snd_clk: snd_clk { + compatible = "fixed-clock"; + #clock-cells = <0>; + clock-frequency = <24576000>; + clock-output-names = "scki"; + }; + + vccq_sdhi3: regulator@5 { + compatible = "regulator-fixed"; + + regulator-name = "SDHI3 VccQ"; + /* external voltage translator to 1.8V */ + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; + }; + + fpdlink_switch: regulator@8 { + compatible = "regulator-fixed"; + regulator-name = "fpdlink_on"; + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; + gpio = <&gpio1 20 0>; + enable-active-high; + regulator-always-on; + }; + + hub_reset: regulator@9 { + compatible = "regulator-fixed"; + regulator-name = "hub_reset"; + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; + gpio = <&gpio5 5 0>; + enable-active-high; + regulator-always-on; + }; + + hub_power: regulator@10 { + compatible = "regulator-fixed"; + regulator-name = "hub_power"; + regulator-min-microvolt = <5000000>; + regulator-max-microvolt = <5000000>; + gpio = <&gpio6 28 0>; + enable-active-high; + regulator-always-on; + }; + + /delete-node/sound; + + rsnd_ak4613: sound@0 { + pinctrl-0 = <&sound_0_pins>; + pinctrl-names = "default"; + compatible = "simple-audio-card"; + + simple-audio-card,format = "left_j"; + simple-audio-card,name = "ak4613"; + + simple-audio-card,bitclock-master = <&sndcpu>; + simple-audio-card,frame-master = <&sndcpu>; + + sndcpu: simple-audio-card,cpu@1 { + sound-dai = <&rcar_sound>; + }; + + sndcodec: simple-audio-card,codec@1 { + sound-dai = <&ak4613>; + }; + }; + + lvds-encoder { + compatible = "thine,thc63lvdm83d"; + + ports { + #address-cells = <1>; + #size-cells = <0>; + port@0 { + reg = <0>; + lvds_enc_in: endpoint { + remote-endpoint = <&du_out_lvds0>; + }; + }; + port@1 { + reg = <1>; + lvds_enc_out: endpoint { + remote-endpoint = <&lvds_in>; + }; + }; + }; + }; + + lvds { + compatible = "lvds-connector"; + + width-mm = <210>; + height-mm = <158>; + + panel-timing { + /* 1280x800 @60Hz */ + clock-frequency = <65000000>; + hactive = <1280>; + vactive = <800>; + hsync-len = <40>; + hfront-porch = <80>; + hback-porch = <40>; + vfront-porch = <14>; + vback-porch = <14>; + vsync-len = <4>; + }; + + port { + lvds_in: endpoint { + remote-endpoint = <&lvds_enc_out>; + }; + }; + }; + + hdmi1-out { + compatible = "hdmi-connector"; + type = "a"; + + port { + hdmi1_con: endpoint { + remote-endpoint = <&rcar_dw_hdmi1_out>; + }; + }; + }; + + excan_ref_clk: excan-ref-clock { + compatible = "fixed-clock"; + #clock-cells = <0>; + clock-frequency = <16000000>; + }; + + radio: si468x@0 { + compatible = "si,si468x-pcm"; + status = "okay"; + + #sound-dai-cells = <0>; + }; + + spi_gpio_sw { + compatible = "spi-gpio"; + #address-cells = <0x1>; + #size-cells = <0x0>; + gpio-sck = <&gpio0 8 GPIO_ACTIVE_HIGH>; + gpio-miso = <&gpio0 10 GPIO_ACTIVE_HIGH>; + gpio-mosi = <&gpio0 11 GPIO_ACTIVE_HIGH>; + cs-gpios = <&gpio0 9 GPIO_ACTIVE_HIGH>; + num-chipselects = <1>; + + spidev: spidev@0 { + compatible = "spidev", "spi-gpio"; + reg = <0>; + spi-max-frequency = <25000000>; + spi-cpha; + spi-cpol; + }; + }; + + spi_gpio_can { + compatible = "spi-gpio"; + #address-cells = <0x1>; + #size-cells = <0x0>; + gpio-sck = <&gpio1 2 GPIO_ACTIVE_HIGH>; + gpio-miso = <&gpio1 3 GPIO_ACTIVE_HIGH>; + gpio-mosi = <&gpio1 1 GPIO_ACTIVE_HIGH>; + cs-gpios = <&gpio1 0 GPIO_ACTIVE_HIGH + &gpio1 4 GPIO_ACTIVE_HIGH>; + num-chipselects = <2>; + + spican0: spidev@0 { + compatible = "microchip,mcp2515"; + reg = <0>; + clocks = <&excan_ref_clk>; + interrupt-parent = <&gpio0>; + interrupts = <15 GPIO_ACTIVE_LOW>; + spi-max-frequency = <10000000>; + }; + spican1: spidev@1 { + compatible = "microchip,mcp2515"; + reg = <1>; + clocks = <&excan_ref_clk>; + interrupt-parent = <&gpio1>; + interrupts = <5 GPIO_ACTIVE_LOW>; + spi-max-frequency = <10000000>; + }; + }; +}; + +&du { + ports { + port@1 { + endpoint { + remote-endpoint = <&rcar_dw_hdmi0_in>; + }; + }; + port@2 { + endpoint { + remote-endpoint = <&rcar_dw_hdmi1_in>; + }; + }; + port@3 { + endpoint { + remote-endpoint = <&lvds_enc_in>; + }; + }; + }; +}; + +&hdmi1 { + status = "okay"; + + ports { + #address-cells = <1>; + #size-cells = <0>; + port@0 { + reg = <0>; + rcar_dw_hdmi1_in: endpoint { + remote-endpoint = <&du_out_hdmi1>; + }; + }; + port@1 { + reg = <1>; + rcar_dw_hdmi1_out: endpoint { + remote-endpoint = <&hdmi1_con>; + }; + }; + }; +}; + +&pfc { + hscif4_pins: hscif4 { + groups = "hscif4_data_a", "hscif4_ctrl"; + function = "hscif4"; + }; + + sdhi3_pins_3v3: sd3_3v3 { + groups = "sdhi3_data4", "sdhi3_ctrl"; + function = "sdhi3"; + power-source = <3300>; + }; + + /delete-node/sound; + + sound_0_pins: sound1 { + groups = "ssi01239_ctrl", "ssi0_data", "ssi1_data_a"; + function = "ssi"; + }; + + usb0_pins: usb0 { + groups = "usb0"; + function = "usb0"; + }; + + can0_pins: can0 { + groups = "can0_data_a"; + function = "can0"; + }; + + can1_pins: can1 { + groups = "can1_data"; + function = "can1"; + }; + + canfd0_pins: canfd0 { + groups = "canfd0_data_a"; + function = "canfd0"; + }; + + canfd1_pins: canfd1 { + groups = "canfd1_data"; + function = "canfd1"; + }; +}; + +&gpio0 { + video_a_irq { + gpio-hog; + gpios = <12 GPIO_ACTIVE_HIGH>; + input; + line-name = "Video-A irq"; + }; + + video_b_irq { + gpio-hog; + gpios = <13 GPIO_ACTIVE_HIGH>; + input; + line-name = "Video-B irq"; + }; + + video_c_irq { + gpio-hog; + gpios = <14 GPIO_ACTIVE_HIGH>; + input; + line-name = "Video-C irq"; + }; +}; + +&gpio1 { + gpioext_4_22_irq { + gpio-hog; + gpios = <25 GPIO_ACTIVE_HIGH>; + input; + line-name = "0x22@i2c4 irq"; + }; + pcie_disable { + gpio-hog; + gpios = <11 GPIO_ACTIVE_HIGH>; + output-high; + line-name = "mPCIe W_DISABLE"; + }; + m2_sleep { + gpio-hog; + gpios = <6 GPIO_ACTIVE_HIGH>; + output-high; + line-name = "M.2 SLEEP#"; + }; + m2_pres { + gpio-hog; + gpios = <7 GPIO_ACTIVE_HIGH>; + input; + line-name = "M.2 Present"; + }; + m2_pcie_det { + gpio-hog; + gpios = <18 GPIO_ACTIVE_HIGH>; + input; + line-name = "M.2 PCIe detected"; + }; + m2_usb_det { + gpio-hog; + gpios = <19 GPIO_ACTIVE_HIGH>; + input; + line-name = "M.2 USB30 detected"; + }; + m2_usb_det { + gpio-hog; + gpios = <27 GPIO_ACTIVE_HIGH>; + input; + line-name = "M.2 SSD detected"; + }; + eth_phy_reset { + gpio-hog; + gpios = <16 GPIO_ACTIVE_HIGH>; + output-high; + line-name = "BR phy reset"; + }; + eth_sw_reset { + gpio-hog; + gpios = <17 GPIO_ACTIVE_HIGH>; + output-high; + line-name = "BR switch reset"; + }; +}; + +&gpio2 { + m2_wake { + gpio-hog; + gpios = <1 GPIO_ACTIVE_HIGH>; + input; + line-name = "M.2 WAKE#"; + }; + m2_pcie_en { + gpio-hog; + gpios = <4 GPIO_ACTIVE_HIGH>; + output-high; + line-name = "M.2 PCIe enable"; + }; +}; + +&gpio3 { + m2_power_off { + gpio-hog; + gpios = <15 GPIO_ACTIVE_HIGH>; + output-high; + line-name = "M.2 FULL_CARD_POWER_OFF#"; + }; +}; + +&gpio6 { + pcie_wake { + gpio-hog; + gpios = <4 GPIO_ACTIVE_HIGH>; + input; + line-name = "mPCIe WAKE#"; + }; + pcie_clkreq { + gpio-hog; + gpios = <10 GPIO_ACTIVE_HIGH>; + input; + line-name = "mPCIe CLKREQ#"; + }; + m2_rst { + gpio-hog; + gpios = <21 GPIO_ACTIVE_HIGH>; + output-high; + line-name = "M.2 RESET#"; + }; +}; + +&hscif4 { + pinctrl-0 = <&hscif4_pins>; + pinctrl-names = "default"; + ctsrts; + + status = "okay"; +}; + +&i2c2 { + clock-frequency = <400000>; + + i2cswitch2: pca9548@74 { + compatible = "nxp,pca9548"; + #address-cells = <1>; + #size-cells = <0>; + reg = <0x74>; + reset-gpios = <&gpio6 5 GPIO_ACTIVE_LOW>; + + i2c@0 { + #address-cells = <1>; + #size-cells = <0>; + reg = <0>; + /* USB3.0 HUB node(s) */ + }; + + i2c@6 { + #address-cells = <1>; + #size-cells = <0>; + reg = <6>; + /* PCIe node(s) */ + }; + + i2c@7 { + #address-cells = <1>; + #size-cells = <0>; + reg = <7>; + /* Slot A (CN10) */ + + ov106xx@0 { + compatible = "ovti,ov106xx"; + reg = <0x60>; + + port@0 { + ov106xx_in0: endpoint { + clock-lanes = <0>; + data-lanes = <1 2 3 4>; + remote-endpoint = <&vin0ep0>; + }; + }; + port@1 { + ov106xx_max9286_des0ep0: endpoint@0 { + remote-endpoint = <&max9286_des0ep0>; + }; + ov106xx_ti964_des0ep0: endpoint@1 { + remote-endpoint = <&ti964_des0ep0>; + }; + ov106xx_ti954_des0ep0: endpoint@2 { + remote-endpoint = <&ti954_des0ep0>; + }; + }; + }; + + ov106xx@1 { + compatible = "ovti,ov106xx"; + reg = <0x61>; + + port@0 { + ov106xx_in1: endpoint { + clock-lanes = <0>; + data-lanes = <1 2 3 4>; + remote-endpoint = <&vin1ep0>; + }; + }; + port@1 { + ov106xx_max9286_des0ep1: endpoint@0 { + remote-endpoint = <&max9286_des0ep1>; + }; + ov106xx_ti964_des0ep1: endpoint@1 { + remote-endpoint = <&ti964_des0ep1>; + }; + ov106xx_ti954_des0ep1: endpoint@2 { + remote-endpoint = <&ti954_des0ep1>; + }; + }; + }; + + ov106xx@2 { + compatible = "ovti,ov106xx"; + reg = <0x62>; + + port@0 { + ov106xx_in2: endpoint { + clock-lanes = <0>; + data-lanes = <1 2 3 4>; + remote-endpoint = <&vin2ep0>; + }; + }; + port@1 { + ov106xx_max9286_des0ep2: endpoint@0 { + remote-endpoint = <&max9286_des0ep2>; + }; + ov106xx_ti964_des0ep2: endpoint@1 { + remote-endpoint = <&ti964_des0ep2>; + }; + }; + }; + + ov106xx@3 { + compatible = "ovti,ov106xx"; + reg = <0x63>; + + port@0 { + ov106xx_in3: endpoint { + clock-lanes = <0>; + data-lanes = <1 2 3 4>; + remote-endpoint = <&vin3ep0>; + }; + }; + port@1 { + ov106xx_max9286_des0ep3: endpoint@0 { + remote-endpoint = <&max9286_des0ep3>; + }; + ov106xx_ti964_des0ep3: endpoint@1 { + remote-endpoint = <&ti964_des0ep3>; + }; + }; + }; + + /* DS90UB964 @ 0x3a */ + ti964-ti9x3@0 { + compatible = "ti,ti964-ti9x3"; + reg = <0x3a>; + ti,sensor_delay = <350>; + ti,links = <4>; + ti,lanes = <4>; + ti,forwarding-mode = "round-robin"; + ti,cable-mode = "stp"; + + port@0 { + ti964_des0ep0: endpoint@0 { + ti9x3-addr = <0x0c>; + dvp-order = <0>; + remote-endpoint = <&ov106xx_in0>; + }; + ti964_des0ep1: endpoint@1 { + ti9x3-addr = <0x0d>; + dvp-order = <0>; + remote-endpoint = <&ov106xx_in1>; + }; + ti964_des0ep2: endpoint@2 { + ti9x3-addr = <0x0e>; + dvp-order = <0>; + remote-endpoint = <&ov106xx_in2>; + }; + ti964_des0ep3: endpoint@3 { + ti9x3-addr = <0x0f>; + dvp-order = <0>; + remote-endpoint = <&ov106xx_in3>; + }; + }; + port@1 { + ti964_csi0ep0: endpoint { + csi-rate = <1450>; + remote-endpoint = <&csi2_40_ep>; + }; + }; + }; + + /* DS90UB954 @ 0x38 */ + ti954-ti9x3@0 { + compatible = "ti,ti954-ti9x3"; + reg = <0x38>; + /* gpios = <&video_a_ext1 10 GPIO_ACTIVE_HIGH>; */ + ti,sensor_delay = <350>; + ti,links = <2>; + ti,lanes = <4>; + ti,forwarding-mode = "round-robin"; + ti,cable-mode = "stp"; + + port@0 { + ti954_des0ep0: endpoint@0 { + ti9x3-addr = <0x0c>; + dvp-order = <0>; + remote-endpoint = <&ov106xx_in0>; + }; + ti954_des0ep1: endpoint@1 { + ti9x3-addr = <0x0d>; + dvp-order = <0>; + remote-endpoint = <&ov106xx_in1>; + }; + }; + port@1 { + ti954_csi0ep0: endpoint { + csi-rate = <1450>; + remote-endpoint = <&csi2_40_ep>; + }; + }; + }; + + /* MAX9286 @ 0x2c */ + max9286-max9271@0 { + compatible = "maxim,max9286-max9271"; + reg = <0x2c>; + maxim,sensor_delay = <350>; + maxim,links = <4>; + maxim,lanes = <4>; + maxim,resetb-gpio = <1>; + maxim,fsync-mode = "automatic"; + maxim,timeout = <100>; + + port@0 { + max9286_des0ep0: endpoint@0 { + max9271-addr = <0x50>; + dvp-order = <1>; + remote-endpoint = <&ov106xx_in0>; + }; + max9286_des0ep1: endpoint@1 { + max9271-addr = <0x51>; + dvp-order = <1>; + remote-endpoint = <&ov106xx_in1>; + }; + max9286_des0ep2: endpoint@2 { + max9271-addr = <0x52>; + dvp-order = <1>; + remote-endpoint = <&ov106xx_in2>; + }; + max9286_des0ep3: endpoint@3 { + max9271-addr = <0x53>; + dvp-order = <1>; + remote-endpoint = <&ov106xx_in3>; + }; + }; + port@1 { + max9286_csi0ep0: endpoint { + csi-rate = <700>; + remote-endpoint = <&csi2_40_ep>; + }; + }; + }; + }; + + i2c@2 { + #address-cells = <1>; + #size-cells = <0>; + reg = <2>; + /* Slot B (CN11) */ + + ov106xx@4 { + compatible = "ovti,ov106xx"; + reg = <0x64>; + + port@0 { + ov106xx_in4: endpoint { + clock-lanes = <0>; + data-lanes = <1 2 3 4>; + remote-endpoint = <&vin4ep0>; + }; + }; + port@1 { + ov106xx_max9286_des1ep0: endpoint@0 { + remote-endpoint = <&max9286_des1ep0>; + }; + ov106xx_ti964_des1ep0: endpoint@1 { + remote-endpoint = <&ti964_des1ep0>; + }; + ov106xx_ti954_des1ep0: endpoint@2 { + remote-endpoint = <&ti954_des1ep0>; + }; + }; + }; + + ov106xx@5 { + compatible = "ovti,ov106xx"; + reg = <0x65>; + + port@0 { + ov106xx_in5: endpoint { + clock-lanes = <0>; + data-lanes = <1 2 3 4>; + remote-endpoint = <&vin5ep0>; + }; + }; + port@1 { + ov106xx_max9286_des1ep1: endpoint@0 { + remote-endpoint = <&max9286_des1ep1>; + }; + ov106xx_ti964_des1ep1: endpoint@1 { + remote-endpoint = <&ti964_des1ep1>; + }; + ov106xx_ti954_des1ep1: endpoint@2 { + remote-endpoint = <&ti954_des1ep1>; + }; + }; + }; + + ov106xx@6 { + compatible = "ovti,ov106xx"; + reg = <0x66>; + + port@0 { + ov106xx_in6: endpoint { + clock-lanes = <0>; + data-lanes = <1 2 3 4>; + remote-endpoint = <&vin6ep0>; + }; + }; + port@1 { + ov106xx_max9286_des1ep2: endpoint@0 { + remote-endpoint = <&max9286_des1ep2>; + }; + ov106xx_ti964_des1ep2: endpoint@1 { + remote-endpoint = <&ti964_des1ep2>; + }; + }; + }; + + ov106xx@7 { + compatible = "ovti,ov106xx"; + reg = <0x67>; + + port@0 { + ov106xx_in7: endpoint { + clock-lanes = <0>; + data-lanes = <1 2 3 4>; + remote-endpoint = <&vin7ep0>; + }; + }; + port@1 { + ov106xx_max9286_des1ep3: endpoint@0 { + remote-endpoint = <&max9286_des1ep3>; + }; + ov106xx_ti964_des1ep3: endpoint@1 { + remote-endpoint = <&ti964_des1ep3>; + }; + }; + }; + + /* DS90UB964 @ 0x3a */ + ti964-ti9x3@1 { + compatible = "ti,ti964-ti9x3"; + reg = <0x3a>; + ti,sensor_delay = <350>; + ti,links = <4>; + ti,lanes = <4>; + ti,forwarding-mode = "round-robin"; + ti,cable-mode = "stp"; + + port@0 { + ti964_des1ep0: endpoint@0 { + ti9x3-addr = <0x0c>; + dvp-order = <0>; + remote-endpoint = <&ov106xx_in4>; + }; + ti964_des1ep1: endpoint@1 { + ti9x3-addr = <0x0d>; + dvp-order = <0>; + remote-endpoint = <&ov106xx_in5>; + }; + ti964_des1ep2: endpoint@2 { + ti9x3-addr = <0x0e>; + dvp-order = <0>; + remote-endpoint = <&ov106xx_in6>; + }; + ti964_des1ep3: endpoint@3 { + ti9x3-addr = <0x0f>; + dvp-order = <0>; + remote-endpoint = <&ov106xx_in7>; + }; + }; + port@1 { + ti964_csi2ep0: endpoint { + csi-rate = <1450>; + remote-endpoint = <&csi2_41_ep>; + }; + }; + }; + + /* DS90UB954 @ 0x38 */ + ti954-ti9x3@1 { + compatible = "ti,ti954-ti9x3"; + reg = <0x38>; + /* gpios = <&video_b_ext1 10 GPIO_ACTIVE_HIGH>; */ + ti,sensor_delay = <350>; + ti,links = <2>; + ti,lanes = <4>; + ti,forwarding-mode = "round-robin"; + ti,cable-mode = "stp"; + + port@0 { + ti954_des1ep0: endpoint@0 { + ti9x3-addr = <0x0c>; + dvp-order = <0>; + remote-endpoint = <&ov106xx_in4>; + }; + ti954_des1ep1: endpoint@1 { + ti9x3-addr = <0x0d>; + dvp-order = <0>; + remote-endpoint = <&ov106xx_in5>; + }; + }; + port@1 { + ti954_csi2ep0: endpoint { + csi-rate = <1450>; + remote-endpoint = <&csi2_41_ep>; + }; + }; + }; + + /* MAX9286 @ 0x2c */ + max9286-max9271@1 { + compatible = "maxim,max9286-max9271"; + reg = <0x2c>; + maxim,sensor_delay = <350>; + maxim,links = <4>; + maxim,lanes = <4>; + maxim,resetb-gpio = <1>; + maxim,fsync-mode = "automatic"; + maxim,timeout = <100>; + + port@0 { + max9286_des1ep0: endpoint@0 { + max9271-addr = <0x50>; + dvp-order = <1>; + remote-endpoint = <&ov106xx_in4>; + }; + max9286_des1ep1: endpoint@1 { + max9271-addr = <0x51>; + dvp-order = <1>; + remote-endpoint = <&ov106xx_in5>; + }; + max9286_des1ep2: endpoint@2 { + max9271-addr = <0x52>; + dvp-order = <1>; + remote-endpoint = <&ov106xx_in6>; + }; + max9286_des1ep3: endpoint@3 { + max9271-addr = <0x53>; + dvp-order = <1>; + remote-endpoint = <&ov106xx_in7>; + }; + }; + port@1 { + max9286_csi2ep0: endpoint { + csi-rate = <700>; + remote-endpoint = <&csi2_41_ep>; + }; + }; + }; + }; + + i2c@3 { + #address-cells = <1>; + #size-cells = <0>; + reg = <3>; + /* Slot C (CN12) */ + }; + + i2c@1 { + #address-cells = <1>; + #size-cells = <0>; + reg = <1>; + /* Slot A (CN10) */ + + video_a_ext0: pca9535@26 { + compatible = "nxp,pca9535"; + reg = <0x26>; + gpio-controller; + #gpio-cells = <2>; + + video_a_des_cfg1 { + gpio-hog; + gpios = <5 GPIO_ACTIVE_HIGH>; + input; + line-name = "Video-A cfg1"; + }; + video_a_des_cfg0 { + gpio-hog; + gpios = <6 GPIO_ACTIVE_HIGH>; + input; + line-name = "Video-A cfg0"; + }; + video_a_pwr_shdn { + gpio-hog; + gpios = <3 GPIO_ACTIVE_HIGH>; + output-high; + line-name = "Video-A PWR_SHDN"; + }; + video_a_cam_pwr0 { + gpio-hog; + gpios = <12 GPIO_ACTIVE_HIGH>; + output-high; + line-name = "Video-A PWR0"; + }; + video_a_cam_pwr1 { + gpio-hog; + gpios = <13 GPIO_ACTIVE_HIGH>; + output-high; + line-name = "Video-A PWR1"; + }; + video_a_cam_pwr2 { + gpio-hog; + gpios = <14 GPIO_ACTIVE_HIGH>; + output-high; + line-name = "Video-A PWR2"; + }; + video_a_cam_pwr3 { + gpio-hog; + gpios = <15 GPIO_ACTIVE_HIGH>; + output-high; + line-name = "Video-A PWR3"; + }; + video_a_des_shdn { + gpio-hog; + gpios = <4 GPIO_ACTIVE_HIGH>; + output-high; + line-name = "Video-A DES_SHDN"; + }; + video_a_des_led { + gpio-hog; + gpios = <7 GPIO_ACTIVE_HIGH>; + output-low; + line-name = "Video-A led"; + }; + }; + + video_a_ext1: max7325@5c { + compatible = "maxim,max7325"; + reg = <0x5c>; + gpio-controller; + #gpio-cells = <2>; + + video_a_des_cfg2 { + gpio-hog; + gpios = <4 GPIO_ACTIVE_HIGH>; + input; + line-name = "Video-A cfg2"; + }; + video_a_des_cfg1 { + gpio-hog; + gpios = <6 GPIO_ACTIVE_HIGH>; + input; + line-name = "Video-A cfg1"; + }; + video_a_des_cfg0 { + gpio-hog; + gpios = <7 GPIO_ACTIVE_HIGH>; + input; + line-name = "Video-A cfg0"; + }; + video_a_pwr_shdn { + gpio-hog; + gpios = <14 GPIO_ACTIVE_HIGH>; + output-high; + line-name = "Video-A PWR_SHDN"; + }; + video_a_cam_pwr0 { + gpio-hog; + gpios = <8 GPIO_ACTIVE_HIGH>; + output-high; + line-name = "Video-A PWR0"; + }; + video_a_cam_pwr1 { + gpio-hog; + gpios = <9 GPIO_ACTIVE_HIGH>; + output-high; + line-name = "Video-A PWR1"; + }; + video_a_cam_pwr2 { + gpio-hog; + gpios = <10 GPIO_ACTIVE_HIGH>; + output-high; + line-name = "Video-A PWR2"; + }; + video_a_cam_pwr3 { + gpio-hog; + gpios = <11 GPIO_ACTIVE_HIGH>; + output-high; + line-name = "Video-A PWR3"; + }; + video_a_des_shdn { + gpio-hog; + gpios = <13 GPIO_ACTIVE_HIGH>; + output-high; + line-name = "Video-A DES_SHDN"; + }; + video_a_led { + gpio-hog; + gpios = <12 GPIO_ACTIVE_HIGH>; + output-low; + line-name = "Video-A LED"; + }; + }; + }; + + i2c@5 { + #address-cells = <1>; + #size-cells = <0>; + reg = <5>; + /* Slot B (CN11) */ + + video_b_ext0: pca9535@26 { + compatible = "nxp,pca9535"; + reg = <0x26>; + gpio-controller; + #gpio-cells = <2>; + + video_b_des_cfg1 { + gpio-hog; + gpios = <5 GPIO_ACTIVE_HIGH>; + input; + line-name = "Video-B cfg1"; + }; + video_b_des_cfg0 { + gpio-hog; + gpios = <6 GPIO_ACTIVE_HIGH>; + input; + line-name = "Video-B cfg0"; + }; + video_b_pwr_shdn { + gpio-hog; + gpios = <3 GPIO_ACTIVE_HIGH>; + output-high; + line-name = "Video-B PWR_SHDN"; + }; + video_b_cam_pwr0 { + gpio-hog; + gpios = <12 GPIO_ACTIVE_HIGH>; + output-high; + line-name = "Video-B PWR0"; + }; + video_b_cam_pwr1 { + gpio-hog; + gpios = <13 GPIO_ACTIVE_HIGH>; + output-high; + line-name = "Video-B PWR1"; + }; + video_b_cam_pwr2 { + gpio-hog; + gpios = <14 GPIO_ACTIVE_HIGH>; + output-high; + line-name = "Video-B PWR2"; + }; + video_b_cam_pwr3 { + gpio-hog; + gpios = <15 GPIO_ACTIVE_HIGH>; + output-high; + line-name = "Video-B PWR3"; + }; + video_b_des_shdn { + gpio-hog; + gpios = <4 GPIO_ACTIVE_HIGH>; + output-high; + line-name = "Video-B DES_SHDN"; + }; + video_b_des_led { + gpio-hog; + gpios = <7 GPIO_ACTIVE_HIGH>; + output-low; + line-name = "Video-B led"; + }; + }; + + video_b_ext1: max7325@5c { + compatible = "maxim,max7325"; + reg = <0x5c>; + gpio-controller; + #gpio-cells = <2>; + + video_b_des_cfg2 { + gpio-hog; + gpios = <4 GPIO_ACTIVE_HIGH>; + input; + line-name = "Video-B cfg2"; + }; + video_b_des_cfg1 { + gpio-hog; + gpios = <6 GPIO_ACTIVE_HIGH>; + input; + line-name = "Video-B cfg1"; + }; + video_b_des_cfg0 { + gpio-hog; + gpios = <7 GPIO_ACTIVE_HIGH>; + input; + line-name = "Video-B cfg0"; + }; + video_b_pwr_shdn { + gpio-hog; + gpios = <14 GPIO_ACTIVE_HIGH>; + output-high; + line-name = "Video-B PWR_SHDN"; + }; + video_b_cam_pwr0 { + gpio-hog; + gpios = <8 GPIO_ACTIVE_HIGH>; + output-high; + line-name = "Video-B PWR0"; + }; + video_b_cam_pwr1 { + gpio-hog; + gpios = <9 GPIO_ACTIVE_HIGH>; + output-high; + line-name = "Video-B PWR1"; + }; + video_b_cam_pwr2 { + gpio-hog; + gpios = <10 GPIO_ACTIVE_HIGH>; + output-high; + line-name = "Video-B PWR2"; + }; + video_b_cam_pwr3 { + gpio-hog; + gpios = <11 GPIO_ACTIVE_HIGH>; + output-high; + line-name = "Video-B PWR3"; + }; + video_b_des_shdn { + gpio-hog; + gpios = <13 GPIO_ACTIVE_HIGH>; + output-high; + line-name = "Video-B DES_SHDN"; + }; + video_b_led { + gpio-hog; + gpios = <12 GPIO_ACTIVE_HIGH>; + output-low; + line-name = "Video-B LED"; + }; + }; + }; + + i2c@4 { + #address-cells = <1>; + #size-cells = <0>; + reg = <4>; + /* Slot C (CN12) */ + }; + }; +}; + +&i2c4 { + i2cswitch4: pca9548@74 { + compatible = "nxp,pca9548"; + #address-cells = <1>; + #size-cells = <0>; + reg = <0x74>; + reset-gpios= <&gpio5 15 GPIO_ACTIVE_LOW>; + + i2c@0 { + #address-cells = <1>; + #size-cells = <0>; + reg = <0>; + /* FAN node - EMC2103 */ + fan_ctrl:ecm2103@2e { + compatible = "emc2103"; + reg = <0x2e>; + }; + }; + + i2c@1 { + #address-cells = <1>; + #size-cells = <0>; + reg = <1>; + /* Power nodes - 2 x TPS544x20 */ + }; + + i2c@2 { + #address-cells = <1>; + #size-cells = <0>; + reg = <2>; + /* CAN and power board nodes */ + + gpio_ext_pwr: pca9535@22 { + compatible = "nxp,pca9535"; + reg = <0x22>; + gpio-controller; + #gpio-cells = <2>; + interrupt-controller; + interrupt-parent = <&gpio1>; + interrupts = <25 IRQ_TYPE_EDGE_FALLING>; + + /* enable input DCDC after wake-up signal released */ + pwr_hold { + gpio-hog; + gpios = <11 GPIO_ACTIVE_HIGH>; + output-high; + line-name = "pwr_hold"; + }; + + /* CAN0 */ + can0_stby { + gpio-hog; + gpios = <4 GPIO_ACTIVE_HIGH>; + output-low; + line-name = "can0_stby"; + }; + can0_load { + gpio-hog; + gpios = <0 GPIO_ACTIVE_HIGH>; + output-low; + line-name = "can0_120R_load"; + }; + /* CAN1 */ + can1_stby { + gpio-hog; + gpios = <5 GPIO_ACTIVE_HIGH>; + output-low; + line-name = "can1_stby"; + }; + can1_load { + gpio-hog; + gpios = <1 GPIO_ACTIVE_HIGH>; + output-low; + line-name = "can1_120R_load"; + }; + /* CAN2 */ + can2_stby { + gpio-hog; + gpios = <6 GPIO_ACTIVE_HIGH>; + output-low; + line-name = "can2_stby"; + }; + can2_load { + gpio-hog; + gpios = <2 GPIO_ACTIVE_HIGH>; + output-low; + line-name = "can2_120R_load"; + }; + can2_rst { + gpio-hog; + gpios = <8 GPIO_ACTIVE_HIGH>; + output-high; + line-name = "can2_rst"; + }; + /* CAN3 */ + can3_stby { + gpio-hog; + gpios = <7 GPIO_ACTIVE_HIGH>; + output-low; + line-name = "can3_stby"; + }; + can3_load { + gpio-hog; + gpios = <3 GPIO_ACTIVE_HIGH>; + output-low; + line-name = "can3_120R_load"; + }; + can3_rst { + gpio-hog; + gpios = <9 GPIO_ACTIVE_HIGH>; + output-high; + line-name = "can3_rst"; + }; + }; + }; + + i2c@3 { + #address-cells = <1>; + #size-cells = <0>; + reg = <3>; + /* FPDLink output node - DS90UH947 */ + }; + + i2c@4 { + #address-cells = <1>; + #size-cells = <0>; + reg = <4>; + /* BCM switch node */ + }; + + i2c@5 { + #address-cells = <1>; + #size-cells = <0>; + reg = <5>; + /* LED board node(s) */ + + gpio_ext_led: pca9535@22 { + compatible = "nxp,pca9535"; + reg = <0x22>; + gpio-controller; + #gpio-cells = <2>; + + /* gpios 0..7 are used for indication LEDs, low-active */ + }; + }; + + i2c@6 { + #address-cells = <1>; + #size-cells = <0>; + reg = <6>; + /* M2 connector i2c node(s) */ + }; + + /* port 7 is not used */ + }; +}; + +&pcie_bus_clk { + clock-frequency = <100000000>; + status = "okay"; +}; + +&pciec0 { + status = "okay"; +}; + +&pciec1 { + status = "okay"; +}; + +&vin0 { + status = "okay"; + + ports { + #address-cells = <1>; + #size-cells = <0>; + + port@0 { + vin0ep0: endpoint { + csi,select = "csi40"; + virtual,channel = <0>; + data-lanes = <1 2 3 4>; + remote-endpoint = <&ov106xx_in0>; + }; + }; + port@1 { + csi0ep0: endpoint { + remote-endpoint = <&csi2_40_ep>; + }; + }; + port@2 { + vin0_max9286_des0ep0: endpoint@0 { + remote-endpoint = <&max9286_des0ep0>; + }; + vin0_ti964_des0ep0: endpoint@1 { + remote-endpoint = <&ti964_des0ep0>; + }; + vin0_ti954_des0ep0: endpoint@2 { + remote-endpoint = <&ti954_des0ep0>; + }; + }; + }; +}; + +&vin1 { + status = "okay"; + + ports { + #address-cells = <1>; + #size-cells = <0>; + + port@0 { + vin1ep0: endpoint { + csi,select = "csi40"; + virtual,channel = <1>; + data-lanes = <1 2 3 4>; + remote-endpoint = <&ov106xx_in1>; + }; + }; + port@1 { + csi0ep1: endpoint { + remote-endpoint = <&csi2_40_ep>; + }; + }; + port@2 { + vin1_max9286_des0ep1: endpoint@0 { + remote-endpoint = <&max9286_des0ep1>; + }; + vin1_ti964_des0ep1: endpoint@1 { + remote-endpoint = <&ti964_des0ep1>; + }; + vin1_ti954_des0ep1: endpoint@2 { + remote-endpoint = <&ti954_des0ep1>; + }; + }; + }; +}; + +&vin2 { + status = "okay"; + + ports { + #address-cells = <1>; + #size-cells = <0>; + + port@0 { + vin2ep0: endpoint { + csi,select = "csi40"; + virtual,channel = <2>; + data-lanes = <1 2 3 4>; + remote-endpoint = <&ov106xx_in2>; + }; + }; + port@1 { + csi0ep2: endpoint { + remote-endpoint = <&csi2_40_ep>; + }; + }; + port@2 { + vin2_max9286_des0ep2: endpoint@0 { + remote-endpoint = <&max9286_des0ep2>; + }; + vin2_ti964_des0ep2: endpoint@1 { + remote-endpoint = <&ti964_des0ep2>; + }; + }; + }; +}; + +&vin3 { + status = "okay"; + + ports { + #address-cells = <1>; + #size-cells = <0>; + + port@0 { + vin3ep0: endpoint { + csi,select = "csi40"; + virtual,channel = <3>; + data-lanes = <1 2 3 4>; + remote-endpoint = <&ov106xx_in3>; + }; + }; + port@1 { + csi0ep3: endpoint { + remote-endpoint = <&csi2_40_ep>; + }; + }; + port@2 { + vin3_max9286_des0ep3: endpoint@0 { + remote-endpoint = <&max9286_des0ep3>; + }; + vin3_ti964_des0ep3: endpoint@1 { + remote-endpoint = <&ti964_des0ep3>; + }; + }; + }; +}; + +&vin4 { + status = "okay"; + + ports { + #address-cells = <1>; + #size-cells = <0>; + + port@0 { + vin4ep0: endpoint { + csi,select = "csi41"; + virtual,channel = <0>; + remote-endpoint = <&ov106xx_in4>; + data-lanes = <1 2 3 4>; + }; + }; + port@1 { + csi2ep0: endpoint { + remote-endpoint = <&csi2_41_ep>; + }; + }; + port@2 { + vin4_max9286_des1ep0: endpoint@0 { + remote-endpoint = <&max9286_des1ep0>; + }; + vin4_ti964_des1ep0: endpoint@1 { + remote-endpoint = <&ti964_des1ep0>; + }; + vin4_ti954_des1ep0: endpoint@2 { + remote-endpoint = <&ti954_des1ep0>; + }; + }; + }; +}; + +&vin5 { + status = "okay"; + + ports { + #address-cells = <1>; + #size-cells = <0>; + + port@0 { + vin5ep0: endpoint@0 { + csi,select = "csi41"; + virtual,channel = <1>; + remote-endpoint = <&ov106xx_in5>; + data-lanes = <1 2 3 4>; + }; + }; + port@1 { + csi2ep1: endpoint { + remote-endpoint = <&csi2_41_ep>; + }; + }; + port@2 { + vin5_max9286_des1ep1: endpoint@0 { + remote-endpoint = <&max9286_des1ep1>; + }; + vin5_ti964_des1ep1: endpoint@1 { + remote-endpoint = <&ti964_des1ep1>; + }; + vin5_ti954_des1ep1: endpoint@2 { + remote-endpoint = <&ti954_des1ep1>; + }; + }; + }; +}; + +&vin6 { + status = "okay"; + + ports { + #address-cells = <1>; + #size-cells = <0>; + + port@0 { + vin6ep0: endpoint@0 { + csi,select = "csi41"; + virtual,channel = <2>; + remote-endpoint = <&ov106xx_in6>; + data-lanes = <1 2 3 4>; + }; + }; + port@1 { + csi2ep2: endpoint { + remote-endpoint = <&csi2_41_ep>; + }; + }; + port@2 { + vin6_max9286_des1ep2: endpoint@0 { + remote-endpoint = <&max9286_des1ep2>; + }; + vin6_ti964_des1ep2: endpoint@1 { + remote-endpoint = <&ti964_des1ep2>; + }; + }; + }; +}; + +&vin7 { + status = "okay"; + + ports { + #address-cells = <1>; + #size-cells = <0>; + + port@0 { + vin7ep0: endpoint@0 { + csi,select = "csi41"; + virtual,channel = <3>; + remote-endpoint = <&ov106xx_in7>; + data-lanes = <1 2 3 4>; + }; + }; + port@1 { + csi2ep3: endpoint { + remote-endpoint = <&csi2_41_ep>; + }; + }; + port@2 { + vin7_max9286_des1ep3: endpoint@0 { + remote-endpoint = <&max9286_des1ep3>; + }; + vin7_ti964_des1ep3: endpoint@1 { + remote-endpoint = <&ti964_des1ep3>; + }; + }; + }; +}; + +&csi2_40 { + status = "okay"; + + virtual,channel { + csi2_vc0 { + data,type = "ycbcr422"; + receive,vc = <0>; + }; + csi2_vc1 { + data,type = "ycbcr422"; + receive,vc = <1>; + }; + csi2_vc2 { + data,type = "ycbcr422"; + receive,vc = <2>; + }; + csi2_vc3 { + data,type = "ycbcr422"; + receive,vc = <3>; + }; + }; + + port { + #address-cells = <1>; + #size-cells = <0>; + + csi2_40_ep: endpoint { + clock-lanes = <0>; + data-lanes = <1 2 3 4>; + csi-rate = <300>; + }; + }; +}; + +&csi2_41 { + status = "okay"; + + virtual,channel { + csi2_vc0 { + data,type = "ycbcr422"; + receive,vc = <0>; + }; + csi2_vc1 { + data,type = "ycbcr422"; + receive,vc = <1>; + }; + csi2_vc2 { + data,type = "ycbcr422"; + receive,vc = <2>; + }; + csi2_vc3 { + data,type = "ycbcr422"; + receive,vc = <3>; + }; + }; + + port { + #address-cells = <1>; + #size-cells = <0>; + + csi2_41_ep: endpoint { + clock-lanes = <0>; + data-lanes = <1 2 3 4>; + csi-rate = <300>; + }; + }; +}; + +&rcar_sound { + pinctrl-0 = <&sound_clk_pins>; + + /* Multi DAI */ + #sound-dai-cells = <1>; +}; + +&sata { + status = "okay"; +}; + +&ssi1 { + /delete-property/shared-pin; +}; + +&avb { + /delete-property/phy-handle; + /delete-property/phy-gpios; + phy-mode = "rgmii"; + + /delete-node/ethernet-phy@0; + + fixed-link { + speed = <100>; + full-duplex; + }; +}; + +&msiof1 { + status = "disabled"; +}; + +&usb2_phy0 { + pinctrl-0 = <&usb0_pins>; + pinctrl-names = "default"; + + status = "okay"; +}; + +&xhci0 { + status = "okay"; +}; + +&hsusb { + status = "okay"; +}; + +&ehci0 { + status = "okay"; +}; + +&ohci0 { + status = "okay"; +}; + +&can0 { + pinctrl-0 = <&can0_pins>; + pinctrl-names = "default"; + status = "okay"; + + renesas,can-clock-select = <0x0>; +}; + +&can1 { + pinctrl-0 = <&can1_pins>; + pinctrl-names = "default"; + status = "okay"; + + renesas,can-clock-select = <0x0>; +}; + +&canfd { + pinctrl-0 = <&canfd0_pins &canfd1_pins>; + pinctrl-names = "default"; + status = "disabled"; + + renesas,can-clock-select = <0x0>; + + channel0 { + status = "okay"; + }; + + channel1 { + status = "okay"; + }; +}; + +/* uncomment to enable CN12 on VIN4-7 */ +//#include "ulcb-vb-cn12.dtsi" diff --git a/arch/arm64/boot/dts/renesas/r8a7795-h3ulcb-vb.dts b/arch/arm64/boot/dts/renesas/r8a7795-h3ulcb-vb.dts new file mode 100644 index 0000000..1263637 --- /dev/null +++ b/arch/arm64/boot/dts/renesas/r8a7795-h3ulcb-vb.dts @@ -0,0 +1,1787 @@ +/* + * Device Tree Source for the H3ULCB Videobox board + * + * Copyright (C) 2017 Renesas Electronics Corp. + * Copyright (C) 2017 Cogent Embedded, Inc. + * + * This file is licensed under the terms of the GNU General Public License + * version 2. This program is licensed "as is" without any warranty of any + * kind, whether express or implied. + */ + +#include "r8a7795-h3ulcb.dts" + +/ { + model = "Renesas H3ULCB Videobox board based on r8a7795"; + + leds { + compatible = "gpio-leds"; + + led5 { + gpios = <&gpio6 12 GPIO_ACTIVE_HIGH>; + }; + led6 { + gpios = <&gpio6 13 GPIO_ACTIVE_HIGH>; + }; + /* D13 - status 0 */ + led_ext00 { + gpios = <&gpio_ext_led 0 GPIO_ACTIVE_LOW>; + linux,default-trigger = "heartbeat"; + }; + /* D14 - status 1 */ + led_ext01 { + gpios = <&gpio_ext_led 1 GPIO_ACTIVE_LOW>; + linux,default-trigger = "mmc1"; + }; + /* D16 - HDMI1 */ + led_ext02 { + gpios = <&gpio_ext_led 2 GPIO_ACTIVE_LOW>; + }; + /* D18 - HDMI0 */ + led_ext03 { + gpios = <&gpio_ext_led 3 GPIO_ACTIVE_LOW>; + }; + /* D20 - USB3.0 - 0.1 */ + led_ext04 { + gpios = <&gpio_ext_led 4 GPIO_ACTIVE_LOW>; + }; + /* D21 - USB3.0 - 0.2 */ + led_ext05 { + gpios = <&gpio_ext_led 5 GPIO_ACTIVE_LOW>; + }; + /* D24 - USB3.0 - 1.1 */ + led6_ext06 { + gpios = <&gpio_ext_led 6 GPIO_ACTIVE_LOW>; + }; + /* D25 - USB3.0 - 1.2 */ + led_ext07 { + gpios = <&gpio_ext_led 7 GPIO_ACTIVE_LOW>; + }; + }; + + snd_clk: snd_clk { + compatible = "fixed-clock"; + #clock-cells = <0>; + clock-frequency = <24576000>; + clock-output-names = "scki"; + }; + + vccq_sdhi3: regulator@5 { + compatible = "regulator-fixed"; + + regulator-name = "SDHI3 VccQ"; + /* external voltage translator to 1.8V */ + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; + }; + + fpdlink_switch: regulator@8 { + compatible = "regulator-fixed"; + regulator-name = "fpdlink_on"; + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; + gpio = <&gpio1 20 0>; + enable-active-high; + regulator-always-on; + }; + + hub_reset: regulator@9 { + compatible = "regulator-fixed"; + regulator-name = "hub_reset"; + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; + gpio = <&gpio5 5 0>; + enable-active-high; + regulator-always-on; + }; + + hub_power: regulator@10 { + compatible = "regulator-fixed"; + regulator-name = "hub_power"; + regulator-min-microvolt = <5000000>; + regulator-max-microvolt = <5000000>; + gpio = <&gpio6 28 0>; + enable-active-high; + regulator-always-on; + }; + + /delete-node/sound; + + rsnd_ak4613: sound@0 { + pinctrl-0 = <&sound_0_pins>; + pinctrl-names = "default"; + compatible = "simple-audio-card"; + + simple-audio-card,format = "left_j"; + simple-audio-card,name = "ak4613"; + + simple-audio-card,bitclock-master = <&sndcpu>; + simple-audio-card,frame-master = <&sndcpu>; + + sndcpu: simple-audio-card,cpu@1 { + sound-dai = <&rcar_sound>; + }; + + sndcodec: simple-audio-card,codec@1 { + sound-dai = <&ak4613>; + }; + }; + + lvds-encoder { + compatible = "thine,thc63lvdm83d"; + + ports { + #address-cells = <1>; + #size-cells = <0>; + port@0 { + reg = <0>; + lvds_enc_in: endpoint { + remote-endpoint = <&du_out_lvds0>; + }; + }; + port@1 { + reg = <1>; + lvds_enc_out: endpoint { + remote-endpoint = <&lvds_in>; + }; + }; + }; + }; + + lvds { + compatible = "lvds-connector"; + + width-mm = <210>; + height-mm = <158>; + + panel-timing { + /* 1280x800 @60Hz */ + clock-frequency = <65000000>; + hactive = <1280>; + vactive = <800>; + hsync-len = <40>; + hfront-porch = <80>; + hback-porch = <40>; + vfront-porch = <14>; + vback-porch = <14>; + vsync-len = <4>; + }; + + port { + lvds_in: endpoint { + remote-endpoint = <&lvds_enc_out>; + }; + }; + }; + + hdmi1-out { + compatible = "hdmi-connector"; + type = "a"; + + port { + hdmi1_con: endpoint { + remote-endpoint = <&rcar_dw_hdmi1_out>; + }; + }; + }; + + excan_ref_clk: excan-ref-clock { + compatible = "fixed-clock"; + #clock-cells = <0>; + clock-frequency = <16000000>; + }; + + radio: si468x@0 { + compatible = "si,si468x-pcm"; + status = "okay"; + + #sound-dai-cells = <0>; + }; + + spi_gpio_sw { + compatible = "spi-gpio"; + #address-cells = <0x1>; + #size-cells = <0x0>; + gpio-sck = <&gpio0 8 GPIO_ACTIVE_HIGH>; + gpio-miso = <&gpio0 10 GPIO_ACTIVE_HIGH>; + gpio-mosi = <&gpio0 11 GPIO_ACTIVE_HIGH>; + cs-gpios = <&gpio0 9 GPIO_ACTIVE_HIGH>; + num-chipselects = <1>; + + spidev: spidev@0 { + compatible = "spidev", "spi-gpio"; + reg = <0>; + spi-max-frequency = <25000000>; + spi-cpha; + spi-cpol; + }; + }; + + spi_gpio_can { + compatible = "spi-gpio"; + #address-cells = <0x1>; + #size-cells = <0x0>; + gpio-sck = <&gpio1 2 GPIO_ACTIVE_HIGH>; + gpio-miso = <&gpio1 3 GPIO_ACTIVE_HIGH>; + gpio-mosi = <&gpio1 1 GPIO_ACTIVE_HIGH>; + cs-gpios = <&gpio1 0 GPIO_ACTIVE_HIGH + &gpio1 4 GPIO_ACTIVE_HIGH>; + num-chipselects = <2>; + + spican0: spidev@0 { + compatible = "microchip,mcp2515"; + reg = <0>; + clocks = <&excan_ref_clk>; + interrupt-parent = <&gpio0>; + interrupts = <15 GPIO_ACTIVE_LOW>; + spi-max-frequency = <10000000>; + }; + spican1: spidev@1 { + compatible = "microchip,mcp2515"; + reg = <1>; + clocks = <&excan_ref_clk>; + interrupt-parent = <&gpio1>; + interrupts = <5 GPIO_ACTIVE_LOW>; + spi-max-frequency = <10000000>; + }; + }; +}; + +&du { + ports { + port@1 { + endpoint { + remote-endpoint = <&rcar_dw_hdmi0_in>; + }; + }; + port@2 { + endpoint { + remote-endpoint = <&rcar_dw_hdmi1_in>; + }; + }; + port@3 { + endpoint { + remote-endpoint = <&lvds_enc_in>; + }; + }; + }; +}; + +&hdmi1 { + status = "okay"; + + ports { + #address-cells = <1>; + #size-cells = <0>; + port@0 { + reg = <0>; + rcar_dw_hdmi1_in: endpoint { + remote-endpoint = <&du_out_hdmi1>; + }; + }; + port@1 { + reg = <1>; + rcar_dw_hdmi1_out: endpoint { + remote-endpoint = <&hdmi1_con>; + }; + }; + }; +}; + +&pfc { + hscif4_pins: hscif4 { + groups = "hscif4_data_a", "hscif4_ctrl"; + function = "hscif4"; + }; + + sdhi3_pins_3v3: sd3_3v3 { + groups = "sdhi3_data4", "sdhi3_ctrl"; + function = "sdhi3"; + power-source = <3300>; + }; + + /delete-node/sound; + + sound_0_pins: sound1 { + groups = "ssi01239_ctrl", "ssi0_data", "ssi1_data_a"; + function = "ssi"; + }; + + usb0_pins: usb0 { + groups = "usb0"; + function = "usb0"; + }; + + can0_pins: can0 { + groups = "can0_data_a"; + function = "can0"; + }; + + can1_pins: can1 { + groups = "can1_data"; + function = "can1"; + }; + + canfd0_pins: canfd0 { + groups = "canfd0_data_a"; + function = "canfd0"; + }; + + canfd1_pins: canfd1 { + groups = "canfd1_data"; + function = "canfd1"; + }; +}; + +&gpio0 { + video_a_irq { + gpio-hog; + gpios = <12 GPIO_ACTIVE_HIGH>; + input; + line-name = "Video-A irq"; + }; + + video_b_irq { + gpio-hog; + gpios = <13 GPIO_ACTIVE_HIGH>; + input; + line-name = "Video-B irq"; + }; + + video_c_irq { + gpio-hog; + gpios = <14 GPIO_ACTIVE_HIGH>; + input; + line-name = "Video-C irq"; + }; +}; + +&gpio1 { + gpioext_4_22_irq { + gpio-hog; + gpios = <25 GPIO_ACTIVE_HIGH>; + input; + line-name = "0x22@i2c4 irq"; + }; + pcie_disable { + gpio-hog; + gpios = <11 GPIO_ACTIVE_HIGH>; + output-high; + line-name = "mPCIe W_DISABLE"; + }; + m2_sleep { + gpio-hog; + gpios = <6 GPIO_ACTIVE_HIGH>; + output-high; + line-name = "M.2 SLEEP#"; + }; + m2_pres { + gpio-hog; + gpios = <7 GPIO_ACTIVE_HIGH>; + input; + line-name = "M.2 Present"; + }; + m2_pcie_det { + gpio-hog; + gpios = <18 GPIO_ACTIVE_HIGH>; + input; + line-name = "M.2 PCIe detected"; + }; + m2_usb_det { + gpio-hog; + gpios = <19 GPIO_ACTIVE_HIGH>; + input; + line-name = "M.2 USB30 detected"; + }; + m2_usb_det { + gpio-hog; + gpios = <27 GPIO_ACTIVE_HIGH>; + input; + line-name = "M.2 SSD detected"; + }; + eth_phy_reset { + gpio-hog; + gpios = <16 GPIO_ACTIVE_HIGH>; + output-high; + line-name = "BR phy reset"; + }; + eth_sw_reset { + gpio-hog; + gpios = <17 GPIO_ACTIVE_HIGH>; + output-high; + line-name = "BR switch reset"; + }; +}; + +&gpio2 { + m2_wake { + gpio-hog; + gpios = <1 GPIO_ACTIVE_HIGH>; + input; + line-name = "M.2 WAKE#"; + }; + m2_pcie_en { + gpio-hog; + gpios = <4 GPIO_ACTIVE_HIGH>; + output-high; + line-name = "M.2 PCIe enable"; + }; +}; + +&gpio3 { + m2_power_off { + gpio-hog; + gpios = <15 GPIO_ACTIVE_HIGH>; + output-high; + line-name = "M.2 FULL_CARD_POWER_OFF#"; + }; +}; + +&gpio6 { + pcie_wake { + gpio-hog; + gpios = <4 GPIO_ACTIVE_HIGH>; + input; + line-name = "mPCIe WAKE#"; + }; + pcie_clkreq { + gpio-hog; + gpios = <10 GPIO_ACTIVE_HIGH>; + input; + line-name = "mPCIe CLKREQ#"; + }; + m2_rst { + gpio-hog; + gpios = <21 GPIO_ACTIVE_HIGH>; + output-high; + line-name = "M.2 RESET#"; + }; +}; + +&hscif4 { + pinctrl-0 = <&hscif4_pins>; + pinctrl-names = "default"; + ctsrts; + + status = "okay"; +}; + +&i2c2 { + clock-frequency = <400000>; + + i2cswitch2: pca9548@74 { + compatible = "nxp,pca9548"; + #address-cells = <1>; + #size-cells = <0>; + reg = <0x74>; + reset-gpios = <&gpio6 5 GPIO_ACTIVE_LOW>; + + i2c@0 { + #address-cells = <1>; + #size-cells = <0>; + reg = <0>; + /* USB3.0 HUB node(s) */ + }; + + i2c@6 { + #address-cells = <1>; + #size-cells = <0>; + reg = <6>; + /* PCIe node(s) */ + }; + + i2c@7 { + #address-cells = <1>; + #size-cells = <0>; + reg = <7>; + /* Slot A (CN10) */ + + ov106xx@0 { + compatible = "ovti,ov106xx"; + reg = <0x60>; + + port@0 { + ov106xx_in0: endpoint { + clock-lanes = <0>; + data-lanes = <1 2 3 4>; + remote-endpoint = <&vin0ep0>; + }; + }; + port@1 { + ov106xx_max9286_des0ep0: endpoint@0 { + remote-endpoint = <&max9286_des0ep0>; + }; + ov106xx_ti964_des0ep0: endpoint@1 { + remote-endpoint = <&ti964_des0ep0>; + }; + ov106xx_ti954_des0ep0: endpoint@2 { + remote-endpoint = <&ti954_des0ep0>; + }; + }; + }; + + ov106xx@1 { + compatible = "ovti,ov106xx"; + reg = <0x61>; + + port@0 { + ov106xx_in1: endpoint { + clock-lanes = <0>; + data-lanes = <1 2 3 4>; + remote-endpoint = <&vin1ep0>; + }; + }; + port@1 { + ov106xx_max9286_des0ep1: endpoint@0 { + remote-endpoint = <&max9286_des0ep1>; + }; + ov106xx_ti964_des0ep1: endpoint@1 { + remote-endpoint = <&ti964_des0ep1>; + }; + ov106xx_ti954_des0ep1: endpoint@2 { + remote-endpoint = <&ti954_des0ep1>; + }; + }; + }; + + ov106xx@2 { + compatible = "ovti,ov106xx"; + reg = <0x62>; + + port@0 { + ov106xx_in2: endpoint { + clock-lanes = <0>; + data-lanes = <1 2 3 4>; + remote-endpoint = <&vin2ep0>; + }; + }; + port@1 { + ov106xx_max9286_des0ep2: endpoint@0 { + remote-endpoint = <&max9286_des0ep2>; + }; + ov106xx_ti964_des0ep2: endpoint@1 { + remote-endpoint = <&ti964_des0ep2>; + }; + }; + }; + + ov106xx@3 { + compatible = "ovti,ov106xx"; + reg = <0x63>; + + port@0 { + ov106xx_in3: endpoint { + clock-lanes = <0>; + data-lanes = <1 2 3 4>; + remote-endpoint = <&vin3ep0>; + }; + }; + port@1 { + ov106xx_max9286_des0ep3: endpoint@0 { + remote-endpoint = <&max9286_des0ep3>; + }; + ov106xx_ti964_des0ep3: endpoint@1 { + remote-endpoint = <&ti964_des0ep3>; + }; + }; + }; + + /* DS90UB964 @ 0x3a */ + ti964-ti9x3@0 { + compatible = "ti,ti964-ti9x3"; + reg = <0x3a>; + ti,sensor_delay = <350>; + ti,links = <4>; + ti,lanes = <4>; + ti,forwarding-mode = "round-robin"; + ti,cable-mode = "stp"; + + port@0 { + ti964_des0ep0: endpoint@0 { + ti9x3-addr = <0x0c>; + dvp-order = <0>; + remote-endpoint = <&ov106xx_in0>; + }; + ti964_des0ep1: endpoint@1 { + ti9x3-addr = <0x0d>; + dvp-order = <0>; + remote-endpoint = <&ov106xx_in1>; + }; + ti964_des0ep2: endpoint@2 { + ti9x3-addr = <0x0e>; + dvp-order = <0>; + remote-endpoint = <&ov106xx_in2>; + }; + ti964_des0ep3: endpoint@3 { + ti9x3-addr = <0x0f>; + dvp-order = <0>; + remote-endpoint = <&ov106xx_in3>; + }; + }; + port@1 { + ti964_csi0ep0: endpoint { + csi-rate = <1450>; + remote-endpoint = <&csi2_40_ep>; + }; + }; + }; + + /* DS90UB954 @ 0x38 */ + ti954-ti9x3@0 { + compatible = "ti,ti954-ti9x3"; + reg = <0x38>; + /* gpios = <&video_a_ext1 10 GPIO_ACTIVE_HIGH>; */ + ti,sensor_delay = <350>; + ti,links = <2>; + ti,lanes = <4>; + ti,forwarding-mode = "round-robin"; + ti,cable-mode = "stp"; + + port@0 { + ti954_des0ep0: endpoint@0 { + ti9x3-addr = <0x0c>; + dvp-order = <0>; + remote-endpoint = <&ov106xx_in0>; + }; + ti954_des0ep1: endpoint@1 { + ti9x3-addr = <0x0d>; + dvp-order = <0>; + remote-endpoint = <&ov106xx_in1>; + }; + }; + port@1 { + ti954_csi0ep0: endpoint { + csi-rate = <1450>; + remote-endpoint = <&csi2_40_ep>; + }; + }; + }; + + /* MAX9286 @ 0x2c */ + max9286-max9271@0 { + compatible = "maxim,max9286-max9271"; + reg = <0x2c>; + maxim,sensor_delay = <350>; + maxim,links = <4>; + maxim,lanes = <4>; + maxim,resetb-gpio = <1>; + maxim,fsync-mode = "automatic"; + maxim,timeout = <100>; + + port@0 { + max9286_des0ep0: endpoint@0 { + max9271-addr = <0x50>; + dvp-order = <1>; + remote-endpoint = <&ov106xx_in0>; + }; + max9286_des0ep1: endpoint@1 { + max9271-addr = <0x51>; + dvp-order = <1>; + remote-endpoint = <&ov106xx_in1>; + }; + max9286_des0ep2: endpoint@2 { + max9271-addr = <0x52>; + dvp-order = <1>; + remote-endpoint = <&ov106xx_in2>; + }; + max9286_des0ep3: endpoint@3 { + max9271-addr = <0x53>; + dvp-order = <1>; + remote-endpoint = <&ov106xx_in3>; + }; + }; + port@1 { + max9286_csi0ep0: endpoint { + csi-rate = <700>; + remote-endpoint = <&csi2_40_ep>; + }; + }; + }; + }; + + i2c@2 { + #address-cells = <1>; + #size-cells = <0>; + reg = <2>; + /* Slot B (CN11) */ + + ov106xx@4 { + compatible = "ovti,ov106xx"; + reg = <0x64>; + + port@0 { + ov106xx_in4: endpoint { + clock-lanes = <0>; + data-lanes = <1 2 3 4>; + remote-endpoint = <&vin4ep0>; + }; + }; + port@1 { + ov106xx_max9286_des1ep0: endpoint@0 { + remote-endpoint = <&max9286_des1ep0>; + }; + ov106xx_ti964_des1ep0: endpoint@1 { + remote-endpoint = <&ti964_des1ep0>; + }; + ov106xx_ti954_des1ep0: endpoint@2 { + remote-endpoint = <&ti954_des1ep0>; + }; + }; + }; + + ov106xx@5 { + compatible = "ovti,ov106xx"; + reg = <0x65>; + + port@0 { + ov106xx_in5: endpoint { + clock-lanes = <0>; + data-lanes = <1 2 3 4>; + remote-endpoint = <&vin5ep0>; + }; + }; + port@1 { + ov106xx_max9286_des1ep1: endpoint@0 { + remote-endpoint = <&max9286_des1ep1>; + }; + ov106xx_ti964_des1ep1: endpoint@1 { + remote-endpoint = <&ti964_des1ep1>; + }; + ov106xx_ti954_des1ep1: endpoint@2 { + remote-endpoint = <&ti954_des1ep1>; + }; + }; + }; + + ov106xx@6 { + compatible = "ovti,ov106xx"; + reg = <0x66>; + + port@0 { + ov106xx_in6: endpoint { + clock-lanes = <0>; + data-lanes = <1 2 3 4>; + remote-endpoint = <&vin6ep0>; + }; + }; + port@1 { + ov106xx_max9286_des1ep2: endpoint@0 { + remote-endpoint = <&max9286_des1ep2>; + }; + ov106xx_ti964_des1ep2: endpoint@1 { + remote-endpoint = <&ti964_des1ep2>; + }; + }; + }; + + ov106xx@7 { + compatible = "ovti,ov106xx"; + reg = <0x67>; + + port@0 { + ov106xx_in7: endpoint { + clock-lanes = <0>; + data-lanes = <1 2 3 4>; + remote-endpoint = <&vin7ep0>; + }; + }; + port@1 { + ov106xx_max9286_des1ep3: endpoint@0 { + remote-endpoint = <&max9286_des1ep3>; + }; + ov106xx_ti964_des1ep3: endpoint@1 { + remote-endpoint = <&ti964_des1ep3>; + }; + }; + }; + + /* DS90UB964 @ 0x3a */ + ti964-ti9x3@1 { + compatible = "ti,ti964-ti9x3"; + reg = <0x3a>; + ti,sensor_delay = <350>; + ti,links = <4>; + ti,lanes = <4>; + ti,forwarding-mode = "round-robin"; + ti,cable-mode = "stp"; + + port@0 { + ti964_des1ep0: endpoint@0 { + ti9x3-addr = <0x0c>; + dvp-order = <0>; + remote-endpoint = <&ov106xx_in4>; + }; + ti964_des1ep1: endpoint@1 { + ti9x3-addr = <0x0d>; + dvp-order = <0>; + remote-endpoint = <&ov106xx_in5>; + }; + ti964_des1ep2: endpoint@2 { + ti9x3-addr = <0x0e>; + dvp-order = <0>; + remote-endpoint = <&ov106xx_in6>; + }; + ti964_des1ep3: endpoint@3 { + ti9x3-addr = <0x0f>; + dvp-order = <0>; + remote-endpoint = <&ov106xx_in7>; + }; + }; + port@1 { + ti964_csi2ep0: endpoint { + csi-rate = <1450>; + remote-endpoint = <&csi2_41_ep>; + }; + }; + }; + + /* DS90UB954 @ 0x38 */ + ti954-ti9x3@1 { + compatible = "ti,ti954-ti9x3"; + reg = <0x38>; + /* gpios = <&video_b_ext1 10 GPIO_ACTIVE_HIGH>; */ + ti,sensor_delay = <350>; + ti,links = <2>; + ti,lanes = <4>; + ti,forwarding-mode = "round-robin"; + ti,cable-mode = "stp"; + + port@0 { + ti954_des1ep0: endpoint@0 { + ti9x3-addr = <0x0c>; + dvp-order = <0>; + remote-endpoint = <&ov106xx_in4>; + }; + ti954_des1ep1: endpoint@1 { + ti9x3-addr = <0x0d>; + dvp-order = <0>; + remote-endpoint = <&ov106xx_in5>; + }; + }; + port@1 { + ti954_csi2ep0: endpoint { + csi-rate = <1450>; + remote-endpoint = <&csi2_41_ep>; + }; + }; + }; + + /* MAX9286 @ 0x2c */ + max9286-max9271@1 { + compatible = "maxim,max9286-max9271"; + reg = <0x2c>; + maxim,sensor_delay = <350>; + maxim,links = <4>; + maxim,lanes = <4>; + maxim,resetb-gpio = <1>; + maxim,fsync-mode = "automatic"; + maxim,timeout = <100>; + + port@0 { + max9286_des1ep0: endpoint@0 { + max9271-addr = <0x50>; + dvp-order = <1>; + remote-endpoint = <&ov106xx_in4>; + }; + max9286_des1ep1: endpoint@1 { + max9271-addr = <0x51>; + dvp-order = <1>; + remote-endpoint = <&ov106xx_in5>; + }; + max9286_des1ep2: endpoint@2 { + max9271-addr = <0x52>; + dvp-order = <1>; + remote-endpoint = <&ov106xx_in6>; + }; + max9286_des1ep3: endpoint@3 { + max9271-addr = <0x53>; + dvp-order = <1>; + remote-endpoint = <&ov106xx_in7>; + }; + }; + port@1 { + max9286_csi2ep0: endpoint { + csi-rate = <700>; + remote-endpoint = <&csi2_41_ep>; + }; + }; + }; + }; + + i2c@3 { + #address-cells = <1>; + #size-cells = <0>; + reg = <3>; + /* Slot C (CN12) */ + }; + + i2c@1 { + #address-cells = <1>; + #size-cells = <0>; + reg = <1>; + /* Slot A (CN10) */ + + video_a_ext0: pca9535@26 { + compatible = "nxp,pca9535"; + reg = <0x26>; + gpio-controller; + #gpio-cells = <2>; + + video_a_des_cfg1 { + gpio-hog; + gpios = <5 GPIO_ACTIVE_HIGH>; + input; + line-name = "Video-A cfg1"; + }; + video_a_des_cfg0 { + gpio-hog; + gpios = <6 GPIO_ACTIVE_HIGH>; + input; + line-name = "Video-A cfg0"; + }; + video_a_pwr_shdn { + gpio-hog; + gpios = <3 GPIO_ACTIVE_HIGH>; + output-high; + line-name = "Video-A PWR_SHDN"; + }; + video_a_cam_pwr0 { + gpio-hog; + gpios = <12 GPIO_ACTIVE_HIGH>; + output-high; + line-name = "Video-A PWR0"; + }; + video_a_cam_pwr1 { + gpio-hog; + gpios = <13 GPIO_ACTIVE_HIGH>; + output-high; + line-name = "Video-A PWR1"; + }; + video_a_cam_pwr2 { + gpio-hog; + gpios = <14 GPIO_ACTIVE_HIGH>; + output-high; + line-name = "Video-A PWR2"; + }; + video_a_cam_pwr3 { + gpio-hog; + gpios = <15 GPIO_ACTIVE_HIGH>; + output-high; + line-name = "Video-A PWR3"; + }; + video_a_des_shdn { + gpio-hog; + gpios = <4 GPIO_ACTIVE_HIGH>; + output-high; + line-name = "Video-A DES_SHDN"; + }; + video_a_des_led { + gpio-hog; + gpios = <7 GPIO_ACTIVE_HIGH>; + output-low; + line-name = "Video-A led"; + }; + }; + + video_a_ext1: max7325@5c { + compatible = "maxim,max7325"; + reg = <0x5c>; + gpio-controller; + #gpio-cells = <2>; + + video_a_des_cfg2 { + gpio-hog; + gpios = <4 GPIO_ACTIVE_HIGH>; + input; + line-name = "Video-A cfg2"; + }; + video_a_des_cfg1 { + gpio-hog; + gpios = <6 GPIO_ACTIVE_HIGH>; + input; + line-name = "Video-A cfg1"; + }; + video_a_des_cfg0 { + gpio-hog; + gpios = <7 GPIO_ACTIVE_HIGH>; + input; + line-name = "Video-A cfg0"; + }; + video_a_pwr_shdn { + gpio-hog; + gpios = <14 GPIO_ACTIVE_HIGH>; + output-high; + line-name = "Video-A PWR_SHDN"; + }; + video_a_cam_pwr0 { + gpio-hog; + gpios = <8 GPIO_ACTIVE_HIGH>; + output-high; + line-name = "Video-A PWR0"; + }; + video_a_cam_pwr1 { + gpio-hog; + gpios = <9 GPIO_ACTIVE_HIGH>; + output-high; + line-name = "Video-A PWR1"; + }; + video_a_cam_pwr2 { + gpio-hog; + gpios = <10 GPIO_ACTIVE_HIGH>; + output-high; + line-name = "Video-A PWR2"; + }; + video_a_cam_pwr3 { + gpio-hog; + gpios = <11 GPIO_ACTIVE_HIGH>; + output-high; + line-name = "Video-A PWR3"; + }; + video_a_des_shdn { + gpio-hog; + gpios = <13 GPIO_ACTIVE_HIGH>; + output-high; + line-name = "Video-A DES_SHDN"; + }; + video_a_led { + gpio-hog; + gpios = <12 GPIO_ACTIVE_HIGH>; + output-low; + line-name = "Video-A LED"; + }; + }; + }; + + i2c@5 { + #address-cells = <1>; + #size-cells = <0>; + reg = <5>; + /* Slot B (CN11) */ + + video_b_ext0: pca9535@26 { + compatible = "nxp,pca9535"; + reg = <0x26>; + gpio-controller; + #gpio-cells = <2>; + + video_b_des_cfg1 { + gpio-hog; + gpios = <5 GPIO_ACTIVE_HIGH>; + input; + line-name = "Video-B cfg1"; + }; + video_b_des_cfg0 { + gpio-hog; + gpios = <6 GPIO_ACTIVE_HIGH>; + input; + line-name = "Video-B cfg0"; + }; + video_b_pwr_shdn { + gpio-hog; + gpios = <3 GPIO_ACTIVE_HIGH>; + output-high; + line-name = "Video-B PWR_SHDN"; + }; + video_b_cam_pwr0 { + gpio-hog; + gpios = <12 GPIO_ACTIVE_HIGH>; + output-high; + line-name = "Video-B PWR0"; + }; + video_b_cam_pwr1 { + gpio-hog; + gpios = <13 GPIO_ACTIVE_HIGH>; + output-high; + line-name = "Video-B PWR1"; + }; + video_b_cam_pwr2 { + gpio-hog; + gpios = <14 GPIO_ACTIVE_HIGH>; + output-high; + line-name = "Video-B PWR2"; + }; + video_b_cam_pwr3 { + gpio-hog; + gpios = <15 GPIO_ACTIVE_HIGH>; + output-high; + line-name = "Video-B PWR3"; + }; + video_b_des_shdn { + gpio-hog; + gpios = <4 GPIO_ACTIVE_HIGH>; + output-high; + line-name = "Video-B DES_SHDN"; + }; + video_b_des_led { + gpio-hog; + gpios = <7 GPIO_ACTIVE_HIGH>; + output-low; + line-name = "Video-B led"; + }; + }; + + video_b_ext1: max7325@5c { + compatible = "maxim,max7325"; + reg = <0x5c>; + gpio-controller; + #gpio-cells = <2>; + + video_b_des_cfg2 { + gpio-hog; + gpios = <4 GPIO_ACTIVE_HIGH>; + input; + line-name = "Video-B cfg2"; + }; + video_b_des_cfg1 { + gpio-hog; + gpios = <6 GPIO_ACTIVE_HIGH>; + input; + line-name = "Video-B cfg1"; + }; + video_b_des_cfg0 { + gpio-hog; + gpios = <7 GPIO_ACTIVE_HIGH>; + input; + line-name = "Video-B cfg0"; + }; + video_b_pwr_shdn { + gpio-hog; + gpios = <14 GPIO_ACTIVE_HIGH>; + output-high; + line-name = "Video-B PWR_SHDN"; + }; + video_b_cam_pwr0 { + gpio-hog; + gpios = <8 GPIO_ACTIVE_HIGH>; + output-high; + line-name = "Video-B PWR0"; + }; + video_b_cam_pwr1 { + gpio-hog; + gpios = <9 GPIO_ACTIVE_HIGH>; + output-high; + line-name = "Video-B PWR1"; + }; + video_b_cam_pwr2 { + gpio-hog; + gpios = <10 GPIO_ACTIVE_HIGH>; + output-high; + line-name = "Video-B PWR2"; + }; + video_b_cam_pwr3 { + gpio-hog; + gpios = <11 GPIO_ACTIVE_HIGH>; + output-high; + line-name = "Video-B PWR3"; + }; + video_b_des_shdn { + gpio-hog; + gpios = <13 GPIO_ACTIVE_HIGH>; + output-high; + line-name = "Video-B DES_SHDN"; + }; + video_b_led { + gpio-hog; + gpios = <12 GPIO_ACTIVE_HIGH>; + output-low; + line-name = "Video-B LED"; + }; + }; + }; + + i2c@4 { + #address-cells = <1>; + #size-cells = <0>; + reg = <4>; + /* Slot C (CN12) */ + }; + }; +}; + +&i2c4 { + i2cswitch4: pca9548@74 { + compatible = "nxp,pca9548"; + #address-cells = <1>; + #size-cells = <0>; + reg = <0x74>; + reset-gpios= <&gpio5 15 GPIO_ACTIVE_LOW>; + + i2c@0 { + #address-cells = <1>; + #size-cells = <0>; + reg = <0>; + /* FAN node - EMC2103 */ + fan_ctrl:ecm2103@2e { + compatible = "emc2103"; + reg = <0x2e>; + }; + }; + + i2c@1 { + #address-cells = <1>; + #size-cells = <0>; + reg = <1>; + /* Power nodes - 2 x TPS544x20 */ + }; + + i2c@2 { + #address-cells = <1>; + #size-cells = <0>; + reg = <2>; + /* CAN and power board nodes */ + + gpio_ext_pwr: pca9535@22 { + compatible = "nxp,pca9535"; + reg = <0x22>; + gpio-controller; + #gpio-cells = <2>; + interrupt-controller; + interrupt-parent = <&gpio1>; + interrupts = <25 IRQ_TYPE_EDGE_FALLING>; + + /* enable input DCDC after wake-up signal released */ + pwr_hold { + gpio-hog; + gpios = <11 GPIO_ACTIVE_HIGH>; + output-high; + line-name = "pwr_hold"; + }; + + /* CAN0 */ + can0_stby { + gpio-hog; + gpios = <4 GPIO_ACTIVE_HIGH>; + output-low; + line-name = "can0_stby"; + }; + can0_load { + gpio-hog; + gpios = <0 GPIO_ACTIVE_HIGH>; + output-low; + line-name = "can0_120R_load"; + }; + /* CAN1 */ + can1_stby { + gpio-hog; + gpios = <5 GPIO_ACTIVE_HIGH>; + output-low; + line-name = "can1_stby"; + }; + can1_load { + gpio-hog; + gpios = <1 GPIO_ACTIVE_HIGH>; + output-low; + line-name = "can1_120R_load"; + }; + /* CAN2 */ + can2_stby { + gpio-hog; + gpios = <6 GPIO_ACTIVE_HIGH>; + output-low; + line-name = "can2_stby"; + }; + can2_load { + gpio-hog; + gpios = <2 GPIO_ACTIVE_HIGH>; + output-low; + line-name = "can2_120R_load"; + }; + can2_rst { + gpio-hog; + gpios = <8 GPIO_ACTIVE_HIGH>; + output-high; + line-name = "can2_rst"; + }; + /* CAN3 */ + can3_stby { + gpio-hog; + gpios = <7 GPIO_ACTIVE_HIGH>; + output-low; + line-name = "can3_stby"; + }; + can3_load { + gpio-hog; + gpios = <3 GPIO_ACTIVE_HIGH>; + output-low; + line-name = "can3_120R_load"; + }; + can3_rst { + gpio-hog; + gpios = <9 GPIO_ACTIVE_HIGH>; + output-high; + line-name = "can3_rst"; + }; + }; + }; + + i2c@3 { + #address-cells = <1>; + #size-cells = <0>; + reg = <3>; + /* FPDLink output node - DS90UH947 */ + }; + + i2c@4 { + #address-cells = <1>; + #size-cells = <0>; + reg = <4>; + /* BCM switch node */ + }; + + i2c@5 { + #address-cells = <1>; + #size-cells = <0>; + reg = <5>; + /* LED board node(s) */ + + gpio_ext_led: pca9535@22 { + compatible = "nxp,pca9535"; + reg = <0x22>; + gpio-controller; + #gpio-cells = <2>; + + /* gpios 0..7 are used for indication LEDs, low-active */ + }; + }; + + i2c@6 { + #address-cells = <1>; + #size-cells = <0>; + reg = <6>; + /* M2 connector i2c node(s) */ + }; + + /* port 7 is not used */ + }; +}; + +&pcie_bus_clk { + clock-frequency = <100000000>; + status = "okay"; +}; + +&pciec0 { + status = "okay"; +}; + +&pciec1 { + status = "okay"; +}; + +&vin0 { + status = "okay"; + + ports { + #address-cells = <1>; + #size-cells = <0>; + + port@0 { + vin0ep0: endpoint { + csi,select = "csi40"; + virtual,channel = <0>; + data-lanes = <1 2 3 4>; + remote-endpoint = <&ov106xx_in0>; + }; + }; + port@1 { + csi0ep0: endpoint { + remote-endpoint = <&csi2_40_ep>; + }; + }; + port@2 { + vin0_max9286_des0ep0: endpoint@0 { + remote-endpoint = <&max9286_des0ep0>; + }; + vin0_ti964_des0ep0: endpoint@1 { + remote-endpoint = <&ti964_des0ep0>; + }; + vin0_ti954_des0ep0: endpoint@2 { + remote-endpoint = <&ti954_des0ep0>; + }; + }; + }; +}; + +&vin1 { + status = "okay"; + + ports { + #address-cells = <1>; + #size-cells = <0>; + + port@0 { + vin1ep0: endpoint { + csi,select = "csi40"; + virtual,channel = <1>; + data-lanes = <1 2 3 4>; + remote-endpoint = <&ov106xx_in1>; + }; + }; + port@1 { + csi0ep1: endpoint { + remote-endpoint = <&csi2_40_ep>; + }; + }; + port@2 { + vin1_max9286_des0ep1: endpoint@0 { + remote-endpoint = <&max9286_des0ep1>; + }; + vin1_ti964_des0ep1: endpoint@1 { + remote-endpoint = <&ti964_des0ep1>; + }; + vin1_ti954_des0ep1: endpoint@2 { + remote-endpoint = <&ti954_des0ep1>; + }; + }; + }; +}; + +&vin2 { + status = "okay"; + + ports { + #address-cells = <1>; + #size-cells = <0>; + + port@0 { + vin2ep0: endpoint { + csi,select = "csi40"; + virtual,channel = <2>; + data-lanes = <1 2 3 4>; + remote-endpoint = <&ov106xx_in2>; + }; + }; + port@1 { + csi0ep2: endpoint { + remote-endpoint = <&csi2_40_ep>; + }; + }; + port@2 { + vin2_max9286_des0ep2: endpoint@0 { + remote-endpoint = <&max9286_des0ep2>; + }; + vin2_ti964_des0ep2: endpoint@1 { + remote-endpoint = <&ti964_des0ep2>; + }; + }; + }; +}; + +&vin3 { + status = "okay"; + + ports { + #address-cells = <1>; + #size-cells = <0>; + + port@0 { + vin3ep0: endpoint { + csi,select = "csi40"; + virtual,channel = <3>; + data-lanes = <1 2 3 4>; + remote-endpoint = <&ov106xx_in3>; + }; + }; + port@1 { + csi0ep3: endpoint { + remote-endpoint = <&csi2_40_ep>; + }; + }; + port@2 { + vin3_max9286_des0ep3: endpoint@0 { + remote-endpoint = <&max9286_des0ep3>; + }; + vin3_ti964_des0ep3: endpoint@1 { + remote-endpoint = <&ti964_des0ep3>; + }; + }; + }; +}; + +&vin4 { + status = "okay"; + + ports { + #address-cells = <1>; + #size-cells = <0>; + + port@0 { + vin4ep0: endpoint { + csi,select = "csi41"; + virtual,channel = <0>; + remote-endpoint = <&ov106xx_in4>; + data-lanes = <1 2 3 4>; + }; + }; + port@1 { + csi2ep0: endpoint { + remote-endpoint = <&csi2_41_ep>; + }; + }; + port@2 { + vin4_max9286_des1ep0: endpoint@0 { + remote-endpoint = <&max9286_des1ep0>; + }; + vin4_ti964_des1ep0: endpoint@1 { + remote-endpoint = <&ti964_des1ep0>; + }; + vin4_ti954_des1ep0: endpoint@2 { + remote-endpoint = <&ti954_des1ep0>; + }; + }; + }; +}; + +&vin5 { + status = "okay"; + + ports { + #address-cells = <1>; + #size-cells = <0>; + + port@0 { + vin5ep0: endpoint@0 { + csi,select = "csi41"; + virtual,channel = <1>; + remote-endpoint = <&ov106xx_in5>; + data-lanes = <1 2 3 4>; + }; + }; + port@1 { + csi2ep1: endpoint { + remote-endpoint = <&csi2_41_ep>; + }; + }; + port@2 { + vin5_max9286_des1ep1: endpoint@0 { + remote-endpoint = <&max9286_des1ep1>; + }; + vin5_ti964_des1ep1: endpoint@1 { + remote-endpoint = <&ti964_des1ep1>; + }; + vin5_ti954_des1ep1: endpoint@2 { + remote-endpoint = <&ti954_des1ep1>; + }; + }; + }; +}; + +&vin6 { + status = "okay"; + + ports { + #address-cells = <1>; + #size-cells = <0>; + + port@0 { + vin6ep0: endpoint@0 { + csi,select = "csi41"; + virtual,channel = <2>; + remote-endpoint = <&ov106xx_in6>; + data-lanes = <1 2 3 4>; + }; + }; + port@1 { + csi2ep2: endpoint { + remote-endpoint = <&csi2_41_ep>; + }; + }; + port@2 { + vin6_max9286_des1ep2: endpoint@0 { + remote-endpoint = <&max9286_des1ep2>; + }; + vin6_ti964_des1ep2: endpoint@1 { + remote-endpoint = <&ti964_des1ep2>; + }; + }; + }; +}; + +&vin7 { + status = "okay"; + + ports { + #address-cells = <1>; + #size-cells = <0>; + + port@0 { + vin7ep0: endpoint@0 { + csi,select = "csi41"; + virtual,channel = <3>; + remote-endpoint = <&ov106xx_in7>; + data-lanes = <1 2 3 4>; + }; + }; + port@1 { + csi2ep3: endpoint { + remote-endpoint = <&csi2_41_ep>; + }; + }; + port@2 { + vin7_max9286_des1ep3: endpoint@0 { + remote-endpoint = <&max9286_des1ep3>; + }; + vin7_ti964_des1ep3: endpoint@1 { + remote-endpoint = <&ti964_des1ep3>; + }; + }; + }; +}; + +&csi2_40 { + status = "okay"; + + virtual,channel { + csi2_vc0 { + data,type = "ycbcr422"; + receive,vc = <0>; + }; + csi2_vc1 { + data,type = "ycbcr422"; + receive,vc = <1>; + }; + csi2_vc2 { + data,type = "ycbcr422"; + receive,vc = <2>; + }; + csi2_vc3 { + data,type = "ycbcr422"; + receive,vc = <3>; + }; + }; + + port { + #address-cells = <1>; + #size-cells = <0>; + + csi2_40_ep: endpoint { + clock-lanes = <0>; + data-lanes = <1 2 3 4>; + csi-rate = <300>; + }; + }; +}; + +&csi2_41 { + status = "okay"; + + virtual,channel { + csi2_vc0 { + data,type = "ycbcr422"; + receive,vc = <0>; + }; + csi2_vc1 { + data,type = "ycbcr422"; + receive,vc = <1>; + }; + csi2_vc2 { + data,type = "ycbcr422"; + receive,vc = <2>; + }; + csi2_vc3 { + data,type = "ycbcr422"; + receive,vc = <3>; + }; + }; + + port { + #address-cells = <1>; + #size-cells = <0>; + + csi2_41_ep: endpoint { + clock-lanes = <0>; + data-lanes = <1 2 3 4>; + csi-rate = <300>; + }; + }; +}; + +&rcar_sound { + pinctrl-0 = <&sound_clk_pins>; + + /* Multi DAI */ + #sound-dai-cells = <1>; +}; + +&sata { + status = "okay"; +}; + +&ssi1 { + /delete-property/shared-pin; +}; + +&avb { + /delete-property/phy-handle; + /delete-property/phy-gpios; + phy-mode = "rgmii"; + + /delete-node/ethernet-phy@0; + + fixed-link { + speed = <100>; + full-duplex; + }; +}; + +&msiof1 { + status = "disabled"; +}; + +&usb2_phy0 { + pinctrl-0 = <&usb0_pins>; + pinctrl-names = "default"; + + status = "okay"; +}; + +&xhci0 { + status = "okay"; +}; + +&hsusb0 { + status = "okay"; +}; + +&ehci0 { + status = "okay"; +}; + +&ohci0 { + status = "okay"; +}; + +&can0 { + pinctrl-0 = <&can0_pins>; + pinctrl-names = "default"; + status = "okay"; + + renesas,can-clock-select = <0x0>; +}; + +&can1 { + pinctrl-0 = <&can1_pins>; + pinctrl-names = "default"; + status = "okay"; + + renesas,can-clock-select = <0x0>; +}; + +&canfd { + pinctrl-0 = <&canfd0_pins &canfd1_pins>; + pinctrl-names = "default"; + status = "disabled"; + + renesas,can-clock-select = <0x0>; + + channel0 { + status = "okay"; + }; + + channel1 { + status = "okay"; + }; +}; + +/* uncomment to enable CN12 on VIN4-7 */ +//#include "ulcb-vb-cn12.dtsi" diff --git a/arch/arm64/boot/dts/renesas/ulcb-vb-cn12.dtsi b/arch/arm64/boot/dts/renesas/ulcb-vb-cn12.dtsi new file mode 100644 index 0000000..9c6d10c --- /dev/null +++ b/arch/arm64/boot/dts/renesas/ulcb-vb-cn12.dtsi @@ -0,0 +1,515 @@ +/* + * Device Tree Source for the H3ULCB Videobox board: + * this adding conflicting resource on VIN4/VIN5/VIN6/VIN7 for CN12 + * + * Copyright (C) 2017 Renesas Electronics Corp. + * Copyright (C) 2017 Cogent Embedded, Inc. + * + * This file is licensed under the terms of the GNU General Public License + * version 2. This program is licensed "as is" without any warranty of any + * kind, whether express or implied. + */ + +&i2cswitch2 { + i2c@3 { + #address-cells = <1>; + #size-cells = <0>; + reg = <3>; + /* Slot C (CN12) */ + + ov106xx@8 { + compatible = "ovti,ov106xx"; + reg = <0x68>; + + port@0 { + ov106xx_in8: endpoint { + clock-lanes = <0>; + data-lanes = <1 2>; + remote-endpoint = <&vin4ep0>; + }; + }; + port@1 { + ov106xx_max9286_des2ep0: endpoint@0 { + remote-endpoint = <&max9286_des2ep0>; + }; + ov106xx_ti964_des2ep0: endpoint@1 { + remote-endpoint = <&ti964_des2ep0>; + }; + ov106xx_ti954_des2ep0: endpoint@2 { + remote-endpoint = <&ti954_des2ep0>; + }; + }; + }; + + ov106xx@9 { + compatible = "ovti,ov106xx"; + reg = <0x69>; + + port@0 { + ov106xx_in9: endpoint { + clock-lanes = <0>; + data-lanes = <1 2>; + remote-endpoint = <&vin5ep0>; + }; + }; + port@1 { + ov106xx_max9286_des2ep1: endpoint@0 { + remote-endpoint = <&max9286_des2ep1>; + }; + ov106xx_ti964_des2ep1: endpoint@1 { + remote-endpoint = <&ti964_des2ep1>; + }; + ov106xx_ti954_des2ep1: endpoint@2 { + remote-endpoint = <&ti954_des2ep1>; + }; + }; + }; + + ov106xx@10 { + compatible = "ovti,ov106xx"; + reg = <0x6a>; + + port@0 { + ov106xx_in10: endpoint { + clock-lanes = <0>; + data-lanes = <1 2>; + remote-endpoint = <&vin6ep0>; + }; + }; + port@1 { + ov106xx_max9286_des2ep2: endpoint@0 { + remote-endpoint = <&max9286_des2ep2>; + }; + ov106xx_ti964_des2ep2: endpoint@1 { + remote-endpoint = <&ti964_des2ep2>; + }; + }; + }; + + ov106xx@11 { + compatible = "ovti,ov106xx"; + reg = <0x6b>; + + port@0 { + ov106xx_in11: endpoint { + clock-lanes = <0>; + data-lanes = <1 2>; + remote-endpoint = <&vin7ep0>; + }; + }; + port@1 { + ov106xx_max9286_des2ep3: endpoint@0 { + remote-endpoint = <&max9286_des2ep3>; + }; + ov106xx_ti964_des2ep3: endpoint@1 { + remote-endpoint = <&ti964_des2ep3>; + }; + }; + }; + + /* DS90UB964 @ 0x3a */ + ti964-ti9x3@2 { + compatible = "ti,ti964-ti9x3"; + reg = <0x3a>; + ti,sensor_delay = <350>; + ti,links = <4>; + ti,lanes = <2>; + ti,forwarding-mode = "round-robin"; + ti,cable-mode = "coax"; + + port@0 { + ti964_des2ep0: endpoint@0 { + ti9x3-addr = <0x0c>; + dvp-order = <0>; + remote-endpoint = <&ov106xx_in8>; + }; + ti964_des2ep1: endpoint@1 { + ti9x3-addr = <0x0d>; + dvp-order = <0>; + remote-endpoint = <&ov106xx_in9>; + }; + ti964_des2ep2: endpoint@2 { + ti9x3-addr = <0x0e>; + dvp-order = <0>; + remote-endpoint = <&ov106xx_in10>; + }; + ti964_des2ep3: endpoint@3 { + ti9x3-addr = <0x0f>; + dvp-order = <0>; + remote-endpoint = <&ov106xx_in11>; + }; + }; + port@1 { + ti964_csi1ep0: endpoint { + csi-rate = <1450>; + remote-endpoint = <&csi2_20_ep>; + }; + }; + }; + + /* DS90UB954 @ 0x38 */ + ti954-ti9x3@2 { + compatible = "ti,ti954-ti9x3"; + reg = <0x38>; + /* gpios = <&video_c_ext1 10 GPIO_ACTIVE_HIGH>; */ + ti,sensor_delay = <350>; + ti,links = <2>; + ti,lanes = <2>; + ti,forwarding-mode = "round-robin"; + ti,cable-mode = "coax"; + + port@0 { + ti954_des2ep0: endpoint@0 { + ti9x3-addr = <0x0c>; + dvp-order = <0>; + remote-endpoint = <&ov106xx_in8>; + }; + ti954_des2ep1: endpoint@1 { + ti9x3-addr = <0x0d>; + dvp-order = <0>; + remote-endpoint = <&ov106xx_in9>; + }; + }; + port@1 { + ti954_csi1ep0: endpoint { + csi-rate = <1450>; + remote-endpoint = <&csi2_20_ep>; + }; + }; + }; + + /* MAX9286 @ 0x2c */ + max9286-max9271@2 { + compatible = "maxim,max9286-max9271"; + reg = <0x2c>; + maxim,sensor_delay = <350>; + maxim,links = <4>; + maxim,lanes = <2>; + maxim,resetb-gpio = <1>; + maxim,fsync-mode = "automatic"; + maxim,timeout = <100>; + + port@0 { + max9286_des2ep0: endpoint@0 { + max9271-addr = <0x50>; + dvp-order = <1>; + remote-endpoint = <&ov106xx_in8>; + }; + max9286_des2ep1: endpoint@1 { + max9271-addr = <0x51>; + dvp-order = <1>; + remote-endpoint = <&ov106xx_in9>; + }; + max9286_des2ep2: endpoint@2 { + max9271-addr = <0x52>; + dvp-order = <1>; + remote-endpoint = <&ov106xx_in10>; + }; + max9286_des2ep3: endpoint@3 { + max9271-addr = <0x53>; + dvp-order = <1>; + remote-endpoint = <&ov106xx_in11>; + }; + }; + port@1 { + max9286_csi1ep0: endpoint { + csi-rate = <700>; + remote-endpoint = <&csi2_20_ep>; + }; + }; + }; + }; + + i2c@4 { + #address-cells = <1>; + #size-cells = <0>; + reg = <4>; + /* Slot C (CN12) */ + + video_c_ext0: pca9535@26 { + compatible = "nxp,pca9535"; + reg = <0x26>; + gpio-controller; + #gpio-cells = <2>; + + video_c_des_cfg1 { + gpio-hog; + gpios = <5 GPIO_ACTIVE_HIGH>; + input; + line-name = "Video-C cfg1"; + }; + video_c_des_cfg0 { + gpio-hog; + gpios = <6 GPIO_ACTIVE_HIGH>; + input; + line-name = "Video-C cfg0"; + }; + video_c_pwr_shdn { + gpio-hog; + gpios = <3 GPIO_ACTIVE_HIGH>; + output-high; + line-name = "Video-C PWR_SHDN"; + }; + video_c_cam_pwr0 { + gpio-hog; + gpios = <12 GPIO_ACTIVE_HIGH>; + output-high; + line-name = "Video-C PWR0"; + }; + video_c_cam_pwr1 { + gpio-hog; + gpios = <13 GPIO_ACTIVE_HIGH>; + output-high; + line-name = "Video-C PWR1"; + }; + video_c_cam_pwr2 { + gpio-hog; + gpios = <14 GPIO_ACTIVE_HIGH>; + output-high; + line-name = "Video-C PWR2"; + }; + video_c_cam_pwr3 { + gpio-hog; + gpios = <15 GPIO_ACTIVE_HIGH>; + output-high; + line-name = "Video-C PWR3"; + }; + video_c_des_shdn { + gpio-hog; + gpios = <4 GPIO_ACTIVE_HIGH>; + output-high; + line-name = "Video-C DES_SHDN"; + }; + video_c_des_led { + gpio-hog; + gpios = <7 GPIO_ACTIVE_HIGH>; + output-low; + line-name = "Video-C led"; + }; + }; + + video_c_ext1: max7325@5c { + compatible = "maxim,max7325"; + reg = <0x5c>; + gpio-controller; + #gpio-cells = <2>; + + video_c_des_cfg2 { + gpio-hog; + gpios = <4 GPIO_ACTIVE_HIGH>; + input; + line-name = "Video-C cfg2"; + }; + video_c_des_cfg1 { + gpio-hog; + gpios = <6 GPIO_ACTIVE_HIGH>; + input; + line-name = "Video-C cfg1"; + }; + video_c_des_cfg0 { + gpio-hog; + gpios = <7 GPIO_ACTIVE_HIGH>; + input; + line-name = "Video-C cfg0"; + }; + video_c_pwr_shdn { + gpio-hog; + gpios = <14 GPIO_ACTIVE_HIGH>; + output-high; + line-name = "Video-C PWR_SHDN"; + }; + video_c_cam_pwr0 { + gpio-hog; + gpios = <8 GPIO_ACTIVE_HIGH>; + output-high; + line-name = "Video-C PWR0"; + }; + video_c_cam_pwr1 { + gpio-hog; + gpios = <9 GPIO_ACTIVE_HIGH>; + output-high; + line-name = "Video-C PWR1"; + }; + video_c_cam_pwr2 { + gpio-hog; + gpios = <10 GPIO_ACTIVE_HIGH>; + output-high; + line-name = "Video-C PWR2"; + }; + video_c_cam_pwr3 { + gpio-hog; + gpios = <11 GPIO_ACTIVE_HIGH>; + output-high; + line-name = "Video-C PWR3"; + }; + video_c_des_shdn { + gpio-hog; + gpios = <13 GPIO_ACTIVE_HIGH>; + output-high; + line-name = "Video-C DES_SHDN"; + }; + video_c_led { + gpio-hog; + gpios = <12 GPIO_ACTIVE_HIGH>; + output-low; + line-name = "Video-C LED"; + }; + }; + }; +}; + +&vin4 { + ports { + #address-cells = <1>; + #size-cells = <0>; + + port@0 { + vin4ep0: endpoint { + csi,select = "csi20"; + virtual,channel = <0>; + remote-endpoint = <&ov106xx_in8>; + data-lanes = <1 2>; + }; + }; + port@1 { + csi2ep0: endpoint { + remote-endpoint = <&csi2_20_ep>; + }; + }; + port@2 { + vin4_max9286_des2ep0: endpoint@0 { + remote-endpoint = <&max9286_des2ep0>; + }; + vin4_ti964_des2ep0: endpoint@1 { + remote-endpoint = <&ti964_des2ep0>; + }; + vin4_ti954_des2ep0: endpoint@2 { + remote-endpoint = <&ti954_des2ep0>; + }; + }; + }; +}; + +&vin5 { + ports { + #address-cells = <1>; + #size-cells = <0>; + + port@0 { + vin5ep0: endpoint@0 { + csi,select = "csi20"; + virtual,channel = <1>; + remote-endpoint = <&ov106xx_in9>; + data-lanes = <1 2>; + }; + }; + port@1 { + csi2ep1: endpoint { + remote-endpoint = <&csi2_20_ep>; + }; + }; + port@2 { + vin5_max9286_des2ep1: endpoint@0 { + remote-endpoint = <&max9286_des2ep1>; + }; + vin5_ti964_des2ep1: endpoint@1 { + remote-endpoint = <&ti964_des2ep1>; + }; + vin5_ti954_des2ep1: endpoint@2 { + remote-endpoint = <&ti954_des2ep1>; + }; + }; + }; +}; + +&vin6 { + ports { + #address-cells = <1>; + #size-cells = <0>; + + port@0 { + vin6ep0: endpoint@0 { + csi,select = "csi20"; + virtual,channel = <2>; + remote-endpoint = <&ov106xx_in10>; + data-lanes = <1 2>; + }; + }; + port@1 { + csi2ep2: endpoint { + remote-endpoint = <&csi2_20_ep>; + }; + }; + port@2 { + vin6_max9286_des2ep2: endpoint@0 { + remote-endpoint = <&max9286_des2ep2>; + }; + vin6_ti964_des2ep2: endpoint@1 { + remote-endpoint = <&ti964_des2ep2>; + }; + }; + }; +}; + +&vin7 { + ports { + #address-cells = <1>; + #size-cells = <0>; + + port@0 { + vin7ep0: endpoint@0 { + csi,select = "csi20"; + virtual,channel = <3>; + remote-endpoint = <&ov106xx_in11>; + data-lanes = <1 2>; + }; + }; + port@1 { + csi2ep3: endpoint { + remote-endpoint = <&csi2_20_ep>; + }; + }; + port@2 { + vin7_max9286_des2ep3: endpoint@0 { + remote-endpoint = <&max9286_des2ep3>; + }; + vin7_ti964_des2ep3: endpoint@1 { + remote-endpoint = <&ti964_des2ep3>; + }; + }; + }; +}; + +&csi2_20 { + status = "okay"; + + virtual,channel { + csi2_vc0 { + data,type = "ycbcr422"; + receive,vc = <0>; + }; + csi2_vc1 { + data,type = "ycbcr422"; + receive,vc = <1>; + }; + csi2_vc2 { + data,type = "ycbcr422"; + receive,vc = <2>; + }; + csi2_vc3 { + data,type = "ycbcr422"; + receive,vc = <3>; + }; + }; + + port { + #address-cells = <1>; + #size-cells = <0>; + + csi2_20_ep: endpoint { + clock-lanes = <0>; + data-lanes = <1 2>; + csi-rate = <300>; + }; + }; +}; -- 1.9.1