On Sat, Oct 31, 2020 at 06:11:44PM +0800, Zhang Qilong wrote: > pm_runtime_get_sync() will increment pm usage at first and it > will resume the device later. If runtime of the device is > active or has error(else....), resume operation will fail. That's not a correct description; pm_runtime_get_sync() returns positive if the device was already active and that's not a failure (there's nothing to resume). Please fix up when resending. > If > we do not call put operation to decrease the reference, the > result is that this device cannot enter the idle state and > always stay busy or other non-idle state. > > Fixes: 249fa8217b846 ("USB: Add driver to control USB fast charge for iOS devices") > Signed-off-by: Zhang Qilong <zhangqilong3@xxxxxxxxxx> > --- > drivers/usb/misc/apple-mfi-fastcharge.c | 4 +++- > 1 file changed, 3 insertions(+), 1 deletion(-) > > diff --git a/drivers/usb/misc/apple-mfi-fastcharge.c b/drivers/usb/misc/apple-mfi-fastcharge.c > index b403094a6b3a..9e1ad4536e36 100644 > --- a/drivers/usb/misc/apple-mfi-fastcharge.c > +++ b/drivers/usb/misc/apple-mfi-fastcharge.c > @@ -120,8 +120,10 @@ static int apple_mfi_fc_set_property(struct power_supply *psy, > dev_dbg(&mfi->udev->dev, "prop: %d\n", psp); > > ret = pm_runtime_get_sync(&mfi->udev->dev); > - if (ret < 0) > + if (ret < 0) { > + pm_runtime_put_noidle(&mfi->udev->dev); > return ret; > + } > > switch (psp) { > case POWER_SUPPLY_PROP_CHARGE_TYPE: Johan