Andy Green wrote:
Somebody in the thread at some point said:
|
|
| Andy Green wrote:
|> Somebody in the thread at some point said:
|>
|> | I've noticed something else that looks like it could be an hardware
|> | issue. LEDs are not able to be lit when you are in suspend mode. This
|> | means you can't indicate a charge if you are plugged in and
suspended.
|> | I can set this capability in my application, but it isn't default
|> behavior.
|>
|> There shouldn't be a hardware issue with LED state surviving suspend if
|> we wanted it in the LED suspend function. CPU defines the GPIO will
|> hold its state during suspend.
|>
| Do I have to modify the led class to support this? Is there some
| standard way to export an interface for this? It would be really nice to
| be able to setup the LEDs (at least some of them) so that they stay on
| while in suspend.
Yes it's in the class stuff I think ---->
...
| Yes, but if, for example, I setup an LED to indicate a message is
| waiting or the phone is charging and then I initiate a RAM suspend, then
| the light goes out until I wake from an event.
It comes from this in ./drivers/leds/led-class.c I guess
/**
~ * led_classdev_suspend - suspend an led_classdev.
~ * @led_cdev: the led_classdev to suspend.
~ */
void led_classdev_suspend(struct led_classdev *led_cdev)
{
led_cdev->flags |= LED_SUSPENDED;
led_cdev->brightness_set(led_cdev, 0); <======
}
EXPORT_SYMBOL_GPL(led_classdev_suspend);
If you go around that, the CPU will keep whatever GPIO states you had on
entry to suspend no problem.
But there is an argument that sticking LEDs on in suspend is not good,
it can violate user expectation about battery life while in suspend (ie,
halve it). And currently entry to suspend is a user action, he can
notice LED lit at that time; again currently by definition the
notificaton cannot be started to be displayed during the time the CPU is
suspended either... but it can be shown quickly on wake when the user is
definitely attending to it.
-Andy
In my application, suspend is not a user action. It occurs when there is
no event within a specified period of time. Just like any modern screen
saver. I didn't realize that LEDs were so power hungry. But I would like
to essentially prevent them from suspending when I am plugged into
power. How about the timers that they are connected to for a timed
trigger? I'd assume it is an on or off deal when in suspend and no blinking.
Sean