aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/media/dvb
diff options
context:
space:
mode:
authorMauro Carvalho Chehab <mchehab@redhat.com>2010-08-01 08:37:23 -0400
committerMauro Carvalho Chehab <mchehab@redhat.com>2010-08-02 15:43:50 -0400
commit0ffd1ab34a00b1e92af50ef11e696839f4cf642b (patch)
treea9465fffab8d37fe22ab64cc7df95f121a073823 /drivers/media/dvb
parent5af935cc96a291f90799bf6a2587d87329a91699 (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>
Diffstat (limited to 'drivers/media/dvb')
-rw-r--r--drivers/media/dvb/dvb-usb/dib0700.h1
-rw-r--r--drivers/media/dvb/dvb-usb/dib0700_core.c53
-rw-r--r--drivers/media/dvb/dvb-usb/dib0700_devices.c118
-rw-r--r--drivers/media/dvb/dvb-usb/dvb-usb.h2
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);
60extern struct i2c_algorithm dib0700_i2c_algo; 60extern struct i2c_algorithm dib0700_i2c_algo;
61extern int dib0700_identify_state(struct usb_device *udev, struct dvb_usb_device_properties *props, 61extern 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);
63extern int dib0700_change_protocol(void *priv, u64 ir_type);
63 64
64extern int dib0700_device_count; 65extern int dib0700_device_count;
65extern int dvb_usb_dib0700_ir_proto; 66extern 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;
13module_param_named(debug,dvb_usb_dib0700_debug, int, 0644); 13module_param_named(debug,dvb_usb_dib0700_debug, int, 0644);
14MODULE_PARM_DESC(debug, "set debugging level (1=info,2=fw,4=fwdata,8=data (or-able))." DVB_USB_DEBUG_STATUS); 14MODULE_PARM_DESC(debug, "set debugging level (1=info,2=fw,4=fwdata,8=data (or-able))." DVB_USB_DEBUG_STATUS);
15 15
16int dvb_usb_dib0700_ir_proto = 1;
17module_param(dvb_usb_dib0700_ir_proto, int, 0644);
18MODULE_PARM_DESC(dvb_usb_dib0700_ir_proto, "set ir protocol (0=NEC, 1=RC5 (default), 2=RC6).");
19
20static int nb_packet_buffer_size = 21; 16static int nb_packet_buffer_size = 21;
21module_param(nb_packet_buffer_size, int, 0644); 17module_param(nb_packet_buffer_size, int, 0644);
22MODULE_PARM_DESC(nb_packet_buffer_size, 18MODULE_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
474int 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:
580int dib0700_rc_setup(struct dvb_usb_device *d) 609int 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
489printk("%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 */
187struct dvb_rc { 188struct 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;