aux/acpi: connect EC region handler, fixes battery status on eeepc 1000px (thanks Peter Kosyh)
This commit is contained in:
parent
2968225196
commit
878911b628
1 changed files with 36 additions and 0 deletions
|
@ -84,6 +84,41 @@ Dfile dfile[] = {
|
||||||
{{Qctl}, "ctl", 0666, ctlread, ctlwrite},
|
{{Qctl}, "ctl", 0666, ctlread, ctlwrite},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static char*
|
||||||
|
eisaid(void *v)
|
||||||
|
{
|
||||||
|
static char id[8];
|
||||||
|
ulong b, l;
|
||||||
|
int i;
|
||||||
|
|
||||||
|
if(amltag(v) == 's')
|
||||||
|
return v;
|
||||||
|
b = amlint(v);
|
||||||
|
for(l = 0, i=24; i>=0; i -= 8, b >>= 8)
|
||||||
|
l |= (b & 0xFF) << i;
|
||||||
|
id[7] = 0;
|
||||||
|
for(i=6; i>=3; i--, l >>= 4)
|
||||||
|
id[i] = "0123456789ABCDEF"[l & 0xF];
|
||||||
|
for(i=2; i>=0; i--, l >>= 5)
|
||||||
|
id[i] = '@' + (l & 0x1F);
|
||||||
|
return id;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int
|
||||||
|
enumec(void *dot, void *)
|
||||||
|
{
|
||||||
|
void *p;
|
||||||
|
char *id;
|
||||||
|
id = eisaid(amlval(amlwalk(dot, "^_HID")));
|
||||||
|
if (id == nil || strcmp(id, "PNP0C09") != 0)
|
||||||
|
return 1;
|
||||||
|
p = amlwalk(dot, "^_REG");
|
||||||
|
if (p != nil) {
|
||||||
|
amleval(p, "ii", 0x3, 1, nil);
|
||||||
|
}
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
enumbat(void *dot, void *)
|
enumbat(void *dot, void *)
|
||||||
{
|
{
|
||||||
|
@ -501,6 +536,7 @@ threadmain(int argc, char **argv)
|
||||||
}
|
}
|
||||||
close(fd);
|
close(fd);
|
||||||
|
|
||||||
|
amlenum(amlroot, "_HID", enumec, nil);
|
||||||
amlenum(amlroot, "_BIF", enumbat, nil);
|
amlenum(amlroot, "_BIF", enumbat, nil);
|
||||||
amlenum(amlroot, "_PSL", enumtmp, nil);
|
amlenum(amlroot, "_PSL", enumtmp, nil);
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue