From efa329cb892c8b9a5e453638b3ca57c94b71e9a2 Mon Sep 17 00:00:00 2001 From: wdenk Date: Tue, 23 Mar 2004 20:18:25 +0000 Subject: * Add start-up delay to make sure power has stabilized before attempting to switch on USB on SX1 board. * Patch by Josef Wagner, 18 Mar 2004: - Add support for MicroSys XM250 board (PXA255) - Add support for MicroSys PM828 board (MPC8280) - Add support for 32 MB Flash on PM825/826 - new SDRAM refresh rate for PM825/PM826 - added support for MicroSys PM520 (MPC5200) - replaced Query by Identify command in CPU86/flash.c to support 28F160F3B * Fix wrap around problem with udelay() on ARM920T * Add support for Macronix flash on TRAB board --- drivers/usbdcore_omap1510.c | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) (limited to 'drivers/usbdcore_omap1510.c') diff --git a/drivers/usbdcore_omap1510.c b/drivers/usbdcore_omap1510.c index 7a908489f..1d54a6357 100644 --- a/drivers/usbdcore_omap1510.c +++ b/drivers/usbdcore_omap1510.c @@ -40,6 +40,7 @@ #include "usbdcore_ep0.h" +#define UDC_INIT_MDELAY 80 /* Device settle delay */ #define UDC_MAX_ENDPOINTS 31 /* Number of endpoints on this UDC */ /* Some kind of debugging output... */ @@ -1087,6 +1088,11 @@ int udc_init (void) { u16 udc_rev; uchar value; + ulong gpio; + int i; + + /* Let the device settle down before we start */ + for (i = 0; i < UDC_INIT_MDELAY; i++) udelay(1000); udc_device = NULL; @@ -1127,6 +1133,24 @@ int udc_init (void) i2c_read (0x32, 0x03, 1, &value, 1); value |= 0x01; i2c_write (0x32, 0x03, 1, &value, 1); + + gpio = inl(GPIO_PIN_CONTROL_REG); + gpio |= 0x0002; /* A_IRDA_OFF */ + gpio |= 0x0800; /* A_SWITCH */ + gpio |= 0x8000; /* A_USB_ON */ + outl (gpio, GPIO_PIN_CONTROL_REG); + + gpio = inl(GPIO_DIR_CONTROL_REG); + gpio &= ~0x0002; /* A_IRDA_OFF */ + gpio &= ~0x0800; /* A_SWITCH */ + gpio &= ~0x8000; /* A_USB_ON */ + outl (gpio, GPIO_DIR_CONTROL_REG); + + gpio = inl(GPIO_DATA_OUTPUT_REG); + gpio |= 0x0002; /* A_IRDA_OFF */ + gpio &= ~0x0800; /* A_SWITCH */ + gpio &= ~0x8000; /* A_USB_ON */ + outl (gpio, GPIO_DATA_OUTPUT_REG); #endif /* The VBUS_MODE bit selects whether VBUS detection is done via -- cgit v1.2.3