diff options
author | Dan Williams <dan.j.williams@intel.com> | 2008-03-26 19:12:38 -0700 |
---|---|---|
committer | Dan Williams <dan.j.williams@intel.com> | 2008-03-26 12:33:41 -0700 |
commit | c34002c102880bfac5b449b41e5313dcda186db8 (patch) | |
tree | b868da85842d52df7f0ceeef243b7dae7671f645 /arch/arm/plat-iop | |
parent | 97c46048ce73c27fd2734299f07a8c06c8156a2e (diff) | |
download | kernel_samsung_crespo-c34002c102880bfac5b449b41e5313dcda186db8.zip kernel_samsung_crespo-c34002c102880bfac5b449b41e5313dcda186db8.tar.gz kernel_samsung_crespo-c34002c102880bfac5b449b41e5313dcda186db8.tar.bz2 |
iop: unconditionally initialize the ATU on platforms known to be 'hosts'
Platforms like iq80321 and iq80331 which may be host-bus-adapters
require 'iop3xx_init_atu=y' to be specified on the kernel command line.
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
Diffstat (limited to 'arch/arm/plat-iop')
-rw-r--r-- | arch/arm/plat-iop/pci.c | 33 |
1 files changed, 27 insertions, 6 deletions
diff --git a/arch/arm/plat-iop/pci.c b/arch/arm/plat-iop/pci.c index 6ed374f..d9bc15a 100644 --- a/arch/arm/plat-iop/pci.c +++ b/arch/arm/plat-iop/pci.c @@ -24,6 +24,7 @@ #include <asm/hardware.h> #include <asm/mach/pci.h> #include <asm/hardware/iop3xx.h> +#include <asm/mach-types.h> // #define DEBUG @@ -325,13 +326,16 @@ void __init iop3xx_atu_disable(void) /* Flag to determine whether the ATU is initialized and the PCI bus scanned */ int init_atu; -void __init iop3xx_pci_preinit(void) -{ - if (iop3xx_get_init_atu() == IOP3XX_INIT_ATU_ENABLE) { - iop3xx_atu_disable(); - iop3xx_atu_setup(); - } +int iop3xx_get_init_atu(void) { + /* check if default has been overridden */ + if (init_atu != IOP3XX_INIT_ATU_DEFAULT) + return init_atu; + else + return IOP3XX_INIT_ATU_DISABLE; +} +static void __init iop3xx_atu_debug(void) +{ DBG("PCI: Intel IOP3xx PCI init.\n"); DBG("PCI: Outbound memory window 0: PCI 0x%08x%08x\n", *IOP3XX_OUMWTVR0, *IOP3XX_OMWTVR0); @@ -358,6 +362,23 @@ void __init iop3xx_pci_preinit(void) hook_fault_code(16+6, iop3xx_pci_abort, SIGBUS, "imprecise external abort"); } +/* for platforms that might be host-bus-adapters */ +void __init iop3xx_pci_preinit_cond(void) +{ + if (iop3xx_get_init_atu() == IOP3XX_INIT_ATU_ENABLE) { + iop3xx_atu_disable(); + iop3xx_atu_setup(); + iop3xx_atu_debug(); + } +} + +void __init iop3xx_pci_preinit(void) +{ + iop3xx_atu_disable(); + iop3xx_atu_setup(); + iop3xx_atu_debug(); +} + /* allow init_atu to be user overridden */ static int __init iop3xx_init_atu_setup(char *str) { |