Hi,
On Mon, Aug 22, 2016 at 02:49:15PM +0800, Wenyou Yang wrote:
[...]
+ charger->lbo_gpio = gpiod_get(dev->parent, "active-semi,lbo", GPIOD_IN);
+ if (PTR_ERR(charger->lbo_gpio) == -EPROBE_DEFER) {
+ dev_info(dev, "probe retry requested for gpio \"lbo\"\n");
+ } else if (IS_ERR(charger->lbo_gpio)) {
+ dev_err(dev, "unable to claim gpio \"lbo\"\n");
+ charger->lbo_gpio = NULL;
+ }
+
+ ret = devm_request_irq(dev, gpiod_to_irq(charger->lbo_gpio),
+ act8945a_status_changed,
+ (IRQF_TRIGGER_FALLING | IRQF_TRIGGER_RISING),
+ "act8945a_lbo_detect", charger);
+ if (ret)
+ dev_info(dev, "failed to request gpio \"lbo\" IRQ\n");
that does not work, since you need to release the irq before
releasing the gpio. So if the gpio is not requested via devm_
than you can't request the irq via devm_ (actually you can by
using devm_free_irq in remove(), but then you can also drop
the devm_ alltogether).
[...]
-- Sebastian