Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 4807e845 authored by Laurent Pinchart's avatar Laurent Pinchart Committed by Wolfram Sang
Browse files

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: default avatarLaurent Pinchart <laurent.pinchart@ideasonboard.com>
Reviewed-by: default avatarLinus Walleij <linus.walleij@linaro.org>
Signed-off-by: default avatarWolfram Sang <wsa@the-dreams.de>
parent d49019a0
Loading
Loading
Loading
Loading
+5 −16
Original line number Diff line number Diff line
@@ -186,7 +186,7 @@ static int pca954x_probe(struct i2c_client *client,
{
	struct i2c_adapter *adap = to_i2c_adapter(client->dev.parent);
	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;
	struct pca954x *data;
	int ret;
@@ -200,21 +200,10 @@ static int pca954x_probe(struct i2c_client *client,

	i2c_set_clientdata(client, data);

	if (IS_ENABLED(CONFIG_OF) && np) {
		enum of_gpio_flags flags;
		int gpio;

	/* 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;
		}
	}
	gpio = devm_gpiod_get(&client->dev, "reset");
	if (!IS_ERR(gpio))
		gpiod_direction_output(gpio, 0);

	/* Write the mux register at addr to verify
	 * that the mux is in fact present. This also