162306a36Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0+ 262306a36Sopenharmony_ci// Keytable for Xbox 360 Universal Media remote 362306a36Sopenharmony_ci// Copyright (c) 2021 Bastien Nocera <hadess@hadess.net> 462306a36Sopenharmony_ci 562306a36Sopenharmony_ci#include <media/rc-map.h> 662306a36Sopenharmony_ci#include <linux/module.h> 762306a36Sopenharmony_ci 862306a36Sopenharmony_ci/* 962306a36Sopenharmony_ci * Manual for remote available at: 1062306a36Sopenharmony_ci * http://download.microsoft.com/download/b/c/e/bce76f3f-db51-4c98-b79d-b3d21e90ccc1/universalmediaremote_na_0609.pdf 1162306a36Sopenharmony_ci */ 1262306a36Sopenharmony_cistatic struct rc_map_table xbox_360[] = { 1362306a36Sopenharmony_ci {KEY_EJECTCD, 0x800f7428}, 1462306a36Sopenharmony_ci {KEY_HOMEPAGE, 0x800f7464}, 1562306a36Sopenharmony_ci {KEY_POWER, 0x800f740c}, 1662306a36Sopenharmony_ci {KEY_STOP, 0x800f7419}, 1762306a36Sopenharmony_ci {KEY_PAUSE, 0x800f7418}, 1862306a36Sopenharmony_ci {KEY_REWIND, 0x800f7415}, 1962306a36Sopenharmony_ci {KEY_FASTFORWARD, 0x800f7414}, 2062306a36Sopenharmony_ci {KEY_PREVIOUS, 0x800f741b}, 2162306a36Sopenharmony_ci {KEY_NEXT, 0x800f741a}, 2262306a36Sopenharmony_ci {KEY_PLAY, 0x800f7416}, 2362306a36Sopenharmony_ci {KEY_PROPS, 0x800f744f}, /* "Display" */ 2462306a36Sopenharmony_ci {KEY_BACK, 0x800f7423}, 2562306a36Sopenharmony_ci {KEY_MEDIA_TOP_MENU, 0x800f7424}, /* "DVD Menu" */ 2662306a36Sopenharmony_ci {KEY_ROOT_MENU, 0x800f7451}, /* "Title" */ 2762306a36Sopenharmony_ci {KEY_INFO, 0x800f740f}, 2862306a36Sopenharmony_ci {KEY_UP, 0x800f741e}, 2962306a36Sopenharmony_ci {KEY_LEFT, 0x800f7420}, 3062306a36Sopenharmony_ci {KEY_RIGHT, 0x800f7421}, 3162306a36Sopenharmony_ci {KEY_DOWN, 0x800f741f}, 3262306a36Sopenharmony_ci {KEY_OK, 0x800f7422}, 3362306a36Sopenharmony_ci {KEY_YELLOW, 0x800f7426}, 3462306a36Sopenharmony_ci {KEY_BLUE, 0x800f7468}, 3562306a36Sopenharmony_ci {KEY_GREEN, 0x800f7466}, 3662306a36Sopenharmony_ci {KEY_RED, 0x800f7425}, 3762306a36Sopenharmony_ci {KEY_VOLUMEUP, 0x800f7410}, 3862306a36Sopenharmony_ci {KEY_VOLUMEDOWN, 0x800f7411}, 3962306a36Sopenharmony_ci /* TV key doesn't light the IR LED */ 4062306a36Sopenharmony_ci {KEY_MUTE, 0x800f740e}, 4162306a36Sopenharmony_ci {KEY_CHANNELUP, 0x800f746c}, 4262306a36Sopenharmony_ci {KEY_CHANNELDOWN, 0x800f746d}, 4362306a36Sopenharmony_ci {KEY_LEFTMETA, 0x800f740d}, 4462306a36Sopenharmony_ci {KEY_ENTER, 0x800f740b}, 4562306a36Sopenharmony_ci {KEY_RECORD, 0x800f7417}, 4662306a36Sopenharmony_ci {KEY_CLEAR, 0x800f740a}, 4762306a36Sopenharmony_ci {KEY_NUMERIC_1, 0x800f7401}, 4862306a36Sopenharmony_ci {KEY_NUMERIC_2, 0x800f7402}, 4962306a36Sopenharmony_ci {KEY_NUMERIC_3, 0x800f7403}, 5062306a36Sopenharmony_ci {KEY_NUMERIC_4, 0x800f7404}, 5162306a36Sopenharmony_ci {KEY_NUMERIC_5, 0x800f7405}, 5262306a36Sopenharmony_ci {KEY_NUMERIC_6, 0x800f7406}, 5362306a36Sopenharmony_ci {KEY_NUMERIC_7, 0x800f7407}, 5462306a36Sopenharmony_ci {KEY_NUMERIC_8, 0x800f7408}, 5562306a36Sopenharmony_ci {KEY_NUMERIC_9, 0x800f7409}, 5662306a36Sopenharmony_ci {KEY_NUMERIC_0, 0x800f7400}, 5762306a36Sopenharmony_ci {KEY_102ND, 0x800f741d}, /* "100" */ 5862306a36Sopenharmony_ci {KEY_CANCEL, 0x800f741c}, 5962306a36Sopenharmony_ci}; 6062306a36Sopenharmony_ci 6162306a36Sopenharmony_cistatic struct rc_map_list xbox_360_map = { 6262306a36Sopenharmony_ci .map = { 6362306a36Sopenharmony_ci .scan = xbox_360, 6462306a36Sopenharmony_ci .size = ARRAY_SIZE(xbox_360), 6562306a36Sopenharmony_ci .rc_proto = RC_PROTO_RC6_MCE, 6662306a36Sopenharmony_ci .name = RC_MAP_XBOX_360, 6762306a36Sopenharmony_ci } 6862306a36Sopenharmony_ci}; 6962306a36Sopenharmony_ci 7062306a36Sopenharmony_cistatic int __init init_rc_map(void) 7162306a36Sopenharmony_ci{ 7262306a36Sopenharmony_ci return rc_map_register(&xbox_360_map); 7362306a36Sopenharmony_ci} 7462306a36Sopenharmony_ci 7562306a36Sopenharmony_cistatic void __exit exit_rc_map(void) 7662306a36Sopenharmony_ci{ 7762306a36Sopenharmony_ci rc_map_unregister(&xbox_360_map); 7862306a36Sopenharmony_ci} 7962306a36Sopenharmony_ci 8062306a36Sopenharmony_cimodule_init(init_rc_map) 8162306a36Sopenharmony_cimodule_exit(exit_rc_map) 8262306a36Sopenharmony_ci 8362306a36Sopenharmony_ciMODULE_LICENSE("GPL"); 84