misc/128634: patch for acpi asus a6f laptop isn't in official repo
Marcin Nowak
marcin.nowak at simplusnet.pl
Thu Nov 6 00:30:06 PST 2008
>Number: 128634
>Category: misc
>Synopsis: patch for acpi asus a6f laptop isn't in official repo
>Confidential: no
>Severity: non-critical
>Priority: low
>Responsible: freebsd-bugs
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: update
>Submitter-Id: current-users
>Arrival-Date: Thu Nov 06 08:30:05 UTC 2008
>Closed-Date:
>Last-Modified:
>Originator: Marcin Nowak
>Release: FreeBSD-CURRENT
>Organization:
n/a
>Environment:
>Description:
Hi
Some time ago I have reported request for acpi support my asus a6f
laptop, and I got the patch from someone on this mailing-list. Patch
(*.diff file) works fine so, why isn't in official cvs repo yet? :)
Patch in attachment
>How-To-Repeat:
>Fix:
Patch attached with submission follows:
--- acpi_asus.c.dist 2007-06-03 06:10:00.000000000 +0900
+++ acpi_asus.c 2008-04-15 22:47:29.000000000 +0900
@@ -146,16 +146,39 @@
.disp_set = "SDSP"
},
{
+ .name = "A3E",
+ .mled_set = "MLED",
+ .wled_set = "WLED",
+ .lcd_get = "\\_SB.PCI0.SBRG.EC0.RPIN(0x67)",
+ .lcd_set = "\\_SB.PCI0.SBRG.EC0._Q10",
+ .brn_get = "GPLV",
+ .brn_set = "SPLV",
+ .disp_get = "\\_SB.PCI0.P0P2.VGA.GETD",
+ .disp_set = "SDSP"
+ },
+ {
+ .name = "A3F",
+ .mled_set = "MLED",
+ .wled_set = "WLED",
+ .bled_set = "BLED",
+ .lcd_get = "\\_SB.PCI0.SBRG.EC0.RPIN(0x11)",
+ .lcd_set = "\\_SB.PCI0.SBRG.EC0._Q10",
+ .brn_get = "GPLV",
+ .brn_set = "SPLV",
+ .disp_get = "\\SSTE",
+ .disp_set = "SDSP"
+ },
+ {
.name = "A3N",
.mled_set = "MLED",
.bled_set = "BLED",
.wled_set = "WLED",
- .lcd_get = NULL,
+ .lcd_get = "\\BKLT",
.lcd_set = "\\_SB.PCI0.SBRG.EC0._Q10",
+ .brn_get = "GPLV",
.brn_set = "SPLV",
- .brn_get = "SDSP",
- .disp_set = "SDSP",
- .disp_get = "\\_SB.PCI0.P0P3.VGA.GETD"
+ .disp_get = "\\_SB.PCI0.P0P3.VGA.GETD",
+ .disp_set = "SDSP"
},
{
.name = "A4D",
@@ -354,6 +377,20 @@
{ .name = NULL }
};
+/*
+ * EeePC have an Asus ASUS010 gadget interface,
+ * but they can't be probed quite the same way as Asus laptops.
+ */
+static struct acpi_asus_model acpi_eeepc_models[] = {
+ {
+ .name = "EEE",
+ .brn_get = "\\_SB.ATKD.PBLG",
+ .brn_set = "\\_SB.ATKD.PBLS"
+ },
+
+ { .name = NULL }
+};
+
static struct {
char *name;
char *description;
@@ -423,13 +460,17 @@
ACPI_BUFFER Buf;
ACPI_OBJECT Arg, *Obj;
ACPI_OBJECT_LIST Args;
- static char *asus_ids[] = { "ATK0100", NULL };
+ static char *asus_ids[] = { "ATK0100", "ASUS010", NULL };
+ char *rstr;
ACPI_FUNCTION_TRACE((char *)(uintptr_t)__func__);
- if (acpi_disabled("asus") ||
- ACPI_ID_PROBE(device_get_parent(dev), dev, asus_ids) == NULL)
+ if (acpi_disabled("asus"))
return (ENXIO);
+ rstr = ACPI_ID_PROBE(device_get_parent(dev), dev, asus_ids);
+ if (rstr == NULL) {
+ return (ENXIO);
+ }
sc = device_get_softc(dev);
sc->dev = dev;
@@ -468,6 +509,14 @@
AcpiOsFree(Buf.Pointer);
return (0);
}
+
+ /* if EeePC */
+ if(strncmp("ASUS010", rstr, 7) == 0) {
+ sc->model = &acpi_eeepc_models[0];
+ device_set_desc(dev, "ASUS EeePC");
+ AcpiOsFree(Buf.Pointer);
+ return (0);
+ }
}
sb = sbuf_new(NULL, NULL, 0, SBUF_AUTOEXTEND);
@@ -511,6 +560,9 @@
else if (strncmp(model->name, "A2x", 3) == 0 &&
strncmp(Obj->String.Pointer, "A2", 2) == 0)
goto good;
+ else if (strncmp(model->name, "A3F", 3) == 0 &&
+ strncmp(Obj->String.Pointer, "A6F", 3) == 0)
+ goto good;
else if (strncmp(model->name, "D1x", 3) == 0 &&
strncmp(Obj->String.Pointer, "D1", 2) == 0)
goto good;
>Release-Note:
>Audit-Trail:
>Unformatted:
More information about the freebsd-bugs
mailing list