i2c: iop: Use GPIO descriptors
The IOP3xx has some elaborate code to directly slam the GPIO lines multiplexed with I2C down low before enablement, apparently a workaround for a hardware bug found in the early chips. After consulting the developer documentation for IOP80321 and IOP80331 I can clearly see that this may be useful for IOP80321 family (mach-iop32x) but it is highly dubious for any 80331 series or later chip: in these chips the lines are not multiplexed for UARTs. We convert the code to pass optional GPIO descriptors and register these only on the 80321-based boards where it makes sense, optionally obtain them in the driver and use the gpiod_set_raw_value() to ascertain the line gets driven low when needed. The GPIO driver does not give the GPIO chip a reasonable label so the patch also adds that so that these machine descriptor tables can be used. Signed-off-by: Linus Walleij <linus.walleij@linaro.org> Acked-by: Arnd Bergmann <arnd@arndb.de> Acked-by: Dan Williams <dan.j.williams@intel.com> Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
This commit is contained in:

committed by
Wolfram Sang

parent
ed7357c9f9
commit
fdb7e884ad
@@ -40,6 +40,7 @@ static int iop3xx_gpio_probe(struct platform_device *pdev)
|
||||
|
||||
gc->base = 0;
|
||||
gc->owner = THIS_MODULE;
|
||||
gc->label = "gpio-iop";
|
||||
|
||||
return devm_gpiochip_add_data(&pdev->dev, gc, NULL);
|
||||
}
|
||||
|
Reference in New Issue
Block a user