--- linux-2.6.39.armv7l/arch/arm/mach-tegra/board-trimslice-pinmux.c.TEGRA 2011-05-19 00:06:34.000000000 -0400
+++ linux-2.6.39.armv7l/arch/arm/mach-tegra/board-trimslice-pinmux.c 2011-08-16 01:16:35.194157025 -0400
@@ -126,7 +126,7 @@
{TEGRA_PINGROUP_SPIH, TEGRA_MUX_SPI2_ALT, TEGRA_PUPD_PULL_UP, TEGRA_TRI_TRISTATE},
{TEGRA_PINGROUP_UAA, TEGRA_MUX_ULPI, TEGRA_PUPD_PULL_UP, TEGRA_TRI_TRISTATE},
{TEGRA_PINGROUP_UAB, TEGRA_MUX_ULPI, TEGRA_PUPD_PULL_UP, TEGRA_TRI_TRISTATE},
- {TEGRA_PINGROUP_UAC, TEGRA_MUX_RSVD2, TEGRA_PUPD_NORMAL, TEGRA_TRI_TRISTATE},
+ {TEGRA_PINGROUP_UAC, TEGRA_MUX_RSVD2, TEGRA_PUPD_NORMAL, TEGRA_TRI_NORMAL},
{TEGRA_PINGROUP_UAD, TEGRA_MUX_IRDA, TEGRA_PUPD_PULL_UP, TEGRA_TRI_TRISTATE},
{TEGRA_PINGROUP_UCA, TEGRA_MUX_UARTC, TEGRA_PUPD_PULL_UP, TEGRA_TRI_TRISTATE},
{TEGRA_PINGROUP_UCB, TEGRA_MUX_UARTC, TEGRA_PUPD_PULL_UP, TEGRA_TRI_TRISTATE},
--- linux-2.6.39.armv7l/arch/arm/mach-tegra/board-trimslice.c.TEGRA 2011-05-19 00:06:34.000000000 -0400
+++ linux-2.6.39.armv7l/arch/arm/mach-tegra/board-trimslice.c 2011-08-16 01:25:44.679159239 -0400
@@ -23,6 +23,7 @@
#include <linux/platform_device.h>
#include <linux/serial_8250.h>
#include <linux/io.h>
+#include <linux/platform_data/tegra_usb.h>
#include <asm/mach-types.h>
#include <asm/mach/arch.h>
@@ -30,6 +31,8 @@
#include <mach/iomap.h>
#include <mach/sdhci.h>
+#include <mach/usb_phy.h>
+#include <mach/gpio.h>
#include "board.h"
#include "clock.h"
@@ -102,6 +105,68 @@
}
subsys_initcall(tegra_trimslice_pci_init);
+static struct tegra_utmip_config utmi_phy_config[] = {
+ [0] = {
+ .hssync_start_delay = 0,
+ .idle_wait_delay = 17,
+ .elastic_limit = 16,
+ .term_range_adj = 6,
+ .xcvr_setup = 15,
+ .xcvr_lsfslew = 2,
+ .xcvr_lsrslew = 2,
+ },
+ [1] = {
+ .hssync_start_delay = 0,
+ .idle_wait_delay = 17,
+ .elastic_limit = 16,
+ .term_range_adj = 6,
+ .xcvr_setup = 8,
+ .xcvr_lsfslew = 2,
+ .xcvr_lsrslew = 2,
+ },
+};
+
+static struct tegra_ehci_platform_data ehci1_data = {
+ .phy_config = &utmi_phy_config[0],
+ .operating_mode = TEGRA_USB_HOST,
+ .power_down_on_bus_suspend = 0,
+};
+
+struct tegra_ulpi_config ehci2_phy_config = {
+ .reset_gpio = TEGRA_GPIO_PV0,
+ .clk = "pll_m",
+};
+
+static struct tegra_ehci_platform_data ehci2_data = {
+ .operating_mode = TEGRA_USB_HOST,
+ .phy_config = &ehci2_phy_config,
+ .power_down_on_bus_suspend = 0,
+};
+
+static struct tegra_ehci_platform_data ehci3_data = {
+ .phy_config = &utmi_phy_config[1],
+ .operating_mode = TEGRA_USB_HOST,
+ .power_down_on_bus_suspend = 0,
+};
+
+static void trimslice_usb_init(void)
+{
+ tegra_ehci3_device.dev.platform_data = &ehci3_data;
+ platform_device_register(&tegra_ehci3_device);
+
+ tegra_gpio_enable(TEGRA_GPIO_PV0);
+ tegra_ehci2_device.dev.platform_data = &ehci2_data;
+ platform_device_register(&tegra_ehci2_device);
+
+ tegra_gpio_enable(TEGRA_GPIO_PV2);
+ gpio_request(TEGRA_GPIO_PV2, "usb1 mode");
+ gpio_direction_output(TEGRA_GPIO_PV2, 1);
+
+ tegra_ehci1_device.dev.platform_data = &ehci1_data;
+ platform_device_register(&tegra_ehci1_device);
+}
+
+
static void __init tegra_trimslice_init(void)
{
tegra_clk_init_from_table(trimslice_clk_init_table);
@@ -112,8 +177,11 @@
tegra_sdhci_device4.dev.platform_data = &sdhci_pdata4;
platform_add_devices(trimslice_devices, ARRAY_SIZE(trimslice_devices));
+
+ trimslice_usb_init();
}
+
MACHINE_START(TRIMSLICE, "trimslice")
.boot_params = 0x00000100,
.fixup = tegra_trimslice_fixup,