diff options
-rw-r--r-- | drivers/input/keyboard/atkbd.c | 47 | ||||
-rw-r--r-- | drivers/input/serio/i8042-x86ia64io.h | 11 | ||||
-rw-r--r-- | drivers/input/serio/serio.c | 2 | ||||
-rw-r--r-- | include/linux/input.h | 143 |
4 files changed, 119 insertions, 84 deletions
diff --git a/drivers/input/keyboard/atkbd.c b/drivers/input/keyboard/atkbd.c index be1fe46cd308..9950fcb33650 100644 --- a/drivers/input/keyboard/atkbd.c +++ b/drivers/input/keyboard/atkbd.c | |||
@@ -219,7 +219,8 @@ struct atkbd { | |||
219 | unsigned long time; | 219 | unsigned long time; |
220 | unsigned long err_count; | 220 | unsigned long err_count; |
221 | 221 | ||
222 | struct work_struct event_work; | 222 | struct delayed_work event_work; |
223 | unsigned long event_jiffies; | ||
223 | struct mutex event_mutex; | 224 | struct mutex event_mutex; |
224 | unsigned long event_mask; | 225 | unsigned long event_mask; |
225 | }; | 226 | }; |
@@ -408,9 +409,10 @@ static irqreturn_t atkbd_interrupt(struct serio *serio, unsigned char data, | |||
408 | goto out; | 409 | goto out; |
409 | case ATKBD_RET_ACK: | 410 | case ATKBD_RET_ACK: |
410 | case ATKBD_RET_NAK: | 411 | case ATKBD_RET_NAK: |
411 | printk(KERN_WARNING "atkbd.c: Spurious %s on %s. " | 412 | if (printk_ratelimit()) |
412 | "Some program might be trying access hardware directly.\n", | 413 | printk(KERN_WARNING "atkbd.c: Spurious %s on %s. " |
413 | data == ATKBD_RET_ACK ? "ACK" : "NAK", serio->phys); | 414 | "Some program might be trying access hardware directly.\n", |
415 | data == ATKBD_RET_ACK ? "ACK" : "NAK", serio->phys); | ||
414 | goto out; | 416 | goto out; |
415 | case ATKBD_RET_HANGEUL: | 417 | case ATKBD_RET_HANGEUL: |
416 | case ATKBD_RET_HANJA: | 418 | case ATKBD_RET_HANJA: |
@@ -565,7 +567,7 @@ static int atkbd_set_leds(struct atkbd *atkbd) | |||
565 | 567 | ||
566 | static void atkbd_event_work(struct work_struct *work) | 568 | static void atkbd_event_work(struct work_struct *work) |
567 | { | 569 | { |
568 | struct atkbd *atkbd = container_of(work, struct atkbd, event_work); | 570 | struct atkbd *atkbd = container_of(work, struct atkbd, event_work.work); |
569 | 571 | ||
570 | mutex_lock(&atkbd->event_mutex); | 572 | mutex_lock(&atkbd->event_mutex); |
571 | 573 | ||
@@ -579,12 +581,30 @@ static void atkbd_event_work(struct work_struct *work) | |||
579 | } | 581 | } |
580 | 582 | ||
581 | /* | 583 | /* |
584 | * Schedule switch for execution. We need to throttle requests, | ||
585 | * otherwise keyboard may become unresponsive. | ||
586 | */ | ||
587 | static void atkbd_schedule_event_work(struct atkbd *atkbd, int event_bit) | ||
588 | { | ||
589 | unsigned long delay = msecs_to_jiffies(50); | ||
590 | |||
591 | if (time_after(jiffies, atkbd->event_jiffies + delay)) | ||
592 | delay = 0; | ||
593 | |||
594 | atkbd->event_jiffies = jiffies; | ||
595 | set_bit(event_bit, &atkbd->event_mask); | ||
596 | wmb(); | ||
597 | schedule_delayed_work(&atkbd->event_work, delay); | ||
598 | } | ||
599 | |||
600 | /* | ||
582 | * Event callback from the input module. Events that change the state of | 601 | * Event callback from the input module. Events that change the state of |
583 | * the hardware are processed here. If action can not be performed in | 602 | * the hardware are processed here. If action can not be performed in |
584 | * interrupt context it is offloaded to atkbd_event_work. | 603 | * interrupt context it is offloaded to atkbd_event_work. |
585 | */ | 604 | */ |
586 | 605 | ||
587 | static int atkbd_event(struct input_dev *dev, unsigned int type, unsigned int code, int value) | 606 | static int atkbd_event(struct input_dev *dev, |
607 | unsigned int type, unsigned int code, int value) | ||
588 | { | 608 | { |
589 | struct atkbd *atkbd = input_get_drvdata(dev); | 609 | struct atkbd *atkbd = input_get_drvdata(dev); |
590 | 610 | ||
@@ -594,19 +614,12 @@ static int atkbd_event(struct input_dev *dev, unsigned int type, unsigned int co | |||
594 | switch (type) { | 614 | switch (type) { |
595 | 615 | ||
596 | case EV_LED: | 616 | case EV_LED: |
597 | set_bit(ATKBD_LED_EVENT_BIT, &atkbd->event_mask); | 617 | atkbd_schedule_event_work(atkbd, ATKBD_LED_EVENT_BIT); |
598 | wmb(); | ||
599 | schedule_work(&atkbd->event_work); | ||
600 | return 0; | 618 | return 0; |
601 | 619 | ||
602 | case EV_REP: | 620 | case EV_REP: |
603 | 621 | if (!atkbd->softrepeat) | |
604 | if (!atkbd->softrepeat) { | 622 | atkbd_schedule_event_work(atkbd, ATKBD_REP_EVENT_BIT); |
605 | set_bit(ATKBD_REP_EVENT_BIT, &atkbd->event_mask); | ||
606 | wmb(); | ||
607 | schedule_work(&atkbd->event_work); | ||
608 | } | ||
609 | |||
610 | return 0; | 623 | return 0; |
611 | } | 624 | } |
612 | 625 | ||
@@ -940,7 +953,7 @@ static int atkbd_connect(struct serio *serio, struct serio_driver *drv) | |||
940 | 953 | ||
941 | atkbd->dev = dev; | 954 | atkbd->dev = dev; |
942 | ps2_init(&atkbd->ps2dev, serio); | 955 | ps2_init(&atkbd->ps2dev, serio); |
943 | INIT_WORK(&atkbd->event_work, atkbd_event_work); | 956 | INIT_DELAYED_WORK(&atkbd->event_work, atkbd_event_work); |
944 | mutex_init(&atkbd->event_mutex); | 957 | mutex_init(&atkbd->event_mutex); |
945 | 958 | ||
946 | switch (serio->id.type) { | 959 | switch (serio->id.type) { |
diff --git a/drivers/input/serio/i8042-x86ia64io.h b/drivers/input/serio/i8042-x86ia64io.h index f4a2517925e4..4fca1e7f2678 100644 --- a/drivers/input/serio/i8042-x86ia64io.h +++ b/drivers/input/serio/i8042-x86ia64io.h | |||
@@ -200,6 +200,17 @@ static struct dmi_system_id __initdata i8042_dmi_nomux_table[] = { | |||
200 | }, | 200 | }, |
201 | }, | 201 | }, |
202 | { | 202 | { |
203 | /* | ||
204 | * Like DV4017EA does not raise AUXERR for errors on MUX ports. | ||
205 | */ | ||
206 | .ident = "HP Pavilion ZT1000", | ||
207 | .matches = { | ||
208 | DMI_MATCH(DMI_SYS_VENDOR, "Hewlett-Packard"), | ||
209 | DMI_MATCH(DMI_PRODUCT_NAME, "HP Pavilion Notebook PC"), | ||
210 | DMI_MATCH(DMI_PRODUCT_VERSION, "HP Pavilion Notebook ZT1000"), | ||
211 | }, | ||
212 | }, | ||
213 | { | ||
203 | .ident = "Toshiba P10", | 214 | .ident = "Toshiba P10", |
204 | .matches = { | 215 | .matches = { |
205 | DMI_MATCH(DMI_SYS_VENDOR, "TOSHIBA"), | 216 | DMI_MATCH(DMI_SYS_VENDOR, "TOSHIBA"), |
diff --git a/drivers/input/serio/serio.c b/drivers/input/serio/serio.c index 5895202b972c..a8f3bc1dff22 100644 --- a/drivers/input/serio/serio.c +++ b/drivers/input/serio/serio.c | |||
@@ -769,8 +769,10 @@ static int serio_driver_remove(struct device *dev) | |||
769 | 769 | ||
770 | static void serio_cleanup(struct serio *serio) | 770 | static void serio_cleanup(struct serio *serio) |
771 | { | 771 | { |
772 | mutex_lock(&serio->drv_mutex); | ||
772 | if (serio->drv && serio->drv->cleanup) | 773 | if (serio->drv && serio->drv->cleanup) |
773 | serio->drv->cleanup(serio); | 774 | serio->drv->cleanup(serio); |
775 | mutex_unlock(&serio->drv_mutex); | ||
774 | } | 776 | } |
775 | 777 | ||
776 | static void serio_shutdown(struct device *dev) | 778 | static void serio_shutdown(struct device *dev) |
diff --git a/include/linux/input.h b/include/linux/input.h index be2bf3a2b031..d8521c72f69f 100644 --- a/include/linux/input.h +++ b/include/linux/input.h | |||
@@ -108,6 +108,13 @@ struct input_absinfo { | |||
108 | 108 | ||
109 | /* | 109 | /* |
110 | * Keys and buttons | 110 | * Keys and buttons |
111 | * | ||
112 | * Most of the keys/buttons are modeled after USB HUT 1.12 | ||
113 | * (see http://www.usb.org/developers/hidpage). | ||
114 | * Abbreviations in the comments: | ||
115 | * AC - Application Control | ||
116 | * AL - Application Launch Button | ||
117 | * SC - System Control | ||
111 | */ | 118 | */ |
112 | 119 | ||
113 | #define KEY_RESERVED 0 | 120 | #define KEY_RESERVED 0 |
@@ -226,7 +233,7 @@ struct input_absinfo { | |||
226 | #define KEY_MUTE 113 | 233 | #define KEY_MUTE 113 |
227 | #define KEY_VOLUMEDOWN 114 | 234 | #define KEY_VOLUMEDOWN 114 |
228 | #define KEY_VOLUMEUP 115 | 235 | #define KEY_VOLUMEUP 115 |
229 | #define KEY_POWER 116 | 236 | #define KEY_POWER 116 /* SC System Power Down */ |
230 | #define KEY_KPEQUAL 117 | 237 | #define KEY_KPEQUAL 117 |
231 | #define KEY_KPPLUSMINUS 118 | 238 | #define KEY_KPPLUSMINUS 118 |
232 | #define KEY_PAUSE 119 | 239 | #define KEY_PAUSE 119 |
@@ -240,38 +247,39 @@ struct input_absinfo { | |||
240 | #define KEY_RIGHTMETA 126 | 247 | #define KEY_RIGHTMETA 126 |
241 | #define KEY_COMPOSE 127 | 248 | #define KEY_COMPOSE 127 |
242 | 249 | ||
243 | #define KEY_STOP 128 | 250 | #define KEY_STOP 128 /* AC Stop */ |
244 | #define KEY_AGAIN 129 | 251 | #define KEY_AGAIN 129 |
245 | #define KEY_PROPS 130 | 252 | #define KEY_PROPS 130 /* AC Properties */ |
246 | #define KEY_UNDO 131 | 253 | #define KEY_UNDO 131 /* AC Undo */ |
247 | #define KEY_FRONT 132 | 254 | #define KEY_FRONT 132 |
248 | #define KEY_COPY 133 | 255 | #define KEY_COPY 133 /* AC Copy */ |
249 | #define KEY_OPEN 134 | 256 | #define KEY_OPEN 134 /* AC Open */ |
250 | #define KEY_PASTE 135 | 257 | #define KEY_PASTE 135 /* AC Paste */ |
251 | #define KEY_FIND 136 | 258 | #define KEY_FIND 136 /* AC Search */ |
252 | #define KEY_CUT 137 | 259 | #define KEY_CUT 137 /* AC Cut */ |
253 | #define KEY_HELP 138 | 260 | #define KEY_HELP 138 /* AL Integrated Help Center */ |
254 | #define KEY_MENU 139 | 261 | #define KEY_MENU 139 /* Menu (show menu) */ |
255 | #define KEY_CALC 140 | 262 | #define KEY_CALC 140 /* AL Calculator */ |
256 | #define KEY_SETUP 141 | 263 | #define KEY_SETUP 141 |
257 | #define KEY_SLEEP 142 | 264 | #define KEY_SLEEP 142 /* SC System Sleep */ |
258 | #define KEY_WAKEUP 143 | 265 | #define KEY_WAKEUP 143 /* System Wake Up */ |
259 | #define KEY_FILE 144 | 266 | #define KEY_FILE 144 /* AL Local Machine Browser */ |
260 | #define KEY_SENDFILE 145 | 267 | #define KEY_SENDFILE 145 |
261 | #define KEY_DELETEFILE 146 | 268 | #define KEY_DELETEFILE 146 |
262 | #define KEY_XFER 147 | 269 | #define KEY_XFER 147 |
263 | #define KEY_PROG1 148 | 270 | #define KEY_PROG1 148 |
264 | #define KEY_PROG2 149 | 271 | #define KEY_PROG2 149 |
265 | #define KEY_WWW 150 | 272 | #define KEY_WWW 150 /* AL Internet Browser */ |
266 | #define KEY_MSDOS 151 | 273 | #define KEY_MSDOS 151 |
267 | #define KEY_COFFEE 152 | 274 | #define KEY_COFFEE 152 /* AL Terminal Lock/Screensaver */ |
275 | #define KEY_SCREENLOCK KEY_COFFEE | ||
268 | #define KEY_DIRECTION 153 | 276 | #define KEY_DIRECTION 153 |
269 | #define KEY_CYCLEWINDOWS 154 | 277 | #define KEY_CYCLEWINDOWS 154 |
270 | #define KEY_MAIL 155 | 278 | #define KEY_MAIL 155 |
271 | #define KEY_BOOKMARKS 156 | 279 | #define KEY_BOOKMARKS 156 /* AC Bookmarks */ |
272 | #define KEY_COMPUTER 157 | 280 | #define KEY_COMPUTER 157 |
273 | #define KEY_BACK 158 | 281 | #define KEY_BACK 158 /* AC Back */ |
274 | #define KEY_FORWARD 159 | 282 | #define KEY_FORWARD 159 /* AC Forward */ |
275 | #define KEY_CLOSECD 160 | 283 | #define KEY_CLOSECD 160 |
276 | #define KEY_EJECTCD 161 | 284 | #define KEY_EJECTCD 161 |
277 | #define KEY_EJECTCLOSECD 162 | 285 | #define KEY_EJECTCLOSECD 162 |
@@ -281,20 +289,20 @@ struct input_absinfo { | |||
281 | #define KEY_STOPCD 166 | 289 | #define KEY_STOPCD 166 |
282 | #define KEY_RECORD 167 | 290 | #define KEY_RECORD 167 |
283 | #define KEY_REWIND 168 | 291 | #define KEY_REWIND 168 |
284 | #define KEY_PHONE 169 | 292 | #define KEY_PHONE 169 /* Media Select Telephone */ |
285 | #define KEY_ISO 170 | 293 | #define KEY_ISO 170 |
286 | #define KEY_CONFIG 171 | 294 | #define KEY_CONFIG 171 /* AL Consumer Control Configuration */ |
287 | #define KEY_HOMEPAGE 172 | 295 | #define KEY_HOMEPAGE 172 /* AC Home */ |
288 | #define KEY_REFRESH 173 | 296 | #define KEY_REFRESH 173 /* AC Refresh */ |
289 | #define KEY_EXIT 174 | 297 | #define KEY_EXIT 174 /* AC Exit */ |
290 | #define KEY_MOVE 175 | 298 | #define KEY_MOVE 175 |
291 | #define KEY_EDIT 176 | 299 | #define KEY_EDIT 176 |
292 | #define KEY_SCROLLUP 177 | 300 | #define KEY_SCROLLUP 177 |
293 | #define KEY_SCROLLDOWN 178 | 301 | #define KEY_SCROLLDOWN 178 |
294 | #define KEY_KPLEFTPAREN 179 | 302 | #define KEY_KPLEFTPAREN 179 |
295 | #define KEY_KPRIGHTPAREN 180 | 303 | #define KEY_KPRIGHTPAREN 180 |
296 | #define KEY_NEW 181 | 304 | #define KEY_NEW 181 /* AC New */ |
297 | #define KEY_REDO 182 | 305 | #define KEY_REDO 182 /* AC Redo/Repeat */ |
298 | 306 | ||
299 | #define KEY_F13 183 | 307 | #define KEY_F13 183 |
300 | #define KEY_F14 184 | 308 | #define KEY_F14 184 |
@@ -314,11 +322,11 @@ struct input_absinfo { | |||
314 | #define KEY_PROG3 202 | 322 | #define KEY_PROG3 202 |
315 | #define KEY_PROG4 203 | 323 | #define KEY_PROG4 203 |
316 | #define KEY_SUSPEND 205 | 324 | #define KEY_SUSPEND 205 |
317 | #define KEY_CLOSE 206 | 325 | #define KEY_CLOSE 206 /* AC Close */ |
318 | #define KEY_PLAY 207 | 326 | #define KEY_PLAY 207 |
319 | #define KEY_FASTFORWARD 208 | 327 | #define KEY_FASTFORWARD 208 |
320 | #define KEY_BASSBOOST 209 | 328 | #define KEY_BASSBOOST 209 |
321 | #define KEY_PRINT 210 | 329 | #define KEY_PRINT 210 /* AC Print */ |
322 | #define KEY_HP 211 | 330 | #define KEY_HP 211 |
323 | #define KEY_CAMERA 212 | 331 | #define KEY_CAMERA 212 |
324 | #define KEY_SOUND 213 | 332 | #define KEY_SOUND 213 |
@@ -327,11 +335,11 @@ struct input_absinfo { | |||
327 | #define KEY_CHAT 216 | 335 | #define KEY_CHAT 216 |
328 | #define KEY_SEARCH 217 | 336 | #define KEY_SEARCH 217 |
329 | #define KEY_CONNECT 218 | 337 | #define KEY_CONNECT 218 |
330 | #define KEY_FINANCE 219 | 338 | #define KEY_FINANCE 219 /* AL Checkbook/Finance */ |
331 | #define KEY_SPORT 220 | 339 | #define KEY_SPORT 220 |
332 | #define KEY_SHOP 221 | 340 | #define KEY_SHOP 221 |
333 | #define KEY_ALTERASE 222 | 341 | #define KEY_ALTERASE 222 |
334 | #define KEY_CANCEL 223 | 342 | #define KEY_CANCEL 223 /* AC Cancel */ |
335 | #define KEY_BRIGHTNESSDOWN 224 | 343 | #define KEY_BRIGHTNESSDOWN 224 |
336 | #define KEY_BRIGHTNESSUP 225 | 344 | #define KEY_BRIGHTNESSUP 225 |
337 | #define KEY_MEDIA 226 | 345 | #define KEY_MEDIA 226 |
@@ -341,10 +349,10 @@ struct input_absinfo { | |||
341 | #define KEY_KBDILLUMDOWN 229 | 349 | #define KEY_KBDILLUMDOWN 229 |
342 | #define KEY_KBDILLUMUP 230 | 350 | #define KEY_KBDILLUMUP 230 |
343 | 351 | ||
344 | #define KEY_SEND 231 | 352 | #define KEY_SEND 231 /* AC Send */ |
345 | #define KEY_REPLY 232 | 353 | #define KEY_REPLY 232 /* AC Reply */ |
346 | #define KEY_FORWARDMAIL 233 | 354 | #define KEY_FORWARDMAIL 233 /* AC Forward Msg */ |
347 | #define KEY_SAVE 234 | 355 | #define KEY_SAVE 234 /* AC Save */ |
348 | #define KEY_DOCUMENTS 235 | 356 | #define KEY_DOCUMENTS 235 |
349 | 357 | ||
350 | #define KEY_BATTERY 236 | 358 | #define KEY_BATTERY 236 |
@@ -433,15 +441,15 @@ struct input_absinfo { | |||
433 | #define KEY_CLEAR 0x163 | 441 | #define KEY_CLEAR 0x163 |
434 | #define KEY_POWER2 0x164 | 442 | #define KEY_POWER2 0x164 |
435 | #define KEY_OPTION 0x165 | 443 | #define KEY_OPTION 0x165 |
436 | #define KEY_INFO 0x166 | 444 | #define KEY_INFO 0x166 /* AL OEM Features/Tips/Tutorial */ |
437 | #define KEY_TIME 0x167 | 445 | #define KEY_TIME 0x167 |
438 | #define KEY_VENDOR 0x168 | 446 | #define KEY_VENDOR 0x168 |
439 | #define KEY_ARCHIVE 0x169 | 447 | #define KEY_ARCHIVE 0x169 |
440 | #define KEY_PROGRAM 0x16a | 448 | #define KEY_PROGRAM 0x16a /* Media Select Program Guide */ |
441 | #define KEY_CHANNEL 0x16b | 449 | #define KEY_CHANNEL 0x16b |
442 | #define KEY_FAVORITES 0x16c | 450 | #define KEY_FAVORITES 0x16c |
443 | #define KEY_EPG 0x16d | 451 | #define KEY_EPG 0x16d |
444 | #define KEY_PVR 0x16e | 452 | #define KEY_PVR 0x16e /* Media Select Home */ |
445 | #define KEY_MHP 0x16f | 453 | #define KEY_MHP 0x16f |
446 | #define KEY_LANGUAGE 0x170 | 454 | #define KEY_LANGUAGE 0x170 |
447 | #define KEY_TITLE 0x171 | 455 | #define KEY_TITLE 0x171 |
@@ -451,36 +459,36 @@ struct input_absinfo { | |||
451 | #define KEY_MODE 0x175 | 459 | #define KEY_MODE 0x175 |
452 | #define KEY_KEYBOARD 0x176 | 460 | #define KEY_KEYBOARD 0x176 |
453 | #define KEY_SCREEN 0x177 | 461 | #define KEY_SCREEN 0x177 |
454 | #define KEY_PC 0x178 | 462 | #define KEY_PC 0x178 /* Media Select Computer */ |
455 | #define KEY_TV 0x179 | 463 | #define KEY_TV 0x179 /* Media Select TV */ |
456 | #define KEY_TV2 0x17a | 464 | #define KEY_TV2 0x17a /* Media Select Cable */ |
457 | #define KEY_VCR 0x17b | 465 | #define KEY_VCR 0x17b /* Media Select VCR */ |
458 | #define KEY_VCR2 0x17c | 466 | #define KEY_VCR2 0x17c /* VCR Plus */ |
459 | #define KEY_SAT 0x17d | 467 | #define KEY_SAT 0x17d /* Media Select Satellite */ |
460 | #define KEY_SAT2 0x17e | 468 | #define KEY_SAT2 0x17e |
461 | #define KEY_CD 0x17f | 469 | #define KEY_CD 0x17f /* Media Select CD */ |
462 | #define KEY_TAPE 0x180 | 470 | #define KEY_TAPE 0x180 /* Media Select Tape */ |
463 | #define KEY_RADIO 0x181 | 471 | #define KEY_RADIO 0x181 |
464 | #define KEY_TUNER 0x182 | 472 | #define KEY_TUNER 0x182 /* Media Select Tuner */ |
465 | #define KEY_PLAYER 0x183 | 473 | #define KEY_PLAYER 0x183 |
466 | #define KEY_TEXT 0x184 | 474 | #define KEY_TEXT 0x184 |
467 | #define KEY_DVD 0x185 | 475 | #define KEY_DVD 0x185 /* Media Select DVD */ |
468 | #define KEY_AUX 0x186 | 476 | #define KEY_AUX 0x186 |
469 | #define KEY_MP3 0x187 | 477 | #define KEY_MP3 0x187 |
470 | #define KEY_AUDIO 0x188 | 478 | #define KEY_AUDIO 0x188 |
471 | #define KEY_VIDEO 0x189 | 479 | #define KEY_VIDEO 0x189 |
472 | #define KEY_DIRECTORY 0x18a | 480 | #define KEY_DIRECTORY 0x18a |
473 | #define KEY_LIST 0x18b | 481 | #define KEY_LIST 0x18b |
474 | #define KEY_MEMO 0x18c | 482 | #define KEY_MEMO 0x18c /* Media Select Messages */ |
475 | #define KEY_CALENDAR 0x18d | 483 | #define KEY_CALENDAR 0x18d |
476 | #define KEY_RED 0x18e | 484 | #define KEY_RED 0x18e |
477 | #define KEY_GREEN 0x18f | 485 | #define KEY_GREEN 0x18f |
478 | #define KEY_YELLOW 0x190 | 486 | #define KEY_YELLOW 0x190 |
479 | #define KEY_BLUE 0x191 | 487 | #define KEY_BLUE 0x191 |
480 | #define KEY_CHANNELUP 0x192 | 488 | #define KEY_CHANNELUP 0x192 /* Channel Increment */ |
481 | #define KEY_CHANNELDOWN 0x193 | 489 | #define KEY_CHANNELDOWN 0x193 /* Channel Decrement */ |
482 | #define KEY_FIRST 0x194 | 490 | #define KEY_FIRST 0x194 |
483 | #define KEY_LAST 0x195 | 491 | #define KEY_LAST 0x195 /* Recall Last */ |
484 | #define KEY_AB 0x196 | 492 | #define KEY_AB 0x196 |
485 | #define KEY_NEXT 0x197 | 493 | #define KEY_NEXT 0x197 |
486 | #define KEY_RESTART 0x198 | 494 | #define KEY_RESTART 0x198 |
@@ -491,21 +499,21 @@ struct input_absinfo { | |||
491 | #define KEY_DIGITS 0x19d | 499 | #define KEY_DIGITS 0x19d |
492 | #define KEY_TEEN 0x19e | 500 | #define KEY_TEEN 0x19e |
493 | #define KEY_TWEN 0x19f | 501 | #define KEY_TWEN 0x19f |
494 | #define KEY_VIDEOPHONE 0x1a0 | 502 | #define KEY_VIDEOPHONE 0x1a0 /* Media Select Video Phone */ |
495 | #define KEY_GAMES 0x1a1 | 503 | #define KEY_GAMES 0x1a1 /* Media Select Games */ |
496 | #define KEY_ZOOMIN 0x1a2 | 504 | #define KEY_ZOOMIN 0x1a2 /* AC Zoom In */ |
497 | #define KEY_ZOOMOUT 0x1a3 | 505 | #define KEY_ZOOMOUT 0x1a3 /* AC Zoom Out */ |
498 | #define KEY_ZOOMRESET 0x1a4 | 506 | #define KEY_ZOOMRESET 0x1a4 /* AC Zoom */ |
499 | #define KEY_WORDPROCESSOR 0x1a5 | 507 | #define KEY_WORDPROCESSOR 0x1a5 /* AL Word Processor */ |
500 | #define KEY_EDITOR 0x1a6 | 508 | #define KEY_EDITOR 0x1a6 /* AL Text Editor */ |
501 | #define KEY_SPREADSHEET 0x1a7 | 509 | #define KEY_SPREADSHEET 0x1a7 /* AL Spreadsheet */ |
502 | #define KEY_GRAPHICSEDITOR 0x1a8 | 510 | #define KEY_GRAPHICSEDITOR 0x1a8 /* AL Graphics Editor */ |
503 | #define KEY_PRESENTATION 0x1a9 | 511 | #define KEY_PRESENTATION 0x1a9 /* AL Presentation App */ |
504 | #define KEY_DATABASE 0x1aa | 512 | #define KEY_DATABASE 0x1aa /* AL Database App */ |
505 | #define KEY_NEWS 0x1ab | 513 | #define KEY_NEWS 0x1ab /* AL Newsreader */ |
506 | #define KEY_VOICEMAIL 0x1ac | 514 | #define KEY_VOICEMAIL 0x1ac /* AL Voicemail */ |
507 | #define KEY_ADDRESSBOOK 0x1ad | 515 | #define KEY_ADDRESSBOOK 0x1ad /* AL Contacts/Address Book */ |
508 | #define KEY_MESSENGER 0x1ae | 516 | #define KEY_MESSENGER 0x1ae /* AL Instant Messaging */ |
509 | #define KEY_DISPLAYTOGGLE 0x1af /* Turn display (LCD) on and off */ | 517 | #define KEY_DISPLAYTOGGLE 0x1af /* Turn display (LCD) on and off */ |
510 | 518 | ||
511 | #define KEY_DEL_EOL 0x1c0 | 519 | #define KEY_DEL_EOL 0x1c0 |
@@ -603,6 +611,7 @@ struct input_absinfo { | |||
603 | #define SW_LID 0x00 /* set = lid shut */ | 611 | #define SW_LID 0x00 /* set = lid shut */ |
604 | #define SW_TABLET_MODE 0x01 /* set = tablet mode */ | 612 | #define SW_TABLET_MODE 0x01 /* set = tablet mode */ |
605 | #define SW_HEADPHONE_INSERT 0x02 /* set = inserted */ | 613 | #define SW_HEADPHONE_INSERT 0x02 /* set = inserted */ |
614 | #define SW_RADIO 0x03 /* set = radio enabled */ | ||
606 | #define SW_MAX 0x0f | 615 | #define SW_MAX 0x0f |
607 | 616 | ||
608 | /* | 617 | /* |