summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVivek Mahajan <vivek.mahajan@freescale.com>2009-10-07 15:47:48 -0400
committerJustin Waters <justin.waters@timesys.com>2009-10-07 15:47:48 -0400
commitb4a7ef6f8871fe73c848fa31075971c83ff5e129 (patch)
tree89f5fcd552432ef36bca47dd22de9faa958ea51c
parent51fad42204d5b1cdd3bdc89fd8685fcd3414a2a0 (diff)
u-boot-2009.03-p2020rdb-USB-mpc85xx-support
Add USB support for P2020RDB and 85xx platforms Signed-off-by: Vivek Mahajan <vivek.mahajan@freescale.com>
-rw-r--r--drivers/usb/usb_ehci_fsl.c17
-rw-r--r--include/configs/P10XX_20XX_RDB.h12
2 files changed, 29 insertions, 0 deletions
diff --git a/drivers/usb/usb_ehci_fsl.c b/drivers/usb/usb_ehci_fsl.c
index 81d5d21657..081e83595d 100644
--- a/drivers/usb/usb_ehci_fsl.c
+++ b/drivers/usb/usb_ehci_fsl.c
@@ -1,5 +1,6 @@
/*
* (C) Copyright 2008, Excito Elektronik i Sk=E5ne AB
+ * (C) Copyright 2009 Freescale Semiconductor, Inc.
*
* Author: Tor Krill tor@excito.com
*
@@ -22,7 +23,9 @@
#include <common.h>
#include <pci.h>
#include <usb.h>
+#if defined(CONFIG_MPC83XX)
#include <mpc83xx.h>
+#endif
#include <asm/io.h>
#include <asm/bitops.h>
@@ -38,14 +41,21 @@
*/
int ehci_hcd_init(void)
{
+#if defined(CONFIG_MPC83XX)
volatile immap_t *im = (immap_t *)CONFIG_SYS_IMMR;
+#endif
uint32_t addr, temp;
+#if defined(CONFIG_MPC83XX)
addr = (uint32_t)&(im->usb[0]);
+#elif defined(CONFIG_MPC85xx)
+ addr = CONFIG_SYS_USB_EHCI_REGS_BASE;
+#endif
hccr = (struct ehci_hccr *)(addr + FSL_SKIP_PCI);
hcor = (struct ehci_hcor *)((uint32_t) hccr +
HC_LENGTH(ehci_readl(&hccr->cr_capbase)));
+#if defined(CONFIG_MPC83XX)
/* Configure clock */
clrsetbits_be32(&(im->clk.sccr), MPC83XX_SCCR_USB_MASK,
MPC83XX_SCCR_USB_DRCM_11);
@@ -60,6 +70,7 @@ int ehci_hcd_init(void)
temp = in_be32((void *)(addr + FSL_SOC_USB_CTRL));
udelay(1000);
} while (!(temp & PHY_CLK_VALID));
+#endif
/* Set to Host mode */
temp = in_le32((void *)(addr + FSL_SOC_USB_USBMODE));
@@ -71,7 +82,11 @@ int ehci_hcd_init(void)
/* Init phy */
/* TODO: handle different phys? */
+#if defined(CONFIG_MPC83XX)
out_le32(&(hcor->or_portsc[0]), PORT_PTS_UTMI);
+#elif defined(CONFIG_MPC85xx)
+ out_le32(&(hcor->or_portsc[0]), PORT_PTS_ULPI);
+#endif
/* Enable interface. */
temp = in_be32((void *)(addr + FSL_SOC_USB_CTRL));
@@ -81,9 +96,11 @@ int ehci_hcd_init(void)
out_be32((void *)(addr + FSL_SOC_USB_AGECNTTHRSH), 0x00000040);
out_be32((void *)(addr + FSL_SOC_USB_SICTRL), 0x00000001);
+#if !defined(CONFIG_MPC85xx)
/* Enable interface. */
temp = in_be32((void *)(addr + FSL_SOC_USB_CTRL));
out_be32((void *)(addr + FSL_SOC_USB_CTRL), temp | USB_EN);
+#endif
temp = in_le32((void *)(addr + FSL_SOC_USB_USBMODE));
diff --git a/include/configs/P10XX_20XX_RDB.h b/include/configs/P10XX_20XX_RDB.h
index 6b09b46fde..5443cf5aa9 100644
--- a/include/configs/P10XX_20XX_RDB.h
+++ b/include/configs/P10XX_20XX_RDB.h
@@ -397,6 +397,18 @@ extern unsigned long get_board_sys_clk(unsigned long dummy);
#define CONFIG_MISC_INIT_R
+/************************************************************
+ * USB support
+ ************************************************************/
+
+#define CONFIG_CMD_FAT
+#define CONFIG_CMD_USB
+#define CONFIG_USB_STORAGE
+#define CONFIG_USB_EHCI
+#define CONFIG_USB_EHCI_FSL
+#define CONFIG_EHCI_HCD_INIT_AFTER_RESET
+#define CONFIG_SYS_USB_EHCI_REGS_BASE (CONFIG_SYS_CCSRBAR+0x22000)
+
#if defined(CONFIG_TSEC_ENET)
#ifndef CONFIG_NET_MULTI