Commit 1cae71032183776e833036fe828315dcd3444df1

Authored by Harald Jenny
Committed by Len Brown
1 parent e93c8a6819

sony-laptop: VGN-A317M hotkey support

This laptop has 5 SPIC managed buttons above the keyboard:
sound + and - as well as brightness, zoom and S1.
Possibly the entire VGN-A serie behaves the same.

Signed-off-by: Harald Jenny <harald@a-little-linux-box.at>
Signed-off-by: Mattia Dongili <malattia@linux.it>
Signed-off-by: Len Brown <len.brown@intel.com>

Showing 2 changed files with 25 additions and 0 deletions Side-by-side Diff

drivers/platform/x86/sony-laptop.c
... ... @@ -230,6 +230,9 @@
230 230 53, /* 66 SONYPI_EVENT_PKEY_P4 */
231 231 54, /* 67 SONYPI_EVENT_PKEY_P5 */
232 232 55, /* 68 SONYPI_EVENT_SETTINGKEY_PRESSED */
  233 + 56, /* 69 SONYPI_EVENT_VOLUME_INC_PRESSED */
  234 + 57, /* 70 SONYPI_EVENT_VOLUME_DEC_PRESSED */
  235 + -1, /* 71 SONYPI_EVENT_BRIGHTNESS_PRESSED */
233 236 };
234 237  
235 238 static int sony_laptop_input_keycode_map[] = {
... ... @@ -289,6 +292,8 @@
289 292 KEY_PROG4, /* 53 SONYPI_EVENT_PKEY_P4 */
290 293 KEY_F14, /* 54 SONYPI_EVENT_PKEY_P5 */
291 294 KEY_F15, /* 55 SONYPI_EVENT_SETTINGKEY_PRESSED */
  295 + KEY_VOLUMEUP, /* 56 SONYPI_EVENT_VOLUME_INC_PRESSED */
  296 + KEY_VOLUMEDOWN, /* 57 SONYPI_EVENT_VOLUME_DEC_PRESSED */
292 297 };
293 298  
294 299 /* release buttons after a short delay if pressed */
... ... @@ -1555,6 +1560,7 @@
1555 1560 { 0x01, SONYPI_EVENT_PKEY_P1 },
1556 1561 { 0x02, SONYPI_EVENT_PKEY_P2 },
1557 1562 { 0x04, SONYPI_EVENT_PKEY_P3 },
  1563 + { 0x20, SONYPI_EVENT_PKEY_P1 },
1558 1564 { 0, 0 }
1559 1565 };
1560 1566  
... ... @@ -1598,6 +1604,7 @@
1598 1604 { 0x39, SONYPI_EVENT_ZOOM_PRESSED },
1599 1605 { 0x10, SONYPI_EVENT_ZOOM_IN_PRESSED },
1600 1606 { 0x20, SONYPI_EVENT_ZOOM_OUT_PRESSED },
  1607 + { 0x04, SONYPI_EVENT_ZOOM_PRESSED },
1601 1608 { 0, 0 }
1602 1609 };
1603 1610  
... ... @@ -1628,6 +1635,19 @@
1628 1635 { 0, 0 }
1629 1636 };
1630 1637  
  1638 +/* The set of possible volume events */
  1639 +static struct sonypi_event sonypi_volumeev[] = {
  1640 + { 0x01, SONYPI_EVENT_VOLUME_INC_PRESSED },
  1641 + { 0x02, SONYPI_EVENT_VOLUME_DEC_PRESSED },
  1642 + { 0, 0 }
  1643 +};
  1644 +
  1645 +/* The set of possible brightness events */
  1646 +static struct sonypi_event sonypi_brightnessev[] = {
  1647 + { 0x80, SONYPI_EVENT_BRIGHTNESS_PRESSED },
  1648 + { 0, 0 }
  1649 +};
  1650 +
1631 1651 static struct sonypi_eventtypes type1_events[] = {
1632 1652 { 0, 0xffffffff, sonypi_releaseev },
1633 1653 { 0x70, SONYPI_MEYE_MASK, sonypi_meyeev },
... ... @@ -1668,6 +1688,8 @@
1668 1688 { 0x05, SONYPI_PKEY_MASK, sonypi_pkeyev },
1669 1689 { 0x05, SONYPI_ZOOM_MASK, sonypi_zoomev },
1670 1690 { 0x05, SONYPI_CAPTURE_MASK, sonypi_captureev },
  1691 + { 0x05, SONYPI_PKEY_MASK, sonypi_volumeev },
  1692 + { 0x05, SONYPI_PKEY_MASK, sonypi_brightnessev },
1671 1693 { 0 },
1672 1694 };
1673 1695  
include/linux/sonypi.h
... ... @@ -108,6 +108,9 @@
108 108 #define SONYPI_EVENT_PKEY_P4 66
109 109 #define SONYPI_EVENT_PKEY_P5 67
110 110 #define SONYPI_EVENT_SETTINGKEY_PRESSED 68
  111 +#define SONYPI_EVENT_VOLUME_INC_PRESSED 69
  112 +#define SONYPI_EVENT_VOLUME_DEC_PRESSED 70
  113 +#define SONYPI_EVENT_BRIGHTNESS_PRESSED 71
111 114  
112 115 /* get/set brightness */
113 116 #define SONYPI_IOCGBRT _IOR('v', 0, __u8)