summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBo Shen <voice.shen@atmel.com>2013-04-15 11:27:36 +0800
committerBo Shen <voice.shen@atmel.com>2013-04-18 11:07:44 +0800
commit457fc9d3f184cd80e9c6eba806d4d621cf6839ae (patch)
tree4c9484d4b759bad9a2bf93f08b9f22c78e89afad
parent28d7a5783674c638ba7b4494c848fab34883c215 (diff)
USB: ohci-at91: at91sam9n12 use PMC_USB for usb clock divisor
at91sam9n12 using PLLB as usb input clock, however it use usb clock register (PMC_USB) for usb clock divisor, others include usb clock divisor into PLLB register (bit 29 - 28) Signed-off-by: Bo Shen <voice.shen@atmel.com>
-rw-r--r--drivers/usb/host/ohci-at91.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/drivers/usb/host/ohci-at91.c b/drivers/usb/host/ohci-at91.c
index 076af18a5c..f9db437792 100644
--- a/drivers/usb/host/ohci-at91.c
+++ b/drivers/usb/host/ohci-at91.c
@@ -39,6 +39,9 @@ int usb_cpu_init(void)
writel(get_pllb_init(), &pmc->pllbr);
while ((readl(&pmc->sr) & AT91_PMC_LOCKB) != AT91_PMC_LOCKB)
;
+#ifdef CONFIG_AT91SAM9N12
+ writel(AT91_PMC_USBS_USB_PLLB | AT91_PMC_USBDIV_(2), &pmc->usb);
+#endif
#elif defined(CONFIG_USB_ATMEL_CLK_SEL_UPLL)
/* Enable UPLL */
writel(readl(&pmc->uckr) | AT91_PMC_UPLLEN | AT91_PMC_BIASEN,
@@ -83,6 +86,9 @@ int usb_cpu_stop(void)
#endif
#ifdef CONFIG_USB_ATMEL_CLK_SEL_PLLB
+#ifdef CONFIG_AT91SAM9N12
+ writel(0, &pmc->usb);
+#endif
/* Disable PLLB */
writel(0, &pmc->pllbr);
while ((readl(&pmc->sr) & AT91_PMC_LOCKB) != 0)