diff options
Diffstat (limited to 'patches.renesas/0081-sh-pfc-r8a7790-add-pin-definitions-for-the-I2C3-inte.patch')
-rw-r--r-- | patches.renesas/0081-sh-pfc-r8a7790-add-pin-definitions-for-the-I2C3-inte.patch | 105 |
1 files changed, 105 insertions, 0 deletions
diff --git a/patches.renesas/0081-sh-pfc-r8a7790-add-pin-definitions-for-the-I2C3-inte.patch b/patches.renesas/0081-sh-pfc-r8a7790-add-pin-definitions-for-the-I2C3-inte.patch new file mode 100644 index 00000000000000..51f0bee2f545c0 --- /dev/null +++ b/patches.renesas/0081-sh-pfc-r8a7790-add-pin-definitions-for-the-I2C3-inte.patch @@ -0,0 +1,105 @@ +From e5d3bba7eb6e23c92639d08703e4b21d17c1743e Mon Sep 17 00:00:00 2001 +From: Guennadi Liakhovetski <g.liakhovetski@gmx.de> +Date: Thu, 26 Sep 2013 19:20:56 +0200 +Subject: sh-pfc: r8a7790: add pin definitions for the I2C3 interface + +There are four I2C interfaces on r8a7790, each of them can be connected to +one of the two respective I2C controllers, e.g. interface #0 can be +configured to work with I2C0 or with IIC0. Additionally some of those +interfaces can also use one of several pin sets. Interface #3 is special, +because it can be used in automatic mode for DVFS. It only has one set +of pins available and those pins cannot be used for anything else, they +also lack the GPIO function. + +This patch uses the sh-pfc ability to configure pins, not associated with +GPIOs and adds support for I2C3 to the r8a7790 PFC set up. + +Signed-off-by: Guennadi Liakhovetski <g.liakhovetski+renesas@gmail.com> +Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com> +(cherry picked from commit f6aaaac9995084e496d4ff800d092a8c0cb12641) +Signed-off-by: Simon Horman <horms+renesas@verge.net.au> +--- + drivers/pinctrl/sh-pfc/pfc-r8a7790.c | 28 ++++++++++++++++++++++++++++ + 1 file changed, 28 insertions(+) + +diff --git a/drivers/pinctrl/sh-pfc/pfc-r8a7790.c b/drivers/pinctrl/sh-pfc/pfc-r8a7790.c +index 5c2657bcc3a4..72786fc93958 100644 +--- a/drivers/pinctrl/sh-pfc/pfc-r8a7790.c ++++ b/drivers/pinctrl/sh-pfc/pfc-r8a7790.c +@@ -781,6 +781,8 @@ enum { + ADICS_SAMP_MARK, DU2_CDE_MARK, QPOLB_MARK, SCIFA2_RXD_B_MARK, + USB1_PWEN_MARK, AUDIO_CLKOUT_D_MARK, USB1_OVC_MARK, + TCLK1_B_MARK, ++ ++ I2C3_SCL_MARK, I2C3_SDA_MARK, + PINMUX_MARK_END, + }; + +@@ -1719,10 +1721,22 @@ static const u16 pinmux_data[] = { + PINMUX_IPSR_DATA(IP16_6, AUDIO_CLKOUT_D), + PINMUX_IPSR_DATA(IP16_7, USB1_OVC), + PINMUX_IPSR_MODSEL_DATA(IP16_7, TCLK1_B, SEL_TMU1_1), ++ ++ PINMUX_DATA(I2C3_SCL_MARK, FN_SEL_IICDVFS_1), ++ PINMUX_DATA(I2C3_SDA_MARK, FN_SEL_IICDVFS_1), + }; + ++/* R8A7790 has 6 banks with 32 GPIOs in each = 192 GPIOs */ ++#define ROW_GROUP_A(r) ('Z' - 'A' + 1 + (r)) ++#define PIN_NUMBER(r, c) (((r) - 'A') * 31 + (c) + 200) ++#define PIN_A_NUMBER(r, c) PIN_NUMBER(ROW_GROUP_A(r), c) ++ + static struct sh_pfc_pin pinmux_pins[] = { + PINMUX_GPIO_GP_ALL(), ++ ++ /* Pins not associated with a GPIO port */ ++ SH_PFC_PIN_NAMED(ROW_GROUP_A('J'), 15, AJ15), ++ SH_PFC_PIN_NAMED(ROW_GROUP_A('H'), 15, AH15), + }; + + /* - DU RGB ----------------------------------------------------------------- */ +@@ -2048,6 +2062,14 @@ static const unsigned int i2c2_e_pins[] = { + static const unsigned int i2c2_e_mux[] = { + I2C2_SCL_E_MARK, I2C2_SDA_E_MARK, + }; ++/* - I2C3 ------------------------------------------------------------------- */ ++static const unsigned int i2c3_pins[] = { ++ /* SCL, SDA */ ++ PIN_A_NUMBER('J', 15), PIN_A_NUMBER('H', 15), ++}; ++static const unsigned int i2c3_mux[] = { ++ I2C3_SCL_MARK, I2C3_SDA_MARK, ++}; + /* - INTC ------------------------------------------------------------------- */ + static const unsigned int intc_irq0_pins[] = { + /* IRQ */ +@@ -3113,6 +3135,7 @@ static const struct sh_pfc_pin_group pinmux_groups[] = { + SH_PFC_PIN_GROUP(i2c2_c), + SH_PFC_PIN_GROUP(i2c2_d), + SH_PFC_PIN_GROUP(i2c2_e), ++ SH_PFC_PIN_GROUP(i2c3), + SH_PFC_PIN_GROUP(intc_irq0), + SH_PFC_PIN_GROUP(intc_irq1), + SH_PFC_PIN_GROUP(intc_irq2), +@@ -3323,6 +3346,10 @@ static const char * const i2c2_groups[] = { + "i2c2_e", + }; + ++static const char * const i2c3_groups[] = { ++ "i2c3", ++}; ++ + static const char * const intc_groups[] = { + "intc_irq0", + "intc_irq1", +@@ -3551,6 +3578,7 @@ static const struct sh_pfc_function pinmux_functions[] = { + SH_PFC_FUNCTION(hscif1), + SH_PFC_FUNCTION(i2c1), + SH_PFC_FUNCTION(i2c2), ++ SH_PFC_FUNCTION(i2c3), + SH_PFC_FUNCTION(intc), + SH_PFC_FUNCTION(mmc0), + SH_PFC_FUNCTION(mmc1), +-- +1.8.5.rc3 + |