diff options
author | Steve French <sfrench@us.ibm.com> | 2009-02-03 10:19:23 -0500 |
---|---|---|
committer | Steve French <sfrench@us.ibm.com> | 2009-02-03 10:19:23 -0500 |
commit | e1f81c8a417be466e85a38b61679aa6860ec7331 (patch) | |
tree | 749815f74bfad330e83560a10fd5da5fc4d8c765 /drivers/media/dvb | |
parent | 0e2bedaa394f74fa9f75ee937488c33d90039b5a (diff) | |
parent | b1792e367053968f2ddb48bc911d314143ce6242 (diff) |
Merge branch 'master' of /pub/scm/linux/kernel/git/torvalds/linux-2.6
Diffstat (limited to 'drivers/media/dvb')
-rw-r--r-- | drivers/media/dvb/dvb-core/dvb_ca_en50221.c | 24 | ||||
-rw-r--r-- | drivers/media/dvb/dvb-core/dvb_ca_en50221.h | 6 | ||||
-rw-r--r-- | drivers/media/dvb/dvb-usb/af9005-fe.c | 2 | ||||
-rw-r--r-- | drivers/media/dvb/dvb-usb/af9015.c | 30 | ||||
-rw-r--r-- | drivers/media/dvb/dvb-usb/dib0700_devices.c | 18 | ||||
-rw-r--r-- | drivers/media/dvb/dvb-usb/dvb-usb-ids.h | 2 | ||||
-rw-r--r-- | drivers/media/dvb/frontends/drx397xD.c | 2 | ||||
-rw-r--r-- | drivers/media/dvb/frontends/s5h1409.c | 7 | ||||
-rw-r--r-- | drivers/media/dvb/frontends/stb0899_algo.c | 3 | ||||
-rw-r--r-- | drivers/media/dvb/ttpci/budget.c | 1 | ||||
-rw-r--r-- | drivers/media/dvb/ttusb-dec/ttusb_dec.c | 2 |
11 files changed, 77 insertions, 20 deletions
diff --git a/drivers/media/dvb/dvb-core/dvb_ca_en50221.c b/drivers/media/dvb/dvb-core/dvb_ca_en50221.c index 98ee16773ff2..7e3aeaa7370f 100644 --- a/drivers/media/dvb/dvb-core/dvb_ca_en50221.c +++ b/drivers/media/dvb/dvb-core/dvb_ca_en50221.c | |||
@@ -93,6 +93,9 @@ struct dvb_ca_slot { | |||
93 | /* current state of the CAM */ | 93 | /* current state of the CAM */ |
94 | int slot_state; | 94 | int slot_state; |
95 | 95 | ||
96 | /* mutex used for serializing access to one CI slot */ | ||
97 | struct mutex slot_lock; | ||
98 | |||
96 | /* Number of CAMCHANGES that have occurred since last processing */ | 99 | /* Number of CAMCHANGES that have occurred since last processing */ |
97 | atomic_t camchange_count; | 100 | atomic_t camchange_count; |
98 | 101 | ||
@@ -711,14 +714,20 @@ static int dvb_ca_en50221_write_data(struct dvb_ca_private *ca, int slot, u8 * b | |||
711 | dprintk("%s\n", __func__); | 714 | dprintk("%s\n", __func__); |
712 | 715 | ||
713 | 716 | ||
714 | // sanity check | 717 | /* sanity check */ |
715 | if (bytes_write > ca->slot_info[slot].link_buf_size) | 718 | if (bytes_write > ca->slot_info[slot].link_buf_size) |
716 | return -EINVAL; | 719 | return -EINVAL; |
717 | 720 | ||
718 | /* check if interface is actually waiting for us to read from it, or if a read is in progress */ | 721 | /* it is possible we are dealing with a single buffer implementation, |
722 | thus if there is data available for read or if there is even a read | ||
723 | already in progress, we do nothing but awake the kernel thread to | ||
724 | process the data if necessary. */ | ||
719 | if ((status = ca->pub->read_cam_control(ca->pub, slot, CTRLIF_STATUS)) < 0) | 725 | if ((status = ca->pub->read_cam_control(ca->pub, slot, CTRLIF_STATUS)) < 0) |
720 | goto exitnowrite; | 726 | goto exitnowrite; |
721 | if (status & (STATUSREG_DA | STATUSREG_RE)) { | 727 | if (status & (STATUSREG_DA | STATUSREG_RE)) { |
728 | if (status & STATUSREG_DA) | ||
729 | dvb_ca_en50221_thread_wakeup(ca); | ||
730 | |||
722 | status = -EAGAIN; | 731 | status = -EAGAIN; |
723 | goto exitnowrite; | 732 | goto exitnowrite; |
724 | } | 733 | } |
@@ -987,6 +996,8 @@ static int dvb_ca_en50221_thread(void *data) | |||
987 | /* go through all the slots processing them */ | 996 | /* go through all the slots processing them */ |
988 | for (slot = 0; slot < ca->slot_count; slot++) { | 997 | for (slot = 0; slot < ca->slot_count; slot++) { |
989 | 998 | ||
999 | mutex_lock(&ca->slot_info[slot].slot_lock); | ||
1000 | |||
990 | // check the cam status + deal with CAMCHANGEs | 1001 | // check the cam status + deal with CAMCHANGEs |
991 | while (dvb_ca_en50221_check_camstatus(ca, slot)) { | 1002 | while (dvb_ca_en50221_check_camstatus(ca, slot)) { |
992 | /* clear down an old CI slot if necessary */ | 1003 | /* clear down an old CI slot if necessary */ |
@@ -1122,7 +1133,7 @@ static int dvb_ca_en50221_thread(void *data) | |||
1122 | 1133 | ||
1123 | case DVB_CA_SLOTSTATE_RUNNING: | 1134 | case DVB_CA_SLOTSTATE_RUNNING: |
1124 | if (!ca->open) | 1135 | if (!ca->open) |
1125 | continue; | 1136 | break; |
1126 | 1137 | ||
1127 | // poll slots for data | 1138 | // poll slots for data |
1128 | pktcount = 0; | 1139 | pktcount = 0; |
@@ -1146,6 +1157,8 @@ static int dvb_ca_en50221_thread(void *data) | |||
1146 | } | 1157 | } |
1147 | break; | 1158 | break; |
1148 | } | 1159 | } |
1160 | |||
1161 | mutex_unlock(&ca->slot_info[slot].slot_lock); | ||
1149 | } | 1162 | } |
1150 | } | 1163 | } |
1151 | 1164 | ||
@@ -1181,6 +1194,7 @@ static int dvb_ca_en50221_io_do_ioctl(struct inode *inode, struct file *file, | |||
1181 | switch (cmd) { | 1194 | switch (cmd) { |
1182 | case CA_RESET: | 1195 | case CA_RESET: |
1183 | for (slot = 0; slot < ca->slot_count; slot++) { | 1196 | for (slot = 0; slot < ca->slot_count; slot++) { |
1197 | mutex_lock(&ca->slot_info[slot].slot_lock); | ||
1184 | if (ca->slot_info[slot].slot_state != DVB_CA_SLOTSTATE_NONE) { | 1198 | if (ca->slot_info[slot].slot_state != DVB_CA_SLOTSTATE_NONE) { |
1185 | dvb_ca_en50221_slot_shutdown(ca, slot); | 1199 | dvb_ca_en50221_slot_shutdown(ca, slot); |
1186 | if (ca->flags & DVB_CA_EN50221_FLAG_IRQ_CAMCHANGE) | 1200 | if (ca->flags & DVB_CA_EN50221_FLAG_IRQ_CAMCHANGE) |
@@ -1188,6 +1202,7 @@ static int dvb_ca_en50221_io_do_ioctl(struct inode *inode, struct file *file, | |||
1188 | slot, | 1202 | slot, |
1189 | DVB_CA_EN50221_CAMCHANGE_INSERTED); | 1203 | DVB_CA_EN50221_CAMCHANGE_INSERTED); |
1190 | } | 1204 | } |
1205 | mutex_unlock(&ca->slot_info[slot].slot_lock); | ||
1191 | } | 1206 | } |
1192 | ca->next_read_slot = 0; | 1207 | ca->next_read_slot = 0; |
1193 | dvb_ca_en50221_thread_wakeup(ca); | 1208 | dvb_ca_en50221_thread_wakeup(ca); |
@@ -1308,7 +1323,9 @@ static ssize_t dvb_ca_en50221_io_write(struct file *file, | |||
1308 | goto exit; | 1323 | goto exit; |
1309 | } | 1324 | } |
1310 | 1325 | ||
1326 | mutex_lock(&ca->slot_info[slot].slot_lock); | ||
1311 | status = dvb_ca_en50221_write_data(ca, slot, fragbuf, fraglen + 2); | 1327 | status = dvb_ca_en50221_write_data(ca, slot, fragbuf, fraglen + 2); |
1328 | mutex_unlock(&ca->slot_info[slot].slot_lock); | ||
1312 | if (status == (fraglen + 2)) { | 1329 | if (status == (fraglen + 2)) { |
1313 | written = 1; | 1330 | written = 1; |
1314 | break; | 1331 | break; |
@@ -1664,6 +1681,7 @@ int dvb_ca_en50221_init(struct dvb_adapter *dvb_adapter, | |||
1664 | ca->slot_info[i].slot_state = DVB_CA_SLOTSTATE_NONE; | 1681 | ca->slot_info[i].slot_state = DVB_CA_SLOTSTATE_NONE; |
1665 | atomic_set(&ca->slot_info[i].camchange_count, 0); | 1682 | atomic_set(&ca->slot_info[i].camchange_count, 0); |
1666 | ca->slot_info[i].camchange_type = DVB_CA_EN50221_CAMCHANGE_REMOVED; | 1683 | ca->slot_info[i].camchange_type = DVB_CA_EN50221_CAMCHANGE_REMOVED; |
1684 | mutex_init(&ca->slot_info[i].slot_lock); | ||
1667 | } | 1685 | } |
1668 | 1686 | ||
1669 | if (signal_pending(current)) { | 1687 | if (signal_pending(current)) { |
diff --git a/drivers/media/dvb/dvb-core/dvb_ca_en50221.h b/drivers/media/dvb/dvb-core/dvb_ca_en50221.h index 8467e63ddc0d..7df2e141187a 100644 --- a/drivers/media/dvb/dvb-core/dvb_ca_en50221.h +++ b/drivers/media/dvb/dvb-core/dvb_ca_en50221.h | |||
@@ -45,8 +45,10 @@ struct dvb_ca_en50221 { | |||
45 | /* the module owning this structure */ | 45 | /* the module owning this structure */ |
46 | struct module* owner; | 46 | struct module* owner; |
47 | 47 | ||
48 | /* NOTE: the read_*, write_* and poll_slot_status functions must use locks as | 48 | /* NOTE: the read_*, write_* and poll_slot_status functions will be |
49 | * they may be called from several threads at once */ | 49 | * called for different slots concurrently and need to use locks where |
50 | * and if appropriate. There will be no concurrent access to one slot. | ||
51 | */ | ||
50 | 52 | ||
51 | /* functions for accessing attribute memory on the CAM */ | 53 | /* functions for accessing attribute memory on the CAM */ |
52 | int (*read_attribute_mem)(struct dvb_ca_en50221* ca, int slot, int address); | 54 | int (*read_attribute_mem)(struct dvb_ca_en50221* ca, int slot, int address); |
diff --git a/drivers/media/dvb/dvb-usb/af9005-fe.c b/drivers/media/dvb/dvb-usb/af9005-fe.c index b1a9c4cdec93..199ece0d4883 100644 --- a/drivers/media/dvb/dvb-usb/af9005-fe.c +++ b/drivers/media/dvb/dvb-usb/af9005-fe.c | |||
@@ -220,7 +220,7 @@ static int af9005_get_post_vit_ber(struct dvb_frontend *fe, | |||
220 | u16 * abort_count) | 220 | u16 * abort_count) |
221 | { | 221 | { |
222 | u32 loc_cw_count = 0, loc_err_count; | 222 | u32 loc_cw_count = 0, loc_err_count; |
223 | u16 loc_abort_count; | 223 | u16 loc_abort_count = 0; |
224 | int ret; | 224 | int ret; |
225 | 225 | ||
226 | ret = | 226 | ret = |
diff --git a/drivers/media/dvb/dvb-usb/af9015.c b/drivers/media/dvb/dvb-usb/af9015.c index e1e9aa5c6b84..6a97a40d3dfb 100644 --- a/drivers/media/dvb/dvb-usb/af9015.c +++ b/drivers/media/dvb/dvb-usb/af9015.c | |||
@@ -694,7 +694,12 @@ static int af9015_read_config(struct usb_device *udev) | |||
694 | 694 | ||
695 | /* IR remote controller */ | 695 | /* IR remote controller */ |
696 | req.addr = AF9015_EEPROM_IR_MODE; | 696 | req.addr = AF9015_EEPROM_IR_MODE; |
697 | ret = af9015_rw_udev(udev, &req); | 697 | /* first message will timeout often due to possible hw bug */ |
698 | for (i = 0; i < 4; i++) { | ||
699 | ret = af9015_rw_udev(udev, &req); | ||
700 | if (!ret) | ||
701 | break; | ||
702 | } | ||
698 | if (ret) | 703 | if (ret) |
699 | goto error; | 704 | goto error; |
700 | deb_info("%s: IR mode:%d\n", __func__, val); | 705 | deb_info("%s: IR mode:%d\n", __func__, val); |
@@ -835,18 +840,19 @@ static int af9015_read_config(struct usb_device *udev) | |||
835 | if (!dvb_usb_af9015_dual_mode) | 840 | if (!dvb_usb_af9015_dual_mode) |
836 | af9015_config.dual_mode = 0; | 841 | af9015_config.dual_mode = 0; |
837 | 842 | ||
838 | /* set buffer size according to USB port speed */ | 843 | /* Set adapter0 buffer size according to USB port speed, adapter1 buffer |
844 | size can be static because it is enabled only USB2.0 */ | ||
839 | for (i = 0; i < af9015_properties_count; i++) { | 845 | for (i = 0; i < af9015_properties_count; i++) { |
840 | /* USB1.1 set smaller buffersize and disable 2nd adapter */ | 846 | /* USB1.1 set smaller buffersize and disable 2nd adapter */ |
841 | if (udev->speed == USB_SPEED_FULL) { | 847 | if (udev->speed == USB_SPEED_FULL) { |
842 | af9015_properties[i].adapter->stream.u.bulk.buffersize = | 848 | af9015_properties[i].adapter[0].stream.u.bulk.buffersize |
843 | TS_USB11_MAX_PACKET_SIZE; | 849 | = TS_USB11_MAX_PACKET_SIZE; |
844 | /* disable 2nd adapter because we don't have | 850 | /* disable 2nd adapter because we don't have |
845 | PID-filters */ | 851 | PID-filters */ |
846 | af9015_config.dual_mode = 0; | 852 | af9015_config.dual_mode = 0; |
847 | } else { | 853 | } else { |
848 | af9015_properties[i].adapter->stream.u.bulk.buffersize = | 854 | af9015_properties[i].adapter[0].stream.u.bulk.buffersize |
849 | TS_USB20_MAX_PACKET_SIZE; | 855 | = TS_USB20_MAX_PACKET_SIZE; |
850 | } | 856 | } |
851 | } | 857 | } |
852 | 858 | ||
@@ -1254,6 +1260,12 @@ static struct dvb_usb_device_properties af9015_properties[] = { | |||
1254 | .type = USB_BULK, | 1260 | .type = USB_BULK, |
1255 | .count = 6, | 1261 | .count = 6, |
1256 | .endpoint = 0x85, | 1262 | .endpoint = 0x85, |
1263 | .u = { | ||
1264 | .bulk = { | ||
1265 | .buffersize = | ||
1266 | TS_USB20_MAX_PACKET_SIZE, | ||
1267 | } | ||
1268 | } | ||
1257 | }, | 1269 | }, |
1258 | } | 1270 | } |
1259 | }, | 1271 | }, |
@@ -1353,6 +1365,12 @@ static struct dvb_usb_device_properties af9015_properties[] = { | |||
1353 | .type = USB_BULK, | 1365 | .type = USB_BULK, |
1354 | .count = 6, | 1366 | .count = 6, |
1355 | .endpoint = 0x85, | 1367 | .endpoint = 0x85, |
1368 | .u = { | ||
1369 | .bulk = { | ||
1370 | .buffersize = | ||
1371 | TS_USB20_MAX_PACKET_SIZE, | ||
1372 | } | ||
1373 | } | ||
1356 | }, | 1374 | }, |
1357 | } | 1375 | } |
1358 | }, | 1376 | }, |
diff --git a/drivers/media/dvb/dvb-usb/dib0700_devices.c b/drivers/media/dvb/dvb-usb/dib0700_devices.c index 391732788911..635d30a55078 100644 --- a/drivers/media/dvb/dvb-usb/dib0700_devices.c +++ b/drivers/media/dvb/dvb-usb/dib0700_devices.c | |||
@@ -1393,6 +1393,9 @@ struct usb_device_id dib0700_usb_id_table[] = { | |||
1393 | { USB_DEVICE(USB_VID_ASUS, USB_PID_ASUS_U3000H) }, | 1393 | { USB_DEVICE(USB_VID_ASUS, USB_PID_ASUS_U3000H) }, |
1394 | /* 40 */{ USB_DEVICE(USB_VID_PINNACLE, USB_PID_PINNACLE_PCTV801E) }, | 1394 | /* 40 */{ USB_DEVICE(USB_VID_PINNACLE, USB_PID_PINNACLE_PCTV801E) }, |
1395 | { USB_DEVICE(USB_VID_PINNACLE, USB_PID_PINNACLE_PCTV801E_SE) }, | 1395 | { USB_DEVICE(USB_VID_PINNACLE, USB_PID_PINNACLE_PCTV801E_SE) }, |
1396 | { USB_DEVICE(USB_VID_TERRATEC, USB_PID_TERRATEC_CINERGY_T_EXPRESS) }, | ||
1397 | { USB_DEVICE(USB_VID_TERRATEC, | ||
1398 | USB_PID_TERRATEC_CINERGY_DT_XS_DIVERSITY_2) }, | ||
1396 | { 0 } /* Terminating entry */ | 1399 | { 0 } /* Terminating entry */ |
1397 | }; | 1400 | }; |
1398 | MODULE_DEVICE_TABLE(usb, dib0700_usb_id_table); | 1401 | MODULE_DEVICE_TABLE(usb, dib0700_usb_id_table); |
@@ -1537,7 +1540,8 @@ struct dvb_usb_device_properties dib0700_devices[] = { | |||
1537 | { "DiBcom STK7700D reference design", | 1540 | { "DiBcom STK7700D reference design", |
1538 | { &dib0700_usb_id_table[14], NULL }, | 1541 | { &dib0700_usb_id_table[14], NULL }, |
1539 | { NULL }, | 1542 | { NULL }, |
1540 | } | 1543 | }, |
1544 | |||
1541 | }, | 1545 | }, |
1542 | 1546 | ||
1543 | .rc_interval = DEFAULT_RC_INTERVAL, | 1547 | .rc_interval = DEFAULT_RC_INTERVAL, |
@@ -1557,7 +1561,7 @@ struct dvb_usb_device_properties dib0700_devices[] = { | |||
1557 | }, | 1561 | }, |
1558 | }, | 1562 | }, |
1559 | 1563 | ||
1560 | .num_device_descs = 2, | 1564 | .num_device_descs = 3, |
1561 | .devices = { | 1565 | .devices = { |
1562 | { "ASUS My Cinema U3000 Mini DVBT Tuner", | 1566 | { "ASUS My Cinema U3000 Mini DVBT Tuner", |
1563 | { &dib0700_usb_id_table[23], NULL }, | 1567 | { &dib0700_usb_id_table[23], NULL }, |
@@ -1566,6 +1570,10 @@ struct dvb_usb_device_properties dib0700_devices[] = { | |||
1566 | { "Yuan EC372S", | 1570 | { "Yuan EC372S", |
1567 | { &dib0700_usb_id_table[31], NULL }, | 1571 | { &dib0700_usb_id_table[31], NULL }, |
1568 | { NULL }, | 1572 | { NULL }, |
1573 | }, | ||
1574 | { "Terratec Cinergy T Express", | ||
1575 | { &dib0700_usb_id_table[42], NULL }, | ||
1576 | { NULL }, | ||
1569 | } | 1577 | } |
1570 | }, | 1578 | }, |
1571 | 1579 | ||
@@ -1653,7 +1661,7 @@ struct dvb_usb_device_properties dib0700_devices[] = { | |||
1653 | } | 1661 | } |
1654 | }, | 1662 | }, |
1655 | 1663 | ||
1656 | .num_device_descs = 4, | 1664 | .num_device_descs = 5, |
1657 | .devices = { | 1665 | .devices = { |
1658 | { "DiBcom STK7070PD reference design", | 1666 | { "DiBcom STK7070PD reference design", |
1659 | { &dib0700_usb_id_table[17], NULL }, | 1667 | { &dib0700_usb_id_table[17], NULL }, |
@@ -1670,6 +1678,10 @@ struct dvb_usb_device_properties dib0700_devices[] = { | |||
1670 | { "Hauppauge Nova-TD-500 (84xxx)", | 1678 | { "Hauppauge Nova-TD-500 (84xxx)", |
1671 | { &dib0700_usb_id_table[36], NULL }, | 1679 | { &dib0700_usb_id_table[36], NULL }, |
1672 | { NULL }, | 1680 | { NULL }, |
1681 | }, | ||
1682 | { "Terratec Cinergy DT USB XS Diversity", | ||
1683 | { &dib0700_usb_id_table[43], NULL }, | ||
1684 | { NULL }, | ||
1673 | } | 1685 | } |
1674 | } | 1686 | } |
1675 | }, { DIB0700_DEFAULT_DEVICE_PROPERTIES, | 1687 | }, { DIB0700_DEFAULT_DEVICE_PROPERTIES, |
diff --git a/drivers/media/dvb/dvb-usb/dvb-usb-ids.h b/drivers/media/dvb/dvb-usb/dvb-usb-ids.h index a4fca3fca5ee..0db0c06ee6f2 100644 --- a/drivers/media/dvb/dvb-usb/dvb-usb-ids.h +++ b/drivers/media/dvb/dvb-usb/dvb-usb-ids.h | |||
@@ -162,8 +162,10 @@ | |||
162 | #define USB_PID_AVERMEDIA_A309 0xa309 | 162 | #define USB_PID_AVERMEDIA_A309 0xa309 |
163 | #define USB_PID_TECHNOTREND_CONNECT_S2400 0x3006 | 163 | #define USB_PID_TECHNOTREND_CONNECT_S2400 0x3006 |
164 | #define USB_PID_TERRATEC_CINERGY_DT_XS_DIVERSITY 0x005a | 164 | #define USB_PID_TERRATEC_CINERGY_DT_XS_DIVERSITY 0x005a |
165 | #define USB_PID_TERRATEC_CINERGY_DT_XS_DIVERSITY_2 0x0081 | ||
165 | #define USB_PID_TERRATEC_CINERGY_HT_USB_XE 0x0058 | 166 | #define USB_PID_TERRATEC_CINERGY_HT_USB_XE 0x0058 |
166 | #define USB_PID_TERRATEC_CINERGY_HT_EXPRESS 0x0060 | 167 | #define USB_PID_TERRATEC_CINERGY_HT_EXPRESS 0x0060 |
168 | #define USB_PID_TERRATEC_CINERGY_T_EXPRESS 0x0062 | ||
167 | #define USB_PID_TERRATEC_CINERGY_T_XXS 0x0078 | 169 | #define USB_PID_TERRATEC_CINERGY_T_XXS 0x0078 |
168 | #define USB_PID_PINNACLE_EXPRESSCARD_320CX 0x022e | 170 | #define USB_PID_PINNACLE_EXPRESSCARD_320CX 0x022e |
169 | #define USB_PID_PINNACLE_PCTV2000E 0x022c | 171 | #define USB_PID_PINNACLE_PCTV2000E 0x022c |
diff --git a/drivers/media/dvb/frontends/drx397xD.c b/drivers/media/dvb/frontends/drx397xD.c index ec4e08dbc699..1e81e713df63 100644 --- a/drivers/media/dvb/frontends/drx397xD.c +++ b/drivers/media/dvb/frontends/drx397xD.c | |||
@@ -646,7 +646,7 @@ static int drx_tune(struct drx397xD_state *s, | |||
646 | u32 edi = 0, ebx = 0, ebp = 0, edx = 0; | 646 | u32 edi = 0, ebx = 0, ebp = 0, edx = 0; |
647 | u16 v20 = 0, v1E = 0, v16 = 0, v14 = 0, v12 = 0, v10 = 0, v0E = 0; | 647 | u16 v20 = 0, v1E = 0, v16 = 0, v14 = 0, v12 = 0, v10 = 0, v0E = 0; |
648 | 648 | ||
649 | int rc, df_tuner; | 649 | int rc, df_tuner = 0; |
650 | int a, b, c, d; | 650 | int a, b, c, d; |
651 | pr_debug("%s %d\n", __func__, s->config.d60); | 651 | pr_debug("%s %d\n", __func__, s->config.d60); |
652 | 652 | ||
diff --git a/drivers/media/dvb/frontends/s5h1409.c b/drivers/media/dvb/frontends/s5h1409.c index cf4d8936bb83..3e08d985d6e5 100644 --- a/drivers/media/dvb/frontends/s5h1409.c +++ b/drivers/media/dvb/frontends/s5h1409.c | |||
@@ -545,9 +545,6 @@ static int s5h1409_set_frontend(struct dvb_frontend *fe, | |||
545 | 545 | ||
546 | s5h1409_enable_modulation(fe, p->u.vsb.modulation); | 546 | s5h1409_enable_modulation(fe, p->u.vsb.modulation); |
547 | 547 | ||
548 | /* Allow the demod to settle */ | ||
549 | msleep(100); | ||
550 | |||
551 | if (fe->ops.tuner_ops.set_params) { | 548 | if (fe->ops.tuner_ops.set_params) { |
552 | if (fe->ops.i2c_gate_ctrl) | 549 | if (fe->ops.i2c_gate_ctrl) |
553 | fe->ops.i2c_gate_ctrl(fe, 1); | 550 | fe->ops.i2c_gate_ctrl(fe, 1); |
@@ -562,6 +559,10 @@ static int s5h1409_set_frontend(struct dvb_frontend *fe, | |||
562 | s5h1409_set_qam_interleave_mode(fe); | 559 | s5h1409_set_qam_interleave_mode(fe); |
563 | } | 560 | } |
564 | 561 | ||
562 | /* Issue a reset to the demod so it knows to resync against the | ||
563 | newly tuned frequency */ | ||
564 | s5h1409_softreset(fe); | ||
565 | |||
565 | return 0; | 566 | return 0; |
566 | } | 567 | } |
567 | 568 | ||
diff --git a/drivers/media/dvb/frontends/stb0899_algo.c b/drivers/media/dvb/frontends/stb0899_algo.c index 83dc7e12d5f0..a67d1775a43c 100644 --- a/drivers/media/dvb/frontends/stb0899_algo.c +++ b/drivers/media/dvb/frontends/stb0899_algo.c | |||
@@ -31,6 +31,8 @@ inline u32 stb0899_do_div(u64 n, u32 d) | |||
31 | return n; | 31 | return n; |
32 | } | 32 | } |
33 | 33 | ||
34 | #if 0 | ||
35 | /* These functions are currently unused */ | ||
34 | /* | 36 | /* |
35 | * stb0899_calc_srate | 37 | * stb0899_calc_srate |
36 | * Compute symbol rate | 38 | * Compute symbol rate |
@@ -63,6 +65,7 @@ static u32 stb0899_get_srate(struct stb0899_state *state) | |||
63 | 65 | ||
64 | return stb0899_calc_srate(internal->master_clk, sfr); | 66 | return stb0899_calc_srate(internal->master_clk, sfr); |
65 | } | 67 | } |
68 | #endif | ||
66 | 69 | ||
67 | /* | 70 | /* |
68 | * stb0899_set_srate | 71 | * stb0899_set_srate |
diff --git a/drivers/media/dvb/ttpci/budget.c b/drivers/media/dvb/ttpci/budget.c index 1638e1d9f538..83e9e7750c8c 100644 --- a/drivers/media/dvb/ttpci/budget.c +++ b/drivers/media/dvb/ttpci/budget.c | |||
@@ -470,6 +470,7 @@ static void frontend_init(struct budget *budget) | |||
470 | budget->dvb_frontend = dvb_attach(l64781_attach, &grundig_29504_401_config, &budget->i2c_adap); | 470 | budget->dvb_frontend = dvb_attach(l64781_attach, &grundig_29504_401_config, &budget->i2c_adap); |
471 | if (budget->dvb_frontend) { | 471 | if (budget->dvb_frontend) { |
472 | budget->dvb_frontend->ops.tuner_ops.set_params = grundig_29504_401_tuner_set_params; | 472 | budget->dvb_frontend->ops.tuner_ops.set_params = grundig_29504_401_tuner_set_params; |
473 | budget->dvb_frontend->tuner_priv = NULL; | ||
473 | break; | 474 | break; |
474 | } | 475 | } |
475 | break; | 476 | break; |
diff --git a/drivers/media/dvb/ttusb-dec/ttusb_dec.c b/drivers/media/dvb/ttusb-dec/ttusb_dec.c index 0aa96df80fc2..d91e0638448f 100644 --- a/drivers/media/dvb/ttusb-dec/ttusb_dec.c +++ b/drivers/media/dvb/ttusb-dec/ttusb_dec.c | |||
@@ -1384,7 +1384,7 @@ static int ttusb_dec_boot_dsp(struct ttusb_dec *dec) | |||
1384 | static int ttusb_dec_init_stb(struct ttusb_dec *dec) | 1384 | static int ttusb_dec_init_stb(struct ttusb_dec *dec) |
1385 | { | 1385 | { |
1386 | int result; | 1386 | int result; |
1387 | unsigned int mode, model, version; | 1387 | unsigned int mode = 0, model = 0, version = 0; |
1388 | 1388 | ||
1389 | dprintk("%s\n", __func__); | 1389 | dprintk("%s\n", __func__); |
1390 | 1390 | ||