--- ibm_acpi.c.orig	2007-07-08 12:17:00.000000000 -0400
+++ ibm_acpi.c	2007-07-08 12:19:55.000000000 -0400
@@ -1034,6 +1034,17 @@
 		} else if (strlencmp(cmd, "off") == 0) {
 			cmos_cmd = 0x0d;
 			lght_cmd = 0;
+		} else if (strlencmp(cmd, "toggle") == 0) {
+			if (!acpi_evalf(ec_handle, &status, "KBLT", "d"))
+				return -EIO;
+			if (status == 0) {
+				cmos_cmd = 0x0c;
+				lght_cmd = 1;
+			}
+			else
+				cmos_cmd = 0x0d;
+				lght_cmd = 0;
+			}
 		} else
 			return -EINVAL;
 
