diff options
| author | Wolfgang Denk <[email protected]> | 2007-05-05 21:12:41 +0200 |
|---|---|---|
| committer | Wolfgang Denk <[email protected]> | 2007-05-05 21:12:41 +0200 |
| commit | 2be1bab6a7dc1d1c9ee1e3ca53ff9f011136f1fe (patch) | |
| tree | 1ead443be05f9bf7ff950b789fdb0aa45dbb2738 /drivers | |
| parent | 2f15278c2eb911c668b4fe562130b78cf554d139 (diff) | |
| parent | 2f550ab976405300f5b07bf2890800840d0aa05f (diff) | |
Merge with git://www.denx.de/git/u-boot-testing
Diffstat (limited to 'drivers')
| -rw-r--r-- | drivers/pci_auto.c | 7 | ||||
| -rw-r--r-- | drivers/smc91111.c | 8 |
2 files changed, 10 insertions, 5 deletions
diff --git a/drivers/pci_auto.c b/drivers/pci_auto.c index 969167555ea..f170c2db89e 100644 --- a/drivers/pci_auto.c +++ b/drivers/pci_auto.c @@ -34,7 +34,12 @@ void pciauto_region_init(struct pci_region* res) { - res->bus_lower = res->bus_start; + /* + * Avoid allocating PCI resources from address 0 -- this is illegal + * according to PCI 2.1 and moreover, this is known to cause Linux IDE + * drivers to fail. Use a reasonable starting value of 0x1000 instead. + */ + res->bus_lower = res->bus_start ? res->bus_start : 0x1000; } void pciauto_region_align(struct pci_region *res, unsigned long size) diff --git a/drivers/smc91111.c b/drivers/smc91111.c index f91e4b98436..8061f12979d 100644 --- a/drivers/smc91111.c +++ b/drivers/smc91111.c @@ -1538,9 +1538,9 @@ int eth_send(volatile void *packet, int length) { int smc_get_ethaddr (bd_t * bd) { int env_size, rom_valid, env_present = 0, reg; - char *s = NULL, *e, *v_mac, es[] = "11:22:33:44:55:66"; + char *s = NULL, *e, es[] = "11:22:33:44:55:66"; char s_env_mac[64]; - uchar v_env_mac[6], v_rom_mac[6]; + uchar v_env_mac[6], v_rom_mac[6], *v_mac; env_size = getenv_r ("ethaddr", s_env_mac, sizeof (s_env_mac)); if ((env_size > 0) && (env_size < sizeof (es))) { /* exit if env is bad */ @@ -1563,7 +1563,7 @@ int smc_get_ethaddr (bd_t * bd) if (!env_present) { /* if NO env */ if (rom_valid) { /* but ROM is valid */ - v_mac = (char *)v_rom_mac; + v_mac = v_rom_mac; sprintf (s_env_mac, "%02X:%02X:%02X:%02X:%02X:%02X", v_mac[0], v_mac[1], v_mac[2], v_mac[3], v_mac[4], v_mac[5]); @@ -1573,7 +1573,7 @@ int smc_get_ethaddr (bd_t * bd) return (-1); } } else { /* good env, don't care ROM */ - v_mac = (char *)v_env_mac; /* always use a good env over a ROM */ + v_mac = v_env_mac; /* always use a good env over a ROM */ } if (env_present && rom_valid) { /* if both env and ROM are good */ |
