> What about just moving the pm_runtime_put() until the end > of the initialization? Right before return 0; > Then we can keep this nice goto exits as they are. > > Maybe move all these three: > > pm_runtime_set_autosuspend_delay(&i2c->dev, > AK8974_AUTOSUSPEND_DELAY); > pm_runtime_use_autosuspend(&i2c->dev); > pm_runtime_put(&i2c->dev); > Good idea! Thank you for your advice and I will fix this in the next version of patch. Regards, Dinghao