aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/mach-pxa
diff options
context:
space:
mode:
authorDavid Brownell <david-b@pacbell.net>2006-06-29 15:25:39 -0400
committerGreg Kroah-Hartman <gregkh@suse.de>2006-09-27 14:58:48 -0400
commitb2bbb20b37d734443d1c279d0033a64f6095db54 (patch)
tree067510f143dcb0e4f938f932994e5ac34f5da6b9 /arch/arm/mach-pxa
parent3a16f7b4a75d68364c3278523f51ac141a12758a (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/arm/mach-pxa')
-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 = {
284/* 284/*
285 * USB Device Controller 285 * USB Device Controller
286 */ 286 */
287static 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
299static struct pxa2xx_udc_mach_info udc_info __initdata = { 287static 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);