Re: Add alternate power changed event to acpithinkpad.c

2013-03-31 Thread joshua stein
On Sun, 31 Mar 2013 at 12:49:22 -0400, Brian Callahan wrote:
> Hi tech --
> 
> I just discovered that my Thinkpad (Edge E420) sends a 0x6040 event when the
> power cable is connected or removed.

My X230 generates this as well.  When I looked at Linux's driver a
while ago it says that 0x6040 is THINKPAD_POWER_CHANGED and 0x6030
that older models generate is actually
THINKPAD_THERMAL_TABLE_CHANGED.  I don't know whether these actually
matter, especially since we're ignoring all of them anyway.

But here is what I have in my tree that ignores 0x6040 and
groups/sorts all of the ignored events together.


Index: dev/acpi/acpithinkpad.c
===
RCS file: /cvs/src/sys/dev/acpi/acpithinkpad.c,v
retrieving revision 1.29
diff -u -p -u -p -r1.29 acpithinkpad.c
--- dev/acpi/acpithinkpad.c 22 Mar 2013 22:15:01 -  1.29
+++ dev/acpi/acpithinkpad.c 1 Apr 2013 03:00:25 -
@@ -73,7 +73,8 @@
 #defineTHINKPAD_BRIGHTNESS_CHANGED 0x5010
 #defineTHINKPAD_TABLET_PEN_INSERTED0x500b
 #defineTHINKPAD_TABLET_PEN_REMOVED 0x500c
-#defineTHINKPAD_POWER_CHANGED  0x6030
+#defineTHINKPAD_THERMAL_TABLE_CHANGED  0x6030
+#defineTHINKPAD_POWER_CHANGED  0x6040
 #defineTHINKPAD_BACKLIGHT_CHANGED  0x6050
 #defineTHINKPAD_SWITCH_WIRELESS0x7000
 
@@ -301,18 +302,6 @@ thinkpad_hotkey(struct aml_node *node, i
 #endif
handled = 1;
break;
-   case THINKPAD_BUTTON_HIBERNATE:
-   case THINKPAD_BUTTON_FN_F1:
-   case THINKPAD_BUTTON_LOCK_SCREEN:
-   case THINKPAD_BUTTON_BATTERY_INFO:
-   case THINKPAD_BUTTON_FN_F6:
-   case THINKPAD_BUTTON_EXTERNAL_SCREEN:
-   case THINKPAD_BUTTON_POINTER_SWITCH:
-   case THINKPAD_BUTTON_EJECT:
-   case THINKPAD_BUTTON_THINKLIGHT:
-   case THINKPAD_BUTTON_FN_SPACE:
-   handled = 1;
-   break;
case THINKPAD_BUTTON_VOLUME_MUTE:
thinkpad_volume_mute(sc);
handled = 1;
@@ -332,24 +321,29 @@ thinkpad_hotkey(struct aml_node *node, i
 #endif
handled = 1;
break;
-   case THINKPAD_BUTTON_THINKVANTAGE:
+   case THINKPAD_BACKLIGHT_CHANGED:
+   case THINKPAD_BRIGHTNESS_CHANGED:
+   case THINKPAD_BUTTON_BATTERY_INFO:
+   case THINKPAD_BUTTON_EJECT:
+   case THINKPAD_BUTTON_EXTERNAL_SCREEN:
case THINKPAD_BUTTON_FN_F11:
-   handled = 1;
-   break;
-   case THINKPAD_LID_OPEN:
+   case THINKPAD_BUTTON_FN_F1:
+   case THINKPAD_BUTTON_FN_F6:
+   case THINKPAD_BUTTON_FN_SPACE:
+   case THINKPAD_BUTTON_HIBERNATE:
+   case THINKPAD_BUTTON_LOCK_SCREEN:
+   case THINKPAD_BUTTON_POINTER_SWITCH:
+   case THINKPAD_BUTTON_THINKLIGHT:
+   case THINKPAD_BUTTON_THINKVANTAGE:
case THINKPAD_LID_CLOSED:
-   case THINKPAD_TABLET_SCREEN_NORMAL:
-   case THINKPAD_TABLET_SCREEN_ROTATED:
-   case THINKPAD_BRIGHTNESS_CHANGED:
-   case THINKPAD_TABLET_PEN_INSERTED:
-   case THINKPAD_TABLET_PEN_REMOVED:
-   handled = 1;
-   break;
+   case THINKPAD_LID_OPEN:
case THINKPAD_POWER_CHANGED:
-   case THINKPAD_BACKLIGHT_CHANGED:
-   handled = 1;
-   break;
case THINKPAD_SWITCH_WIRELESS:
+   case THINKPAD_TABLET_PEN_INSERTED:
+   case THINKPAD_TABLET_PEN_REMOVED:
+   case THINKPAD_TABLET_SCREEN_NORMAL:
+   case THINKPAD_TABLET_SCREEN_ROTATED:
+   case THINKPAD_THERMAL_TABLE_CHANGED:
handled = 1;
break;
default:



Add alternate power changed event to acpithinkpad.c

2013-03-31 Thread Brian Callahan

Hi tech --

I just discovered that my Thinkpad (Edge E420) sends a 0x6040 event when 
the power cable is connected or removed.


Patch below handles it, works for me.

OK?

~Brian

Index: acpithinkpad.c
===
RCS file: /cvs/src/sys/dev/acpi/acpithinkpad.c,v
retrieving revision 1.29
diff -u -p -r1.29 acpithinkpad.c
--- acpithinkpad.c  22 Mar 2013 22:15:01 -  1.29
+++ acpithinkpad.c  31 Mar 2013 16:36:17 -
@@ -74,6 +74,7 @@
 #defineTHINKPAD_TABLET_PEN_INSERTED0x500b
 #defineTHINKPAD_TABLET_PEN_REMOVED 0x500c
 #defineTHINKPAD_POWER_CHANGED  0x6030
+#defineTHINKPAD_POWER_CHANGED_ALT  0x6040
 #defineTHINKPAD_BACKLIGHT_CHANGED  0x6050
 #defineTHINKPAD_SWITCH_WIRELESS0x7000

@@ -346,6 +347,7 @@ thinkpad_hotkey(struct aml_node *node, i
handled = 1;
break;
case THINKPAD_POWER_CHANGED:
+   case THINKPAD_POWER_CHANGED_ALT:
case THINKPAD_BACKLIGHT_CHANGED:
handled = 1;
break;