| Jarod Wilson | d0ff237 | 2011-03-24 12:58:48 -0300 | [diff] [blame] | 1 | /* rc-tivo.c - Keytable for TiVo remotes | 
|  | 2 | * | 
|  | 3 | * Copyright (c) 2011 by Jarod Wilson <jarod@redhat.com> | 
|  | 4 | * | 
|  | 5 | * This program is free software; you can redistribute it and/or modify | 
|  | 6 | * it under the terms of the GNU General Public License as published by | 
|  | 7 | * the Free Software Foundation; either version 2 of the License, or | 
|  | 8 | * (at your option) any later version. | 
|  | 9 | */ | 
|  | 10 |  | 
|  | 11 | #include <media/rc-map.h> | 
| Paul Gortmaker | 7a707b8 | 2011-07-03 14:03:12 -0400 | [diff] [blame] | 12 | #include <linux/module.h> | 
| Jarod Wilson | d0ff237 | 2011-03-24 12:58:48 -0300 | [diff] [blame] | 13 |  | 
|  | 14 | /* | 
|  | 15 | * Initial mapping is for the TiVo remote included in the Nero LiquidTV bundle, | 
|  | 16 | * which also ships with a TiVo-branded IR transceiver, supported by the mceusb | 
|  | 17 | * driver. Note that the remote uses an NEC-ish protocol, but instead of having | 
|  | 18 | * a command/not_command pair, it has a vendor ID of 0xa10c, but some keys, the | 
|  | 19 | * NEC extended checksums do pass, so the table presently has the intended | 
|  | 20 | * values and the checksum-passed versions for those keys. | 
|  | 21 | */ | 
|  | 22 | static struct rc_map_table tivo[] = { | 
|  | 23 | { 0xa10c900f, KEY_MEDIA },	/* TiVo Button */ | 
|  | 24 | { 0xa10c0807, KEY_POWER2 },	/* TV Power */ | 
|  | 25 | { 0xa10c8807, KEY_TV },		/* Live TV/Swap */ | 
|  | 26 | { 0xa10c2c03, KEY_VIDEO_NEXT },	/* TV Input */ | 
|  | 27 | { 0xa10cc807, KEY_INFO }, | 
|  | 28 | { 0xa10cfa05, KEY_CYCLEWINDOWS }, /* Window */ | 
|  | 29 | { 0x0085305f, KEY_CYCLEWINDOWS }, | 
|  | 30 | { 0xa10c6c03, KEY_EPG },	/* Guide */ | 
|  | 31 |  | 
|  | 32 | { 0xa10c2807, KEY_UP }, | 
|  | 33 | { 0xa10c6807, KEY_DOWN }, | 
|  | 34 | { 0xa10ce807, KEY_LEFT }, | 
|  | 35 | { 0xa10ca807, KEY_RIGHT }, | 
|  | 36 |  | 
|  | 37 | { 0xa10c1807, KEY_SCROLLDOWN },	/* Red Thumbs Down */ | 
|  | 38 | { 0xa10c9807, KEY_SELECT }, | 
|  | 39 | { 0xa10c5807, KEY_SCROLLUP },	/* Green Thumbs Up */ | 
|  | 40 |  | 
|  | 41 | { 0xa10c3807, KEY_VOLUMEUP }, | 
|  | 42 | { 0xa10cb807, KEY_VOLUMEDOWN }, | 
|  | 43 | { 0xa10cd807, KEY_MUTE }, | 
|  | 44 | { 0xa10c040b, KEY_RECORD }, | 
|  | 45 | { 0xa10c7807, KEY_CHANNELUP }, | 
|  | 46 | { 0xa10cf807, KEY_CHANNELDOWN }, | 
|  | 47 | { 0x0085301f, KEY_CHANNELDOWN }, | 
|  | 48 |  | 
|  | 49 | { 0xa10c840b, KEY_PLAY }, | 
|  | 50 | { 0xa10cc40b, KEY_PAUSE }, | 
|  | 51 | { 0xa10ca40b, KEY_SLOW }, | 
|  | 52 | { 0xa10c440b, KEY_REWIND }, | 
|  | 53 | { 0xa10c240b, KEY_FASTFORWARD }, | 
|  | 54 | { 0xa10c640b, KEY_PREVIOUS }, | 
|  | 55 | { 0xa10ce40b, KEY_NEXT },	/* ->| */ | 
|  | 56 |  | 
|  | 57 | { 0xa10c220d, KEY_ZOOM },	/* Aspect */ | 
|  | 58 | { 0xa10c120d, KEY_STOP }, | 
|  | 59 | { 0xa10c520d, KEY_DVD },	/* DVD Menu */ | 
|  | 60 |  | 
|  | 61 | { 0xa10c140b, KEY_NUMERIC_1 }, | 
|  | 62 | { 0xa10c940b, KEY_NUMERIC_2 }, | 
|  | 63 | { 0xa10c540b, KEY_NUMERIC_3 }, | 
|  | 64 | { 0xa10cd40b, KEY_NUMERIC_4 }, | 
|  | 65 | { 0xa10c340b, KEY_NUMERIC_5 }, | 
|  | 66 | { 0xa10cb40b, KEY_NUMERIC_6 }, | 
|  | 67 | { 0xa10c740b, KEY_NUMERIC_7 }, | 
|  | 68 | { 0xa10cf40b, KEY_NUMERIC_8 }, | 
|  | 69 | { 0x0085302f, KEY_NUMERIC_8 }, | 
|  | 70 | { 0xa10c0c03, KEY_NUMERIC_9 }, | 
|  | 71 | { 0xa10c8c03, KEY_NUMERIC_0 }, | 
|  | 72 | { 0xa10ccc03, KEY_ENTER }, | 
|  | 73 | { 0xa10c4c03, KEY_CLEAR }, | 
|  | 74 | }; | 
|  | 75 |  | 
|  | 76 | static struct rc_map_list tivo_map = { | 
|  | 77 | .map = { | 
|  | 78 | .scan    = tivo, | 
|  | 79 | .size    = ARRAY_SIZE(tivo), | 
|  | 80 | .rc_type = RC_TYPE_NEC, | 
|  | 81 | .name    = RC_MAP_TIVO, | 
|  | 82 | } | 
|  | 83 | }; | 
|  | 84 |  | 
|  | 85 | static int __init init_rc_map_tivo(void) | 
|  | 86 | { | 
|  | 87 | return rc_map_register(&tivo_map); | 
|  | 88 | } | 
|  | 89 |  | 
|  | 90 | static void __exit exit_rc_map_tivo(void) | 
|  | 91 | { | 
|  | 92 | rc_map_unregister(&tivo_map); | 
|  | 93 | } | 
|  | 94 |  | 
|  | 95 | module_init(init_rc_map_tivo) | 
|  | 96 | module_exit(exit_rc_map_tivo) | 
|  | 97 |  | 
|  | 98 | MODULE_LICENSE("GPL"); | 
|  | 99 | MODULE_AUTHOR("Jarod Wilson <jarod@redhat.com>"); |