These changes are the raw update to linux-4.4.6-rt14. Kernel sources
[kvmfornfv.git] / kernel / drivers / mfd / tc6393xb.c
index 63458b3..8c84a51 100644 (file)
@@ -522,10 +522,9 @@ static int tc6393xb_register_gpio(struct tc6393xb *tc6393xb, int gpio_base)
 
 /*--------------------------------------------------------------------------*/
 
-static void
-tc6393xb_irq(unsigned int irq, struct irq_desc *desc)
+static void tc6393xb_irq(struct irq_desc *desc)
 {
-       struct tc6393xb *tc6393xb = irq_get_handler_data(irq);
+       struct tc6393xb *tc6393xb = irq_desc_get_handler_data(desc);
        unsigned int isr;
        unsigned int i, irq_base;
 
@@ -586,12 +585,12 @@ static void tc6393xb_attach_irq(struct platform_device *dev)
        for (irq = irq_base; irq < irq_base + TC6393XB_NR_IRQS; irq++) {
                irq_set_chip_and_handler(irq, &tc6393xb_chip, handle_edge_irq);
                irq_set_chip_data(irq, tc6393xb);
-               set_irq_flags(irq, IRQF_VALID | IRQF_PROBE);
+               irq_clear_status_flags(irq, IRQ_NOREQUEST | IRQ_NOPROBE);
        }
 
        irq_set_irq_type(tc6393xb->irq, IRQ_TYPE_EDGE_FALLING);
-       irq_set_handler_data(tc6393xb->irq, tc6393xb);
-       irq_set_chained_handler(tc6393xb->irq, tc6393xb_irq);
+       irq_set_chained_handler_and_data(tc6393xb->irq, tc6393xb_irq,
+                                        tc6393xb);
 }
 
 static void tc6393xb_detach_irq(struct platform_device *dev)
@@ -599,13 +598,12 @@ static void tc6393xb_detach_irq(struct platform_device *dev)
        struct tc6393xb *tc6393xb = platform_get_drvdata(dev);
        unsigned int irq, irq_base;
 
-       irq_set_chained_handler(tc6393xb->irq, NULL);
-       irq_set_handler_data(tc6393xb->irq, NULL);
+       irq_set_chained_handler_and_data(tc6393xb->irq, NULL, NULL);
 
        irq_base = tc6393xb->irq_base;
 
        for (irq = irq_base; irq < irq_base + TC6393XB_NR_IRQS; irq++) {
-               set_irq_flags(irq, 0);
+               irq_set_status_flags(irq, IRQ_NOREQUEST | IRQ_NOPROBE);
                irq_set_chip(irq, NULL);
                irq_set_chip_data(irq, NULL);
        }