[kernel/f15] add patch to have usb on tegra boards initialise correctly build in usb-storage on tegra systems

Dennis Gilmore ausil at fedoraproject.org
Thu Aug 18 15:37:45 UTC 2011


commit 24d01a89348ca52dd123c1ccb04cede1450fdb22
Author: Dennis Gilmore <dennis at ausil.us>
Date:   Thu Aug 18 10:34:21 2011 -0500

    add patch to have usb on tegra boards initialise correctly
    build in usb-storage on tegra systems

 TEGRA-2.6.40.2-enable-USB-ports.patch |  111 +++++++++++++++++++++++++++++++++
 config-arm-tegra                      |    1 +
 kernel.spec                           |    7 ++
 3 files changed, 119 insertions(+), 0 deletions(-)
---
diff --git a/TEGRA-2.6.40.2-enable-USB-ports.patch b/TEGRA-2.6.40.2-enable-USB-ports.patch
new file mode 100644
index 0000000..1fef5fe
--- /dev/null
+++ b/TEGRA-2.6.40.2-enable-USB-ports.patch
@@ -0,0 +1,111 @@
+--- 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,
diff --git a/config-arm-tegra b/config-arm-tegra
index c79efcf..67f1e38 100644
--- a/config-arm-tegra
+++ b/config-arm-tegra
@@ -49,6 +49,7 @@ CONFIG_HW_PERF_EVENTS=y
 CONFIG_KEYBOARD_TEGRA=y
 # CONFIG_MPCORE_WATCHDOG is not set
 CONFIG_USB_EHCI_TEGRA=y
+CONFIG_USB_STORAGE=y
 CONFIG_RTC_DRV_TEGRA=m
 
 CONFIG_SND_SOC_TEGRA=m
diff --git a/kernel.spec b/kernel.spec
index 81e2aa5..a6a04d8 100644
--- a/kernel.spec
+++ b/kernel.spec
@@ -694,6 +694,8 @@ Patch21001: arm-smsc-support-reading-mac-address-from-device-tree.patch
 # patch from http://www.delorie.com/tmp/arm-readl.patch
 Patch21002: arm-readl.patch
 
+Patch21003: TEGRA-2.6.40.2-enable-USB-ports.patch
+
 %endif
 
 BuildRoot: %{_tmppath}/kernel-%{KVERREL}-root
@@ -1135,6 +1137,7 @@ ApplyPatch linux-2.6.29-sparc-IOC_TYPECHECK.patch
 ApplyPatch arm-omap-dt-compat.patch
 ApplyPatch arm-smsc-support-reading-mac-address-from-device-tree.patch
 ApplyPatch arm-readl.patch
+ApplyPatch TEGRA-2.6.40.2-enable-USB-ports.patch
 
 #
 # Exec shield
@@ -1890,6 +1893,10 @@ fi
 # and build.
 
 %changelog
+* Wed Aug 17 2011 Dennis Gilmore <dennis at ausil.us>
+- add patch to correctly initialise usb on trimslice systems
+- build in usb-storage on tegra, internal ssd on trimslice is connected to usb
+
 * Tue Aug 16 2011 Dennis Gilmore <dennis at ausil.us>
 - add patch to work around gcc bug on arm
 


More information about the scm-commits mailing list