]> Pileus Git - ~andy/linux/blobdiff - drivers/input/keyboard/gpio_keys_polled.c
Input: gpio_keys_polled - switch to using gpio_request_one()
[~andy/linux] / drivers / input / keyboard / gpio_keys_polled.c
index 8c09ce244aa26951dfc9bd33651accc6e3ee30d9..f686fd970553afb12b7d829fa6756c60c5598ee4 100644 (file)
@@ -245,7 +245,6 @@ static int gpio_keys_polled_probe(struct platform_device *pdev)
 
        input = poll_dev->input;
 
-       input->evbit[0] = BIT(EV_KEY);
        input->name = pdev->name;
        input->phys = DRV_NAME"/input0";
        input->dev.parent = &pdev->dev;
@@ -255,6 +254,10 @@ static int gpio_keys_polled_probe(struct platform_device *pdev)
        input->id.product = 0x0001;
        input->id.version = 0x0100;
 
+       __set_bit(EV_KEY, input->evbit);
+       if (pdata->rep)
+               __set_bit(EV_REP, input->evbit);
+
        for (i = 0; i < pdata->nbuttons; i++) {
                struct gpio_keys_button *button = &pdata->buttons[i];
                struct gpio_keys_button_data *bdata = &bdev->data[i];
@@ -267,22 +270,14 @@ static int gpio_keys_polled_probe(struct platform_device *pdev)
                        goto err_free_gpio;
                }
 
-               error = gpio_request(gpio,
-                                    button->desc ? button->desc : DRV_NAME);
+               error = gpio_request_one(gpio, GPIOF_IN,
+                                        button->desc ?: DRV_NAME);
                if (error) {
                        dev_err(dev, "unable to claim gpio %u, err=%d\n",
                                gpio, error);
                        goto err_free_gpio;
                }
 
-               error = gpio_direction_input(gpio);
-               if (error) {
-                       dev_err(dev,
-                               "unable to set direction on gpio %u, err=%d\n",
-                               gpio, error);
-                       goto err_free_gpio;
-               }
-
                bdata->can_sleep = gpio_cansleep(gpio);
                bdata->last_state = -1;
                bdata->threshold = DIV_ROUND_UP(button->debounce_interval,
@@ -328,7 +323,7 @@ err_free_pdata:
        return error;
 }
 
-static int __devexit gpio_keys_polled_remove(struct platform_device *pdev)
+static int gpio_keys_polled_remove(struct platform_device *pdev)
 {
        struct gpio_keys_polled_dev *bdev = platform_get_drvdata(pdev);
        const struct gpio_keys_platform_data *pdata = bdev->pdata;