Index: linux-2.6.18/arch/avr32/mach-at32ap/at32ap7000.c =================================================================== --- linux-2.6.18.orig/arch/avr32/mach-at32ap/at32ap7000.c 2006-12-01 16:23:28.000000000 +0100 +++ linux-2.6.18/arch/avr32/mach-at32ap/at32ap7000.c 2006-12-01 17:01:59.000000000 +0100 @@ -518,6 +518,13 @@ DEFINE_DEV(pio, 3); DEV_CLK(mck, pio3, pba, 13); +static struct resource pio4_resource[] = { + PBMEM(0xffe03800), + IRQ(17), +}; +DEFINE_DEV(pio, 4); +DEV_CLK(mck, pio4, pba, 14); + void __init at32_add_system_devices(void) { system_manager.eim_first_irq = NR_INTERNAL_IRQS; @@ -532,6 +539,7 @@ platform_device_register(&pio1_device); platform_device_register(&pio2_device); platform_device_register(&pio3_device); + platform_device_register(&pio4_device); } /* -------------------------------------------------------------------- @@ -1119,6 +1127,7 @@ &pio1_mck, &pio2_mck, &pio3_mck, + &pio4_mck, &usart0_usart, &usart1_usart, &usart2_usart, @@ -1148,6 +1157,7 @@ at32_init_pio(&pio1_device); at32_init_pio(&pio2_device); at32_init_pio(&pio3_device); + at32_init_pio(&pio4_device); } void __init at32_clock_init(void) Index: linux-2.6.18/include/asm-avr32/arch-at32ap/irq.h =================================================================== --- linux-2.6.18.orig/include/asm-avr32/arch-at32ap/irq.h 2006-12-01 17:02:17.000000000 +0100 +++ linux-2.6.18/include/asm-avr32/arch-at32ap/irq.h 2006-12-01 17:02:24.000000000 +0100 @@ -4,7 +4,7 @@ #define EIM_IRQ_BASE NR_INTERNAL_IRQS #define NR_EIM_IRQS 32 #define GPIO_IRQ_BASE (EIM_IRQ_BASE + NR_EIM_IRQS) -#define NR_GPIO_IRQS (4 * 32) +#define NR_GPIO_IRQS (5 * 32) #define NR_IRQS (GPIO_IRQ_BASE + NR_GPIO_IRQS)