From e6f70bd47b101720ad9ad3ca761574fee0e2678d Mon Sep 17 00:00:00 2001 From: Xuhua Zhang Date: Tue, 25 Apr 2017 16:11:32 +0800 Subject: [PATCH] i2c: modify i2c config on gxl&gxm. PD#138714: fix i2c error on gxl/gxm Change-Id: Ic1e8685b4cf853749808707266d0cec98db99496 Signed-off-by: Xuhua Zhang --- arch/arm64/boot/dts/amlogic/gxm_q200_2g.dts | 4 +++ arch/arm64/boot/dts/amlogic/mesongxl.dtsi | 14 +++++----- arch/arm64/boot/dts/amlogic/mesongxm.dtsi | 20 +++++++------- drivers/amlogic/pinctrl/pinctrl_gxl.c | 29 ++++++++++----------- 4 files changed, 37 insertions(+), 30 deletions(-) diff --git a/arch/arm64/boot/dts/amlogic/gxm_q200_2g.dts b/arch/arm64/boot/dts/amlogic/gxm_q200_2g.dts index 0f7bdc02cfde..ef4fa308dcda 100644 --- a/arch/arm64/boot/dts/amlogic/gxm_q200_2g.dts +++ b/arch/arm64/boot/dts/amlogic/gxm_q200_2g.dts @@ -1185,3 +1185,7 @@ &efuse { status = "ok"; }; + +&i2c_b { + status = "okay"; +}; diff --git a/arch/arm64/boot/dts/amlogic/mesongxl.dtsi b/arch/arm64/boot/dts/amlogic/mesongxl.dtsi index d1e675789e91..cc23a2cd5e43 100644 --- a/arch/arm64/boot/dts/amlogic/mesongxl.dtsi +++ b/arch/arm64/boot/dts/amlogic/mesongxl.dtsi @@ -849,18 +849,20 @@ }; }; + /* c_i2c_master: dv28 dv29 */ + /* c_i2c_master_pin1: dv18 dv19 */ c_i2c_master:c_i2c { mux { - groups = "i2c_sda_c", - "i2c_scl_c"; - function = "i2c_c"; + groups = "i2c_sda_c0", + "i2c_scl_c0"; + function = "i2c_c0"; }; }; c_i2c_master_pin1:c_i2c_pin1{ mux { - groups = "i2c_sda_c_1", - "i2c_scl_c_1"; - function = "i2c_c_1"; + groups = "i2c_sda_c1", + "i2c_scl_c1"; + function = "i2c_c1"; }; }; diff --git a/arch/arm64/boot/dts/amlogic/mesongxm.dtsi b/arch/arm64/boot/dts/amlogic/mesongxm.dtsi index b788beba1f8d..cacd9bb2fbcc 100644 --- a/arch/arm64/boot/dts/amlogic/mesongxm.dtsi +++ b/arch/arm64/boot/dts/amlogic/mesongxm.dtsi @@ -926,7 +926,7 @@ a_i2c_master:a_i2c { mux { groups = "i2c_sda_a", - "i2c_sda_a"; + "i2c_scl_a"; function = "i2c_a"; }; }; @@ -934,30 +934,32 @@ b_i2c_master:b_i2c { mux { groups = "i2c_sda_b", - "i2c_sda_b"; + "i2c_scl_b"; function = "i2c_b"; }; }; + /* c_i2c_master: dv28 dv29 */ + /* c_i2c_master_pin1: dv18 dv19 */ c_i2c_master:c_i2c { mux { - groups = "i2c_sda_c", - "i2c_sda_c"; - function = "i2c_c"; + groups = "i2c_sda_c0", + "i2c_scl_c0"; + function = "i2c_c0"; }; }; c_i2c_master_pin1:c_i2c_pin1{ mux { - groups = "i2c_sda_c_1", - "i2c_scl_c_1"; - function = "i2c_c_1"; + groups = "i2c_sda_c1", + "i2c_scl_c1"; + function = "i2c_c1"; }; }; d_i2c_master:d_i2c { mux { groups = "i2c_sda_d", - "i2c_sda_d"; + "i2c_scl_d"; function = "i2c_d"; }; }; diff --git a/drivers/amlogic/pinctrl/pinctrl_gxl.c b/drivers/amlogic/pinctrl/pinctrl_gxl.c index 998c3e47e7a0..6dcf15407d8e 100644 --- a/drivers/amlogic/pinctrl/pinctrl_gxl.c +++ b/drivers/amlogic/pinctrl/pinctrl_gxl.c @@ -248,11 +248,11 @@ static const unsigned int i2c_sda_b_pins[] = { PIN(GPIODV_26, EE_OFF) }; static const unsigned int i2c_scl_b_pins[] = { PIN(GPIODV_27, EE_OFF) }; -static const unsigned int i2c_sda_c_pins[] = { PIN(GPIODV_28, EE_OFF) }; -static const unsigned int i2c_scl_c_pins[] = { PIN(GPIODV_29, EE_OFF) }; +static const unsigned int i2c_sda_c0_pins[] = { PIN(GPIODV_28, EE_OFF) }; +static const unsigned int i2c_scl_c0_pins[] = { PIN(GPIODV_29, EE_OFF) }; -static const unsigned int i2c_sda_c_1_pins[] = { PIN(GPIODV_18, EE_OFF) }; -static const unsigned int i2c_scl_c_1_pins[] = { PIN(GPIODV_19, EE_OFF) }; +static const unsigned int i2c_sda_c1_pins[] = { PIN(GPIODV_18, EE_OFF) }; +static const unsigned int i2c_scl_c1_pins[] = { PIN(GPIODV_19, EE_OFF) }; static const unsigned int uart_tx_c_pins[] = { PIN(GPIOX_8, EE_OFF) }; @@ -572,7 +572,6 @@ static struct meson_pmx_group meson_gxl_periphs_groups[] = { GROUP(lcd_vs, 3, 4), /* dv24 */ GROUP(dmic_in, 2, 7), GROUP(tcon_stv1, 1, 22), - GROUP(i2c_sda_a, 1, 15), GROUP(i2c_sda_a, 1, 15), /*dv24*/ GROUP(i2c_scl_a, 1, 14), /*dv25*/ @@ -583,11 +582,11 @@ static struct meson_pmx_group meson_gxl_periphs_groups[] = { GROUP(i2c_sda_b, 1, 13), /*dv26*/ GROUP(i2c_scl_b, 1, 12), /*dv27*/ - GROUP(i2c_sda_c, 1, 11), /*dv28*/ - GROUP(i2c_scl_c, 1, 10), /*dv29*/ + GROUP(i2c_sda_c0, 1, 11), /*dv28*/ + GROUP(i2c_scl_c0, 1, 10), /*dv29*/ - GROUP(i2c_sda_c_1, 1, 17), /*dv18*/ - GROUP(i2c_scl_c_1, 1, 16), /*dv19*/ + GROUP(i2c_sda_c1, 1, 17), /*dv18*/ + GROUP(i2c_scl_c1, 1, 16), /*dv19*/ /* Bank BOOT */ GROUP(emmc_nand_d07, 7, 31), @@ -847,12 +846,12 @@ static const char * const i2c_b_groups[] = { "i2c_sda_b", "i2c_scl_b", }; -static const char * const i2c_c_groups[] = { - "i2c_sda_c", "i2c_scl_c", +static const char * const i2c_c0_groups[] = { + "i2c_sda_c0", "i2c_scl_c0", }; -static const char * const i2c_c_1_groups[] = { - "i2c_sda_c_1", "i2c_scl_c_1", +static const char * const i2c_c1_groups[] = { + "i2c_sda_c1", "i2c_scl_c1", }; static const char * const i2c_d_groups[] = { @@ -890,8 +889,8 @@ static struct meson_pmx_func meson_gxl_periphs_functions[] = { FUNCTION(spi), FUNCTION(i2c_a), FUNCTION(i2c_b), - FUNCTION(i2c_c), - FUNCTION(i2c_c_1), + FUNCTION(i2c_c0), + FUNCTION(i2c_c1), FUNCTION(i2c_d), FUNCTION(hdmi_ddc), FUNCTION(hdmi_hpd),