diff options
author | Richard Purdie <rpurdie@rpsys.net> | 2005-11-10 17:42:29 +0000 |
---|---|---|
committer | Russell King <rmk+kernel@arm.linux.org.uk> | 2005-11-10 17:42:29 +0000 |
commit | 078abcf95cdb95c78d786dbc61ae3c22ee70fb61 (patch) | |
tree | fec0579ccb61371019248eee68c624734c8533d2 /drivers/video/backlight | |
parent | b1faebb672edecf48d4745fb05eeca3c704b6823 (diff) | |
download | blackbird-op-linux-078abcf95cdb95c78d786dbc61ae3c22ee70fb61.tar.gz blackbird-op-linux-078abcf95cdb95c78d786dbc61ae3c22ee70fb61.zip |
[ARM] 3096/1: Add SharpSL Zaurus power and battery management core driver
Patch from Richard Purdie
This patch adds a power and battery management core driver which with
the addition of the right device files, supports the c7x0 and cxx00
series of Sharp Zaurus handhelds.
The driver is complex for several reasons. Battery charging is manually
monitored and controlled. When suspended, the device needs to
periodically partially resume, check the charging status and then
re-suspend. It does without bothering the higher linux layers as
a full resume and re-suspend is unnecessary. The code is carefully
written to avoid interrupts or calling code outside the module under
these circumstances. It also vets the various wake up sources and
monitors the device's power situation.
Hooks to limit the backlight intensity and to notify the battery
monitoring code of backlight events are connected/added as the
backlight is one of the biggest users of power on the device.
Signed-off-by: Richard Purdie <rpurdie@rpsys.net>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Diffstat (limited to 'drivers/video/backlight')
-rw-r--r-- | drivers/video/backlight/corgi_bl.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/drivers/video/backlight/corgi_bl.c b/drivers/video/backlight/corgi_bl.c index 4867498f68e8..bd9a6996aee7 100644 --- a/drivers/video/backlight/corgi_bl.c +++ b/drivers/video/backlight/corgi_bl.c @@ -48,6 +48,12 @@ static void corgibl_send_intensity(int intensity) corgibl_mach_set_intensity(intensity); spin_unlock_irqrestore(&bl_lock, flags); + + corgi_kick_batt = symbol_get(sharpsl_battery_kick); + if (corgi_kick_batt) { + corgi_kick_batt(); + symbol_put(sharpsl_battery_kick); + } } static void corgibl_blank(int blank) |