| From foo@baz Sun Jun 17 12:07:34 CEST 2018 |
| From: Sekhar Nori <nsekhar@ti.com> |
| Date: Wed, 18 Apr 2018 15:02:46 +0530 |
| Subject: ARM: davinci: fix GPIO lookup for I2C |
| |
| From: Sekhar Nori <nsekhar@ti.com> |
| |
| [ Upstream commit 9411ac07cd764be34bbd7ff09125a6b7b9175d4c ] |
| |
| The GPIO chip is called davinci_gpio.0 in legacy mode. Fix it, so that |
| I2C can correctly lookup the recovery gpios. |
| |
| Note that it is the gpio-davinci driver that sets the gpiochip label to |
| davinci_gpio.0. |
| |
| Also, the I2C device uses an id of 1 on DM644x and DM355. |
| |
| While at it, convert to using GPIO_TO_PIN() for referring to GPIO pin |
| numbers, like it is done in rest of the board support files. |
| |
| Fixes: e53537653791 ("i2c/ARM: davinci: Deep refactoring of I2C recovery") |
| Reviewed-by: David Lechner <david@lechnology.com> |
| Signed-off-by: Sekhar Nori <nsekhar@ti.com> |
| Signed-off-by: Sasha Levin <alexander.levin@microsoft.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| --- |
| arch/arm/mach-davinci/board-dm355-evm.c | 9 ++++++--- |
| arch/arm/mach-davinci/board-dm644x-evm.c | 10 +++++++--- |
| 2 files changed, 13 insertions(+), 6 deletions(-) |
| |
| --- a/arch/arm/mach-davinci/board-dm355-evm.c |
| +++ b/arch/arm/mach-davinci/board-dm355-evm.c |
| @@ -110,12 +110,15 @@ static struct platform_device davinci_na |
| }, |
| }; |
| |
| +#define DM355_I2C_SDA_PIN GPIO_TO_PIN(0, 15) |
| +#define DM355_I2C_SCL_PIN GPIO_TO_PIN(0, 14) |
| + |
| static struct gpiod_lookup_table i2c_recovery_gpiod_table = { |
| - .dev_id = "i2c_davinci", |
| + .dev_id = "i2c_davinci.1", |
| .table = { |
| - GPIO_LOOKUP("davinci_gpio", 15, "sda", |
| + GPIO_LOOKUP("davinci_gpio.0", DM355_I2C_SDA_PIN, "sda", |
| GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN), |
| - GPIO_LOOKUP("davinci_gpio", 14, "scl", |
| + GPIO_LOOKUP("davinci_gpio.0", DM355_I2C_SCL_PIN, "scl", |
| GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN), |
| }, |
| }; |
| --- a/arch/arm/mach-davinci/board-dm644x-evm.c |
| +++ b/arch/arm/mach-davinci/board-dm644x-evm.c |
| @@ -17,6 +17,7 @@ |
| #include <linux/i2c.h> |
| #include <linux/platform_data/pcf857x.h> |
| #include <linux/platform_data/at24.h> |
| +#include <linux/platform_data/gpio-davinci.h> |
| #include <linux/mtd/mtd.h> |
| #include <linux/mtd/rawnand.h> |
| #include <linux/mtd/partitions.h> |
| @@ -596,12 +597,15 @@ static struct i2c_board_info __initdata |
| }, |
| }; |
| |
| +#define DM644X_I2C_SDA_PIN GPIO_TO_PIN(2, 12) |
| +#define DM644X_I2C_SCL_PIN GPIO_TO_PIN(2, 11) |
| + |
| static struct gpiod_lookup_table i2c_recovery_gpiod_table = { |
| - .dev_id = "i2c_davinci", |
| + .dev_id = "i2c_davinci.1", |
| .table = { |
| - GPIO_LOOKUP("davinci_gpio", 44, "sda", |
| + GPIO_LOOKUP("davinci_gpio.0", DM644X_I2C_SDA_PIN, "sda", |
| GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN), |
| - GPIO_LOOKUP("davinci_gpio", 43, "scl", |
| + GPIO_LOOKUP("davinci_gpio.0", DM644X_I2C_SCL_PIN, "scl", |
| GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN), |
| }, |
| }; |