summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
authorWolfgang Denk <wd@denx.de>2011-04-05 12:24:20 +0200
committerWolfgang Denk <wd@denx.de>2011-04-05 12:24:20 +0200
commit4db2fa7f9446d0f2fe8db3d62184b1212fe22707 (patch)
treebc62cbfc14296551caebda626db7a90fef9ae844 /drivers
parent75df0d594990875419121c6f8687472ac9f4ae7a (diff)
parent7d3053fbf16caad4745f42f7ae3e38e9d3e964b5 (diff)
downloadu-boot-imx-4db2fa7f9446d0f2fe8db3d62184b1212fe22707.zip
u-boot-imx-4db2fa7f9446d0f2fe8db3d62184b1212fe22707.tar.gz
u-boot-imx-4db2fa7f9446d0f2fe8db3d62184b1212fe22707.tar.bz2
Merge branch 'master' of git://git.denx.de/u-boot-mpc85xx
Conflicts: drivers/usb/host/ehci-pci.c Signed-off-by: Wolfgang Denk <wd@denx.de>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/misc/fsl_law.c20
-rw-r--r--drivers/net/tsec.c23
-rw-r--r--drivers/pci/fsl_pci_init.c12
-rw-r--r--drivers/usb/host/ehci-pci.c1
4 files changed, 54 insertions, 2 deletions
diff --git a/drivers/misc/fsl_law.c b/drivers/misc/fsl_law.c
index 031c974..3233ff2 100644
--- a/drivers/misc/fsl_law.c
+++ b/drivers/misc/fsl_law.c
@@ -24,6 +24,7 @@
*/
#include <common.h>
+#include <linux/compiler.h>
#include <asm/fsl_law.h>
#include <asm/io.h>
@@ -246,6 +247,25 @@ void init_laws(void)
#error FSL_HW_NUM_LAWS can not be greater than 32 w/o code changes
#endif
+ /*
+ * Any LAWs that were set up before we booted assume they are meant to
+ * be around and mark them used.
+ */
+ for (i = 0; i < FSL_HW_NUM_LAWS; i++) {
+ u32 lawar = in_be32(LAWAR_ADDR(i));
+
+ if (lawar & LAW_EN)
+ gd->used_laws |= (1 << i);
+ }
+
+#if defined(CONFIG_NAND_U_BOOT) && !defined(CONFIG_NAND_SPL)
+ /*
+ * in NAND boot we've already parsed the law_table and setup those LAWs
+ * so don't do it again.
+ */
+ return;
+#endif
+
for (i = 0; i < num_law_entries; i++) {
if (law_table[i].index == -1)
set_next_law(law_table[i].addr, law_table[i].size,
diff --git a/drivers/net/tsec.c b/drivers/net/tsec.c
index 9c8fe62..9a91b9e 100644
--- a/drivers/net/tsec.c
+++ b/drivers/net/tsec.c
@@ -1810,6 +1810,28 @@ static struct phy_info phy_info_rtl8211b = {
},
};
+struct phy_info phy_info_AR8021 = {
+ 0x4dd04,
+ "AR8021",
+ 4,
+ (struct phy_cmd[]) { /* config */
+ {MII_BMCR, BMCR_RESET, NULL},
+ {MII_BMCR, BMCR_ANENABLE|BMCR_ANRESTART, NULL},
+ {0x1d, 0x05, NULL},
+ {0x1e, 0x3D47, NULL},
+ {miim_end,}
+ },
+ (struct phy_cmd[]) { /* startup */
+ {MII_BMSR, miim_read, NULL},
+ {MII_BMSR, miim_read, &mii_parse_sr},
+ {MII_BMSR, miim_read, &mii_parse_link},
+ {miim_end,}
+ },
+ (struct phy_cmd[]) { /* shutdown */
+ {miim_end,}
+ }
+};
+
static struct phy_info *phy_info[] = {
&phy_info_cis8204,
&phy_info_cis8201,
@@ -1832,6 +1854,7 @@ static struct phy_info *phy_info[] = {
&phy_info_VSC8221,
&phy_info_dp83865,
&phy_info_rtl8211b,
+ &phy_info_AR8021,
&phy_info_generic, /* must be last; has ID 0 and 32 bit mask */
NULL
};
diff --git a/drivers/pci/fsl_pci_init.c b/drivers/pci/fsl_pci_init.c
index dc34bd6..ab461b4 100644
--- a/drivers/pci/fsl_pci_init.c
+++ b/drivers/pci/fsl_pci_init.c
@@ -1,5 +1,5 @@
/*
- * Copyright 2007-2010 Freescale Semiconductor, Inc.
+ * Copyright 2007-2011 Freescale Semiconductor, Inc.
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the Free
@@ -223,6 +223,7 @@ void fsl_pci_init(struct pci_controller *hose, struct fsl_pci_info *pci_info)
u32 cfg_data = (u32)&((ccsr_fsl_pci_t *)pci_info->regs)->cfg_data;
u16 temp16;
u32 temp32;
+ u32 block_rev;
int enabled, r, inbound = 0;
u16 ltssm;
u8 temp8, pcie_cap;
@@ -232,13 +233,20 @@ void fsl_pci_init(struct pci_controller *hose, struct fsl_pci_info *pci_info)
/* Initialize ATMU registers based on hose regions and flags */
volatile pot_t *po = &pci->pot[1]; /* skip 0 */
- volatile pit_t *pi = &pci->pit[2]; /* ranges from: 3 to 1 */
+ volatile pit_t *pi;
u64 out_hi = 0, out_lo = -1ULL;
u32 pcicsrbar, pcicsrbar_sz;
pci_setup_indirect(hose, cfg_addr, cfg_data);
+ block_rev = in_be32(&pci->block_rev1);
+ if (PEX_IP_BLK_REV_2_2 <= block_rev) {
+ pi = &pci->pit[2]; /* 0xDC0 */
+ } else {
+ pi = &pci->pit[3]; /* 0xDE0 */
+ }
+
/* Handle setup of outbound windows first */
for (r = 0; r < hose->region_count; r++) {
unsigned long flags = hose->regions[r].flags;
diff --git a/drivers/usb/host/ehci-pci.c b/drivers/usb/host/ehci-pci.c
index 2b68f7b..4abe5e3 100644
--- a/drivers/usb/host/ehci-pci.c
+++ b/drivers/usb/host/ehci-pci.c
@@ -29,6 +29,7 @@
static struct pci_device_id ehci_pci_ids[] = {
/* Please add supported PCI EHCI controller ids here */
{0x1033, 0x00E0}, /* NEC */
+ {0x10B9, 0x5239}, /* ULI1575 PCI EHCI module ids */
{0x12D8, 0x400F}, /* Pericom */
{0, 0}
};