i386/152438: patch to acpi_asus(4) to add extra sysctls for ASUS
EeePCs
Yuichiro Goto
y7goto at gmail.com
Sun Nov 21 09:10:08 UTC 2010
>Number: 152438
>Category: i386
>Synopsis: patch to acpi_asus(4) to add extra sysctls for ASUS EeePCs
>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: Sun Nov 21 09:10:07 UTC 2010
>Closed-Date:
>Last-Modified:
>Originator: Yuichiro Goto
>Release: 8.1-RELEASE
>Organization:
FreeBSD user
>Environment:
FreeBSD cobalt2.my.domain 8.1-RELEASE FreeBSD 8.1-RELEASE #0: Sun Nov 21 01:11:08 JST 2010 y7goto at cobalt2.my.domain:/usr/home/y7goto/GENERIC i386
>Description:
Hello,
I added sysctls for turing on/off the LCD backlight and touchpad to acpi_asus(4) for ASUS EeePCs. The attached patch has been only tested on the ASUS EeePC 1015PD, so tests on other models are needed.
>How-To-Repeat:
>Fix:
Patch attached with submission follows:
Index: acpi_asus.c
===================================================================
--- acpi_asus.c (revision 215401)
+++ acpi_asus.c (working copy)
@@ -60,6 +60,7 @@
#define ACPI_ASUS_METHOD_CAMERA 4
#define ACPI_ASUS_METHOD_CARDRD 5
#define ACPI_ASUS_METHOD_WLAN 6
+#define ACPI_ASUS_METHOD_TPD 7
#define _COMPONENT ACPI_OEM
ACPI_MODULE_NAME("ASUS")
@@ -94,6 +95,9 @@
char *wlan_get;
char *wlan_set;
+ char *tpd_get;
+ char *tpd_set;
+
void (*n_func)(ACPI_HANDLE, UINT32, void *);
char *lcdd;
@@ -137,6 +141,7 @@
int s_cam;
int s_crd;
int s_wlan;
+ int s_tpd;
};
static void acpi_asus_lcdd_notify(ACPI_HANDLE h, UINT32 notify,
@@ -449,12 +454,16 @@
.name = "EEE",
.brn_get = "\\_SB.ATKD.PBLG",
.brn_set = "\\_SB.ATKD.PBLS",
+ .lcd_get = "\\_SB.ATKD.PBPG",
+ .lcd_set = "\\_SB.ATKD.PBPS",
.cam_get = "\\_SB.ATKD.CAMG",
.cam_set = "\\_SB.ATKD.CAMS",
.crd_set = "\\_SB.ATKD.CRDS",
.crd_get = "\\_SB.ATKD.CRDG",
.wlan_get = "\\_SB.ATKD.WLDG",
.wlan_set = "\\_SB.ATKD.WLDS",
+ .tpd_get = "\\_SB.ATKD.TPDG",
+ .tpd_set = "\\_SB.ATKD.TPDS",
.n_func = acpi_asus_eeepc_notify
},
@@ -503,6 +512,12 @@
.description = "wireless lan state",
.flags = CTLTYPE_INT | CTLFLAG_RW
},
+ {
+ .name = "touchpad",
+ .method = ACPI_ASUS_METHOD_TPD,
+ .description = "touchpad state",
+ .flags = CTLTYPE_INT | CTLFLAG_RW
+ },
{ .name = NULL }
};
@@ -994,6 +1009,9 @@
case ACPI_ASUS_METHOD_WLAN:
val = sc->s_wlan;
break;
+ case ACPI_ASUS_METHOD_TPD:
+ val = sc->s_tpd;
+ break;
}
return (val);
@@ -1050,8 +1068,11 @@
if (arg < 0 || arg > 1)
return (EINVAL);
- if (strncmp(sc->model->name, "L3H", 3) != 0)
+ if (strncmp(sc->model->name, "EEE", 3) == 0)
status = AcpiEvaluateObject(sc->handle,
+ sc->model->lcd_set, &acpiargs, NULL);
+ else if (strncmp(sc->model->name, "L3H", 3) != 0)
+ status = AcpiEvaluateObject(sc->handle,
sc->model->lcd_set, NULL, NULL);
else
status = acpi_SetInteger(sc->handle,
@@ -1091,6 +1112,16 @@
if (ACPI_SUCCESS(status))
sc->s_wlan = arg;
break;
+ case ACPI_ASUS_METHOD_TPD:
+ if (arg < 0 || arg > 1)
+ return (EINVAL);
+
+ status = AcpiEvaluateObject(sc->handle,
+ sc->model->tpd_set, &acpiargs, NULL);
+
+ if (ACPI_SUCCESS(status))
+ sc->s_tpd = arg;
+ break;
}
return (0);
@@ -1209,6 +1240,14 @@
return (TRUE);
}
return (FALSE);
+ case ACPI_ASUS_METHOD_TPD:
+ if (sc->model->tpd_get) {
+ status = acpi_GetInteger(sc->handle,
+ sc->model->tpd_get, &sc->s_tpd);
+ if (ACPI_SUCCESS(status))
+ return (TRUE);
+ }
+ return (FALSE);
}
return (FALSE);
}
>Release-Note:
>Audit-Trail:
>Unformatted:
More information about the freebsd-i386
mailing list