Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

mfd: Allow to specify max77686 interrupt through DT or platform file also

Presently driver expects irq_gpio pin in platform data and maps it to irq
itself. But we can also directly specify the interrupt in DT or platform file.

Signed-off-by: Yadwinder Singh Brar <yadi.brar@samsung.com>
Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>

authored by

Yadwinder Singh Brar and committed by
Samuel Ortiz
2b40459b 9bdf9b4e

+20 -12
+19 -12
drivers/mfd/max77686-irq.c
··· 252 252 253 253 mutex_init(&max77686->irqlock); 254 254 255 - max77686->irq = gpio_to_irq(max77686->irq_gpio); 255 + if (max77686->irq_gpio && !max77686->irq) { 256 + max77686->irq = gpio_to_irq(max77686->irq_gpio); 256 257 257 - if (debug_mask & MAX77686_DEBUG_IRQ_INT) { 258 - ret = gpio_request(max77686->irq_gpio, "pmic_irq"); 259 - if (ret < 0) { 260 - dev_err(max77686->dev, 261 - "Failed to request gpio %d with ret: %d\n", 262 - max77686->irq_gpio, ret); 263 - return IRQ_NONE; 258 + if (debug_mask & MAX77686_DEBUG_IRQ_INT) { 259 + ret = gpio_request(max77686->irq_gpio, "pmic_irq"); 260 + if (ret < 0) { 261 + dev_err(max77686->dev, 262 + "Failed to request gpio %d with ret:" 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); 267 - val = gpio_get_value(max77686->irq_gpio); 268 - gpio_free(max77686->irq_gpio); 269 - pr_info("%s: gpio_irq=%x\n", __func__, val); 274 + if (!max77686->irq) { 275 + dev_err(max77686->dev, "irq is not specified\n"); 276 + return -ENODEV; 270 277 } 271 278 272 279 /* Mask individual interrupt sources */
+1
drivers/mfd/max77686.c
··· 77 77 78 78 max77686->wakeup = pdata->wakeup; 79 79 max77686->irq_gpio = pdata->irq_gpio; 80 + max77686->irq = i2c->irq; 80 81 81 82 if (regmap_read(max77686->regmap, 82 83 MAX77686_REG_DEVICE_ID, &data) < 0) {