162306a36Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0+
262306a36Sopenharmony_ci// Copyright (c) 2019 Clément Péron
362306a36Sopenharmony_ci
462306a36Sopenharmony_ci#include <media/rc-map.h>
562306a36Sopenharmony_ci#include <linux/module.h>
662306a36Sopenharmony_ci
762306a36Sopenharmony_ci/*
862306a36Sopenharmony_ci * Keymap for the Beelink GS1 remote control
962306a36Sopenharmony_ci */
1062306a36Sopenharmony_ci
1162306a36Sopenharmony_cistatic struct rc_map_table beelink_gs1_table[] = {
1262306a36Sopenharmony_ci	/*
1362306a36Sopenharmony_ci	 * TV Keys (Power, Learn and Volume)
1462306a36Sopenharmony_ci	 * { 0x40400d, KEY_TV },
1562306a36Sopenharmony_ci	 * { 0x80f1, KEY_TV },
1662306a36Sopenharmony_ci	 * { 0x80f3, KEY_TV },
1762306a36Sopenharmony_ci	 * { 0x80f4, KEY_TV },
1862306a36Sopenharmony_ci	 */
1962306a36Sopenharmony_ci
2062306a36Sopenharmony_ci	{ 0x8051, KEY_POWER },
2162306a36Sopenharmony_ci	{ 0x804d, KEY_MUTE },
2262306a36Sopenharmony_ci	{ 0x8040, KEY_CONFIG },
2362306a36Sopenharmony_ci
2462306a36Sopenharmony_ci	{ 0x8026, KEY_UP },
2562306a36Sopenharmony_ci	{ 0x8028, KEY_DOWN },
2662306a36Sopenharmony_ci	{ 0x8025, KEY_LEFT },
2762306a36Sopenharmony_ci	{ 0x8027, KEY_RIGHT },
2862306a36Sopenharmony_ci	{ 0x800d, KEY_OK },
2962306a36Sopenharmony_ci
3062306a36Sopenharmony_ci	{ 0x8053, KEY_HOME },
3162306a36Sopenharmony_ci	{ 0x80bc, KEY_MEDIA },
3262306a36Sopenharmony_ci	{ 0x801b, KEY_BACK },
3362306a36Sopenharmony_ci	{ 0x8049, KEY_MENU },
3462306a36Sopenharmony_ci
3562306a36Sopenharmony_ci	{ 0x804e, KEY_VOLUMEUP },
3662306a36Sopenharmony_ci	{ 0x8056, KEY_VOLUMEDOWN },
3762306a36Sopenharmony_ci
3862306a36Sopenharmony_ci	{ 0x8054, KEY_SUBTITLE }, /* Web */
3962306a36Sopenharmony_ci	{ 0x8052, KEY_EPG }, /* Media */
4062306a36Sopenharmony_ci
4162306a36Sopenharmony_ci	{ 0x8041, KEY_CHANNELUP },
4262306a36Sopenharmony_ci	{ 0x8042, KEY_CHANNELDOWN },
4362306a36Sopenharmony_ci
4462306a36Sopenharmony_ci	{ 0x8031, KEY_1 },
4562306a36Sopenharmony_ci	{ 0x8032, KEY_2 },
4662306a36Sopenharmony_ci	{ 0x8033, KEY_3 },
4762306a36Sopenharmony_ci
4862306a36Sopenharmony_ci	{ 0x8034, KEY_4 },
4962306a36Sopenharmony_ci	{ 0x8035, KEY_5 },
5062306a36Sopenharmony_ci	{ 0x8036, KEY_6 },
5162306a36Sopenharmony_ci
5262306a36Sopenharmony_ci	{ 0x8037, KEY_7 },
5362306a36Sopenharmony_ci	{ 0x8038, KEY_8 },
5462306a36Sopenharmony_ci	{ 0x8039, KEY_9 },
5562306a36Sopenharmony_ci
5662306a36Sopenharmony_ci	{ 0x8044, KEY_DELETE },
5762306a36Sopenharmony_ci	{ 0x8030, KEY_0 },
5862306a36Sopenharmony_ci	{ 0x8058, KEY_MODE }, /* # Input Method */
5962306a36Sopenharmony_ci};
6062306a36Sopenharmony_ci
6162306a36Sopenharmony_cistatic struct rc_map_list beelink_gs1_map = {
6262306a36Sopenharmony_ci	.map = {
6362306a36Sopenharmony_ci		.scan     = beelink_gs1_table,
6462306a36Sopenharmony_ci		.size     = ARRAY_SIZE(beelink_gs1_table),
6562306a36Sopenharmony_ci		.rc_proto = RC_PROTO_NEC,
6662306a36Sopenharmony_ci		.name     = RC_MAP_BEELINK_GS1,
6762306a36Sopenharmony_ci	}
6862306a36Sopenharmony_ci};
6962306a36Sopenharmony_ci
7062306a36Sopenharmony_cistatic int __init init_rc_map_beelink_gs1(void)
7162306a36Sopenharmony_ci{
7262306a36Sopenharmony_ci	return rc_map_register(&beelink_gs1_map);
7362306a36Sopenharmony_ci}
7462306a36Sopenharmony_ci
7562306a36Sopenharmony_cistatic void __exit exit_rc_map_beelink_gs1(void)
7662306a36Sopenharmony_ci{
7762306a36Sopenharmony_ci	rc_map_unregister(&beelink_gs1_map);
7862306a36Sopenharmony_ci}
7962306a36Sopenharmony_ci
8062306a36Sopenharmony_cimodule_init(init_rc_map_beelink_gs1)
8162306a36Sopenharmony_cimodule_exit(exit_rc_map_beelink_gs1)
8262306a36Sopenharmony_ci
8362306a36Sopenharmony_ciMODULE_LICENSE("GPL");
8462306a36Sopenharmony_ciMODULE_AUTHOR("Clément Péron <peron.clem@gmail.com>");
85