Merge master.kernel.org:/home/rmk/linux-2.6-serial
[powerpc.git] / arch / arm / mach-ixp2000 / core.c
index 6851aba..6e8d504 100644 (file)
@@ -105,6 +105,16 @@ static struct map_desc ixp2000_io_desc[] __initdata = {
                .pfn            = __phys_to_pfn(IXP2000_MSF_PHYS_BASE),
                .length         = IXP2000_MSF_SIZE,
                .type           = MT_IXP2000_DEVICE,
+       }, {
+               .virtual        = IXP2000_SCRATCH_RING_VIRT_BASE,
+               .pfn            = __phys_to_pfn(IXP2000_SCRATCH_RING_PHYS_BASE),
+               .length         = IXP2000_SCRATCH_RING_SIZE,
+               .type           = MT_IXP2000_DEVICE,
+       }, {
+               .virtual        = IXP2000_SRAM0_VIRT_BASE,
+               .pfn            = __phys_to_pfn(IXP2000_SRAM0_PHYS_BASE),
+               .length         = IXP2000_SRAM0_SIZE,
+               .type           = MT_IXP2000_DEVICE,
        }, {
                .virtual        = IXP2000_PCI_IO_VIRT_BASE,
                .pfn            = __phys_to_pfn(IXP2000_PCI_IO_PHYS_BASE),
@@ -278,8 +288,6 @@ void gpio_line_config(int line, int direction)
 
        local_irq_save(flags);
        if (direction == GPIO_OUT) {
-               irq_desc[line + IRQ_IXP2000_GPIO0].valid = 0;
-
                /* if it's an output, it ain't an interrupt anymore */
                GPIO_IRQ_falling_edge &= ~(1 << line);
                GPIO_IRQ_rising_edge &= ~(1 << line);
@@ -341,11 +349,6 @@ static int ixp2000_GPIO_irq_type(unsigned int irq, unsigned int type)
                GPIO_IRQ_level_high &= ~(1 << line);
        update_gpio_int_csrs();
 
-       /*
-        * Finally, mark the corresponding IRQ as valid.
-        */
-       irq_desc[irq].valid = 1;
-
        return 0;
 }
 
@@ -496,14 +499,10 @@ void __init ixp2000_init_irq(void)
        }
        set_irq_chained_handler(IRQ_IXP2000_ERRSUM, ixp2000_err_irq_handler);
 
-       /*
-        * GPIO IRQs are invalid until someone sets the interrupt mode
-        * by calling set_irq_type().
-        */
        for (irq = IRQ_IXP2000_GPIO0; irq <= IRQ_IXP2000_GPIO7; irq++) {
                set_irq_chip(irq, &ixp2000_GPIO_irq_chip);
                set_irq_handler(irq, do_level_IRQ);
-               set_irq_flags(irq, 0);
+               set_irq_flags(irq, IRQF_VALID);
        }
        set_irq_chained_handler(IRQ_IXP2000_GPIO, ixp2000_GPIO_irq_handler);