arm: tegra: hsic: Enable T30 HSIC
Michael Hsu [Tue, 26 Apr 2011 22:43:37 +0000 (15:43 -0700)]
Modified cardhu board config for ehci2 to use HSIC.

Need to turn on 6416 IO expander gpio for VDDIO_HSIC. Otherwise,
VDDIO_HSIC would be 0 Volts.

Fix HSIC register differences between T20 / T30.

Original-Change-Id: I03079d4691981c8bc5fa220720aa55de507e6f04
Reviewed-on: http://git-master/r/29428
Reviewed-by: Varun Colbert <vcolbert@nvidia.com>
Tested-by: Varun Colbert <vcolbert@nvidia.com>

Rebase-Id: Rc3e3973666331d2eb2aada57b7bfe6172b67713a

arch/arm/mach-tegra/board-cardhu.c
arch/arm/mach-tegra/board-cardhu.h

index 522942e..1480af7 100644 (file)
@@ -339,6 +339,17 @@ static struct usb_phy_plat_data tegra_usb_phy_pdata[] = {
        },
 };
 
+static struct tegra_ulpi_config uhsic_phy_config = {
+       .enable_gpio = EN_HSIC_GPIO,
+       .reset_gpio = PM267_SMSC4640_HSIC_HUB_RESET_GPIO,
+};
+
+static struct tegra_ehci_platform_data tegra_ehci_uhsic_pdata = {
+       .phy_type = TEGRA_USB_PHY_TYPE_HSIC,
+       .phy_config = &uhsic_phy_config,
+       .operating_mode = TEGRA_USB_HOST,
+       .power_down_on_bus_suspend = 1,
+};
 
 static struct tegra_ehci_platform_data tegra_ehci_pdata[] = {
        [0] = {
@@ -412,15 +423,22 @@ static struct tegra_otg_platform_data tegra_otg_pdata = {
 
 static void cardhu_usb_init(void)
 {
+       struct board_info bi;
+
+       tegra_get_board_info(&bi);
+
        tegra_usb_phy_init(tegra_usb_phy_pdata, ARRAY_SIZE(tegra_usb_phy_pdata));
 
        tegra_otg_device.dev.platform_data = &tegra_otg_pdata;
        platform_device_register(&tegra_otg_device);
 
-       tegra_ehci2_device.dev.platform_data = &tegra_ehci_pdata[1];
+       if ((bi.board_id == BOARD_PM267) || (bi.board_id == BOARD_E1186)) {
+               tegra_ehci2_device.dev.platform_data = &tegra_ehci_uhsic_pdata;
+       } else {
+               tegra_ehci2_device.dev.platform_data = &tegra_ehci_pdata[1];
+       }
        platform_device_register(&tegra_ehci2_device);
 
-
        tegra_ehci3_device.dev.platform_data = &tegra_ehci_pdata[2];
        platform_device_register(&tegra_ehci3_device);
 
index b77ccc3..0b424cd 100644 (file)
@@ -28,6 +28,7 @@
 #define BOARD_E1186   0x0B56
 #define BOARD_E1198   0x0B62
 #define BOARD_E1291   0x0C5B
+#define BOARD_PM267   0x0243
 #define BOARD_PM269   0x0245
 
 /* External peripheral act as gpio */
 #define PMU_TCA6416_GPIO_PORT17        (PMU_TCA6416_GPIO_BASE + 15)
 #define PMU_TCA6416_GPIO_END   (PMU_TCA6416_GPIO_BASE + 16)
 
+/* PMU_TCA6416 GPIO assignment */
+#define EN_HSIC_GPIO                           PMU_TCA6416_GPIO_PORT11 /* PMU_GPIO25 */
+#define PM267_SMSC4640_HSIC_HUB_RESET_GPIO     PMU_TCA6416_GPIO_PORT17 /* PMU_GPIO31 */
+
 /* CAM_TCA6416 GPIOs */
 #define CAM_TCA6416_GPIO_BASE          PMU_TCA6416_GPIO_END
 #define CAM1_PWR_DN_GPIO                       CAM_TCA6416_GPIO_BASE + 0