diff options
author | Andrey Smirnov <andrew.smirnov@gmail.com> | 2016-11-15 06:46:45 -0800 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2017-01-10 08:27:33 +0100 |
commit | 28dde40d1a8fff59d47721327dcef3307c313d2a (patch) | |
tree | 6534f7bf37653f438790c7c455b33030aeed4e43 /drivers/i2c | |
parent | 883fa873979d6757effc474ca1de6cf0c8f2a79f (diff) | |
download | barebox-28dde40d1a8fff59d47721327dcef3307c313d2a.tar.gz barebox-28dde40d1a8fff59d47721327dcef3307c313d2a.tar.xz |
i2c-mux-pca954x: Add code to control reset line
Most recent device tree binding for that mux support specifying a GPIO
connected to a reset line of that chip. Add code to handle that binding
in order to be able to use the chip on boards that leverage
aforementioned functionality.
Signed-off-by: Andrey Smirnov <andrew.smirnov@gmail.com>
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'drivers/i2c')
-rw-r--r-- | drivers/i2c/muxes/i2c-mux-pca954x.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/drivers/i2c/muxes/i2c-mux-pca954x.c b/drivers/i2c/muxes/i2c-mux-pca954x.c index baeae7bb94..0d5515b716 100644 --- a/drivers/i2c/muxes/i2c-mux-pca954x.c +++ b/drivers/i2c/muxes/i2c-mux-pca954x.c @@ -45,6 +45,8 @@ #include <i2c/i2c-algo-bit.h> #include <i2c/i2c-mux.h> #include <init.h> +#include <gpio.h> +#include <of_gpio.h> #define PCA954X_MAX_NCHANS 8 @@ -179,6 +181,7 @@ static int pca954x_probe(struct device_d *dev) int num, force; struct pca954x *data; int ret = -ENODEV; + int gpio; data = kzalloc(sizeof(struct pca954x), GFP_KERNEL); if (!data) { @@ -188,6 +191,10 @@ static int pca954x_probe(struct device_d *dev) i2c_set_clientdata(client, data); + gpio = of_get_named_gpio(dev->device_node, "reset-gpios", 0); + if (gpio_is_valid(gpio)) + gpio_direction_output(gpio, 1); + /* Read the mux register at addr to verify * that the mux is in fact present. */ |