diff options
author | Dmitry Torokhov <dmitry.torokhov@gmail.com> | 2010-06-22 14:32:04 -0400 |
---|---|---|
committer | Dmitry Torokhov <dmitry.torokhov@gmail.com> | 2010-06-22 14:32:04 -0400 |
commit | 0e789314f8c0b50bd19bf08dc5624b9604d60183 (patch) | |
tree | 64b6b9655e944284937f5eeff643f0754f35d0af /drivers/media/dvb | |
parent | f5dec51172b81db226a23f309bc737ad021af35b (diff) | |
parent | 7e27d6e778cd87b6f2415515d7127eba53fe5d02 (diff) |
Merge commit 'v2.6.35-rc3' into for-linus
Diffstat (limited to 'drivers/media/dvb')
-rw-r--r-- | drivers/media/dvb/dm1105/dm1105.c | 2 | ||||
-rw-r--r-- | drivers/media/dvb/dvb-core/dvb_net.c | 12 | ||||
-rw-r--r-- | drivers/media/dvb/dvb-usb/Kconfig | 4 | ||||
-rw-r--r-- | drivers/media/dvb/dvb-usb/cxusb.c | 4 | ||||
-rw-r--r-- | drivers/media/dvb/dvb-usb/dvb-usb-ids.h | 1 | ||||
-rw-r--r-- | drivers/media/dvb/dvb-usb/ttusb2.c | 95 | ||||
-rw-r--r-- | drivers/media/dvb/firewire/firedtv-1394.c | 2 | ||||
-rw-r--r-- | drivers/media/dvb/frontends/au8522_decoder.c | 26 | ||||
-rw-r--r-- | drivers/media/dvb/frontends/ds3000.c | 5 | ||||
-rw-r--r-- | drivers/media/dvb/frontends/stv6110x.c | 5 | ||||
-rw-r--r-- | drivers/media/dvb/ngene/ngene-cards.c | 15 | ||||
-rw-r--r-- | drivers/media/dvb/ngene/ngene-core.c | 80 | ||||
-rw-r--r-- | drivers/media/dvb/ngene/ngene-dvb.c | 15 | ||||
-rw-r--r-- | drivers/media/dvb/ngene/ngene-i2c.c | 1 | ||||
-rw-r--r-- | drivers/media/dvb/ngene/ngene.h | 3 | ||||
-rw-r--r-- | drivers/media/dvb/ttpci/Kconfig | 5 | ||||
-rw-r--r-- | drivers/media/dvb/ttpci/budget-ci.c | 1 |
17 files changed, 194 insertions, 82 deletions
diff --git a/drivers/media/dvb/dm1105/dm1105.c b/drivers/media/dvb/dm1105/dm1105.c index b762e561a6d5..bca07c0bcd01 100644 --- a/drivers/media/dvb/dm1105/dm1105.c +++ b/drivers/media/dvb/dm1105/dm1105.c | |||
@@ -594,7 +594,7 @@ static irqreturn_t dm1105_irq(int irq, void *dev_id) | |||
594 | int __devinit dm1105_ir_init(struct dm1105_dev *dm1105) | 594 | int __devinit dm1105_ir_init(struct dm1105_dev *dm1105) |
595 | { | 595 | { |
596 | struct input_dev *input_dev; | 596 | struct input_dev *input_dev; |
597 | char *ir_codes = NULL; | 597 | char *ir_codes = RC_MAP_DM1105_NEC; |
598 | int err = -ENOMEM; | 598 | int err = -ENOMEM; |
599 | 599 | ||
600 | input_dev = input_allocate_device(); | 600 | input_dev = input_allocate_device(); |
diff --git a/drivers/media/dvb/dvb-core/dvb_net.c b/drivers/media/dvb/dvb-core/dvb_net.c index f6dac2bb0ac6..6c3a8a06ccab 100644 --- a/drivers/media/dvb/dvb-core/dvb_net.c +++ b/drivers/media/dvb/dvb-core/dvb_net.c | |||
@@ -351,6 +351,7 @@ static void dvb_net_ule( struct net_device *dev, const u8 *buf, size_t buf_len ) | |||
351 | const u8 *ts, *ts_end, *from_where = NULL; | 351 | const u8 *ts, *ts_end, *from_where = NULL; |
352 | u8 ts_remain = 0, how_much = 0, new_ts = 1; | 352 | u8 ts_remain = 0, how_much = 0, new_ts = 1; |
353 | struct ethhdr *ethh = NULL; | 353 | struct ethhdr *ethh = NULL; |
354 | bool error = false; | ||
354 | 355 | ||
355 | #ifdef ULE_DEBUG | 356 | #ifdef ULE_DEBUG |
356 | /* The code inside ULE_DEBUG keeps a history of the last 100 TS cells processed. */ | 357 | /* The code inside ULE_DEBUG keeps a history of the last 100 TS cells processed. */ |
@@ -460,10 +461,16 @@ static void dvb_net_ule( struct net_device *dev, const u8 *buf, size_t buf_len ) | |||
460 | 461 | ||
461 | /* Drop partly decoded SNDU, reset state, resync on PUSI. */ | 462 | /* Drop partly decoded SNDU, reset state, resync on PUSI. */ |
462 | if (priv->ule_skb) { | 463 | if (priv->ule_skb) { |
463 | dev_kfree_skb( priv->ule_skb ); | 464 | error = true; |
465 | dev_kfree_skb(priv->ule_skb); | ||
466 | } | ||
467 | |||
468 | if (error || priv->ule_sndu_remain) { | ||
464 | dev->stats.rx_errors++; | 469 | dev->stats.rx_errors++; |
465 | dev->stats.rx_frame_errors++; | 470 | dev->stats.rx_frame_errors++; |
471 | error = false; | ||
466 | } | 472 | } |
473 | |||
467 | reset_ule(priv); | 474 | reset_ule(priv); |
468 | priv->need_pusi = 1; | 475 | priv->need_pusi = 1; |
469 | continue; | 476 | continue; |
@@ -535,6 +542,7 @@ static void dvb_net_ule( struct net_device *dev, const u8 *buf, size_t buf_len ) | |||
535 | from_where += 2; | 542 | from_where += 2; |
536 | } | 543 | } |
537 | 544 | ||
545 | priv->ule_sndu_remain = priv->ule_sndu_len + 2; | ||
538 | /* | 546 | /* |
539 | * State of current TS: | 547 | * State of current TS: |
540 | * ts_remain (remaining bytes in the current TS cell) | 548 | * ts_remain (remaining bytes in the current TS cell) |
@@ -544,6 +552,7 @@ static void dvb_net_ule( struct net_device *dev, const u8 *buf, size_t buf_len ) | |||
544 | */ | 552 | */ |
545 | switch (ts_remain) { | 553 | switch (ts_remain) { |
546 | case 1: | 554 | case 1: |
555 | priv->ule_sndu_remain--; | ||
547 | priv->ule_sndu_type = from_where[0] << 8; | 556 | priv->ule_sndu_type = from_where[0] << 8; |
548 | priv->ule_sndu_type_1 = 1; /* first byte of ule_type is set. */ | 557 | priv->ule_sndu_type_1 = 1; /* first byte of ule_type is set. */ |
549 | ts_remain -= 1; from_where += 1; | 558 | ts_remain -= 1; from_where += 1; |
@@ -557,6 +566,7 @@ static void dvb_net_ule( struct net_device *dev, const u8 *buf, size_t buf_len ) | |||
557 | default: /* complete ULE header is present in current TS. */ | 566 | default: /* complete ULE header is present in current TS. */ |
558 | /* Extract ULE type field. */ | 567 | /* Extract ULE type field. */ |
559 | if (priv->ule_sndu_type_1) { | 568 | if (priv->ule_sndu_type_1) { |
569 | priv->ule_sndu_type_1 = 0; | ||
560 | priv->ule_sndu_type |= from_where[0]; | 570 | priv->ule_sndu_type |= from_where[0]; |
561 | from_where += 1; /* points to payload start. */ | 571 | from_where += 1; /* points to payload start. */ |
562 | ts_remain -= 1; | 572 | ts_remain -= 1; |
diff --git a/drivers/media/dvb/dvb-usb/Kconfig b/drivers/media/dvb/dvb-usb/Kconfig index e5f91f16ffa4..553b48ac1919 100644 --- a/drivers/media/dvb/dvb-usb/Kconfig +++ b/drivers/media/dvb/dvb-usb/Kconfig | |||
@@ -76,6 +76,7 @@ config DVB_USB_DIB0700 | |||
76 | select DVB_S5H1411 if !DVB_FE_CUSTOMISE | 76 | select DVB_S5H1411 if !DVB_FE_CUSTOMISE |
77 | select DVB_LGDT3305 if !DVB_FE_CUSTOMISE | 77 | select DVB_LGDT3305 if !DVB_FE_CUSTOMISE |
78 | select DVB_TUNER_DIB0070 if !DVB_FE_CUSTOMISE | 78 | select DVB_TUNER_DIB0070 if !DVB_FE_CUSTOMISE |
79 | select DVB_TUNER_DIB0090 if !DVB_FE_CUSTOMISE | ||
79 | select MEDIA_TUNER_MT2060 if !MEDIA_TUNER_CUSTOMISE | 80 | select MEDIA_TUNER_MT2060 if !MEDIA_TUNER_CUSTOMISE |
80 | select MEDIA_TUNER_MT2266 if !MEDIA_TUNER_CUSTOMISE | 81 | select MEDIA_TUNER_MT2266 if !MEDIA_TUNER_CUSTOMISE |
81 | select MEDIA_TUNER_XC2028 if !MEDIA_TUNER_CUSTOMISE | 82 | select MEDIA_TUNER_XC2028 if !MEDIA_TUNER_CUSTOMISE |
@@ -134,6 +135,7 @@ config DVB_USB_M920X | |||
134 | select DVB_TDA1004X if !DVB_FE_CUSTOMISE | 135 | select DVB_TDA1004X if !DVB_FE_CUSTOMISE |
135 | select MEDIA_TUNER_QT1010 if !MEDIA_TUNER_CUSTOMISE | 136 | select MEDIA_TUNER_QT1010 if !MEDIA_TUNER_CUSTOMISE |
136 | select MEDIA_TUNER_TDA827X if !MEDIA_TUNER_CUSTOMISE | 137 | select MEDIA_TUNER_TDA827X if !MEDIA_TUNER_CUSTOMISE |
138 | select MEDIA_TUNER_SIMPLE if !MEDIA_TUNER_CUSTOMISE | ||
137 | help | 139 | help |
138 | Say Y here to support the MSI Mega Sky 580 USB2.0 DVB-T receiver. | 140 | Say Y here to support the MSI Mega Sky 580 USB2.0 DVB-T receiver. |
139 | Currently, only devices with a product id of | 141 | Currently, only devices with a product id of |
@@ -264,7 +266,7 @@ config DVB_USB_DW2102 | |||
264 | select DVB_STB6000 if !DVB_FE_CUSTOMISE | 266 | select DVB_STB6000 if !DVB_FE_CUSTOMISE |
265 | select DVB_CX24116 if !DVB_FE_CUSTOMISE | 267 | select DVB_CX24116 if !DVB_FE_CUSTOMISE |
266 | select DVB_SI21XX if !DVB_FE_CUSTOMISE | 268 | select DVB_SI21XX if !DVB_FE_CUSTOMISE |
267 | select DVB_TDA10021 if !DVB_FE_CUSTOMISE | 269 | select DVB_TDA10023 if !DVB_FE_CUSTOMISE |
268 | select DVB_MT312 if !DVB_FE_CUSTOMISE | 270 | select DVB_MT312 if !DVB_FE_CUSTOMISE |
269 | select DVB_ZL10039 if !DVB_FE_CUSTOMISE | 271 | select DVB_ZL10039 if !DVB_FE_CUSTOMISE |
270 | select DVB_DS3000 if !DVB_FE_CUSTOMISE | 272 | select DVB_DS3000 if !DVB_FE_CUSTOMISE |
diff --git a/drivers/media/dvb/dvb-usb/cxusb.c b/drivers/media/dvb/dvb-usb/cxusb.c index 0eb490889162..11e9e85dac86 100644 --- a/drivers/media/dvb/dvb-usb/cxusb.c +++ b/drivers/media/dvb/dvb-usb/cxusb.c | |||
@@ -1026,8 +1026,10 @@ static int cxusb_dualdig4_rev2_frontend_attach(struct dvb_usb_adapter *adap) | |||
1026 | cxusb_bluebird_gpio_pulse(adap->dev, 0x02, 1); | 1026 | cxusb_bluebird_gpio_pulse(adap->dev, 0x02, 1); |
1027 | 1027 | ||
1028 | if (dib7000p_i2c_enumeration(&adap->dev->i2c_adap, 1, 18, | 1028 | if (dib7000p_i2c_enumeration(&adap->dev->i2c_adap, 1, 18, |
1029 | &cxusb_dualdig4_rev2_config) < 0) | 1029 | &cxusb_dualdig4_rev2_config) < 0) { |
1030 | printk(KERN_WARNING "Unable to enumerate dib7000p\n"); | ||
1030 | return -ENODEV; | 1031 | return -ENODEV; |
1032 | } | ||
1031 | 1033 | ||
1032 | adap->fe = dvb_attach(dib7000p_attach, &adap->dev->i2c_adap, 0x80, | 1034 | adap->fe = dvb_attach(dib7000p_attach, &adap->dev->i2c_adap, 0x80, |
1033 | &cxusb_dualdig4_rev2_config); | 1035 | &cxusb_dualdig4_rev2_config); |
diff --git a/drivers/media/dvb/dvb-usb/dvb-usb-ids.h b/drivers/media/dvb/dvb-usb/dvb-usb-ids.h index 085c4e457e0e..b4afe6f8ed19 100644 --- a/drivers/media/dvb/dvb-usb/dvb-usb-ids.h +++ b/drivers/media/dvb/dvb-usb/dvb-usb-ids.h | |||
@@ -198,6 +198,7 @@ | |||
198 | #define USB_PID_AVERMEDIA_A850 0x850a | 198 | #define USB_PID_AVERMEDIA_A850 0x850a |
199 | #define USB_PID_AVERMEDIA_A805 0xa805 | 199 | #define USB_PID_AVERMEDIA_A805 0xa805 |
200 | #define USB_PID_TECHNOTREND_CONNECT_S2400 0x3006 | 200 | #define USB_PID_TECHNOTREND_CONNECT_S2400 0x3006 |
201 | #define USB_PID_TECHNOTREND_CONNECT_CT3650 0x300d | ||
201 | #define USB_PID_TERRATEC_CINERGY_DT_XS_DIVERSITY 0x005a | 202 | #define USB_PID_TERRATEC_CINERGY_DT_XS_DIVERSITY 0x005a |
202 | #define USB_PID_TERRATEC_CINERGY_DT_XS_DIVERSITY_2 0x0081 | 203 | #define USB_PID_TERRATEC_CINERGY_DT_XS_DIVERSITY_2 0x0081 |
203 | #define USB_PID_TERRATEC_CINERGY_HT_USB_XE 0x0058 | 204 | #define USB_PID_TERRATEC_CINERGY_HT_USB_XE 0x0058 |
diff --git a/drivers/media/dvb/dvb-usb/ttusb2.c b/drivers/media/dvb/dvb-usb/ttusb2.c index 20ca9d9ee99b..a6de489a6a39 100644 --- a/drivers/media/dvb/dvb-usb/ttusb2.c +++ b/drivers/media/dvb/dvb-usb/ttusb2.c | |||
@@ -29,6 +29,8 @@ | |||
29 | 29 | ||
30 | #include "tda826x.h" | 30 | #include "tda826x.h" |
31 | #include "tda10086.h" | 31 | #include "tda10086.h" |
32 | #include "tda1002x.h" | ||
33 | #include "tda827x.h" | ||
32 | #include "lnbp21.h" | 34 | #include "lnbp21.h" |
33 | 35 | ||
34 | /* debug */ | 36 | /* debug */ |
@@ -150,7 +152,17 @@ static struct tda10086_config tda10086_config = { | |||
150 | .xtal_freq = TDA10086_XTAL_16M, | 152 | .xtal_freq = TDA10086_XTAL_16M, |
151 | }; | 153 | }; |
152 | 154 | ||
153 | static int ttusb2_frontend_attach(struct dvb_usb_adapter *adap) | 155 | static struct tda10023_config tda10023_config = { |
156 | .demod_address = 0x0c, | ||
157 | .invert = 0, | ||
158 | .xtal = 16000000, | ||
159 | .pll_m = 11, | ||
160 | .pll_p = 3, | ||
161 | .pll_n = 1, | ||
162 | .deltaf = 0xa511, | ||
163 | }; | ||
164 | |||
165 | static int ttusb2_frontend_tda10086_attach(struct dvb_usb_adapter *adap) | ||
154 | { | 166 | { |
155 | if (usb_set_interface(adap->dev->udev,0,3) < 0) | 167 | if (usb_set_interface(adap->dev->udev,0,3) < 0) |
156 | err("set interface to alts=3 failed"); | 168 | err("set interface to alts=3 failed"); |
@@ -163,7 +175,27 @@ static int ttusb2_frontend_attach(struct dvb_usb_adapter *adap) | |||
163 | return 0; | 175 | return 0; |
164 | } | 176 | } |
165 | 177 | ||
166 | static int ttusb2_tuner_attach(struct dvb_usb_adapter *adap) | 178 | static int ttusb2_frontend_tda10023_attach(struct dvb_usb_adapter *adap) |
179 | { | ||
180 | if (usb_set_interface(adap->dev->udev, 0, 3) < 0) | ||
181 | err("set interface to alts=3 failed"); | ||
182 | if ((adap->fe = dvb_attach(tda10023_attach, &tda10023_config, &adap->dev->i2c_adap, 0x48)) == NULL) { | ||
183 | deb_info("TDA10023 attach failed\n"); | ||
184 | return -ENODEV; | ||
185 | } | ||
186 | return 0; | ||
187 | } | ||
188 | |||
189 | static int ttusb2_tuner_tda827x_attach(struct dvb_usb_adapter *adap) | ||
190 | { | ||
191 | if (dvb_attach(tda827x_attach, adap->fe, 0x61, &adap->dev->i2c_adap, NULL) == NULL) { | ||
192 | printk(KERN_ERR "%s: No tda827x found!\n", __func__); | ||
193 | return -ENODEV; | ||
194 | } | ||
195 | return 0; | ||
196 | } | ||
197 | |||
198 | static int ttusb2_tuner_tda826x_attach(struct dvb_usb_adapter *adap) | ||
167 | { | 199 | { |
168 | if (dvb_attach(tda826x_attach, adap->fe, 0x60, &adap->dev->i2c_adap, 0) == NULL) { | 200 | if (dvb_attach(tda826x_attach, adap->fe, 0x60, &adap->dev->i2c_adap, 0) == NULL) { |
169 | deb_info("TDA8263 attach failed\n"); | 201 | deb_info("TDA8263 attach failed\n"); |
@@ -180,6 +212,7 @@ static int ttusb2_tuner_attach(struct dvb_usb_adapter *adap) | |||
180 | /* DVB USB Driver stuff */ | 212 | /* DVB USB Driver stuff */ |
181 | static struct dvb_usb_device_properties ttusb2_properties; | 213 | static struct dvb_usb_device_properties ttusb2_properties; |
182 | static struct dvb_usb_device_properties ttusb2_properties_s2400; | 214 | static struct dvb_usb_device_properties ttusb2_properties_s2400; |
215 | static struct dvb_usb_device_properties ttusb2_properties_ct3650; | ||
183 | 216 | ||
184 | static int ttusb2_probe(struct usb_interface *intf, | 217 | static int ttusb2_probe(struct usb_interface *intf, |
185 | const struct usb_device_id *id) | 218 | const struct usb_device_id *id) |
@@ -187,6 +220,8 @@ static int ttusb2_probe(struct usb_interface *intf, | |||
187 | if (0 == dvb_usb_device_init(intf, &ttusb2_properties, | 220 | if (0 == dvb_usb_device_init(intf, &ttusb2_properties, |
188 | THIS_MODULE, NULL, adapter_nr) || | 221 | THIS_MODULE, NULL, adapter_nr) || |
189 | 0 == dvb_usb_device_init(intf, &ttusb2_properties_s2400, | 222 | 0 == dvb_usb_device_init(intf, &ttusb2_properties_s2400, |
223 | THIS_MODULE, NULL, adapter_nr) || | ||
224 | 0 == dvb_usb_device_init(intf, &ttusb2_properties_ct3650, | ||
190 | THIS_MODULE, NULL, adapter_nr)) | 225 | THIS_MODULE, NULL, adapter_nr)) |
191 | return 0; | 226 | return 0; |
192 | return -ENODEV; | 227 | return -ENODEV; |
@@ -197,6 +232,8 @@ static struct usb_device_id ttusb2_table [] = { | |||
197 | { USB_DEVICE(USB_VID_PINNACLE, USB_PID_PCTV_450E) }, | 232 | { USB_DEVICE(USB_VID_PINNACLE, USB_PID_PCTV_450E) }, |
198 | { USB_DEVICE(USB_VID_TECHNOTREND, | 233 | { USB_DEVICE(USB_VID_TECHNOTREND, |
199 | USB_PID_TECHNOTREND_CONNECT_S2400) }, | 234 | USB_PID_TECHNOTREND_CONNECT_S2400) }, |
235 | { USB_DEVICE(USB_VID_TECHNOTREND, | ||
236 | USB_PID_TECHNOTREND_CONNECT_CT3650) }, | ||
200 | {} /* Terminating entry */ | 237 | {} /* Terminating entry */ |
201 | }; | 238 | }; |
202 | MODULE_DEVICE_TABLE (usb, ttusb2_table); | 239 | MODULE_DEVICE_TABLE (usb, ttusb2_table); |
@@ -214,8 +251,8 @@ static struct dvb_usb_device_properties ttusb2_properties = { | |||
214 | { | 251 | { |
215 | .streaming_ctrl = NULL, // ttusb2_streaming_ctrl, | 252 | .streaming_ctrl = NULL, // ttusb2_streaming_ctrl, |
216 | 253 | ||
217 | .frontend_attach = ttusb2_frontend_attach, | 254 | .frontend_attach = ttusb2_frontend_tda10086_attach, |
218 | .tuner_attach = ttusb2_tuner_attach, | 255 | .tuner_attach = ttusb2_tuner_tda826x_attach, |
219 | 256 | ||
220 | /* parameter for the MPEG2-data transfer */ | 257 | /* parameter for the MPEG2-data transfer */ |
221 | .stream = { | 258 | .stream = { |
@@ -266,8 +303,8 @@ static struct dvb_usb_device_properties ttusb2_properties_s2400 = { | |||
266 | { | 303 | { |
267 | .streaming_ctrl = NULL, | 304 | .streaming_ctrl = NULL, |
268 | 305 | ||
269 | .frontend_attach = ttusb2_frontend_attach, | 306 | .frontend_attach = ttusb2_frontend_tda10086_attach, |
270 | .tuner_attach = ttusb2_tuner_attach, | 307 | .tuner_attach = ttusb2_tuner_tda826x_attach, |
271 | 308 | ||
272 | /* parameter for the MPEG2-data transfer */ | 309 | /* parameter for the MPEG2-data transfer */ |
273 | .stream = { | 310 | .stream = { |
@@ -301,6 +338,52 @@ static struct dvb_usb_device_properties ttusb2_properties_s2400 = { | |||
301 | } | 338 | } |
302 | }; | 339 | }; |
303 | 340 | ||
341 | static struct dvb_usb_device_properties ttusb2_properties_ct3650 = { | ||
342 | .caps = DVB_USB_IS_AN_I2C_ADAPTER, | ||
343 | |||
344 | .usb_ctrl = CYPRESS_FX2, | ||
345 | |||
346 | .size_of_priv = sizeof(struct ttusb2_state), | ||
347 | |||
348 | .num_adapters = 1, | ||
349 | .adapter = { | ||
350 | { | ||
351 | .streaming_ctrl = NULL, | ||
352 | |||
353 | .frontend_attach = ttusb2_frontend_tda10023_attach, | ||
354 | .tuner_attach = ttusb2_tuner_tda827x_attach, | ||
355 | |||
356 | /* parameter for the MPEG2-data transfer */ | ||
357 | .stream = { | ||
358 | .type = USB_ISOC, | ||
359 | .count = 5, | ||
360 | .endpoint = 0x02, | ||
361 | .u = { | ||
362 | .isoc = { | ||
363 | .framesperurb = 4, | ||
364 | .framesize = 940, | ||
365 | .interval = 1, | ||
366 | } | ||
367 | } | ||
368 | } | ||
369 | }, | ||
370 | }, | ||
371 | |||
372 | .power_ctrl = ttusb2_power_ctrl, | ||
373 | .identify_state = ttusb2_identify_state, | ||
374 | |||
375 | .i2c_algo = &ttusb2_i2c_algo, | ||
376 | |||
377 | .generic_bulk_ctrl_endpoint = 0x01, | ||
378 | |||
379 | .num_device_descs = 1, | ||
380 | .devices = { | ||
381 | { "Technotrend TT-connect CT-3650", | ||
382 | .warm_ids = { &ttusb2_table[3], NULL }, | ||
383 | }, | ||
384 | } | ||
385 | }; | ||
386 | |||
304 | static struct usb_driver ttusb2_driver = { | 387 | static struct usb_driver ttusb2_driver = { |
305 | .name = "dvb_usb_ttusb2", | 388 | .name = "dvb_usb_ttusb2", |
306 | .probe = ttusb2_probe, | 389 | .probe = ttusb2_probe, |
diff --git a/drivers/media/dvb/firewire/firedtv-1394.c b/drivers/media/dvb/firewire/firedtv-1394.c index 26333b4f4d3e..b34ca7afb0e6 100644 --- a/drivers/media/dvb/firewire/firedtv-1394.c +++ b/drivers/media/dvb/firewire/firedtv-1394.c | |||
@@ -58,7 +58,7 @@ static void rawiso_activity_cb(struct hpsb_iso *iso) | |||
58 | num = hpsb_iso_n_ready(iso); | 58 | num = hpsb_iso_n_ready(iso); |
59 | 59 | ||
60 | if (!fdtv) { | 60 | if (!fdtv) { |
61 | dev_err(fdtv->device, "received at unknown iso channel\n"); | 61 | pr_err("received at unknown iso channel\n"); |
62 | goto out; | 62 | goto out; |
63 | } | 63 | } |
64 | 64 | ||
diff --git a/drivers/media/dvb/frontends/au8522_decoder.c b/drivers/media/dvb/frontends/au8522_decoder.c index 68dba3a4b4da..29cdbfe36852 100644 --- a/drivers/media/dvb/frontends/au8522_decoder.c +++ b/drivers/media/dvb/frontends/au8522_decoder.c | |||
@@ -567,30 +567,6 @@ static int au8522_g_ctrl(struct v4l2_subdev *sd, struct v4l2_control *ctrl) | |||
567 | 567 | ||
568 | /* ----------------------------------------------------------------------- */ | 568 | /* ----------------------------------------------------------------------- */ |
569 | 569 | ||
570 | static int au8522_g_fmt(struct v4l2_subdev *sd, struct v4l2_format *fmt) | ||
571 | { | ||
572 | switch (fmt->type) { | ||
573 | default: | ||
574 | return -EINVAL; | ||
575 | } | ||
576 | return 0; | ||
577 | } | ||
578 | |||
579 | static int au8522_s_fmt(struct v4l2_subdev *sd, struct v4l2_format *fmt) | ||
580 | { | ||
581 | switch (fmt->type) { | ||
582 | case V4L2_BUF_TYPE_VIDEO_CAPTURE: | ||
583 | /* Not yet implemented */ | ||
584 | break; | ||
585 | default: | ||
586 | return -EINVAL; | ||
587 | } | ||
588 | |||
589 | return 0; | ||
590 | } | ||
591 | |||
592 | /* ----------------------------------------------------------------------- */ | ||
593 | |||
594 | #ifdef CONFIG_VIDEO_ADV_DEBUG | 570 | #ifdef CONFIG_VIDEO_ADV_DEBUG |
595 | static int au8522_g_register(struct v4l2_subdev *sd, | 571 | static int au8522_g_register(struct v4l2_subdev *sd, |
596 | struct v4l2_dbg_register *reg) | 572 | struct v4l2_dbg_register *reg) |
@@ -772,8 +748,6 @@ static const struct v4l2_subdev_audio_ops au8522_audio_ops = { | |||
772 | 748 | ||
773 | static const struct v4l2_subdev_video_ops au8522_video_ops = { | 749 | static const struct v4l2_subdev_video_ops au8522_video_ops = { |
774 | .s_routing = au8522_s_video_routing, | 750 | .s_routing = au8522_s_video_routing, |
775 | .g_fmt = au8522_g_fmt, | ||
776 | .s_fmt = au8522_s_fmt, | ||
777 | .s_stream = au8522_s_stream, | 751 | .s_stream = au8522_s_stream, |
778 | }; | 752 | }; |
779 | 753 | ||
diff --git a/drivers/media/dvb/frontends/ds3000.c b/drivers/media/dvb/frontends/ds3000.c index 78001e8bcdb7..fc61d9230db8 100644 --- a/drivers/media/dvb/frontends/ds3000.c +++ b/drivers/media/dvb/frontends/ds3000.c | |||
@@ -969,15 +969,12 @@ struct dvb_frontend *ds3000_attach(const struct ds3000_config *config, | |||
969 | dprintk("%s\n", __func__); | 969 | dprintk("%s\n", __func__); |
970 | 970 | ||
971 | /* allocate memory for the internal state */ | 971 | /* allocate memory for the internal state */ |
972 | state = kmalloc(sizeof(struct ds3000_state), GFP_KERNEL); | 972 | state = kzalloc(sizeof(struct ds3000_state), GFP_KERNEL); |
973 | if (state == NULL) { | 973 | if (state == NULL) { |
974 | printk(KERN_ERR "Unable to kmalloc\n"); | 974 | printk(KERN_ERR "Unable to kmalloc\n"); |
975 | goto error2; | 975 | goto error2; |
976 | } | 976 | } |
977 | 977 | ||
978 | /* setup the state */ | ||
979 | memset(state, 0, sizeof(struct ds3000_state)); | ||
980 | |||
981 | state->config = config; | 978 | state->config = config; |
982 | state->i2c = i2c; | 979 | state->i2c = i2c; |
983 | state->prevUCBS2 = 0; | 980 | state->prevUCBS2 = 0; |
diff --git a/drivers/media/dvb/frontends/stv6110x.c b/drivers/media/dvb/frontends/stv6110x.c index 42591ce1aaad..f36cab12bdc7 100644 --- a/drivers/media/dvb/frontends/stv6110x.c +++ b/drivers/media/dvb/frontends/stv6110x.c | |||
@@ -303,7 +303,10 @@ static int stv6110x_set_mode(struct dvb_frontend *fe, enum tuner_mode mode) | |||
303 | 303 | ||
304 | static int stv6110x_sleep(struct dvb_frontend *fe) | 304 | static int stv6110x_sleep(struct dvb_frontend *fe) |
305 | { | 305 | { |
306 | return stv6110x_set_mode(fe, TUNER_SLEEP); | 306 | if (fe->tuner_priv) |
307 | return stv6110x_set_mode(fe, TUNER_SLEEP); | ||
308 | |||
309 | return 0; | ||
307 | } | 310 | } |
308 | 311 | ||
309 | static int stv6110x_get_status(struct dvb_frontend *fe, u32 *status) | 312 | static int stv6110x_get_status(struct dvb_frontend *fe, u32 *status) |
diff --git a/drivers/media/dvb/ngene/ngene-cards.c b/drivers/media/dvb/ngene/ngene-cards.c index 692c3e226e83..4692a41ad95b 100644 --- a/drivers/media/dvb/ngene/ngene-cards.c +++ b/drivers/media/dvb/ngene/ngene-cards.c | |||
@@ -217,6 +217,19 @@ static struct ngene_info ngene_info_cineS2v5 = { | |||
217 | .fw_version = 15, | 217 | .fw_version = 15, |
218 | }; | 218 | }; |
219 | 219 | ||
220 | static struct ngene_info ngene_info_duoFlexS2 = { | ||
221 | .type = NGENE_SIDEWINDER, | ||
222 | .name = "Digital Devices DuoFlex S2 miniPCIe", | ||
223 | .io_type = {NGENE_IO_TSIN, NGENE_IO_TSIN}, | ||
224 | .demod_attach = {demod_attach_stv0900, demod_attach_stv0900}, | ||
225 | .tuner_attach = {tuner_attach_stv6110, tuner_attach_stv6110}, | ||
226 | .fe_config = {&fe_cineS2, &fe_cineS2}, | ||
227 | .tuner_config = {&tuner_cineS2_0, &tuner_cineS2_1}, | ||
228 | .lnb = {0x0a, 0x08}, | ||
229 | .tsf = {3, 3}, | ||
230 | .fw_version = 15, | ||
231 | }; | ||
232 | |||
220 | static struct ngene_info ngene_info_m780 = { | 233 | static struct ngene_info ngene_info_m780 = { |
221 | .type = NGENE_APP, | 234 | .type = NGENE_APP, |
222 | .name = "Aver M780 ATSC/QAM-B", | 235 | .name = "Aver M780 ATSC/QAM-B", |
@@ -256,6 +269,8 @@ static const struct pci_device_id ngene_id_tbl[] __devinitdata = { | |||
256 | NGENE_ID(0x18c3, 0xdb01, ngene_info_satixS2), | 269 | NGENE_ID(0x18c3, 0xdb01, ngene_info_satixS2), |
257 | NGENE_ID(0x18c3, 0xdb02, ngene_info_satixS2v2), | 270 | NGENE_ID(0x18c3, 0xdb02, ngene_info_satixS2v2), |
258 | NGENE_ID(0x18c3, 0xdd00, ngene_info_cineS2v5), | 271 | NGENE_ID(0x18c3, 0xdd00, ngene_info_cineS2v5), |
272 | NGENE_ID(0x18c3, 0xdd10, ngene_info_duoFlexS2), | ||
273 | NGENE_ID(0x18c3, 0xdd20, ngene_info_duoFlexS2), | ||
259 | NGENE_ID(0x1461, 0x062e, ngene_info_m780), | 274 | NGENE_ID(0x1461, 0x062e, ngene_info_m780), |
260 | {0} | 275 | {0} |
261 | }; | 276 | }; |
diff --git a/drivers/media/dvb/ngene/ngene-core.c b/drivers/media/dvb/ngene/ngene-core.c index c8b4dfa0ab5f..4caeb163a666 100644 --- a/drivers/media/dvb/ngene/ngene-core.c +++ b/drivers/media/dvb/ngene/ngene-core.c | |||
@@ -53,8 +53,6 @@ MODULE_PARM_DESC(debug, "Print debugging information."); | |||
53 | 53 | ||
54 | DVB_DEFINE_MOD_OPT_ADAPTER_NR(adapter_nr); | 54 | DVB_DEFINE_MOD_OPT_ADAPTER_NR(adapter_nr); |
55 | 55 | ||
56 | #define COMMAND_TIMEOUT_WORKAROUND | ||
57 | |||
58 | #define dprintk if (debug) printk | 56 | #define dprintk if (debug) printk |
59 | 57 | ||
60 | #define ngwriteb(dat, adr) writeb((dat), (char *)(dev->iomem + (adr))) | 58 | #define ngwriteb(dat, adr) writeb((dat), (char *)(dev->iomem + (adr))) |
@@ -147,24 +145,24 @@ static void demux_tasklet(unsigned long data) | |||
147 | } else { | 145 | } else { |
148 | if (chan->HWState == HWSTATE_RUN) { | 146 | if (chan->HWState == HWSTATE_RUN) { |
149 | u32 Flags = 0; | 147 | u32 Flags = 0; |
148 | IBufferExchange *exch1 = chan->pBufferExchange; | ||
149 | IBufferExchange *exch2 = chan->pBufferExchange2; | ||
150 | if (Cur->ngeneBuffer.SR.Flags & 0x01) | 150 | if (Cur->ngeneBuffer.SR.Flags & 0x01) |
151 | Flags |= BEF_EVEN_FIELD; | 151 | Flags |= BEF_EVEN_FIELD; |
152 | if (Cur->ngeneBuffer.SR.Flags & 0x20) | 152 | if (Cur->ngeneBuffer.SR.Flags & 0x20) |
153 | Flags |= BEF_OVERFLOW; | 153 | Flags |= BEF_OVERFLOW; |
154 | if (chan->pBufferExchange) | 154 | spin_unlock_irq(&chan->state_lock); |
155 | chan->pBufferExchange(chan, | 155 | if (exch1) |
156 | Cur->Buffer1, | 156 | exch1(chan, Cur->Buffer1, |
157 | chan-> | 157 | chan->Capture1Length, |
158 | Capture1Length, | 158 | Cur->ngeneBuffer.SR.Clock, |
159 | Cur->ngeneBuffer. | 159 | Flags); |
160 | SR.Clock, Flags); | 160 | if (exch2) |
161 | if (chan->pBufferExchange2) | 161 | exch2(chan, Cur->Buffer2, |
162 | chan->pBufferExchange2(chan, | 162 | chan->Capture2Length, |
163 | Cur->Buffer2, | 163 | Cur->ngeneBuffer.SR.Clock, |
164 | chan-> | 164 | Flags); |
165 | Capture2Length, | 165 | spin_lock_irq(&chan->state_lock); |
166 | Cur->ngeneBuffer. | ||
167 | SR.Clock, Flags); | ||
168 | } else if (chan->HWState != HWSTATE_STOP) | 166 | } else if (chan->HWState != HWSTATE_STOP) |
169 | chan->HWState = HWSTATE_RUN; | 167 | chan->HWState = HWSTATE_RUN; |
170 | } | 168 | } |
@@ -572,11 +570,7 @@ static int ngene_command_stream_control(struct ngene *dev, u8 stream, | |||
572 | u16 BsSPI = ((stream & 1) ? 0x9800 : 0x9700); | 570 | u16 BsSPI = ((stream & 1) ? 0x9800 : 0x9700); |
573 | u16 BsSDO = 0x9B00; | 571 | u16 BsSDO = 0x9B00; |
574 | 572 | ||
575 | /* down(&dev->stream_mutex); */ | 573 | down(&dev->stream_mutex); |
576 | while (down_trylock(&dev->stream_mutex)) { | ||
577 | printk(KERN_INFO DEVICE_NAME ": SC locked\n"); | ||
578 | msleep(1); | ||
579 | } | ||
580 | memset(&com, 0, sizeof(com)); | 574 | memset(&com, 0, sizeof(com)); |
581 | com.cmd.hdr.Opcode = CMD_CONTROL; | 575 | com.cmd.hdr.Opcode = CMD_CONTROL; |
582 | com.cmd.hdr.Length = sizeof(struct FW_STREAM_CONTROL) - 2; | 576 | com.cmd.hdr.Length = sizeof(struct FW_STREAM_CONTROL) - 2; |
@@ -1252,14 +1246,17 @@ static int ngene_load_firm(struct ngene *dev) | |||
1252 | version = 15; | 1246 | version = 15; |
1253 | size = 23466; | 1247 | size = 23466; |
1254 | fw_name = "ngene_15.fw"; | 1248 | fw_name = "ngene_15.fw"; |
1249 | dev->cmd_timeout_workaround = true; | ||
1255 | break; | 1250 | break; |
1256 | case 16: | 1251 | case 16: |
1257 | size = 23498; | 1252 | size = 23498; |
1258 | fw_name = "ngene_16.fw"; | 1253 | fw_name = "ngene_16.fw"; |
1254 | dev->cmd_timeout_workaround = true; | ||
1259 | break; | 1255 | break; |
1260 | case 17: | 1256 | case 17: |
1261 | size = 24446; | 1257 | size = 24446; |
1262 | fw_name = "ngene_17.fw"; | 1258 | fw_name = "ngene_17.fw"; |
1259 | dev->cmd_timeout_workaround = true; | ||
1263 | break; | 1260 | break; |
1264 | } | 1261 | } |
1265 | 1262 | ||
@@ -1299,11 +1296,16 @@ static void ngene_stop(struct ngene *dev) | |||
1299 | ngwritel(0, NGENE_EVENT); | 1296 | ngwritel(0, NGENE_EVENT); |
1300 | ngwritel(0, NGENE_EVENT_HI); | 1297 | ngwritel(0, NGENE_EVENT_HI); |
1301 | free_irq(dev->pci_dev->irq, dev); | 1298 | free_irq(dev->pci_dev->irq, dev); |
1299 | #ifdef CONFIG_PCI_MSI | ||
1300 | if (dev->msi_enabled) | ||
1301 | pci_disable_msi(dev->pci_dev); | ||
1302 | #endif | ||
1302 | } | 1303 | } |
1303 | 1304 | ||
1304 | static int ngene_start(struct ngene *dev) | 1305 | static int ngene_start(struct ngene *dev) |
1305 | { | 1306 | { |
1306 | int stat; | 1307 | int stat; |
1308 | unsigned long flags; | ||
1307 | int i; | 1309 | int i; |
1308 | 1310 | ||
1309 | pci_set_master(dev->pci_dev); | 1311 | pci_set_master(dev->pci_dev); |
@@ -1333,6 +1335,28 @@ static int ngene_start(struct ngene *dev) | |||
1333 | if (stat < 0) | 1335 | if (stat < 0) |
1334 | goto fail; | 1336 | goto fail; |
1335 | 1337 | ||
1338 | #ifdef CONFIG_PCI_MSI | ||
1339 | /* enable MSI if kernel and card support it */ | ||
1340 | if (pci_msi_enabled() && dev->card_info->msi_supported) { | ||
1341 | ngwritel(0, NGENE_INT_ENABLE); | ||
1342 | free_irq(dev->pci_dev->irq, dev); | ||
1343 | stat = pci_enable_msi(dev->pci_dev); | ||
1344 | if (stat) { | ||
1345 | printk(KERN_INFO DEVICE_NAME | ||
1346 | ": MSI not available\n"); | ||
1347 | flags = IRQF_SHARED; | ||
1348 | } else { | ||
1349 | flags = 0; | ||
1350 | dev->msi_enabled = true; | ||
1351 | } | ||
1352 | stat = request_irq(dev->pci_dev->irq, irq_handler, | ||
1353 | flags, "nGene", dev); | ||
1354 | if (stat < 0) | ||
1355 | goto fail2; | ||
1356 | ngwritel(1, NGENE_INT_ENABLE); | ||
1357 | } | ||
1358 | #endif | ||
1359 | |||
1336 | stat = ngene_i2c_init(dev, 0); | 1360 | stat = ngene_i2c_init(dev, 0); |
1337 | if (stat < 0) | 1361 | if (stat < 0) |
1338 | goto fail; | 1362 | goto fail; |
@@ -1358,10 +1382,18 @@ static int ngene_start(struct ngene *dev) | |||
1358 | bconf = BUFFER_CONFIG_3333; | 1382 | bconf = BUFFER_CONFIG_3333; |
1359 | stat = ngene_command_config_buf(dev, bconf); | 1383 | stat = ngene_command_config_buf(dev, bconf); |
1360 | } | 1384 | } |
1361 | return stat; | 1385 | if (!stat) |
1386 | return stat; | ||
1387 | |||
1388 | /* otherwise error: fall through */ | ||
1362 | fail: | 1389 | fail: |
1363 | ngwritel(0, NGENE_INT_ENABLE); | 1390 | ngwritel(0, NGENE_INT_ENABLE); |
1364 | free_irq(dev->pci_dev->irq, dev); | 1391 | free_irq(dev->pci_dev->irq, dev); |
1392 | #ifdef CONFIG_PCI_MSI | ||
1393 | fail2: | ||
1394 | if (dev->msi_enabled) | ||
1395 | pci_disable_msi(dev->pci_dev); | ||
1396 | #endif | ||
1365 | return stat; | 1397 | return stat; |
1366 | } | 1398 | } |
1367 | 1399 | ||
@@ -1379,10 +1411,8 @@ static void release_channel(struct ngene_channel *chan) | |||
1379 | struct ngene_info *ni = dev->card_info; | 1411 | struct ngene_info *ni = dev->card_info; |
1380 | int io = ni->io_type[chan->number]; | 1412 | int io = ni->io_type[chan->number]; |
1381 | 1413 | ||
1382 | #ifdef COMMAND_TIMEOUT_WORKAROUND | 1414 | if (chan->dev->cmd_timeout_workaround && chan->running) |
1383 | if (chan->running) | ||
1384 | set_transfer(chan, 0); | 1415 | set_transfer(chan, 0); |
1385 | #endif | ||
1386 | 1416 | ||
1387 | tasklet_kill(&chan->demux_tasklet); | 1417 | tasklet_kill(&chan->demux_tasklet); |
1388 | 1418 | ||
diff --git a/drivers/media/dvb/ngene/ngene-dvb.c b/drivers/media/dvb/ngene/ngene-dvb.c index 96013eb353cd..48f980b21d66 100644 --- a/drivers/media/dvb/ngene/ngene-dvb.c +++ b/drivers/media/dvb/ngene/ngene-dvb.c | |||
@@ -37,15 +37,12 @@ | |||
37 | #include <linux/pci.h> | 37 | #include <linux/pci.h> |
38 | #include <linux/smp_lock.h> | 38 | #include <linux/smp_lock.h> |
39 | #include <linux/timer.h> | 39 | #include <linux/timer.h> |
40 | #include <linux/version.h> | ||
41 | #include <linux/byteorder/generic.h> | 40 | #include <linux/byteorder/generic.h> |
42 | #include <linux/firmware.h> | 41 | #include <linux/firmware.h> |
43 | #include <linux/vmalloc.h> | 42 | #include <linux/vmalloc.h> |
44 | 43 | ||
45 | #include "ngene.h" | 44 | #include "ngene.h" |
46 | 45 | ||
47 | #define COMMAND_TIMEOUT_WORKAROUND | ||
48 | |||
49 | 46 | ||
50 | /****************************************************************************/ | 47 | /****************************************************************************/ |
51 | /* COMMAND API interface ****************************************************/ | 48 | /* COMMAND API interface ****************************************************/ |
@@ -69,9 +66,7 @@ void *tsin_exchange(void *priv, void *buf, u32 len, u32 clock, u32 flags) | |||
69 | struct ngene_channel *chan = priv; | 66 | struct ngene_channel *chan = priv; |
70 | 67 | ||
71 | 68 | ||
72 | #ifdef COMMAND_TIMEOUT_WORKAROUND | ||
73 | if (chan->users > 0) | 69 | if (chan->users > 0) |
74 | #endif | ||
75 | dvb_dmx_swfilter(&chan->demux, buf, len); | 70 | dvb_dmx_swfilter(&chan->demux, buf, len); |
76 | return NULL; | 71 | return NULL; |
77 | } | 72 | } |
@@ -106,11 +101,8 @@ int ngene_start_feed(struct dvb_demux_feed *dvbdmxfeed) | |||
106 | struct ngene_channel *chan = dvbdmx->priv; | 101 | struct ngene_channel *chan = dvbdmx->priv; |
107 | 102 | ||
108 | if (chan->users == 0) { | 103 | if (chan->users == 0) { |
109 | #ifdef COMMAND_TIMEOUT_WORKAROUND | 104 | if (!chan->dev->cmd_timeout_workaround || !chan->running) |
110 | if (!chan->running) | ||
111 | #endif | ||
112 | set_transfer(chan, 1); | 105 | set_transfer(chan, 1); |
113 | /* msleep(10); */ | ||
114 | } | 106 | } |
115 | 107 | ||
116 | return ++chan->users; | 108 | return ++chan->users; |
@@ -124,9 +116,8 @@ int ngene_stop_feed(struct dvb_demux_feed *dvbdmxfeed) | |||
124 | if (--chan->users) | 116 | if (--chan->users) |
125 | return chan->users; | 117 | return chan->users; |
126 | 118 | ||
127 | #ifndef COMMAND_TIMEOUT_WORKAROUND | 119 | if (!chan->dev->cmd_timeout_workaround) |
128 | set_transfer(chan, 0); | 120 | set_transfer(chan, 0); |
129 | #endif | ||
130 | 121 | ||
131 | return 0; | 122 | return 0; |
132 | } | 123 | } |
diff --git a/drivers/media/dvb/ngene/ngene-i2c.c b/drivers/media/dvb/ngene/ngene-i2c.c index 2ef54ca6badd..477fe0aade86 100644 --- a/drivers/media/dvb/ngene/ngene-i2c.c +++ b/drivers/media/dvb/ngene/ngene-i2c.c | |||
@@ -39,7 +39,6 @@ | |||
39 | #include <linux/pci_ids.h> | 39 | #include <linux/pci_ids.h> |
40 | #include <linux/smp_lock.h> | 40 | #include <linux/smp_lock.h> |
41 | #include <linux/timer.h> | 41 | #include <linux/timer.h> |
42 | #include <linux/version.h> | ||
43 | #include <linux/byteorder/generic.h> | 42 | #include <linux/byteorder/generic.h> |
44 | #include <linux/firmware.h> | 43 | #include <linux/firmware.h> |
45 | #include <linux/vmalloc.h> | 44 | #include <linux/vmalloc.h> |
diff --git a/drivers/media/dvb/ngene/ngene.h b/drivers/media/dvb/ngene/ngene.h index 676fcbb79026..8fb4200f83f8 100644 --- a/drivers/media/dvb/ngene/ngene.h +++ b/drivers/media/dvb/ngene/ngene.h | |||
@@ -725,6 +725,8 @@ struct ngene { | |||
725 | u32 device_version; | 725 | u32 device_version; |
726 | u32 fw_interface_version; | 726 | u32 fw_interface_version; |
727 | u32 icounts; | 727 | u32 icounts; |
728 | bool msi_enabled; | ||
729 | bool cmd_timeout_workaround; | ||
728 | 730 | ||
729 | u8 *CmdDoneByte; | 731 | u8 *CmdDoneByte; |
730 | int BootFirmware; | 732 | int BootFirmware; |
@@ -797,6 +799,7 @@ struct ngene_info { | |||
797 | #define NGENE_VBOX_V2 7 | 799 | #define NGENE_VBOX_V2 7 |
798 | 800 | ||
799 | int fw_version; | 801 | int fw_version; |
802 | bool msi_supported; | ||
800 | char *name; | 803 | char *name; |
801 | 804 | ||
802 | int io_type[MAX_STREAM]; | 805 | int io_type[MAX_STREAM]; |
diff --git a/drivers/media/dvb/ttpci/Kconfig b/drivers/media/dvb/ttpci/Kconfig index d8d4214fd65f..32a7ec65ec42 100644 --- a/drivers/media/dvb/ttpci/Kconfig +++ b/drivers/media/dvb/ttpci/Kconfig | |||
@@ -68,13 +68,14 @@ config DVB_BUDGET | |||
68 | select DVB_VES1820 if !DVB_FE_CUSTOMISE | 68 | select DVB_VES1820 if !DVB_FE_CUSTOMISE |
69 | select DVB_L64781 if !DVB_FE_CUSTOMISE | 69 | select DVB_L64781 if !DVB_FE_CUSTOMISE |
70 | select DVB_TDA8083 if !DVB_FE_CUSTOMISE | 70 | select DVB_TDA8083 if !DVB_FE_CUSTOMISE |
71 | select DVB_TDA10021 if !DVB_FE_CUSTOMISE | ||
72 | select DVB_TDA10023 if !DVB_FE_CUSTOMISE | ||
73 | select DVB_S5H1420 if !DVB_FE_CUSTOMISE | 71 | select DVB_S5H1420 if !DVB_FE_CUSTOMISE |
74 | select DVB_TDA10086 if !DVB_FE_CUSTOMISE | 72 | select DVB_TDA10086 if !DVB_FE_CUSTOMISE |
75 | select DVB_TDA826X if !DVB_FE_CUSTOMISE | 73 | select DVB_TDA826X if !DVB_FE_CUSTOMISE |
76 | select DVB_LNBP21 if !DVB_FE_CUSTOMISE | 74 | select DVB_LNBP21 if !DVB_FE_CUSTOMISE |
77 | select DVB_TDA1004X if !DVB_FE_CUSTOMISE | 75 | select DVB_TDA1004X if !DVB_FE_CUSTOMISE |
76 | select DVB_ISL6423 if !DVB_FE_CUSTOMISE | ||
77 | select DVB_STV090x if !DVB_FE_CUSTOMISE | ||
78 | select DVB_STV6110x if !DVB_FE_CUSTOMISE | ||
78 | help | 79 | help |
79 | Support for simple SAA7146 based DVB cards (so called Budget- | 80 | Support for simple SAA7146 based DVB cards (so called Budget- |
80 | or Nova-PCI cards) without onboard MPEG2 decoder, and without | 81 | or Nova-PCI cards) without onboard MPEG2 decoder, and without |
diff --git a/drivers/media/dvb/ttpci/budget-ci.c b/drivers/media/dvb/ttpci/budget-ci.c index 461714396331..13ac9e3ab121 100644 --- a/drivers/media/dvb/ttpci/budget-ci.c +++ b/drivers/media/dvb/ttpci/budget-ci.c | |||
@@ -215,6 +215,7 @@ static int msp430_ir_init(struct budget_ci *budget_ci) | |||
215 | break; | 215 | break; |
216 | case 0x1010: | 216 | case 0x1010: |
217 | case 0x1017: | 217 | case 0x1017: |
218 | case 0x1019: | ||
218 | case 0x101a: | 219 | case 0x101a: |
219 | /* for the Technotrend 1500 bundled remote */ | 220 | /* for the Technotrend 1500 bundled remote */ |
220 | ir_codes = RC_MAP_TT_1500; | 221 | ir_codes = RC_MAP_TT_1500; |