Commit 4d7201cd authored by Marco Felsch's avatar Marco Felsch Committed by Greg Kroah-Hartman

usb: usb251xb: add vdd supply support

Currently we don't handle the supply. We need to add the supply support
to be able to switch the supply off e.g. during a suspend-to-ram
operation. So we can guarantee a correct (re-)initialization.
Signed-off-by: default avatarMarco Felsch <m.felsch@pengutronix.de>
Reviewed-by: default avatarRichard Leitner <richard.leitner@skidata.com>
Tested-by: default avatarRichard Leitner <richard.leitner@skidata.com>
Link: https://lore.kernel.org/r/20190917144449.32739-3-m.felsch@pengutronix.deSigned-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent ad9480ae
...@@ -17,6 +17,7 @@ ...@@ -17,6 +17,7 @@
#include <linux/module.h> #include <linux/module.h>
#include <linux/nls.h> #include <linux/nls.h>
#include <linux/of_device.h> #include <linux/of_device.h>
#include <linux/regulator/consumer.h>
#include <linux/slab.h> #include <linux/slab.h>
/* Internal Register Set Addresses & Default Values acc. to DS00001692C */ /* Internal Register Set Addresses & Default Values acc. to DS00001692C */
...@@ -116,6 +117,7 @@ ...@@ -116,6 +117,7 @@
struct usb251xb { struct usb251xb {
struct device *dev; struct device *dev;
struct i2c_client *i2c; struct i2c_client *i2c;
struct regulator *vdd;
u8 skip_config; u8 skip_config;
struct gpio_desc *gpio_reset; struct gpio_desc *gpio_reset;
u16 vendor_id; u16 vendor_id;
...@@ -420,6 +422,10 @@ static int usb251xb_get_ofdata(struct usb251xb *hub, ...@@ -420,6 +422,10 @@ static int usb251xb_get_ofdata(struct usb251xb *hub,
return err; return err;
} }
hub->vdd = devm_regulator_get(dev, "vdd");
if (IS_ERR(hub->vdd))
return PTR_ERR(hub->vdd);
if (of_property_read_u16_array(np, "vendor-id", &hub->vendor_id, 1)) if (of_property_read_u16_array(np, "vendor-id", &hub->vendor_id, 1))
hub->vendor_id = USB251XB_DEF_VENDOR_ID; hub->vendor_id = USB251XB_DEF_VENDOR_ID;
...@@ -665,6 +671,10 @@ static int usb251xb_probe(struct usb251xb *hub) ...@@ -665,6 +671,10 @@ static int usb251xb_probe(struct usb251xb *hub)
if (err) if (err)
return err; return err;
err = regulator_enable(hub->vdd);
if (err)
return err;
err = usb251xb_connect(hub); err = usb251xb_connect(hub);
if (err) { if (err) {
dev_err(dev, "Failed to connect hub (%d)\n", err); dev_err(dev, "Failed to connect hub (%d)\n", err);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment