Skip to content

Commit

Permalink
eeepc-laptop: get the right value for CMSG
Browse files Browse the repository at this point in the history
CMSG is an ACPI method used to find features available on
an Eee PC. But some features are never repported, even if present.

If the getter of a feature is present, this patch will set
the corresponding bit in cmsg.

Signed-off-by: Corentin Chary <corentincj@iksaif.net>
Signed-off-by: Len Brown <len.brown@intel.com>
  • Loading branch information
Corentin Chary authored and Len Brown committed Jun 26, 2009
1 parent f36509e commit dbfa3ba
Showing 1 changed file with 23 additions and 0 deletions.
23 changes: 23 additions & 0 deletions drivers/platform/x86/eeepc-laptop.c
Original file line number Diff line number Diff line change
Expand Up @@ -553,6 +553,28 @@ static int eeepc_setkeycode(struct input_dev *dev, int scancode, int keycode)
return -EINVAL;
}

static void cmsg_quirk(int cm, const char *name)
{
int dummy;

/* Some BIOSes do not report cm although it is avaliable.
Check if cm_getv[cm] works and, if yes, assume cm should be set. */
if (!(ehotk->cm_supported & (1 << cm))
&& !read_acpi_int(ehotk->handle, cm_getv[cm], &dummy)) {
pr_info("%s (%x) not reported by BIOS,"
" enabling anyway\n", name, 1 << cm);
ehotk->cm_supported |= 1 << cm;
}
}

static void cmsg_quirks(void)
{
cmsg_quirk(CM_ASL_LID, "LID");
cmsg_quirk(CM_ASL_TYPE, "TYPE");
cmsg_quirk(CM_ASL_PANELPOWER, "PANELPOWER");
cmsg_quirk(CM_ASL_TPD, "TPD");
}

static int eeepc_hotk_check(void)
{
const struct key_entry *key;
Expand All @@ -576,6 +598,7 @@ static int eeepc_hotk_check(void)
pr_err("Get control methods supported failed\n");
return -ENODEV;
} else {
cmsg_quirks();
pr_info("Get control methods supported: 0x%x\n",
ehotk->cm_supported);
}
Expand Down

0 comments on commit dbfa3ba

Please sign in to comment.