summaryrefslogtreecommitdiffstats
path: root/meta-rcar-gen3-adas/recipes-kernel
diff options
context:
space:
mode:
authorVladimir Barinov <vladimir.barinov@cogentembedded.com>2017-05-24 03:18:24 +0300
committerVladimir Barinov <vladimir.barinov@cogentembedded.com>2017-05-24 03:18:24 +0300
commitbf371db59375cb6c3162013cedef294cb33cd715 (patch)
treed2962ee06b7df8e05c2e8cad710b02a898d2bb25 /meta-rcar-gen3-adas/recipes-kernel
parent6968dc308efa3163b22f2bbcef1d7debfe66ba14 (diff)
Add KF V1 board
Diffstat (limited to 'meta-rcar-gen3-adas/recipes-kernel')
-rw-r--r--meta-rcar-gen3-adas/recipes-kernel/linux/linux-renesas/0024-wl18xx-do-not-invert-IRQ-on-WLxxxx-side.patch48
-rw-r--r--meta-rcar-gen3-adas/recipes-kernel/linux/linux-renesas/0034-arm64-dts-r8a7795-es1-h3ulcb-kf-add-ADAS-board.patch416
-rw-r--r--meta-rcar-gen3-adas/recipes-kernel/linux/linux-renesas/0037-arm64-dts-r8a7796-m3ulcb-kf-add-ADAS-board.patch389
-rw-r--r--meta-rcar-gen3-adas/recipes-kernel/linux/linux-renesas/0041-arm64-dts-r8a7795-h3ulcb-kf-add-ADAS-board.patch416
-rw-r--r--meta-rcar-gen3-adas/recipes-kernel/linux/linux-renesas_4.9.bbappend1
5 files changed, 868 insertions, 402 deletions
diff --git a/meta-rcar-gen3-adas/recipes-kernel/linux/linux-renesas/0024-wl18xx-do-not-invert-IRQ-on-WLxxxx-side.patch b/meta-rcar-gen3-adas/recipes-kernel/linux/linux-renesas/0024-wl18xx-do-not-invert-IRQ-on-WLxxxx-side.patch
new file mode 100644
index 0000000..f956c58
--- /dev/null
+++ b/meta-rcar-gen3-adas/recipes-kernel/linux/linux-renesas/0024-wl18xx-do-not-invert-IRQ-on-WLxxxx-side.patch
@@ -0,0 +1,48 @@
+From 60d86113a92ac35421865f9b8db504530962c829 Mon Sep 17 00:00:00 2001
+From: Andrey Gusakov <andrey.gusakov@cogentembedded.com>
+Date: Mon, 22 May 2017 17:22:38 +0300
+Subject: [PATCH] wl18xx: do not invert IRQ on WLxxxx side
+
+
+Signed-off-by: Andrey Gusakov <andrey.gusakov@cogentembedded.com>
+---
+ drivers/net/wireless/ti/wl18xx/main.c | 8 ++++++++
+ 1 file changed, 8 insertions(+)
+
+diff --git a/drivers/net/wireless/ti/wl18xx/main.c b/drivers/net/wireless/ti/wl18xx/main.c
+index ae47c79..cdde6e0 100644
+--- a/drivers/net/wireless/ti/wl18xx/main.c
++++ b/drivers/net/wireless/ti/wl18xx/main.c
+@@ -876,7 +876,9 @@ static int wl18xx_pre_upload(struct wl1271 *wl)
+ {
+ u32 tmp;
+ int ret;
++#if 0
+ u16 irq_invert;
++#endif
+
+ BUILD_BUG_ON(sizeof(struct wl18xx_mac_and_phy_params) >
+ WL18XX_PHY_INIT_MEM_SIZE);
+@@ -929,6 +931,11 @@ static int wl18xx_pre_upload(struct wl1271 *wl)
+ if (ret < 0)
+ goto out;
+
++#if 0
++ /* We have level translator with inversion on IRQ line so we
++ * set IRQ_TYPE_EDGE_FALLING in DTS, but we do not need to
++ * invert IRQ logic on WLxxxx side!
++ */
+ ret = irq_get_trigger_type(wl->irq);
+ if ((ret == IRQ_TYPE_LEVEL_LOW) || (ret == IRQ_TYPE_EDGE_FALLING)) {
+ wl1271_info("using inverted interrupt logic: %d", ret);
+@@ -948,6 +955,7 @@ static int wl18xx_pre_upload(struct wl1271 *wl)
+
+ ret = wlcore_set_partition(wl, &wl->ptable[PART_PHY_INIT]);
+ }
++#endif
+
+ out:
+ return ret;
+--
+1.7.10.4
+
diff --git a/meta-rcar-gen3-adas/recipes-kernel/linux/linux-renesas/0034-arm64-dts-r8a7795-es1-h3ulcb-kf-add-ADAS-board.patch b/meta-rcar-gen3-adas/recipes-kernel/linux/linux-renesas/0034-arm64-dts-r8a7795-es1-h3ulcb-kf-add-ADAS-board.patch
index 985863a..e558d23 100644
--- a/meta-rcar-gen3-adas/recipes-kernel/linux/linux-renesas/0034-arm64-dts-r8a7795-es1-h3ulcb-kf-add-ADAS-board.patch
+++ b/meta-rcar-gen3-adas/recipes-kernel/linux/linux-renesas/0034-arm64-dts-r8a7795-es1-h3ulcb-kf-add-ADAS-board.patch
@@ -8,28 +8,276 @@ H3ULCB.View board on R8A7795 ES1.x SoC
Signed-off-by: Vladimir Barinov <vladimir.barinov@cogentembedded.com>
---
arch/arm64/boot/dts/renesas/Makefile | 1 +
- .../boot/dts/renesas/r8a7795-es1-h3ulcb-kf.dts | 1683 ++++++++++++++++++++
- 2 files changed, 1684 insertions(+)
+ .../boot/dts/renesas/r8a7795-es1-h3ulcb-kf-v1.dts | 240 +++
+ .../boot/dts/renesas/r8a7795-es1-h3ulcb-kf.dts | 1569 ++++++++++++++++++++
+ 3 files changed, 1810 insertions(+)
+ create mode 100644 arch/arm64/boot/dts/renesas/r8a7795-es1-h3ulcb-kf-v1.dts
create mode 100644 arch/arm64/boot/dts/renesas/r8a7795-es1-h3ulcb-kf.dts
diff --git a/arch/arm64/boot/dts/renesas/Makefile b/arch/arm64/boot/dts/renesas/Makefile
-index 06207e3..a5dd1d3 100644
+index 51a4ac9..24f8036 100644
--- a/arch/arm64/boot/dts/renesas/Makefile
+++ b/arch/arm64/boot/dts/renesas/Makefile
-@@ -10,6 +10,7 @@ dtb-$(CONFIG_ARCH_R8A7795) += r8a7795-es1-h3ulcb-view.dtb
+@@ -8,6 +8,7 @@ dtb-$(CONFIG_ARCH_R8A7796) += r8a7796-salvator-xs.dtb
dtb-$(CONFIG_ARCH_R8A7795) += r8a7795-es1-salvator-x-view.dtb
dtb-$(CONFIG_ARCH_R8A7795) += r8a7795-es1-h3ulcb-view.dtb
dtb-$(CONFIG_ARCH_R8A7795) += r8a7795-es1-h3ulcb-had-alfa.dtb r8a7795-es1-h3ulcb-had-beta.dtb
-+dtb-$(CONFIG_ARCH_R8A7795) += r8a7795-es1-h3ulcb-kf.dtb
++dtb-$(CONFIG_ARCH_R8A7795) += r8a7795-es1-h3ulcb-kf.dtb r8a7795-es1-h3ulcb-kf-v1.dtb
always := $(dtb-y)
clean-files := *.dtb
+diff --git a/arch/arm64/boot/dts/renesas/r8a7795-es1-h3ulcb-kf-v1.dts b/arch/arm64/boot/dts/renesas/r8a7795-es1-h3ulcb-kf-v1.dts
+new file mode 100644
+index 0000000..0c6cca7
+--- /dev/null
++++ b/arch/arm64/boot/dts/renesas/r8a7795-es1-h3ulcb-kf-v1.dts
+@@ -0,0 +1,240 @@
++/*
++ * Device Tree Source for the H3ULCB Kingfisher V1 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-kf.dts"
++
++/ {
++ model = "Renesas H3ULCB Kingfisher V1 board based on r8a7795";
++
++ aliases {
++ serial1 = &hscif0;
++ serial2 = &hscif1;
++ };
++
++ wlan_en: regulator@4 {
++ compatible = "regulator-fixed";
++ regulator-name = "wlan-en-regulator";
++
++ regulator-min-microvolt = <3300000>;
++ regulator-max-microvolt = <3300000>;
++
++ gpio = <&gpio_ext_74 4 GPIO_ACTIVE_HIGH>;
++ enable-active-high;
++ };
++
++ codec_en_reg: regulator@6 {
++ compatible = "regulator-fixed";
++ regulator-name = "codec-en-regulator";
++ regulator-min-microvolt = <3300000>;
++ regulator-max-microvolt = <3300000>;
++
++ gpio = <&gpio_ext_74 15 0>;
++
++ /* delay - CHECK */
++ startup-delay-us = <70000>;
++ enable-active-high;
++ };
++
++ amp_en_reg: regulator@7 {
++ compatible = "regulator-fixed";
++ regulator-name = "amp-en-regulator";
++ regulator-min-microvolt = <3300000>;
++ regulator-max-microvolt = <3300000>;
++
++ gpio = <&gpio_ext_74 0 0>;
++
++ startup-delay-us = <0>;
++ enable-active-high;
++ };
++
++ /delete-node/regulator@8;
++
++ sdio_switch: regulator@9 {
++ compatible = "regulator-fixed";
++ regulator-name = "wifi_on";
++ regulator-min-microvolt = <3300000>;
++ regulator-max-microvolt = <3300000>;
++ gpio = <&gpio_ext_74 5 0>;
++ enable-active-low;
++ regulator-always-on;
++ };
++
++ /delete-node/regulator@10;
++
++ radio_switch: regulator@11 {
++ compatible = "regulator-fixed";
++ regulator-name = "radio_on";
++ regulator-min-microvolt = <3300000>;
++ regulator-max-microvolt = <3300000>;
++ gpio = <&gpio_ext_74 13 GPIO_ACTIVE_HIGH>;
++ enable-active-high;
++ regulator-always-on;
++ };
++
++ kim {
++ compatible = "kim";
++ nshutdown_gpio = <343>; /* gpio_ext_74 pin 3 */
++ /* serial1 */
++ dev_name = "/dev/ttySC1";
++ flow_cntrl = <0>;
++ /* int div 8 hscif@26.6666656MHz */
++ baud_rate = <3333332>;
++ };
++};
++
++&pfc {
++ /delete-node/hscif4;
++
++ hscif0_pins: hscif0 {
++ groups = "hscif0_data";
++ function = "hscif0";
++ };
++
++ hscif1_pins: hscif1 {
++ groups = "hscif1_data_a", "hscif1_ctrl_a";
++ function = "hscif1";
++ };
++};
++
++&gpio0 {
++ /delete-node/gpioext_2_20_irq;
++};
++
++&gpio1 {
++ /delete-node/gpioext_2_21_irq;
++};
++
++&gpio5 {
++ /delete-node/touch_irq;
++ /delete-node/bt_strap;
++
++ /* V1 has h/w bug with swapped RTS and CTS on BT interface */
++ /* Ignore these pins */
++ hscif0_cts {
++ gpio-hog;
++ gpios = <15 GPIO_ACTIVE_HIGH>;
++ input;
++ line-name = "hscif0 CTS";
++ };
++
++ hscif0_rts {
++ gpio-hog;
++ gpios = <16 GPIO_ACTIVE_HIGH>;
++ input;
++ line-name = "hscif0 RTS";
++ };
++};
++
++&gpio7 {
++ /delete-node/gpioext_2_21_irq;
++};
++
++&hscif4 {
++ /delete-property/pinctrl-0;
++ /delete-property/pinctrl-names;
++
++ status = "disabled";
++};
++
++&i2c2 {
++ /delete-node/pca9535@20;
++ /delete-node/pca9535@21;
++
++ gpio_ext_74: pca9539@74 {
++ compatible = "nxp,pca9539";
++ reg = <0x74>;
++ gpio-controller;
++ #gpio-cells = <2>;
++
++ hub_pwen {
++ gpio-hog;
++ gpios = <6 GPIO_ACTIVE_HIGH>;
++ output-high;
++ line-name = "HUB pwen";
++ };
++ hub_rst {
++ gpio-hog;
++ gpios = <7 GPIO_ACTIVE_HIGH>;
++ output-high;
++ line-name = "HUB rst";
++ };
++ };
++
++ gpio_ext_75: pca9539@75 {
++ compatible = "nxp,pca9539";
++ reg = <0x75>;
++ gpio-controller;
++ #gpio-cells = <2>;
++ };
++};
++
++&i2cswitch2 {
++ reg = <0x71>;
++ reset-gpios= <&gpio5 3 GPIO_ACTIVE_LOW>;
++};
++
++&i2c4 {
++ /delete-node/pca9535@21;
++
++ gpio_ext_76: pca9539@76 {
++ compatible = "nxp,pca9539";
++ reg = <0x76>;
++ gpio-controller;
++ #gpio-cells = <2>;
++ };
++
++ gpio_ext_77: pca9539@77 {
++ compatible = "nxp,pca9539";
++ reg = <0x77>;
++ gpio-controller;
++ #gpio-cells = <2>;
++
++ port_b_a0 {
++ gpio-hog;
++ gpios = <0 GPIO_ACTIVE_HIGH>;
++ output-low;
++ line-name = "Video-B A0";
++ };
++ port_b_a1 {
++ gpio-hog;
++ gpios = <1 GPIO_ACTIVE_HIGH>;
++ output-high;
++ line-name = "Video-B A1";
++ };
++ port_a_a0 {
++ gpio-hog;
++ gpios = <2 GPIO_ACTIVE_HIGH>;
++ output-low;
++ line-name = "Video-A A0";
++ };
++ port_a_a1 {
++ gpio-hog;
++ gpios = <3 GPIO_ACTIVE_HIGH>;
++ output-high;
++ line-name = "Video-A A1";
++ };
++ lvds_vs_fpdl {
++ gpio-hog;
++ gpios = <14 GPIO_ACTIVE_HIGH>;
++ output-high;
++ line-name = "LVDS switch";
++ };
++ };
++};
++
++&i2cswitch4 {
++ reg = <0x71>;
++ reset-gpios= <&gpio3 15 GPIO_ACTIVE_LOW>;
++};
++
++&wlcore {
++ interrupts = <25 IRQ_TYPE_EDGE_FALLING>;
++};
diff --git a/arch/arm64/boot/dts/renesas/r8a7795-es1-h3ulcb-kf.dts b/arch/arm64/boot/dts/renesas/r8a7795-es1-h3ulcb-kf.dts
new file mode 100644
-index 0000000..50a37e0
+index 0000000..fdc0b5a
--- /dev/null
+++ b/arch/arm64/boot/dts/renesas/r8a7795-es1-h3ulcb-kf.dts
-@@ -0,0 +1,1683 @@
+@@ -0,0 +1,1569 @@
+/*
+ * Device Tree Source for the H3ULCB Kingfisher board on r8a7795 ES1.x
+ *
@@ -222,69 +470,6 @@ index 0000000..50a37e0
+ };
+ };
+
-+ sound_amp: sound@3 {
-+ pinctrl-0 = <&sound_9_pins>;
-+ pinctrl-names = "default";
-+ compatible = "simple-audio-card";
-+
-+ simple-audio-card,name = "power_amp";
-+
-+ simple-audio-card,dai-link@0 {
-+ format = "i2s";
-+ cpu {
-+ sound-dai = <&rcar_sound 3>;
-+ };
-+ codec {
-+ sound-dai = <&max98371_L>;
-+ };
-+ };
-+ simple-audio-card,dai-link@1 {
-+ format = "i2s";
-+ cpu {
-+ sound-dai = <&rcar_sound 3>;
-+ };
-+ codec {
-+ sound-dai = <&max98371_R>;
-+ };
-+ };
-+ simple-audio-card,dai-link@2 {
-+ format = "i2s";
-+ cpu {
-+ sound-dai = <&rcar_sound 3>;
-+ };
-+ codec {
-+ sound-dai = <&max98371_RL>;
-+ };
-+ };
-+ simple-audio-card,dai-link@3 {
-+ format = "i2s";
-+ cpu {
-+ sound-dai = <&rcar_sound 3>;
-+ };
-+ codec {
-+ sound-dai = <&max98371_RR>;
-+ };
-+ };
-+ simple-audio-card,dai-link@4 {
-+ format = "i2s";
-+ cpu {
-+ sound-dai = <&rcar_sound 3>;
-+ };
-+ codec {
-+ sound-dai = <&max98371_C>;
-+ };
-+ };
-+ simple-audio-card,dai-link@5 {
-+ format = "i2s";
-+ cpu {
-+ sound-dai = <&rcar_sound 3>;
-+ };
-+ codec {
-+ sound-dai = <&max98371_S>;
-+ };
-+ };
-+ };
-+
+ lvds-encoder {
+ compatible = "thine,thc63lvdm83d";
+
@@ -367,11 +552,6 @@ index 0000000..50a37e0
+ function = "ssi";
+ };
+
-+ sound_9_pins: sound2 {
-+ groups = "ssi9_ctrl_b", "ssi9_data_b";
-+ function = "ssi";
-+ };
-+
+ usb0_pins: usb0 {
+ groups = "usb0";
+ function = "usb0";
@@ -476,7 +656,7 @@ index 0000000..50a37e0
+ interrupts = <15 IRQ_TYPE_EDGE_FALLING>;
+ };
+
-+ i2cswitch2@74 {
++ i2cswitch2: pca9548@74 {
+ compatible = "nxp,pca9548";
+ #address-cells = <1>;
+ #size-cells = <0>;
@@ -502,37 +682,6 @@ index 0000000..50a37e0
+ #size-cells = <0>;
+ reg = <2>;
+ /* Power amp node(s) */
-+
-+ max98371_L: max98371@0x31 {
-+ compatible = "maxim,max98371";
-+ reg = <0x31>;
-+ #sound-dai-cells = <0>;
-+ };
-+ max98371_R: max98371@0x32 {
-+ compatible = "maxim,max98371";
-+ reg = <0x32>;
-+ #sound-dai-cells = <0>;
-+ };
-+ max98371_RL: max98371@0x33 {
-+ compatible = "maxim,max98371";
-+ reg = <0x33>;
-+ #sound-dai-cells = <0>;
-+ };
-+ max98371_RR: max98371@0x34 {
-+ compatible = "maxim,max98371";
-+ reg = <0x34>;
-+ #sound-dai-cells = <0>;
-+ };
-+ max98371_C: max98371@0x35 {
-+ compatible = "maxim,max98371";
-+ reg = <0x35>;
-+ #sound-dai-cells = <0>;
-+ };
-+ max98371_S: max98371@0x36 {
-+ compatible = "maxim,max98371";
-+ reg = <0x36>;
-+ #sound-dai-cells = <0>;
-+ };
+ };
+
+ i2c@3 {
@@ -617,7 +766,7 @@ index 0000000..50a37e0
+ interrupts = <3 IRQ_TYPE_EDGE_FALLING>;
+ };
+
-+ i2cswitch4@74 {
++ i2cswitch4: pca9548@74 {
+ compatible = "nxp,pca9548";
+ #address-cells = <1>;
+ #size-cells = <0>;
@@ -635,7 +784,7 @@ index 0000000..50a37e0
+ #address-cells = <1>;
+ #size-cells = <0>;
+ reg = <1>;
-+ /* Video input "A" acc node(s) */
++ /* Slot A (CN10) */
+
+ ov106xx@0 {
+ compatible = "ovti,ov106xx";
@@ -731,6 +880,7 @@ index 0000000..50a37e0
+ ti964-ti9x3@0 {
+ compatible = "ti,ti964-ti9x3";
+ reg = <0x3a>;
++ gpios = <&video_a_ext1 10 GPIO_ACTIVE_HIGH>;
+ ti,sensor_delay = <350>;
+ ti,links = <4>;
+ ti,lanes = <4>;
@@ -844,7 +994,7 @@ index 0000000..50a37e0
+ #address-cells = <1>;
+ #size-cells = <0>;
+ reg = <2>;
-+ /* Video input "B" acc node(s) */
++ /* Slot B (CN11) */
+
+ ov106xx@4 {
+ compatible = "ovti,ov106xx";
@@ -940,6 +1090,7 @@ index 0000000..50a37e0
+ ti964-ti9x3@1 {
+ compatible = "ti,ti964-ti9x3";
+ reg = <0x3a>;
++ gpios = <&video_b_ext1 10 GPIO_ACTIVE_HIGH>;
+ ti,sensor_delay = <350>;
+ ti,links = <4>;
+ ti,lanes = <4>;
@@ -1049,32 +1200,11 @@ index 0000000..50a37e0
+ };
+ };
+
-+ i2c@3 {
-+ #address-cells = <1>;
-+ #size-cells = <0>;
-+ reg = <3>;
-+ /* MOST node(s) */
-+ };
-+
-+ i2c@4 {
-+ #address-cells = <1>;
-+ #size-cells = <0>;
-+ reg = <4>;
-+ /* CSI camera node(s) */
-+ };
-+
-+ i2c@5 {
-+ #address-cells = <1>;
-+ #size-cells = <0>;
-+ reg = <5>;
-+ /* CMOS camera node(s) */
-+ };
-+
+ i2c@6 {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ reg = <6>;
-+ /* Video input "B" main node(s) */
++ /* Slot B (CN11) */
+
+ video_b_ext0: pca9535@27 {
+ compatible = "nxp,pca9535";
@@ -1180,6 +1310,12 @@ index 0000000..50a37e0
+ output-high;
+ line-name = "Video-B PWR1";
+ };
++ video_b_cam_pwr3 {
++ gpio-hog;
++ gpios = <11 GPIO_ACTIVE_HIGH>;
++ output-high;
++ line-name = "Video-B PWR3";
++ };
+ };
+ };
+
@@ -1187,7 +1323,7 @@ index 0000000..50a37e0
+ #address-cells = <1>;
+ #size-cells = <0>;
+ reg = <7>;
-+ /* Video input "A" main node(s) */
++ /* Slot A (CN10) */
+
+ video_a_ext0: pca9535@26 {
+ compatible = "nxp,pca9535";
@@ -1293,6 +1429,12 @@ index 0000000..50a37e0
+ output-high;
+ line-name = "Video-A PWR1";
+ };
++ video_a_cam_pwr3 {
++ gpio-hog;
++ gpios = <11 GPIO_ACTIVE_HIGH>;
++ output-high;
++ line-name = "Video-A PWR3";
++ };
+ };
+ };
+ };
@@ -1659,10 +1801,6 @@ index 0000000..50a37e0
+ dai2 {
+ capture = <&ssi6>;
+ };
-+
-+ dai3 {
-+ playback = <&ssi9>;
-+ };
+ };
+};
+
@@ -1691,10 +1829,6 @@ index 0000000..50a37e0
+ };
+};
+
-+&xhci0 {
-+ status = "okay";
-+};
-+
+&usb2_phy0 {
+ pinctrl-0 = <&usb0_pins>;
+ pinctrl-names = "default";
diff --git a/meta-rcar-gen3-adas/recipes-kernel/linux/linux-renesas/0037-arm64-dts-r8a7796-m3ulcb-kf-add-ADAS-board.patch b/meta-rcar-gen3-adas/recipes-kernel/linux/linux-renesas/0037-arm64-dts-r8a7796-m3ulcb-kf-add-ADAS-board.patch
index 92d3bf5..8d2cde9 100644
--- a/meta-rcar-gen3-adas/recipes-kernel/linux/linux-renesas/0037-arm64-dts-r8a7796-m3ulcb-kf-add-ADAS-board.patch
+++ b/meta-rcar-gen3-adas/recipes-kernel/linux/linux-renesas/0037-arm64-dts-r8a7796-m3ulcb-kf-add-ADAS-board.patch
@@ -7,29 +7,272 @@ M3ULCB.View board on R8A7796
Signed-off-by: Vladimir Barinov <vladimir.barinov@cogentembedded.com>
---
- arch/arm64/boot/dts/renesas/Makefile | 1 +
- arch/arm64/boot/dts/renesas/r8a7796-m3ulcb-kf.dts | 1197 +++++++++++++++++++++
- 2 files changed, 1198 insertions(+)
+ arch/arm64/boot/dts/renesas/Makefile | 1 +
+ .../boot/dts/renesas/r8a7796-m3ulcb-kf-v1.dts | 235 +++++
+ arch/arm64/boot/dts/renesas/r8a7796-m3ulcb-kf.dts | 1103 ++++++++++++++++++++
+ 3 files changed, 1339 insertions(+)
+ create mode 100644 arch/arm64/boot/dts/renesas/r8a7796-m3ulcb-kf-v1.dts
create mode 100644 arch/arm64/boot/dts/renesas/r8a7796-m3ulcb-kf.dts
diff --git a/arch/arm64/boot/dts/renesas/Makefile b/arch/arm64/boot/dts/renesas/Makefile
-index a5dd1d3..5cb7eb1 100644
+index 5d99267..e41b5b3 100644
--- a/arch/arm64/boot/dts/renesas/Makefile
+++ b/arch/arm64/boot/dts/renesas/Makefile
-@@ -11,6 +11,7 @@ dtb-$(CONFIG_ARCH_R8A7795) += r8a7795-es1-h3ulcb-had.dtb
- dtb-$(CONFIG_ARCH_R8A7795) += r8a7795-es1-h3ulcb-kf.dtb
+@@ -11,6 +11,7 @@ dtb-$(CONFIG_ARCH_R8A7795) += r8a7795-es1-h3ulcb-had-alfa.dtb r8a7795-es1-h3ulcb
+ dtb-$(CONFIG_ARCH_R8A7795) += r8a7795-es1-h3ulcb-kf.dtb r8a7795-es1-h3ulcb-kf-v1.dtb
dtb-$(CONFIG_ARCH_R8A7796) += r8a7796-salvator-x-view.dtb
dtb-$(CONFIG_ARCH_R8A7796) += r8a7796-m3ulcb-view.dtb
-+dtb-$(CONFIG_ARCH_R8A7796) += r8a7796-m3ulcb-kf.dtb
++dtb-$(CONFIG_ARCH_R8A7796) += r8a7796-m3ulcb-kf.dtb r8a7796-m3ulcb-kf-v1.dtb
always := $(dtb-y)
clean-files := *.dtb
+diff --git a/arch/arm64/boot/dts/renesas/r8a7796-m3ulcb-kf-v1.dts b/arch/arm64/boot/dts/renesas/r8a7796-m3ulcb-kf-v1.dts
+new file mode 100644
+index 0000000..f77ef0f
+--- /dev/null
++++ b/arch/arm64/boot/dts/renesas/r8a7796-m3ulcb-kf-v1.dts
+@@ -0,0 +1,235 @@
++/*
++ * Device Tree Source for the M3ULCB Kingfisher V1 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 "r8a7796-m3ulcb-kf.dts"
++
++/ {
++ model = "Renesas M3ULCB Kingfisher V1 board based on r8a7796";
++
++ wlan_en: regulator@4 {
++ compatible = "regulator-fixed";
++ regulator-name = "wlan-en-regulator";
++
++ regulator-min-microvolt = <3300000>;
++ regulator-max-microvolt = <3300000>;
++
++ gpio = <&gpio_ext_74 4 GPIO_ACTIVE_HIGH>;
++ enable-active-high;
++ };
++
++ codec_en_reg: regulator@6 {
++ compatible = "regulator-fixed";
++ regulator-name = "codec-en-regulator";
++ regulator-min-microvolt = <3300000>;
++ regulator-max-microvolt = <3300000>;
++
++ gpio = <&gpio_ext_74 15 0>;
++
++ /* delay - CHECK */
++ startup-delay-us = <70000>;
++ enable-active-high;
++ };
++
++ amp_en_reg: regulator@7 {
++ compatible = "regulator-fixed";
++ regulator-name = "amp-en-regulator";
++ regulator-min-microvolt = <3300000>;
++ regulator-max-microvolt = <3300000>;
++
++ gpio = <&gpio_ext_74 0 0>;
++
++ startup-delay-us = <0>;
++ enable-active-high;
++ };
++
++ /delete-node/regulator@8;
++
++ sdio_switch: regulator@9 {
++ compatible = "regulator-fixed";
++ regulator-name = "wifi_on";
++ regulator-min-microvolt = <3300000>;
++ regulator-max-microvolt = <3300000>;
++ gpio = <&gpio_ext_74 5 0>;
++ enable-active-low;
++ regulator-always-on;
++ };
++
++ /delete-node/regulator@10;
++
++ radio_switch: regulator@11 {
++ compatible = "regulator-fixed";
++ regulator-name = "radio_on";
++ regulator-min-microvolt = <3300000>;
++ regulator-max-microvolt = <3300000>;
++ gpio = <&gpio_ext_74 13 GPIO_ACTIVE_HIGH>;
++ enable-active-high;
++ regulator-always-on;
++ };
++
++ kim {
++ compatible = "kim";
++ nshutdown_gpio = <343>; /* gpio_ext_74 pin 3 */
++ /* serial1 */
++ dev_name = "/dev/ttySC1";
++ flow_cntrl = <0>;
++ /* int div 8 hscif@26.6666656MHz */
++ baud_rate = <3333332>;
++ };
++};
++
++&pfc {
++ /delete-node/hscif4;
++
++ hscif0_pins: hscif0 {
++ groups = "hscif0_data";
++ function = "hscif0";
++ };
++
++ hscif1_pins: hscif1 {
++ groups = "hscif1_data_a", "hscif1_ctrl_a";
++ function = "hscif1";
++ };
++};
++
++&gpio0 {
++ /delete-node/gpioext_2_20_irq;
++};
++
++&gpio1 {
++ /delete-node/gpioext_2_21_irq;
++};
++
++&gpio5 {
++ /delete-node/touch_irq;
++ /delete-node/bt_strap;
++
++ /* V1 has h/w bug with swapped RTS and CTS on BT interface */
++ /* Ignore these pins */
++ hscif0_cts {
++ gpio-hog;
++ gpios = <15 GPIO_ACTIVE_HIGH>;
++ input;
++ line-name = "hscif0 CTS";
++ };
++
++ hscif0_rts {
++ gpio-hog;
++ gpios = <16 GPIO_ACTIVE_HIGH>;
++ input;
++ line-name = "hscif0 RTS";
++ };
++};
++
++&gpio7 {
++ /delete-node/gpioext_2_21_irq;
++};
++
++&hscif4 {
++ /delete-property/pinctrl-0;
++ /delete-property/pinctrl-names;
++
++ status = "disabled";
++};
++
++&i2c2 {
++ /delete-node/pca9535@20;
++ /delete-node/pca9535@21;
++
++ gpio_ext_74: pca9539@74 {
++ compatible = "nxp,pca9539";
++ reg = <0x74>;
++ gpio-controller;
++ #gpio-cells = <2>;
++
++ hub_pwen {
++ gpio-hog;
++ gpios = <6 GPIO_ACTIVE_HIGH>;
++ output-high;
++ line-name = "HUB pwen";
++ };
++ hub_rst {
++ gpio-hog;
++ gpios = <7 GPIO_ACTIVE_HIGH>;
++ output-high;
++ line-name = "HUB rst";
++ };
++ };
++
++ gpio_ext_75: pca9539@75 {
++ compatible = "nxp,pca9539";
++ reg = <0x75>;
++ gpio-controller;
++ #gpio-cells = <2>;
++ };
++};
++
++&i2cswitch2 {
++ reg = <0x71>;
++ reset-gpios= <&gpio5 3 GPIO_ACTIVE_LOW>;
++};
++
++&i2c4 {
++ /delete-node/pca9535@21;
++
++ gpio_ext_76: pca9539@76 {
++ compatible = "nxp,pca9539";
++ reg = <0x76>;
++ gpio-controller;
++ #gpio-cells = <2>;
++ };
++
++ gpio_ext_77: pca9539@77 {
++ compatible = "nxp,pca9539";
++ reg = <0x77>;
++ gpio-controller;
++ #gpio-cells = <2>;
++
++ port_b_a0 {
++ gpio-hog;
++ gpios = <0 GPIO_ACTIVE_HIGH>;
++ output-low;
++ line-name = "Video-B A0";
++ };
++ port_b_a1 {
++ gpio-hog;
++ gpios = <1 GPIO_ACTIVE_HIGH>;
++ output-high;
++ line-name = "Video-B A1";
++ };
++ port_a_a0 {
++ gpio-hog;
++ gpios = <2 GPIO_ACTIVE_HIGH>;
++ output-low;
++ line-name = "Video-A A0";
++ };
++ port_a_a1 {
++ gpio-hog;
++ gpios = <3 GPIO_ACTIVE_HIGH>;
++ output-high;
++ line-name = "Video-A A1";
++ };
++ lvds_vs_fpdl {
++ gpio-hog;
++ gpios = <14 GPIO_ACTIVE_HIGH>;
++ output-high;
++ line-name = "LVDS switch";
++ };
++ };
++};
++
++&i2cswitch4 {
++ reg = <0x71>;
++ reset-gpios= <&gpio3 15 GPIO_ACTIVE_LOW>;
++};
++
++&wlcore {
++ interrupts = <25 IRQ_TYPE_EDGE_FALLING>;
++};
diff --git a/arch/arm64/boot/dts/renesas/r8a7796-m3ulcb-kf.dts b/arch/arm64/boot/dts/renesas/r8a7796-m3ulcb-kf.dts
new file mode 100644
-index 0000000..ffaef74
+index 0000000..82faaa1
--- /dev/null
+++ b/arch/arm64/boot/dts/renesas/r8a7796-m3ulcb-kf.dts
-@@ -0,0 +1,1197 @@
+@@ -0,0 +1,1103 @@
+/*
+ * Device Tree Source for the M3ULCB Kingfisher board on r8a7796
+ *
@@ -222,69 +465,6 @@ index 0000000..ffaef74
+ };
+ };
+
-+ sound_amp: sound@3 {
-+ pinctrl-0 = <&sound_9_pins>;
-+ pinctrl-names = "default";
-+ compatible = "simple-audio-card";
-+
-+ simple-audio-card,name = "power_amp";
-+
-+ simple-audio-card,dai-link@0 {
-+ format = "i2s";
-+ cpu {
-+ sound-dai = <&rcar_sound 3>;
-+ };
-+ codec {
-+ sound-dai = <&max98371_L>;
-+ };
-+ };
-+ simple-audio-card,dai-link@1 {
-+ format = "i2s";
-+ cpu {
-+ sound-dai = <&rcar_sound 3>;
-+ };
-+ codec {
-+ sound-dai = <&max98371_R>;
-+ };
-+ };
-+ simple-audio-card,dai-link@2 {
-+ format = "i2s";
-+ cpu {
-+ sound-dai = <&rcar_sound 3>;
-+ };
-+ codec {
-+ sound-dai = <&max98371_RL>;
-+ };
-+ };
-+ simple-audio-card,dai-link@3 {
-+ format = "i2s";
-+ cpu {
-+ sound-dai = <&rcar_sound 3>;
-+ };
-+ codec {
-+ sound-dai = <&max98371_RR>;
-+ };
-+ };
-+ simple-audio-card,dai-link@4 {
-+ format = "i2s";
-+ cpu {
-+ sound-dai = <&rcar_sound 3>;
-+ };
-+ codec {
-+ sound-dai = <&max98371_C>;
-+ };
-+ };
-+ simple-audio-card,dai-link@5 {
-+ format = "i2s";
-+ cpu {
-+ sound-dai = <&rcar_sound 3>;
-+ };
-+ codec {
-+ sound-dai = <&max98371_S>;
-+ };
-+ };
-+ };
-+
+ lvds-encoder {
+ compatible = "thine,thc63lvdm83d";
+
@@ -367,11 +547,6 @@ index 0000000..ffaef74
+ function = "ssi";
+ };
+
-+ sound_9_pins: sound2 {
-+ groups = "ssi9_ctrl_b", "ssi9_data_b";
-+ function = "ssi";
-+ };
-+
+ usb0_pins: usb0 {
+ groups = "usb0";
+ function = "usb0";
@@ -476,7 +651,7 @@ index 0000000..ffaef74
+ interrupts = <15 IRQ_TYPE_EDGE_FALLING>;
+ };
+
-+ i2cswitch2@74 {
++ i2cswitch2: pca9548@74 {
+ compatible = "nxp,pca9548";
+ #address-cells = <1>;
+ #size-cells = <0>;
@@ -502,37 +677,6 @@ index 0000000..ffaef74
+ #size-cells = <0>;
+ reg = <2>;
+ /* Power amp node(s) */
-+
-+ max98371_L: max98371@0x31 {
-+ compatible = "maxim,max98371";
-+ reg = <0x31>;
-+ #sound-dai-cells = <0>;
-+ };
-+ max98371_R: max98371@0x32 {
-+ compatible = "maxim,max98371";
-+ reg = <0x32>;
-+ #sound-dai-cells = <0>;
-+ };
-+ max98371_RL: max98371@0x33 {
-+ compatible = "maxim,max98371";
-+ reg = <0x33>;
-+ #sound-dai-cells = <0>;
-+ };
-+ max98371_RR: max98371@0x34 {
-+ compatible = "maxim,max98371";
-+ reg = <0x34>;
-+ #sound-dai-cells = <0>;
-+ };
-+ max98371_C: max98371@0x35 {
-+ compatible = "maxim,max98371";
-+ reg = <0x35>;
-+ #sound-dai-cells = <0>;
-+ };
-+ max98371_S: max98371@0x36 {
-+ compatible = "maxim,max98371";
-+ reg = <0x36>;
-+ #sound-dai-cells = <0>;
-+ };
+ };
+
+ i2c@3 {
@@ -617,7 +761,7 @@ index 0000000..ffaef74
+ interrupts = <3 IRQ_TYPE_EDGE_FALLING>;
+ };
+
-+ i2cswitch4@74 {
++ i2cswitch4: pca9548@74 {
+ compatible = "nxp,pca9548";
+ #address-cells = <1>;
+ #size-cells = <0>;
@@ -635,7 +779,7 @@ index 0000000..ffaef74
+ #address-cells = <1>;
+ #size-cells = <0>;
+ reg = <1>;
-+ /* Video input "A" acc node(s) */
++ /* Slot A (CN10) */
+
+ ov106xx@0 {
+ compatible = "ovti,ov106xx";
@@ -731,6 +875,7 @@ index 0000000..ffaef74
+ ti964-ti9x3@0 {
+ compatible = "ti,ti964-ti9x3";
+ reg = <0x3a>;
++ gpios = <&video_a_ext1 10 GPIO_ACTIVE_HIGH>;
+ ti,sensor_delay = <350>;
+ ti,links = <4>;
+ ti,lanes = <4>;
@@ -865,7 +1010,7 @@ index 0000000..ffaef74
+ #address-cells = <1>;
+ #size-cells = <0>;
+ reg = <7>;
-+ /* Video input "A" main node(s) */
++ /* Slot A (CN10) */
+
+ video_a_ext0: pca9535@26 {
+ compatible = "nxp,pca9535";
@@ -971,6 +1116,18 @@ index 0000000..ffaef74
+ output-high;
+ line-name = "Video-A PWR1";
+ };
++ video_b_cam_pwr {
++ gpio-hog;
++ gpios = <11 GPIO_ACTIVE_HIGH>;
++ output-high;
++ line-name = "Video-B PWR3";
++ };
++ video_a_cam_pwr3 {
++ gpio-hog;
++ gpios = <11 GPIO_ACTIVE_HIGH>;
++ output-high;
++ line-name = "Video-A PWR3";
++ };
+ };
+ };
+ };
@@ -1173,10 +1330,6 @@ index 0000000..ffaef74
+ dai2 {
+ capture = <&ssi6>;
+ };
-+
-+ dai3 {
-+ playback = <&ssi9>;
-+ };
+ };
+};
+
@@ -1205,10 +1358,6 @@ index 0000000..ffaef74
+ };
+};
+
-+&xhci0 {
-+ status = "okay";
-+};
-+
+&usb2_phy0 {
+ pinctrl-0 = <&usb0_pins>;
+ pinctrl-names = "default";
diff --git a/meta-rcar-gen3-adas/recipes-kernel/linux/linux-renesas/0041-arm64-dts-r8a7795-h3ulcb-kf-add-ADAS-board.patch b/meta-rcar-gen3-adas/recipes-kernel/linux/linux-renesas/0041-arm64-dts-r8a7795-h3ulcb-kf-add-ADAS-board.patch
index 6898c49..a0144b7 100644
--- a/meta-rcar-gen3-adas/recipes-kernel/linux/linux-renesas/0041-arm64-dts-r8a7795-h3ulcb-kf-add-ADAS-board.patch
+++ b/meta-rcar-gen3-adas/recipes-kernel/linux/linux-renesas/0041-arm64-dts-r8a7795-h3ulcb-kf-add-ADAS-board.patch
@@ -8,28 +8,276 @@ H3ULCB.View board on R8A7795 SoC
Signed-off-by: Vladimir Barinov <vladimir.barinov@cogentembedded.com>
---
arch/arm64/boot/dts/renesas/Makefile | 1 +
- .../boot/dts/renesas/r8a7795-h3ulcb-kf.dts | 1683 ++++++++++++++++++++
- 2 files changed, 1684 insertions(+)
+ .../boot/dts/renesas/r8a7795-h3ulcb-kf-v1.dts | 240 +++
+ arch/arm64/boot/dts/renesas/r8a7795-h3ulcb-kf.dts | 1565 ++++++++++++++++++++
+ 3 files changed, 1806 insertions(+)
+ create mode 100644 arch/arm64/boot/dts/renesas/r8a7795-h3ulcb-kf-v1.dts
create mode 100644 arch/arm64/boot/dts/renesas/r8a7795-h3ulcb-kf.dts
diff --git a/arch/arm64/boot/dts/renesas/Makefile b/arch/arm64/boot/dts/renesas/Makefile
-index 06207e3..a5dd1d3 100644
+index d163df7..86a08db 100644
--- a/arch/arm64/boot/dts/renesas/Makefile
+++ b/arch/arm64/boot/dts/renesas/Makefile
-@@ -10,6 +10,7 @@ dtb-$(CONFIG_ARCH_R8A7795) += r8a7795-es1-h3ulcb-view.dtb
+@@ -15,6 +15,7 @@ dtb-$(CONFIG_ARCH_R8A7796) += r8a7796-m3ulcb-kf.dtb r8a7796-m3ulcb-kf-v1.dtb
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
++dtb-$(CONFIG_ARCH_R8A7795) += r8a7795-h3ulcb-kf.dtb r8a7795-h3ulcb-kf-v1.dtb
always := $(dtb-y)
clean-files := *.dtb
+diff --git a/arch/arm64/boot/dts/renesas/r8a7795-h3ulcb-kf-v1.dts b/arch/arm64/boot/dts/renesas/r8a7795-h3ulcb-kf-v1.dts
+new file mode 100644
+index 0000000..3485652
+--- /dev/null
++++ b/arch/arm64/boot/dts/renesas/r8a7795-h3ulcb-kf-v1.dts
+@@ -0,0 +1,240 @@
++/*
++ * Device Tree Source for the H3ULCB Kingfisher V1 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-kf.dts"
++
++/ {
++ model = "Renesas H3ULCB Kingfisher V1 board based on r8a7795";
++
++ aliases {
++ serial1 = &hscif0;
++ serial2 = &hscif1;
++ };
++
++ wlan_en: regulator@4 {
++ compatible = "regulator-fixed";
++ regulator-name = "wlan-en-regulator";
++
++ regulator-min-microvolt = <3300000>;
++ regulator-max-microvolt = <3300000>;
++
++ gpio = <&gpio_ext_74 4 GPIO_ACTIVE_HIGH>;
++ enable-active-high;
++ };
++
++ codec_en_reg: regulator@6 {
++ compatible = "regulator-fixed";
++ regulator-name = "codec-en-regulator";
++ regulator-min-microvolt = <3300000>;
++ regulator-max-microvolt = <3300000>;
++
++ gpio = <&gpio_ext_74 15 0>;
++
++ /* delay - CHECK */
++ startup-delay-us = <70000>;
++ enable-active-high;
++ };
++
++ amp_en_reg: regulator@7 {
++ compatible = "regulator-fixed";
++ regulator-name = "amp-en-regulator";
++ regulator-min-microvolt = <3300000>;
++ regulator-max-microvolt = <3300000>;
++
++ gpio = <&gpio_ext_74 0 0>;
++
++ startup-delay-us = <0>;
++ enable-active-high;
++ };
++
++ /delete-node/regulator@8;
++
++ sdio_switch: regulator@9 {
++ compatible = "regulator-fixed";
++ regulator-name = "wifi_on";
++ regulator-min-microvolt = <3300000>;
++ regulator-max-microvolt = <3300000>;
++ gpio = <&gpio_ext_74 5 0>;
++ enable-active-low;
++ regulator-always-on;
++ };
++
++ /delete-node/regulator@10;
++
++ radio_switch: regulator@11 {
++ compatible = "regulator-fixed";
++ regulator-name = "radio_on";
++ regulator-min-microvolt = <3300000>;
++ regulator-max-microvolt = <3300000>;
++ gpio = <&gpio_ext_74 13 GPIO_ACTIVE_HIGH>;
++ enable-active-high;
++ regulator-always-on;
++ };
++
++ kim {
++ compatible = "kim";
++ nshutdown_gpio = <343>; /* gpio_ext_74 pin 3 */
++ /* serial1 */
++ dev_name = "/dev/ttySC1";
++ flow_cntrl = <0>;
++ /* int div 8 hscif@26.6666656MHz */
++ baud_rate = <3333332>;
++ };
++};
++
++&pfc {
++ /delete-node/hscif4;
++
++ hscif0_pins: hscif0 {
++ groups = "hscif0_data";
++ function = "hscif0";
++ };
++
++ hscif1_pins: hscif1 {
++ groups = "hscif1_data_a", "hscif1_ctrl_a";
++ function = "hscif1";
++ };
++};
++
++&gpio0 {
++ /delete-node/gpioext_2_20_irq;
++};
++
++&gpio1 {
++ /delete-node/gpioext_2_21_irq;
++};
++
++&gpio5 {
++ /delete-node/touch_irq;
++ /delete-node/bt_strap;
++
++ /* V1 has h/w bug with swapped RTS and CTS on BT interface */
++ /* Ignore these pins */
++ hscif0_cts {
++ gpio-hog;
++ gpios = <15 GPIO_ACTIVE_HIGH>;
++ input;
++ line-name = "hscif0 CTS";
++ };
++
++ hscif0_rts {
++ gpio-hog;
++ gpios = <16 GPIO_ACTIVE_HIGH>;
++ input;
++ line-name = "hscif0 RTS";
++ };
++};
++
++&gpio7 {
++ /delete-node/gpioext_2_21_irq;
++};
++
++&hscif4 {
++ /delete-property/pinctrl-0;
++ /delete-property/pinctrl-names;
++
++ status = "disabled";
++};
++
++&i2c2 {
++ /delete-node/pca9535@20;
++ /delete-node/pca9535@21;
++
++ gpio_ext_74: pca9539@74 {
++ compatible = "nxp,pca9539";
++ reg = <0x74>;
++ gpio-controller;
++ #gpio-cells = <2>;
++
++ hub_pwen {
++ gpio-hog;
++ gpios = <6 GPIO_ACTIVE_HIGH>;
++ output-high;
++ line-name = "HUB pwen";
++ };
++ hub_rst {
++ gpio-hog;
++ gpios = <7 GPIO_ACTIVE_HIGH>;
++ output-high;
++ line-name = "HUB rst";
++ };
++ };
++
++ gpio_ext_75: pca9539@75 {
++ compatible = "nxp,pca9539";
++ reg = <0x75>;
++ gpio-controller;
++ #gpio-cells = <2>;
++ };
++};
++
++&i2cswitch2 {
++ reg = <0x71>;
++ reset-gpios= <&gpio5 3 GPIO_ACTIVE_LOW>;
++};
++
++&i2c4 {
++ /delete-node/pca9535@21;
++
++ gpio_ext_76: pca9539@76 {
++ compatible = "nxp,pca9539";
++ reg = <0x76>;
++ gpio-controller;
++ #gpio-cells = <2>;
++ };
++
++ gpio_ext_77: pca9539@77 {
++ compatible = "nxp,pca9539";
++ reg = <0x77>;
++ gpio-controller;
++ #gpio-cells = <2>;
++
++ port_b_a0 {
++ gpio-hog;
++ gpios = <0 GPIO_ACTIVE_HIGH>;
++ output-low;
++ line-name = "Video-B A0";
++ };
++ port_b_a1 {
++ gpio-hog;
++ gpios = <1 GPIO_ACTIVE_HIGH>;
++ output-high;
++ line-name = "Video-B A1";
++ };
++ port_a_a0 {
++ gpio-hog;
++ gpios = <2 GPIO_ACTIVE_HIGH>;
++ output-low;
++ line-name = "Video-A A0";
++ };
++ port_a_a1 {
++ gpio-hog;
++ gpios = <3 GPIO_ACTIVE_HIGH>;
++ output-high;
++ line-name = "Video-A A1";
++ };
++ lvds_vs_fpdl {
++ gpio-hog;
++ gpios = <14 GPIO_ACTIVE_HIGH>;
++ output-high;
++ line-name = "LVDS switch";
++ };
++ };
++};
++
++&i2cswitch4 {
++ reg = <0x71>;
++ reset-gpios= <&gpio3 15 GPIO_ACTIVE_LOW>;
++};
++
++&wlcore {
++ interrupts = <25 IRQ_TYPE_EDGE_FALLING>;
++};
diff --git a/arch/arm64/boot/dts/renesas/r8a7795-h3ulcb-kf.dts b/arch/arm64/boot/dts/renesas/r8a7795-h3ulcb-kf.dts
new file mode 100644
-index 0000000..50a37e0
+index 0000000..78c708f
--- /dev/null
+++ b/arch/arm64/boot/dts/renesas/r8a7795-h3ulcb-kf.dts
-@@ -0,0 +1,1679 @@
+@@ -0,0 +1,1565 @@
+/*
+ * Device Tree Source for the H3ULCB Kingfisher board on r8a7795
+ *
@@ -222,69 +470,6 @@ index 0000000..50a37e0
+ };
+ };
+
-+ sound_amp: sound@3 {
-+ pinctrl-0 = <&sound_9_pins>;
-+ pinctrl-names = "default";
-+ compatible = "simple-audio-card";
-+
-+ simple-audio-card,name = "power_amp";
-+
-+ simple-audio-card,dai-link@0 {
-+ format = "i2s";
-+ cpu {
-+ sound-dai = <&rcar_sound 3>;
-+ };
-+ codec {
-+ sound-dai = <&max98371_L>;
-+ };
-+ };
-+ simple-audio-card,dai-link@1 {
-+ format = "i2s";
-+ cpu {
-+ sound-dai = <&rcar_sound 3>;
-+ };
-+ codec {
-+ sound-dai = <&max98371_R>;
-+ };
-+ };
-+ simple-audio-card,dai-link@2 {
-+ format = "i2s";
-+ cpu {
-+ sound-dai = <&rcar_sound 3>;
-+ };
-+ codec {
-+ sound-dai = <&max98371_RL>;
-+ };
-+ };
-+ simple-audio-card,dai-link@3 {
-+ format = "i2s";
-+ cpu {
-+ sound-dai = <&rcar_sound 3>;
-+ };
-+ codec {
-+ sound-dai = <&max98371_RR>;
-+ };
-+ };
-+ simple-audio-card,dai-link@4 {
-+ format = "i2s";
-+ cpu {
-+ sound-dai = <&rcar_sound 3>;
-+ };
-+ codec {
-+ sound-dai = <&max98371_C>;
-+ };
-+ };
-+ simple-audio-card,dai-link@5 {
-+ format = "i2s";
-+ cpu {
-+ sound-dai = <&rcar_sound 3>;
-+ };
-+ codec {
-+ sound-dai = <&max98371_S>;
-+ };
-+ };
-+ };
-+
+ lvds-encoder {
+ compatible = "thine,thc63lvdm83d";
+
@@ -367,11 +552,6 @@ index 0000000..50a37e0
+ function = "ssi";
+ };
+
-+ sound_9_pins: sound2 {
-+ groups = "ssi9_ctrl_b", "ssi9_data_b";
-+ function = "ssi";
-+ };
-+
+ usb0_pins: usb0 {
+ groups = "usb0";
+ function = "usb0";
@@ -476,7 +656,7 @@ index 0000000..50a37e0
+ interrupts = <15 IRQ_TYPE_EDGE_FALLING>;
+ };
+
-+ i2cswitch2@74 {
++ i2cswitch2: pca9548@74 {
+ compatible = "nxp,pca9548";
+ #address-cells = <1>;
+ #size-cells = <0>;
@@ -502,37 +682,6 @@ index 0000000..50a37e0
+ #size-cells = <0>;
+ reg = <2>;
+ /* Power amp node(s) */
-+
-+ max98371_L: max98371@0x31 {
-+ compatible = "maxim,max98371";
-+ reg = <0x31>;
-+ #sound-dai-cells = <0>;
-+ };
-+ max98371_R: max98371@0x32 {
-+ compatible = "maxim,max98371";
-+ reg = <0x32>;
-+ #sound-dai-cells = <0>;
-+ };
-+ max98371_RL: max98371@0x33 {
-+ compatible = "maxim,max98371";
-+ reg = <0x33>;
-+ #sound-dai-cells = <0>;
-+ };
-+ max98371_RR: max98371@0x34 {
-+ compatible = "maxim,max98371";
-+ reg = <0x34>;
-+ #sound-dai-cells = <0>;
-+ };
-+ max98371_C: max98371@0x35 {
-+ compatible = "maxim,max98371";
-+ reg = <0x35>;
-+ #sound-dai-cells = <0>;
-+ };
-+ max98371_S: max98371@0x36 {
-+ compatible = "maxim,max98371";
-+ reg = <0x36>;
-+ #sound-dai-cells = <0>;
-+ };
+ };
+
+ i2c@3 {
@@ -617,7 +766,7 @@ index 0000000..50a37e0
+ interrupts = <3 IRQ_TYPE_EDGE_FALLING>;
+ };
+
-+ i2cswitch4@74 {
++ i2cswitch4: pca9548@74 {
+ compatible = "nxp,pca9548";
+ #address-cells = <1>;
+ #size-cells = <0>;
@@ -635,7 +784,7 @@ index 0000000..50a37e0
+ #address-cells = <1>;
+ #size-cells = <0>;
+ reg = <1>;
-+ /* Video input "A" acc node(s) */
++ /* Slot A (CN10) */
+
+ ov106xx@0 {
+ compatible = "ovti,ov106xx";
@@ -731,6 +880,7 @@ index 0000000..50a37e0
+ ti964-ti9x3@0 {
+ compatible = "ti,ti964-ti9x3";
+ reg = <0x3a>;
++ gpios = <&video_a_ext1 10 GPIO_ACTIVE_HIGH>;
+ ti,sensor_delay = <350>;
+ ti,links = <4>;
+ ti,lanes = <4>;
@@ -844,7 +994,7 @@ index 0000000..50a37e0
+ #address-cells = <1>;
+ #size-cells = <0>;
+ reg = <2>;
-+ /* Video input "B" acc node(s) */
++ /* Slot B (CN11) */
+
+ ov106xx@4 {
+ compatible = "ovti,ov106xx";
@@ -940,6 +1090,7 @@ index 0000000..50a37e0
+ ti964-ti9x3@1 {
+ compatible = "ti,ti964-ti9x3";
+ reg = <0x3a>;
++ gpios = <&video_b_ext1 10 GPIO_ACTIVE_HIGH>;
+ ti,sensor_delay = <350>;
+ ti,links = <4>;
+ ti,lanes = <4>;
@@ -1049,32 +1200,11 @@ index 0000000..50a37e0
+ };
+ };
+
-+ i2c@3 {
-+ #address-cells = <1>;
-+ #size-cells = <0>;
-+ reg = <3>;
-+ /* MOST node(s) */
-+ };
-+
-+ i2c@4 {
-+ #address-cells = <1>;
-+ #size-cells = <0>;
-+ reg = <4>;
-+ /* CSI camera node(s) */
-+ };
-+
-+ i2c@5 {
-+ #address-cells = <1>;
-+ #size-cells = <0>;
-+ reg = <5>;
-+ /* CMOS camera node(s) */
-+ };
-+
+ i2c@6 {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ reg = <6>;
-+ /* Video input "B" main node(s) */
++ /* Slot B (CN11) */
+
+ video_b_ext0: pca9535@27 {
+ compatible = "nxp,pca9535";
@@ -1180,6 +1310,12 @@ index 0000000..50a37e0
+ output-high;
+ line-name = "Video-B PWR1";
+ };
++ video_b_cam_pwr3 {
++ gpio-hog;
++ gpios = <11 GPIO_ACTIVE_HIGH>;
++ output-high;
++ line-name = "Video-B PWR3";
++ };
+ };
+ };
+
@@ -1187,7 +1323,7 @@ index 0000000..50a37e0
+ #address-cells = <1>;
+ #size-cells = <0>;
+ reg = <7>;
-+ /* Video input "A" main node(s) */
++ /* Slot A (CN10) */
+
+ video_a_ext0: pca9535@26 {
+ compatible = "nxp,pca9535";
@@ -1293,6 +1429,12 @@ index 0000000..50a37e0
+ output-high;
+ line-name = "Video-A PWR1";
+ };
++ video_a_cam_pwr3 {
++ gpio-hog;
++ gpios = <11 GPIO_ACTIVE_HIGH>;
++ output-high;
++ line-name = "Video-A PWR3";
++ };
+ };
+ };
+ };
@@ -1659,10 +1801,6 @@ index 0000000..50a37e0
+ dai2 {
+ capture = <&ssi6>;
+ };
-+
-+ dai3 {
-+ playback = <&ssi9>;
-+ };
+ };
+};
+
@@ -1691,10 +1829,6 @@ index 0000000..50a37e0
+ };
+};
+
-+&xhci0 {
-+ status = "okay";
-+};
-+
+&usb2_phy0 {
+ pinctrl-0 = <&usb0_pins>;
+ pinctrl-names = "default";
diff --git a/meta-rcar-gen3-adas/recipes-kernel/linux/linux-renesas_4.9.bbappend b/meta-rcar-gen3-adas/recipes-kernel/linux/linux-renesas_4.9.bbappend
index d842fe1..76dabb7 100644
--- a/meta-rcar-gen3-adas/recipes-kernel/linux/linux-renesas_4.9.bbappend
+++ b/meta-rcar-gen3-adas/recipes-kernel/linux/linux-renesas_4.9.bbappend
@@ -26,6 +26,7 @@ SRC_URI_append = " \
file://0021-btwilink-add-minimal-device-tree-support.patch \
file://0022-ASoC-Modify-check-condition-of-multiple-bindings-of-.patch \
file://0023-ASoC-add-dummy-Si468x-driver.patch \
+ file://0024-wl18xx-do-not-invert-IRQ-on-WLxxxx-side.patch \
file://0030-Gen3-LVDS-cameras.patch \
file://0031-arm64-dts-r8a7795-es1-salvator-x-view-add-ADAS-board.patch \
file://0032-arm64-dts-r8a7795-es1-h3ulcb-view-add-ADAS-board.patch \