Commit 45ce36f5 authored by Krzysztof Kozlowski's avatar Krzysztof Kozlowski Committed by Chanwoo Choi
Browse files

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: default avatarKrzysztof Kozlowski <krzk@kernel.org>
Reviewed-by: default avatarVijai Kumar K <vijaikumar.kanagarajan@gmail.com>
Signed-off-by: default avatarChanwoo Choi <cw00.choi@samsung.com>
parent 6aaad58c
Loading
Loading
Loading
Loading
+18 −15
Original line number Diff line number Diff line
@@ -239,11 +239,6 @@ static int ptn5150_i2c_probe(struct i2c_client *i2c,

	info->dev = &i2c->dev;
	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);
	if (IS_ERR(info->vbus_gpiod)) {
		dev_err(dev, "failed to get VBUS GPIO\n");
@@ -267,12 +262,21 @@ static int ptn5150_i2c_probe(struct i2c_client *i2c,
		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);
		if (info->irq < 0) {
			dev_err(dev, "failed to get INTB IRQ\n");
			return info->irq;
		}
	}

	ret = devm_request_threaded_irq(dev, info->irq, NULL,
					ptn5150_irq_handler,
@@ -283,7 +287,6 @@ static int ptn5150_i2c_probe(struct i2c_client *i2c,
		dev_err(dev, "failed to request handler for INTB IRQ\n");
		return ret;
	}
	}

	/* Allocate extcon device */
	info->edev = devm_extcon_dev_allocate(info->dev, ptn5150_extcon_cable);