Date: 6 Nov 2008 18:51:57 +0900 From: Akira Funahashi <funa@funa.org> To: FreeBSD-gnats-submit@FreeBSD.org Cc: rpaulo@FreeBSD.org Subject: i386/128639: [PATCH] acpi for ASUS A6F,A3E,A3F,A3N not working Message-ID: <20081106095157.50992.qmail@mail.fun.bio.keio.ac.jp> Resent-Message-ID: <200811061020.mA6AK12P020855@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
>Number: 128639 >Category: i386 >Synopsis: [PATCH] acpi for ASUS A6F,A3E,A3F,A3N not working >Confidential: no >Severity: non-critical >Priority: low >Responsible: freebsd-i386 >State: open >Quarter: >Keywords: >Date-Required: >Class: change-request >Submitter-Id: current-users >Arrival-Date: Thu Nov 06 10:20:01 UTC 2008 >Closed-Date: >Last-Modified: >Originator: Akira Funahashi >Release: FreeBSD 7.0-RELEASE i386 >Organization: >Environment: System: FreeBSD ochibi 7.0-RELEASE FreeBSD 7.0-RELEASE #0: Fri Dec 28 14:42:51 JST 2007 root@ochibi:/usr/obj/usr/src/sys/OCHIBI i386 >Description: Acpi for ASUS A6F, A3E, A3F won't work due to the fact that the current acpi_asus.c doesn't have an entry for above configuration. >How-To-Repeat: # kldload acpi_asus acpi_asus0: Unsupported Asus laptop: A6F >Fix: I've created a patch for 7.0-RELEASE which will support ASUS A3E, A3F and A6F. This patch also includes some fix to A3N, which seems to be not working for hw.acpi.asus.lcd_brightness. This patch also includes EeePC support, which already included in the source tree. --- acpi_asus.c.diff begins here --- --- 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; --- acpi_asus.c.diff ends here --- >Release-Note: >Audit-Trail: >Unformatted:
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20081106095157.50992.qmail>