aboutsummaryrefslogtreecommitdiffstats
path: root/patches.renesas/0081-sh-pfc-r8a7790-add-pin-definitions-for-the-I2C3-inte.patch
diff options
context:
space:
mode:
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.patch105
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
+