AC Power handling broken for desktops
Olaf Hering
olh at suse.de
Fri Aug 26 21:38:27 EST 2005
On Thu, Aug 25, Benjamin Herrenschmidt wrote:
> On Thu, 2005-08-25 at 07:15 +0200, Olaf Hering wrote:
> > On Thu, Aug 25, Benjamin Herrenschmidt wrote:
> >
> > > Not sure :) I don't fully know how to decode those power things in the
> > > device-tree... There are bits in darwin tho.
> >
> > Maybe just check for !PowerBook and force PMU_PWR_AC_PRESENT in this case.
>
> Yah, you can check that with pmac_feature, there is a "mobile" flag.
Its not obvious how to get to that flag. Is this patch acceptable?
No batteries present should mean AC Power == 1.
drivers/macintosh/apm_emu.c | 8 ++++++--
1 files changed, 6 insertions(+), 2 deletions(-)
Index: linux-2.6.13-rc7-ac-power/drivers/macintosh/apm_emu.c
===================================================================
--- linux-2.6.13-rc7-ac-power.orig/drivers/macintosh/apm_emu.c
+++ linux-2.6.13-rc7-ac-power/drivers/macintosh/apm_emu.c
@@ -430,8 +430,8 @@ static int apm_emu_get_info(char *buf, c
-1: Unknown
8) min = minutes; sec = seconds */
- unsigned short ac_line_status = 0xff;
- unsigned short battery_status = 0xff;
+ unsigned short ac_line_status;
+ unsigned short battery_status = 0;
unsigned short battery_flag = 0xff;
int percentage = -1;
int time_units = -1;
@@ -446,6 +446,7 @@ static int apm_emu_get_info(char *buf, c
ac_line_status = ((pmu_power_flags & PMU_PWR_AC_PRESENT) != 0);
for (i=0; i<pmu_battery_count; i++) {
if (pmu_batteries[i].flags & PMU_BATT_PRESENT) {
+ battery_status++;
if (percentage < 0)
percentage = 0;
if (charge < 0)
@@ -461,6 +462,9 @@ static int apm_emu_get_info(char *buf, c
charging++;
}
}
+ if (0 == battery_status)
+ ac_line_status = 1;
+ battery_status = 0xff;
if (real_count) {
if (amperage < 0) {
if (btype == PMU_BATT_TYPE_SMART)
More information about the Linuxppc-dev
mailing list