support for the Giant Shoulder Inc Loft board - a very minor variation on a standard Avila board arch/arm/mach-ixp4xx/Kconfig | 8 +++++++- arch/arm/mach-ixp4xx/ixdp425-pci.c | 6 ++++-- arch/arm/mach-ixp4xx/ixdp425-setup.c | 19 +++++++++++++++++++ include/asm-arm/arch-ixp4xx/ixdp425.h | 1 + 4 files changed, 31 insertions(+), 3 deletions(-) --- linux-nslu2.orig/arch/arm/mach-ixp4xx/Kconfig 2006-02-06 20:37:01.000000000 +0100 +++ linux-nslu2/arch/arm/mach-ixp4xx/Kconfig 2006-02-06 22:34:20.000000000 +0100 @@ -25,6 +25,12 @@ config ARCH_AVILA Avila Network Platform. For more information on this platform, see . +config MACH_LOFT + bool "Loft" + help + Say 'Y' here if you want your kernel to support the Giant + Shoulder Inc Loft board. + config ARCH_ADI_COYOTE bool "Coyote" help @@ -84,7 +90,7 @@ config MACH_NAS100D # config ARCH_IXDP4XX bool - depends on ARCH_IXDP425 || ARCH_AVILA || MACH_IXDP465 + depends on ARCH_IXDP425 || ARCH_AVILA || MACH_IXDP465 || MACH_LOFT default y # --- linux-nslu2.orig/arch/arm/mach-ixp4xx/ixdp425-pci.c 2006-02-06 20:37:01.000000000 +0100 +++ linux-nslu2/arch/arm/mach-ixp4xx/ixdp425-pci.c 2006-02-06 22:34:20.000000000 +0100 @@ -46,7 +46,8 @@ static int __init ixdp425_map_irq(struct int irq = -1; - if (slot >= 1 && slot <= IXDP425_PCI_MAX_DEV && + if (slot >= 1 && + slot <= (machine_is_loft() ? LOFT_PCI_MAX_DEV : IXDP425_PCI_MAX_DEV) && pin >= 1 && pin <= IXDP425_PCI_IRQ_LINES) { irq = pci_irq_table[(slot + pin - 2) % 4]; } @@ -66,7 +67,8 @@ struct hw_pci ixdp425_pci __initdata = { int __init ixdp425_pci_init(void) { if (machine_is_ixdp425() || machine_is_ixcdp1100() || - machine_is_avila() || machine_is_ixdp465()) + machine_is_avila() || machine_is_ixdp465() || + machine_is_loft()) pci_common_init(&ixdp425_pci); return 0; } --- linux-nslu2.orig/arch/arm/mach-ixp4xx/ixdp425-setup.c 2006-02-06 20:37:01.000000000 +0100 +++ linux-nslu2/arch/arm/mach-ixp4xx/ixdp425-setup.c 2006-02-06 22:34:20.000000000 +0100 @@ -176,3 +176,22 @@ MACHINE_START(AVILA, "Gateworks Avila Ne MACHINE_END #endif +/* + * Loft is functionally equivalent to Avila except that it has a + * different number for the maximum PCI devices. The MACHINE + * structure below is identical to Avila except for the comment. + */ +#ifdef CONFIG_MACH_LOFT +MACHINE_START(LOFT, "Giant Shoulder Inc Loft board") + /* Maintainer: Tom Billman */ + .phys_ram = PHYS_OFFSET, + .phys_io = IXP4XX_PERIPHERAL_BASE_PHYS, + .io_pg_offst = ((IXP4XX_PERIPHERAL_BASE_VIRT) >> 18) & 0xfffc, + .map_io = ixp4xx_map_io, + .init_irq = ixp4xx_init_irq, + .timer = &ixp4xx_timer, + .boot_params = 0x0100, + .init_machine = ixdp425_init, +MACHINE_END +#endif + --- linux-nslu2.orig/include/asm-arm/arch-ixp4xx/ixdp425.h 2006-02-06 20:37:38.000000000 +0100 +++ linux-nslu2/include/asm-arm/arch-ixp4xx/ixdp425.h 2006-02-06 22:34:20.000000000 +0100 @@ -23,6 +23,7 @@ * IXDP425 PCI IRQs */ #define IXDP425_PCI_MAX_DEV 4 +#define LOFT_PCI_MAX_DEV 6 #define IXDP425_PCI_IRQ_LINES 4