diff options
Diffstat (limited to 'drivers/media/dvb/siano')
-rw-r--r-- | drivers/media/dvb/siano/Kconfig | 2 | ||||
-rw-r--r-- | drivers/media/dvb/siano/sms-cards.c | 2 | ||||
-rw-r--r-- | drivers/media/dvb/siano/smscoreapi.c | 5 | ||||
-rw-r--r-- | drivers/media/dvb/siano/smsdvb.c | 2 | ||||
-rw-r--r-- | drivers/media/dvb/siano/smsir.c | 54 | ||||
-rw-r--r-- | drivers/media/dvb/siano/smsir.h | 5 | ||||
-rw-r--r-- | drivers/media/dvb/siano/smsusb.c | 12 |
7 files changed, 39 insertions, 43 deletions
diff --git a/drivers/media/dvb/siano/Kconfig b/drivers/media/dvb/siano/Kconfig index e520bceee0af..bc6456eb2c4f 100644 --- a/drivers/media/dvb/siano/Kconfig +++ b/drivers/media/dvb/siano/Kconfig | |||
@@ -4,7 +4,7 @@ | |||
4 | 4 | ||
5 | config SMS_SIANO_MDTV | 5 | config SMS_SIANO_MDTV |
6 | tristate "Siano SMS1xxx based MDTV receiver" | 6 | tristate "Siano SMS1xxx based MDTV receiver" |
7 | depends on DVB_CORE && IR_CORE && HAS_DMA | 7 | depends on DVB_CORE && RC_CORE && HAS_DMA |
8 | ---help--- | 8 | ---help--- |
9 | Choose Y or M here if you have MDTV receiver with a Siano chipset. | 9 | Choose Y or M here if you have MDTV receiver with a Siano chipset. |
10 | 10 | ||
diff --git a/drivers/media/dvb/siano/sms-cards.c b/drivers/media/dvb/siano/sms-cards.c index 25b43e587fa6..af121db88ea0 100644 --- a/drivers/media/dvb/siano/sms-cards.c +++ b/drivers/media/dvb/siano/sms-cards.c | |||
@@ -64,7 +64,7 @@ static struct sms_board sms_boards[] = { | |||
64 | .type = SMS_NOVA_B0, | 64 | .type = SMS_NOVA_B0, |
65 | .fw[DEVICE_MODE_ISDBT_BDA] = "sms1xxx-hcw-55xxx-isdbt-02.fw", | 65 | .fw[DEVICE_MODE_ISDBT_BDA] = "sms1xxx-hcw-55xxx-isdbt-02.fw", |
66 | .fw[DEVICE_MODE_DVBT_BDA] = "sms1xxx-hcw-55xxx-dvbt-02.fw", | 66 | .fw[DEVICE_MODE_DVBT_BDA] = "sms1xxx-hcw-55xxx-dvbt-02.fw", |
67 | .rc_codes = RC_MAP_RC5_HAUPPAUGE_NEW, | 67 | .rc_codes = RC_MAP_HAUPPAUGE, |
68 | .board_cfg.leds_power = 26, | 68 | .board_cfg.leds_power = 26, |
69 | .board_cfg.led0 = 27, | 69 | .board_cfg.led0 = 27, |
70 | .board_cfg.led1 = 28, | 70 | .board_cfg.led1 = 28, |
diff --git a/drivers/media/dvb/siano/smscoreapi.c b/drivers/media/dvb/siano/smscoreapi.c index ff3b0fa901b3..78765ed28063 100644 --- a/drivers/media/dvb/siano/smscoreapi.c +++ b/drivers/media/dvb/siano/smscoreapi.c | |||
@@ -438,7 +438,7 @@ static int smscore_init_ir(struct smscore_device_t *coredev) | |||
438 | int rc; | 438 | int rc; |
439 | void *buffer; | 439 | void *buffer; |
440 | 440 | ||
441 | coredev->ir.input_dev = NULL; | 441 | coredev->ir.dev = NULL; |
442 | ir_io = sms_get_board(smscore_get_board_id(coredev))->board_cfg.ir; | 442 | ir_io = sms_get_board(smscore_get_board_id(coredev))->board_cfg.ir; |
443 | if (ir_io) {/* only if IR port exist we use IR sub-module */ | 443 | if (ir_io) {/* only if IR port exist we use IR sub-module */ |
444 | sms_info("IR loading"); | 444 | sms_info("IR loading"); |
@@ -1504,8 +1504,7 @@ int smscore_gpio_set_level(struct smscore_device_t *coredev, u8 PinNum, | |||
1504 | u32 msgData[3]; /* keep it 3 ! */ | 1504 | u32 msgData[3]; /* keep it 3 ! */ |
1505 | } *pMsg; | 1505 | } *pMsg; |
1506 | 1506 | ||
1507 | if ((NewLevel > 1) || (PinNum > MAX_GPIO_PIN_NUMBER) || | 1507 | if ((NewLevel > 1) || (PinNum > MAX_GPIO_PIN_NUMBER)) |
1508 | (PinNum > MAX_GPIO_PIN_NUMBER)) | ||
1509 | return -EINVAL; | 1508 | return -EINVAL; |
1510 | 1509 | ||
1511 | totalLen = sizeof(struct SmsMsgHdr_ST) + | 1510 | totalLen = sizeof(struct SmsMsgHdr_ST) + |
diff --git a/drivers/media/dvb/siano/smsdvb.c b/drivers/media/dvb/siano/smsdvb.c index b80d09b035a1..37c594f82782 100644 --- a/drivers/media/dvb/siano/smsdvb.c +++ b/drivers/media/dvb/siano/smsdvb.c | |||
@@ -650,7 +650,7 @@ static int smsdvb_dvbt_set_frontend(struct dvb_frontend *fe, | |||
650 | if (status & FE_HAS_LOCK) | 650 | if (status & FE_HAS_LOCK) |
651 | return ret; | 651 | return ret; |
652 | 652 | ||
653 | /* previous tune didnt lock - enable LNA and tune again */ | 653 | /* previous tune didn't lock - enable LNA and tune again */ |
654 | sms_board_lna_control(client->coredev, 1); | 654 | sms_board_lna_control(client->coredev, 1); |
655 | } | 655 | } |
656 | 656 | ||
diff --git a/drivers/media/dvb/siano/smsir.c b/drivers/media/dvb/siano/smsir.c index d0e4639ee9db..37bc5c4b8ad8 100644 --- a/drivers/media/dvb/siano/smsir.c +++ b/drivers/media/dvb/siano/smsir.c | |||
@@ -40,30 +40,29 @@ void sms_ir_event(struct smscore_device_t *coredev, const char *buf, int len) | |||
40 | const s32 *samples = (const void *)buf; | 40 | const s32 *samples = (const void *)buf; |
41 | 41 | ||
42 | for (i = 0; i < len >> 2; i++) { | 42 | for (i = 0; i < len >> 2; i++) { |
43 | struct ir_raw_event ev; | 43 | DEFINE_IR_RAW_EVENT(ev); |
44 | 44 | ||
45 | ev.duration = abs(samples[i]) * 1000; /* Convert to ns */ | 45 | ev.duration = abs(samples[i]) * 1000; /* Convert to ns */ |
46 | ev.pulse = (samples[i] > 0) ? false : true; | 46 | ev.pulse = (samples[i] > 0) ? false : true; |
47 | 47 | ||
48 | ir_raw_event_store(coredev->ir.input_dev, &ev); | 48 | ir_raw_event_store(coredev->ir.dev, &ev); |
49 | } | 49 | } |
50 | ir_raw_event_handle(coredev->ir.input_dev); | 50 | ir_raw_event_handle(coredev->ir.dev); |
51 | } | 51 | } |
52 | 52 | ||
53 | int sms_ir_init(struct smscore_device_t *coredev) | 53 | int sms_ir_init(struct smscore_device_t *coredev) |
54 | { | 54 | { |
55 | struct input_dev *input_dev; | 55 | int err; |
56 | int board_id = smscore_get_board_id(coredev); | 56 | int board_id = smscore_get_board_id(coredev); |
57 | struct rc_dev *dev; | ||
57 | 58 | ||
58 | sms_log("Allocating input device"); | 59 | sms_log("Allocating rc device"); |
59 | input_dev = input_allocate_device(); | 60 | dev = rc_allocate_device(); |
60 | if (!input_dev) { | 61 | if (!dev) { |
61 | sms_err("Not enough memory"); | 62 | sms_err("Not enough memory"); |
62 | return -ENOMEM; | 63 | return -ENOMEM; |
63 | } | 64 | } |
64 | 65 | ||
65 | coredev->ir.input_dev = input_dev; | ||
66 | |||
67 | coredev->ir.controller = 0; /* Todo: vega/nova SPI number */ | 66 | coredev->ir.controller = 0; /* Todo: vega/nova SPI number */ |
68 | coredev->ir.timeout = IR_DEFAULT_TIMEOUT; | 67 | coredev->ir.timeout = IR_DEFAULT_TIMEOUT; |
69 | sms_log("IR port %d, timeout %d ms", | 68 | sms_log("IR port %d, timeout %d ms", |
@@ -75,38 +74,41 @@ int sms_ir_init(struct smscore_device_t *coredev) | |||
75 | strlcpy(coredev->ir.phys, coredev->devpath, sizeof(coredev->ir.phys)); | 74 | strlcpy(coredev->ir.phys, coredev->devpath, sizeof(coredev->ir.phys)); |
76 | strlcat(coredev->ir.phys, "/ir0", sizeof(coredev->ir.phys)); | 75 | strlcat(coredev->ir.phys, "/ir0", sizeof(coredev->ir.phys)); |
77 | 76 | ||
78 | input_dev->name = coredev->ir.name; | 77 | dev->input_name = coredev->ir.name; |
79 | input_dev->phys = coredev->ir.phys; | 78 | dev->input_phys = coredev->ir.phys; |
80 | input_dev->dev.parent = coredev->device; | 79 | dev->dev.parent = coredev->device; |
81 | 80 | ||
82 | #if 0 | 81 | #if 0 |
83 | /* TODO: properly initialize the parameters bellow */ | 82 | /* TODO: properly initialize the parameters bellow */ |
84 | input_dev->id.bustype = BUS_USB; | 83 | dev->input_id.bustype = BUS_USB; |
85 | input_dev->id.version = 1; | 84 | dev->input_id.version = 1; |
86 | input_dev->id.vendor = le16_to_cpu(dev->udev->descriptor.idVendor); | 85 | dev->input_id.vendor = le16_to_cpu(dev->udev->descriptor.idVendor); |
87 | input_dev->id.product = le16_to_cpu(dev->udev->descriptor.idProduct); | 86 | dev->input_id.product = le16_to_cpu(dev->udev->descriptor.idProduct); |
88 | #endif | 87 | #endif |
89 | 88 | ||
90 | coredev->ir.props.priv = coredev; | 89 | dev->priv = coredev; |
91 | coredev->ir.props.driver_type = RC_DRIVER_IR_RAW; | 90 | dev->driver_type = RC_DRIVER_IR_RAW; |
92 | coredev->ir.props.allowed_protos = IR_TYPE_ALL; | 91 | dev->allowed_protos = RC_TYPE_ALL; |
92 | dev->map_name = sms_get_board(board_id)->rc_codes; | ||
93 | dev->driver_name = MODULE_NAME; | ||
93 | 94 | ||
94 | sms_log("Input device (IR) %s is set for key events", input_dev->name); | 95 | sms_log("Input device (IR) %s is set for key events", dev->input_name); |
95 | 96 | ||
96 | if (ir_input_register(input_dev, sms_get_board(board_id)->rc_codes, | 97 | err = rc_register_device(dev); |
97 | &coredev->ir.props, MODULE_NAME)) { | 98 | if (err < 0) { |
98 | sms_err("Failed to register device"); | 99 | sms_err("Failed to register device"); |
99 | input_free_device(input_dev); | 100 | rc_free_device(dev); |
100 | return -EACCES; | 101 | return err; |
101 | } | 102 | } |
102 | 103 | ||
104 | coredev->ir.dev = dev; | ||
103 | return 0; | 105 | return 0; |
104 | } | 106 | } |
105 | 107 | ||
106 | void sms_ir_exit(struct smscore_device_t *coredev) | 108 | void sms_ir_exit(struct smscore_device_t *coredev) |
107 | { | 109 | { |
108 | if (coredev->ir.input_dev) | 110 | if (coredev->ir.dev) |
109 | ir_input_unregister(coredev->ir.input_dev); | 111 | rc_unregister_device(coredev->ir.dev); |
110 | 112 | ||
111 | sms_log(""); | 113 | sms_log(""); |
112 | } | 114 | } |
diff --git a/drivers/media/dvb/siano/smsir.h b/drivers/media/dvb/siano/smsir.h index 926e247523bd..ae92b3a8587e 100644 --- a/drivers/media/dvb/siano/smsir.h +++ b/drivers/media/dvb/siano/smsir.h | |||
@@ -28,20 +28,19 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. | |||
28 | #define __SMS_IR_H__ | 28 | #define __SMS_IR_H__ |
29 | 29 | ||
30 | #include <linux/input.h> | 30 | #include <linux/input.h> |
31 | #include <media/ir-core.h> | 31 | #include <media/rc-core.h> |
32 | 32 | ||
33 | #define IR_DEFAULT_TIMEOUT 100 | 33 | #define IR_DEFAULT_TIMEOUT 100 |
34 | 34 | ||
35 | struct smscore_device_t; | 35 | struct smscore_device_t; |
36 | 36 | ||
37 | struct ir_t { | 37 | struct ir_t { |
38 | struct input_dev *input_dev; | 38 | struct rc_dev *dev; |
39 | char name[40]; | 39 | char name[40]; |
40 | char phys[32]; | 40 | char phys[32]; |
41 | 41 | ||
42 | char *rc_codes; | 42 | char *rc_codes; |
43 | u64 protocol; | 43 | u64 protocol; |
44 | struct ir_dev_props props; | ||
45 | 44 | ||
46 | u32 timeout; | 45 | u32 timeout; |
47 | u32 controller; | 46 | u32 controller; |
diff --git a/drivers/media/dvb/siano/smsusb.c b/drivers/media/dvb/siano/smsusb.c index 50d4338610e0..0c8164a2cc36 100644 --- a/drivers/media/dvb/siano/smsusb.c +++ b/drivers/media/dvb/siano/smsusb.c | |||
@@ -288,8 +288,7 @@ static int smsusb1_setmode(void *context, int mode) | |||
288 | 288 | ||
289 | static void smsusb_term_device(struct usb_interface *intf) | 289 | static void smsusb_term_device(struct usb_interface *intf) |
290 | { | 290 | { |
291 | struct smsusb_device_t *dev = | 291 | struct smsusb_device_t *dev = usb_get_intfdata(intf); |
292 | (struct smsusb_device_t *) usb_get_intfdata(intf); | ||
293 | 292 | ||
294 | if (dev) { | 293 | if (dev) { |
295 | smsusb_stop_streaming(dev); | 294 | smsusb_stop_streaming(dev); |
@@ -298,9 +297,8 @@ static void smsusb_term_device(struct usb_interface *intf) | |||
298 | if (dev->coredev) | 297 | if (dev->coredev) |
299 | smscore_unregister_device(dev->coredev); | 298 | smscore_unregister_device(dev->coredev); |
300 | 299 | ||
301 | kfree(dev); | ||
302 | |||
303 | sms_info("device %p destroyed", dev); | 300 | sms_info("device %p destroyed", dev); |
301 | kfree(dev); | ||
304 | } | 302 | } |
305 | 303 | ||
306 | usb_set_intfdata(intf, NULL); | 304 | usb_set_intfdata(intf, NULL); |
@@ -445,8 +443,7 @@ static void smsusb_disconnect(struct usb_interface *intf) | |||
445 | 443 | ||
446 | static int smsusb_suspend(struct usb_interface *intf, pm_message_t msg) | 444 | static int smsusb_suspend(struct usb_interface *intf, pm_message_t msg) |
447 | { | 445 | { |
448 | struct smsusb_device_t *dev = | 446 | struct smsusb_device_t *dev = usb_get_intfdata(intf); |
449 | (struct smsusb_device_t *)usb_get_intfdata(intf); | ||
450 | printk(KERN_INFO "%s: Entering status %d.\n", __func__, msg.event); | 447 | printk(KERN_INFO "%s: Entering status %d.\n", __func__, msg.event); |
451 | smsusb_stop_streaming(dev); | 448 | smsusb_stop_streaming(dev); |
452 | return 0; | 449 | return 0; |
@@ -455,8 +452,7 @@ static int smsusb_suspend(struct usb_interface *intf, pm_message_t msg) | |||
455 | static int smsusb_resume(struct usb_interface *intf) | 452 | static int smsusb_resume(struct usb_interface *intf) |
456 | { | 453 | { |
457 | int rc, i; | 454 | int rc, i; |
458 | struct smsusb_device_t *dev = | 455 | struct smsusb_device_t *dev = usb_get_intfdata(intf); |
459 | (struct smsusb_device_t *)usb_get_intfdata(intf); | ||
460 | struct usb_device *udev = interface_to_usbdev(intf); | 456 | struct usb_device *udev = interface_to_usbdev(intf); |
461 | 457 | ||
462 | printk(KERN_INFO "%s: Entering.\n", __func__); | 458 | printk(KERN_INFO "%s: Entering.\n", __func__); |