aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/mfd/max77686-irq.c33
-rw-r--r--drivers/mfd/max77686.c1
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) {