summaryrefslogtreecommitdiff
path: root/arch/arm/mach-tegra
diff options
context:
space:
mode:
authorHenry Lin <henryl@nvidia.com>2013-09-16 14:15:25 +0800
committerBharat Nihalani <bnihalani@nvidia.com>2013-10-04 08:36:20 -0700
commit728fac1d7b7d91ad32ea9ec58da35c9464eed5fd (patch)
tree0e7b20392e7bbbdabfcf8325eb8e16f076d6bedf /arch/arm/mach-tegra
parent4d59c84dda7b8cd92755063a261057ca6143ca87 (diff)
xhci: tegra: only enable vbus owned by xusb
The vbus regulators are shared between xhci and echi host controller. Only the port owner should enable corresponding vbus regulator. Bug 1348463 Change-Id: I77ad19505869e98ae47f1ef36956e8312b5f2e4e Signed-off-by: Henry Lin <henryl@nvidia.com> Reviewed-on: http://git-master/r/281337 Reviewed-by: Bharat Nihalani <bnihalani@nvidia.com> Tested-by: Bharat Nihalani <bnihalani@nvidia.com>
Diffstat (limited to 'arch/arm/mach-tegra')
-rw-r--r--arch/arm/mach-tegra/board-ardbeg.c7
-rw-r--r--arch/arm/mach-tegra/board-dalmore.c4
-rw-r--r--arch/arm/mach-tegra/board-loki.c7
-rw-r--r--arch/arm/mach-tegra/board-pluto.c4
-rw-r--r--arch/arm/mach-tegra/include/mach/xusb.h13
5 files changed, 18 insertions, 17 deletions
diff --git a/arch/arm/mach-tegra/board-ardbeg.c b/arch/arm/mach-tegra/board-ardbeg.c
index 98b6a0b45943..47b97b2ea195 100644
--- a/arch/arm/mach-tegra/board-ardbeg.c
+++ b/arch/arm/mach-tegra/board-ardbeg.c
@@ -663,9 +663,9 @@ static struct tegra_xusb_board_data xusb_bdata = {
.portmap = TEGRA_XUSB_SS_P0 | TEGRA_XUSB_USB2_P0 | TEGRA_XUSB_SS_P1 |
TEGRA_XUSB_USB2_P1 | TEGRA_XUSB_USB2_P2,
.supply = {
- .s5p0v = "usb_vbus0",
- .s5p0v1 = "usb_vbus1",
- .s5p0v2 = "usb_vbus2",
+ .utmi_vbuses = {
+ "usb_vbus0", "usb_vbus1", "usb_vbus2"
+ },
.s3p3v = "hvdd_usb",
.s1p8v = "avdd_pll_utmip",
.vddio_hsic = "vddio_hsic",
@@ -684,7 +684,6 @@ static struct tegra_xusb_board_data xusb_bdata = {
.pretend_connect = false,
},
.uses_external_pmic = false,
- .uses_different_vbus_per_port = true,
};
static void ardbeg_xusb_init(void)
diff --git a/arch/arm/mach-tegra/board-dalmore.c b/arch/arm/mach-tegra/board-dalmore.c
index 42812667af98..83b43ff72208 100644
--- a/arch/arm/mach-tegra/board-dalmore.c
+++ b/arch/arm/mach-tegra/board-dalmore.c
@@ -507,7 +507,9 @@ static struct tegra_xusb_board_data xusb_bdata = {
.ss_portmap = (TEGRA_XUSB_SS_PORT_MAP_USB2_P1 << 0),
.uses_external_pmic = false,
.supply = {
- .s5p0v = "usb_vbus",
+ .utmi_vbuses = {
+ NULL, "usb_vbus", NULL
+ },
.s3p3v = "hvdd_usb",
.s1p8v = "avdd_usb_pll",
.vddio_hsic = "vddio_hsic",
diff --git a/arch/arm/mach-tegra/board-loki.c b/arch/arm/mach-tegra/board-loki.c
index f1a648804c56..ad2949879f5f 100644
--- a/arch/arm/mach-tegra/board-loki.c
+++ b/arch/arm/mach-tegra/board-loki.c
@@ -499,16 +499,15 @@ static struct tegra_xusb_board_data xusb_bdata = {
.portmap = TEGRA_XUSB_SS_P0 | TEGRA_XUSB_USB2_P0 | TEGRA_XUSB_SS_P1 |
TEGRA_XUSB_USB2_P1 | TEGRA_XUSB_USB2_P2,
.supply = {
- .s5p0v = "usb_vbus0",
- .s5p0v1 = "usb_vbus1",
- .s5p0v2 = "usb_vbus2",
+ .utmi_vbuses = {
+ NULL, NULL, NULL
+ },
.s3p3v = "hvdd_usb",
.s1p8v = "avdd_pll_utmip",
.vddio_hsic = "vddio_hsic",
.s1p05v = "avddio_usb",
},
.uses_external_pmic = false,
- .uses_different_vbus_per_port = true,
};
static void loki_xusb_init(void)
diff --git a/arch/arm/mach-tegra/board-pluto.c b/arch/arm/mach-tegra/board-pluto.c
index 5d557fb7b38f..62721e2224d7 100644
--- a/arch/arm/mach-tegra/board-pluto.c
+++ b/arch/arm/mach-tegra/board-pluto.c
@@ -1112,7 +1112,9 @@ static struct tegra_xusb_board_data xusb_bdata = {
.ss_portmap = (TEGRA_XUSB_SS_PORT_MAP_USB2_P0 << 0),
.uses_external_pmic = true,
.supply = {
- .s5p0v = "usb_vbus",
+ .utmi_vbuses = {
+ NULL, "usb_vbus", NULL
+ },
.s3p3v = "hvdd_usb",
.s1p8v = "avdd_usb_pll",
.vddio_hsic = "vddio_hsic",
diff --git a/arch/arm/mach-tegra/include/mach/xusb.h b/arch/arm/mach-tegra/include/mach/xusb.h
index 9466a15e5090..a87a9c5dddfb 100644
--- a/arch/arm/mach-tegra/include/mach/xusb.h
+++ b/arch/arm/mach-tegra/include/mach/xusb.h
@@ -27,9 +27,11 @@
*/
#define TEGRA_XUSB_SS_P0 (1 << 0)
#define TEGRA_XUSB_SS_P1 (1 << 1)
-#define TEGRA_XUSB_USB2_P0 (1 << 8)
-#define TEGRA_XUSB_USB2_P1 (1 << 9)
-#define TEGRA_XUSB_USB2_P2 (1 << 10)
+#define XUSB_UTMI_INDEX (8)
+#define XUSB_UTMI_COUNT (3)
+#define TEGRA_XUSB_USB2_P0 BIT(XUSB_UTMI_INDEX)
+#define TEGRA_XUSB_USB2_P1 BIT(XUSB_UTMI_INDEX + 1)
+#define TEGRA_XUSB_USB2_P2 BIT(XUSB_UTMI_INDEX + 2)
#define XUSB_HSIC_INDEX (16)
#define XUSB_HSIC_COUNT (2)
#define XUSB_SS_PORT_COUNT (2)
@@ -50,9 +52,7 @@
#define TEGRA_XUSB_UTMIP_PMC_PORT2 (0x2)
struct tegra_xusb_regulator_name {
- u8 *s5p0v;
- u8 *s5p0v1;
- u8 *s5p0v2;
+ const char *utmi_vbuses[XUSB_UTMI_COUNT];
u8 *s3p3v;
u8 *s1p8v;
const char *vddio_hsic;
@@ -80,7 +80,6 @@ struct tegra_xusb_board_data {
u8 ss_portmap;
u8 ulpicap;
u8 lane_owner;
- bool uses_different_vbus_per_port;
bool uses_external_pmic;
bool gpio_controls_muxed_ss_lanes;
u32 gpio_ss1_sata;