i2c: gpio: Augment all boardfiles to use open drain
authorLinus Walleij <linus.walleij@linaro.org>
Sun, 10 Sep 2017 21:03:32 +0000 (23:03 +0200)
committerLinus Walleij <linus.walleij@linaro.org>
Mon, 30 Oct 2017 07:42:43 +0000 (08:42 +0100)
We now handle the open drain mode internally in the I2C GPIO
driver, but we will get warnings from the gpiolib that we
override the default mode of the line so it becomes open
drain.

We can fix all in-kernel users by simply passing the right
flag along in the descriptor table, and we already touched
all of these files in the series so let's just tidy it up.

Cc: Steven Miao <realmz6@gmail.com>
Cc: Ralf Baechle <ralf@linux-mips.org>
Acked-by: Olof Johansson <olof@lixom.net>
Acked-by: Lee Jones <lee.jones@linaro.org>
Acked-by: Robert Jarzmik <robert.jarzmik@free.fr>
Acked-by: Ralf Baechle <ralf@linux-mips.org>
Acked-by: Wu, Aaron <Aaron.Wu@analog.com>
Acked-by: Arnd Bergmann <arnd@arndb.de>
Tested-by: Geert Uytterhoeven <geert+renesas@glider.be>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
18 files changed:
arch/arm/mach-ep93xx/core.c
arch/arm/mach-ixp4xx/avila-setup.c
arch/arm/mach-ixp4xx/dsmg600-setup.c
arch/arm/mach-ixp4xx/fsg-setup.c
arch/arm/mach-ixp4xx/ixdp425-setup.c
arch/arm/mach-ixp4xx/nas100d-setup.c
arch/arm/mach-ixp4xx/nslu2-setup.c
arch/arm/mach-ks8695/board-acs5k.c
arch/arm/mach-pxa/palmz72.c
arch/arm/mach-pxa/viper.c
arch/arm/mach-sa1100/simpad.c
arch/blackfin/mach-bf533/boards/blackstamp.c
arch/blackfin/mach-bf533/boards/ezkit.c
arch/blackfin/mach-bf533/boards/stamp.c
arch/blackfin/mach-bf561/boards/ezkit.c
arch/mips/alchemy/board-gpr.c
arch/mips/ath79/mach-pb44.c
drivers/mfd/sm501.c

index 7e99fe829ad1f039b12a84db2ccc66102e04bb69..e70feec6fad5e296b869d76e90d31bf5b71d1334 100644 (file)
@@ -326,8 +326,10 @@ static struct gpiod_lookup_table ep93xx_i2c_gpiod_table = {
        .dev_id         = "i2c-gpio",
        .table          = {
                /* Use local offsets on gpiochip/port "G" */
-               GPIO_LOOKUP_IDX("G", 1, NULL, 0, GPIO_ACTIVE_HIGH),
-               GPIO_LOOKUP_IDX("G", 0, NULL, 1, GPIO_ACTIVE_HIGH),
+               GPIO_LOOKUP_IDX("G", 1, NULL, 0,
+                               GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN),
+               GPIO_LOOKUP_IDX("G", 0, NULL, 1,
+                               GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN),
        },
 };
 
index 72122b5e7f285f09c14e08fd66aa7c56906227c9..bb6fbfc9b11acc29580e831c1aa4ec28739cecf6 100644 (file)
@@ -53,9 +53,9 @@ static struct gpiod_lookup_table avila_i2c_gpiod_table = {
        .dev_id         = "i2c-gpio",
        .table          = {
                GPIO_LOOKUP_IDX("IXP4XX_GPIO_CHIP", AVILA_SDA_PIN,
-                               NULL, 0, GPIO_ACTIVE_HIGH),
+                               NULL, 0, GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN),
                GPIO_LOOKUP_IDX("IXP4XX_GPIO_CHIP", AVILA_SCL_PIN,
-                               NULL, 1, GPIO_ACTIVE_HIGH),
+                               NULL, 1, GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN),
        },
 };
 
index 68ccd669051b7fc887b7bbe0ed7ad7cbc70e86d2..af543dd3da5d9bab2564d8b919bd19d963173823 100644 (file)
@@ -72,9 +72,9 @@ static struct gpiod_lookup_table dsmg600_i2c_gpiod_table = {
        .dev_id         = "i2c-gpio",
        .table          = {
                GPIO_LOOKUP_IDX("IXP4XX_GPIO_CHIP", DSMG600_SDA_PIN,
-                               NULL, 0, GPIO_ACTIVE_HIGH),
+                               NULL, 0, GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN),
                GPIO_LOOKUP_IDX("IXP4XX_GPIO_CHIP", DSMG600_SCL_PIN,
-                               NULL, 1, GPIO_ACTIVE_HIGH),
+                               NULL, 1, GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN),
        },
 };
 
index a0350ad15175038f9a8fa01e1e98ab9752eaa157..8afb3f4db3762d00dd7c956754e5bec3a3e6b099 100644 (file)
@@ -58,9 +58,9 @@ static struct gpiod_lookup_table fsg_i2c_gpiod_table = {
        .dev_id         = "i2c-gpio",
        .table          = {
                GPIO_LOOKUP_IDX("IXP4XX_GPIO_CHIP", FSG_SDA_PIN,
-                               NULL, 0, GPIO_ACTIVE_HIGH),
+                               NULL, 0, GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN),
                GPIO_LOOKUP_IDX("IXP4XX_GPIO_CHIP", FSG_SCL_PIN,
-                               NULL, 1, GPIO_ACTIVE_HIGH),
+                               NULL, 1, GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN),
        },
 };
 
index 8937263cec4a799a0bc5e607abcc4a97bfbd5a66..4f358350a91fa19403ae2ff7948cb2dde6493401 100644 (file)
@@ -126,9 +126,9 @@ static struct gpiod_lookup_table ixdp425_i2c_gpiod_table = {
        .dev_id         = "i2c-gpio",
        .table          = {
                GPIO_LOOKUP_IDX("IXP4XX_GPIO_CHIP", IXDP425_SDA_PIN,
-                               NULL, 0, GPIO_ACTIVE_HIGH),
+                               NULL, 0, GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN),
                GPIO_LOOKUP_IDX("IXP4XX_GPIO_CHIP", IXDP425_SCL_PIN,
-                               NULL, 1, GPIO_ACTIVE_HIGH),
+                               NULL, 1, GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN),
        },
 };
 
index 612ec8c63456925fde26f49c4c9d6fec1787239d..7e59c59c96a3da612559ec4c4e7a4bcf2ffc607e 100644 (file)
@@ -104,9 +104,9 @@ static struct gpiod_lookup_table nas100d_i2c_gpiod_table = {
        .dev_id         = "i2c-gpio",
        .table          = {
                GPIO_LOOKUP_IDX("IXP4XX_GPIO_CHIP", NAS100D_SDA_PIN,
-                               NULL, 0, GPIO_ACTIVE_HIGH),
+                               NULL, 0, GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN),
                GPIO_LOOKUP_IDX("IXP4XX_GPIO_CHIP", NAS100D_SCL_PIN,
-                               NULL, 1, GPIO_ACTIVE_HIGH),
+                               NULL, 1, GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN),
        },
 };
 
index 13afb03b50fa7d8ed91db6dda5f8d7ba1045183e..224717eb8ac2462931a0d807c1112b19a774903e 100644 (file)
@@ -72,9 +72,9 @@ static struct gpiod_lookup_table nslu2_i2c_gpiod_table = {
        .dev_id         = "i2c-gpio",
        .table          = {
                GPIO_LOOKUP_IDX("IXP4XX_GPIO_CHIP", NSLU2_SDA_PIN,
-                               NULL, 0, GPIO_ACTIVE_HIGH),
+                               NULL, 0, GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN),
                GPIO_LOOKUP_IDX("IXP4XX_GPIO_CHIP", NSLU2_SCL_PIN,
-                               NULL, 1, GPIO_ACTIVE_HIGH),
+                               NULL, 1, GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN),
        },
 };
 
index f034724e01e11dca131b3c8da154e947be4da5c8..937eb1d47e7bb793a774e06c015347e726abc513 100644 (file)
 static struct gpiod_lookup_table acs5k_i2c_gpiod_table = {
        .dev_id         = "i2c-gpio",
        .table          = {
-               GPIO_LOOKUP_IDX("KS8695", 4, NULL, 0, GPIO_ACTIVE_HIGH),
-               GPIO_LOOKUP_IDX("KS8695", 5, NULL, 1, GPIO_ACTIVE_HIGH),
+               GPIO_LOOKUP_IDX("KS8695", 4, NULL, 0,
+                               GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN),
+               GPIO_LOOKUP_IDX("KS8695", 5, NULL, 1,
+                               GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN),
        },
 };
 
index 94f75632c0070d1b35562c0a9cffb69b221f5f4f..5877e547cecd84d40a8ed6a48f0f91a7c8c4ad0c 100644 (file)
@@ -324,8 +324,10 @@ static struct soc_camera_link palmz72_iclink = {
 static struct gpiod_lookup_table palmz72_i2c_gpiod_table = {
        .dev_id         = "i2c-gpio",
        .table          = {
-               GPIO_LOOKUP_IDX("gpio-pxa", 118, NULL, 0, GPIO_ACTIVE_HIGH),
-               GPIO_LOOKUP_IDX("gpio-pxa", 117, NULL, 1, GPIO_ACTIVE_HIGH),
+               GPIO_LOOKUP_IDX("gpio-pxa", 118, NULL, 0,
+                               GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN),
+               GPIO_LOOKUP_IDX("gpio-pxa", 117, NULL, 1,
+                               GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN),
        },
 };
 
index a680742bee2b596edabc415652625b566bd4f1b4..4185e7ff073fd478d8fdd123d7f9519522db9ab8 100644 (file)
@@ -463,9 +463,9 @@ static struct gpiod_lookup_table viper_i2c_gpiod_table = {
        .dev_id         = "i2c-gpio",
        .table          = {
                GPIO_LOOKUP_IDX("gpio-pxa", VIPER_RTC_I2C_SDA_GPIO,
-                               NULL, 0, GPIO_ACTIVE_HIGH),
+                               NULL, 0, GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN),
                GPIO_LOOKUP_IDX("gpio-pxa", VIPER_RTC_I2C_SCL_GPIO,
-                               NULL, 1, GPIO_ACTIVE_HIGH),
+                               NULL, 1, GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN),
        },
 };
 
@@ -792,9 +792,9 @@ struct gpiod_lookup_table viper_tpm_i2c_gpiod_table = {
        .dev_id = "i2c-gpio",
        .table = {
                GPIO_LOOKUP_IDX("gpio-pxa", VIPER_TPM_I2C_SDA_GPIO,
-                               NULL, 0, GPIO_ACTIVE_HIGH),
+                               NULL, 0, GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN),
                GPIO_LOOKUP_IDX("gpio-pxa", VIPER_TPM_I2C_SCL_GPIO,
-                               NULL, 1, GPIO_ACTIVE_HIGH),
+                               NULL, 1, GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN),
        },
 };
 
index c6e7e6d8733afad11bc31cbe76edf205a8abf2ab..91526024964bb0e9a9bc32dffc454cf0865d59db 100644 (file)
@@ -327,8 +327,10 @@ static struct platform_device simpad_gpio_leds = {
 static struct gpiod_lookup_table simpad_i2c_gpiod_table = {
        .dev_id = "i2c-gpio",
        .table = {
-               GPIO_LOOKUP_IDX("gpio", GPIO_GPIO21, NULL, 0, GPIO_ACTIVE_HIGH),
-               GPIO_LOOKUP_IDX("gpio", GPIO_GPIO25, NULL, 1, GPIO_ACTIVE_HIGH),
+               GPIO_LOOKUP_IDX("gpio", GPIO_GPIO21, NULL, 0,
+                               GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN),
+               GPIO_LOOKUP_IDX("gpio", GPIO_GPIO25, NULL, 1,
+                               GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN),
        },
 };
 
index d801ca5ca6c4b665751f841a50d3474d161a04a0..fab69c7365152a97fd2ad6d1bcddc26881d33965 100644 (file)
@@ -367,9 +367,9 @@ static struct gpiod_lookup_table bfin_i2c_gpiod_table = {
        .dev_id = "i2c-gpio",
        .table = {
                GPIO_LOOKUP_IDX("BFIN-GPIO", GPIO_PF8, NULL, 0,
-                               GPIO_ACTIVE_HIGH),
+                               GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN),
                GPIO_LOOKUP_IDX("BFIN-GPIO", GPIO_PF9, NULL, 1,
-                               GPIO_ACTIVE_HIGH),
+                               GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN),
        },
 };
 
index 463a72358b0e4306bd376688d6b38566b9238040..d64d270e9e62ad2d71e2e4697f71fb7d30ef012e 100644 (file)
@@ -395,9 +395,9 @@ static struct gpiod_lookup_table bfin_i2c_gpiod_table = {
        .dev_id = "i2c-gpio",
        .table = {
                GPIO_LOOKUP_IDX("BFIN-GPIO", GPIO_PF1, NULL, 0,
-                               GPIO_ACTIVE_HIGH),
+                               GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN),
                GPIO_LOOKUP_IDX("BFIN-GPIO", GPIO_PF0, NULL, 1,
-                               GPIO_ACTIVE_HIGH),
+                               GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN),
        },
 };
 
index d2479359adb7842e194b71538c3d0ff3cb108e7a..27cbf2fa2c6267e8e1a004d969ffbf6817989a75 100644 (file)
@@ -517,9 +517,9 @@ static struct gpiod_lookup_table bfin_i2c_gpiod_table = {
        .dev_id = "i2c-gpio",
        .table = {
                GPIO_LOOKUP_IDX("BFIN-GPIO", GPIO_PF2, NULL, 0,
-                               GPIO_ACTIVE_HIGH),
+                               GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN),
                GPIO_LOOKUP_IDX("BFIN-GPIO", GPIO_PF3, NULL, 1,
-                               GPIO_ACTIVE_HIGH),
+                               GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN),
        },
 };
 
index 72f757ebaa84a19679c043a9a95932df71f1dc54..acc5363f60c62ba9371503d3a948c85788830bd3 100644 (file)
@@ -384,9 +384,9 @@ static struct gpiod_lookup_table bfin_i2c_gpiod_table = {
        .dev_id = "i2c-gpio",
        .table = {
                GPIO_LOOKUP_IDX("BFIN-GPIO", GPIO_PF1, NULL, 0,
-                               GPIO_ACTIVE_HIGH),
+                               GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN),
                GPIO_LOOKUP_IDX("BFIN-GPIO", GPIO_PF0, NULL, 1,
-                               GPIO_ACTIVE_HIGH),
+                               GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN),
        },
 };
 
index daebc36e5ecbc5c06a64a71dbe73fea82248df8e..328d697e72b49b505c08d5d4205687632f4ef0b1 100644 (file)
@@ -235,6 +235,10 @@ static struct gpiod_lookup_table gpr_i2c_gpiod_table = {
 };
 
 static struct i2c_gpio_platform_data gpr_i2c_data = {
+       /*
+        * The open drain mode is hardwired somewhere or an electrical
+        * property of the alchemy GPIO controller.
+        */
        .sda_is_open_drain      = 1,
        .scl_is_open_drain      = 1,
        .udelay                 = 2,            /* ~100 kHz */
index a954090638474dd9b389f79a8a2be1ee4a5961fd..6b2c6f3baefa556018dffea409500b1c7846ed77 100644 (file)
@@ -37,9 +37,9 @@ static struct gpiod_lookup_table pb44_i2c_gpiod_table = {
        .dev_id = "i2c-gpio",
        .table = {
                GPIO_LOOKUP_IDX("ath79-gpio", PB44_GPIO_I2C_SDA,
-                               NULL, 0, GPIO_ACTIVE_HIGH),
+                               NULL, 0, GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN),
                GPIO_LOOKUP_IDX("ath79-gpio", PB44_GPIO_I2C_SCL,
-                               NULL, 1, GPIO_ACTIVE_HIGH),
+                               NULL, 1, GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN),
        },
 };
 
index 4d40d013a412c8495c1cf6b89ae63e77cdfc8a68..ad774161a22d272eaff29ed10e6681e640ca34fb 100644 (file)
@@ -1152,7 +1152,7 @@ static int sm501_register_gpio_i2c_instance(struct sm501_devdata *sm,
        lookup->table[0].chip_hwnum = iic->pin_sda % 32;
        lookup->table[0].con_id = NULL;
        lookup->table[0].idx = 0;
-       lookup->table[0].flags = GPIO_ACTIVE_HIGH;
+       lookup->table[0].flags = GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN;
        if (iic->pin_scl < 32)
                lookup->table[1].chip_label = "SM501-LOW";
        else
@@ -1160,7 +1160,7 @@ static int sm501_register_gpio_i2c_instance(struct sm501_devdata *sm,
        lookup->table[1].chip_hwnum = iic->pin_scl % 32;
        lookup->table[1].con_id = NULL;
        lookup->table[1].idx = 1;
-       lookup->table[1].flags = GPIO_ACTIVE_HIGH;
+       lookup->table[1].flags = GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN;
        gpiod_add_lookup_table(lookup);
 
        icd = dev_get_platdata(&pdev->dev);