Orange Pi5 kernel

Deprecated Linux kernel 5.10.110 for OrangePi 5/5B/5+ boards

3 Commits   0 Branches   0 Tags
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   1) // SPDX-License-Identifier: GPL-2.0-or-later
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   2) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   3)  * Medion X10 RF remote keytable (Digitainer variant)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   4)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   5)  * Copyright (C) 2012 Anssi Hannula <anssi.hannula@iki.fi>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   6)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   7)  * This keymap is for a variant that has a distinctive scrollwheel instead of
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   8)  * up/down buttons (tested with P/N 40009936 / 20018268), reportedly
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   9)  * originally shipped with Medion Digitainer but now sold separately simply as
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  10)  * an "X10" remote.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  11)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  12) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  13) #include <linux/module.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  14) #include <media/rc-map.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  15) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  16) static struct rc_map_table medion_x10_digitainer[] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  17) 	{ 0x02, KEY_POWER },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  18) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  19) 	{ 0x2c, KEY_TV },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  20) 	{ 0x2d, KEY_VIDEO },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  21) 	{ 0x04, KEY_DVD },    /* CD/DVD */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  22) 	{ 0x16, KEY_TEXT },   /* "teletext" icon, i.e. a screen with lines */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  23) 	{ 0x06, KEY_AUDIO },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  24) 	{ 0x2e, KEY_RADIO },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  25) 	{ 0x31, KEY_EPG },    /* a screen with an open book */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  26) 	{ 0x05, KEY_IMAGES }, /* Photo */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  27) 	{ 0x2f, KEY_INFO },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  28) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  29) 	{ 0x78, KEY_UP },     /* scrollwheel up 1 notch */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  30) 	/* 0x79..0x7f: 2-8 notches, driver repeats 0x78 entry */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  31) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  32) 	{ 0x70, KEY_DOWN },   /* scrollwheel down 1 notch */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  33) 	/* 0x71..0x77: 2-8 notches, driver repeats 0x70 entry */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  34) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  35) 	{ 0x19, KEY_MENU },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  36) 	{ 0x1d, KEY_LEFT },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  37) 	{ 0x1e, KEY_OK },     /* scrollwheel press */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  38) 	{ 0x1f, KEY_RIGHT },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  39) 	{ 0x20, KEY_BACK },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  40) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  41) 	{ 0x09, KEY_VOLUMEUP },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  42) 	{ 0x08, KEY_VOLUMEDOWN },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  43) 	{ 0x00, KEY_MUTE },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  44) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  45) 	{ 0x1b, KEY_SELECT }, /* also has "U" rotated 90 degrees CCW */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  46) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  47) 	{ 0x0b, KEY_CHANNELUP },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  48) 	{ 0x0c, KEY_CHANNELDOWN },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  49) 	{ 0x1c, KEY_LAST },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  50) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  51) 	{ 0x32, KEY_RED },    /* also Audio */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  52) 	{ 0x33, KEY_GREEN },  /* also Subtitle */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  53) 	{ 0x34, KEY_YELLOW }, /* also Angle */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  54) 	{ 0x35, KEY_BLUE },   /* also Title */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  55) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  56) 	{ 0x28, KEY_STOP },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  57) 	{ 0x29, KEY_PAUSE },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  58) 	{ 0x25, KEY_PLAY },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  59) 	{ 0x21, KEY_PREVIOUS },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  60) 	{ 0x18, KEY_CAMERA },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  61) 	{ 0x23, KEY_NEXT },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  62) 	{ 0x24, KEY_REWIND },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  63) 	{ 0x27, KEY_RECORD },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  64) 	{ 0x26, KEY_FORWARD },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  65) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  66) 	{ 0x0d, KEY_NUMERIC_1 },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  67) 	{ 0x0e, KEY_NUMERIC_2 },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  68) 	{ 0x0f, KEY_NUMERIC_3 },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  69) 	{ 0x10, KEY_NUMERIC_4 },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  70) 	{ 0x11, KEY_NUMERIC_5 },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  71) 	{ 0x12, KEY_NUMERIC_6 },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  72) 	{ 0x13, KEY_NUMERIC_7 },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  73) 	{ 0x14, KEY_NUMERIC_8 },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  74) 	{ 0x15, KEY_NUMERIC_9 },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  75) 	{ 0x17, KEY_NUMERIC_0 },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  76) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  77) 	/* these do not actually exist on this remote, but these scancodes
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  78) 	 * exist on all other Medion X10 remotes and adding them here allows
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  79) 	 * such remotes to be adequately usable with this keymap in case
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  80) 	 * this keymap is wrongly used with them (which is quite possible as
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  81) 	 * there are lots of different Medion X10 remotes): */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  82) 	{ 0x1a, KEY_UP },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  83) 	{ 0x22, KEY_DOWN },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  84) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  85) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  86) static struct rc_map_list medion_x10_digitainer_map = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  87) 	.map = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  88) 		.scan     = medion_x10_digitainer,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  89) 		.size     = ARRAY_SIZE(medion_x10_digitainer),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  90) 		.rc_proto = RC_PROTO_OTHER,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  91) 		.name     = RC_MAP_MEDION_X10_DIGITAINER,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  92) 	}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  93) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  94) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  95) static int __init init_rc_map_medion_x10_digitainer(void)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  96) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  97) 	return rc_map_register(&medion_x10_digitainer_map);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  98) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  99) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 100) static void __exit exit_rc_map_medion_x10_digitainer(void)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 101) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 102) 	rc_map_unregister(&medion_x10_digitainer_map);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 103) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 104) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 105) module_init(init_rc_map_medion_x10_digitainer)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 106) module_exit(exit_rc_map_medion_x10_digitainer)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 107) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 108) MODULE_DESCRIPTION("Medion X10 RF remote keytable (Digitainer variant)");
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 109) MODULE_AUTHOR("Anssi Hannula <anssi.hannula@iki.fi>");
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 110) MODULE_LICENSE("GPL");