diff options
author | Tom Rini <trini@ti.com> | 2015-01-26 17:44:49 -0500 |
---|---|---|
committer | Tom Rini <trini@ti.com> | 2015-01-26 17:44:49 -0500 |
commit | ab92da9f47d51d363c7de42e2a7bd807e2c1bd54 (patch) | |
tree | dfabc29929e39a1ecc47edf5a4cf839ead062acd /drivers/pci/pci_auto.c | |
parent | aed03faa064cca56847571b13cbd4c849c6116aa (diff) | |
parent | e43ade3749ff10bc313f33bf23705465e4163896 (diff) | |
download | u-boot-imx-ab92da9f47d51d363c7de42e2a7bd807e2c1bd54.zip u-boot-imx-ab92da9f47d51d363c7de42e2a7bd807e2c1bd54.tar.gz u-boot-imx-ab92da9f47d51d363c7de42e2a7bd807e2c1bd54.tar.bz2 |
Merge branch 'master' of git://git.denx.de/u-boot-x86
Diffstat (limited to 'drivers/pci/pci_auto.c')
-rw-r--r-- | drivers/pci/pci_auto.c | 28 |
1 files changed, 27 insertions, 1 deletions
diff --git a/drivers/pci/pci_auto.c b/drivers/pci/pci_auto.c index 44470fa..ed92857 100644 --- a/drivers/pci/pci_auto.c +++ b/drivers/pci/pci_auto.c @@ -11,7 +11,7 @@ */ #include <common.h> - +#include <errno.h> #include <pci.h> #undef DEBUG @@ -191,6 +191,32 @@ void pciauto_setup_device(struct pci_controller *hose, pci_hose_write_config_byte(hose, dev, PCI_LATENCY_TIMER, 0x80); } +int pciauto_setup_rom(struct pci_controller *hose, pci_dev_t dev) +{ + pci_addr_t bar_value; + pci_size_t bar_size; + u32 bar_response; + u16 cmdstat = 0; + + pci_hose_write_config_dword(hose, dev, PCI_ROM_ADDRESS, 0xfffffffe); + pci_hose_read_config_dword(hose, dev, PCI_ROM_ADDRESS, &bar_response); + if (!bar_response) + return -ENOENT; + + bar_size = -(bar_response & ~1); + DEBUGF("PCI Autoconfig: ROM, size=%#x, ", bar_size); + if (pciauto_region_allocate(hose->pci_mem, bar_size, &bar_value) == 0) { + pci_hose_write_config_dword(hose, dev, PCI_ROM_ADDRESS, + bar_value); + } + DEBUGF("\n"); + pci_hose_read_config_word(hose, dev, PCI_COMMAND, &cmdstat); + cmdstat |= PCI_COMMAND_IO | PCI_COMMAND_MEMORY | PCI_COMMAND_MASTER; + pci_hose_write_config_word(hose, dev, PCI_COMMAND, cmdstat); + + return 0; +} + void pciauto_prescan_setup_bridge(struct pci_controller *hose, pci_dev_t dev, int sub_bus) { |