]>
Commit | Line | Data |
---|---|---|
c942fddf | 1 | // SPDX-License-Identifier: GPL-2.0-or-later |
a1497357 MA |
2 | /* |
3 | Mantis PCI bridge driver | |
4 | ||
5 | Copyright (C) Manu Abraham (abraham.manu@gmail.com) | |
6 | ||
a1497357 MA |
7 | */ |
8 | ||
6bda9644 | 9 | #include <media/rc-core.h> |
a1497357 MA |
10 | #include <linux/pci.h> |
11 | ||
fada1935 MCC |
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> | |
a1497357 MA |
17 | |
18 | #include "mantis_common.h" | |
a96762da | 19 | #include "mantis_input.h" |
a1497357 | 20 | |
727e625c | 21 | #define MODULE_NAME "mantis_core" |
a96762da JK |
22 | |
23 | void mantis_input_process(struct mantis_pci *mantis, int scancode) | |
24 | { | |
25 | if (mantis->rc) | |
6d741bfe | 26 | rc_keydown(mantis->rc, RC_PROTO_UNKNOWN, scancode, 0); |
a96762da | 27 | } |
a1497357 MA |
28 | |
29 | int mantis_input_init(struct mantis_pci *mantis) | |
30 | { | |
d8b4b582 | 31 | struct rc_dev *dev; |
a1497357 MA |
32 | int err; |
33 | ||
0f7499fd | 34 | dev = rc_allocate_device(RC_DRIVER_SCANCODE); |
d8b4b582 DH |
35 | if (!dev) { |
36 | dprintk(MANTIS_ERROR, 1, "Remote device allocation failed"); | |
37 | err = -ENOMEM; | |
a96762da | 38 | goto out; |
d8b4b582 | 39 | } |
a1497357 | 40 | |
518f4b26 | 41 | snprintf(mantis->device_name, sizeof(mantis->device_name), |
9d605e63 | 42 | "Mantis %s IR receiver", mantis->hwconfig->model_name); |
a96762da | 43 | snprintf(mantis->input_phys, sizeof(mantis->input_phys), |
9d605e63 | 44 | "pci-%s/ir0", pci_name(mantis->pdev)); |
a1497357 | 45 | |
518f4b26 | 46 | dev->device_name = mantis->device_name; |
d8b4b582 DH |
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; | |
a96762da | 53 | dev->map_name = mantis->rc_map_name ? : RC_MAP_EMPTY; |
d8b4b582 | 54 | dev->dev.parent = &mantis->pdev->dev; |
a1497357 | 55 | |
d8b4b582 | 56 | err = rc_register_device(dev); |
a1497357 MA |
57 | if (err) { |
58 | dprintk(MANTIS_ERROR, 1, "IR device registration failed, ret = %d", err); | |
d8b4b582 | 59 | goto out_dev; |
a1497357 MA |
60 | } |
61 | ||
d8b4b582 | 62 | mantis->rc = dev; |
a1497357 | 63 | return 0; |
d8b4b582 DH |
64 | |
65 | out_dev: | |
66 | rc_free_device(dev); | |
d8b4b582 DH |
67 | out: |
68 | return err; | |
a1497357 | 69 | } |
a96762da | 70 | EXPORT_SYMBOL_GPL(mantis_input_init); |
a1497357 | 71 | |
a96762da | 72 | void mantis_input_exit(struct mantis_pci *mantis) |
a1497357 | 73 | { |
d8b4b582 | 74 | rc_unregister_device(mantis->rc); |
a1497357 | 75 | } |
a96762da | 76 | EXPORT_SYMBOL_GPL(mantis_input_exit); |