]> Pileus Git - ~andy/linux/blobdiff - drivers/irqchip/irq-renesas-irqc.c
Merge branches 'acpi-processor', 'acpi-hotplug', 'acpi-init', 'acpi-pm' and 'acpica'
[~andy/linux] / drivers / irqchip / irq-renesas-irqc.c
index 2f404ba61c6c23f0b3ea8a15f6bd4154c4e2578c..8777065012a58282b73be989930748f1f7a5f02a 100644 (file)
@@ -81,15 +81,12 @@ static void irqc_irq_disable(struct irq_data *d)
        iowrite32(BIT(hw_irq), p->cpu_int_base + IRQC_EN_STS);
 }
 
-#define INTC_IRQ_SENSE_VALID 0x10
-#define INTC_IRQ_SENSE(x) (x + INTC_IRQ_SENSE_VALID)
-
 static unsigned char irqc_sense[IRQ_TYPE_SENSE_MASK + 1] = {
-       [IRQ_TYPE_LEVEL_LOW] = INTC_IRQ_SENSE(0x01),
-       [IRQ_TYPE_LEVEL_HIGH] = INTC_IRQ_SENSE(0x02),
-       [IRQ_TYPE_EDGE_FALLING] = INTC_IRQ_SENSE(0x04), /* Synchronous */
-       [IRQ_TYPE_EDGE_RISING] = INTC_IRQ_SENSE(0x08), /* Synchronous */
-       [IRQ_TYPE_EDGE_BOTH] = INTC_IRQ_SENSE(0x0c),  /* Synchronous */
+       [IRQ_TYPE_LEVEL_LOW]    = 0x01,
+       [IRQ_TYPE_LEVEL_HIGH]   = 0x02,
+       [IRQ_TYPE_EDGE_FALLING] = 0x04, /* Synchronous */
+       [IRQ_TYPE_EDGE_RISING]  = 0x08, /* Synchronous */
+       [IRQ_TYPE_EDGE_BOTH]    = 0x0c, /* Synchronous */
 };
 
 static int irqc_irq_set_type(struct irq_data *d, unsigned int type)
@@ -101,12 +98,12 @@ static int irqc_irq_set_type(struct irq_data *d, unsigned int type)
 
        irqc_dbg(&p->irq[hw_irq], "sense");
 
-       if (!(value & INTC_IRQ_SENSE_VALID))
+       if (!value)
                return -EINVAL;
 
        tmp = ioread32(p->iomem + IRQC_CONFIG(hw_irq));
        tmp &= ~0x3f;
-       tmp |= value ^ INTC_IRQ_SENSE_VALID;
+       tmp |= value;
        iowrite32(tmp, p->iomem + IRQC_CONFIG(hw_irq));
        return 0;
 }
@@ -212,10 +209,8 @@ static int irqc_probe(struct platform_device *pdev)
        irq_chip->name = name;
        irq_chip->irq_mask = irqc_irq_disable;
        irq_chip->irq_unmask = irqc_irq_enable;
-       irq_chip->irq_enable = irqc_irq_enable;
-       irq_chip->irq_disable = irqc_irq_disable;
        irq_chip->irq_set_type = irqc_irq_set_type;
-       irq_chip->flags = IRQCHIP_SKIP_SET_WAKE;
+       irq_chip->flags = IRQCHIP_SKIP_SET_WAKE | IRQCHIP_MASK_ON_SUSPEND;
 
        p->irq_domain = irq_domain_add_simple(pdev->dev.of_node,
                                              p->number_of_irqs,