From funa@funa.org  Thu Nov  6 10:18:40 2008
Return-Path: <funa@funa.org>
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id 479261065679
	for <FreeBSD-gnats-submit@freebsd.org>; Thu,  6 Nov 2008 10:18:40 +0000 (UTC)
	(envelope-from funa@funa.org)
Received: from mail.fun.bio.keio.ac.jp (ns.fun.bio.keio.ac.jp [131.113.63.81])
	by mx1.freebsd.org (Postfix) with SMTP id DCB6B8FC29
	for <FreeBSD-gnats-submit@freebsd.org>; Thu,  6 Nov 2008 10:18:39 +0000 (UTC)
	(envelope-from funa@funa.org)
Received: (qmail 50993 invoked by uid 11960); 6 Nov 2008 09:51:57 -0000
Message-Id: <20081106095157.50992.qmail@mail.fun.bio.keio.ac.jp>
Date: 6 Nov 2008 18:51:57 +0900
From: Akira Funahashi <funa@funa.org>
Reply-To: Akira Funahashi <funa@funa.org>
To: FreeBSD-gnats-submit@freebsd.org
Cc: rpaulo@freebsd.org
Subject: [PATCH] acpi for ASUS A6F,A3E,A3F,A3N not working 
X-Send-Pr-Version: 3.113
X-GNATS-Notify:

>Number:         128639
>Category:       kern
>Synopsis:       [patch] [acpi_asus] acpi for ASUS A6F,A3E,A3F,A3N not working
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    freebsd-acpi
>State:          closed
>Quarter:        
>Keywords:       
>Date-Required:  
>Class:          change-request
>Submitter-Id:   current-users
>Arrival-Date:   Thu Nov 06 10:20:01 UTC 2008
>Closed-Date:    Sun Sep 19 08:55:27 UTC 2010
>Last-Modified:  Sun Sep 19 08:55:27 UTC 2010
>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:
Responsible-Changed-From-To: freebsd-i386->freebsd-acpi 
Responsible-Changed-By: gavin 
Responsible-Changed-When: Thu Nov 6 12:26:08 UTC 2008 
Responsible-Changed-Why:  
Over to maintainer(s) 

http://www.freebsd.org/cgi/query-pr.cgi?pr=128639 
State-Changed-From-To: open->feedback 
State-Changed-By: rpaulo 
State-Changed-When: Sun Jun 21 14:04:34 UTC 2009 
State-Changed-Why:  
Can you try a more recent FreeBSD version, please? 

http://www.freebsd.org/cgi/query-pr.cgi?pr=128639 
State-Changed-From-To: feedback->closed 
State-Changed-By: jh 
State-Changed-When: Sun Sep 19 08:53:58 UTC 2010 
State-Changed-Why:  
Feedback timeout. This has been possibly fixed already. See also 
kern/128634. 

http://www.freebsd.org/cgi/query-pr.cgi?pr=128639 
>Unformatted:
