Browse Source

PXA UDC - allow use of inverted GPIO for pullup

Signed-off-by: Ian Molton <spyro@f2s.com>
Ian Molton 17 years ago
parent
commit
8fb105f5cc
2 changed files with 5 additions and 2 deletions
  1. 4 2
      drivers/usb/gadget/pxa25x_udc.c
  2. 1 0
      include/asm-arm/mach/udc_pxa2xx.h

+ 4 - 2
drivers/usb/gadget/pxa25x_udc.c

@@ -152,9 +152,10 @@ static int is_vbus_present(void)
 static void pullup_off(void)
 {
 	struct pxa2xx_udc_mach_info		*mach = the_controller->mach;
+	int off_level = mach->gpio_pullup_inverted;
 
 	if (mach->gpio_pullup)
-		gpio_set_value(mach->gpio_pullup, 0);
+		gpio_set_value(mach->gpio_pullup, off_level);
 	else if (mach->udc_command)
 		mach->udc_command(PXA2XX_UDC_CMD_DISCONNECT);
 }
@@ -162,9 +163,10 @@ static void pullup_off(void)
 static void pullup_on(void)
 {
 	struct pxa2xx_udc_mach_info		*mach = the_controller->mach;
+	int on_level = !mach->gpio_pullup_inverted;
 
 	if (mach->gpio_pullup)
-		gpio_set_value(mach->gpio_pullup, 1);
+		gpio_set_value(mach->gpio_pullup, on_level);
 	else if (mach->udc_command)
 		mach->udc_command(PXA2XX_UDC_CMD_CONNECT);
 }

+ 1 - 0
include/asm-arm/mach/udc_pxa2xx.h

@@ -23,6 +23,7 @@ struct pxa2xx_udc_mach_info {
 	 */
 	bool	gpio_vbus_inverted;
 	u16	gpio_vbus;			/* high == vbus present */
+	bool	gpio_pullup_inverted;
 	u16	gpio_pullup;			/* high == pullup activated */
 };