omap4: pandaboard: ehci fref_clkout per board revision

Message ID 1305973002-28352-1-git-send-email-ricardo.salveti@linaro.org
State Superseded
Headers show

Commit Message

Ricardo Salveti May 21, 2011, 10:16 a.m.
Add support for correctly configuring the fref_clkout depending on the
board revision of the pandaboard. This patch is necessary to make u-boot
work with the smsc usb+ethernet driver.

Based on patch from David Anders <x0132446@ti.com> from
omap4_panda_L24.9 branch at gitorious.org/pandaboard x-loader tree.

Signed-off-by: Ricardo Salveti de Araujo <ricardo.salveti@linaro.org>
---
 board/omap4430panda/omap4430panda.c |   30 ++++++++++++++++++++++++++----
 1 files changed, 26 insertions(+), 4 deletions(-)

Comments

Gadiyar, Anand May 23, 2011, 11:27 a.m. | #1
Menon, Nishanth wrote:
> On Sat, May 21, 2011 at 05:16, Ricardo Salveti de Araujo <ricardo.salveti@linaro.org> wrote:
> > Add support for correctly configuring the fref_clkout depending on the
> > board revision of the pandaboard. This patch is necessary to make u-boot
> > work with the smsc usb+ethernet driver.
> >
> > Based on patch from David Anders <x0132446@ti.com> from
> > omap4_panda_L24.9 branch at gitorious.org/pandaboard x-loader tree.
> >
> > Signed-off-by: Ricardo Salveti de Araujo <ricardo.salveti@linaro.org>
> > ---
> >  board/omap4430panda/omap4430panda.c |   30 ++++++++++++++++++++++++++----
> >  1 files changed, 26 insertions(+), 4 deletions(-)

...

> Thanks for finding it and sending the patch. I like everything about
> this patch except for hardcoded 0x4A30a110 -> given that OMAP4460
> silicon is also in the near future, debugging code should not involve
> looking up register values in TRM. we probably have quiet a few of
> them already there, (certain authors have a penchant for hardcoded
> values instead of adding a couple of #defines...), but lets try not to
> add anymore?


I'll wait for an updated version, then apply it and bump up the x-loader revision.

- Anand

Patch

diff --git a/board/omap4430panda/omap4430panda.c b/board/omap4430panda/omap4430panda.c
index 962820b..c76ad17 100644
--- a/board/omap4430panda/omap4430panda.c
+++ b/board/omap4430panda/omap4430panda.c
@@ -531,6 +531,7 @@  static void ddr_init(void)
  *****************************************/
 int board_init(void)
 {
+	unsigned int rev = omap_revision();
 	unsigned int v;
 
 	/*
@@ -546,10 +547,31 @@  int board_init(void)
 	v = __raw_readl(OMAP44XX_GPIO_BASE2 + __GPIO_DATAOUT);
 	__raw_writel((v & ~(1 << 30)), OMAP44XX_GPIO_BASE2 + __GPIO_DATAOUT);
 
-	/* kill USB PLL */
-
-	v = __raw_readl(CM_CLKMODE_DPLL_USB);
-	__raw_writel((v & ~7) | 1, CM_CLKMODE_DPLL_USB);
+	if (rev != OMAP4430_ES1_0) {
+		if (__raw_readl(0x4805D138) & (1<<22)) {
+			/* enable software ioreq */
+			sr32(0x4A30a31C, 8, 1, 0x1);
+			/* set for sys_clk (38.4MHz) */
+			sr32(0x4A30a31C, 1, 2, 0x0);
+			/* set divisor to 2 */
+			sr32(0x4A30a31C, 16, 4, 0x1);
+			/* set the clock source to active */
+			sr32(0x4A30a110, 0, 1, 0x1);
+			/* enable clocks */
+			sr32(0x4A30a110, 2, 2, 0x3);
+		} else {
+			/* enable software ioreq */
+			sr32(0x4A30a314, 8, 1, 0x1);
+			/* set for PER_DPLL */
+			sr32(0x4A30a314, 1, 2, 0x2);
+			/* set divisor to 16 */
+			sr32(0x4A30a314, 16, 4, 0xf);
+			/* set the clock source to active */
+			sr32(0x4A30a110, 0, 1, 0x1);
+			/* enable clocks */
+			sr32(0x4A30a110, 2, 2, 0x3);
+		}
+	}
 
 	return 0;
 }