diff options
author | Wolfgang Denk <wd@denx.de> | 2011-04-05 12:24:20 +0200 |
---|---|---|
committer | Wolfgang Denk <wd@denx.de> | 2011-04-05 12:24:20 +0200 |
commit | 4db2fa7f9446d0f2fe8db3d62184b1212fe22707 (patch) | |
tree | bc62cbfc14296551caebda626db7a90fef9ae844 /drivers | |
parent | 75df0d594990875419121c6f8687472ac9f4ae7a (diff) | |
parent | 7d3053fbf16caad4745f42f7ae3e38e9d3e964b5 (diff) | |
download | u-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.c | 20 | ||||
-rw-r--r-- | drivers/net/tsec.c | 23 | ||||
-rw-r--r-- | drivers/pci/fsl_pci_init.c | 12 | ||||
-rw-r--r-- | drivers/usb/host/ehci-pci.c | 1 |
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} }; |