IRQ: Maintain regs pointer globally rather than passing to IRQ handlers
[GitHub/mt8127/android_kernel_alcatel_ttab.git] / drivers / input / keyboard / spitzkbd.c
index c5d03fb77bcb9a364ca16ea075d469425c671950..8b18c009e3e027b42889d3ee8d2827263b393ad4 100644 (file)
@@ -176,7 +176,7 @@ static inline int spitzkbd_get_row_status(int col)
  */
 
 /* Scan the hardware keyboard and push any changes up through the input layer */
-static void spitzkbd_scankeyboard(struct spitzkbd *spitzkbd_data, struct pt_regs *regs)
+static void spitzkbd_scankeyboard(struct spitzkbd *spitzkbd_data)
 {
        unsigned int row, col, rowd;
        unsigned long flags;
@@ -187,8 +187,6 @@ static void spitzkbd_scankeyboard(struct spitzkbd *spitzkbd_data, struct pt_regs
 
        spin_lock_irqsave(&spitzkbd_data->lock, flags);
 
-       input_regs(spitzkbd_data->input, regs);
-
        num_pressed = 0;
        for (col = 0; col < KB_COLS; col++) {
                /*
@@ -239,14 +237,14 @@ static void spitzkbd_scankeyboard(struct spitzkbd *spitzkbd_data, struct pt_regs
 /*
  * spitz keyboard interrupt handler.
  */
-static irqreturn_t spitzkbd_interrupt(int irq, void *dev_id, struct pt_regs *regs)
+static irqreturn_t spitzkbd_interrupt(int irq, void *dev_id)
 {
        struct spitzkbd *spitzkbd_data = dev_id;
 
        if (!timer_pending(&spitzkbd_data->timer)) {
                /** wait chattering delay **/
                udelay(20);
-               spitzkbd_scankeyboard(spitzkbd_data, regs);
+               spitzkbd_scankeyboard(spitzkbd_data);
        }
 
        return IRQ_HANDLED;
@@ -267,7 +265,7 @@ static void spitzkbd_timer_callback(unsigned long data)
  * We debounce the switches and pass them to the input system.
  */
 
-static irqreturn_t spitzkbd_hinge_isr(int irq, void *dev_id, struct pt_regs *regs)
+static irqreturn_t spitzkbd_hinge_isr(int irq, void *dev_id)
 {
        struct spitzkbd *spitzkbd_data = dev_id;
 
@@ -410,7 +408,7 @@ static int __init spitzkbd_probe(struct platform_device *dev)
        for (i = 0; i < SPITZ_KEY_SENSE_NUM; i++) {
                pxa_gpio_mode(spitz_senses[i] | GPIO_IN);
                if (request_irq(IRQ_GPIO(spitz_senses[i]), spitzkbd_interrupt,
-                               SA_INTERRUPT|SA_TRIGGER_RISING,
+                               IRQF_DISABLED|IRQF_TRIGGER_RISING,
                                "Spitzkbd Sense", spitzkbd))
                        printk(KERN_WARNING "spitzkbd: Can't get Sense IRQ: %d!\n", i);
        }
@@ -425,19 +423,19 @@ static int __init spitzkbd_probe(struct platform_device *dev)
        pxa_gpio_mode(SPITZ_GPIO_SWB | GPIO_IN);
 
        request_irq(SPITZ_IRQ_GPIO_SYNC, spitzkbd_interrupt,
-                   SA_INTERRUPT | SA_TRIGGER_RISING | SA_TRIGGER_FALLING,
+                   IRQF_DISABLED | IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING,
                    "Spitzkbd Sync", spitzkbd);
        request_irq(SPITZ_IRQ_GPIO_ON_KEY, spitzkbd_interrupt,
-                   SA_INTERRUPT | SA_TRIGGER_RISING | SA_TRIGGER_FALLING,
+                   IRQF_DISABLED | IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING,
                    "Spitzkbd PwrOn", spitzkbd);
        request_irq(SPITZ_IRQ_GPIO_SWA, spitzkbd_hinge_isr,
-                   SA_INTERRUPT | SA_TRIGGER_RISING | SA_TRIGGER_FALLING,
+                   IRQF_DISABLED | IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING,
                    "Spitzkbd SWA", spitzkbd);
        request_irq(SPITZ_IRQ_GPIO_SWB, spitzkbd_hinge_isr,
-                   SA_INTERRUPT | SA_TRIGGER_RISING | SA_TRIGGER_FALLING,
+                   IRQF_DISABLED | IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING,
                    "Spitzkbd SWB", spitzkbd);
        request_irq(SPITZ_IRQ_GPIO_AK_INT, spitzkbd_hinge_isr,
-                   SA_INTERRUPT | SA_TRIGGER_RISING | SA_TRIGGER_FALLING,
+                   IRQF_DISABLED | IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING,
                    "Spitzkbd HP", spitzkbd);
 
        printk(KERN_INFO "input: Spitz Keyboard Registered\n");