diff options
-rw-r--r-- | drivers/mfd/max77686-irq.c | 33 | ||||
-rw-r--r-- | drivers/mfd/max77686.c | 1 |
2 files changed, 21 insertions, 13 deletions
diff --git a/drivers/mfd/max77686-irq.c b/drivers/mfd/max77686-irq.c index 0758fac0c447..cdc3280e2ec7 100644 --- a/drivers/mfd/max77686-irq.c +++ b/drivers/mfd/max77686-irq.c | |||
@@ -252,21 +252,28 @@ int max77686_irq_init(struct max77686_dev *max77686) | |||
252 | 252 | ||
253 | mutex_init(&max77686->irqlock); | 253 | mutex_init(&max77686->irqlock); |
254 | 254 | ||
255 | max77686->irq = gpio_to_irq(max77686->irq_gpio); | 255 | if (max77686->irq_gpio && !max77686->irq) { |
256 | 256 | max77686->irq = gpio_to_irq(max77686->irq_gpio); | |
257 | if (debug_mask & MAX77686_DEBUG_IRQ_INT) { | 257 | |
258 | ret = gpio_request(max77686->irq_gpio, "pmic_irq"); | 258 | if (debug_mask & MAX77686_DEBUG_IRQ_INT) { |
259 | if (ret < 0) { | 259 | ret = gpio_request(max77686->irq_gpio, "pmic_irq"); |
260 | dev_err(max77686->dev, | 260 | if (ret < 0) { |
261 | "Failed to request gpio %d with ret: %d\n", | 261 | dev_err(max77686->dev, |
262 | max77686->irq_gpio, ret); | 262 | "Failed to request gpio %d with ret:" |
263 | return IRQ_NONE; | 263 | "%d\n", max77686->irq_gpio, ret); |
264 | return IRQ_NONE; | ||
265 | } | ||
266 | |||
267 | gpio_direction_input(max77686->irq_gpio); | ||
268 | val = gpio_get_value(max77686->irq_gpio); | ||
269 | gpio_free(max77686->irq_gpio); | ||
270 | pr_info("%s: gpio_irq=%x\n", __func__, val); | ||
264 | } | 271 | } |
272 | } | ||
265 | 273 | ||
266 | gpio_direction_input(max77686->irq_gpio); | 274 | if (!max77686->irq) { |
267 | val = gpio_get_value(max77686->irq_gpio); | 275 | dev_err(max77686->dev, "irq is not specified\n"); |
268 | gpio_free(max77686->irq_gpio); | 276 | return -ENODEV; |
269 | pr_info("%s: gpio_irq=%x\n", __func__, val); | ||
270 | } | 277 | } |
271 | 278 | ||
272 | /* Mask individual interrupt sources */ | 279 | /* Mask individual interrupt sources */ |
diff --git a/drivers/mfd/max77686.c b/drivers/mfd/max77686.c index 9e7e1d30f25f..c66639d681e9 100644 --- a/drivers/mfd/max77686.c +++ b/drivers/mfd/max77686.c | |||
@@ -77,6 +77,7 @@ static int max77686_i2c_probe(struct i2c_client *i2c, | |||
77 | 77 | ||
78 | max77686->wakeup = pdata->wakeup; | 78 | max77686->wakeup = pdata->wakeup; |
79 | max77686->irq_gpio = pdata->irq_gpio; | 79 | max77686->irq_gpio = pdata->irq_gpio; |
80 | max77686->irq = i2c->irq; | ||
80 | 81 | ||
81 | if (regmap_read(max77686->regmap, | 82 | if (regmap_read(max77686->regmap, |
82 | MAX77686_REG_DEVICE_ID, &data) < 0) { | 83 | MAX77686_REG_DEVICE_ID, &data) < 0) { |