Re: [PATCH v3] input: add driver support for Sharp gp2ap002a00fproximity sensor

From: oskar.andero
Date: Wed Nov 16 2011 - 05:36:16 EST


On 19:29 Tue 15 Nov , Dmitry Torokhov wrote:
> On Tue, Nov 15, 2011 at 01:53:52PM +0100, oskar.andero@xxxxxxxxxxxxxxxx wrote:
> > On 10:43 Tue 15 Nov , Dmitry Torokhov wrote:
> > > On Tue, Nov 15, 2011 at 10:26:00AM +0100, oskar.andero@xxxxxxxxxxxxxxxx wrote:
> > > > From: Courtney Cavin <courtney.cavin@xxxxxxxxxxxxxxxx>
> > > > +
> > > > +#ifdef CONFIG_PM_SLEEP
> > > > +static int gp2a_suspend(struct device *dev)
> > > > +{
> > > > + struct i2c_client *client = to_i2c_client(dev);
> > > > + struct gp2a_data *dt = i2c_get_clientdata(client);
> > > > + int error;
> > > > +
> > > > + mutex_lock(&dt->device->mutex);
> > > > +
> > > > + if (dt->device->users) {
> > > > + if (device_may_wakeup(&client->dev)) {
> > > > + enable_irq_wake(client->irq);
> > >
> > > I think this part should happen regardless of whether device has users,
> > > only non wakeup source case needs it.
> >
> > Hmm.. why would one want to enable irq_wake when there are no users?
> > Wouldn't this cause the device to wakeup at every irq and report an
> > switch event that no one listens to?
>
> You are suspending the system and want to have this device as a wakeup
> source. Note: not wake up _device_ at every IRQ but wake up the whole
> _system_ when device generates an IRQ while system is asleep.
> It does not matter whether there are users for the events; you
> want the system to wake up.
>
> At least this is the usual semantics.

I see you point. However, the way we use the proximity sensor we can only wake up
the system when we have an application that is actually interested in the change.
This is for power save reasons.
If we use the "usual semantic", we would wake up the system at every proximity
detection regardlessly. For instance, I wouldn't want to wake up a cell phone laying
on the desk when I put my hand over it. That would hurt the battery time.

-Oskar
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/