* [PATCH v2 1/7] usb: xhci: plat: Fix suspend/resume when the optional clk exists
2015-12-07 12:49 [PATCH v2 0/7] usb: xhci-plat: support generic PHY and vbus regulator Jisheng Zhang
@ 2015-12-07 12:49 ` Jisheng Zhang
2015-12-07 12:49 ` [PATCH v2 2/7] usb: xhci: plat: attach the usb_phy to the correct hcd Jisheng Zhang
` (5 subsequent siblings)
6 siblings, 0 replies; 8+ messages in thread
From: Jisheng Zhang @ 2015-12-07 12:49 UTC (permalink / raw)
To: linux-arm-kernel
Commit 4718c1774051 ("usb: host: xhci-plat: add clock support") adds
optional clk support, but it forgets to prepare/disable and
enable/unprepare the clk in the resume/suspend path. This path fixes
this issue by adding missing clk related calls.
Signed-off-by: Jisheng Zhang <jszhang@marvell.com>
Fixes: 4718c1774051 ("usb: host: xhci-plat: add clock support")
---
drivers/usb/host/xhci-plat.c | 14 +++++++++++++-
1 file changed, 13 insertions(+), 1 deletion(-)
diff --git a/drivers/usb/host/xhci-plat.c b/drivers/usb/host/xhci-plat.c
index 05647e6..b566304 100644
--- a/drivers/usb/host/xhci-plat.c
+++ b/drivers/usb/host/xhci-plat.c
@@ -226,6 +226,7 @@ static int xhci_plat_remove(struct platform_device *dev)
#ifdef CONFIG_PM_SLEEP
static int xhci_plat_suspend(struct device *dev)
{
+ int ret;
struct usb_hcd *hcd = dev_get_drvdata(dev);
struct xhci_hcd *xhci = hcd_to_xhci(hcd);
@@ -237,14 +238,25 @@ static int xhci_plat_suspend(struct device *dev)
* reconsider this when xhci_plat_suspend enlarges its scope, e.g.,
* also applies to runtime suspend.
*/
- return xhci_suspend(xhci, device_may_wakeup(dev));
+ ret = xhci_suspend(xhci, device_may_wakeup(dev));
+ if (ret)
+ return ret;
+
+ clk_disable_unprepare(xhci->clk);
+
+ return ret;
}
static int xhci_plat_resume(struct device *dev)
{
+ int ret;
struct usb_hcd *hcd = dev_get_drvdata(dev);
struct xhci_hcd *xhci = hcd_to_xhci(hcd);
+ ret = clk_prepare_enable(xhci->clk);
+ if (ret)
+ return ret;
+
return xhci_resume(xhci, 0);
}
--
2.6.2
^ permalink raw reply related [flat|nested] 8+ messages in thread* [PATCH v2 2/7] usb: xhci: plat: attach the usb_phy to the correct hcd
2015-12-07 12:49 [PATCH v2 0/7] usb: xhci-plat: support generic PHY and vbus regulator Jisheng Zhang
2015-12-07 12:49 ` [PATCH v2 1/7] usb: xhci: plat: Fix suspend/resume when the optional clk exists Jisheng Zhang
@ 2015-12-07 12:49 ` Jisheng Zhang
2015-12-07 12:49 ` [PATCH v2 3/7] usb: xhci: plat: Fix suspend/resume when the optional usb_phy exists Jisheng Zhang
` (4 subsequent siblings)
6 siblings, 0 replies; 8+ messages in thread
From: Jisheng Zhang @ 2015-12-07 12:49 UTC (permalink / raw)
To: linux-arm-kernel
Commit 7b8ef22ea547 ("usb: xhci: plat: Add USB phy support") adds the
usb_phy for usb3, but it attached the usb_phy to incorrect hcd. The
xhci->shared_hcd is the hcd for usb3, this patch fixes this issue
by attach the usb_phy to the xhci->shared_hcd.
Signed-off-by: Jisheng Zhang <jszhang@marvell.com>
---
drivers/usb/host/xhci-plat.c | 16 +++++++++-------
1 file changed, 9 insertions(+), 7 deletions(-)
diff --git a/drivers/usb/host/xhci-plat.c b/drivers/usb/host/xhci-plat.c
index b566304..a8c465a 100644
--- a/drivers/usb/host/xhci-plat.c
+++ b/drivers/usb/host/xhci-plat.c
@@ -82,6 +82,7 @@ static int xhci_plat_probe(struct platform_device *pdev)
struct resource *res;
struct usb_hcd *hcd;
struct clk *clk;
+ struct usb_phy *usb_phy;
int ret;
int irq;
@@ -162,17 +163,18 @@ static int xhci_plat_probe(struct platform_device *pdev)
if (HCC_MAX_PSA(xhci->hcc_params) >= 4)
xhci->shared_hcd->can_do_streams = 1;
- hcd->usb_phy = devm_usb_get_phy_by_phandle(&pdev->dev, "usb-phy", 0);
- if (IS_ERR(hcd->usb_phy)) {
- ret = PTR_ERR(hcd->usb_phy);
+ usb_phy = devm_usb_get_phy_by_phandle(&pdev->dev, "usb-phy", 0);
+ if (IS_ERR(usb_phy)) {
+ ret = PTR_ERR(usb_phy);
if (ret == -EPROBE_DEFER)
goto put_usb3_hcd;
- hcd->usb_phy = NULL;
+ usb_phy = NULL;
} else {
- ret = usb_phy_init(hcd->usb_phy);
+ ret = usb_phy_init(usb_phy);
if (ret)
goto put_usb3_hcd;
}
+ xhci->shared_hcd->usb_phy = usb_phy;
ret = usb_add_hcd(hcd, irq, IRQF_SHARED);
if (ret)
@@ -189,7 +191,7 @@ dealloc_usb2_hcd:
usb_remove_hcd(hcd);
disable_usb_phy:
- usb_phy_shutdown(hcd->usb_phy);
+ usb_phy_shutdown(usb_phy);
put_usb3_hcd:
usb_put_hcd(xhci->shared_hcd);
@@ -211,7 +213,7 @@ static int xhci_plat_remove(struct platform_device *dev)
struct clk *clk = xhci->clk;
usb_remove_hcd(xhci->shared_hcd);
- usb_phy_shutdown(hcd->usb_phy);
+ usb_phy_shutdown(xhci->shared_hcd->usb_phy);
usb_remove_hcd(hcd);
usb_put_hcd(xhci->shared_hcd);
--
2.6.2
^ permalink raw reply related [flat|nested] 8+ messages in thread* [PATCH v2 3/7] usb: xhci: plat: Fix suspend/resume when the optional usb_phy exists
2015-12-07 12:49 [PATCH v2 0/7] usb: xhci-plat: support generic PHY and vbus regulator Jisheng Zhang
2015-12-07 12:49 ` [PATCH v2 1/7] usb: xhci: plat: Fix suspend/resume when the optional clk exists Jisheng Zhang
2015-12-07 12:49 ` [PATCH v2 2/7] usb: xhci: plat: attach the usb_phy to the correct hcd Jisheng Zhang
@ 2015-12-07 12:49 ` Jisheng Zhang
2015-12-07 12:49 ` [PATCH v2 4/7] usb: xhci: plat: sort the headers in alphabetic order Jisheng Zhang
` (3 subsequent siblings)
6 siblings, 0 replies; 8+ messages in thread
From: Jisheng Zhang @ 2015-12-07 12:49 UTC (permalink / raw)
To: linux-arm-kernel
Commit 7b8ef22ea547 ("usb: xhci: plat: Add USB phy support") adds the
usb_phy for usb3, but it forgets to shutdown/init the usb_phy in the
suspend/resume path. This patch fixes this issue by adding missing
usb_phy related calls.
Signed-off-by: Jisheng Zhang <jszhang@marvell.com>
---
drivers/usb/host/xhci-plat.c | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/drivers/usb/host/xhci-plat.c b/drivers/usb/host/xhci-plat.c
index a8c465a..cd49ae5 100644
--- a/drivers/usb/host/xhci-plat.c
+++ b/drivers/usb/host/xhci-plat.c
@@ -244,6 +244,7 @@ static int xhci_plat_suspend(struct device *dev)
if (ret)
return ret;
+ usb_phy_shutdown(xhci->shared_hcd->usb_phy);
clk_disable_unprepare(xhci->clk);
return ret;
@@ -259,6 +260,10 @@ static int xhci_plat_resume(struct device *dev)
if (ret)
return ret;
+ ret = usb_phy_init(xhci->shared_hcd->usb_phy);
+ if (ret)
+ return ret;
+
return xhci_resume(xhci, 0);
}
--
2.6.2
^ permalink raw reply related [flat|nested] 8+ messages in thread* [PATCH v2 4/7] usb: xhci: plat: sort the headers in alphabetic order
2015-12-07 12:49 [PATCH v2 0/7] usb: xhci-plat: support generic PHY and vbus regulator Jisheng Zhang
` (2 preceding siblings ...)
2015-12-07 12:49 ` [PATCH v2 3/7] usb: xhci: plat: Fix suspend/resume when the optional usb_phy exists Jisheng Zhang
@ 2015-12-07 12:49 ` Jisheng Zhang
2015-12-07 12:49 ` [PATCH v2 5/7] usb: xhci: plat: Remove checks for optional clock in error/remove path Jisheng Zhang
` (2 subsequent siblings)
6 siblings, 0 replies; 8+ messages in thread
From: Jisheng Zhang @ 2015-12-07 12:49 UTC (permalink / raw)
To: linux-arm-kernel
Sorting the headers in alphabetic order will help to reduce the conflict
when adding new headers later.
Signed-off-by: Jisheng Zhang <jszhang@marvell.com>
---
drivers/usb/host/xhci-plat.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/usb/host/xhci-plat.c b/drivers/usb/host/xhci-plat.c
index cd49ae5..d990135 100644
--- a/drivers/usb/host/xhci-plat.c
+++ b/drivers/usb/host/xhci-plat.c
@@ -11,15 +11,15 @@
* version 2 as published by the Free Software Foundation.
*/
+#include <linux/acpi.h>
#include <linux/clk.h>
#include <linux/dma-mapping.h>
#include <linux/module.h>
#include <linux/of.h>
#include <linux/platform_device.h>
-#include <linux/usb/phy.h>
#include <linux/slab.h>
+#include <linux/usb/phy.h>
#include <linux/usb/xhci_pdriver.h>
-#include <linux/acpi.h>
#include "xhci.h"
#include "xhci-mvebu.h"
--
2.6.2
^ permalink raw reply related [flat|nested] 8+ messages in thread* [PATCH v2 5/7] usb: xhci: plat: Remove checks for optional clock in error/remove path
2015-12-07 12:49 [PATCH v2 0/7] usb: xhci-plat: support generic PHY and vbus regulator Jisheng Zhang
` (3 preceding siblings ...)
2015-12-07 12:49 ` [PATCH v2 4/7] usb: xhci: plat: sort the headers in alphabetic order Jisheng Zhang
@ 2015-12-07 12:49 ` Jisheng Zhang
2015-12-07 12:49 ` [PATCH v2 6/7] usb: xhci: plat: add generic PHY support Jisheng Zhang
2015-12-07 12:49 ` [PATCH v2 7/7] usb: xhci: plat: add vbus regulator control Jisheng Zhang
6 siblings, 0 replies; 8+ messages in thread
From: Jisheng Zhang @ 2015-12-07 12:49 UTC (permalink / raw)
To: linux-arm-kernel
Commit 63589e92c2d9 ("clk: Ignore error and NULL pointers passed to
clk_{unprepare, disable}()") allows NULL or error pointer to be passed
unconditionally.
This patch is to simplify probe error and remove code paths.
Signed-off-by: Jisheng Zhang <jszhang@marvell.com>
---
drivers/usb/host/xhci-plat.c | 6 ++----
1 file changed, 2 insertions(+), 4 deletions(-)
diff --git a/drivers/usb/host/xhci-plat.c b/drivers/usb/host/xhci-plat.c
index d990135..62f02e5 100644
--- a/drivers/usb/host/xhci-plat.c
+++ b/drivers/usb/host/xhci-plat.c
@@ -197,8 +197,7 @@ put_usb3_hcd:
usb_put_hcd(xhci->shared_hcd);
disable_clk:
- if (!IS_ERR(clk))
- clk_disable_unprepare(clk);
+ clk_disable_unprepare(clk);
put_hcd:
usb_put_hcd(hcd);
@@ -218,8 +217,7 @@ static int xhci_plat_remove(struct platform_device *dev)
usb_remove_hcd(hcd);
usb_put_hcd(xhci->shared_hcd);
- if (!IS_ERR(clk))
- clk_disable_unprepare(clk);
+ clk_disable_unprepare(clk);
usb_put_hcd(hcd);
return 0;
--
2.6.2
^ permalink raw reply related [flat|nested] 8+ messages in thread* [PATCH v2 6/7] usb: xhci: plat: add generic PHY support
2015-12-07 12:49 [PATCH v2 0/7] usb: xhci-plat: support generic PHY and vbus regulator Jisheng Zhang
` (4 preceding siblings ...)
2015-12-07 12:49 ` [PATCH v2 5/7] usb: xhci: plat: Remove checks for optional clock in error/remove path Jisheng Zhang
@ 2015-12-07 12:49 ` Jisheng Zhang
2015-12-07 12:49 ` [PATCH v2 7/7] usb: xhci: plat: add vbus regulator control Jisheng Zhang
6 siblings, 0 replies; 8+ messages in thread
From: Jisheng Zhang @ 2015-12-07 12:49 UTC (permalink / raw)
To: linux-arm-kernel
Marvell BG4CT SoC needs two phy: one for usb2 and another for usb3. Add
the calls to retrieve generic PHY to xhci plat in order to support this.
Signed-off-by: Jisheng Zhang <jszhang@marvell.com>
---
drivers/usb/host/xhci-plat.c | 87 ++++++++++++++++++++++++++++++++++++++------
1 file changed, 75 insertions(+), 12 deletions(-)
diff --git a/drivers/usb/host/xhci-plat.c b/drivers/usb/host/xhci-plat.c
index 62f02e5..bb972a6 100644
--- a/drivers/usb/host/xhci-plat.c
+++ b/drivers/usb/host/xhci-plat.c
@@ -16,6 +16,7 @@
#include <linux/dma-mapping.h>
#include <linux/module.h>
#include <linux/of.h>
+#include <linux/phy/phy.h>
#include <linux/platform_device.h>
#include <linux/slab.h>
#include <linux/usb/phy.h>
@@ -73,6 +74,37 @@ static int xhci_plat_start(struct usb_hcd *hcd)
return xhci_run(hcd);
}
+static int xhci_plat_phy_init(struct usb_hcd *hcd)
+{
+ int ret;
+
+ if (hcd->phy) {
+ ret = phy_init(hcd->phy);
+ if (ret)
+ return ret;
+
+ ret = phy_power_on(hcd->phy);
+ if (ret) {
+ phy_exit(hcd->phy);
+ return ret;
+ }
+ } else {
+ ret = usb_phy_init(hcd->usb_phy);
+ }
+
+ return ret;
+}
+
+static void xhci_plat_phy_exit(struct usb_hcd *hcd)
+{
+ if (hcd->phy) {
+ phy_power_off(hcd->phy);
+ phy_exit(hcd->phy);
+ } else {
+ usb_phy_shutdown(hcd->usb_phy);
+ }
+}
+
static int xhci_plat_probe(struct platform_device *pdev)
{
struct device_node *node = pdev->dev.of_node;
@@ -83,6 +115,7 @@ static int xhci_plat_probe(struct platform_device *pdev)
struct usb_hcd *hcd;
struct clk *clk;
struct usb_phy *usb_phy;
+ struct phy *phy;
int ret;
int irq;
@@ -163,22 +196,44 @@ static int xhci_plat_probe(struct platform_device *pdev)
if (HCC_MAX_PSA(xhci->hcc_params) >= 4)
xhci->shared_hcd->can_do_streams = 1;
+ hcd->phy = devm_phy_get(&pdev->dev, "usb2-phy");
+ if (IS_ERR(hcd->phy)) {
+ ret = PTR_ERR(hcd->phy);
+ if (ret == -EPROBE_DEFER)
+ goto put_usb3_hcd;
+ hcd->phy = NULL;
+ }
+
+ phy = devm_phy_get(&pdev->dev, "usb-phy");
+ if (IS_ERR(phy)) {
+ ret = PTR_ERR(phy);
+ if (ret == -EPROBE_DEFER)
+ goto put_usb3_hcd;
+ phy = NULL;
+ }
+
usb_phy = devm_usb_get_phy_by_phandle(&pdev->dev, "usb-phy", 0);
if (IS_ERR(usb_phy)) {
ret = PTR_ERR(usb_phy);
if (ret == -EPROBE_DEFER)
goto put_usb3_hcd;
usb_phy = NULL;
- } else {
- ret = usb_phy_init(usb_phy);
- if (ret)
- goto put_usb3_hcd;
}
+
xhci->shared_hcd->usb_phy = usb_phy;
+ xhci->shared_hcd->phy = phy;
+
+ ret = xhci_plat_phy_init(hcd);
+ if (ret)
+ goto put_usb3_hcd;
+
+ ret = xhci_plat_phy_init(xhci->shared_hcd);
+ if (ret)
+ goto disable_usb2_phy;
ret = usb_add_hcd(hcd, irq, IRQF_SHARED);
if (ret)
- goto disable_usb_phy;
+ goto disable_usb3_phy;
ret = usb_add_hcd(xhci->shared_hcd, irq, IRQF_SHARED);
if (ret)
@@ -190,8 +245,11 @@ static int xhci_plat_probe(struct platform_device *pdev)
dealloc_usb2_hcd:
usb_remove_hcd(hcd);
-disable_usb_phy:
- usb_phy_shutdown(usb_phy);
+disable_usb3_phy:
+ xhci_plat_phy_exit(xhci->shared_hcd);
+
+disable_usb2_phy:
+ xhci_plat_phy_exit(hcd);
put_usb3_hcd:
usb_put_hcd(xhci->shared_hcd);
@@ -212,11 +270,11 @@ static int xhci_plat_remove(struct platform_device *dev)
struct clk *clk = xhci->clk;
usb_remove_hcd(xhci->shared_hcd);
- usb_phy_shutdown(xhci->shared_hcd->usb_phy);
-
- usb_remove_hcd(hcd);
+ xhci_plat_phy_exit(xhci->shared_hcd);
usb_put_hcd(xhci->shared_hcd);
+ usb_remove_hcd(hcd);
+ xhci_plat_phy_exit(hcd);
clk_disable_unprepare(clk);
usb_put_hcd(hcd);
@@ -242,7 +300,8 @@ static int xhci_plat_suspend(struct device *dev)
if (ret)
return ret;
- usb_phy_shutdown(xhci->shared_hcd->usb_phy);
+ xhci_plat_phy_exit(xhci->shared_hcd);
+ xhci_plat_phy_exit(hcd);
clk_disable_unprepare(xhci->clk);
return ret;
@@ -258,7 +317,11 @@ static int xhci_plat_resume(struct device *dev)
if (ret)
return ret;
- ret = usb_phy_init(xhci->shared_hcd->usb_phy);
+ ret = xhci_plat_phy_init(hcd);
+ if (ret)
+ return ret;
+
+ ret = xhci_plat_phy_init(xhci->shared_hcd);
if (ret)
return ret;
--
2.6.2
^ permalink raw reply related [flat|nested] 8+ messages in thread* [PATCH v2 7/7] usb: xhci: plat: add vbus regulator control
2015-12-07 12:49 [PATCH v2 0/7] usb: xhci-plat: support generic PHY and vbus regulator Jisheng Zhang
` (5 preceding siblings ...)
2015-12-07 12:49 ` [PATCH v2 6/7] usb: xhci: plat: add generic PHY support Jisheng Zhang
@ 2015-12-07 12:49 ` Jisheng Zhang
6 siblings, 0 replies; 8+ messages in thread
From: Jisheng Zhang @ 2015-12-07 12:49 UTC (permalink / raw)
To: linux-arm-kernel
The Marvell BG4CT STB board has board level vbus control through gpio.
This patch adds the vbus regulator control to support this board.
Signed-off-by: Jisheng Zhang <jszhang@marvell.com>
---
drivers/usb/host/xhci-plat.c | 39 ++++++++++++++++++++++++++++++++++++++-
drivers/usb/host/xhci.h | 2 ++
2 files changed, 40 insertions(+), 1 deletion(-)
diff --git a/drivers/usb/host/xhci-plat.c b/drivers/usb/host/xhci-plat.c
index bb972a6..c03e8d5 100644
--- a/drivers/usb/host/xhci-plat.c
+++ b/drivers/usb/host/xhci-plat.c
@@ -18,6 +18,7 @@
#include <linux/of.h>
#include <linux/phy/phy.h>
#include <linux/platform_device.h>
+#include <linux/regulator/consumer.h>
#include <linux/slab.h>
#include <linux/usb/phy.h>
#include <linux/usb/xhci_pdriver.h>
@@ -116,6 +117,7 @@ static int xhci_plat_probe(struct platform_device *pdev)
struct clk *clk;
struct usb_phy *usb_phy;
struct phy *phy;
+ struct regulator *vbus;
int ret;
int irq;
@@ -179,14 +181,31 @@ static int xhci_plat_probe(struct platform_device *pdev)
device_wakeup_enable(hcd->self.controller);
+ vbus = devm_regulator_get(&pdev->dev, "vbus");
+ if (PTR_ERR(vbus) == -ENODEV) {
+ vbus = NULL;
+ } else if (IS_ERR(vbus)) {
+ ret = PTR_ERR(vbus);
+ goto disable_clk;
+ } else if (vbus) {
+ ret = regulator_enable(vbus);
+ if (ret) {
+ dev_err(&pdev->dev,
+ "failed to enable usb vbus regulator: %d\n",
+ ret);
+ goto disable_clk;
+ }
+ }
+
xhci = hcd_to_xhci(hcd);
xhci->clk = clk;
+ xhci->vbus = vbus;
xhci->main_hcd = hcd;
xhci->shared_hcd = usb_create_shared_hcd(driver, &pdev->dev,
dev_name(&pdev->dev), hcd);
if (!xhci->shared_hcd) {
ret = -ENOMEM;
- goto disable_clk;
+ goto disable_vbus;
}
if ((node && of_property_read_bool(node, "usb3-lpm-capable")) ||
@@ -254,6 +273,10 @@ disable_usb2_phy:
put_usb3_hcd:
usb_put_hcd(xhci->shared_hcd);
+disable_vbus:
+ if (vbus)
+ regulator_disable(vbus);
+
disable_clk:
clk_disable_unprepare(clk);
@@ -268,6 +291,7 @@ static int xhci_plat_remove(struct platform_device *dev)
struct usb_hcd *hcd = platform_get_drvdata(dev);
struct xhci_hcd *xhci = hcd_to_xhci(hcd);
struct clk *clk = xhci->clk;
+ struct regulator *vbus = xhci->vbus;
usb_remove_hcd(xhci->shared_hcd);
xhci_plat_phy_exit(xhci->shared_hcd);
@@ -278,6 +302,9 @@ static int xhci_plat_remove(struct platform_device *dev)
clk_disable_unprepare(clk);
usb_put_hcd(hcd);
+ if (vbus)
+ regulator_disable(vbus);
+
return 0;
}
@@ -287,6 +314,7 @@ static int xhci_plat_suspend(struct device *dev)
int ret;
struct usb_hcd *hcd = dev_get_drvdata(dev);
struct xhci_hcd *xhci = hcd_to_xhci(hcd);
+ struct regulator *vbus = xhci->vbus;
/*
* xhci_suspend() needs `do_wakeup` to know whether host is allowed
@@ -303,6 +331,8 @@ static int xhci_plat_suspend(struct device *dev)
xhci_plat_phy_exit(xhci->shared_hcd);
xhci_plat_phy_exit(hcd);
clk_disable_unprepare(xhci->clk);
+ if (vbus)
+ ret = regulator_disable(vbus);
return ret;
}
@@ -312,11 +342,18 @@ static int xhci_plat_resume(struct device *dev)
int ret;
struct usb_hcd *hcd = dev_get_drvdata(dev);
struct xhci_hcd *xhci = hcd_to_xhci(hcd);
+ struct regulator *vbus = xhci->vbus;
ret = clk_prepare_enable(xhci->clk);
if (ret)
return ret;
+ if (vbus) {
+ ret = regulator_enable(vbus);
+ if (ret)
+ return ret;
+ }
+
ret = xhci_plat_phy_init(hcd);
if (ret)
return ret;
diff --git a/drivers/usb/host/xhci.h b/drivers/usb/host/xhci.h
index 0b94512..1355d2a 100644
--- a/drivers/usb/host/xhci.h
+++ b/drivers/usb/host/xhci.h
@@ -1541,6 +1541,8 @@ struct xhci_hcd {
struct msix_entry *msix_entries;
/* optional clock */
struct clk *clk;
+ /* optional regulator */
+ struct regulator *vbus;
/* data structures */
struct xhci_device_context_array *dcbaa;
struct xhci_ring *cmd_ring;
--
2.6.2
^ permalink raw reply related [flat|nested] 8+ messages in thread