ARM: tegra: paz00: enable usb ports
authorMarc Dietrich <marvin24@gmx.de>
Thu, 19 May 2011 12:08:27 +0000 (14:08 +0200)
committerColin Cross <ccross@android.com>
Wed, 13 Jul 2011 03:38:55 +0000 (20:38 -0700)
This patch add support for the second and third ehci bus on paz00.
The first bus needs gadget and nvec support and will be added once
the needed patches are upstream.

Signed-off-by: Marc Dietrich <marvin24@gmx.de>
Signed-off-by: Colin Cross <ccross@android.com>
arch/arm/mach-tegra/board-paz00-pinmux.c
arch/arm/mach-tegra/board-paz00.c
arch/arm/mach-tegra/board-paz00.h

index d2faa50174efc1ffbab7ad694f88c793e3b6a378..acee62e26e9b5f1ff01fbbf67e7e6da9c1e1974d 100644 (file)
@@ -147,6 +147,7 @@ static struct tegra_gpio_table gpio_table[] = {
        { .gpio = TEGRA_GPIO_SD4_CD,    .enable = true },
        { .gpio = TEGRA_GPIO_SD4_WP,    .enable = true },
        { .gpio = TEGRA_GPIO_SD4_POWER, .enable = true },
+       { .gpio = TEGRA_ULPI_RST,       .enable = true },
 };
 
 void paz00_pinmux_init(void)
index 5f1c110c508be4a12a459c2926dcc48ba392813e..e1e19598c648cb07cedd22f007e6beee2340d188 100644 (file)
@@ -27,6 +27,7 @@
 #include <linux/io.h>
 #include <linux/i2c.h>
 #include <linux/i2c-tegra.h>
+#include <linux/platform_data/tegra_usb.h>
 
 #include <asm/mach-types.h>
 #include <asm/mach/arch.h>
@@ -36,6 +37,8 @@
 #include <mach/iomap.h>
 #include <mach/irqs.h>
 #include <mach/sdhci.h>
+#include <mach/usb_phy.h>
+#include <mach/gpio.h>
 
 #include "board.h"
 #include "board-paz00.h"
@@ -95,6 +98,36 @@ static void paz00_i2c_init(void)
        platform_device_register(&tegra_i2c_device4);
 }
 
+static struct tegra_ulpi_config ulpi_phy_config = {
+               .reset_gpio = TEGRA_ULPI_RST,
+               .clk = "cdev2",
+};
+
+static struct tegra_ehci_platform_data tegra_ehci_pdata[] = {
+               [0] = {
+                       .operating_mode = TEGRA_USB_OTG,
+                       .power_down_on_bus_suspend = 1,
+               },
+               [1] = {
+                       .phy_config = &ulpi_phy_config,
+                       .operating_mode = TEGRA_USB_HOST,
+                       .power_down_on_bus_suspend = 1,
+               },
+               [2] = {
+                       .operating_mode = TEGRA_USB_HOST,
+                       .power_down_on_bus_suspend = 1,
+               },
+};
+
+static void paz00_usb_init(void)
+{
+       tegra_ehci2_device.dev.platform_data = &tegra_ehci_pdata[1];
+       tegra_ehci3_device.dev.platform_data = &tegra_ehci_pdata[2];
+
+       platform_device_register(&tegra_ehci2_device);
+       platform_device_register(&tegra_ehci3_device);
+}
+
 static void __init tegra_paz00_fixup(struct machine_desc *desc,
        struct tag *tags, char **cmdline, struct meminfo *mi)
 {
@@ -109,7 +142,6 @@ static __initdata struct tegra_clk_init_table paz00_clk_init_table[] = {
        { NULL,         NULL,           0,              0},
 };
 
-
 static struct tegra_sdhci_platform_data sdhci_pdata1 = {
        .cd_gpio        = TEGRA_GPIO_SD1_CD,
        .wp_gpio        = TEGRA_GPIO_SD1_WP,
@@ -142,6 +174,7 @@ static void __init tegra_paz00_init(void)
        platform_add_devices(paz00_devices, ARRAY_SIZE(paz00_devices));
 
        paz00_i2c_init();
+       paz00_usb_init();
 }
 
 MACHINE_START(PAZ00, "paz00")
index 221ce9c662da2bab330740655685f79f7a7150d9..6b0b733fe553a610f6a50cd4e0cc3a1aab10483e 100644 (file)
@@ -23,6 +23,7 @@
 #define TEGRA_GPIO_SD4_CD              TEGRA_GPIO_PH2
 #define TEGRA_GPIO_SD4_WP              TEGRA_GPIO_PH3
 #define TEGRA_GPIO_SD4_POWER           TEGRA_GPIO_PI6
+#define TEGRA_ULPI_RST                 TEGRA_GPIO_PV0
 
 void paz00_pinmux_init(void);