Input: rotary-encoder - defer calls gpio_to_irq()
authorDaniel Mack <zonque@gmail.com>
Wed, 1 Aug 2012 05:08:47 +0000 (22:08 -0700)
committerDmitry Torokhov <dmitry.torokhov@gmail.com>
Wed, 22 Aug 2012 05:29:50 +0000 (22:29 -0700)
Don't call gpio_to_irq() on GPIOs before gpio_request() succeeded on
them. This avoids Ooopses with incorrect DT bindings.

Signed-off-by: Daniel Mack <zonque@gmail.com>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
drivers/input/misc/rotary_encoder.c

index f07f784198b9e81139f8ed5a192f17578cdf6c75..00a7bdabb0b3dccd2d2c107ee692727dc72a7629 100644 (file)
@@ -163,8 +163,6 @@ static int __devinit rotary_encoder_probe(struct platform_device *pdev)
 
        encoder->input = input;
        encoder->pdata = pdata;
-       encoder->irq_a = gpio_to_irq(pdata->gpio_a);
-       encoder->irq_b = gpio_to_irq(pdata->gpio_b);
 
        /* create and register the input driver */
        input->name = pdev->name;
@@ -215,6 +213,9 @@ static int __devinit rotary_encoder_probe(struct platform_device *pdev)
                goto exit_free_gpio_a;
        }
 
+       encoder->irq_a = gpio_to_irq(pdata->gpio_a);
+       encoder->irq_b = gpio_to_irq(pdata->gpio_b);
+
        /* request the IRQs */
        if (pdata->half_period) {
                handler = &rotary_encoder_half_period_irq;