Loading arch/arm/configs/ixp4xx_defconfig +2 −0 Original line number Original line Diff line number Diff line Loading @@ -117,11 +117,13 @@ CONFIG_ARCH_ADI_COYOTE=y CONFIG_ARCH_IXDP425=y CONFIG_ARCH_IXDP425=y CONFIG_MACH_IXDPG425=y CONFIG_MACH_IXDPG425=y CONFIG_MACH_IXDP465=y CONFIG_MACH_IXDP465=y CONFIG_MACH_KIXRP435=y CONFIG_ARCH_IXCDP1100=y CONFIG_ARCH_IXCDP1100=y CONFIG_ARCH_PRPMC1100=y CONFIG_ARCH_PRPMC1100=y CONFIG_MACH_NAS100D=y CONFIG_MACH_NAS100D=y CONFIG_ARCH_IXDP4XX=y CONFIG_ARCH_IXDP4XX=y CONFIG_CPU_IXP46X=y CONFIG_CPU_IXP46X=y CONFIG_CPU_IXP43X=y # CONFIG_MACH_GTWX5715 is not set # CONFIG_MACH_GTWX5715 is not set # # Loading arch/arm/mach-ixp4xx/Kconfig +21 −1 Original line number Original line Diff line number Diff line Loading @@ -62,6 +62,12 @@ config MACH_IXDP465 IXDP465 Development Platform (Also known as BMP). IXDP465 Development Platform (Also known as BMP). For more information on this platform, see <file:Documentation/arm/IXP4xx>. For more information on this platform, see <file:Documentation/arm/IXP4xx>. config MACH_KIXRP435 bool "KIXRP435" help Say 'Y' here if you want your kernel to support Intel's KIXRP435 Reference Platform. For more information on this platform, see <file:Documentation/arm/IXP4xx>. # # # IXCDP1100 is the exact same HW as IXDP425, but with a different machine # IXCDP1100 is the exact same HW as IXDP425, but with a different machine Loading Loading @@ -89,12 +95,21 @@ config MACH_NAS100D NAS 100d device. For more information on this platform, NAS 100d device. For more information on this platform, see http://www.nslu2-linux.org/wiki/NAS100d/HomePage see http://www.nslu2-linux.org/wiki/NAS100d/HomePage config MACH_DSMG600 bool prompt "D-Link DSM-G600 RevA" select PCI help Say 'Y' here if you want your kernel to support D-Link's DSM-G600 RevA device. For more information on this platform, see http://www.nslu2-linux.org/wiki/DSMG600/HomePage # # # Avila and IXDP share the same source for now. Will change in future # Avila and IXDP share the same source for now. Will change in future # # config ARCH_IXDP4XX config ARCH_IXDP4XX bool bool depends on ARCH_IXDP425 || MACH_IXDP465 depends on ARCH_IXDP425 || MACH_IXDP465 || MACH_KIXRP435 default y default y # # Loading @@ -105,6 +120,11 @@ config CPU_IXP46X depends on MACH_IXDP465 depends on MACH_IXDP465 default y default y config CPU_IXP43X bool depends on MACH_KIXRP435 default y config MACH_GTWX5715 config MACH_GTWX5715 bool "Gemtek WX5715 (Linksys WRV54G)" bool "Gemtek WX5715 (Linksys WRV54G)" depends on ARCH_IXP4XX depends on ARCH_IXP4XX Loading arch/arm/mach-ixp4xx/Makefile +2 −0 Original line number Original line Diff line number Diff line Loading @@ -12,6 +12,7 @@ obj-pci-$(CONFIG_ARCH_ADI_COYOTE) += coyote-pci.o obj-pci-$(CONFIG_MACH_GTWX5715) += gtwx5715-pci.o obj-pci-$(CONFIG_MACH_GTWX5715) += gtwx5715-pci.o obj-pci-$(CONFIG_MACH_NSLU2) += nslu2-pci.o obj-pci-$(CONFIG_MACH_NSLU2) += nslu2-pci.o obj-pci-$(CONFIG_MACH_NAS100D) += nas100d-pci.o obj-pci-$(CONFIG_MACH_NAS100D) += nas100d-pci.o obj-pci-$(CONFIG_MACH_DSMG600) += dsmg600-pci.o obj-y += common.o obj-y += common.o Loading @@ -22,5 +23,6 @@ obj-$(CONFIG_ARCH_ADI_COYOTE) += coyote-setup.o obj-$(CONFIG_MACH_GTWX5715) += gtwx5715-setup.o obj-$(CONFIG_MACH_GTWX5715) += gtwx5715-setup.o obj-$(CONFIG_MACH_NSLU2) += nslu2-setup.o nslu2-power.o obj-$(CONFIG_MACH_NSLU2) += nslu2-setup.o nslu2-power.o obj-$(CONFIG_MACH_NAS100D) += nas100d-setup.o nas100d-power.o obj-$(CONFIG_MACH_NAS100D) += nas100d-setup.o nas100d-power.o obj-$(CONFIG_MACH_DSMG600) += dsmg600-setup.o dsmg600-power.o obj-$(CONFIG_PCI) += $(obj-pci-$(CONFIG_PCI)) common-pci.o obj-$(CONFIG_PCI) += $(obj-pci-$(CONFIG_PCI)) common-pci.o arch/arm/mach-ixp4xx/common-pci.c +2 −2 Original line number Original line Diff line number Diff line Loading @@ -374,7 +374,7 @@ void __init ixp4xx_pci_preinit(void) * Determine which PCI read method to use. * Determine which PCI read method to use. * Rev 0 IXP425 requires workaround. * Rev 0 IXP425 requires workaround. */ */ if (!(processor_id & 0xf) && !cpu_is_ixp46x()) { if (!(processor_id & 0xf) && cpu_is_ixp42x()) { printk("PCI: IXP42x A0 silicon detected - " printk("PCI: IXP42x A0 silicon detected - " "PCI Non-Prefetch Workaround Enabled\n"); "PCI Non-Prefetch Workaround Enabled\n"); ixp4xx_pci_read = ixp4xx_pci_read_errata; ixp4xx_pci_read = ixp4xx_pci_read_errata; Loading Loading @@ -480,7 +480,7 @@ int ixp4xx_setup(int nr, struct pci_sys_data *sys) res[0].flags = IORESOURCE_IO; res[0].flags = IORESOURCE_IO; res[1].name = "PCI Memory Space"; res[1].name = "PCI Memory Space"; res[1].start = 0x48000000; res[1].start = PCIBIOS_MIN_MEM; #ifndef CONFIG_IXP4XX_INDIRECT_PCI #ifndef CONFIG_IXP4XX_INDIRECT_PCI res[1].end = 0x4bffffff; res[1].end = 0x4bffffff; #else #else Loading arch/arm/mach-ixp4xx/common.c +26 −3 Original line number Original line Diff line number Diff line Loading @@ -105,6 +105,29 @@ static signed char irq2gpio[32] = { 7, 8, 9, 10, 11, 12, -1, -1, 7, 8, 9, 10, 11, 12, -1, -1, }; }; int gpio_to_irq(int gpio) { int irq; for (irq = 0; irq < 32; irq++) { if (irq2gpio[irq] == gpio) return irq; } return -EINVAL; } EXPORT_SYMBOL(gpio_to_irq); int irq_to_gpio(int irq) { int gpio = (irq < 32) ? irq2gpio[irq] : -EINVAL; if (gpio == -1) return -EINVAL; return gpio; } EXPORT_SYMBOL(irq_to_gpio); static int ixp4xx_set_irq_type(unsigned int irq, unsigned int type) static int ixp4xx_set_irq_type(unsigned int irq, unsigned int type) { { int line = irq2gpio[irq]; int line = irq2gpio[irq]; Loading Loading @@ -172,7 +195,7 @@ static int ixp4xx_set_irq_type(unsigned int irq, unsigned int type) static void ixp4xx_irq_mask(unsigned int irq) static void ixp4xx_irq_mask(unsigned int irq) { { if (cpu_is_ixp46x() && irq >= 32) if ((cpu_is_ixp46x() || cpu_is_ixp43x()) && irq >= 32) *IXP4XX_ICMR2 &= ~(1 << (irq - 32)); *IXP4XX_ICMR2 &= ~(1 << (irq - 32)); else else *IXP4XX_ICMR &= ~(1 << irq); *IXP4XX_ICMR &= ~(1 << irq); Loading @@ -195,7 +218,7 @@ static void ixp4xx_irq_unmask(unsigned int irq) if (!(ixp4xx_irq_edge & (1 << irq))) if (!(ixp4xx_irq_edge & (1 << irq))) ixp4xx_irq_ack(irq); ixp4xx_irq_ack(irq); if (cpu_is_ixp46x() && irq >= 32) if ((cpu_is_ixp46x() || cpu_is_ixp43x()) && irq >= 32) *IXP4XX_ICMR2 |= (1 << (irq - 32)); *IXP4XX_ICMR2 |= (1 << (irq - 32)); else else *IXP4XX_ICMR |= (1 << irq); *IXP4XX_ICMR |= (1 << irq); Loading @@ -219,7 +242,7 @@ void __init ixp4xx_init_irq(void) /* Disable all interrupt */ /* Disable all interrupt */ *IXP4XX_ICMR = 0x0; *IXP4XX_ICMR = 0x0; if (cpu_is_ixp46x()) { if (cpu_is_ixp46x() || cpu_is_ixp43x()) { /* Route upper 32 sources to IRQ instead of FIQ */ /* Route upper 32 sources to IRQ instead of FIQ */ *IXP4XX_ICLR2 = 0x00; *IXP4XX_ICLR2 = 0x00; Loading Loading
arch/arm/configs/ixp4xx_defconfig +2 −0 Original line number Original line Diff line number Diff line Loading @@ -117,11 +117,13 @@ CONFIG_ARCH_ADI_COYOTE=y CONFIG_ARCH_IXDP425=y CONFIG_ARCH_IXDP425=y CONFIG_MACH_IXDPG425=y CONFIG_MACH_IXDPG425=y CONFIG_MACH_IXDP465=y CONFIG_MACH_IXDP465=y CONFIG_MACH_KIXRP435=y CONFIG_ARCH_IXCDP1100=y CONFIG_ARCH_IXCDP1100=y CONFIG_ARCH_PRPMC1100=y CONFIG_ARCH_PRPMC1100=y CONFIG_MACH_NAS100D=y CONFIG_MACH_NAS100D=y CONFIG_ARCH_IXDP4XX=y CONFIG_ARCH_IXDP4XX=y CONFIG_CPU_IXP46X=y CONFIG_CPU_IXP46X=y CONFIG_CPU_IXP43X=y # CONFIG_MACH_GTWX5715 is not set # CONFIG_MACH_GTWX5715 is not set # # Loading
arch/arm/mach-ixp4xx/Kconfig +21 −1 Original line number Original line Diff line number Diff line Loading @@ -62,6 +62,12 @@ config MACH_IXDP465 IXDP465 Development Platform (Also known as BMP). IXDP465 Development Platform (Also known as BMP). For more information on this platform, see <file:Documentation/arm/IXP4xx>. For more information on this platform, see <file:Documentation/arm/IXP4xx>. config MACH_KIXRP435 bool "KIXRP435" help Say 'Y' here if you want your kernel to support Intel's KIXRP435 Reference Platform. For more information on this platform, see <file:Documentation/arm/IXP4xx>. # # # IXCDP1100 is the exact same HW as IXDP425, but with a different machine # IXCDP1100 is the exact same HW as IXDP425, but with a different machine Loading Loading @@ -89,12 +95,21 @@ config MACH_NAS100D NAS 100d device. For more information on this platform, NAS 100d device. For more information on this platform, see http://www.nslu2-linux.org/wiki/NAS100d/HomePage see http://www.nslu2-linux.org/wiki/NAS100d/HomePage config MACH_DSMG600 bool prompt "D-Link DSM-G600 RevA" select PCI help Say 'Y' here if you want your kernel to support D-Link's DSM-G600 RevA device. For more information on this platform, see http://www.nslu2-linux.org/wiki/DSMG600/HomePage # # # Avila and IXDP share the same source for now. Will change in future # Avila and IXDP share the same source for now. Will change in future # # config ARCH_IXDP4XX config ARCH_IXDP4XX bool bool depends on ARCH_IXDP425 || MACH_IXDP465 depends on ARCH_IXDP425 || MACH_IXDP465 || MACH_KIXRP435 default y default y # # Loading @@ -105,6 +120,11 @@ config CPU_IXP46X depends on MACH_IXDP465 depends on MACH_IXDP465 default y default y config CPU_IXP43X bool depends on MACH_KIXRP435 default y config MACH_GTWX5715 config MACH_GTWX5715 bool "Gemtek WX5715 (Linksys WRV54G)" bool "Gemtek WX5715 (Linksys WRV54G)" depends on ARCH_IXP4XX depends on ARCH_IXP4XX Loading
arch/arm/mach-ixp4xx/Makefile +2 −0 Original line number Original line Diff line number Diff line Loading @@ -12,6 +12,7 @@ obj-pci-$(CONFIG_ARCH_ADI_COYOTE) += coyote-pci.o obj-pci-$(CONFIG_MACH_GTWX5715) += gtwx5715-pci.o obj-pci-$(CONFIG_MACH_GTWX5715) += gtwx5715-pci.o obj-pci-$(CONFIG_MACH_NSLU2) += nslu2-pci.o obj-pci-$(CONFIG_MACH_NSLU2) += nslu2-pci.o obj-pci-$(CONFIG_MACH_NAS100D) += nas100d-pci.o obj-pci-$(CONFIG_MACH_NAS100D) += nas100d-pci.o obj-pci-$(CONFIG_MACH_DSMG600) += dsmg600-pci.o obj-y += common.o obj-y += common.o Loading @@ -22,5 +23,6 @@ obj-$(CONFIG_ARCH_ADI_COYOTE) += coyote-setup.o obj-$(CONFIG_MACH_GTWX5715) += gtwx5715-setup.o obj-$(CONFIG_MACH_GTWX5715) += gtwx5715-setup.o obj-$(CONFIG_MACH_NSLU2) += nslu2-setup.o nslu2-power.o obj-$(CONFIG_MACH_NSLU2) += nslu2-setup.o nslu2-power.o obj-$(CONFIG_MACH_NAS100D) += nas100d-setup.o nas100d-power.o obj-$(CONFIG_MACH_NAS100D) += nas100d-setup.o nas100d-power.o obj-$(CONFIG_MACH_DSMG600) += dsmg600-setup.o dsmg600-power.o obj-$(CONFIG_PCI) += $(obj-pci-$(CONFIG_PCI)) common-pci.o obj-$(CONFIG_PCI) += $(obj-pci-$(CONFIG_PCI)) common-pci.o
arch/arm/mach-ixp4xx/common-pci.c +2 −2 Original line number Original line Diff line number Diff line Loading @@ -374,7 +374,7 @@ void __init ixp4xx_pci_preinit(void) * Determine which PCI read method to use. * Determine which PCI read method to use. * Rev 0 IXP425 requires workaround. * Rev 0 IXP425 requires workaround. */ */ if (!(processor_id & 0xf) && !cpu_is_ixp46x()) { if (!(processor_id & 0xf) && cpu_is_ixp42x()) { printk("PCI: IXP42x A0 silicon detected - " printk("PCI: IXP42x A0 silicon detected - " "PCI Non-Prefetch Workaround Enabled\n"); "PCI Non-Prefetch Workaround Enabled\n"); ixp4xx_pci_read = ixp4xx_pci_read_errata; ixp4xx_pci_read = ixp4xx_pci_read_errata; Loading Loading @@ -480,7 +480,7 @@ int ixp4xx_setup(int nr, struct pci_sys_data *sys) res[0].flags = IORESOURCE_IO; res[0].flags = IORESOURCE_IO; res[1].name = "PCI Memory Space"; res[1].name = "PCI Memory Space"; res[1].start = 0x48000000; res[1].start = PCIBIOS_MIN_MEM; #ifndef CONFIG_IXP4XX_INDIRECT_PCI #ifndef CONFIG_IXP4XX_INDIRECT_PCI res[1].end = 0x4bffffff; res[1].end = 0x4bffffff; #else #else Loading
arch/arm/mach-ixp4xx/common.c +26 −3 Original line number Original line Diff line number Diff line Loading @@ -105,6 +105,29 @@ static signed char irq2gpio[32] = { 7, 8, 9, 10, 11, 12, -1, -1, 7, 8, 9, 10, 11, 12, -1, -1, }; }; int gpio_to_irq(int gpio) { int irq; for (irq = 0; irq < 32; irq++) { if (irq2gpio[irq] == gpio) return irq; } return -EINVAL; } EXPORT_SYMBOL(gpio_to_irq); int irq_to_gpio(int irq) { int gpio = (irq < 32) ? irq2gpio[irq] : -EINVAL; if (gpio == -1) return -EINVAL; return gpio; } EXPORT_SYMBOL(irq_to_gpio); static int ixp4xx_set_irq_type(unsigned int irq, unsigned int type) static int ixp4xx_set_irq_type(unsigned int irq, unsigned int type) { { int line = irq2gpio[irq]; int line = irq2gpio[irq]; Loading Loading @@ -172,7 +195,7 @@ static int ixp4xx_set_irq_type(unsigned int irq, unsigned int type) static void ixp4xx_irq_mask(unsigned int irq) static void ixp4xx_irq_mask(unsigned int irq) { { if (cpu_is_ixp46x() && irq >= 32) if ((cpu_is_ixp46x() || cpu_is_ixp43x()) && irq >= 32) *IXP4XX_ICMR2 &= ~(1 << (irq - 32)); *IXP4XX_ICMR2 &= ~(1 << (irq - 32)); else else *IXP4XX_ICMR &= ~(1 << irq); *IXP4XX_ICMR &= ~(1 << irq); Loading @@ -195,7 +218,7 @@ static void ixp4xx_irq_unmask(unsigned int irq) if (!(ixp4xx_irq_edge & (1 << irq))) if (!(ixp4xx_irq_edge & (1 << irq))) ixp4xx_irq_ack(irq); ixp4xx_irq_ack(irq); if (cpu_is_ixp46x() && irq >= 32) if ((cpu_is_ixp46x() || cpu_is_ixp43x()) && irq >= 32) *IXP4XX_ICMR2 |= (1 << (irq - 32)); *IXP4XX_ICMR2 |= (1 << (irq - 32)); else else *IXP4XX_ICMR |= (1 << irq); *IXP4XX_ICMR |= (1 << irq); Loading @@ -219,7 +242,7 @@ void __init ixp4xx_init_irq(void) /* Disable all interrupt */ /* Disable all interrupt */ *IXP4XX_ICMR = 0x0; *IXP4XX_ICMR = 0x0; if (cpu_is_ixp46x()) { if (cpu_is_ixp46x() || cpu_is_ixp43x()) { /* Route upper 32 sources to IRQ instead of FIQ */ /* Route upper 32 sources to IRQ instead of FIQ */ *IXP4XX_ICLR2 = 0x00; *IXP4XX_ICLR2 = 0x00; Loading