Please test this patch on your machine.

If brightness worked in the passed, does it still work for you now?

Do you see acpiasus(4) attaching in the dmesg?
If not, please paste me the "ASUS? dev foobar" line from your dmesg.

If I get no reports or no regressions with this diff, I'd like to commit
it around the end of next week (or even sooner depending on the feedback
I get).
This fixes an acpivideo(4) panic on boot-up on Asus X52F.

Index: acpi.c
===================================================================
RCS file: /cvs/src/sys/dev/acpi/acpi.c,v
retrieving revision 1.233
diff -u -p -r1.233 acpi.c
--- acpi.c      24 May 2012 19:59:22 -0000      1.233
+++ acpi.c      7 Jul 2012 18:56:13 -0000
@@ -99,6 +99,7 @@ void  acpi_pbtn_task(void *, int);
 
 int    acpi_thinkpad_enabled;
 int    acpi_toshiba_enabled;
+int    acpi_asus_enabled;
 int    acpi_saved_spl;
 int    acpi_saved_boothowto;
 int    acpi_enabled;
@@ -793,7 +794,8 @@ acpi_attach(struct device *parent, struc
        aml_find_node(&aml_root, "GBRT", acpi_foundsony, sc);
 
        /* attach video only if this is not a stinkpad or toshiba */
-       if (!acpi_thinkpad_enabled && !acpi_toshiba_enabled)
+       if (!acpi_thinkpad_enabled && !acpi_toshiba_enabled &&
+           !acpi_asus_enabled)
                aml_find_node(&aml_root, "_DOS", acpi_foundvideo, sc);
 
        /* create list of devices we want to query when APM come in */
@@ -2339,6 +2341,7 @@ acpi_foundhid(struct aml_node *node, voi
        aaa.aaa_node = node->parent;
        aaa.aaa_dev = dev;
 
+       printf ("ASUS? dev %s\n", dev);
        if (!strcmp(dev, ACPI_DEV_AC))
                aaa.aaa_name = "acpiac";
        else if (!strcmp(dev, ACPI_DEV_CMB))
@@ -2347,9 +2350,10 @@ acpi_foundhid(struct aml_node *node, voi
            !strcmp(dev, ACPI_DEV_PBD) ||
            !strcmp(dev, ACPI_DEV_SBD))
                aaa.aaa_name = "acpibtn";
-       else if (!strcmp(dev, ACPI_DEV_ASUS))
+       else if (!strcmp(dev, ACPI_DEV_ASUS) || !strcmp(dev, ACPI_DEV_ASUS1)) {
                aaa.aaa_name = "acpiasus";
-       else if (!strcmp(dev, ACPI_DEV_IBM) ||
+               acpi_asus_enabled = 1;
+       } else if (!strcmp(dev, ACPI_DEV_IBM) ||
            !strcmp(dev, ACPI_DEV_LENOVO)) {
                aaa.aaa_name = "acpithinkpad";
                acpi_thinkpad_enabled = 1;
Index: acpireg.h
===================================================================
RCS file: /cvs/src/sys/dev/acpi/acpireg.h,v
retrieving revision 1.27
diff -u -p -r1.27 acpireg.h
--- acpireg.h   7 Jan 2012 20:13:17 -0000       1.27
+++ acpireg.h   7 Jul 2012 18:56:14 -0000
@@ -735,6 +735,7 @@ struct acpi_ivrs {
 #define ACPI_DEV_THZ   "THERMALZONE"   /* Thermal Zone */
 #define ACPI_DEV_FFB   "FIXEDBUTTON"   /* Fixed Feature Button */
 #define ACPI_DEV_ASUS  "ASUS010"       /* ASUS Hotkeys */
+#define ACPI_DEV_ASUS1 "ATK0100"       /* ASUS Special Device */
 #define ACPI_DEV_IBM   "IBM0068"       /* IBM ThinkPad support */
 #define ACPI_DEV_LENOVO        "LEN0068"       /* Lenovo ThinkPad support */
 #define ACPI_DEV_ASUSAIBOOSTER "ATK0110"       /* ASUSTeK AI Booster */

Reply via email to