diff options
author | Henry Lin <henryl@nvidia.com> | 2013-09-16 14:15:25 +0800 |
---|---|---|
committer | Bharat Nihalani <bnihalani@nvidia.com> | 2013-10-04 08:36:20 -0700 |
commit | 728fac1d7b7d91ad32ea9ec58da35c9464eed5fd (patch) | |
tree | 0e7b20392e7bbbdabfcf8325eb8e16f076d6bedf /arch/arm/mach-tegra | |
parent | 4d59c84dda7b8cd92755063a261057ca6143ca87 (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.c | 7 | ||||
-rw-r--r-- | arch/arm/mach-tegra/board-dalmore.c | 4 | ||||
-rw-r--r-- | arch/arm/mach-tegra/board-loki.c | 7 | ||||
-rw-r--r-- | arch/arm/mach-tegra/board-pluto.c | 4 | ||||
-rw-r--r-- | arch/arm/mach-tegra/include/mach/xusb.h | 13 |
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; |