1 | // SPDX-License-Identifier: GPL-2.0-or-later |
2 | /* |
3 | Mantis PCI bridge driver |
4 | |
5 | Copyright (C) Manu Abraham (abraham.manu@gmail.com) |
6 | |
7 | */ |
8 | |
9 | #include <media/rc-core.h> |
10 | #include <linux/pci.h> |
11 | |
12 | #include <media/dmxdev.h> |
13 | #include <media/dvbdev.h> |
14 | #include <media/dvb_demux.h> |
15 | #include <media/dvb_frontend.h> |
16 | #include <media/dvb_net.h> |
17 | |
18 | #include "mantis_common.h" |
19 | #include "mantis_input.h" |
20 | |
21 | #define MODULE_NAME "mantis_core" |
22 | |
23 | void mantis_input_process(struct mantis_pci *mantis, int scancode) |
24 | { |
25 | if (mantis->rc) |
26 | rc_keydown(dev: mantis->rc, protocol: RC_PROTO_UNKNOWN, scancode, toggle: 0); |
27 | } |
28 | |
29 | int mantis_input_init(struct mantis_pci *mantis) |
30 | { |
31 | struct rc_dev *dev; |
32 | int err; |
33 | |
34 | dev = rc_allocate_device(RC_DRIVER_SCANCODE); |
35 | if (!dev) { |
36 | dprintk(MANTIS_ERROR, 1, "Remote device allocation failed" ); |
37 | err = -ENOMEM; |
38 | goto out; |
39 | } |
40 | |
41 | snprintf(buf: mantis->device_name, size: sizeof(mantis->device_name), |
42 | fmt: "Mantis %s IR receiver" , mantis->hwconfig->model_name); |
43 | snprintf(buf: mantis->input_phys, size: sizeof(mantis->input_phys), |
44 | fmt: "pci-%s/ir0" , pci_name(pdev: mantis->pdev)); |
45 | |
46 | dev->device_name = mantis->device_name; |
47 | dev->input_phys = mantis->input_phys; |
48 | dev->input_id.bustype = BUS_PCI; |
49 | dev->input_id.vendor = mantis->vendor_id; |
50 | dev->input_id.product = mantis->device_id; |
51 | dev->input_id.version = 1; |
52 | dev->driver_name = MODULE_NAME; |
53 | dev->map_name = mantis->rc_map_name ? : RC_MAP_EMPTY; |
54 | dev->dev.parent = &mantis->pdev->dev; |
55 | |
56 | err = rc_register_device(dev); |
57 | if (err) { |
58 | dprintk(MANTIS_ERROR, 1, "IR device registration failed, ret = %d" , err); |
59 | goto out_dev; |
60 | } |
61 | |
62 | mantis->rc = dev; |
63 | return 0; |
64 | |
65 | out_dev: |
66 | rc_free_device(dev); |
67 | out: |
68 | return err; |
69 | } |
70 | EXPORT_SYMBOL_GPL(mantis_input_init); |
71 | |
72 | void mantis_input_exit(struct mantis_pci *mantis) |
73 | { |
74 | rc_unregister_device(dev: mantis->rc); |
75 | } |
76 | EXPORT_SYMBOL_GPL(mantis_input_exit); |
77 | |