diff options
Diffstat (limited to 'drivers/media/dvb/dvb-usb/cxusb.c')
-rw-r--r-- | drivers/media/dvb/dvb-usb/cxusb.c | 106 |
1 files changed, 70 insertions, 36 deletions
diff --git a/drivers/media/dvb/dvb-usb/cxusb.c b/drivers/media/dvb/dvb-usb/cxusb.c index a76f431d6a26..7f610da8cca8 100644 --- a/drivers/media/dvb/dvb-usb/cxusb.c +++ b/drivers/media/dvb/dvb-usb/cxusb.c | |||
@@ -347,7 +347,7 @@ static void cxusb_d680_dmb_drain_message(struct dvb_usb_device *d) | |||
347 | 347 | ||
348 | static void cxusb_d680_dmb_drain_video(struct dvb_usb_device *d) | 348 | static void cxusb_d680_dmb_drain_video(struct dvb_usb_device *d) |
349 | { | 349 | { |
350 | struct usb_data_stream_properties *p = &d->props.adapter[0].stream; | 350 | struct usb_data_stream_properties *p = &d->props.adapter[0].fe[0].stream; |
351 | const int timeout = 100; | 351 | const int timeout = 100; |
352 | const int junk_len = p->u.bulk.buffersize; | 352 | const int junk_len = p->u.bulk.buffersize; |
353 | u8 *junk; | 353 | u8 *junk; |
@@ -725,7 +725,7 @@ static struct max2165_config mygica_d689_max2165_cfg = { | |||
725 | /* Callbacks for DVB USB */ | 725 | /* Callbacks for DVB USB */ |
726 | static int cxusb_fmd1216me_tuner_attach(struct dvb_usb_adapter *adap) | 726 | static int cxusb_fmd1216me_tuner_attach(struct dvb_usb_adapter *adap) |
727 | { | 727 | { |
728 | dvb_attach(simple_tuner_attach, adap->fe[0], | 728 | dvb_attach(simple_tuner_attach, adap->fe_adap[0].fe, |
729 | &adap->dev->i2c_adap, 0x61, | 729 | &adap->dev->i2c_adap, 0x61, |
730 | TUNER_PHILIPS_FMD1216ME_MK3); | 730 | TUNER_PHILIPS_FMD1216ME_MK3); |
731 | return 0; | 731 | return 0; |
@@ -733,27 +733,27 @@ static int cxusb_fmd1216me_tuner_attach(struct dvb_usb_adapter *adap) | |||
733 | 733 | ||
734 | static int cxusb_dee1601_tuner_attach(struct dvb_usb_adapter *adap) | 734 | static int cxusb_dee1601_tuner_attach(struct dvb_usb_adapter *adap) |
735 | { | 735 | { |
736 | dvb_attach(dvb_pll_attach, adap->fe[0], 0x61, | 736 | dvb_attach(dvb_pll_attach, adap->fe_adap[0].fe, 0x61, |
737 | NULL, DVB_PLL_THOMSON_DTT7579); | 737 | NULL, DVB_PLL_THOMSON_DTT7579); |
738 | return 0; | 738 | return 0; |
739 | } | 739 | } |
740 | 740 | ||
741 | static int cxusb_lgz201_tuner_attach(struct dvb_usb_adapter *adap) | 741 | static int cxusb_lgz201_tuner_attach(struct dvb_usb_adapter *adap) |
742 | { | 742 | { |
743 | dvb_attach(dvb_pll_attach, adap->fe[0], 0x61, NULL, DVB_PLL_LG_Z201); | 743 | dvb_attach(dvb_pll_attach, adap->fe_adap[0].fe, 0x61, NULL, DVB_PLL_LG_Z201); |
744 | return 0; | 744 | return 0; |
745 | } | 745 | } |
746 | 746 | ||
747 | static int cxusb_dtt7579_tuner_attach(struct dvb_usb_adapter *adap) | 747 | static int cxusb_dtt7579_tuner_attach(struct dvb_usb_adapter *adap) |
748 | { | 748 | { |
749 | dvb_attach(dvb_pll_attach, adap->fe[0], 0x60, | 749 | dvb_attach(dvb_pll_attach, adap->fe_adap[0].fe, 0x60, |
750 | NULL, DVB_PLL_THOMSON_DTT7579); | 750 | NULL, DVB_PLL_THOMSON_DTT7579); |
751 | return 0; | 751 | return 0; |
752 | } | 752 | } |
753 | 753 | ||
754 | static int cxusb_lgh064f_tuner_attach(struct dvb_usb_adapter *adap) | 754 | static int cxusb_lgh064f_tuner_attach(struct dvb_usb_adapter *adap) |
755 | { | 755 | { |
756 | dvb_attach(simple_tuner_attach, adap->fe[0], | 756 | dvb_attach(simple_tuner_attach, adap->fe_adap[0].fe, |
757 | &adap->dev->i2c_adap, 0x61, TUNER_LG_TDVS_H06XF); | 757 | &adap->dev->i2c_adap, 0x61, TUNER_LG_TDVS_H06XF); |
758 | return 0; | 758 | return 0; |
759 | } | 759 | } |
@@ -795,9 +795,9 @@ static int cxusb_dvico_xc3028_tuner_attach(struct dvb_usb_adapter *adap) | |||
795 | }; | 795 | }; |
796 | 796 | ||
797 | /* FIXME: generalize & move to common area */ | 797 | /* FIXME: generalize & move to common area */ |
798 | adap->fe[0]->callback = dvico_bluebird_xc2028_callback; | 798 | adap->fe_adap[0].fe->callback = dvico_bluebird_xc2028_callback; |
799 | 799 | ||
800 | fe = dvb_attach(xc2028_attach, adap->fe[0], &cfg); | 800 | fe = dvb_attach(xc2028_attach, adap->fe_adap[0].fe, &cfg); |
801 | if (fe == NULL || fe->ops.tuner_ops.set_config == NULL) | 801 | if (fe == NULL || fe->ops.tuner_ops.set_config == NULL) |
802 | return -EIO; | 802 | return -EIO; |
803 | 803 | ||
@@ -808,7 +808,7 @@ static int cxusb_dvico_xc3028_tuner_attach(struct dvb_usb_adapter *adap) | |||
808 | 808 | ||
809 | static int cxusb_mxl5003s_tuner_attach(struct dvb_usb_adapter *adap) | 809 | static int cxusb_mxl5003s_tuner_attach(struct dvb_usb_adapter *adap) |
810 | { | 810 | { |
811 | dvb_attach(mxl5005s_attach, adap->fe[0], | 811 | dvb_attach(mxl5005s_attach, adap->fe_adap[0].fe, |
812 | &adap->dev->i2c_adap, &aver_a868r_tuner); | 812 | &adap->dev->i2c_adap, &aver_a868r_tuner); |
813 | return 0; | 813 | return 0; |
814 | } | 814 | } |
@@ -816,7 +816,7 @@ static int cxusb_mxl5003s_tuner_attach(struct dvb_usb_adapter *adap) | |||
816 | static int cxusb_d680_dmb_tuner_attach(struct dvb_usb_adapter *adap) | 816 | static int cxusb_d680_dmb_tuner_attach(struct dvb_usb_adapter *adap) |
817 | { | 817 | { |
818 | struct dvb_frontend *fe; | 818 | struct dvb_frontend *fe; |
819 | fe = dvb_attach(mxl5005s_attach, adap->fe[0], | 819 | fe = dvb_attach(mxl5005s_attach, adap->fe_adap[0].fe, |
820 | &adap->dev->i2c_adap, &d680_dmb_tuner); | 820 | &adap->dev->i2c_adap, &d680_dmb_tuner); |
821 | return (fe == NULL) ? -EIO : 0; | 821 | return (fe == NULL) ? -EIO : 0; |
822 | } | 822 | } |
@@ -824,7 +824,7 @@ static int cxusb_d680_dmb_tuner_attach(struct dvb_usb_adapter *adap) | |||
824 | static int cxusb_mygica_d689_tuner_attach(struct dvb_usb_adapter *adap) | 824 | static int cxusb_mygica_d689_tuner_attach(struct dvb_usb_adapter *adap) |
825 | { | 825 | { |
826 | struct dvb_frontend *fe; | 826 | struct dvb_frontend *fe; |
827 | fe = dvb_attach(max2165_attach, adap->fe[0], | 827 | fe = dvb_attach(max2165_attach, adap->fe_adap[0].fe, |
828 | &adap->dev->i2c_adap, &mygica_d689_max2165_cfg); | 828 | &adap->dev->i2c_adap, &mygica_d689_max2165_cfg); |
829 | return (fe == NULL) ? -EIO : 0; | 829 | return (fe == NULL) ? -EIO : 0; |
830 | } | 830 | } |
@@ -837,7 +837,7 @@ static int cxusb_cx22702_frontend_attach(struct dvb_usb_adapter *adap) | |||
837 | 837 | ||
838 | cxusb_ctrl_msg(adap->dev, CMD_DIGITAL, NULL, 0, &b, 1); | 838 | cxusb_ctrl_msg(adap->dev, CMD_DIGITAL, NULL, 0, &b, 1); |
839 | 839 | ||
840 | if ((adap->fe[0] = dvb_attach(cx22702_attach, &cxusb_cx22702_config, | 840 | if ((adap->fe_adap[0].fe = dvb_attach(cx22702_attach, &cxusb_cx22702_config, |
841 | &adap->dev->i2c_adap)) != NULL) | 841 | &adap->dev->i2c_adap)) != NULL) |
842 | return 0; | 842 | return 0; |
843 | 843 | ||
@@ -851,7 +851,7 @@ static int cxusb_lgdt3303_frontend_attach(struct dvb_usb_adapter *adap) | |||
851 | 851 | ||
852 | cxusb_ctrl_msg(adap->dev, CMD_DIGITAL, NULL, 0, NULL, 0); | 852 | cxusb_ctrl_msg(adap->dev, CMD_DIGITAL, NULL, 0, NULL, 0); |
853 | 853 | ||
854 | if ((adap->fe[0] = dvb_attach(lgdt330x_attach, &cxusb_lgdt3303_config, | 854 | if ((adap->fe_adap[0].fe = dvb_attach(lgdt330x_attach, &cxusb_lgdt3303_config, |
855 | &adap->dev->i2c_adap)) != NULL) | 855 | &adap->dev->i2c_adap)) != NULL) |
856 | return 0; | 856 | return 0; |
857 | 857 | ||
@@ -860,9 +860,9 @@ static int cxusb_lgdt3303_frontend_attach(struct dvb_usb_adapter *adap) | |||
860 | 860 | ||
861 | static int cxusb_aver_lgdt3303_frontend_attach(struct dvb_usb_adapter *adap) | 861 | static int cxusb_aver_lgdt3303_frontend_attach(struct dvb_usb_adapter *adap) |
862 | { | 862 | { |
863 | adap->fe[0] = dvb_attach(lgdt330x_attach, &cxusb_aver_lgdt3303_config, | 863 | adap->fe_adap[0].fe = dvb_attach(lgdt330x_attach, &cxusb_aver_lgdt3303_config, |
864 | &adap->dev->i2c_adap); | 864 | &adap->dev->i2c_adap); |
865 | if (adap->fe[0] != NULL) | 865 | if (adap->fe_adap[0].fe != NULL) |
866 | return 0; | 866 | return 0; |
867 | 867 | ||
868 | return -EIO; | 868 | return -EIO; |
@@ -876,7 +876,7 @@ static int cxusb_mt352_frontend_attach(struct dvb_usb_adapter *adap) | |||
876 | 876 | ||
877 | cxusb_ctrl_msg(adap->dev, CMD_DIGITAL, NULL, 0, NULL, 0); | 877 | cxusb_ctrl_msg(adap->dev, CMD_DIGITAL, NULL, 0, NULL, 0); |
878 | 878 | ||
879 | if ((adap->fe[0] = dvb_attach(mt352_attach, &cxusb_mt352_config, | 879 | if ((adap->fe_adap[0].fe = dvb_attach(mt352_attach, &cxusb_mt352_config, |
880 | &adap->dev->i2c_adap)) != NULL) | 880 | &adap->dev->i2c_adap)) != NULL) |
881 | return 0; | 881 | return 0; |
882 | 882 | ||
@@ -890,9 +890,9 @@ static int cxusb_dee1601_frontend_attach(struct dvb_usb_adapter *adap) | |||
890 | 890 | ||
891 | cxusb_ctrl_msg(adap->dev, CMD_DIGITAL, NULL, 0, NULL, 0); | 891 | cxusb_ctrl_msg(adap->dev, CMD_DIGITAL, NULL, 0, NULL, 0); |
892 | 892 | ||
893 | if (((adap->fe[0] = dvb_attach(mt352_attach, &cxusb_dee1601_config, | 893 | if (((adap->fe_adap[0].fe = dvb_attach(mt352_attach, &cxusb_dee1601_config, |
894 | &adap->dev->i2c_adap)) != NULL) || | 894 | &adap->dev->i2c_adap)) != NULL) || |
895 | ((adap->fe[0] = dvb_attach(zl10353_attach, | 895 | ((adap->fe_adap[0].fe = dvb_attach(zl10353_attach, |
896 | &cxusb_zl10353_dee1601_config, | 896 | &cxusb_zl10353_dee1601_config, |
897 | &adap->dev->i2c_adap)) != NULL)) | 897 | &adap->dev->i2c_adap)) != NULL)) |
898 | return 0; | 898 | return 0; |
@@ -917,7 +917,7 @@ static int cxusb_dualdig4_frontend_attach(struct dvb_usb_adapter *adap) | |||
917 | cxusb_bluebird_gpio_pulse(adap->dev, 0x01, 1); | 917 | cxusb_bluebird_gpio_pulse(adap->dev, 0x01, 1); |
918 | cxusb_bluebird_gpio_pulse(adap->dev, 0x02, 1); | 918 | cxusb_bluebird_gpio_pulse(adap->dev, 0x02, 1); |
919 | 919 | ||
920 | if ((adap->fe[0] = dvb_attach(zl10353_attach, | 920 | if ((adap->fe_adap[0].fe = dvb_attach(zl10353_attach, |
921 | &cxusb_zl10353_xc3028_config_no_i2c_gate, | 921 | &cxusb_zl10353_xc3028_config_no_i2c_gate, |
922 | &adap->dev->i2c_adap)) == NULL) | 922 | &adap->dev->i2c_adap)) == NULL) |
923 | return -EIO; | 923 | return -EIO; |
@@ -1031,9 +1031,9 @@ static int cxusb_dualdig4_rev2_frontend_attach(struct dvb_usb_adapter *adap) | |||
1031 | return -ENODEV; | 1031 | return -ENODEV; |
1032 | } | 1032 | } |
1033 | 1033 | ||
1034 | adap->fe[0] = dvb_attach(dib7000p_attach, &adap->dev->i2c_adap, 0x80, | 1034 | adap->fe_adap[0].fe = dvb_attach(dib7000p_attach, &adap->dev->i2c_adap, 0x80, |
1035 | &cxusb_dualdig4_rev2_config); | 1035 | &cxusb_dualdig4_rev2_config); |
1036 | if (adap->fe[0] == NULL) | 1036 | if (adap->fe_adap[0].fe == NULL) |
1037 | return -EIO; | 1037 | return -EIO; |
1038 | 1038 | ||
1039 | return 0; | 1039 | return 0; |
@@ -1084,15 +1084,15 @@ static int cxusb_dualdig4_rev2_tuner_attach(struct dvb_usb_adapter *adap) | |||
1084 | { | 1084 | { |
1085 | struct dib0700_adapter_state *st = adap->priv; | 1085 | struct dib0700_adapter_state *st = adap->priv; |
1086 | struct i2c_adapter *tun_i2c = | 1086 | struct i2c_adapter *tun_i2c = |
1087 | dib7000p_get_i2c_master(adap->fe[0], | 1087 | dib7000p_get_i2c_master(adap->fe_adap[0].fe, |
1088 | DIBX000_I2C_INTERFACE_TUNER, 1); | 1088 | DIBX000_I2C_INTERFACE_TUNER, 1); |
1089 | 1089 | ||
1090 | if (dvb_attach(dib0070_attach, adap->fe[0], tun_i2c, | 1090 | if (dvb_attach(dib0070_attach, adap->fe_adap[0].fe, tun_i2c, |
1091 | &dib7070p_dib0070_config) == NULL) | 1091 | &dib7070p_dib0070_config) == NULL) |
1092 | return -ENODEV; | 1092 | return -ENODEV; |
1093 | 1093 | ||
1094 | st->set_param_save = adap->fe[0]->ops.tuner_ops.set_params; | 1094 | st->set_param_save = adap->fe_adap[0].fe->ops.tuner_ops.set_params; |
1095 | adap->fe[0]->ops.tuner_ops.set_params = dib7070_set_param_override; | 1095 | adap->fe_adap[0].fe->ops.tuner_ops.set_params = dib7070_set_param_override; |
1096 | return 0; | 1096 | return 0; |
1097 | } | 1097 | } |
1098 | 1098 | ||
@@ -1108,12 +1108,12 @@ static int cxusb_nano2_frontend_attach(struct dvb_usb_adapter *adap) | |||
1108 | cxusb_bluebird_gpio_pulse(adap->dev, 0x01, 1); | 1108 | cxusb_bluebird_gpio_pulse(adap->dev, 0x01, 1); |
1109 | cxusb_bluebird_gpio_pulse(adap->dev, 0x02, 1); | 1109 | cxusb_bluebird_gpio_pulse(adap->dev, 0x02, 1); |
1110 | 1110 | ||
1111 | if ((adap->fe[0] = dvb_attach(zl10353_attach, | 1111 | if ((adap->fe_adap[0].fe = dvb_attach(zl10353_attach, |
1112 | &cxusb_zl10353_xc3028_config, | 1112 | &cxusb_zl10353_xc3028_config, |
1113 | &adap->dev->i2c_adap)) != NULL) | 1113 | &adap->dev->i2c_adap)) != NULL) |
1114 | return 0; | 1114 | return 0; |
1115 | 1115 | ||
1116 | if ((adap->fe[0] = dvb_attach(mt352_attach, | 1116 | if ((adap->fe_adap[0].fe = dvb_attach(mt352_attach, |
1117 | &cxusb_mt352_xc3028_config, | 1117 | &cxusb_mt352_xc3028_config, |
1118 | &adap->dev->i2c_adap)) != NULL) | 1118 | &adap->dev->i2c_adap)) != NULL) |
1119 | return 0; | 1119 | return 0; |
@@ -1150,7 +1150,7 @@ static int cxusb_d680_dmb_frontend_attach(struct dvb_usb_adapter *adap) | |||
1150 | usb_clear_halt(d->udev, | 1150 | usb_clear_halt(d->udev, |
1151 | usb_rcvbulkpipe(d->udev, d->props.generic_bulk_ctrl_endpoint)); | 1151 | usb_rcvbulkpipe(d->udev, d->props.generic_bulk_ctrl_endpoint)); |
1152 | usb_clear_halt(d->udev, | 1152 | usb_clear_halt(d->udev, |
1153 | usb_rcvbulkpipe(d->udev, d->props.adapter[0].stream.endpoint)); | 1153 | usb_rcvbulkpipe(d->udev, d->props.adapter[0].fe[0].stream.endpoint)); |
1154 | 1154 | ||
1155 | /* Drain USB pipes to avoid hang after reboot */ | 1155 | /* Drain USB pipes to avoid hang after reboot */ |
1156 | for (n = 0; n < 5; n++) { | 1156 | for (n = 0; n < 5; n++) { |
@@ -1172,8 +1172,8 @@ static int cxusb_d680_dmb_frontend_attach(struct dvb_usb_adapter *adap) | |||
1172 | msleep(100); | 1172 | msleep(100); |
1173 | 1173 | ||
1174 | /* Attach frontend */ | 1174 | /* Attach frontend */ |
1175 | adap->fe[0] = dvb_attach(lgs8gxx_attach, &d680_lgs8gl5_cfg, &d->i2c_adap); | 1175 | adap->fe_adap[0].fe = dvb_attach(lgs8gxx_attach, &d680_lgs8gl5_cfg, &d->i2c_adap); |
1176 | if (adap->fe[0] == NULL) | 1176 | if (adap->fe_adap[0].fe == NULL) |
1177 | return -EIO; | 1177 | return -EIO; |
1178 | 1178 | ||
1179 | return 0; | 1179 | return 0; |
@@ -1207,7 +1207,7 @@ static int cxusb_mygica_d689_frontend_attach(struct dvb_usb_adapter *adap) | |||
1207 | usb_clear_halt(d->udev, | 1207 | usb_clear_halt(d->udev, |
1208 | usb_rcvbulkpipe(d->udev, d->props.generic_bulk_ctrl_endpoint)); | 1208 | usb_rcvbulkpipe(d->udev, d->props.generic_bulk_ctrl_endpoint)); |
1209 | usb_clear_halt(d->udev, | 1209 | usb_clear_halt(d->udev, |
1210 | usb_rcvbulkpipe(d->udev, d->props.adapter[0].stream.endpoint)); | 1210 | usb_rcvbulkpipe(d->udev, d->props.adapter[0].fe[0].stream.endpoint)); |
1211 | 1211 | ||
1212 | 1212 | ||
1213 | /* Reset the tuner */ | 1213 | /* Reset the tuner */ |
@@ -1223,9 +1223,9 @@ static int cxusb_mygica_d689_frontend_attach(struct dvb_usb_adapter *adap) | |||
1223 | msleep(100); | 1223 | msleep(100); |
1224 | 1224 | ||
1225 | /* Attach frontend */ | 1225 | /* Attach frontend */ |
1226 | adap->fe[0] = dvb_attach(atbm8830_attach, &mygica_d689_atbm8830_cfg, | 1226 | adap->fe_adap[0].fe = dvb_attach(atbm8830_attach, &mygica_d689_atbm8830_cfg, |
1227 | &d->i2c_adap); | 1227 | &d->i2c_adap); |
1228 | if (adap->fe[0] == NULL) | 1228 | if (adap->fe_adap[0].fe == NULL) |
1229 | return -EIO; | 1229 | return -EIO; |
1230 | 1230 | ||
1231 | return 0; | 1231 | return 0; |
@@ -1383,6 +1383,8 @@ static struct dvb_usb_device_properties cxusb_medion_properties = { | |||
1383 | .num_adapters = 1, | 1383 | .num_adapters = 1, |
1384 | .adapter = { | 1384 | .adapter = { |
1385 | { | 1385 | { |
1386 | .num_frontends = 1, | ||
1387 | .fe = {{ | ||
1386 | .streaming_ctrl = cxusb_streaming_ctrl, | 1388 | .streaming_ctrl = cxusb_streaming_ctrl, |
1387 | .frontend_attach = cxusb_cx22702_frontend_attach, | 1389 | .frontend_attach = cxusb_cx22702_frontend_attach, |
1388 | .tuner_attach = cxusb_fmd1216me_tuner_attach, | 1390 | .tuner_attach = cxusb_fmd1216me_tuner_attach, |
@@ -1397,7 +1399,7 @@ static struct dvb_usb_device_properties cxusb_medion_properties = { | |||
1397 | } | 1399 | } |
1398 | } | 1400 | } |
1399 | }, | 1401 | }, |
1400 | 1402 | }}, | |
1401 | }, | 1403 | }, |
1402 | }, | 1404 | }, |
1403 | .power_ctrl = cxusb_power_ctrl, | 1405 | .power_ctrl = cxusb_power_ctrl, |
@@ -1429,6 +1431,8 @@ static struct dvb_usb_device_properties cxusb_bluebird_lgh064f_properties = { | |||
1429 | .num_adapters = 1, | 1431 | .num_adapters = 1, |
1430 | .adapter = { | 1432 | .adapter = { |
1431 | { | 1433 | { |
1434 | .num_frontends = 1, | ||
1435 | .fe = {{ | ||
1432 | .streaming_ctrl = cxusb_streaming_ctrl, | 1436 | .streaming_ctrl = cxusb_streaming_ctrl, |
1433 | .frontend_attach = cxusb_lgdt3303_frontend_attach, | 1437 | .frontend_attach = cxusb_lgdt3303_frontend_attach, |
1434 | .tuner_attach = cxusb_lgh064f_tuner_attach, | 1438 | .tuner_attach = cxusb_lgh064f_tuner_attach, |
@@ -1444,6 +1448,7 @@ static struct dvb_usb_device_properties cxusb_bluebird_lgh064f_properties = { | |||
1444 | } | 1448 | } |
1445 | } | 1449 | } |
1446 | }, | 1450 | }, |
1451 | }}, | ||
1447 | }, | 1452 | }, |
1448 | }, | 1453 | }, |
1449 | 1454 | ||
@@ -1483,6 +1488,8 @@ static struct dvb_usb_device_properties cxusb_bluebird_dee1601_properties = { | |||
1483 | .num_adapters = 1, | 1488 | .num_adapters = 1, |
1484 | .adapter = { | 1489 | .adapter = { |
1485 | { | 1490 | { |
1491 | .num_frontends = 1, | ||
1492 | .fe = {{ | ||
1486 | .streaming_ctrl = cxusb_streaming_ctrl, | 1493 | .streaming_ctrl = cxusb_streaming_ctrl, |
1487 | .frontend_attach = cxusb_dee1601_frontend_attach, | 1494 | .frontend_attach = cxusb_dee1601_frontend_attach, |
1488 | .tuner_attach = cxusb_dee1601_tuner_attach, | 1495 | .tuner_attach = cxusb_dee1601_tuner_attach, |
@@ -1497,6 +1504,7 @@ static struct dvb_usb_device_properties cxusb_bluebird_dee1601_properties = { | |||
1497 | } | 1504 | } |
1498 | } | 1505 | } |
1499 | }, | 1506 | }, |
1507 | }}, | ||
1500 | }, | 1508 | }, |
1501 | }, | 1509 | }, |
1502 | 1510 | ||
@@ -1544,6 +1552,8 @@ static struct dvb_usb_device_properties cxusb_bluebird_lgz201_properties = { | |||
1544 | .num_adapters = 2, | 1552 | .num_adapters = 2, |
1545 | .adapter = { | 1553 | .adapter = { |
1546 | { | 1554 | { |
1555 | .num_frontends = 1, | ||
1556 | .fe = {{ | ||
1547 | .streaming_ctrl = cxusb_streaming_ctrl, | 1557 | .streaming_ctrl = cxusb_streaming_ctrl, |
1548 | .frontend_attach = cxusb_mt352_frontend_attach, | 1558 | .frontend_attach = cxusb_mt352_frontend_attach, |
1549 | .tuner_attach = cxusb_lgz201_tuner_attach, | 1559 | .tuner_attach = cxusb_lgz201_tuner_attach, |
@@ -1559,6 +1569,7 @@ static struct dvb_usb_device_properties cxusb_bluebird_lgz201_properties = { | |||
1559 | } | 1569 | } |
1560 | } | 1570 | } |
1561 | }, | 1571 | }, |
1572 | }}, | ||
1562 | }, | 1573 | }, |
1563 | }, | 1574 | }, |
1564 | .power_ctrl = cxusb_bluebird_power_ctrl, | 1575 | .power_ctrl = cxusb_bluebird_power_ctrl, |
@@ -1596,6 +1607,8 @@ static struct dvb_usb_device_properties cxusb_bluebird_dtt7579_properties = { | |||
1596 | .num_adapters = 1, | 1607 | .num_adapters = 1, |
1597 | .adapter = { | 1608 | .adapter = { |
1598 | { | 1609 | { |
1610 | .num_frontends = 1, | ||
1611 | .fe = {{ | ||
1599 | .streaming_ctrl = cxusb_streaming_ctrl, | 1612 | .streaming_ctrl = cxusb_streaming_ctrl, |
1600 | .frontend_attach = cxusb_mt352_frontend_attach, | 1613 | .frontend_attach = cxusb_mt352_frontend_attach, |
1601 | .tuner_attach = cxusb_dtt7579_tuner_attach, | 1614 | .tuner_attach = cxusb_dtt7579_tuner_attach, |
@@ -1611,6 +1624,7 @@ static struct dvb_usb_device_properties cxusb_bluebird_dtt7579_properties = { | |||
1611 | } | 1624 | } |
1612 | } | 1625 | } |
1613 | }, | 1626 | }, |
1627 | }}, | ||
1614 | }, | 1628 | }, |
1615 | }, | 1629 | }, |
1616 | .power_ctrl = cxusb_bluebird_power_ctrl, | 1630 | .power_ctrl = cxusb_bluebird_power_ctrl, |
@@ -1645,6 +1659,8 @@ static struct dvb_usb_device_properties cxusb_bluebird_dualdig4_properties = { | |||
1645 | .num_adapters = 1, | 1659 | .num_adapters = 1, |
1646 | .adapter = { | 1660 | .adapter = { |
1647 | { | 1661 | { |
1662 | .num_frontends = 1, | ||
1663 | .fe = {{ | ||
1648 | .streaming_ctrl = cxusb_streaming_ctrl, | 1664 | .streaming_ctrl = cxusb_streaming_ctrl, |
1649 | .frontend_attach = cxusb_dualdig4_frontend_attach, | 1665 | .frontend_attach = cxusb_dualdig4_frontend_attach, |
1650 | .tuner_attach = cxusb_dvico_xc3028_tuner_attach, | 1666 | .tuner_attach = cxusb_dvico_xc3028_tuner_attach, |
@@ -1659,6 +1675,7 @@ static struct dvb_usb_device_properties cxusb_bluebird_dualdig4_properties = { | |||
1659 | } | 1675 | } |
1660 | } | 1676 | } |
1661 | }, | 1677 | }, |
1678 | }}, | ||
1662 | }, | 1679 | }, |
1663 | }, | 1680 | }, |
1664 | 1681 | ||
@@ -1695,6 +1712,8 @@ static struct dvb_usb_device_properties cxusb_bluebird_nano2_properties = { | |||
1695 | .num_adapters = 1, | 1712 | .num_adapters = 1, |
1696 | .adapter = { | 1713 | .adapter = { |
1697 | { | 1714 | { |
1715 | .num_frontends = 1, | ||
1716 | .fe = {{ | ||
1698 | .streaming_ctrl = cxusb_streaming_ctrl, | 1717 | .streaming_ctrl = cxusb_streaming_ctrl, |
1699 | .frontend_attach = cxusb_nano2_frontend_attach, | 1718 | .frontend_attach = cxusb_nano2_frontend_attach, |
1700 | .tuner_attach = cxusb_dvico_xc3028_tuner_attach, | 1719 | .tuner_attach = cxusb_dvico_xc3028_tuner_attach, |
@@ -1709,6 +1728,7 @@ static struct dvb_usb_device_properties cxusb_bluebird_nano2_properties = { | |||
1709 | } | 1728 | } |
1710 | } | 1729 | } |
1711 | }, | 1730 | }, |
1731 | }}, | ||
1712 | }, | 1732 | }, |
1713 | }, | 1733 | }, |
1714 | 1734 | ||
@@ -1747,6 +1767,8 @@ static struct dvb_usb_device_properties cxusb_bluebird_nano2_needsfirmware_prope | |||
1747 | .num_adapters = 1, | 1767 | .num_adapters = 1, |
1748 | .adapter = { | 1768 | .adapter = { |
1749 | { | 1769 | { |
1770 | .num_frontends = 1, | ||
1771 | .fe = {{ | ||
1750 | .streaming_ctrl = cxusb_streaming_ctrl, | 1772 | .streaming_ctrl = cxusb_streaming_ctrl, |
1751 | .frontend_attach = cxusb_nano2_frontend_attach, | 1773 | .frontend_attach = cxusb_nano2_frontend_attach, |
1752 | .tuner_attach = cxusb_dvico_xc3028_tuner_attach, | 1774 | .tuner_attach = cxusb_dvico_xc3028_tuner_attach, |
@@ -1761,6 +1783,7 @@ static struct dvb_usb_device_properties cxusb_bluebird_nano2_needsfirmware_prope | |||
1761 | } | 1783 | } |
1762 | } | 1784 | } |
1763 | }, | 1785 | }, |
1786 | }}, | ||
1764 | }, | 1787 | }, |
1765 | }, | 1788 | }, |
1766 | 1789 | ||
@@ -1796,6 +1819,8 @@ static struct dvb_usb_device_properties cxusb_aver_a868r_properties = { | |||
1796 | .num_adapters = 1, | 1819 | .num_adapters = 1, |
1797 | .adapter = { | 1820 | .adapter = { |
1798 | { | 1821 | { |
1822 | .num_frontends = 1, | ||
1823 | .fe = {{ | ||
1799 | .streaming_ctrl = cxusb_aver_streaming_ctrl, | 1824 | .streaming_ctrl = cxusb_aver_streaming_ctrl, |
1800 | .frontend_attach = cxusb_aver_lgdt3303_frontend_attach, | 1825 | .frontend_attach = cxusb_aver_lgdt3303_frontend_attach, |
1801 | .tuner_attach = cxusb_mxl5003s_tuner_attach, | 1826 | .tuner_attach = cxusb_mxl5003s_tuner_attach, |
@@ -1810,7 +1835,7 @@ static struct dvb_usb_device_properties cxusb_aver_a868r_properties = { | |||
1810 | } | 1835 | } |
1811 | } | 1836 | } |
1812 | }, | 1837 | }, |
1813 | 1838 | }}, | |
1814 | }, | 1839 | }, |
1815 | }, | 1840 | }, |
1816 | .power_ctrl = cxusb_aver_power_ctrl, | 1841 | .power_ctrl = cxusb_aver_power_ctrl, |
@@ -1839,10 +1864,12 @@ struct dvb_usb_device_properties cxusb_bluebird_dualdig4_rev2_properties = { | |||
1839 | .num_adapters = 1, | 1864 | .num_adapters = 1, |
1840 | .adapter = { | 1865 | .adapter = { |
1841 | { | 1866 | { |
1867 | .size_of_priv = sizeof(struct dib0700_adapter_state), | ||
1868 | .num_frontends = 1, | ||
1869 | .fe = {{ | ||
1842 | .streaming_ctrl = cxusb_streaming_ctrl, | 1870 | .streaming_ctrl = cxusb_streaming_ctrl, |
1843 | .frontend_attach = cxusb_dualdig4_rev2_frontend_attach, | 1871 | .frontend_attach = cxusb_dualdig4_rev2_frontend_attach, |
1844 | .tuner_attach = cxusb_dualdig4_rev2_tuner_attach, | 1872 | .tuner_attach = cxusb_dualdig4_rev2_tuner_attach, |
1845 | .size_of_priv = sizeof(struct dib0700_adapter_state), | ||
1846 | /* parameter for the MPEG2-data transfer */ | 1873 | /* parameter for the MPEG2-data transfer */ |
1847 | .stream = { | 1874 | .stream = { |
1848 | .type = USB_BULK, | 1875 | .type = USB_BULK, |
@@ -1854,6 +1881,7 @@ struct dvb_usb_device_properties cxusb_bluebird_dualdig4_rev2_properties = { | |||
1854 | } | 1881 | } |
1855 | } | 1882 | } |
1856 | }, | 1883 | }, |
1884 | }}, | ||
1857 | }, | 1885 | }, |
1858 | }, | 1886 | }, |
1859 | 1887 | ||
@@ -1889,6 +1917,8 @@ static struct dvb_usb_device_properties cxusb_d680_dmb_properties = { | |||
1889 | .num_adapters = 1, | 1917 | .num_adapters = 1, |
1890 | .adapter = { | 1918 | .adapter = { |
1891 | { | 1919 | { |
1920 | .num_frontends = 1, | ||
1921 | .fe = {{ | ||
1892 | .streaming_ctrl = cxusb_d680_dmb_streaming_ctrl, | 1922 | .streaming_ctrl = cxusb_d680_dmb_streaming_ctrl, |
1893 | .frontend_attach = cxusb_d680_dmb_frontend_attach, | 1923 | .frontend_attach = cxusb_d680_dmb_frontend_attach, |
1894 | .tuner_attach = cxusb_d680_dmb_tuner_attach, | 1924 | .tuner_attach = cxusb_d680_dmb_tuner_attach, |
@@ -1904,6 +1934,7 @@ static struct dvb_usb_device_properties cxusb_d680_dmb_properties = { | |||
1904 | } | 1934 | } |
1905 | } | 1935 | } |
1906 | }, | 1936 | }, |
1937 | }}, | ||
1907 | }, | 1938 | }, |
1908 | }, | 1939 | }, |
1909 | 1940 | ||
@@ -1940,6 +1971,8 @@ static struct dvb_usb_device_properties cxusb_mygica_d689_properties = { | |||
1940 | .num_adapters = 1, | 1971 | .num_adapters = 1, |
1941 | .adapter = { | 1972 | .adapter = { |
1942 | { | 1973 | { |
1974 | .num_frontends = 1, | ||
1975 | .fe = {{ | ||
1943 | .streaming_ctrl = cxusb_d680_dmb_streaming_ctrl, | 1976 | .streaming_ctrl = cxusb_d680_dmb_streaming_ctrl, |
1944 | .frontend_attach = cxusb_mygica_d689_frontend_attach, | 1977 | .frontend_attach = cxusb_mygica_d689_frontend_attach, |
1945 | .tuner_attach = cxusb_mygica_d689_tuner_attach, | 1978 | .tuner_attach = cxusb_mygica_d689_tuner_attach, |
@@ -1955,6 +1988,7 @@ static struct dvb_usb_device_properties cxusb_mygica_d689_properties = { | |||
1955 | } | 1988 | } |
1956 | } | 1989 | } |
1957 | }, | 1990 | }, |
1991 | }}, | ||
1958 | }, | 1992 | }, |
1959 | }, | 1993 | }, |
1960 | 1994 | ||