Merge tag 'char-misc-4.2-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh...
[deliverable/linux.git] / drivers / gpio / gpio-max732x.c
index 0fa4543c5e02505871a2f1e3bfef6cb840d94e47..aed4ca9338bca1e15d8a3052438d68635661e01e 100644 (file)
@@ -429,6 +429,14 @@ static int max732x_irq_set_type(struct irq_data *d, unsigned int type)
        return 0;
 }
 
+static int max732x_irq_set_wake(struct irq_data *data, unsigned int on)
+{
+       struct max732x_chip *chip = irq_data_get_irq_chip_data(data);
+
+       irq_set_irq_wake(chip->client->irq, on);
+       return 0;
+}
+
 static struct irq_chip max732x_irq_chip = {
        .name                   = "max732x",
        .irq_mask               = max732x_irq_mask,
@@ -436,6 +444,7 @@ static struct irq_chip max732x_irq_chip = {
        .irq_bus_lock           = max732x_irq_bus_lock,
        .irq_bus_sync_unlock    = max732x_irq_bus_sync_unlock,
        .irq_set_type           = max732x_irq_set_type,
+       .irq_set_wake           = max732x_irq_set_wake,
 };
 
 static uint8_t max732x_irq_pending(struct max732x_chip *chip)
@@ -507,12 +516,10 @@ static int max732x_irq_setup(struct max732x_chip *chip,
                chip->irq_features = has_irq;
                mutex_init(&chip->irq_lock);
 
-               ret = devm_request_threaded_irq(&client->dev,
-                                       client->irq,
-                                       NULL,
-                                       max732x_irq_handler,
-                                       IRQF_TRIGGER_FALLING | IRQF_ONESHOT,
-                                       dev_name(&client->dev), chip);
+               ret = devm_request_threaded_irq(&client->dev, client->irq,
+                               NULL, max732x_irq_handler, IRQF_ONESHOT |
+                               IRQF_TRIGGER_FALLING | IRQF_SHARED,
+                               dev_name(&client->dev), chip);
                if (ret) {
                        dev_err(&client->dev, "failed to request irq %d\n",
                                client->irq);
@@ -521,7 +528,7 @@ static int max732x_irq_setup(struct max732x_chip *chip,
                ret =  gpiochip_irqchip_add(&chip->gpio_chip,
                                            &max732x_irq_chip,
                                            irq_base,
-                                           handle_edge_irq,
+                                           handle_simple_irq,
                                            IRQ_TYPE_NONE);
                if (ret) {
                        dev_err(&client->dev,
This page took 0.027407 seconds and 5 git commands to generate.