These changes are the raw update to linux-4.4.6-rt14. Kernel sources
[kvmfornfv.git] / kernel / drivers / mfd / ucb1x00-core.c
index 58ea9fd..f691d7e 100644 (file)
@@ -282,7 +282,7 @@ void ucb1x00_adc_disable(struct ucb1x00 *ucb)
  * SIBCLK to talk to the chip.  We leave the clock running until
  * we have finished processing all interrupts from the chip.
  */
-static void ucb1x00_irq(unsigned int irq, struct irq_desc *desc)
+static void ucb1x00_irq(struct irq_desc *desc)
 {
        struct ucb1x00 *ucb = irq_desc_get_handler_data(desc);
        unsigned int isr, i;
@@ -292,7 +292,7 @@ static void ucb1x00_irq(unsigned int irq, struct irq_desc *desc)
        ucb1x00_reg_write(ucb, UCB_IE_CLEAR, isr);
        ucb1x00_reg_write(ucb, UCB_IE_CLEAR, 0);
 
-       for (i = 0; i < 16 && isr; i++, isr >>= 1, irq++)
+       for (i = 0; i < 16 && isr; i++, isr >>= 1)
                if (isr & 1)
                        generic_handle_irq(ucb->irq_base + i);
        ucb1x00_disable(ucb);
@@ -562,12 +562,11 @@ static int ucb1x00_probe(struct mcp *mcp)
 
                irq_set_chip_and_handler(irq, &ucb1x00_irqchip, handle_edge_irq);
                irq_set_chip_data(irq, ucb);
-               set_irq_flags(irq, IRQF_VALID | IRQ_NOREQUEST);
+               irq_clear_status_flags(irq, IRQ_NOREQUEST);
        }
 
        irq_set_irq_type(ucb->irq, IRQ_TYPE_EDGE_RISING);
-       irq_set_handler_data(ucb->irq, ucb);
-       irq_set_chained_handler(ucb->irq, ucb1x00_irq);
+       irq_set_chained_handler_and_data(ucb->irq, ucb1x00_irq, ucb);
 
        if (pdata && pdata->gpio_base) {
                ucb->gpio.label = dev_name(&ucb->dev);