summaryrefslogtreecommitdiff
path: root/arch/arm
diff options
context:
space:
mode:
authorDavid Brownell <david-b@pacbell.net>2006-06-29 12:25:39 -0700
committerGreg Kroah-Hartman <gregkh@suse.de>2006-09-27 11:58:48 -0700
commitb2bbb20b37d734443d1c279d0033a64f6095db54 (patch)
tree067510f143dcb0e4f938f932994e5ac34f5da6b9 /arch/arm
parent3a16f7b4a75d68364c3278523f51ac141a12758a (diff)
downloadlinux-3.10-b2bbb20b37d734443d1c279d0033a64f6095db54.tar.gz
linux-3.10-b2bbb20b37d734443d1c279d0033a64f6095db54.tar.bz2
linux-3.10-b2bbb20b37d734443d1c279d0033a64f6095db54.zip
USB: pxa2xx_udc understands GPIO based VBUS sensing
This updates the PXA 25x UDC board-independent infrastructure for VBUS sensing and the D+ pullup. The original code evolved from rather bizarre support on Intel's "Lubbock" reference hardware, so that on more sensible hardware it doesn't work as well as it could/should. The change is just to teach the UDC driver how to use built-in PXA GPIO pins directly. This reduces the amount of board-specfic object code needed, and enables the use of a VBUS sensing IRQ on boards (like Gumstix) that have one. With VBUS sensing, the UDC is unclocked until a host is actually connected. Signed-off-by: David Brownell <dbrownell@users.sourceforge.net> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'arch/arm')
-rw-r--r--arch/arm/mach-pxa/corgi.c15
1 files changed, 1 insertions, 14 deletions
diff --git a/arch/arm/mach-pxa/corgi.c b/arch/arm/mach-pxa/corgi.c
index cce26576999..337c01c4ac3 100644
--- a/arch/arm/mach-pxa/corgi.c
+++ b/arch/arm/mach-pxa/corgi.c
@@ -284,21 +284,9 @@ static struct pxaficp_platform_data corgi_ficp_platform_data = {
/*
* USB Device Controller
*/
-static void corgi_udc_command(int cmd)
-{
- switch(cmd) {
- case PXA2XX_UDC_CMD_CONNECT:
- GPSR(CORGI_GPIO_USB_PULLUP) = GPIO_bit(CORGI_GPIO_USB_PULLUP);
- break;
- case PXA2XX_UDC_CMD_DISCONNECT:
- GPCR(CORGI_GPIO_USB_PULLUP) = GPIO_bit(CORGI_GPIO_USB_PULLUP);
- break;
- }
-}
-
static struct pxa2xx_udc_mach_info udc_info __initdata = {
/* no connect GPIO; corgi can't tell connection status */
- .udc_command = corgi_udc_command,
+ .gpio_pullup = CORGI_GPIO_USB_PULLUP,
};
@@ -350,7 +338,6 @@ static void __init corgi_init(void)
corgi_ssp_set_machinfo(&corgi_ssp_machinfo);
pxa_gpio_mode(CORGI_GPIO_IR_ON | GPIO_OUT);
- pxa_gpio_mode(CORGI_GPIO_USB_PULLUP | GPIO_OUT);
pxa_gpio_mode(CORGI_GPIO_HSYNC | GPIO_IN);
pxa_set_udc_info(&udc_info);