^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1) // SPDX-License-Identifier: GPL-2.0+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2) // avermedia-m135a.c - Keytable for Avermedia M135A Remote Controllers
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3) //
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4) // Copyright (c) 2010 by Mauro Carvalho Chehab
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5) // Copyright (c) 2010 by Herton Ronaldo Krzesinski <herton@mandriva.com.br>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 6)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 7) #include <media/rc-map.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 8) #include <linux/module.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 9)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11) * Avermedia M135A with RM-JX and RM-K6 remote controls
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13) * On Avermedia M135A with IR model RM-JX, the same codes exist on both
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) * Positivo (BR) and original IR, initial version and remote control codes
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15) * added by Mauro Carvalho Chehab <mchehab@kernel.org>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) * Positivo also ships Avermedia M135A with model RM-K6, extra control
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18) * codes added by Herton Ronaldo Krzesinski <herton@mandriva.com.br>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21) static struct rc_map_table avermedia_m135a[] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22) /* RM-JX */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) { 0x0200, KEY_POWER2 },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) { 0x022e, KEY_DOT }, /* '.' */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) { 0x0201, KEY_MODE }, /* TV/FM or SOURCE */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) { 0x0205, KEY_NUMERIC_1 },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28) { 0x0206, KEY_NUMERIC_2 },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29) { 0x0207, KEY_NUMERIC_3 },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30) { 0x0209, KEY_NUMERIC_4 },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31) { 0x020a, KEY_NUMERIC_5 },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32) { 0x020b, KEY_NUMERIC_6 },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33) { 0x020d, KEY_NUMERIC_7 },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34) { 0x020e, KEY_NUMERIC_8 },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35) { 0x020f, KEY_NUMERIC_9 },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36) { 0x0211, KEY_NUMERIC_0 },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38) { 0x0213, KEY_RIGHT }, /* -> or L */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39) { 0x0212, KEY_LEFT }, /* <- or R */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 40)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 41) { 0x0215, KEY_MENU },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 42) { 0x0217, KEY_CAMERA }, /* Capturar Imagem or Snapshot */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 43) { 0x0210, KEY_SHUFFLE }, /* Amostra or 16 chan prev */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 44)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 45) { 0x0303, KEY_CHANNELUP },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 46) { 0x0302, KEY_CHANNELDOWN },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 47) { 0x021f, KEY_VOLUMEUP },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 48) { 0x021e, KEY_VOLUMEDOWN },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 49) { 0x020c, KEY_ENTER }, /* Full Screen */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 50)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 51) { 0x0214, KEY_MUTE },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 52) { 0x0208, KEY_AUDIO },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 53)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 54) { 0x0203, KEY_TEXT }, /* Teletext */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 55) { 0x0204, KEY_EPG },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 56) { 0x022b, KEY_TV2 }, /* TV2 or PIP */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 57)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 58) { 0x021d, KEY_RED },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 59) { 0x021c, KEY_YELLOW },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 60) { 0x0301, KEY_GREEN },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 61) { 0x0300, KEY_BLUE },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 62)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 63) { 0x021a, KEY_PLAYPAUSE },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 64) { 0x0219, KEY_RECORD },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 65) { 0x0218, KEY_PLAY },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 66) { 0x021b, KEY_STOP },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 67)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 68) /* RM-K6 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 69) { 0x0401, KEY_POWER2 },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 70) { 0x0406, KEY_MUTE },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 71) { 0x0408, KEY_MODE }, /* TV/FM */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 72)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 73) { 0x0409, KEY_NUMERIC_1 },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 74) { 0x040a, KEY_NUMERIC_2 },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 75) { 0x040b, KEY_NUMERIC_3 },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 76) { 0x040c, KEY_NUMERIC_4 },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 77) { 0x040d, KEY_NUMERIC_5 },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 78) { 0x040e, KEY_NUMERIC_6 },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 79) { 0x040f, KEY_NUMERIC_7 },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 80) { 0x0410, KEY_NUMERIC_8 },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 81) { 0x0411, KEY_NUMERIC_9 },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 82) { 0x044c, KEY_DOT }, /* '.' */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 83) { 0x0412, KEY_NUMERIC_0 },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 84) { 0x0407, KEY_REFRESH }, /* Refresh/Reload */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 85)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 86) { 0x0413, KEY_AUDIO },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 87) { 0x0440, KEY_SCREEN }, /* Full Screen toggle */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 88) { 0x0441, KEY_HOME },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 89) { 0x0442, KEY_BACK },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 90) { 0x0447, KEY_UP },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 91) { 0x0448, KEY_DOWN },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 92) { 0x0449, KEY_LEFT },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 93) { 0x044a, KEY_RIGHT },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 94) { 0x044b, KEY_OK },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 95) { 0x0404, KEY_VOLUMEUP },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 96) { 0x0405, KEY_VOLUMEDOWN },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 97) { 0x0402, KEY_CHANNELUP },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 98) { 0x0403, KEY_CHANNELDOWN },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 99)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 100) { 0x0443, KEY_RED },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 101) { 0x0444, KEY_GREEN },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 102) { 0x0445, KEY_YELLOW },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 103) { 0x0446, KEY_BLUE },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 104)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 105) { 0x0414, KEY_TEXT },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 106) { 0x0415, KEY_EPG },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 107) { 0x041a, KEY_TV2 }, /* PIP */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 108) { 0x041b, KEY_CAMERA }, /* Snapshot */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 109)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 110) { 0x0417, KEY_RECORD },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 111) { 0x0416, KEY_PLAYPAUSE },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 112) { 0x0418, KEY_STOP },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 113) { 0x0419, KEY_PAUSE },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 114)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 115) { 0x041f, KEY_PREVIOUS },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 116) { 0x041c, KEY_REWIND },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 117) { 0x041d, KEY_FORWARD },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 118) { 0x041e, KEY_NEXT },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 119) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 120)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 121) static struct rc_map_list avermedia_m135a_map = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 122) .map = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 123) .scan = avermedia_m135a,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 124) .size = ARRAY_SIZE(avermedia_m135a),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 125) .rc_proto = RC_PROTO_NEC,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 126) .name = RC_MAP_AVERMEDIA_M135A,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 127) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 128) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 129)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 130) static int __init init_rc_map_avermedia_m135a(void)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 131) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 132) return rc_map_register(&avermedia_m135a_map);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 133) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 134)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 135) static void __exit exit_rc_map_avermedia_m135a(void)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 136) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 137) rc_map_unregister(&avermedia_m135a_map);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 138) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 139)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 140) module_init(init_rc_map_avermedia_m135a)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 141) module_exit(exit_rc_map_avermedia_m135a)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 142)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 143) MODULE_LICENSE("GPL");
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 144) MODULE_AUTHOR("Mauro Carvalho Chehab");