diff options
author | Vivek Mahajan <vivek.mahajan@freescale.com> | 2009-10-07 15:47:48 -0400 |
---|---|---|
committer | Justin Waters <justin.waters@timesys.com> | 2009-10-07 15:47:48 -0400 |
commit | b4a7ef6f8871fe73c848fa31075971c83ff5e129 (patch) | |
tree | 89f5fcd552432ef36bca47dd22de9faa958ea51c | |
parent | 51fad42204d5b1cdd3bdc89fd8685fcd3414a2a0 (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.c | 17 | ||||
-rw-r--r-- | include/configs/P10XX_20XX_RDB.h | 12 |
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 |