diff options
author | David Brownell <david-b@pacbell.net> | 2006-06-29 15:25:39 -0400 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2006-09-27 14:58:48 -0400 |
commit | b2bbb20b37d734443d1c279d0033a64f6095db54 (patch) | |
tree | 067510f143dcb0e4f938f932994e5ac34f5da6b9 /arch | |
parent | 3a16f7b4a75d68364c3278523f51ac141a12758a (diff) |
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')
-rw-r--r-- | arch/arm/mach-pxa/corgi.c | 15 |
1 files changed, 1 insertions, 14 deletions
diff --git a/arch/arm/mach-pxa/corgi.c b/arch/arm/mach-pxa/corgi.c index cce26576999e..337c01c4ac37 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 = { | |||
284 | /* | 284 | /* |
285 | * USB Device Controller | 285 | * USB Device Controller |
286 | */ | 286 | */ |
287 | static void corgi_udc_command(int cmd) | ||
288 | { | ||
289 | switch(cmd) { | ||
290 | case PXA2XX_UDC_CMD_CONNECT: | ||
291 | GPSR(CORGI_GPIO_USB_PULLUP) = GPIO_bit(CORGI_GPIO_USB_PULLUP); | ||
292 | break; | ||
293 | case PXA2XX_UDC_CMD_DISCONNECT: | ||
294 | GPCR(CORGI_GPIO_USB_PULLUP) = GPIO_bit(CORGI_GPIO_USB_PULLUP); | ||
295 | break; | ||
296 | } | ||
297 | } | ||
298 | |||
299 | static struct pxa2xx_udc_mach_info udc_info __initdata = { | 287 | static struct pxa2xx_udc_mach_info udc_info __initdata = { |
300 | /* no connect GPIO; corgi can't tell connection status */ | 288 | /* no connect GPIO; corgi can't tell connection status */ |
301 | .udc_command = corgi_udc_command, | 289 | .gpio_pullup = CORGI_GPIO_USB_PULLUP, |
302 | }; | 290 | }; |
303 | 291 | ||
304 | 292 | ||
@@ -350,7 +338,6 @@ static void __init corgi_init(void) | |||
350 | corgi_ssp_set_machinfo(&corgi_ssp_machinfo); | 338 | corgi_ssp_set_machinfo(&corgi_ssp_machinfo); |
351 | 339 | ||
352 | pxa_gpio_mode(CORGI_GPIO_IR_ON | GPIO_OUT); | 340 | pxa_gpio_mode(CORGI_GPIO_IR_ON | GPIO_OUT); |
353 | pxa_gpio_mode(CORGI_GPIO_USB_PULLUP | GPIO_OUT); | ||
354 | pxa_gpio_mode(CORGI_GPIO_HSYNC | GPIO_IN); | 341 | pxa_gpio_mode(CORGI_GPIO_HSYNC | GPIO_IN); |
355 | 342 | ||
356 | pxa_set_udc_info(&udc_info); | 343 | pxa_set_udc_info(&udc_info); |