--- a/arch/arm/Kconfig +++ b/arch/arm/Kconfig @@ -399,6 +399,7 @@ config ARCH_GEMINI select CLKSRC_MMIO select CPU_FA526 select GENERIC_CLOCKEVENTS + select MIGHT_HAVE_PCI help Support for the Cortina Systems Gemini family SoCs --- a/arch/arm/mach-gemini/include/mach/hardware.h +++ b/arch/arm/mach-gemini/include/mach/hardware.h @@ -68,4 +68,9 @@ */ #define IO_ADDRESS(x) IOMEM((((x) & 0xFFF00000) >> 4) | ((x) & 0x000FFFFF) | 0xF0000000) +/* + * PCI subsystem macros + */ +#define pcibios_assign_all_busses() 1 + #endif --- a/arch/arm/mach-gemini/include/mach/irqs.h +++ b/arch/arm/mach-gemini/include/mach/irqs.h @@ -43,11 +43,14 @@ #define NORMAL_IRQ_NUM 32 -#define GPIO_IRQ_BASE NORMAL_IRQ_NUM +#define PCI_IRQ_BASE NORMAL_IRQ_NUM +#define PCI_IRQ_NUM 4 + +#define GPIO_IRQ_BASE (NORMAL_IRQ_NUM + PCI_IRQ_NUM) #define GPIO_IRQ_NUM (3 * 32) #define ARCH_TIMER_IRQ IRQ_TIMER2 -#define NR_IRQS (NORMAL_IRQ_NUM + GPIO_IRQ_NUM) +#define NR_IRQS (NORMAL_IRQ_NUM + PCI_IRQ_NUM + GPIO_IRQ_NUM) #endif /* __MACH_IRQS_H__ */ --- a/arch/arm/mach-gemini/Makefile +++ b/arch/arm/mach-gemini/Makefile @@ -6,6 +6,8 @@ obj-y := irq.o mm.o time.o devices.o gpio.o idle.o reset.o +obj-$(CONFIG_PCI) += pci.o + # Board-specific support obj-$(CONFIG_MACH_NAS4220B) += board-nas4220b.o obj-$(CONFIG_MACH_RUT100) += board-rut1xx.o --- a/arch/arm/mach-gemini/mm.c +++ b/arch/arm/mach-gemini/mm.c @@ -59,6 +59,11 @@ static struct map_desc gemini_io_desc[] .length = SZ_512K, .type = MT_DEVICE, }, { + .virtual = (unsigned long)IO_ADDRESS(GEMINI_PCI_IO_BASE), + .pfn = __phys_to_pfn(GEMINI_PCI_IO_BASE), + .length = SZ_512K, + .type = MT_DEVICE, + }, { .virtual = (unsigned long)IO_ADDRESS(GEMINI_FLASH_CTRL_BASE), .pfn = __phys_to_pfn(GEMINI_FLASH_CTRL_BASE), .length = SZ_512K,