PXA UDC - allow use of inverted GPIO for pullup
authorIan Molton <spyro@f2s.com>
Wed, 25 Jun 2008 21:34:51 +0000 (22:34 +0100)
committerIan Molton <spyro@f2s.com>
Thu, 10 Jul 2008 19:15:10 +0000 (20:15 +0100)
Signed-off-by: Ian Molton <spyro@f2s.com>
drivers/usb/gadget/pxa25x_udc.c
include/asm-arm/mach/udc_pxa2xx.h

index 031dceb93023bbc96b033b88a21881428a22ec5e..5d50031938ab26236b91b0fabf56db98f32e50a7 100644 (file)
@@ -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);
 }
index f9f3606986c27fedea03382b9de34ba1a7667e89..9e5ed7c0f27fb50150f84a303b61a205eb881bc2 100644 (file)
@@ -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 */
 };