From 730f094df8ffc337ca5db1d9d6302cbfc5243767 Mon Sep 17 00:00:00 2001 From: Yadwinder Singh Brar Date: Mon, 9 Jul 2012 13:21:45 +0200 Subject: [PATCH] --- yaml --- r: 319752 b: refs/heads/master c: 2b40459b7ee502c970d9f1dcf94dfa4d58ec1d85 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/drivers/mfd/max77686-irq.c | 33 +++++++++++++++++++------------- trunk/drivers/mfd/max77686.c | 1 + 3 files changed, 22 insertions(+), 14 deletions(-) diff --git a/[refs] b/[refs] index fcf39acf77a5..9c11e9e4613b 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 9bdf9b4ec7c8b707cd0d9109d576c4eb69cd84bb +refs/heads/master: 2b40459b7ee502c970d9f1dcf94dfa4d58ec1d85 diff --git a/trunk/drivers/mfd/max77686-irq.c b/trunk/drivers/mfd/max77686-irq.c index 0758fac0c447..cdc3280e2ec7 100644 --- a/trunk/drivers/mfd/max77686-irq.c +++ b/trunk/drivers/mfd/max77686-irq.c @@ -252,21 +252,28 @@ int max77686_irq_init(struct max77686_dev *max77686) mutex_init(&max77686->irqlock); - max77686->irq = gpio_to_irq(max77686->irq_gpio); - - if (debug_mask & MAX77686_DEBUG_IRQ_INT) { - ret = gpio_request(max77686->irq_gpio, "pmic_irq"); - if (ret < 0) { - dev_err(max77686->dev, - "Failed to request gpio %d with ret: %d\n", - max77686->irq_gpio, ret); - return IRQ_NONE; + if (max77686->irq_gpio && !max77686->irq) { + max77686->irq = gpio_to_irq(max77686->irq_gpio); + + if (debug_mask & MAX77686_DEBUG_IRQ_INT) { + ret = gpio_request(max77686->irq_gpio, "pmic_irq"); + if (ret < 0) { + dev_err(max77686->dev, + "Failed to request gpio %d with ret:" + "%d\n", max77686->irq_gpio, ret); + return IRQ_NONE; + } + + gpio_direction_input(max77686->irq_gpio); + val = gpio_get_value(max77686->irq_gpio); + gpio_free(max77686->irq_gpio); + pr_info("%s: gpio_irq=%x\n", __func__, val); } + } - gpio_direction_input(max77686->irq_gpio); - val = gpio_get_value(max77686->irq_gpio); - gpio_free(max77686->irq_gpio); - pr_info("%s: gpio_irq=%x\n", __func__, val); + if (!max77686->irq) { + dev_err(max77686->dev, "irq is not specified\n"); + return -ENODEV; } /* Mask individual interrupt sources */ diff --git a/trunk/drivers/mfd/max77686.c b/trunk/drivers/mfd/max77686.c index 9e7e1d30f25f..c66639d681e9 100644 --- a/trunk/drivers/mfd/max77686.c +++ b/trunk/drivers/mfd/max77686.c @@ -77,6 +77,7 @@ static int max77686_i2c_probe(struct i2c_client *i2c, max77686->wakeup = pdata->wakeup; max77686->irq_gpio = pdata->irq_gpio; + max77686->irq = i2c->irq; if (regmap_read(max77686->regmap, MAX77686_REG_DEVICE_ID, &data) < 0) {