USB: ohci-pxa27x: Allow NOCP and OCPM to be cleared
authorAric Blumer <aric@sdgsystems.com>
Thu, 30 Jul 2009 17:26:58 +0000 (13:26 -0400)
committerGreg Kroah-Hartman <gregkh@suse.de>
Wed, 23 Sep 2009 13:46:32 +0000 (06:46 -0700)
Some ohci-pxa27x platforms may require OCPM and NOCP in UHCRHDA to be
clear, but the existing code was only allowing setting.  This patch
ensures that these bits are clear if the respective flags are not set.
This is particularly important for the PXA3xx family where the
documentation says OCPM must be cleared, but it is set after reset.

Signed-off-by: Aric Blumer <aric@sdgsystems.com>
Cc: David Brownell <dbrownell@users.sourceforge.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
drivers/usb/host/ohci-pxa27x.c

index e44dc2cbca24006e1b81d57cf589213ee823295c..b5294a9344de4984e79138226bd9edfa92939d1d 100644 (file)
@@ -177,9 +177,13 @@ static inline void pxa27x_setup_hc(struct pxa27x_ohci *ohci,
 
        if (inf->flags & NO_OC_PROTECTION)
                uhcrhda |= UHCRHDA_NOCP;
+       else
+               uhcrhda &= ~UHCRHDA_NOCP;
 
        if (inf->flags & OC_MODE_PERPORT)
                uhcrhda |= UHCRHDA_OCPM;
+       else
+               uhcrhda &= ~UHCRHDA_OCPM;
 
        if (inf->power_on_delay) {
                uhcrhda &= ~UHCRHDA_POTPGT(0xff);