diff options
Diffstat (limited to 'drivers/media/rc')
-rw-r--r-- | drivers/media/rc/gpio-ir-recv.c | 8 | ||||
-rw-r--r-- | drivers/media/rc/img-ir/img-ir-core.c | 5 | ||||
-rw-r--r-- | drivers/media/rc/ir-hix5hd2.c | 5 | ||||
-rw-r--r-- | drivers/media/rc/keymaps/Makefile | 2 | ||||
-rw-r--r-- | drivers/media/rc/keymaps/rc-beelink-mxiii.c | 57 | ||||
-rw-r--r-- | drivers/media/rc/keymaps/rc-dreambox.c | 151 | ||||
-rw-r--r-- | drivers/media/rc/lirc_dev.c | 2 | ||||
-rw-r--r-- | drivers/media/rc/meson-ir-tx.c | 6 | ||||
-rw-r--r-- | drivers/media/rc/meson-ir.c | 6 | ||||
-rw-r--r-- | drivers/media/rc/mtk-cir.c | 6 | ||||
-rw-r--r-- | drivers/media/rc/st_rc.c | 5 | ||||
-rw-r--r-- | drivers/media/rc/sunxi-cir.c | 6 |
12 files changed, 229 insertions, 30 deletions
diff --git a/drivers/media/rc/gpio-ir-recv.c b/drivers/media/rc/gpio-ir-recv.c index 8dbe780dae4e..27f55ea966c6 100644 --- a/drivers/media/rc/gpio-ir-recv.c +++ b/drivers/media/rc/gpio-ir-recv.c @@ -103,6 +103,8 @@ static int gpio_ir_recv_probe(struct platform_device *pdev) rcdev->map_name = RC_MAP_EMPTY; gpio_dev->rcdev = rcdev; + if (of_property_read_bool(np, "wakeup-source")) + device_init_wakeup(dev, true); rc = devm_rc_register_device(dev, rcdev); if (rc < 0) { @@ -126,7 +128,7 @@ static int gpio_ir_recv_probe(struct platform_device *pdev) "gpio-ir-recv-irq", gpio_dev); } -static int gpio_ir_recv_remove(struct platform_device *pdev) +static void gpio_ir_recv_remove(struct platform_device *pdev) { struct gpio_rc_dev *gpio_dev = platform_get_drvdata(pdev); struct device *pmdev = gpio_dev->pmdev; @@ -139,8 +141,6 @@ static int gpio_ir_recv_remove(struct platform_device *pdev) pm_runtime_put_noidle(pmdev); pm_runtime_set_suspended(pmdev); } - - return 0; } #ifdef CONFIG_PM @@ -202,7 +202,7 @@ MODULE_DEVICE_TABLE(of, gpio_ir_recv_of_match); static struct platform_driver gpio_ir_recv_driver = { .probe = gpio_ir_recv_probe, - .remove = gpio_ir_recv_remove, + .remove_new = gpio_ir_recv_remove, .driver = { .name = KBUILD_MODNAME, .of_match_table = of_match_ptr(gpio_ir_recv_of_match), diff --git a/drivers/media/rc/img-ir/img-ir-core.c b/drivers/media/rc/img-ir/img-ir-core.c index 6f8464872033..d87d8e14c556 100644 --- a/drivers/media/rc/img-ir/img-ir-core.c +++ b/drivers/media/rc/img-ir/img-ir-core.c @@ -152,7 +152,7 @@ err_probe: return error; } -static int img_ir_remove(struct platform_device *pdev) +static void img_ir_remove(struct platform_device *pdev) { struct img_ir_priv *priv = platform_get_drvdata(pdev); @@ -164,7 +164,6 @@ static int img_ir_remove(struct platform_device *pdev) clk_disable_unprepare(priv->clk); if (!IS_ERR(priv->sys_clk)) clk_disable_unprepare(priv->sys_clk); - return 0; } static SIMPLE_DEV_PM_OPS(img_ir_pmops, img_ir_suspend, img_ir_resume); @@ -182,7 +181,7 @@ static struct platform_driver img_ir_driver = { .pm = &img_ir_pmops, }, .probe = img_ir_probe, - .remove = img_ir_remove, + .remove_new = img_ir_remove, }; module_platform_driver(img_ir_driver); diff --git a/drivers/media/rc/ir-hix5hd2.c b/drivers/media/rc/ir-hix5hd2.c index 4ff954b11dc7..0034f615b466 100644 --- a/drivers/media/rc/ir-hix5hd2.c +++ b/drivers/media/rc/ir-hix5hd2.c @@ -340,13 +340,12 @@ err: return ret; } -static int hix5hd2_ir_remove(struct platform_device *pdev) +static void hix5hd2_ir_remove(struct platform_device *pdev) { struct hix5hd2_ir_priv *priv = platform_get_drvdata(pdev); clk_disable_unprepare(priv->clock); rc_unregister_device(priv->rdev); - return 0; } #ifdef CONFIG_PM_SLEEP @@ -395,7 +394,7 @@ static struct platform_driver hix5hd2_ir_driver = { .pm = &hix5hd2_ir_pm_ops, }, .probe = hix5hd2_ir_probe, - .remove = hix5hd2_ir_remove, + .remove_new = hix5hd2_ir_remove, }; module_platform_driver(hix5hd2_ir_driver); diff --git a/drivers/media/rc/keymaps/Makefile b/drivers/media/rc/keymaps/Makefile index f513ff5caf4e..f19558fdab0c 100644 --- a/drivers/media/rc/keymaps/Makefile +++ b/drivers/media/rc/keymaps/Makefile @@ -22,6 +22,7 @@ obj-$(CONFIG_RC_MAP) += \ rc-avertv-303.o \ rc-azurewave-ad-tu700.o \ rc-beelink-gs1.o \ + rc-beelink-mxiii.o \ rc-behold-columbus.o \ rc-behold.o \ rc-budget-ci-old.o \ @@ -37,6 +38,7 @@ obj-$(CONFIG_RC_MAP) += \ rc-dm1105-nec.o \ rc-dntv-live-dvb-t.o \ rc-dntv-live-dvbt-pro.o \ + rc-dreambox.o \ rc-dtt200u.o \ rc-dvbsky.o \ rc-dvico-mce.o \ diff --git a/drivers/media/rc/keymaps/rc-beelink-mxiii.c b/drivers/media/rc/keymaps/rc-beelink-mxiii.c new file mode 100644 index 000000000000..01180cd92205 --- /dev/null +++ b/drivers/media/rc/keymaps/rc-beelink-mxiii.c @@ -0,0 +1,57 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright (C) 2019 Christian Hewitt <christianshewitt@gmail.com> + * + */ + +#include <media/rc-map.h> +#include <linux/module.h> + +/* + * Keytable for the Beelink Mini MXIII remote control + * + */ + +static struct rc_map_table beelink_mxiii[] = { + { 0xb2dc, KEY_POWER }, + + { 0xb288, KEY_MUTE }, + { 0xb282, KEY_HOME }, + + { 0xb2ca, KEY_UP }, + { 0xb299, KEY_LEFT }, + { 0xb2ce, KEY_OK }, + { 0xb2c1, KEY_RIGHT }, + { 0xb2d2, KEY_DOWN }, + + { 0xb2c5, KEY_MENU }, + { 0xb29a, KEY_BACK }, + + { 0xb281, KEY_VOLUMEDOWN }, + { 0xb280, KEY_VOLUMEUP }, +}; + +static struct rc_map_list beelink_mxiii_map = { + .map = { + .scan = beelink_mxiii, + .size = ARRAY_SIZE(beelink_mxiii), + .rc_proto = RC_PROTO_NEC, + .name = RC_MAP_BEELINK_MXIII, + } +}; + +static int __init init_rc_map_beelink_mxiii(void) +{ + return rc_map_register(&beelink_mxiii_map); +} + +static void __exit exit_rc_map_beelink_mxiii(void) +{ + rc_map_unregister(&beelink_mxiii_map); +} + +module_init(init_rc_map_beelink_mxiii) +module_exit(exit_rc_map_beelink_mxiii) + +MODULE_LICENSE("GPL"); +MODULE_AUTHOR("Christian Hewitt <christianshewitt@gmail.com"); diff --git a/drivers/media/rc/keymaps/rc-dreambox.c b/drivers/media/rc/keymaps/rc-dreambox.c new file mode 100644 index 000000000000..dea024fa3a22 --- /dev/null +++ b/drivers/media/rc/keymaps/rc-dreambox.c @@ -0,0 +1,151 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright (c) 2021 Emanuel Strobel <emanuel.strobel@yahoo.com> + */ + +#include <media/rc-map.h> +#include <linux/module.h> + +/* + * Keytable for Dreambox RC10/RC0 and RC20/RC-BT remote controls + * + * Keys that are not IR addressable: + * + * // DREAM switches to STB control mode + * // TV switches to TV control mode + * // MODE toggles STB/TV/BT control modes + * + */ + +static struct rc_map_table dreambox[] = { + /* Dreambox RC10/RC0/RCU-BT remote */ + { 0x3200, KEY_POWER }, + + // DREAM + { 0x3290, KEY_HELP }, + // TV + + { 0x3201, KEY_1 }, + { 0x3202, KEY_2 }, + { 0x3203, KEY_3 }, + { 0x3204, KEY_4 }, + { 0x3205, KEY_5 }, + { 0x3206, KEY_6 }, + { 0x3207, KEY_7 }, + { 0x3208, KEY_8 }, + { 0x3209, KEY_9 }, + { 0x320a, KEY_PREVIOUS }, + { 0x320b, KEY_0 }, + { 0x320c, KEY_NEXT }, + + { 0x321f, KEY_RED }, + { 0x3220, KEY_GREEN }, + { 0x3221, KEY_YELLOW }, + { 0x3222, KEY_BLUE }, + + { 0x3210, KEY_INFO }, + { 0x3212, KEY_MENU }, + { 0x320e, KEY_AUDIO }, + { 0x3218, KEY_PVR }, + + { 0x3213, KEY_LEFT }, + { 0x3211, KEY_UP }, + { 0x3215, KEY_RIGHT }, + { 0x3217, KEY_DOWN }, + { 0x3214, KEY_OK }, + + { 0x3219, KEY_VOLUMEUP }, + { 0x321c, KEY_VOLUMEDOWN }, + + { 0x321d, KEY_ESC }, // EXIT + { 0x321a, KEY_MUTE }, + + { 0x321b, KEY_PAGEUP }, + { 0x321e, KEY_PAGEDOWN }, + + { 0x3223, KEY_PREVIOUSSONG }, + { 0x3224, KEY_PLAYPAUSE }, + { 0x3225, KEY_STOP }, + { 0x3226, KEY_NEXTSONG }, + + { 0x3227, KEY_TV }, + { 0x3228, KEY_RADIO }, + { 0x3229, KEY_TEXT }, + { 0x322a, KEY_RECORD }, + + /* Dreambox RC20/RC-BT */ + { 0x3407, KEY_MUTE }, + // MODE + { 0x3401, KEY_POWER }, + + { 0x3432, KEY_PREVIOUSSONG }, + { 0x3433, KEY_PLAYPAUSE }, + { 0x3435, KEY_NEXTSONG }, + + { 0x3436, KEY_RECORD }, + { 0x3434, KEY_STOP }, + { 0x3425, KEY_TEXT }, + + { 0x341f, KEY_RED }, + { 0x3420, KEY_GREEN }, + { 0x3421, KEY_YELLOW }, + { 0x3422, KEY_BLUE }, + + { 0x341b, KEY_INFO }, + { 0x341c, KEY_MENU }, + { 0x3430, KEY_AUDIO }, + { 0x3431, KEY_PVR }, + + { 0x3414, KEY_LEFT }, + { 0x3411, KEY_UP }, + { 0x3416, KEY_RIGHT }, + { 0x3419, KEY_DOWN }, + { 0x3415, KEY_OK }, + + { 0x3413, KEY_VOLUMEUP }, + { 0x3418, KEY_VOLUMEDOWN }, + + { 0x3412, KEY_ESC }, // EXIT + { 0x3426, KEY_HELP }, // MIC + + { 0x3417, KEY_PAGEUP }, + { 0x341a, KEY_PAGEDOWN }, + + { 0x3404, KEY_1 }, + { 0x3405, KEY_2 }, + { 0x3406, KEY_3 }, + { 0x3408, KEY_4 }, + { 0x3409, KEY_5 }, + { 0x340a, KEY_6 }, + { 0x340c, KEY_7 }, + { 0x340d, KEY_8 }, + { 0x340e, KEY_9 }, + { 0x340b, KEY_PREVIOUS }, + { 0x3410, KEY_0 }, + { 0x340f, KEY_NEXT }, +}; + +static struct rc_map_list dreambox_map = { + .map = { + .scan = dreambox, + .size = ARRAY_SIZE(dreambox), + .rc_proto = RC_PROTO_NEC, + .name = RC_MAP_DREAMBOX, + } +}; + +static int __init init_rc_map_dreambox(void) +{ + return rc_map_register(&dreambox_map); +} + +static void __exit exit_rc_map_dreambox(void) +{ + rc_map_unregister(&dreambox_map); +} + +module_init(init_rc_map_dreambox) +module_exit(exit_rc_map_dreambox) + +MODULE_LICENSE("GPL"); +MODULE_AUTHOR("Emanuel Strobel <emanuel.strobel@yahoo.com>"); diff --git a/drivers/media/rc/lirc_dev.c b/drivers/media/rc/lirc_dev.c index 25ab61dae126..043d23aaa3cb 100644 --- a/drivers/media/rc/lirc_dev.c +++ b/drivers/media/rc/lirc_dev.c @@ -785,7 +785,7 @@ int __init lirc_dev_init(void) { int retval; - lirc_class = class_create(THIS_MODULE, "lirc"); + lirc_class = class_create("lirc"); if (IS_ERR(lirc_class)) { pr_err("class_create failed\n"); return PTR_ERR(lirc_class); diff --git a/drivers/media/rc/meson-ir-tx.c b/drivers/media/rc/meson-ir-tx.c index abdb62b16e98..6355b79893fb 100644 --- a/drivers/media/rc/meson-ir-tx.c +++ b/drivers/media/rc/meson-ir-tx.c @@ -372,13 +372,11 @@ static int __init meson_irtx_probe(struct platform_device *pdev) return 0; } -static int meson_irtx_remove(struct platform_device *pdev) +static void meson_irtx_remove(struct platform_device *pdev) { struct rc_dev *rc = platform_get_drvdata(pdev); rc_unregister_device(rc); - - return 0; } static const struct of_device_id meson_irtx_dt_match[] = { @@ -390,7 +388,7 @@ static const struct of_device_id meson_irtx_dt_match[] = { MODULE_DEVICE_TABLE(of, meson_irtx_dt_match); static struct platform_driver meson_irtx_pd = { - .remove = meson_irtx_remove, + .remove_new = meson_irtx_remove, .driver = { .name = DRIVER_NAME, .of_match_table = meson_irtx_dt_match, diff --git a/drivers/media/rc/meson-ir.c b/drivers/media/rc/meson-ir.c index 4b769111f78e..49aa309d1a8c 100644 --- a/drivers/media/rc/meson-ir.c +++ b/drivers/media/rc/meson-ir.c @@ -177,7 +177,7 @@ static int meson_ir_probe(struct platform_device *pdev) return 0; } -static int meson_ir_remove(struct platform_device *pdev) +static void meson_ir_remove(struct platform_device *pdev) { struct meson_ir *ir = platform_get_drvdata(pdev); unsigned long flags; @@ -186,8 +186,6 @@ static int meson_ir_remove(struct platform_device *pdev) spin_lock_irqsave(&ir->lock, flags); meson_ir_set_mask(ir, IR_DEC_REG1, REG1_ENABLE, 0); spin_unlock_irqrestore(&ir->lock, flags); - - return 0; } static void meson_ir_shutdown(struct platform_device *pdev) @@ -226,7 +224,7 @@ MODULE_DEVICE_TABLE(of, meson_ir_match); static struct platform_driver meson_ir_driver = { .probe = meson_ir_probe, - .remove = meson_ir_remove, + .remove_new = meson_ir_remove, .shutdown = meson_ir_shutdown, .driver = { .name = DRIVER_NAME, diff --git a/drivers/media/rc/mtk-cir.c b/drivers/media/rc/mtk-cir.c index 27b7412d02a5..df9349330a93 100644 --- a/drivers/media/rc/mtk-cir.c +++ b/drivers/media/rc/mtk-cir.c @@ -420,7 +420,7 @@ exit_clkdisable_clk: return ret; } -static int mtk_ir_remove(struct platform_device *pdev) +static void mtk_ir_remove(struct platform_device *pdev) { struct mtk_ir *ir = platform_get_drvdata(pdev); @@ -434,13 +434,11 @@ static int mtk_ir_remove(struct platform_device *pdev) clk_disable_unprepare(ir->bus); clk_disable_unprepare(ir->clk); - - return 0; } static struct platform_driver mtk_ir_driver = { .probe = mtk_ir_probe, - .remove = mtk_ir_remove, + .remove_new = mtk_ir_remove, .driver = { .name = MTK_IR_DEV, .of_match_table = mtk_ir_match, diff --git a/drivers/media/rc/st_rc.c b/drivers/media/rc/st_rc.c index 19e987a048cc..28477aa95563 100644 --- a/drivers/media/rc/st_rc.c +++ b/drivers/media/rc/st_rc.c @@ -194,7 +194,7 @@ static int st_rc_hardware_init(struct st_rc_device *dev) return 0; } -static int st_rc_remove(struct platform_device *pdev) +static void st_rc_remove(struct platform_device *pdev) { struct st_rc_device *rc_dev = platform_get_drvdata(pdev); @@ -202,7 +202,6 @@ static int st_rc_remove(struct platform_device *pdev) device_init_wakeup(&pdev->dev, false); clk_disable_unprepare(rc_dev->sys_clock); rc_unregister_device(rc_dev->rdev); - return 0; } static int st_rc_open(struct rc_dev *rdev) @@ -408,7 +407,7 @@ static struct platform_driver st_rc_driver = { .pm = &st_rc_pm_ops, }, .probe = st_rc_probe, - .remove = st_rc_remove, + .remove_new = st_rc_remove, }; module_platform_driver(st_rc_driver); diff --git a/drivers/media/rc/sunxi-cir.c b/drivers/media/rc/sunxi-cir.c index b631a81e58bb..75b7aed1579c 100644 --- a/drivers/media/rc/sunxi-cir.c +++ b/drivers/media/rc/sunxi-cir.c @@ -364,14 +364,12 @@ exit_free_dev: return ret; } -static int sunxi_ir_remove(struct platform_device *pdev) +static void sunxi_ir_remove(struct platform_device *pdev) { struct sunxi_ir *ir = platform_get_drvdata(pdev); rc_unregister_device(ir->rc); sunxi_ir_hw_exit(&pdev->dev); - - return 0; } static void sunxi_ir_shutdown(struct platform_device *pdev) @@ -413,7 +411,7 @@ MODULE_DEVICE_TABLE(of, sunxi_ir_match); static struct platform_driver sunxi_ir_driver = { .probe = sunxi_ir_probe, - .remove = sunxi_ir_remove, + .remove_new = sunxi_ir_remove, .shutdown = sunxi_ir_shutdown, .driver = { .name = SUNXI_IR_DEV, |