summaryrefslogtreecommitdiffstats
path: root/meta-agl-refhw-gen3/recipes-kernel/files/0002-agl-reference-hardware-sample-bsp.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta-agl-refhw-gen3/recipes-kernel/files/0002-agl-reference-hardware-sample-bsp.patch')
-rw-r--r--meta-agl-refhw-gen3/recipes-kernel/files/0002-agl-reference-hardware-sample-bsp.patch846
1 files changed, 846 insertions, 0 deletions
diff --git a/meta-agl-refhw-gen3/recipes-kernel/files/0002-agl-reference-hardware-sample-bsp.patch b/meta-agl-refhw-gen3/recipes-kernel/files/0002-agl-reference-hardware-sample-bsp.patch
new file mode 100644
index 0000000..6763558
--- /dev/null
+++ b/meta-agl-refhw-gen3/recipes-kernel/files/0002-agl-reference-hardware-sample-bsp.patch
@@ -0,0 +1,846 @@
+---
+ .../arm64/boot/dts/renesas/r8a7795-salvator-xs.dts | 10 -
+ arch/arm64/boot/dts/renesas/salvator-common.dtsi | 431 ++++++++++-----------
+ drivers/iio/imu/Kconfig | 1 +
+ drivers/iio/imu/Makefile | 1 +
+ drivers/media/i2c/adv748x/adv748x-core.c | 48 ++-
+ drivers/media/i2c/adv748x/adv748x.h | 12 +
+ drivers/pinctrl/sh-pfc/pfc-r8a7795.c | 6 +-
+ 7 files changed, 260 insertions(+), 249 deletions(-)
+
+diff --git a/arch/arm64/boot/dts/renesas/r8a7795-salvator-xs.dts b/arch/arm64/boot/dts/renesas/r8a7795-salvator-xs.dts
+index 498f788..b4236a5 100644
+--- a/arch/arm64/boot/dts/renesas/r8a7795-salvator-xs.dts
++++ b/arch/arm64/boot/dts/renesas/r8a7795-salvator-xs.dts
+@@ -166,16 +166,6 @@
+ remote-endpoint = <&rcar_dw_hdmi1_out>;
+ };
+
+-&lvds0 {
+- ports {
+- port@1 {
+- lvds0_out: endpoint {
+- remote-endpoint = <&lvds_in>;
+- };
+- };
+- };
+-};
+-
+ &ohci2 {
+ status = "okay";
+ };
+diff --git a/arch/arm64/boot/dts/renesas/salvator-common.dtsi b/arch/arm64/boot/dts/renesas/salvator-common.dtsi
+index 878ed7c..32d19d9 100644
+--- a/arch/arm64/boot/dts/renesas/salvator-common.dtsi
++++ b/arch/arm64/boot/dts/renesas/salvator-common.dtsi
+@@ -34,6 +34,10 @@
+ aliases {
+ serial0 = &scif2;
+ serial1 = &scif1;
++ serial2 = &scif5;
++ serial3 = &hscif1;
++ serial4 = &hscif0;
++ serial5 = &hscif2;
+ ethernet0 = &avb;
+ };
+
+@@ -62,65 +66,26 @@
+ resets = <&cpg 922>;
+ };
+
+- backlight: backlight {
+- compatible = "pwm-backlight";
+- pwms = <&pwm1 0 50000>;
+-
+- brightness-levels = <256 128 64 16 8 4 0>;
+- default-brightness-level = <6>;
+-
+- power-supply = <&reg_12v>;
+- enable-gpios = <&gpio6 7 GPIO_ACTIVE_HIGH>;
+- };
+-
+- cvbs-in {
+- compatible = "composite-video-connector";
+- label = "CVBS IN";
+-
+- port {
+- cvbs_con: endpoint {
+- remote-endpoint = <&adv7482_ain7>;
+- };
+- };
+- };
+-
+- hdmi-in {
++ hdmi0-in {
+ compatible = "hdmi-connector";
+- label = "HDMI IN";
++ label = "HDMI0 IN";
+ type = "a";
+
+ port {
+ hdmi_in_con: endpoint {
+- remote-endpoint = <&adv7482_hdmi>;
++ remote-endpoint = <&adv7481_hdmi>;
+ };
+ };
+ };
+
+- lvds {
+- compatible = "panel-lvds";
+-
+- width-mm = <210>;
+- height-mm = <158>;
+-
+- data-mapping = "jeida-24";
+- enable-gpios = <&gpio6 7 GPIO_ACTIVE_HIGH>;
+-
+- panel-timing {
+- /* 1024x768 @60Hz */
+- clock-frequency = <65000000>;
+- hactive = <1024>;
+- vactive = <768>;
+- hsync-len = <136>;
+- hfront-porch = <20>;
+- hback-porch = <160>;
+- vfront-porch = <3>;
+- vback-porch = <29>;
+- vsync-len = <6>;
+- };
++ hdmi2-in {
++ compatible = "hdmi-connector";
++ label = "HDMI2 IN";
++ type = "a";
+
+ port {
+- lvds_in: endpoint {
+- remote-endpoint = <&lvds0_out>;
++ hdmi_in_con2: endpoint {
++ remote-endpoint = <&adv7481_hdmi2>;
+ };
+ };
+ };
+@@ -160,17 +125,6 @@
+ dais = <&rsnd_port0>;
+ };
+
+- vbus0_usb2: regulator-vbus0-usb2 {
+- compatible = "regulator-fixed";
+-
+- regulator-name = "USB20_VBUS0";
+- regulator-min-microvolt = <5000000>;
+- regulator-max-microvolt = <5000000>;
+-
+- gpio = <&gpio6 16 GPIO_ACTIVE_HIGH>;
+- enable-active-high;
+- };
+-
+ vcc_sdhi0: regulator-vcc-sdhi0 {
+ compatible = "regulator-fixed";
+
+@@ -241,40 +195,6 @@
+ };
+ };
+
+- vga {
+- compatible = "vga-connector";
+- no-use-ddc;
+- max-pixelclock = <100000>;
+-
+- port {
+- vga_in: endpoint {
+- remote-endpoint = <&adv7123_out>;
+- };
+- };
+- };
+-
+- vga-encoder {
+- compatible = "adi,adv7123";
+-
+- ports {
+- #address-cells = <1>;
+- #size-cells = <0>;
+-
+- port@0 {
+- reg = <0>;
+- adv7123_in: endpoint {
+- remote-endpoint = <&du_out_rgb>;
+- };
+- };
+- port@1 {
+- reg = <1>;
+- adv7123_out: endpoint {
+- remote-endpoint = <&vga_in>;
+- };
+- };
+- };
+- };
+-
+ x12_clk: x12 {
+ compatible = "fixed-clock";
+ #clock-cells = <0>;
+@@ -325,49 +245,41 @@
+ };
+ };
+
+-&csi20 {
++&csi40 {
+ status = "okay";
+
+ ports {
+ port@0 {
+ reg = <0>;
+- csi20_in: endpoint {
++
++ csi40_in: endpoint {
+ clock-lanes = <0>;
+- data-lanes = <1>;
+- remote-endpoint = <&adv7482_txb>;
++ data-lanes = <1 2 3 4>;
++ remote-endpoint = <&adv7481_txa>;
+ };
+ };
+ };
+ };
+
+-&csi40 {
++&csi41 {
+ status = "okay";
+
+ ports {
+ port@0 {
+ reg = <0>;
+
+- csi40_in: endpoint {
++ csi41_in: endpoint {
+ clock-lanes = <0>;
+ data-lanes = <1 2 3 4>;
+- remote-endpoint = <&adv7482_txa>;
++ remote-endpoint = <&adv7481_txa2>;
+ };
+ };
+ };
+ };
+
+ &du {
+- pinctrl-0 = <&du_pins>;
+- pinctrl-names = "default";
+ status = "okay";
+
+- ports {
+- port@0 {
+- endpoint {
+- remote-endpoint = <&adv7123_in>;
+- };
+- };
+- };
+ };
+
+ &ehci0 {
+@@ -383,12 +295,27 @@
+ clock-frequency = <32768>;
+ };
+
++&hscif0 {
++ pinctrl-0 = <&hscif0_pins>;
++ pinctrl-names = "default";
++ uart-has-rtscts;
++
++ status = "okay";
++};
++
+ &hscif1 {
+ pinctrl-0 = <&hscif1_pins>;
+ pinctrl-names = "default";
+
+ /* Please use exclusively to the scif1 node */
+- /* status = "okay"; */
++ status = "okay";
++};
++
++&hscif2 {
++ pinctrl-0 = <&hscif2_pins>;
++ pinctrl-names = "default";
++
++ status = "okay";
+ };
+
+ &hsusb {
+@@ -404,24 +331,65 @@
+
+ clock-frequency = <100000>;
+
+- ak4613: codec@10 {
+- compatible = "asahi-kasei,ak4613";
+- #sound-dai-cells = <0>;
+- reg = <0x10>;
+- clocks = <&rcar_sound 3>;
++ video-receiver@70 {
++ compatible = "adi,adv7481";
++ reg = <0x70>;
+
+- asahi-kasei,in1-single-end;
+- asahi-kasei,in2-single-end;
+- asahi-kasei,out1-single-end;
+- asahi-kasei,out2-single-end;
+- asahi-kasei,out3-single-end;
+- asahi-kasei,out4-single-end;
+- asahi-kasei,out5-single-end;
+- asahi-kasei,out6-single-end;
++ #address-cells = <1>;
++ #size-cells = <0>;
+
+- port {
+- ak4613_endpoint: endpoint {
+- remote-endpoint = <&rsnd_endpoint0>;
++ interrupt-parent = <&gpio0>;
++ interrupt-names = "intrq1", "intrq3";
++ interrupts = <4 IRQ_TYPE_LEVEL_LOW>,
++ <5 IRQ_TYPE_LEVEL_LOW>;
++
++ port@8 {
++ reg = <8>;
++
++ adv7481_hdmi: endpoint {
++ remote-endpoint = <&hdmi_in_con>;
++ };
++ };
++
++ port@a {
++ reg = <10>;
++
++ adv7481_txa: endpoint {
++ clock-lanes = <0>;
++ data-lanes = <1 2 3 4>;
++ remote-endpoint = <&csi40_in>;
++ };
++ };
++
++ };
++
++ video-receiver@71 {
++ compatible = "adi,adv7481";
++ reg = <0x71>;
++
++ #address-cells = <1>;
++ #size-cells = <0>;
++
++ interrupt-parent = <&gpio6>;
++ interrupt-names = "intrq1", "intrq3";
++ interrupts = <0 IRQ_TYPE_LEVEL_LOW>,
++ <1 IRQ_TYPE_LEVEL_LOW>;
++
++ port@8 {
++ reg = <8>;
++
++ adv7481_hdmi2: endpoint {
++ remote-endpoint = <&hdmi_in_con2>;
++ };
++ };
++
++ port@a {
++ reg = <10>;
++
++ adv7481_txa2: endpoint {
++ clock-lanes = <0>;
++ data-lanes = <1 2 3 4>;
++ remote-endpoint = <&csi41_in>;
+ };
+ };
+ };
+@@ -438,75 +406,62 @@
+ };
+ };
+
+-&i2c4 {
++&i2c3 {
++ pinctrl-0 = <&i2c3_pins>;
++ pinctrl-names = "default";
++
+ status = "okay";
+
+- pca9654: gpio@20 {
+- compatible = "onnn,pca9654";
+- reg = <0x20>;
+- gpio-controller;
+- #gpio-cells = <2>;
+- };
++ clock-frequency = <100000>;
+
+- csa_vdd: adc@7c {
+- compatible = "maxim,max9611";
+- reg = <0x7c>;
++ asm330lhh@6a {
++ compatible = "st,asm330lhh";
++ reg = <0x6a>;
+
+- shunt-resistor-micro-ohms = <5000>;
++ interrupt-names = "int1", "int2";
++ interrupts = <&gpio6 23 IRQ_TYPE_EDGE_RISING>,
++ <&gpio2 6 IRQ_TYPE_EDGE_RISING>;
+ };
++};
+
+- csa_dvfs: adc@7f {
+- compatible = "maxim,max9611";
+- reg = <0x7f>;
++&i2c4 {
++ status = "okay";
+
+- shunt-resistor-micro-ohms = <5000>;
++ versaclock5: clock-generator@68 {
++ compatible = "idt,9fgv0841";
++ reg = <0x68>;
++ #clock-cells = <1>;
++ clocks = <&x23_clk>;
++ clock-names = "xin";
+ };
++};
+
+- video-receiver@70 {
+- compatible = "adi,adv7482";
+- reg = <0x70>;
+-
+- #address-cells = <1>;
+- #size-cells = <0>;
+-
+- interrupt-parent = <&gpio6>;
+- interrupt-names = "intrq1", "intrq2";
+- interrupts = <30 IRQ_TYPE_LEVEL_LOW>,
+- <31 IRQ_TYPE_LEVEL_LOW>;
+-
+- port@7 {
+- reg = <7>;
+-
+- adv7482_ain7: endpoint {
+- remote-endpoint = <&cvbs_con>;
+- };
+- };
+-
+- port@8 {
+- reg = <8>;
++&i2c5 {
++ pinctrl-0 = <&i2c5_pins>;
++ pinctrl-names = "default";
+
+- adv7482_hdmi: endpoint {
+- remote-endpoint = <&hdmi_in_con>;
+- };
+- };
++ status = "okay";
+
+- port@a {
+- reg = <10>;
++ clock-frequency = <100000>;
+
+- adv7482_txa: endpoint {
+- clock-lanes = <0>;
+- data-lanes = <1 2 3 4>;
+- remote-endpoint = <&csi40_in>;
+- };
+- };
++ ak4613: codec@10 {
++ compatible = "asahi-kasei,ak4613";
++ #sound-dai-cells = <0>;
++ reg = <0x10>;
++ clocks = <&rcar_sound 3>;
+
+- port@b {
+- reg = <11>;
++ asahi-kasei,in1-single-end;
++ asahi-kasei,in2-single-end;
++ asahi-kasei,out1-single-end;
++ asahi-kasei,out2-single-end;
++ asahi-kasei,out3-single-end;
++ asahi-kasei,out4-single-end;
++ asahi-kasei,out5-single-end;
++ asahi-kasei,out6-single-end;
+
+- adv7482_txb: endpoint {
+- clock-lanes = <0>;
+- data-lanes = <1>;
+- remote-endpoint = <&csi20_in>;
++ port {
++ ak4613_endpoint: endpoint {
++ remote-endpoint = <&rsnd_endpoint0>;
+ };
+ };
+ };
+@@ -550,10 +505,6 @@
+ };
+ };
+
+-&lvds0 {
+- status = "okay";
+-};
+-
+ &ohci0 {
+ dr_mode = "otg";
+ status = "okay";
+@@ -565,6 +516,7 @@
+
+ &pcie_bus_clk {
+ clock-frequency = <100000000>;
++ status = "okay";
+ };
+
+ &pciec0 {
+@@ -575,6 +527,21 @@
+ status = "okay";
+ };
+
++&canfd {
++ pinctrl-0 = <&canfd0_pins &canfd1_pins>;
++ pinctrl-names = "default";
++
++ status = "okay";
++
++ channel0 {
++ status = "okay";
++ };
++
++ channel1 {
++ status = "okay";
++ };
++};
++
+ &pfc {
+ pinctrl-0 = <&scif_clk_pins>;
+ pinctrl-names = "default";
+@@ -597,38 +564,43 @@
+ };
+ };
+
+- du_pins: du {
+- groups = "du_rgb888", "du_sync", "du_oddf", "du_clk_out_0";
+- function = "du";
++ hscif0_pins: hscif0 {
++ groups = "hscif0_data", "hscif0_ctrl";
++ function = "hscif0";
+ };
+
+ hscif1_pins: hscif1 {
+- groups = "hscif1_data_a", "hscif1_ctrl_a";
++ groups = "hscif1_data_a";
+ function = "hscif1";
+ };
+
++ hscif2_pins: hscif2 {
++ groups = "hscif2_data_c";
++ function = "hscif2";
++ };
++
+ i2c2_pins: i2c2 {
+ groups = "i2c2_a";
+ function = "i2c2";
+ };
+
+- irq0_pins: irq0 {
+- groups = "intc_ex_irq0";
+- function = "intc_ex";
++ i2c3_pins: i2c3 {
++ groups = "i2c3";
++ function = "i2c3";
+ };
+
+- pwm1_pins: pwm1 {
+- groups = "pwm1_a";
+- function = "pwm1";
++ i2c5_pins: i2c5 {
++ groups = "i2c5";
++ function = "i2c5";
+ };
+
+- pwm2_pins: pwm2 {
+- groups = "pwm2_a";
+- function = "pwm2";
++ irq0_pins: irq0 {
++ groups = "intc_ex_irq0";
++ function = "intc_ex";
+ };
+
+ scif1_pins: scif1 {
+- groups = "scif1_data_a", "scif1_ctrl";
++ groups = "scif1_data_b";
+ function = "scif1";
+ };
+
+@@ -637,6 +609,11 @@
+ function = "scif2";
+ };
+
++ scif5_pins: scif5 {
++ groups = "scif5_data_a";
++ function = "scif5";
++ };
++
+ scif_clk_pins: scif_clk {
+ groups = "scif_clk_a";
+ function = "scif_clk";
+@@ -679,13 +656,13 @@
+ };
+
+ sound_pins: sound {
+- groups = "ssi01239_ctrl", "ssi0_data", "ssi1_data_a";
++ groups = "ssi349_ctrl", "ssi3_data", "ssi4_data";
+ function = "ssi";
+ };
+
+ sound_clk_pins: sound_clk {
+- groups = "audio_clk_a_a", "audio_clk_b_a", "audio_clk_c_a",
+- "audio_clkout_a", "audio_clkout3_a";
++ groups = "audio_clk_a_a", "audio_clk_b_a",
++ "audio_clkout_a", "audio_clkout3_b";
+ function = "audio_clk";
+ };
+
+@@ -695,40 +672,24 @@
+ };
+
+ usb1_pins: usb1 {
+- mux {
+- groups = "usb1";
+- function = "usb1";
+- };
+-
+- ovc {
+- pins = "GP_6_27";
+- bias-pull-up;
+- };
+-
+- pwen {
+- pins = "GP_6_26";
+- bias-pull-down;
+- };
++ groups = "usb1";
++ function = "usb1";
+ };
+
+ usb30_pins: usb30 {
+ groups = "usb30";
+ function = "usb30";
+ };
+-};
+-
+-&pwm1 {
+- pinctrl-0 = <&pwm1_pins>;
+- pinctrl-names = "default";
+-
+- status = "okay";
+-};
+
+-&pwm2 {
+- pinctrl-0 = <&pwm2_pins>;
+- pinctrl-names = "default";
++ canfd0_pins: canfd0 {
++ groups = "canfd0_data_a";
++ function = "canfd0";
++ };
+
+- status = "okay";
++ canfd1_pins: canfd1 {
++ groups = "canfd1_data";
++ function = "canfd1";
++ };
+ };
+
+ &rcar_sound {
+@@ -775,8 +736,8 @@
+ bitclock-master = <&rsnd_endpoint0>;
+ frame-master = <&rsnd_endpoint0>;
+
+- playback = <&ssi0 &src0 &dvc0>;
+- capture = <&ssi1 &src1 &dvc1>;
++ playback = <&ssi3>; //ssi0 -> ssi3
++ capture = <&ssi4>; //ssi1 -> ssi4
+ };
+ };
+ };
+@@ -803,6 +764,13 @@
+ status = "okay";
+ };
+
++&scif5 {
++ pinctrl-0 = <&scif5_pins>;
++ pinctrl-names = "default";
++
++ status = "okay";
++};
++
+ &scif_clk {
+ clock-frequency = <14745600>;
+ };
+@@ -857,7 +825,7 @@
+ status = "okay";
+ };
+
+-&ssi1 {
++&ssi4 {
+ shared-pin;
+ };
+
+@@ -869,7 +837,6 @@
+ pinctrl-0 = <&usb0_pins>;
+ pinctrl-names = "default";
+
+- vbus-supply = <&vbus0_usb2>;
+ status = "okay";
+ };
+
+diff --git a/drivers/iio/imu/Kconfig b/drivers/iio/imu/Kconfig
+index 156630a..463210d 100644
+--- a/drivers/iio/imu/Kconfig
++++ b/drivers/iio/imu/Kconfig
+@@ -40,6 +40,7 @@ config KMX61
+
+ source "drivers/iio/imu/inv_mpu6050/Kconfig"
+ source "drivers/iio/imu/st_lsm6dsx/Kconfig"
++source "drivers/iio/imu/st_asm330lhh/Kconfig"
+
+ endmenu
+
+diff --git a/drivers/iio/imu/Makefile b/drivers/iio/imu/Makefile
+index 68629c68..349a7de 100644
+--- a/drivers/iio/imu/Makefile
++++ b/drivers/iio/imu/Makefile
+@@ -20,3 +20,4 @@ obj-y += inv_mpu6050/
+ obj-$(CONFIG_KMX61) += kmx61.o
+
+ obj-y += st_lsm6dsx/
++obj-y += st_asm330lhh/
+diff --git a/drivers/media/i2c/adv748x/adv748x-core.c b/drivers/media/i2c/adv748x/adv748x-core.c
+index da8f062..c2b37f7 100644
+--- a/drivers/media/i2c/adv748x/adv748x-core.c
++++ b/drivers/media/i2c/adv748x/adv748x-core.c
+@@ -165,6 +165,21 @@ static int adv748x_i2c_addresses[ADV748X_PAGE_MAX] = {
+ ADV748X_I2C_TXA,
+ };
+
++/* Default addresses for the I2C pages 0x71*/
++static int adv748x_i2c_addresses2[ADV748X_PAGE_MAX] = {
++ ADV748X_I2C_IO2,
++ ADV748X_I2C_DPLL2,
++ ADV748X_I2C_CP2,
++ ADV748X_I2C_HDMI2,
++ ADV748X_I2C_EDID2,
++ ADV748X_I2C_REPEATER2,
++ ADV748X_I2C_INFOFRAME2,
++ ADV748X_I2C_CEC2,
++ ADV748X_I2C_SDP2,
++ ADV748X_I2C_TXB2,
++ ADV748X_I2C_TXA2,
++};
++
+ static int adv748x_read_check(struct adv748x_state *state,
+ int client_page, u8 reg)
+ {
+@@ -238,9 +253,16 @@ static int adv748x_initialise_clients(struct adv748x_state *state)
+ int ret;
+
+ for (i = ADV748X_PAGE_DPLL; i < ADV748X_PAGE_MAX; ++i) {
+- state->i2c_clients[i] =
+- adv748x_dummy_client(state, adv748x_i2c_addresses[i],
+- ADV748X_IO_SLAVE_ADDR_BASE + i);
++ if((state->client->addr << 1) == 0xe0) {
++ state->i2c_clients[i] =
++ adv748x_dummy_client(state, adv748x_i2c_addresses[i],
++ ADV748X_IO_SLAVE_ADDR_BASE + i);
++ } else {
++ state->i2c_clients[i] =
++ adv748x_dummy_client(state, adv748x_i2c_addresses2[i],
++ ADV748X_IO_SLAVE_ADDR_BASE + i);
++ }
++
+ if (state->i2c_clients[i] == NULL) {
+ adv_err(state, "failed to create i2c client %u\n", i);
+ return -ENOMEM;
+@@ -508,6 +530,20 @@ static const struct adv748x_reg_value adv748x_set_slave_address[] = {
+ {ADV748X_PAGE_EOR, 0xff, 0xff} /* End of register table */
+ };
+
++static const struct adv748x_reg_value adv748x_set_slave_address2[] = {
++ {ADV748X_PAGE_IO, 0xf3, ADV748X_I2C_DPLL2 << 1},
++ {ADV748X_PAGE_IO, 0xf4, ADV748X_I2C_CP2 << 1},
++ {ADV748X_PAGE_IO, 0xf5, ADV748X_I2C_HDMI2 << 1},
++ {ADV748X_PAGE_IO, 0xf6, ADV748X_I2C_EDID2 << 1},
++ {ADV748X_PAGE_IO, 0xf7, ADV748X_I2C_REPEATER2 << 1},
++ {ADV748X_PAGE_IO, 0xf8, ADV748X_I2C_INFOFRAME2 << 1},
++ {ADV748X_PAGE_IO, 0xfa, ADV748X_I2C_CEC2 << 1},
++ {ADV748X_PAGE_IO, 0xfb, ADV748X_I2C_SDP2 << 1},
++ {ADV748X_PAGE_IO, 0xfc, ADV748X_I2C_TXB2 << 1},
++ {ADV748X_PAGE_IO, 0xfd, ADV748X_I2C_TXA2 << 1},
++ {ADV748X_PAGE_EOR, 0xff, 0xff} /* End of register table */
++};
++
+ /* Supported Formats For Script Below */
+ /* - 01-29 HDMI to MIPI TxA CSI 4-Lane - RGB888: */
+ static const struct adv748x_reg_value adv748x_init_txa_4lane[] = {
+@@ -683,7 +719,11 @@ static int adv748x_reset(struct adv748x_state *state)
+ if (ret < 0)
+ return ret;
+
+- ret = adv748x_write_regs(state, adv748x_set_slave_address);
++ if((state->client->addr << 1) == 0xe0) {
++ ret = adv748x_write_regs(state, adv748x_set_slave_address); //i2c address 0x70
++ } else {
++ ret = adv748x_write_regs(state, adv748x_set_slave_address2); //i2c address 0x71
++ }
+ if (ret < 0)
+ return ret;
+
+diff --git a/drivers/media/i2c/adv748x/adv748x.h b/drivers/media/i2c/adv748x/adv748x.h
+index fb30bfa..ac50a9e 100644
+--- a/drivers/media/i2c/adv748x/adv748x.h
++++ b/drivers/media/i2c/adv748x/adv748x.h
+@@ -40,6 +40,18 @@
+ #define ADV748X_I2C_TXB 0x48 /* CSI-TXB Map */
+ #define ADV748X_I2C_TXA 0x4a /* CSI-TXA Map */
+
++#define ADV748X_I2C_IO2 0x71 /* IO Map */
++#define ADV748X_I2C_DPLL2 0x27 /* DPLL Map */
++#define ADV748X_I2C_CP2 0x23 /* CP Map */
++#define ADV748X_I2C_HDMI2 0x35 /* HDMI Map */
++#define ADV748X_I2C_EDID2 0x37 /* EDID Map */
++#define ADV748X_I2C_REPEATER2 0x33 /* HDMI RX Repeater Map */
++#define ADV748X_I2C_INFOFRAME2 0x30 /* HDMI RX InfoFrame Map */
++#define ADV748X_I2C_CEC2 0x42 /* CEC Map */
++#define ADV748X_I2C_SDP2 0x78 /* SDP Map */
++#define ADV748X_I2C_TXB2 0x49 /* CSI-TXB Map */
++#define ADV748X_I2C_TXA2 0x4b /* CSI-TXA Map */
++
+ enum adv748x_page {
+ ADV748X_PAGE_IO,
+ ADV748X_PAGE_DPLL,
+diff --git a/drivers/pinctrl/sh-pfc/pfc-r8a7795.c b/drivers/pinctrl/sh-pfc/pfc-r8a7795.c
+index 3ebe8de..546761c 100644
+--- a/drivers/pinctrl/sh-pfc/pfc-r8a7795.c
++++ b/drivers/pinctrl/sh-pfc/pfc-r8a7795.c
+@@ -3912,7 +3912,7 @@ static const unsigned int tmu_tclk2_b_mux[] = {
+ /* - USB0 ------------------------------------------------------------------- */
+ static const unsigned int usb0_pins[] = {
+ /* PWEN, OVC */
+- RCAR_GP_PIN(6, 24), RCAR_GP_PIN(6, 25),
++ RCAR_GP_PIN(6, 24),
+ };
+ static const unsigned int usb0_mux[] = {
+ USB0_PWEN_MARK, USB0_OVC_MARK,
+@@ -3920,7 +3920,7 @@ static const unsigned int usb0_mux[] = {
+ /* - USB1 ------------------------------------------------------------------- */
+ static const unsigned int usb1_pins[] = {
+ /* PWEN, OVC */
+- RCAR_GP_PIN(6, 26), RCAR_GP_PIN(6, 27),
++ RCAR_GP_PIN(6, 27),
+ };
+ static const unsigned int usb1_mux[] = {
+ USB1_PWEN_MARK, USB1_OVC_MARK,
+@@ -3936,7 +3936,7 @@ static const unsigned int usb2_mux[] = {
+ /* - USB2_CH3 --------------------------------------------------------------- */
+ static const unsigned int usb2_ch3_pins[] = {
+ /* PWEN, OVC */
+- RCAR_GP_PIN(6, 30), RCAR_GP_PIN(6, 31),
++ RCAR_GP_PIN(6, 30),
+ };
+ static const unsigned int usb2_ch3_mux[] = {
+ USB2_CH3_PWEN_MARK, USB2_CH3_OVC_MARK,
+--
+2.7.4
+