aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Büsch <mb@bu3sch.de>2010-08-23 16:14:04 +0000
committerMichael Büsch <mb@bu3sch.de>2010-08-23 16:14:04 +0000
commit0eb37951ed41ce80eae92bae45e1310c375ffe1b (patch)
tree0fa93e9a2d8808e4fd985ed4956710dd12dc07c8
parente54b810acef8d9497975653cf322cb87ad0a7d60 (diff)
downloadupstream-0eb37951ed41ce80eae92bae45e1310c375ffe1b.tar.gz
upstream-0eb37951ed41ce80eae92bae45e1310c375ffe1b.tar.bz2
upstream-0eb37951ed41ce80eae92bae45e1310c375ffe1b.zip
n810: Fix USB board init
SVN-Revision: 22781
-rw-r--r--target/linux/omap24xx/config-2.6.3522
-rw-r--r--target/linux/omap24xx/patches-2.6.35/300-nokia-board.patch203
2 files changed, 160 insertions, 65 deletions
diff --git a/target/linux/omap24xx/config-2.6.35 b/target/linux/omap24xx/config-2.6.35
index 0294b4b72b..7c1e79bb6e 100644
--- a/target/linux/omap24xx/config-2.6.35
+++ b/target/linux/omap24xx/config-2.6.35
@@ -351,6 +351,7 @@ CONFIG_MTD_ONENAND_OTP=y
# CONFIG_MTD_ONENAND_VERIFY_WRITE is not set
# CONFIG_MTD_ROOTFS_ROOT_DEV is not set
# CONFIG_MTD_ROOTFS_SPLIT is not set
+CONFIG_MUSB_PIO_ONLY=y
CONFIG_N810BM=y
CONFIG_NAMESPACES=y
CONFIG_NEED_DMA_MAP_STATE=y
@@ -359,6 +360,7 @@ CONFIG_NETFILTER_XTABLES=y
# CONFIG_NET_NS is not set
# CONFIG_NET_SCHED is not set
CONFIG_NLS=y
+CONFIG_NOP_USB_XCEIV=y
CONFIG_NO_HZ=y
CONFIG_OABI_COMPAT=y
# CONFIG_OMAP2_DSS is not set
@@ -471,7 +473,7 @@ CONFIG_TOUCHSCREEN_TSC2005=y
CONFIG_TREE_RCU=y
CONFIG_TUN=m
CONFIG_UID16=y
-CONFIG_USB=m
+CONFIG_USB=y
# CONFIG_USB_ARCH_HAS_EHCI is not set
# CONFIG_USB_AUDIO is not set
# CONFIG_USB_CDC_COMPOSITE is not set
@@ -487,7 +489,7 @@ CONFIG_USB_GADGET=y
# CONFIG_USB_GADGET_ATMEL_USBA is not set
# CONFIG_USB_GADGET_CI13XXX is not set
# CONFIG_USB_GADGET_DEBUG_FILES is not set
-# CONFIG_USB_GADGET_DUALSPEED is not set
+CONFIG_USB_GADGET_DUALSPEED=y
# CONFIG_USB_GADGET_DUMMY_HCD is not set
# CONFIG_USB_GADGET_FSL_QE is not set
# CONFIG_USB_GADGET_FSL_USB2 is not set
@@ -496,30 +498,36 @@ CONFIG_USB_GADGET=y
# CONFIG_USB_GADGET_LANGWELL is not set
# CONFIG_USB_GADGET_LH7A40X is not set
# CONFIG_USB_GADGET_M66592 is not set
-# CONFIG_USB_GADGET_MUSB_HDRC is not set
+CONFIG_USB_GADGET_MUSB_HDRC=y
# CONFIG_USB_GADGET_NET2280 is not set
-CONFIG_USB_GADGET_OMAP=y
+# CONFIG_USB_GADGET_OMAP is not set
# CONFIG_USB_GADGET_PXA25X is not set
# CONFIG_USB_GADGET_PXA27X is not set
# CONFIG_USB_GADGET_R8A66597 is not set
# CONFIG_USB_GADGET_S3C2410 is not set
# CONFIG_USB_GADGET_S3C_HSOTG is not set
CONFIG_USB_GADGET_SELECTED=y
-CONFIG_USB_GADGET_VBUS_DRAW=50
+CONFIG_USB_GADGET_VBUS_DRAW=100
# CONFIG_USB_G_HID is not set
# CONFIG_USB_G_PRINTER is not set
# CONFIG_USB_G_SERIAL is not set
# CONFIG_USB_G_WEBCAM is not set
# CONFIG_USB_MIDI_GADGET is not set
+CONFIG_USB_MUSB_DEBUG=y
+CONFIG_USB_MUSB_HDRC=y
+CONFIG_USB_MUSB_HDRC_HCD=y
+# CONFIG_USB_MUSB_HOST is not set
+CONFIG_USB_MUSB_OTG=y
+# CONFIG_USB_MUSB_PERIPHERAL is not set
# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set
# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set
-CONFIG_USB_OHCI_HCD=m
+CONFIG_USB_OHCI_HCD=y
CONFIG_USB_OHCI_HCD_OMAP1=y
-CONFIG_USB_OMAP=y
CONFIG_USB_OTG=y
CONFIG_USB_OTG_UTILS=y
# CONFIG_USB_PWC is not set
CONFIG_USB_SUPPORT=y
+CONFIG_USB_TUSB6010=y
# CONFIG_USB_ZERO is not set
# CONFIG_USER_NS is not set
CONFIG_V4L_USB_DRIVERS=y
diff --git a/target/linux/omap24xx/patches-2.6.35/300-nokia-board.patch b/target/linux/omap24xx/patches-2.6.35/300-nokia-board.patch
index f0bf954dc1..e04963da51 100644
--- a/target/linux/omap24xx/patches-2.6.35/300-nokia-board.patch
+++ b/target/linux/omap24xx/patches-2.6.35/300-nokia-board.patch
@@ -1,7 +1,16 @@
-Index: linux-2.6.35/arch/arm/mach-omap1/board-nokia770.c
-===================================================================
---- linux-2.6.35.orig/arch/arm/mach-omap1/board-nokia770.c 2010-08-08 12:56:15.000000000 +0200
-+++ linux-2.6.35/arch/arm/mach-omap1/board-nokia770.c 2010-08-08 12:56:30.000000000 +0200
+---
+ arch/arm/mach-omap1/board-nokia770.c | 16 +
+ arch/arm/mach-omap2/Kconfig | 10 +
+ arch/arm/mach-omap2/Makefile | 2
+ arch/arm/mach-omap2/board-n8x0-lcd.c | 127 +++++++++++++
+ arch/arm/mach-omap2/board-n8x0-usb.c | 175 +++++++++++++++++++
+ arch/arm/mach-omap2/board-n8x0.c | 319 +++++++++++++++++++++++++----------
+ arch/arm/mach-omap2/control.c | 2
+ arch/arm/mach-omap2/serial.c | 8
+ 8 files changed, 569 insertions(+), 90 deletions(-)
+
+--- linux-2.6.35.3.orig/arch/arm/mach-omap1/board-nokia770.c
++++ linux-2.6.35.3/arch/arm/mach-omap1/board-nokia770.c
@@ -37,6 +37,7 @@
#include <plat/lcd_mipid.h>
#include <plat/mmc.h>
@@ -34,10 +43,8 @@ Index: linux-2.6.35/arch/arm/mach-omap1/board-nokia770.c
};
static void mipid_shutdown(struct mipid_platform_data *pdata)
-Index: linux-2.6.35/arch/arm/mach-omap2/board-n8x0.c
-===================================================================
---- linux-2.6.35.orig/arch/arm/mach-omap2/board-n8x0.c 2010-08-08 12:56:15.000000000 +0200
-+++ linux-2.6.35/arch/arm/mach-omap2/board-n8x0.c 2010-08-08 12:56:30.000000000 +0200
+--- linux-2.6.35.3.orig/arch/arm/mach-omap2/board-n8x0.c
++++ linux-2.6.35.3/arch/arm/mach-omap2/board-n8x0.c
@@ -18,8 +18,12 @@
#include <linux/io.h>
#include <linux/stddef.h>
@@ -51,12 +58,15 @@ Index: linux-2.6.35/arch/arm/mach-omap2/board-n8x0.c
#include <asm/mach/arch.h>
#include <asm/mach-types.h>
-@@ -32,6 +36,117 @@
+@@ -32,114 +36,156 @@
#include <plat/onenand.h>
#include <plat/mmc.h>
#include <plat/serial.h>
+#include <plat/cbus.h>
-+
+
+-static int slot1_cover_open;
+-static int slot2_cover_open;
+-static struct device *mmc_device;
+#define RX51_TSC2005_RESET_GPIO 94
+#define RX51_TSC2005_IRQ_GPIO 106
+#define OMAP_TAG_NOKIA_BT 0x4e01
@@ -112,14 +122,32 @@ Index: linux-2.6.35/arch/arm/mach-omap2/board-n8x0.c
+ [0x53] = KEY_DOWN,
+ [0x55] = KEY_ENTER,
+ [0x5f] = KEY_ESC,
-+
+
+-#define TUSB6010_ASYNC_CS 1
+-#define TUSB6010_SYNC_CS 4
+-#define TUSB6010_GPIO_INT 58
+-#define TUSB6010_GPIO_ENABLE 0
+-#define TUSB6010_DMACHAN 0x3f
+ [0x61] = KEY_U,
+ [0x64] = KEY_LEFT,
-+
+
+-#if defined(CONFIG_USB_TUSB6010) || \
+- defined(CONFIG_USB_TUSB6010_MODULE)
+-/*
+- * Enable or disable power to TUSB6010. When enabling, turn on 3.3 V and
+- * 1.5 V voltage regulators of PM companion chip. Companion chip will then
+- * provide then PGOOD signal to TUSB6010 which will release it from reset.
+- */
+-static int tusb_set_power(int state)
+-{
+- int i, retval = 0;
+ [0x71] = KEY_I,
+ [0x75] = KEY_KPENTER,
+};
-+
+
+- if (state) {
+- gpio_set_value(TUSB6010_GPIO_ENABLE, 1);
+- msleep(1);
+static struct lm8323_platform_data lm8323_pdata = {
+ .repeat = 0, /* Repeat is handled in userspace for now. */
+ .keymap = rx44_keymap,
@@ -134,7 +162,13 @@ Index: linux-2.6.35/arch/arm/mach-omap2/board-n8x0.c
+ //.pwm1_name = "n810::keyboard",
+ //.pwm2_name = "n810::cover",
+};
-+
+
+- /* Wait until TUSB6010 pulls INT pin down */
+- i = 100;
+- while (i && gpio_get_value(TUSB6010_GPIO_INT)) {
+- msleep(1);
+- i--;
+- }
+struct omap_bluetooth_config {
+ u8 chip_type;
+ u8 bt_wakeup_gpio;
@@ -144,7 +178,15 @@ Index: linux-2.6.35/arch/arm/mach-omap2/board-n8x0.c
+ u8 bd_addr[6];
+ u8 bt_sysclk;
+};
-+
+
+- if (!i) {
+- printk(KERN_ERR "tusb: powerup failed\n");
+- retval = -ENODEV;
+- }
+- } else {
+- gpio_set_value(TUSB6010_GPIO_ENABLE, 0);
+- msleep(10);
+- }
+static struct platform_device n8x0_bt_device = {
+ .name = "hci_h4p",
+ .id = -1,
@@ -154,42 +196,97 @@ Index: linux-2.6.35/arch/arm/mach-omap2/board-n8x0.c
+void __init n8x0_bt_init(void)
+{
+ const struct omap_bluetooth_config *bt_config;
-+
+
+- return retval;
+ bt_config = (void *) omap_get_config(OMAP_TAG_NOKIA_BT,
+ struct omap_bluetooth_config);
+ n8x0_bt_device.dev.platform_data = (void *) bt_config;
+ if (platform_device_register(&n8x0_bt_device) < 0)
+ BUG();
-+}
-+
+ }
+
+-static struct musb_hdrc_config musb_config = {
+- .multipoint = 1,
+- .dyn_fifo = 1,
+- .num_eps = 16,
+- .ram_bits = 12,
+static struct omap2_mcspi_device_config mipid_mcspi_config = {
+ .turbo_mode = 0,
+ .single_channel = 1,
-+};
-
- static int slot1_cover_open;
- static int slot2_cover_open;
-@@ -139,7 +254,34 @@ static struct omap2_mcspi_device_config
- .single_channel = 1,
};
+-static struct musb_hdrc_platform_data tusb_data = {
+-#if defined(CONFIG_USB_MUSB_OTG)
+- .mode = MUSB_OTG,
+-#elif defined(CONFIG_USB_MUSB_PERIPHERAL)
+- .mode = MUSB_PERIPHERAL,
+-#else /* defined(CONFIG_USB_MUSB_HOST) */
+- .mode = MUSB_HOST,
+-#endif
+- .set_power = tusb_set_power,
+- .min_power = 25, /* x2 = 50 mA drawn from VBUS as peripheral */
+- .power = 100, /* Max 100 mA VBUS for host mode */
+- .config = &musb_config,
+-};
+-
+-static void __init n8x0_usb_init(void)
+-{
+- int ret = 0;
+- static char announce[] __initdata = KERN_INFO "TUSB 6010\n";
+-
+- /* PM companion chip power control pin */
+- ret = gpio_request(TUSB6010_GPIO_ENABLE, "TUSB6010 enable");
+- if (ret != 0) {
+- printk(KERN_ERR "Could not get TUSB power GPIO%i\n",
+- TUSB6010_GPIO_ENABLE);
+- return;
+- }
+- gpio_direction_output(TUSB6010_GPIO_ENABLE, 0);
+-
+- tusb_set_power(0);
++static int slot1_cover_open;
++static int slot2_cover_open;
++static struct device *mmc_device;
+
+- ret = tusb6010_setup_interface(&tusb_data, TUSB6010_REFCLK_19, 2,
+- TUSB6010_ASYNC_CS, TUSB6010_SYNC_CS,
+- TUSB6010_GPIO_INT, TUSB6010_DMACHAN);
+- if (ret != 0)
+- goto err;
+
+- printk(announce);
++static struct omap2_mcspi_device_config p54spi_mcspi_config = {
++ .turbo_mode = 0,
++ .single_channel = 1,
++};
+
+- return;
+#ifdef CONFIG_MACH_NOKIA_N8X0_LCD
+extern struct mipid_platform_data n8x0_mipid_platform_data;
+#endif
-+
+
+-err:
+- gpio_free(TUSB6010_GPIO_ENABLE);
+#ifdef CONFIG_TOUCHSCREEN_TSC2005
+static struct tsc2005_platform_data tsc2005_config;
+static void rx51_tsc2005_set_reset(bool enable)
+{
+ gpio_set_value(RX51_TSC2005_RESET_GPIO, enable);
-+}
-+
+ }
+-#else
+-
+-static void __init n8x0_usb_init(void) {}
+-
+-#endif /*CONFIG_USB_TUSB6010 */
+
+-
+-static struct omap2_mcspi_device_config p54spi_mcspi_config = {
+static struct omap2_mcspi_device_config tsc2005_mcspi_config = {
-+ .turbo_mode = 0,
-+ .single_channel = 1,
-+};
+ .turbo_mode = 0,
+ .single_channel = 1,
+ };
+#endif
-+
+
static struct spi_board_info n800_spi_board_info[] __initdata = {
+#ifdef CONFIG_MACH_NOKIA_N8X0_LCD
+ {
@@ -204,7 +301,7 @@ Index: linux-2.6.35/arch/arm/mach-omap2/board-n8x0.c
{
.modalias = "p54spi",
.bus_num = 2,
-@@ -147,6 +289,68 @@ static struct spi_board_info n800_spi_bo
+@@ -147,6 +193,68 @@ static struct spi_board_info n800_spi_bo
.max_speed_hz = 48000000,
.controller_data = &p54spi_mcspi_config,
},
@@ -273,7 +370,7 @@ Index: linux-2.6.35/arch/arm/mach-omap2/board-n8x0.c
};
#if defined(CONFIG_MTD_ONENAND_OMAP2) || \
-@@ -181,6 +385,20 @@ static struct mtd_partition onenand_part
+@@ -181,6 +289,20 @@ static struct mtd_partition onenand_part
},
};
@@ -294,7 +391,7 @@ Index: linux-2.6.35/arch/arm/mach-omap2/board-n8x0.c
static struct omap_onenand_platform_data board_onenand_data = {
.cs = 0,
.gpio_irq = 26,
-@@ -649,14 +867,37 @@ static void __init n8x0_init_irq(void)
+@@ -649,14 +771,39 @@ static void __init n8x0_init_irq(void)
omap_gpio_init();
}
@@ -306,6 +403,8 @@ Index: linux-2.6.35/arch/arm/mach-omap2/board-n8x0.c
+#define n8x0_blizzard_init() 0
+#endif
+
++extern void n8x0_usb_init(void);
++
static void __init n8x0_init_machine(void)
{
+ platform_device_register(&n8x0_cbus_device);
@@ -332,10 +431,8 @@ Index: linux-2.6.35/arch/arm/mach-omap2/board-n8x0.c
n8x0_onenand_init();
n8x0_mmc_init();
n8x0_usb_init();
-Index: linux-2.6.35/arch/arm/mach-omap2/board-n8x0-lcd.c
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.35/arch/arm/mach-omap2/board-n8x0-lcd.c 2010-08-08 12:56:31.000000000 +0200
+--- /dev/null
++++ linux-2.6.35.3/arch/arm/mach-omap2/board-n8x0-lcd.c
@@ -0,0 +1,127 @@
+/*
+ * linux/arch/arm/mach-omap2/board-n8x0.c
@@ -464,10 +561,8 @@ Index: linux-2.6.35/arch/arm/mach-omap2/board-n8x0-lcd.c
+
+ printk(KERN_INFO "N8x0 Blizzard initialized");
+}
-Index: linux-2.6.35/arch/arm/mach-omap2/board-n8x0-usb.c
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.35/arch/arm/mach-omap2/board-n8x0-usb.c 2010-08-08 12:56:31.000000000 +0200
+--- /dev/null
++++ linux-2.6.35.3/arch/arm/mach-omap2/board-n8x0-usb.c
@@ -0,0 +1,175 @@
+/*
+ * linux/arch/arm/mach-omap2/board-n8x0-usb.c
@@ -644,10 +739,8 @@ Index: linux-2.6.35/arch/arm/mach-omap2/board-n8x0-usb.c
+err:
+ gpio_free(GPIO_TUSB_ENABLE);
+}
-Index: linux-2.6.35/arch/arm/mach-omap2/control.c
-===================================================================
---- linux-2.6.35.orig/arch/arm/mach-omap2/control.c 2010-08-08 12:56:15.000000000 +0200
-+++ linux-2.6.35/arch/arm/mach-omap2/control.c 2010-08-08 12:56:32.000000000 +0200
+--- linux-2.6.35.3.orig/arch/arm/mach-omap2/control.c
++++ linux-2.6.35.3/arch/arm/mach-omap2/control.c
@@ -162,6 +162,7 @@ u16 omap_ctrl_readw(u16 offset)
return __raw_readw(OMAP_CTRL_REGADDR(offset));
}
@@ -664,10 +757,8 @@ Index: linux-2.6.35/arch/arm/mach-omap2/control.c
void omap_ctrl_writel(u32 val, u16 offset)
{
__raw_writel(val, OMAP_CTRL_REGADDR(offset));
-Index: linux-2.6.35/arch/arm/mach-omap2/Kconfig
-===================================================================
---- linux-2.6.35.orig/arch/arm/mach-omap2/Kconfig 2010-08-08 12:56:15.000000000 +0200
-+++ linux-2.6.35/arch/arm/mach-omap2/Kconfig 2010-08-08 12:56:33.000000000 +0200
+--- linux-2.6.35.3.orig/arch/arm/mach-omap2/Kconfig
++++ linux-2.6.35.3/arch/arm/mach-omap2/Kconfig
@@ -116,6 +116,16 @@ config MACH_NOKIA_N8X0
select MACH_NOKIA_N810
select MACH_NOKIA_N810_WIMAX
@@ -685,10 +776,8 @@ Index: linux-2.6.35/arch/arm/mach-omap2/Kconfig
config MACH_NOKIA_RX51
bool "Nokia RX-51 board"
depends on ARCH_OMAP3
-Index: linux-2.6.35/arch/arm/mach-omap2/Makefile
-===================================================================
---- linux-2.6.35.orig/arch/arm/mach-omap2/Makefile 2010-08-08 12:56:15.000000000 +0200
-+++ linux-2.6.35/arch/arm/mach-omap2/Makefile 2010-08-08 12:56:33.000000000 +0200
+--- linux-2.6.35.3.orig/arch/arm/mach-omap2/Makefile
++++ linux-2.6.35.3/arch/arm/mach-omap2/Makefile
@@ -116,6 +116,8 @@ obj-$(CONFIG_MACH_OMAP_3430SDP) += boar
hsmmc.o \
board-sdp-flash.o
@@ -698,10 +787,8 @@ Index: linux-2.6.35/arch/arm/mach-omap2/Makefile
obj-$(CONFIG_MACH_NOKIA_RX51) += board-rx51.o \
board-rx51-sdram.o \
board-rx51-peripherals.o \
-Index: linux-2.6.35/arch/arm/mach-omap2/serial.c
-===================================================================
---- linux-2.6.35.orig/arch/arm/mach-omap2/serial.c 2010-08-08 12:56:15.000000000 +0200
-+++ linux-2.6.35/arch/arm/mach-omap2/serial.c 2010-08-08 12:56:34.000000000 +0200
+--- linux-2.6.35.3.orig/arch/arm/mach-omap2/serial.c
++++ linux-2.6.35.3/arch/arm/mach-omap2/serial.c
@@ -495,10 +495,10 @@ static void omap_uart_idle_init(struct o
uart->padconf = 0;
}