extcon: ptn5150: Use generic "interrupts" property

Interrupts do not have to be always GPIO based so instead of expecting
"int-gpios" property and converting the GPIO to an interrupt, just
accept any interrupt via generic "interrupts" property.

Keep support for old "int-gpios" for backward compatibility.

Signed-off-by: Krzysztof Kozlowski <krzk@kernel.org>
Reviewed-by: Vijai Kumar K <vijaikumar.kanagarajan@gmail.com>
Signed-off-by: Chanwoo Choi <cw00.choi@samsung.com>
This commit is contained in:
Krzysztof Kozlowski 2020-08-17 09:00:01 +02:00 committed by Chanwoo Choi
parent 6aaad58c87
commit 45ce36f5d2
1 changed files with 18 additions and 15 deletions

View File

@ -239,11 +239,6 @@ static int ptn5150_i2c_probe(struct i2c_client *i2c,
info->dev = &i2c->dev; info->dev = &i2c->dev;
info->i2c = i2c; info->i2c = i2c;
info->int_gpiod = devm_gpiod_get(&i2c->dev, "int", GPIOD_IN);
if (IS_ERR(info->int_gpiod)) {
dev_err(dev, "failed to get INT GPIO\n");
return PTR_ERR(info->int_gpiod);
}
info->vbus_gpiod = devm_gpiod_get(&i2c->dev, "vbus", GPIOD_IN); info->vbus_gpiod = devm_gpiod_get(&i2c->dev, "vbus", GPIOD_IN);
if (IS_ERR(info->vbus_gpiod)) { if (IS_ERR(info->vbus_gpiod)) {
dev_err(dev, "failed to get VBUS GPIO\n"); dev_err(dev, "failed to get VBUS GPIO\n");
@ -267,22 +262,30 @@ static int ptn5150_i2c_probe(struct i2c_client *i2c,
return ret; return ret;
} }
if (info->int_gpiod) { if (i2c->irq > 0) {
info->irq = i2c->irq;
} else {
info->int_gpiod = devm_gpiod_get(&i2c->dev, "int", GPIOD_IN);
if (IS_ERR(info->int_gpiod)) {
dev_err(dev, "failed to get INT GPIO\n");
return PTR_ERR(info->int_gpiod);
}
info->irq = gpiod_to_irq(info->int_gpiod); info->irq = gpiod_to_irq(info->int_gpiod);
if (info->irq < 0) { if (info->irq < 0) {
dev_err(dev, "failed to get INTB IRQ\n"); dev_err(dev, "failed to get INTB IRQ\n");
return info->irq; return info->irq;
} }
}
ret = devm_request_threaded_irq(dev, info->irq, NULL, ret = devm_request_threaded_irq(dev, info->irq, NULL,
ptn5150_irq_handler, ptn5150_irq_handler,
IRQF_TRIGGER_FALLING | IRQF_TRIGGER_FALLING |
IRQF_ONESHOT, IRQF_ONESHOT,
i2c->name, info); i2c->name, info);
if (ret < 0) { if (ret < 0) {
dev_err(dev, "failed to request handler for INTB IRQ\n"); dev_err(dev, "failed to request handler for INTB IRQ\n");
return ret; return ret;
}
} }
/* Allocate extcon device */ /* Allocate extcon device */