i2c: mux: pca954x: Use the descriptor-based GPIO API

The ID-based GPIO API pushes handling of GPIO polarity to drivers.
Simplify the driver by switching to the descriptor-based GPIO API.

This also fixes a mismatch between the pca954x DT bindings that document
a "reset-gpios" property and the driver that requests a "reset-gpio"
property.

Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
This commit is contained in:
Laurent Pinchart 2014-06-03 13:15:26 +02:00 committed by Wolfram Sang
parent d49019a069
commit 4807e8459b

View File

@ -186,7 +186,7 @@ static int pca954x_probe(struct i2c_client *client,
{ {
struct i2c_adapter *adap = to_i2c_adapter(client->dev.parent); struct i2c_adapter *adap = to_i2c_adapter(client->dev.parent);
struct pca954x_platform_data *pdata = dev_get_platdata(&client->dev); struct pca954x_platform_data *pdata = dev_get_platdata(&client->dev);
struct device_node *np = client->dev.of_node; struct gpio_desc *gpio;
int num, force, class; int num, force, class;
struct pca954x *data; struct pca954x *data;
int ret; int ret;
@ -200,21 +200,10 @@ static int pca954x_probe(struct i2c_client *client,
i2c_set_clientdata(client, data); i2c_set_clientdata(client, data);
if (IS_ENABLED(CONFIG_OF) && np) { /* Get the mux out of reset if a reset GPIO is specified. */
enum of_gpio_flags flags; gpio = devm_gpiod_get(&client->dev, "reset");
int gpio; if (!IS_ERR(gpio))
gpiod_direction_output(gpio, 0);
/* Get the mux out of reset if a reset GPIO is specified. */
gpio = of_get_named_gpio_flags(np, "reset-gpio", 0, &flags);
if (gpio_is_valid(gpio)) {
ret = devm_gpio_request_one(&client->dev, gpio,
flags & OF_GPIO_ACTIVE_LOW ?
GPIOF_OUT_INIT_HIGH : GPIOF_OUT_INIT_LOW,
"pca954x reset");
if (ret < 0)
return ret;
}
}
/* Write the mux register at addr to verify /* Write the mux register at addr to verify
* that the mux is in fact present. This also * that the mux is in fact present. This also