diff options
author | Mauro Carvalho Chehab <mchehab@redhat.com> | 2010-08-01 08:37:23 -0400 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@redhat.com> | 2010-08-02 15:43:50 -0400 |
commit | 0ffd1ab34a00b1e92af50ef11e696839f4cf642b (patch) | |
tree | a9465fffab8d37fe22ab64cc7df95f121a073823 | |
parent | 5af935cc96a291f90799bf6a2587d87329a91699 (diff) |
V4L/DVB: dib0700: properly implement IR change_protocol
This patch implements change_protocol callback. With this change,
there's no need for an extra modprobe parameter to specify the
protocol. When a table is loaded (either from in-kernel rc-map
tables or via ir-keytable program), the driver will automatically
change the protocol, in order to work with the given table.
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
-rw-r--r-- | drivers/media/dvb/dvb-usb/dib0700.h | 1 | ||||
-rw-r--r-- | drivers/media/dvb/dvb-usb/dib0700_core.c | 53 | ||||
-rw-r--r-- | drivers/media/dvb/dvb-usb/dib0700_devices.c | 118 | ||||
-rw-r--r-- | drivers/media/dvb/dvb-usb/dvb-usb.h | 2 |
4 files changed, 140 insertions, 34 deletions
diff --git a/drivers/media/dvb/dvb-usb/dib0700.h b/drivers/media/dvb/dvb-usb/dib0700.h index 83fc24a6c31a..c2c9d236ec7e 100644 --- a/drivers/media/dvb/dvb-usb/dib0700.h +++ b/drivers/media/dvb/dvb-usb/dib0700.h | |||
@@ -60,6 +60,7 @@ extern int dib0700_streaming_ctrl(struct dvb_usb_adapter *adap, int onoff); | |||
60 | extern struct i2c_algorithm dib0700_i2c_algo; | 60 | extern struct i2c_algorithm dib0700_i2c_algo; |
61 | extern int dib0700_identify_state(struct usb_device *udev, struct dvb_usb_device_properties *props, | 61 | extern int dib0700_identify_state(struct usb_device *udev, struct dvb_usb_device_properties *props, |
62 | struct dvb_usb_device_description **desc, int *cold); | 62 | struct dvb_usb_device_description **desc, int *cold); |
63 | extern int dib0700_change_protocol(void *priv, u64 ir_type); | ||
63 | 64 | ||
64 | extern int dib0700_device_count; | 65 | extern int dib0700_device_count; |
65 | extern int dvb_usb_dib0700_ir_proto; | 66 | extern int dvb_usb_dib0700_ir_proto; |
diff --git a/drivers/media/dvb/dvb-usb/dib0700_core.c b/drivers/media/dvb/dvb-usb/dib0700_core.c index a05d95592226..d73a688acabb 100644 --- a/drivers/media/dvb/dvb-usb/dib0700_core.c +++ b/drivers/media/dvb/dvb-usb/dib0700_core.c | |||
@@ -13,10 +13,6 @@ int dvb_usb_dib0700_debug; | |||
13 | module_param_named(debug,dvb_usb_dib0700_debug, int, 0644); | 13 | module_param_named(debug,dvb_usb_dib0700_debug, int, 0644); |
14 | MODULE_PARM_DESC(debug, "set debugging level (1=info,2=fw,4=fwdata,8=data (or-able))." DVB_USB_DEBUG_STATUS); | 14 | MODULE_PARM_DESC(debug, "set debugging level (1=info,2=fw,4=fwdata,8=data (or-able))." DVB_USB_DEBUG_STATUS); |
15 | 15 | ||
16 | int dvb_usb_dib0700_ir_proto = 1; | ||
17 | module_param(dvb_usb_dib0700_ir_proto, int, 0644); | ||
18 | MODULE_PARM_DESC(dvb_usb_dib0700_ir_proto, "set ir protocol (0=NEC, 1=RC5 (default), 2=RC6)."); | ||
19 | |||
20 | static int nb_packet_buffer_size = 21; | 16 | static int nb_packet_buffer_size = 21; |
21 | module_param(nb_packet_buffer_size, int, 0644); | 17 | module_param(nb_packet_buffer_size, int, 0644); |
22 | MODULE_PARM_DESC(nb_packet_buffer_size, | 18 | MODULE_PARM_DESC(nb_packet_buffer_size, |
@@ -475,6 +471,39 @@ int dib0700_streaming_ctrl(struct dvb_usb_adapter *adap, int onoff) | |||
475 | return dib0700_ctrl_wr(adap->dev, b, 4); | 471 | return dib0700_ctrl_wr(adap->dev, b, 4); |
476 | } | 472 | } |
477 | 473 | ||
474 | int dib0700_change_protocol(void *priv, u64 ir_type) | ||
475 | { | ||
476 | struct dvb_usb_device *d = priv; | ||
477 | struct dib0700_state *st = d->priv; | ||
478 | u8 rc_setup[3] = { REQUEST_SET_RC, 0, 0 }; | ||
479 | int new_proto, ret; | ||
480 | |||
481 | /* Set the IR mode */ | ||
482 | if (ir_type == IR_TYPE_RC5) | ||
483 | new_proto = 1; | ||
484 | else if (ir_type == IR_TYPE_NEC) | ||
485 | new_proto = 0; | ||
486 | else if (ir_type == IR_TYPE_RC6) { | ||
487 | if (st->fw_version < 0x10200) | ||
488 | return -EINVAL; | ||
489 | |||
490 | new_proto = 2; | ||
491 | } else | ||
492 | return -EINVAL; | ||
493 | |||
494 | rc_setup[1] = new_proto; | ||
495 | |||
496 | ret = dib0700_ctrl_wr(d, rc_setup, sizeof(rc_setup)); | ||
497 | if (ret < 0) { | ||
498 | err("ir protocol setup failed"); | ||
499 | return ret; | ||
500 | } | ||
501 | |||
502 | d->props.rc.core.protocol = new_proto; | ||
503 | |||
504 | return ret; | ||
505 | } | ||
506 | |||
478 | /* Number of keypresses to ignore before start repeating */ | 507 | /* Number of keypresses to ignore before start repeating */ |
479 | #define RC_REPEAT_DELAY_V1_20 10 | 508 | #define RC_REPEAT_DELAY_V1_20 10 |
480 | 509 | ||
@@ -524,9 +553,8 @@ static void dib0700_rc_urb_completion(struct urb *purb) | |||
524 | deb_data("IR raw %02X %02X %02X %02X %02X %02X (len %d)\n", buf[0], | 553 | deb_data("IR raw %02X %02X %02X %02X %02X %02X (len %d)\n", buf[0], |
525 | buf[1], buf[2], buf[3], buf[4], buf[5], purb->actual_length); | 554 | buf[1], buf[2], buf[3], buf[4], buf[5], purb->actual_length); |
526 | 555 | ||
527 | switch (dvb_usb_dib0700_ir_proto) { | 556 | switch (d->props.rc.core.protocol) { |
528 | case 0: | 557 | case IR_TYPE_NEC: |
529 | /* NEC Protocol */ | ||
530 | poll_reply.data_state = 0; | 558 | poll_reply.data_state = 0; |
531 | poll_reply.system = buf[2]; | 559 | poll_reply.system = buf[2]; |
532 | poll_reply.data = buf[4]; | 560 | poll_reply.data = buf[4]; |
@@ -543,6 +571,7 @@ static void dib0700_rc_urb_completion(struct urb *purb) | |||
543 | break; | 571 | break; |
544 | default: | 572 | default: |
545 | /* RC5 Protocol */ | 573 | /* RC5 Protocol */ |
574 | /* TODO: need to check the mapping for RC6 */ | ||
546 | poll_reply.report_id = buf[0]; | 575 | poll_reply.report_id = buf[0]; |
547 | poll_reply.data_state = buf[1]; | 576 | poll_reply.data_state = buf[1]; |
548 | poll_reply.system = (buf[2] << 8) | buf[3]; | 577 | poll_reply.system = (buf[2] << 8) | buf[3]; |
@@ -580,18 +609,10 @@ resubmit: | |||
580 | int dib0700_rc_setup(struct dvb_usb_device *d) | 609 | int dib0700_rc_setup(struct dvb_usb_device *d) |
581 | { | 610 | { |
582 | struct dib0700_state *st = d->priv; | 611 | struct dib0700_state *st = d->priv; |
583 | u8 rc_setup[3] = { REQUEST_SET_RC, dvb_usb_dib0700_ir_proto, 0 }; | ||
584 | struct urb *purb; | 612 | struct urb *purb; |
585 | int ret; | 613 | int ret; |
586 | int i; | ||
587 | |||
588 | /* Set the IR mode */ | ||
589 | i = dib0700_ctrl_wr(d, rc_setup, sizeof(rc_setup)); | ||
590 | if (i < 0) { | ||
591 | err("ir protocol setup failed"); | ||
592 | return i; | ||
593 | } | ||
594 | 614 | ||
615 | /* Poll-based. Don't initialize bulk mode */ | ||
595 | if (st->fw_version < 0x10200) | 616 | if (st->fw_version < 0x10200) |
596 | return 0; | 617 | return 0; |
597 | 618 | ||
diff --git a/drivers/media/dvb/dvb-usb/dib0700_devices.c b/drivers/media/dvb/dvb-usb/dib0700_devices.c index ee2a84beb553..f634d2e784b2 100644 --- a/drivers/media/dvb/dvb-usb/dib0700_devices.c +++ b/drivers/media/dvb/dvb-usb/dib0700_devices.c | |||
@@ -486,8 +486,6 @@ static int dib0700_rc_query_old_firmware(struct dvb_usb_device *d) | |||
486 | int i; | 486 | int i; |
487 | struct dib0700_state *st = d->priv; | 487 | struct dib0700_state *st = d->priv; |
488 | 488 | ||
489 | printk("%s\n", __func__); | ||
490 | |||
491 | if (st->fw_version >= 0x10200) { | 489 | if (st->fw_version >= 0x10200) { |
492 | /* For 1.20 firmware , We need to keep the RC polling | 490 | /* For 1.20 firmware , We need to keep the RC polling |
493 | callback so we can reuse the input device setup in | 491 | callback so we can reuse the input device setup in |
@@ -511,8 +509,8 @@ printk("%s\n", __func__); | |||
511 | dib0700_rc_setup(d); /* reset ir sensor data to prevent false events */ | 509 | dib0700_rc_setup(d); /* reset ir sensor data to prevent false events */ |
512 | 510 | ||
513 | d->last_event = 0; | 511 | d->last_event = 0; |
514 | switch (dvb_usb_dib0700_ir_proto) { | 512 | switch (d->props.rc.core.protocol) { |
515 | case 0: | 513 | case IR_TYPE_NEC: |
516 | /* NEC protocol sends repeat code as 0 0 0 FF */ | 514 | /* NEC protocol sends repeat code as 0 0 0 FF */ |
517 | if ((key[3-2] == 0x00) && (key[3-3] == 0x00) && | 515 | if ((key[3-2] == 0x00) && (key[3-3] == 0x00) && |
518 | (key[3] == 0xff)) | 516 | (key[3] == 0xff)) |
@@ -1873,7 +1871,13 @@ struct dvb_usb_device_properties dib0700_devices[] = { | |||
1873 | .rc.core = { | 1871 | .rc.core = { |
1874 | .rc_interval = DEFAULT_RC_INTERVAL, | 1872 | .rc_interval = DEFAULT_RC_INTERVAL, |
1875 | .rc_codes = RC_MAP_DIB0700_RC5_TABLE, | 1873 | .rc_codes = RC_MAP_DIB0700_RC5_TABLE, |
1876 | .rc_query = dib0700_rc_query_old_firmware | 1874 | .rc_query = dib0700_rc_query_old_firmware, |
1875 | .rc_props = { | ||
1876 | .allowed_protos = IR_TYPE_RC5 | | ||
1877 | IR_TYPE_RC6 | | ||
1878 | IR_TYPE_NEC, | ||
1879 | .change_protocol = dib0700_change_protocol, | ||
1880 | }, | ||
1877 | }, | 1881 | }, |
1878 | }, { DIB0700_DEFAULT_DEVICE_PROPERTIES, | 1882 | }, { DIB0700_DEFAULT_DEVICE_PROPERTIES, |
1879 | 1883 | ||
@@ -1903,7 +1907,13 @@ struct dvb_usb_device_properties dib0700_devices[] = { | |||
1903 | .rc.core = { | 1907 | .rc.core = { |
1904 | .rc_interval = DEFAULT_RC_INTERVAL, | 1908 | .rc_interval = DEFAULT_RC_INTERVAL, |
1905 | .rc_codes = RC_MAP_DIB0700_RC5_TABLE, | 1909 | .rc_codes = RC_MAP_DIB0700_RC5_TABLE, |
1906 | .rc_query = dib0700_rc_query_old_firmware | 1910 | .rc_query = dib0700_rc_query_old_firmware, |
1911 | .rc_props = { | ||
1912 | .allowed_protos = IR_TYPE_RC5 | | ||
1913 | IR_TYPE_RC6 | | ||
1914 | IR_TYPE_NEC, | ||
1915 | .change_protocol = dib0700_change_protocol, | ||
1916 | }, | ||
1907 | }, | 1917 | }, |
1908 | }, { DIB0700_DEFAULT_DEVICE_PROPERTIES, | 1918 | }, { DIB0700_DEFAULT_DEVICE_PROPERTIES, |
1909 | 1919 | ||
@@ -1958,7 +1968,13 @@ struct dvb_usb_device_properties dib0700_devices[] = { | |||
1958 | .rc.core = { | 1968 | .rc.core = { |
1959 | .rc_interval = DEFAULT_RC_INTERVAL, | 1969 | .rc_interval = DEFAULT_RC_INTERVAL, |
1960 | .rc_codes = RC_MAP_DIB0700_RC5_TABLE, | 1970 | .rc_codes = RC_MAP_DIB0700_RC5_TABLE, |
1961 | .rc_query = dib0700_rc_query_old_firmware | 1971 | .rc_query = dib0700_rc_query_old_firmware, |
1972 | .rc_props = { | ||
1973 | .allowed_protos = IR_TYPE_RC5 | | ||
1974 | IR_TYPE_RC6 | | ||
1975 | IR_TYPE_NEC, | ||
1976 | .change_protocol = dib0700_change_protocol, | ||
1977 | }, | ||
1962 | }, | 1978 | }, |
1963 | }, { DIB0700_DEFAULT_DEVICE_PROPERTIES, | 1979 | }, { DIB0700_DEFAULT_DEVICE_PROPERTIES, |
1964 | 1980 | ||
@@ -1996,7 +2012,13 @@ struct dvb_usb_device_properties dib0700_devices[] = { | |||
1996 | .rc_interval = DEFAULT_RC_INTERVAL, | 2012 | .rc_interval = DEFAULT_RC_INTERVAL, |
1997 | .rc_codes = RC_MAP_DIB0700_RC5_TABLE, | 2013 | .rc_codes = RC_MAP_DIB0700_RC5_TABLE, |
1998 | .module_name = "dib0700", | 2014 | .module_name = "dib0700", |
1999 | .rc_query = dib0700_rc_query_old_firmware | 2015 | .rc_query = dib0700_rc_query_old_firmware, |
2016 | .rc_props = { | ||
2017 | .allowed_protos = IR_TYPE_RC5 | | ||
2018 | IR_TYPE_RC6 | | ||
2019 | IR_TYPE_NEC, | ||
2020 | .change_protocol = dib0700_change_protocol, | ||
2021 | }, | ||
2000 | }, | 2022 | }, |
2001 | }, { DIB0700_DEFAULT_DEVICE_PROPERTIES, | 2023 | }, { DIB0700_DEFAULT_DEVICE_PROPERTIES, |
2002 | 2024 | ||
@@ -2068,7 +2090,13 @@ struct dvb_usb_device_properties dib0700_devices[] = { | |||
2068 | .rc_interval = DEFAULT_RC_INTERVAL, | 2090 | .rc_interval = DEFAULT_RC_INTERVAL, |
2069 | .rc_codes = RC_MAP_DIB0700_RC5_TABLE, | 2091 | .rc_codes = RC_MAP_DIB0700_RC5_TABLE, |
2070 | .module_name = "dib0700", | 2092 | .module_name = "dib0700", |
2071 | .rc_query = dib0700_rc_query_old_firmware | 2093 | .rc_query = dib0700_rc_query_old_firmware, |
2094 | .rc_props = { | ||
2095 | .allowed_protos = IR_TYPE_RC5 | | ||
2096 | IR_TYPE_RC6 | | ||
2097 | IR_TYPE_NEC, | ||
2098 | .change_protocol = dib0700_change_protocol, | ||
2099 | }, | ||
2072 | }, | 2100 | }, |
2073 | }, { DIB0700_DEFAULT_DEVICE_PROPERTIES, | 2101 | }, { DIB0700_DEFAULT_DEVICE_PROPERTIES, |
2074 | 2102 | ||
@@ -2108,7 +2136,13 @@ struct dvb_usb_device_properties dib0700_devices[] = { | |||
2108 | .rc_interval = DEFAULT_RC_INTERVAL, | 2136 | .rc_interval = DEFAULT_RC_INTERVAL, |
2109 | .rc_codes = RC_MAP_DIB0700_RC5_TABLE, | 2137 | .rc_codes = RC_MAP_DIB0700_RC5_TABLE, |
2110 | .module_name = "dib0700", | 2138 | .module_name = "dib0700", |
2111 | .rc_query = dib0700_rc_query_old_firmware | 2139 | .rc_query = dib0700_rc_query_old_firmware, |
2140 | .rc_props = { | ||
2141 | .allowed_protos = IR_TYPE_RC5 | | ||
2142 | IR_TYPE_RC6 | | ||
2143 | IR_TYPE_NEC, | ||
2144 | .change_protocol = dib0700_change_protocol, | ||
2145 | }, | ||
2112 | }, | 2146 | }, |
2113 | }, { DIB0700_DEFAULT_DEVICE_PROPERTIES, | 2147 | }, { DIB0700_DEFAULT_DEVICE_PROPERTIES, |
2114 | 2148 | ||
@@ -2172,7 +2206,13 @@ struct dvb_usb_device_properties dib0700_devices[] = { | |||
2172 | .rc_interval = DEFAULT_RC_INTERVAL, | 2206 | .rc_interval = DEFAULT_RC_INTERVAL, |
2173 | .rc_codes = RC_MAP_DIB0700_RC5_TABLE, | 2207 | .rc_codes = RC_MAP_DIB0700_RC5_TABLE, |
2174 | .module_name = "dib0700", | 2208 | .module_name = "dib0700", |
2175 | .rc_query = dib0700_rc_query_old_firmware | 2209 | .rc_query = dib0700_rc_query_old_firmware, |
2210 | .rc_props = { | ||
2211 | .allowed_protos = IR_TYPE_RC5 | | ||
2212 | IR_TYPE_RC6 | | ||
2213 | IR_TYPE_NEC, | ||
2214 | .change_protocol = dib0700_change_protocol, | ||
2215 | }, | ||
2176 | }, | 2216 | }, |
2177 | }, { DIB0700_DEFAULT_DEVICE_PROPERTIES, | 2217 | }, { DIB0700_DEFAULT_DEVICE_PROPERTIES, |
2178 | 2218 | ||
@@ -2215,7 +2255,13 @@ struct dvb_usb_device_properties dib0700_devices[] = { | |||
2215 | .rc_interval = DEFAULT_RC_INTERVAL, | 2255 | .rc_interval = DEFAULT_RC_INTERVAL, |
2216 | .rc_codes = RC_MAP_DIB0700_NEC_TABLE, | 2256 | .rc_codes = RC_MAP_DIB0700_NEC_TABLE, |
2217 | .module_name = "dib0700", | 2257 | .module_name = "dib0700", |
2218 | .rc_query = dib0700_rc_query_old_firmware | 2258 | .rc_query = dib0700_rc_query_old_firmware, |
2259 | .rc_props = { | ||
2260 | .allowed_protos = IR_TYPE_RC5 | | ||
2261 | IR_TYPE_RC6 | | ||
2262 | IR_TYPE_NEC, | ||
2263 | .change_protocol = dib0700_change_protocol, | ||
2264 | }, | ||
2219 | }, | 2265 | }, |
2220 | }, { DIB0700_DEFAULT_DEVICE_PROPERTIES, | 2266 | }, { DIB0700_DEFAULT_DEVICE_PROPERTIES, |
2221 | 2267 | ||
@@ -2280,7 +2326,13 @@ struct dvb_usb_device_properties dib0700_devices[] = { | |||
2280 | .rc_interval = DEFAULT_RC_INTERVAL, | 2326 | .rc_interval = DEFAULT_RC_INTERVAL, |
2281 | .rc_codes = RC_MAP_DIB0700_RC5_TABLE, | 2327 | .rc_codes = RC_MAP_DIB0700_RC5_TABLE, |
2282 | .module_name = "dib0700", | 2328 | .module_name = "dib0700", |
2283 | .rc_query = dib0700_rc_query_old_firmware | 2329 | .rc_query = dib0700_rc_query_old_firmware, |
2330 | .rc_props = { | ||
2331 | .allowed_protos = IR_TYPE_RC5 | | ||
2332 | IR_TYPE_RC6 | | ||
2333 | IR_TYPE_NEC, | ||
2334 | .change_protocol = dib0700_change_protocol, | ||
2335 | }, | ||
2284 | }, | 2336 | }, |
2285 | }, { DIB0700_DEFAULT_DEVICE_PROPERTIES, | 2337 | }, { DIB0700_DEFAULT_DEVICE_PROPERTIES, |
2286 | .num_adapters = 1, | 2338 | .num_adapters = 1, |
@@ -2312,7 +2364,13 @@ struct dvb_usb_device_properties dib0700_devices[] = { | |||
2312 | .rc_interval = DEFAULT_RC_INTERVAL, | 2364 | .rc_interval = DEFAULT_RC_INTERVAL, |
2313 | .rc_codes = RC_MAP_DIB0700_RC5_TABLE, | 2365 | .rc_codes = RC_MAP_DIB0700_RC5_TABLE, |
2314 | .module_name = "dib0700", | 2366 | .module_name = "dib0700", |
2315 | .rc_query = dib0700_rc_query_old_firmware | 2367 | .rc_query = dib0700_rc_query_old_firmware, |
2368 | .rc_props = { | ||
2369 | .allowed_protos = IR_TYPE_RC5 | | ||
2370 | IR_TYPE_RC6 | | ||
2371 | IR_TYPE_NEC, | ||
2372 | .change_protocol = dib0700_change_protocol, | ||
2373 | }, | ||
2316 | }, | 2374 | }, |
2317 | }, { DIB0700_DEFAULT_DEVICE_PROPERTIES, | 2375 | }, { DIB0700_DEFAULT_DEVICE_PROPERTIES, |
2318 | .num_adapters = 1, | 2376 | .num_adapters = 1, |
@@ -2376,7 +2434,13 @@ struct dvb_usb_device_properties dib0700_devices[] = { | |||
2376 | .rc_interval = DEFAULT_RC_INTERVAL, | 2434 | .rc_interval = DEFAULT_RC_INTERVAL, |
2377 | .rc_codes = RC_MAP_DIB0700_RC5_TABLE, | 2435 | .rc_codes = RC_MAP_DIB0700_RC5_TABLE, |
2378 | .module_name = "dib0700", | 2436 | .module_name = "dib0700", |
2379 | .rc_query = dib0700_rc_query_old_firmware | 2437 | .rc_query = dib0700_rc_query_old_firmware, |
2438 | .rc_props = { | ||
2439 | .allowed_protos = IR_TYPE_RC5 | | ||
2440 | IR_TYPE_RC6 | | ||
2441 | IR_TYPE_NEC, | ||
2442 | .change_protocol = dib0700_change_protocol, | ||
2443 | }, | ||
2380 | }, | 2444 | }, |
2381 | }, { DIB0700_DEFAULT_DEVICE_PROPERTIES, | 2445 | }, { DIB0700_DEFAULT_DEVICE_PROPERTIES, |
2382 | .num_adapters = 1, | 2446 | .num_adapters = 1, |
@@ -2416,7 +2480,13 @@ struct dvb_usb_device_properties dib0700_devices[] = { | |||
2416 | .rc_interval = DEFAULT_RC_INTERVAL, | 2480 | .rc_interval = DEFAULT_RC_INTERVAL, |
2417 | .rc_codes = RC_MAP_DIB0700_NEC_TABLE, | 2481 | .rc_codes = RC_MAP_DIB0700_NEC_TABLE, |
2418 | .module_name = "dib0700", | 2482 | .module_name = "dib0700", |
2419 | .rc_query = dib0700_rc_query_old_firmware | 2483 | .rc_query = dib0700_rc_query_old_firmware, |
2484 | .rc_props = { | ||
2485 | .allowed_protos = IR_TYPE_RC5 | | ||
2486 | IR_TYPE_RC6 | | ||
2487 | IR_TYPE_NEC, | ||
2488 | .change_protocol = dib0700_change_protocol, | ||
2489 | }, | ||
2420 | }, | 2490 | }, |
2421 | }, { DIB0700_DEFAULT_DEVICE_PROPERTIES, | 2491 | }, { DIB0700_DEFAULT_DEVICE_PROPERTIES, |
2422 | .num_adapters = 2, | 2492 | .num_adapters = 2, |
@@ -2461,7 +2531,13 @@ struct dvb_usb_device_properties dib0700_devices[] = { | |||
2461 | .rc_interval = DEFAULT_RC_INTERVAL, | 2531 | .rc_interval = DEFAULT_RC_INTERVAL, |
2462 | .rc_codes = RC_MAP_DIB0700_RC5_TABLE, | 2532 | .rc_codes = RC_MAP_DIB0700_RC5_TABLE, |
2463 | .module_name = "dib0700", | 2533 | .module_name = "dib0700", |
2464 | .rc_query = dib0700_rc_query_old_firmware | 2534 | .rc_query = dib0700_rc_query_old_firmware, |
2535 | .rc_props = { | ||
2536 | .allowed_protos = IR_TYPE_RC5 | | ||
2537 | IR_TYPE_RC6 | | ||
2538 | IR_TYPE_NEC, | ||
2539 | .change_protocol = dib0700_change_protocol, | ||
2540 | }, | ||
2465 | }, | 2541 | }, |
2466 | }, { DIB0700_DEFAULT_DEVICE_PROPERTIES, | 2542 | }, { DIB0700_DEFAULT_DEVICE_PROPERTIES, |
2467 | .num_adapters = 1, | 2543 | .num_adapters = 1, |
@@ -2494,7 +2570,13 @@ struct dvb_usb_device_properties dib0700_devices[] = { | |||
2494 | .rc_interval = DEFAULT_RC_INTERVAL, | 2570 | .rc_interval = DEFAULT_RC_INTERVAL, |
2495 | .rc_codes = RC_MAP_DIB0700_RC5_TABLE, | 2571 | .rc_codes = RC_MAP_DIB0700_RC5_TABLE, |
2496 | .module_name = "dib0700", | 2572 | .module_name = "dib0700", |
2497 | .rc_query = dib0700_rc_query_old_firmware | 2573 | .rc_query = dib0700_rc_query_old_firmware, |
2574 | .rc_props = { | ||
2575 | .allowed_protos = IR_TYPE_RC5 | | ||
2576 | IR_TYPE_RC6 | | ||
2577 | IR_TYPE_NEC, | ||
2578 | .change_protocol = dib0700_change_protocol, | ||
2579 | }, | ||
2498 | }, | 2580 | }, |
2499 | }, | 2581 | }, |
2500 | }; | 2582 | }; |
diff --git a/drivers/media/dvb/dvb-usb/dvb-usb.h b/drivers/media/dvb/dvb-usb/dvb-usb.h index bcfbf9adc373..34f7b3ba8cc7 100644 --- a/drivers/media/dvb/dvb-usb/dvb-usb.h +++ b/drivers/media/dvb/dvb-usb/dvb-usb.h | |||
@@ -179,6 +179,7 @@ struct dvb_rc_legacy { | |||
179 | /** | 179 | /** |
180 | * struct dvb_rc properties of remote controller, using rc-core | 180 | * struct dvb_rc properties of remote controller, using rc-core |
181 | * @rc_codes: name of rc codes table | 181 | * @rc_codes: name of rc codes table |
182 | * @protocol: type of protocol(s) currently used by the driver | ||
182 | * @rc_query: called to query an event event. | 183 | * @rc_query: called to query an event event. |
183 | * @rc_interval: time in ms between two queries. | 184 | * @rc_interval: time in ms between two queries. |
184 | * @rc_props: remote controller properties | 185 | * @rc_props: remote controller properties |
@@ -186,6 +187,7 @@ struct dvb_rc_legacy { | |||
186 | */ | 187 | */ |
187 | struct dvb_rc { | 188 | struct dvb_rc { |
188 | char *rc_codes; | 189 | char *rc_codes; |
190 | u64 protocol; | ||
189 | char *module_name; | 191 | char *module_name; |
190 | int (*rc_query) (struct dvb_usb_device *d); | 192 | int (*rc_query) (struct dvb_usb_device *d); |
191 | int rc_interval; | 193 | int rc_interval; |