summaryrefslogtreecommitdiffstats
path: root/meta-agl-refhw-gen3/recipes-kernel/files/0002-agl-reference-hardware-sample-bsp.patch
diff options
context:
space:
mode:
authorScott Murray <scott.murray@konsulko.com>2020-10-20 16:37:05 -0400
committerScott Murray <scott.murray@konsulko.com>2020-10-20 16:37:05 -0400
commite3a57dcb2ae1cd4e6a81e1ca65ac235c8e3dd500 (patch)
tree0878ba459734324815e2aafbdca8de353993a486 /meta-agl-refhw-gen3/recipes-kernel/files/0002-agl-reference-hardware-sample-bsp.patch
parent16813d0d76cfb16469ec2550e48309deca357278 (diff)
Initial check-in
Initial check-in of the contents of the meta-refhw directory from the AGL_Refhw_sample_software_20200512.tar.gz archive provided by Panasonic as the initial BSP for the AGL reference hardware. The only change from the files as provided is that unneeded execute file permissions have been removed. Bug-AGL: SPEC-3658 Signed-off-by: Scott Murray <scott.murray@konsulko.com>
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
+