Skip to content

Commit

Permalink
[ARM] ohci-pxa27x: introduce pxa27x_clear_otgph()
Browse files Browse the repository at this point in the history
Direct access to pxa27x specific register PSSR in a generic ohci driver
is no good, introduce pxa27x_clear_otgph() and move the implementation
into processor specific code.

Signed-off-by: Eric Miao <eric.miao@marvell.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
  • Loading branch information
Eric Miao authored and Russell King committed Oct 7, 2008
1 parent 84bab73 commit 0cb0b0d
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 4 deletions.
7 changes: 7 additions & 0 deletions arch/arm/mach-pxa/pxa27x.c
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,13 @@
#include "devices.h"
#include "clock.h"

void pxa27x_clear_otgph(void)
{
if (cpu_is_pxa27x() && (PSSR & PSSR_OTGPH))
PSSR |= PSSR_OTGPH;
}
EXPORT_SYMBOL(pxa27x_clear_otgph);

/* Crystal clock: 13MHz */
#define BASE_CLK 13000000

Expand Down
11 changes: 7 additions & 4 deletions drivers/usb/host/ohci-pxa27x.c
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,6 @@
#include <linux/clk.h>

#include <mach/hardware.h>
#include <mach/pxa2xx-regs.h> /* FIXME: for PSSR */
#include <mach/ohci.h>

/*
Expand Down Expand Up @@ -182,6 +181,12 @@ static inline void pxa27x_setup_hc(struct pxaohci_platform_data *inf)
UHCRHDA = uhcrhda;
}

#ifdef CONFIG_CPU_PXA27x
extern void pxa27x_clear_otgph(void);
#else
#define pxa27x_clear_otgph() do {} while (0)
#endif

static int pxa27x_start_hc(struct device *dev)
{
int retval = 0;
Expand Down Expand Up @@ -212,9 +217,7 @@ static int pxa27x_start_hc(struct device *dev)
UHCHIE = (UHCHIE_UPRIE | UHCHIE_RWIE);

/* Clear any OTG Pin Hold */
if (cpu_is_pxa27x() && (PSSR & PSSR_OTGPH))
PSSR |= PSSR_OTGPH;

pxa27x_clear_otgph();
return 0;
}

Expand Down

0 comments on commit 0cb0b0d

Please sign in to comment.