Re: [PATCH v7 4/4] iio: light: veml6031x00: add support for events and trigger
Andy Shevchenko <[email protected]>
| Newsgroups | org.kernel.vger.linux-iio,org.kernel.vger.linux-devicetree,org.kernel.vger.linux-kernel |
|---|---|
| Organization | Intel Finland Oy - BIC 0357606-4 - c/o Alberga Business Park, 6 krs, Bertel Jungin Aukio 5, 02600 Espoo |
| Message-ID | <[email protected]> |
On Wed, Aug 19, 2026 at 08:33:30PM +0200, Javier Carrasco wrote: > On Wed Aug 19, 2026 at 6:42 AM CEST, Andy Shevchenko wrote: > > On Tue, Aug 18, 2026 at 06:10:51PM +0200, Javier Carrasco wrote: > >> On Tue Aug 18, 2026 at 4:01 PM CEST, Andy Shevchenko wrote: ... > >> >> + ret = pm_runtime_get_if_active(dev); > >> >> + if (ret <= 0) > >> > > >> > < 0 seems too much to me. If there is disabled runtime PM (and supposedly > >> > device is always on) this prevents from getting events. > >> > >> I am not sure if I get this. A reference is unconditionally acquired > >> when events are enabled as well as in buffer_preenable, and also in the > >> probe before interrupts are enabled. Runtime PM should be active at this > >> point. If not, the interrupt should not come from the device, even if it > >> was on (e.g. before autosuspend kicks in). But maybe I am missing > >> something? > > > > The device maybe in these states here: > > - powered off (by runtime PM) ret == 0 > > - powered on (by some previous activity) ret > 0 > > - always on (PM is disabled by user space, for example) ret < 0 > > > > Are you telling that the third case is impossible? (Note that autosuspend in > > this case is irrelevant.) > > I followed the execution paths and the third case seems to be impossible. Thanks for checking this! > Setting power/control to "on" calls pm_runtime_forbid()[1], which sets > runtime_auto to false and increments the usage counter. Note that it does > not update disable_depth, which is the variable that pm_runtime_disable() > updates and what pm_runtime_get_if_active() checks to return -EINVAL if > runtime PM is disabled. Therefore, pm_runtime_get_if_active() should > return a positive value under this configuration. Would it be possible to have negative value at all from pm_runtime_get_if_active() here? -- With Best Regards, Andy Shevchenko