diff options
author | Antti Palosaari <crope@iki.fi> | 2011-07-24 19:29:16 -0400 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@redhat.com> | 2011-07-31 00:26:41 -0400 |
commit | bfd4500c9abf3e70e9c563bcba5675bd302f5a4e (patch) | |
tree | bd81a12af0b18784f961a6c58755f7163eb7f16b | |
parent | 6d51477470728074cea396a0127d73c5590dd441 (diff) |
[media] dvb-usb: prepare for multi-frontend support (MFE)
Change adapter FE pointer as array of FE pointers.
Signed-off-by: Antti Palosaari <crope@iki.fi>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
29 files changed, 344 insertions, 344 deletions
diff --git a/drivers/media/dvb/dvb-usb/af9005.c b/drivers/media/dvb/dvb-usb/af9005.c index 51f6439dcfd5..753b86eafa25 100644 --- a/drivers/media/dvb/dvb-usb/af9005.c +++ b/drivers/media/dvb/dvb-usb/af9005.c | |||
@@ -815,7 +815,7 @@ static int af9005_frontend_attach(struct dvb_usb_adapter *adap) | |||
815 | debug_dump(buf, 8, printk); | 815 | debug_dump(buf, 8, printk); |
816 | } | 816 | } |
817 | } | 817 | } |
818 | adap->fe = af9005_fe_attach(adap->dev); | 818 | adap->fe[0] = af9005_fe_attach(adap->dev); |
819 | return 0; | 819 | return 0; |
820 | } | 820 | } |
821 | 821 | ||
diff --git a/drivers/media/dvb/dvb-usb/af9015.c b/drivers/media/dvb/dvb-usb/af9015.c index d7ad05fc383b..f966b0baeaac 100644 --- a/drivers/media/dvb/dvb-usb/af9015.c +++ b/drivers/media/dvb/dvb-usb/af9015.c | |||
@@ -1111,10 +1111,10 @@ static int af9015_af9013_frontend_attach(struct dvb_usb_adapter *adap) | |||
1111 | } | 1111 | } |
1112 | 1112 | ||
1113 | /* attach demodulator */ | 1113 | /* attach demodulator */ |
1114 | adap->fe = dvb_attach(af9013_attach, &af9015_af9013_config[adap->id], | 1114 | adap->fe[0] = dvb_attach(af9013_attach, &af9015_af9013_config[adap->id], |
1115 | &adap->dev->i2c_adap); | 1115 | &adap->dev->i2c_adap); |
1116 | 1116 | ||
1117 | return adap->fe == NULL ? -ENODEV : 0; | 1117 | return adap->fe[0] == NULL ? -ENODEV : 0; |
1118 | } | 1118 | } |
1119 | 1119 | ||
1120 | static struct mt2060_config af9015_mt2060_config = { | 1120 | static struct mt2060_config af9015_mt2060_config = { |
@@ -1188,49 +1188,49 @@ static int af9015_tuner_attach(struct dvb_usb_adapter *adap) | |||
1188 | switch (af9015_af9013_config[adap->id].tuner) { | 1188 | switch (af9015_af9013_config[adap->id].tuner) { |
1189 | case AF9013_TUNER_MT2060: | 1189 | case AF9013_TUNER_MT2060: |
1190 | case AF9013_TUNER_MT2060_2: | 1190 | case AF9013_TUNER_MT2060_2: |
1191 | ret = dvb_attach(mt2060_attach, adap->fe, &adap->dev->i2c_adap, | 1191 | ret = dvb_attach(mt2060_attach, adap->fe[0], &adap->dev->i2c_adap, |
1192 | &af9015_mt2060_config, | 1192 | &af9015_mt2060_config, |
1193 | af9015_config.mt2060_if1[adap->id]) | 1193 | af9015_config.mt2060_if1[adap->id]) |
1194 | == NULL ? -ENODEV : 0; | 1194 | == NULL ? -ENODEV : 0; |
1195 | break; | 1195 | break; |
1196 | case AF9013_TUNER_QT1010: | 1196 | case AF9013_TUNER_QT1010: |
1197 | case AF9013_TUNER_QT1010A: | 1197 | case AF9013_TUNER_QT1010A: |
1198 | ret = dvb_attach(qt1010_attach, adap->fe, &adap->dev->i2c_adap, | 1198 | ret = dvb_attach(qt1010_attach, adap->fe[0], &adap->dev->i2c_adap, |
1199 | &af9015_qt1010_config) == NULL ? -ENODEV : 0; | 1199 | &af9015_qt1010_config) == NULL ? -ENODEV : 0; |
1200 | break; | 1200 | break; |
1201 | case AF9013_TUNER_TDA18271: | 1201 | case AF9013_TUNER_TDA18271: |
1202 | ret = dvb_attach(tda18271_attach, adap->fe, 0xc0, | 1202 | ret = dvb_attach(tda18271_attach, adap->fe[0], 0xc0, |
1203 | &adap->dev->i2c_adap, | 1203 | &adap->dev->i2c_adap, |
1204 | &af9015_tda18271_config) == NULL ? -ENODEV : 0; | 1204 | &af9015_tda18271_config) == NULL ? -ENODEV : 0; |
1205 | break; | 1205 | break; |
1206 | case AF9013_TUNER_TDA18218: | 1206 | case AF9013_TUNER_TDA18218: |
1207 | ret = dvb_attach(tda18218_attach, adap->fe, | 1207 | ret = dvb_attach(tda18218_attach, adap->fe[0], |
1208 | &adap->dev->i2c_adap, | 1208 | &adap->dev->i2c_adap, |
1209 | &af9015_tda18218_config) == NULL ? -ENODEV : 0; | 1209 | &af9015_tda18218_config) == NULL ? -ENODEV : 0; |
1210 | break; | 1210 | break; |
1211 | case AF9013_TUNER_MXL5003D: | 1211 | case AF9013_TUNER_MXL5003D: |
1212 | ret = dvb_attach(mxl5005s_attach, adap->fe, | 1212 | ret = dvb_attach(mxl5005s_attach, adap->fe[0], |
1213 | &adap->dev->i2c_adap, | 1213 | &adap->dev->i2c_adap, |
1214 | &af9015_mxl5003_config) == NULL ? -ENODEV : 0; | 1214 | &af9015_mxl5003_config) == NULL ? -ENODEV : 0; |
1215 | break; | 1215 | break; |
1216 | case AF9013_TUNER_MXL5005D: | 1216 | case AF9013_TUNER_MXL5005D: |
1217 | case AF9013_TUNER_MXL5005R: | 1217 | case AF9013_TUNER_MXL5005R: |
1218 | ret = dvb_attach(mxl5005s_attach, adap->fe, | 1218 | ret = dvb_attach(mxl5005s_attach, adap->fe[0], |
1219 | &adap->dev->i2c_adap, | 1219 | &adap->dev->i2c_adap, |
1220 | &af9015_mxl5005_config) == NULL ? -ENODEV : 0; | 1220 | &af9015_mxl5005_config) == NULL ? -ENODEV : 0; |
1221 | break; | 1221 | break; |
1222 | case AF9013_TUNER_ENV77H11D5: | 1222 | case AF9013_TUNER_ENV77H11D5: |
1223 | ret = dvb_attach(dvb_pll_attach, adap->fe, 0xc0, | 1223 | ret = dvb_attach(dvb_pll_attach, adap->fe[0], 0xc0, |
1224 | &adap->dev->i2c_adap, | 1224 | &adap->dev->i2c_adap, |
1225 | DVB_PLL_TDA665X) == NULL ? -ENODEV : 0; | 1225 | DVB_PLL_TDA665X) == NULL ? -ENODEV : 0; |
1226 | break; | 1226 | break; |
1227 | case AF9013_TUNER_MC44S803: | 1227 | case AF9013_TUNER_MC44S803: |
1228 | ret = dvb_attach(mc44s803_attach, adap->fe, | 1228 | ret = dvb_attach(mc44s803_attach, adap->fe[0], |
1229 | &adap->dev->i2c_adap, | 1229 | &adap->dev->i2c_adap, |
1230 | &af9015_mc44s803_config) == NULL ? -ENODEV : 0; | 1230 | &af9015_mc44s803_config) == NULL ? -ENODEV : 0; |
1231 | break; | 1231 | break; |
1232 | case AF9013_TUNER_MXL5007T: | 1232 | case AF9013_TUNER_MXL5007T: |
1233 | ret = dvb_attach(mxl5007t_attach, adap->fe, | 1233 | ret = dvb_attach(mxl5007t_attach, adap->fe[0], |
1234 | &adap->dev->i2c_adap, | 1234 | &adap->dev->i2c_adap, |
1235 | 0xc0, &af9015_mxl5007t_config) == NULL ? -ENODEV : 0; | 1235 | 0xc0, &af9015_mxl5007t_config) == NULL ? -ENODEV : 0; |
1236 | break; | 1236 | break; |
diff --git a/drivers/media/dvb/dvb-usb/anysee.c b/drivers/media/dvb/dvb-usb/anysee.c index 2cbf19a52e38..1ec88b694d29 100644 --- a/drivers/media/dvb/dvb-usb/anysee.c +++ b/drivers/media/dvb/dvb-usb/anysee.c | |||
@@ -488,13 +488,13 @@ static int anysee_frontend_attach(struct dvb_usb_adapter *adap) | |||
488 | /* E30 */ | 488 | /* E30 */ |
489 | 489 | ||
490 | /* attach demod */ | 490 | /* attach demod */ |
491 | adap->fe = dvb_attach(mt352_attach, &anysee_mt352_config, | 491 | adap->fe[0] = dvb_attach(mt352_attach, &anysee_mt352_config, |
492 | &adap->dev->i2c_adap); | 492 | &adap->dev->i2c_adap); |
493 | if (adap->fe) | 493 | if (adap->fe[0]) |
494 | break; | 494 | break; |
495 | 495 | ||
496 | /* attach demod */ | 496 | /* attach demod */ |
497 | adap->fe = dvb_attach(zl10353_attach, &anysee_zl10353_config, | 497 | adap->fe[0] = dvb_attach(zl10353_attach, &anysee_zl10353_config, |
498 | &adap->dev->i2c_adap); | 498 | &adap->dev->i2c_adap); |
499 | 499 | ||
500 | break; | 500 | break; |
@@ -512,7 +512,7 @@ static int anysee_frontend_attach(struct dvb_usb_adapter *adap) | |||
512 | goto error; | 512 | goto error; |
513 | 513 | ||
514 | /* attach demod */ | 514 | /* attach demod */ |
515 | adap->fe = dvb_attach(zl10353_attach, &anysee_zl10353_config, | 515 | adap->fe[0] = dvb_attach(zl10353_attach, &anysee_zl10353_config, |
516 | &adap->dev->i2c_adap); | 516 | &adap->dev->i2c_adap); |
517 | 517 | ||
518 | break; | 518 | break; |
@@ -525,7 +525,7 @@ static int anysee_frontend_attach(struct dvb_usb_adapter *adap) | |||
525 | goto error; | 525 | goto error; |
526 | 526 | ||
527 | /* attach demod */ | 527 | /* attach demod */ |
528 | adap->fe = dvb_attach(tda10023_attach, &anysee_tda10023_config, | 528 | adap->fe[0] = dvb_attach(tda10023_attach, &anysee_tda10023_config, |
529 | &adap->dev->i2c_adap, 0x48); | 529 | &adap->dev->i2c_adap, 0x48); |
530 | 530 | ||
531 | break; | 531 | break; |
@@ -538,7 +538,7 @@ static int anysee_frontend_attach(struct dvb_usb_adapter *adap) | |||
538 | goto error; | 538 | goto error; |
539 | 539 | ||
540 | /* attach demod */ | 540 | /* attach demod */ |
541 | adap->fe = dvb_attach(cx24116_attach, &anysee_cx24116_config, | 541 | adap->fe[0] = dvb_attach(cx24116_attach, &anysee_cx24116_config, |
542 | &adap->dev->i2c_adap); | 542 | &adap->dev->i2c_adap); |
543 | 543 | ||
544 | break; | 544 | break; |
@@ -580,12 +580,12 @@ static int anysee_frontend_attach(struct dvb_usb_adapter *adap) | |||
580 | /* attach demod */ | 580 | /* attach demod */ |
581 | if (tmp == 0xc7) { | 581 | if (tmp == 0xc7) { |
582 | /* TDA18212 config */ | 582 | /* TDA18212 config */ |
583 | adap->fe = dvb_attach(zl10353_attach, | 583 | adap->fe[0] = dvb_attach(zl10353_attach, |
584 | &anysee_zl10353_tda18212_config2, | 584 | &anysee_zl10353_tda18212_config2, |
585 | &adap->dev->i2c_adap); | 585 | &adap->dev->i2c_adap); |
586 | } else { | 586 | } else { |
587 | /* PLL config */ | 587 | /* PLL config */ |
588 | adap->fe = dvb_attach(zl10353_attach, | 588 | adap->fe[0] = dvb_attach(zl10353_attach, |
589 | &anysee_zl10353_config, | 589 | &anysee_zl10353_config, |
590 | &adap->dev->i2c_adap); | 590 | &adap->dev->i2c_adap); |
591 | } | 591 | } |
@@ -605,12 +605,12 @@ static int anysee_frontend_attach(struct dvb_usb_adapter *adap) | |||
605 | /* attach demod */ | 605 | /* attach demod */ |
606 | if (tmp == 0xc7) { | 606 | if (tmp == 0xc7) { |
607 | /* TDA18212 config */ | 607 | /* TDA18212 config */ |
608 | adap->fe = dvb_attach(tda10023_attach, | 608 | adap->fe[0] = dvb_attach(tda10023_attach, |
609 | &anysee_tda10023_tda18212_config, | 609 | &anysee_tda10023_tda18212_config, |
610 | &adap->dev->i2c_adap, 0x48); | 610 | &adap->dev->i2c_adap, 0x48); |
611 | } else { | 611 | } else { |
612 | /* PLL config */ | 612 | /* PLL config */ |
613 | adap->fe = dvb_attach(tda10023_attach, | 613 | adap->fe[0] = dvb_attach(tda10023_attach, |
614 | &anysee_tda10023_config, | 614 | &anysee_tda10023_config, |
615 | &adap->dev->i2c_adap, 0x48); | 615 | &adap->dev->i2c_adap, 0x48); |
616 | } | 616 | } |
@@ -647,7 +647,7 @@ static int anysee_frontend_attach(struct dvb_usb_adapter *adap) | |||
647 | goto error; | 647 | goto error; |
648 | 648 | ||
649 | /* attach demod */ | 649 | /* attach demod */ |
650 | adap->fe = dvb_attach(zl10353_attach, | 650 | adap->fe[0] = dvb_attach(zl10353_attach, |
651 | &anysee_zl10353_tda18212_config, | 651 | &anysee_zl10353_tda18212_config, |
652 | &adap->dev->i2c_adap); | 652 | &adap->dev->i2c_adap); |
653 | } else { | 653 | } else { |
@@ -670,7 +670,7 @@ static int anysee_frontend_attach(struct dvb_usb_adapter *adap) | |||
670 | goto error; | 670 | goto error; |
671 | 671 | ||
672 | /* attach demod */ | 672 | /* attach demod */ |
673 | adap->fe = dvb_attach(tda10023_attach, | 673 | adap->fe[0] = dvb_attach(tda10023_attach, |
674 | &anysee_tda10023_tda18212_config, | 674 | &anysee_tda10023_tda18212_config, |
675 | &adap->dev->i2c_adap, 0x48); | 675 | &adap->dev->i2c_adap, 0x48); |
676 | } | 676 | } |
@@ -692,13 +692,13 @@ static int anysee_frontend_attach(struct dvb_usb_adapter *adap) | |||
692 | goto error; | 692 | goto error; |
693 | 693 | ||
694 | /* attach demod */ | 694 | /* attach demod */ |
695 | adap->fe = dvb_attach(stv0900_attach, &anysee_stv0900_config, | 695 | adap->fe[0] = dvb_attach(stv0900_attach, &anysee_stv0900_config, |
696 | &adap->dev->i2c_adap, 0); | 696 | &adap->dev->i2c_adap, 0); |
697 | 697 | ||
698 | break; | 698 | break; |
699 | } | 699 | } |
700 | 700 | ||
701 | if (!adap->fe) { | 701 | if (!adap->fe[0]) { |
702 | /* we have no frontend :-( */ | 702 | /* we have no frontend :-( */ |
703 | ret = -ENODEV; | 703 | ret = -ENODEV; |
704 | err("Unsupported Anysee version. " \ | 704 | err("Unsupported Anysee version. " \ |
@@ -720,7 +720,7 @@ static int anysee_tuner_attach(struct dvb_usb_adapter *adap) | |||
720 | /* E30 */ | 720 | /* E30 */ |
721 | 721 | ||
722 | /* attach tuner */ | 722 | /* attach tuner */ |
723 | fe = dvb_attach(dvb_pll_attach, adap->fe, (0xc2 >> 1), | 723 | fe = dvb_attach(dvb_pll_attach, adap->fe[0], (0xc2 >> 1), |
724 | NULL, DVB_PLL_THOMSON_DTT7579); | 724 | NULL, DVB_PLL_THOMSON_DTT7579); |
725 | 725 | ||
726 | break; | 726 | break; |
@@ -728,7 +728,7 @@ static int anysee_tuner_attach(struct dvb_usb_adapter *adap) | |||
728 | /* E30 Plus */ | 728 | /* E30 Plus */ |
729 | 729 | ||
730 | /* attach tuner */ | 730 | /* attach tuner */ |
731 | fe = dvb_attach(dvb_pll_attach, adap->fe, (0xc2 >> 1), | 731 | fe = dvb_attach(dvb_pll_attach, adap->fe[0], (0xc2 >> 1), |
732 | &adap->dev->i2c_adap, DVB_PLL_THOMSON_DTT7579); | 732 | &adap->dev->i2c_adap, DVB_PLL_THOMSON_DTT7579); |
733 | 733 | ||
734 | break; | 734 | break; |
@@ -736,7 +736,7 @@ static int anysee_tuner_attach(struct dvb_usb_adapter *adap) | |||
736 | /* E30 C Plus */ | 736 | /* E30 C Plus */ |
737 | 737 | ||
738 | /* attach tuner */ | 738 | /* attach tuner */ |
739 | fe = dvb_attach(dvb_pll_attach, adap->fe, (0xc0 >> 1), | 739 | fe = dvb_attach(dvb_pll_attach, adap->fe[0], (0xc0 >> 1), |
740 | &adap->dev->i2c_adap, DVB_PLL_SAMSUNG_DTOS403IH102A); | 740 | &adap->dev->i2c_adap, DVB_PLL_SAMSUNG_DTOS403IH102A); |
741 | 741 | ||
742 | break; | 742 | break; |
@@ -744,7 +744,7 @@ static int anysee_tuner_attach(struct dvb_usb_adapter *adap) | |||
744 | /* E30 S2 Plus */ | 744 | /* E30 S2 Plus */ |
745 | 745 | ||
746 | /* attach LNB controller */ | 746 | /* attach LNB controller */ |
747 | fe = dvb_attach(isl6423_attach, adap->fe, &adap->dev->i2c_adap, | 747 | fe = dvb_attach(isl6423_attach, adap->fe[0], &adap->dev->i2c_adap, |
748 | &anysee_isl6423_config); | 748 | &anysee_isl6423_config); |
749 | 749 | ||
750 | break; | 750 | break; |
@@ -775,7 +775,7 @@ static int anysee_tuner_attach(struct dvb_usb_adapter *adap) | |||
775 | goto error; | 775 | goto error; |
776 | 776 | ||
777 | /* attach tuner */ | 777 | /* attach tuner */ |
778 | fe = dvb_attach(tda18212_attach, adap->fe, &adap->dev->i2c_adap, | 778 | fe = dvb_attach(tda18212_attach, adap->fe[0], &adap->dev->i2c_adap, |
779 | &anysee_tda18212_config); | 779 | &anysee_tda18212_config); |
780 | if (fe) | 780 | if (fe) |
781 | break; | 781 | break; |
@@ -786,7 +786,7 @@ static int anysee_tuner_attach(struct dvb_usb_adapter *adap) | |||
786 | goto error; | 786 | goto error; |
787 | 787 | ||
788 | /* attach tuner */ | 788 | /* attach tuner */ |
789 | fe = dvb_attach(dvb_pll_attach, adap->fe, (0xc0 >> 1), | 789 | fe = dvb_attach(dvb_pll_attach, adap->fe[0], (0xc0 >> 1), |
790 | &adap->dev->i2c_adap, DVB_PLL_SAMSUNG_DTOS403IH102A); | 790 | &adap->dev->i2c_adap, DVB_PLL_SAMSUNG_DTOS403IH102A); |
791 | 791 | ||
792 | break; | 792 | break; |
@@ -801,7 +801,7 @@ static int anysee_tuner_attach(struct dvb_usb_adapter *adap) | |||
801 | goto error; | 801 | goto error; |
802 | 802 | ||
803 | /* attach tuner */ | 803 | /* attach tuner */ |
804 | fe = dvb_attach(tda18212_attach, adap->fe, &adap->dev->i2c_adap, | 804 | fe = dvb_attach(tda18212_attach, adap->fe[0], &adap->dev->i2c_adap, |
805 | &anysee_tda18212_config); | 805 | &anysee_tda18212_config); |
806 | 806 | ||
807 | break; | 807 | break; |
@@ -811,12 +811,12 @@ static int anysee_tuner_attach(struct dvb_usb_adapter *adap) | |||
811 | /* E7 PS2 */ | 811 | /* E7 PS2 */ |
812 | 812 | ||
813 | /* attach tuner */ | 813 | /* attach tuner */ |
814 | fe = dvb_attach(stv6110_attach, adap->fe, | 814 | fe = dvb_attach(stv6110_attach, adap->fe[0], |
815 | &anysee_stv6110_config, &adap->dev->i2c_adap); | 815 | &anysee_stv6110_config, &adap->dev->i2c_adap); |
816 | 816 | ||
817 | if (fe) { | 817 | if (fe) { |
818 | /* attach LNB controller */ | 818 | /* attach LNB controller */ |
819 | fe = dvb_attach(isl6423_attach, adap->fe, | 819 | fe = dvb_attach(isl6423_attach, adap->fe[0], |
820 | &adap->dev->i2c_adap, &anysee_isl6423_config); | 820 | &adap->dev->i2c_adap, &anysee_isl6423_config); |
821 | } | 821 | } |
822 | 822 | ||
diff --git a/drivers/media/dvb/dvb-usb/au6610.c b/drivers/media/dvb/dvb-usb/au6610.c index 2351077ff2b3..ebe6e1ffc319 100644 --- a/drivers/media/dvb/dvb-usb/au6610.c +++ b/drivers/media/dvb/dvb-usb/au6610.c | |||
@@ -140,9 +140,9 @@ static struct zl10353_config au6610_zl10353_config = { | |||
140 | 140 | ||
141 | static int au6610_zl10353_frontend_attach(struct dvb_usb_adapter *adap) | 141 | static int au6610_zl10353_frontend_attach(struct dvb_usb_adapter *adap) |
142 | { | 142 | { |
143 | adap->fe = dvb_attach(zl10353_attach, &au6610_zl10353_config, | 143 | adap->fe[0] = dvb_attach(zl10353_attach, &au6610_zl10353_config, |
144 | &adap->dev->i2c_adap); | 144 | &adap->dev->i2c_adap); |
145 | if (adap->fe == NULL) | 145 | if (adap->fe[0] == NULL) |
146 | return -ENODEV; | 146 | return -ENODEV; |
147 | 147 | ||
148 | return 0; | 148 | return 0; |
@@ -155,7 +155,7 @@ static struct qt1010_config au6610_qt1010_config = { | |||
155 | static int au6610_qt1010_tuner_attach(struct dvb_usb_adapter *adap) | 155 | static int au6610_qt1010_tuner_attach(struct dvb_usb_adapter *adap) |
156 | { | 156 | { |
157 | return dvb_attach(qt1010_attach, | 157 | return dvb_attach(qt1010_attach, |
158 | adap->fe, &adap->dev->i2c_adap, | 158 | adap->fe[0], &adap->dev->i2c_adap, |
159 | &au6610_qt1010_config) == NULL ? -ENODEV : 0; | 159 | &au6610_qt1010_config) == NULL ? -ENODEV : 0; |
160 | } | 160 | } |
161 | 161 | ||
diff --git a/drivers/media/dvb/dvb-usb/az6027.c b/drivers/media/dvb/dvb-usb/az6027.c index 57e2444d51ab..d59430c48158 100644 --- a/drivers/media/dvb/dvb-usb/az6027.c +++ b/drivers/media/dvb/dvb-usb/az6027.c | |||
@@ -910,16 +910,16 @@ static int az6027_frontend_attach(struct dvb_usb_adapter *adap) | |||
910 | az6027_frontend_reset(adap); | 910 | az6027_frontend_reset(adap); |
911 | 911 | ||
912 | deb_info("adap = %p, dev = %p\n", adap, adap->dev); | 912 | deb_info("adap = %p, dev = %p\n", adap, adap->dev); |
913 | adap->fe = stb0899_attach(&az6027_stb0899_config, &adap->dev->i2c_adap); | 913 | adap->fe[0] = stb0899_attach(&az6027_stb0899_config, &adap->dev->i2c_adap); |
914 | 914 | ||
915 | if (adap->fe) { | 915 | if (adap->fe[0]) { |
916 | deb_info("found STB0899 DVB-S/DVB-S2 frontend @0x%02x", az6027_stb0899_config.demod_address); | 916 | deb_info("found STB0899 DVB-S/DVB-S2 frontend @0x%02x", az6027_stb0899_config.demod_address); |
917 | if (stb6100_attach(adap->fe, &az6027_stb6100_config, &adap->dev->i2c_adap)) { | 917 | if (stb6100_attach(adap->fe[0], &az6027_stb6100_config, &adap->dev->i2c_adap)) { |
918 | deb_info("found STB6100 DVB-S/DVB-S2 frontend @0x%02x", az6027_stb6100_config.tuner_address); | 918 | deb_info("found STB6100 DVB-S/DVB-S2 frontend @0x%02x", az6027_stb6100_config.tuner_address); |
919 | adap->fe->ops.set_voltage = az6027_set_voltage; | 919 | adap->fe[0]->ops.set_voltage = az6027_set_voltage; |
920 | az6027_ci_init(adap); | 920 | az6027_ci_init(adap); |
921 | } else { | 921 | } else { |
922 | adap->fe = NULL; | 922 | adap->fe[0] = NULL; |
923 | } | 923 | } |
924 | } else | 924 | } else |
925 | warn("no front-end attached\n"); | 925 | warn("no front-end attached\n"); |
diff --git a/drivers/media/dvb/dvb-usb/ce6230.c b/drivers/media/dvb/dvb-usb/ce6230.c index 6d1a3041540d..5655ce411d70 100644 --- a/drivers/media/dvb/dvb-usb/ce6230.c +++ b/drivers/media/dvb/dvb-usb/ce6230.c | |||
@@ -186,9 +186,9 @@ static struct zl10353_config ce6230_zl10353_config = { | |||
186 | static int ce6230_zl10353_frontend_attach(struct dvb_usb_adapter *adap) | 186 | static int ce6230_zl10353_frontend_attach(struct dvb_usb_adapter *adap) |
187 | { | 187 | { |
188 | deb_info("%s:\n", __func__); | 188 | deb_info("%s:\n", __func__); |
189 | adap->fe = dvb_attach(zl10353_attach, &ce6230_zl10353_config, | 189 | adap->fe[0] = dvb_attach(zl10353_attach, &ce6230_zl10353_config, |
190 | &adap->dev->i2c_adap); | 190 | &adap->dev->i2c_adap); |
191 | if (adap->fe == NULL) | 191 | if (adap->fe[0] == NULL) |
192 | return -ENODEV; | 192 | return -ENODEV; |
193 | return 0; | 193 | return 0; |
194 | } | 194 | } |
@@ -214,7 +214,7 @@ static int ce6230_mxl5003s_tuner_attach(struct dvb_usb_adapter *adap) | |||
214 | { | 214 | { |
215 | int ret; | 215 | int ret; |
216 | deb_info("%s:\n", __func__); | 216 | deb_info("%s:\n", __func__); |
217 | ret = dvb_attach(mxl5005s_attach, adap->fe, &adap->dev->i2c_adap, | 217 | ret = dvb_attach(mxl5005s_attach, adap->fe[0], &adap->dev->i2c_adap, |
218 | &ce6230_mxl5003s_config) == NULL ? -ENODEV : 0; | 218 | &ce6230_mxl5003s_config) == NULL ? -ENODEV : 0; |
219 | return ret; | 219 | return ret; |
220 | } | 220 | } |
diff --git a/drivers/media/dvb/dvb-usb/cinergyT2-core.c b/drivers/media/dvb/dvb-usb/cinergyT2-core.c index 16f2ce2bc15a..0dd42bdbe285 100644 --- a/drivers/media/dvb/dvb-usb/cinergyT2-core.c +++ b/drivers/media/dvb/dvb-usb/cinergyT2-core.c | |||
@@ -69,7 +69,7 @@ static int cinergyt2_frontend_attach(struct dvb_usb_adapter *adap) | |||
69 | char state[3]; | 69 | char state[3]; |
70 | int ret; | 70 | int ret; |
71 | 71 | ||
72 | adap->fe = cinergyt2_fe_attach(adap->dev); | 72 | adap->fe[0] = cinergyt2_fe_attach(adap->dev); |
73 | 73 | ||
74 | ret = dvb_usb_generic_rw(adap->dev, query, sizeof(query), state, | 74 | ret = dvb_usb_generic_rw(adap->dev, query, sizeof(query), state, |
75 | sizeof(state), 0); | 75 | sizeof(state), 0); |
diff --git a/drivers/media/dvb/dvb-usb/cxusb.c b/drivers/media/dvb/dvb-usb/cxusb.c index acb5fb2d2e73..a76f431d6a26 100644 --- a/drivers/media/dvb/dvb-usb/cxusb.c +++ b/drivers/media/dvb/dvb-usb/cxusb.c | |||
@@ -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, | 728 | dvb_attach(simple_tuner_attach, adap->fe[0], |
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, 0x61, | 736 | dvb_attach(dvb_pll_attach, adap->fe[0], 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, 0x61, NULL, DVB_PLL_LG_Z201); | 743 | dvb_attach(dvb_pll_attach, adap->fe[0], 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, 0x60, | 749 | dvb_attach(dvb_pll_attach, adap->fe[0], 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, | 756 | dvb_attach(simple_tuner_attach, adap->fe[0], |
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->callback = dvico_bluebird_xc2028_callback; | 798 | adap->fe[0]->callback = dvico_bluebird_xc2028_callback; |
799 | 799 | ||
800 | fe = dvb_attach(xc2028_attach, adap->fe, &cfg); | 800 | fe = dvb_attach(xc2028_attach, adap->fe[0], &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, | 811 | dvb_attach(mxl5005s_attach, adap->fe[0], |
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, | 819 | fe = dvb_attach(mxl5005s_attach, adap->fe[0], |
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, | 827 | fe = dvb_attach(max2165_attach, adap->fe[0], |
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 = dvb_attach(cx22702_attach, &cxusb_cx22702_config, | 840 | if ((adap->fe[0] = 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 = dvb_attach(lgdt330x_attach, &cxusb_lgdt3303_config, | 854 | if ((adap->fe[0] = 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 = dvb_attach(lgdt330x_attach, &cxusb_aver_lgdt3303_config, | 863 | adap->fe[0] = dvb_attach(lgdt330x_attach, &cxusb_aver_lgdt3303_config, |
864 | &adap->dev->i2c_adap); | 864 | &adap->dev->i2c_adap); |
865 | if (adap->fe != NULL) | 865 | if (adap->fe[0] != 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 = dvb_attach(mt352_attach, &cxusb_mt352_config, | 879 | if ((adap->fe[0] = 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 = dvb_attach(mt352_attach, &cxusb_dee1601_config, | 893 | if (((adap->fe[0] = dvb_attach(mt352_attach, &cxusb_dee1601_config, |
894 | &adap->dev->i2c_adap)) != NULL) || | 894 | &adap->dev->i2c_adap)) != NULL) || |
895 | ((adap->fe = dvb_attach(zl10353_attach, | 895 | ((adap->fe[0] = 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 = dvb_attach(zl10353_attach, | 920 | if ((adap->fe[0] = 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 = dvb_attach(dib7000p_attach, &adap->dev->i2c_adap, 0x80, | 1034 | adap->fe[0] = dvb_attach(dib7000p_attach, &adap->dev->i2c_adap, 0x80, |
1035 | &cxusb_dualdig4_rev2_config); | 1035 | &cxusb_dualdig4_rev2_config); |
1036 | if (adap->fe == NULL) | 1036 | if (adap->fe[0] == 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, | 1087 | dib7000p_get_i2c_master(adap->fe[0], |
1088 | DIBX000_I2C_INTERFACE_TUNER, 1); | 1088 | DIBX000_I2C_INTERFACE_TUNER, 1); |
1089 | 1089 | ||
1090 | if (dvb_attach(dib0070_attach, adap->fe, tun_i2c, | 1090 | if (dvb_attach(dib0070_attach, adap->fe[0], 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->ops.tuner_ops.set_params; | 1094 | st->set_param_save = adap->fe[0]->ops.tuner_ops.set_params; |
1095 | adap->fe->ops.tuner_ops.set_params = dib7070_set_param_override; | 1095 | adap->fe[0]->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 = dvb_attach(zl10353_attach, | 1111 | if ((adap->fe[0] = 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 = dvb_attach(mt352_attach, | 1116 | if ((adap->fe[0] = 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; |
@@ -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 = dvb_attach(lgs8gxx_attach, &d680_lgs8gl5_cfg, &d->i2c_adap); | 1175 | adap->fe[0] = dvb_attach(lgs8gxx_attach, &d680_lgs8gl5_cfg, &d->i2c_adap); |
1176 | if (adap->fe == NULL) | 1176 | if (adap->fe[0] == NULL) |
1177 | return -EIO; | 1177 | return -EIO; |
1178 | 1178 | ||
1179 | return 0; | 1179 | return 0; |
@@ -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 = dvb_attach(atbm8830_attach, &mygica_d689_atbm8830_cfg, | 1226 | adap->fe[0] = dvb_attach(atbm8830_attach, &mygica_d689_atbm8830_cfg, |
1227 | &d->i2c_adap); | 1227 | &d->i2c_adap); |
1228 | if (adap->fe == NULL) | 1228 | if (adap->fe[0] == NULL) |
1229 | return -EIO; | 1229 | return -EIO; |
1230 | 1230 | ||
1231 | return 0; | 1231 | return 0; |
diff --git a/drivers/media/dvb/dvb-usb/dib0700_devices.c b/drivers/media/dvb/dvb-usb/dib0700_devices.c index d0ea5b64f6b4..754f8ec77e05 100644 --- a/drivers/media/dvb/dvb-usb/dib0700_devices.c +++ b/drivers/media/dvb/dvb-usb/dib0700_devices.c | |||
@@ -101,7 +101,7 @@ static int bristol_frontend_attach(struct dvb_usb_adapter *adap) | |||
101 | } | 101 | } |
102 | } | 102 | } |
103 | st->mt2060_if1[adap->id] = 1220; | 103 | st->mt2060_if1[adap->id] = 1220; |
104 | return (adap->fe = dvb_attach(dib3000mc_attach, &adap->dev->i2c_adap, | 104 | return (adap->fe[0] = dvb_attach(dib3000mc_attach, &adap->dev->i2c_adap, |
105 | (10 + adap->id) << 1, &bristol_dib3000mc_config[adap->id])) == NULL ? -ENODEV : 0; | 105 | (10 + adap->id) << 1, &bristol_dib3000mc_config[adap->id])) == NULL ? -ENODEV : 0; |
106 | } | 106 | } |
107 | 107 | ||
@@ -118,14 +118,14 @@ static int eeprom_read(struct i2c_adapter *adap,u8 adrs,u8 *pval) | |||
118 | static int bristol_tuner_attach(struct dvb_usb_adapter *adap) | 118 | static int bristol_tuner_attach(struct dvb_usb_adapter *adap) |
119 | { | 119 | { |
120 | struct i2c_adapter *prim_i2c = &adap->dev->i2c_adap; | 120 | struct i2c_adapter *prim_i2c = &adap->dev->i2c_adap; |
121 | struct i2c_adapter *tun_i2c = dib3000mc_get_tuner_i2c_master(adap->fe, 1); | 121 | struct i2c_adapter *tun_i2c = dib3000mc_get_tuner_i2c_master(adap->fe[0], 1); |
122 | s8 a; | 122 | s8 a; |
123 | int if1=1220; | 123 | int if1=1220; |
124 | if (adap->dev->udev->descriptor.idVendor == cpu_to_le16(USB_VID_HAUPPAUGE) && | 124 | if (adap->dev->udev->descriptor.idVendor == cpu_to_le16(USB_VID_HAUPPAUGE) && |
125 | adap->dev->udev->descriptor.idProduct == cpu_to_le16(USB_PID_HAUPPAUGE_NOVA_T_500_2)) { | 125 | adap->dev->udev->descriptor.idProduct == cpu_to_le16(USB_PID_HAUPPAUGE_NOVA_T_500_2)) { |
126 | if (!eeprom_read(prim_i2c,0x59 + adap->id,&a)) if1=1220+a; | 126 | if (!eeprom_read(prim_i2c,0x59 + adap->id,&a)) if1=1220+a; |
127 | } | 127 | } |
128 | return dvb_attach(mt2060_attach,adap->fe, tun_i2c,&bristol_mt2060_config[adap->id], | 128 | return dvb_attach(mt2060_attach,adap->fe[0], tun_i2c,&bristol_mt2060_config[adap->id], |
129 | if1) == NULL ? -ENODEV : 0; | 129 | if1) == NULL ? -ENODEV : 0; |
130 | } | 130 | } |
131 | 131 | ||
@@ -279,10 +279,10 @@ static int stk7700P2_frontend_attach(struct dvb_usb_adapter *adap) | |||
279 | } | 279 | } |
280 | } | 280 | } |
281 | 281 | ||
282 | adap->fe = dvb_attach(dib7000p_attach, &adap->dev->i2c_adap,0x80+(adap->id << 1), | 282 | adap->fe[0] = dvb_attach(dib7000p_attach, &adap->dev->i2c_adap,0x80+(adap->id << 1), |
283 | &stk7700d_dib7000p_mt2266_config[adap->id]); | 283 | &stk7700d_dib7000p_mt2266_config[adap->id]); |
284 | 284 | ||
285 | return adap->fe == NULL ? -ENODEV : 0; | 285 | return adap->fe[0] == NULL ? -ENODEV : 0; |
286 | } | 286 | } |
287 | 287 | ||
288 | static int stk7700d_frontend_attach(struct dvb_usb_adapter *adap) | 288 | static int stk7700d_frontend_attach(struct dvb_usb_adapter *adap) |
@@ -306,17 +306,17 @@ static int stk7700d_frontend_attach(struct dvb_usb_adapter *adap) | |||
306 | } | 306 | } |
307 | } | 307 | } |
308 | 308 | ||
309 | adap->fe = dvb_attach(dib7000p_attach, &adap->dev->i2c_adap,0x80+(adap->id << 1), | 309 | adap->fe[0] = dvb_attach(dib7000p_attach, &adap->dev->i2c_adap,0x80+(adap->id << 1), |
310 | &stk7700d_dib7000p_mt2266_config[adap->id]); | 310 | &stk7700d_dib7000p_mt2266_config[adap->id]); |
311 | 311 | ||
312 | return adap->fe == NULL ? -ENODEV : 0; | 312 | return adap->fe[0] == NULL ? -ENODEV : 0; |
313 | } | 313 | } |
314 | 314 | ||
315 | static int stk7700d_tuner_attach(struct dvb_usb_adapter *adap) | 315 | static int stk7700d_tuner_attach(struct dvb_usb_adapter *adap) |
316 | { | 316 | { |
317 | struct i2c_adapter *tun_i2c; | 317 | struct i2c_adapter *tun_i2c; |
318 | tun_i2c = dib7000p_get_i2c_master(adap->fe, DIBX000_I2C_INTERFACE_TUNER, 1); | 318 | tun_i2c = dib7000p_get_i2c_master(adap->fe[0], DIBX000_I2C_INTERFACE_TUNER, 1); |
319 | return dvb_attach(mt2266_attach, adap->fe, tun_i2c, | 319 | return dvb_attach(mt2266_attach, adap->fe[0], tun_i2c, |
320 | &stk7700d_mt2266_config[adap->id]) == NULL ? -ENODEV : 0; | 320 | &stk7700d_mt2266_config[adap->id]) == NULL ? -ENODEV : 0; |
321 | } | 321 | } |
322 | 322 | ||
@@ -396,8 +396,8 @@ static int stk7700ph_xc3028_callback(void *ptr, int component, | |||
396 | switch (command) { | 396 | switch (command) { |
397 | case XC2028_TUNER_RESET: | 397 | case XC2028_TUNER_RESET: |
398 | /* Send the tuner in then out of reset */ | 398 | /* Send the tuner in then out of reset */ |
399 | dib7000p_set_gpio(adap->fe, 8, 0, 0); msleep(10); | 399 | dib7000p_set_gpio(adap->fe[0], 8, 0, 0); msleep(10); |
400 | dib7000p_set_gpio(adap->fe, 8, 0, 1); | 400 | dib7000p_set_gpio(adap->fe[0], 8, 0, 1); |
401 | break; | 401 | break; |
402 | case XC2028_RESET_CLK: | 402 | case XC2028_RESET_CLK: |
403 | break; | 403 | break; |
@@ -447,25 +447,25 @@ static int stk7700ph_frontend_attach(struct dvb_usb_adapter *adap) | |||
447 | return -ENODEV; | 447 | return -ENODEV; |
448 | } | 448 | } |
449 | 449 | ||
450 | adap->fe = dvb_attach(dib7000p_attach, &adap->dev->i2c_adap, 0x80, | 450 | adap->fe[0] = dvb_attach(dib7000p_attach, &adap->dev->i2c_adap, 0x80, |
451 | &stk7700ph_dib7700_xc3028_config); | 451 | &stk7700ph_dib7700_xc3028_config); |
452 | 452 | ||
453 | return adap->fe == NULL ? -ENODEV : 0; | 453 | return adap->fe[0] == NULL ? -ENODEV : 0; |
454 | } | 454 | } |
455 | 455 | ||
456 | static int stk7700ph_tuner_attach(struct dvb_usb_adapter *adap) | 456 | static int stk7700ph_tuner_attach(struct dvb_usb_adapter *adap) |
457 | { | 457 | { |
458 | struct i2c_adapter *tun_i2c; | 458 | struct i2c_adapter *tun_i2c; |
459 | 459 | ||
460 | tun_i2c = dib7000p_get_i2c_master(adap->fe, | 460 | tun_i2c = dib7000p_get_i2c_master(adap->fe[0], |
461 | DIBX000_I2C_INTERFACE_TUNER, 1); | 461 | DIBX000_I2C_INTERFACE_TUNER, 1); |
462 | 462 | ||
463 | stk7700ph_xc3028_config.i2c_adap = tun_i2c; | 463 | stk7700ph_xc3028_config.i2c_adap = tun_i2c; |
464 | 464 | ||
465 | /* FIXME: generalize & move to common area */ | 465 | /* FIXME: generalize & move to common area */ |
466 | adap->fe->callback = stk7700ph_xc3028_callback; | 466 | adap->fe[0]->callback = stk7700ph_xc3028_callback; |
467 | 467 | ||
468 | return dvb_attach(xc2028_attach, adap->fe, &stk7700ph_xc3028_config) | 468 | return dvb_attach(xc2028_attach, adap->fe[0], &stk7700ph_xc3028_config) |
469 | == NULL ? -ENODEV : 0; | 469 | == NULL ? -ENODEV : 0; |
470 | } | 470 | } |
471 | 471 | ||
@@ -685,12 +685,12 @@ static int stk7700p_frontend_attach(struct dvb_usb_adapter *adap) | |||
685 | st->mt2060_if1[0] = 1220; | 685 | st->mt2060_if1[0] = 1220; |
686 | 686 | ||
687 | if (dib7000pc_detection(&adap->dev->i2c_adap)) { | 687 | if (dib7000pc_detection(&adap->dev->i2c_adap)) { |
688 | adap->fe = dvb_attach(dib7000p_attach, &adap->dev->i2c_adap, 18, &stk7700p_dib7000p_config); | 688 | adap->fe[0] = dvb_attach(dib7000p_attach, &adap->dev->i2c_adap, 18, &stk7700p_dib7000p_config); |
689 | st->is_dib7000pc = 1; | 689 | st->is_dib7000pc = 1; |
690 | } else | 690 | } else |
691 | adap->fe = dvb_attach(dib7000m_attach, &adap->dev->i2c_adap, 18, &stk7700p_dib7000m_config); | 691 | adap->fe[0] = dvb_attach(dib7000m_attach, &adap->dev->i2c_adap, 18, &stk7700p_dib7000m_config); |
692 | 692 | ||
693 | return adap->fe == NULL ? -ENODEV : 0; | 693 | return adap->fe[0] == NULL ? -ENODEV : 0; |
694 | } | 694 | } |
695 | 695 | ||
696 | static struct mt2060_config stk7700p_mt2060_config = { | 696 | static struct mt2060_config stk7700p_mt2060_config = { |
@@ -709,11 +709,11 @@ static int stk7700p_tuner_attach(struct dvb_usb_adapter *adap) | |||
709 | if (!eeprom_read(prim_i2c,0x58,&a)) if1=1220+a; | 709 | if (!eeprom_read(prim_i2c,0x58,&a)) if1=1220+a; |
710 | } | 710 | } |
711 | if (st->is_dib7000pc) | 711 | if (st->is_dib7000pc) |
712 | tun_i2c = dib7000p_get_i2c_master(adap->fe, DIBX000_I2C_INTERFACE_TUNER, 1); | 712 | tun_i2c = dib7000p_get_i2c_master(adap->fe[0], DIBX000_I2C_INTERFACE_TUNER, 1); |
713 | else | 713 | else |
714 | tun_i2c = dib7000m_get_i2c_master(adap->fe, DIBX000_I2C_INTERFACE_TUNER, 1); | 714 | tun_i2c = dib7000m_get_i2c_master(adap->fe[0], DIBX000_I2C_INTERFACE_TUNER, 1); |
715 | 715 | ||
716 | return dvb_attach(mt2060_attach, adap->fe, tun_i2c, &stk7700p_mt2060_config, | 716 | return dvb_attach(mt2060_attach, adap->fe[0], tun_i2c, &stk7700p_mt2060_config, |
717 | if1) == NULL ? -ENODEV : 0; | 717 | if1) == NULL ? -ENODEV : 0; |
718 | } | 718 | } |
719 | 719 | ||
@@ -843,33 +843,33 @@ static int dib7770_set_param_override(struct dvb_frontend *fe, | |||
843 | static int dib7770p_tuner_attach(struct dvb_usb_adapter *adap) | 843 | static int dib7770p_tuner_attach(struct dvb_usb_adapter *adap) |
844 | { | 844 | { |
845 | struct dib0700_adapter_state *st = adap->priv; | 845 | struct dib0700_adapter_state *st = adap->priv; |
846 | struct i2c_adapter *tun_i2c = dib7000p_get_i2c_master(adap->fe, | 846 | struct i2c_adapter *tun_i2c = dib7000p_get_i2c_master(adap->fe[0], |
847 | DIBX000_I2C_INTERFACE_TUNER, 1); | 847 | DIBX000_I2C_INTERFACE_TUNER, 1); |
848 | 848 | ||
849 | if (dvb_attach(dib0070_attach, adap->fe, tun_i2c, | 849 | if (dvb_attach(dib0070_attach, adap->fe[0], tun_i2c, |
850 | &dib7770p_dib0070_config) == NULL) | 850 | &dib7770p_dib0070_config) == NULL) |
851 | return -ENODEV; | 851 | return -ENODEV; |
852 | 852 | ||
853 | st->set_param_save = adap->fe->ops.tuner_ops.set_params; | 853 | st->set_param_save = adap->fe[0]->ops.tuner_ops.set_params; |
854 | adap->fe->ops.tuner_ops.set_params = dib7770_set_param_override; | 854 | adap->fe[0]->ops.tuner_ops.set_params = dib7770_set_param_override; |
855 | return 0; | 855 | return 0; |
856 | } | 856 | } |
857 | 857 | ||
858 | static int dib7070p_tuner_attach(struct dvb_usb_adapter *adap) | 858 | static int dib7070p_tuner_attach(struct dvb_usb_adapter *adap) |
859 | { | 859 | { |
860 | struct dib0700_adapter_state *st = adap->priv; | 860 | struct dib0700_adapter_state *st = adap->priv; |
861 | struct i2c_adapter *tun_i2c = dib7000p_get_i2c_master(adap->fe, DIBX000_I2C_INTERFACE_TUNER, 1); | 861 | struct i2c_adapter *tun_i2c = dib7000p_get_i2c_master(adap->fe[0], DIBX000_I2C_INTERFACE_TUNER, 1); |
862 | 862 | ||
863 | if (adap->id == 0) { | 863 | if (adap->id == 0) { |
864 | if (dvb_attach(dib0070_attach, adap->fe, tun_i2c, &dib7070p_dib0070_config[0]) == NULL) | 864 | if (dvb_attach(dib0070_attach, adap->fe[0], tun_i2c, &dib7070p_dib0070_config[0]) == NULL) |
865 | return -ENODEV; | 865 | return -ENODEV; |
866 | } else { | 866 | } else { |
867 | if (dvb_attach(dib0070_attach, adap->fe, tun_i2c, &dib7070p_dib0070_config[1]) == NULL) | 867 | if (dvb_attach(dib0070_attach, adap->fe[0], tun_i2c, &dib7070p_dib0070_config[1]) == NULL) |
868 | return -ENODEV; | 868 | return -ENODEV; |
869 | } | 869 | } |
870 | 870 | ||
871 | st->set_param_save = adap->fe->ops.tuner_ops.set_params; | 871 | st->set_param_save = adap->fe[0]->ops.tuner_ops.set_params; |
872 | adap->fe->ops.tuner_ops.set_params = dib7070_set_param_override; | 872 | adap->fe[0]->ops.tuner_ops.set_params = dib7070_set_param_override; |
873 | return 0; | 873 | return 0; |
874 | } | 874 | } |
875 | 875 | ||
@@ -878,26 +878,26 @@ static int stk7700p_pid_filter(struct dvb_usb_adapter *adapter, int index, | |||
878 | { | 878 | { |
879 | struct dib0700_state *st = adapter->dev->priv; | 879 | struct dib0700_state *st = adapter->dev->priv; |
880 | if (st->is_dib7000pc) | 880 | if (st->is_dib7000pc) |
881 | return dib7000p_pid_filter(adapter->fe, index, pid, onoff); | 881 | return dib7000p_pid_filter(adapter->fe[0], index, pid, onoff); |
882 | return dib7000m_pid_filter(adapter->fe, index, pid, onoff); | 882 | return dib7000m_pid_filter(adapter->fe[0], index, pid, onoff); |
883 | } | 883 | } |
884 | 884 | ||
885 | static int stk7700p_pid_filter_ctrl(struct dvb_usb_adapter *adapter, int onoff) | 885 | static int stk7700p_pid_filter_ctrl(struct dvb_usb_adapter *adapter, int onoff) |
886 | { | 886 | { |
887 | struct dib0700_state *st = adapter->dev->priv; | 887 | struct dib0700_state *st = adapter->dev->priv; |
888 | if (st->is_dib7000pc) | 888 | if (st->is_dib7000pc) |
889 | return dib7000p_pid_filter_ctrl(adapter->fe, onoff); | 889 | return dib7000p_pid_filter_ctrl(adapter->fe[0], onoff); |
890 | return dib7000m_pid_filter_ctrl(adapter->fe, onoff); | 890 | return dib7000m_pid_filter_ctrl(adapter->fe[0], onoff); |
891 | } | 891 | } |
892 | 892 | ||
893 | static int stk70x0p_pid_filter(struct dvb_usb_adapter *adapter, int index, u16 pid, int onoff) | 893 | static int stk70x0p_pid_filter(struct dvb_usb_adapter *adapter, int index, u16 pid, int onoff) |
894 | { | 894 | { |
895 | return dib7000p_pid_filter(adapter->fe, index, pid, onoff); | 895 | return dib7000p_pid_filter(adapter->fe[0], index, pid, onoff); |
896 | } | 896 | } |
897 | 897 | ||
898 | static int stk70x0p_pid_filter_ctrl(struct dvb_usb_adapter *adapter, int onoff) | 898 | static int stk70x0p_pid_filter_ctrl(struct dvb_usb_adapter *adapter, int onoff) |
899 | { | 899 | { |
900 | return dib7000p_pid_filter_ctrl(adapter->fe, onoff); | 900 | return dib7000p_pid_filter_ctrl(adapter->fe[0], onoff); |
901 | } | 901 | } |
902 | 902 | ||
903 | static struct dibx000_bandwidth_config dib7070_bw_config_12_mhz = { | 903 | static struct dibx000_bandwidth_config dib7070_bw_config_12_mhz = { |
@@ -955,9 +955,9 @@ static int stk7070p_frontend_attach(struct dvb_usb_adapter *adap) | |||
955 | return -ENODEV; | 955 | return -ENODEV; |
956 | } | 956 | } |
957 | 957 | ||
958 | adap->fe = dvb_attach(dib7000p_attach, &adap->dev->i2c_adap, 0x80, | 958 | adap->fe[0] = dvb_attach(dib7000p_attach, &adap->dev->i2c_adap, 0x80, |
959 | &dib7070p_dib7000p_config); | 959 | &dib7070p_dib7000p_config); |
960 | return adap->fe == NULL ? -ENODEV : 0; | 960 | return adap->fe[0] == NULL ? -ENODEV : 0; |
961 | } | 961 | } |
962 | 962 | ||
963 | /* STK7770P */ | 963 | /* STK7770P */ |
@@ -1007,9 +1007,9 @@ static int stk7770p_frontend_attach(struct dvb_usb_adapter *adap) | |||
1007 | return -ENODEV; | 1007 | return -ENODEV; |
1008 | } | 1008 | } |
1009 | 1009 | ||
1010 | adap->fe = dvb_attach(dib7000p_attach, &adap->dev->i2c_adap, 0x80, | 1010 | adap->fe[0] = dvb_attach(dib7000p_attach, &adap->dev->i2c_adap, 0x80, |
1011 | &dib7770p_dib7000p_config); | 1011 | &dib7770p_dib7000p_config); |
1012 | return adap->fe == NULL ? -ENODEV : 0; | 1012 | return adap->fe[0] == NULL ? -ENODEV : 0; |
1013 | } | 1013 | } |
1014 | 1014 | ||
1015 | /* DIB807x generic */ | 1015 | /* DIB807x generic */ |
@@ -1225,34 +1225,34 @@ static int dib807x_set_param_override(struct dvb_frontend *fe, | |||
1225 | static int dib807x_tuner_attach(struct dvb_usb_adapter *adap) | 1225 | static int dib807x_tuner_attach(struct dvb_usb_adapter *adap) |
1226 | { | 1226 | { |
1227 | struct dib0700_adapter_state *st = adap->priv; | 1227 | struct dib0700_adapter_state *st = adap->priv; |
1228 | struct i2c_adapter *tun_i2c = dib8000_get_i2c_master(adap->fe, | 1228 | struct i2c_adapter *tun_i2c = dib8000_get_i2c_master(adap->fe[0], |
1229 | DIBX000_I2C_INTERFACE_TUNER, 1); | 1229 | DIBX000_I2C_INTERFACE_TUNER, 1); |
1230 | 1230 | ||
1231 | if (adap->id == 0) { | 1231 | if (adap->id == 0) { |
1232 | if (dvb_attach(dib0070_attach, adap->fe, tun_i2c, | 1232 | if (dvb_attach(dib0070_attach, adap->fe[0], tun_i2c, |
1233 | &dib807x_dib0070_config[0]) == NULL) | 1233 | &dib807x_dib0070_config[0]) == NULL) |
1234 | return -ENODEV; | 1234 | return -ENODEV; |
1235 | } else { | 1235 | } else { |
1236 | if (dvb_attach(dib0070_attach, adap->fe, tun_i2c, | 1236 | if (dvb_attach(dib0070_attach, adap->fe[0], tun_i2c, |
1237 | &dib807x_dib0070_config[1]) == NULL) | 1237 | &dib807x_dib0070_config[1]) == NULL) |
1238 | return -ENODEV; | 1238 | return -ENODEV; |
1239 | } | 1239 | } |
1240 | 1240 | ||
1241 | st->set_param_save = adap->fe->ops.tuner_ops.set_params; | 1241 | st->set_param_save = adap->fe[0]->ops.tuner_ops.set_params; |
1242 | adap->fe->ops.tuner_ops.set_params = dib807x_set_param_override; | 1242 | adap->fe[0]->ops.tuner_ops.set_params = dib807x_set_param_override; |
1243 | return 0; | 1243 | return 0; |
1244 | } | 1244 | } |
1245 | 1245 | ||
1246 | static int stk80xx_pid_filter(struct dvb_usb_adapter *adapter, int index, | 1246 | static int stk80xx_pid_filter(struct dvb_usb_adapter *adapter, int index, |
1247 | u16 pid, int onoff) | 1247 | u16 pid, int onoff) |
1248 | { | 1248 | { |
1249 | return dib8000_pid_filter(adapter->fe, index, pid, onoff); | 1249 | return dib8000_pid_filter(adapter->fe[0], index, pid, onoff); |
1250 | } | 1250 | } |
1251 | 1251 | ||
1252 | static int stk80xx_pid_filter_ctrl(struct dvb_usb_adapter *adapter, | 1252 | static int stk80xx_pid_filter_ctrl(struct dvb_usb_adapter *adapter, |
1253 | int onoff) | 1253 | int onoff) |
1254 | { | 1254 | { |
1255 | return dib8000_pid_filter_ctrl(adapter->fe, onoff); | 1255 | return dib8000_pid_filter_ctrl(adapter->fe[0], onoff); |
1256 | } | 1256 | } |
1257 | 1257 | ||
1258 | /* STK807x */ | 1258 | /* STK807x */ |
@@ -1276,10 +1276,10 @@ static int stk807x_frontend_attach(struct dvb_usb_adapter *adap) | |||
1276 | dib8000_i2c_enumeration(&adap->dev->i2c_adap, 1, 18, | 1276 | dib8000_i2c_enumeration(&adap->dev->i2c_adap, 1, 18, |
1277 | 0x80); | 1277 | 0x80); |
1278 | 1278 | ||
1279 | adap->fe = dvb_attach(dib8000_attach, &adap->dev->i2c_adap, 0x80, | 1279 | adap->fe[0] = dvb_attach(dib8000_attach, &adap->dev->i2c_adap, 0x80, |
1280 | &dib807x_dib8000_config[0]); | 1280 | &dib807x_dib8000_config[0]); |
1281 | 1281 | ||
1282 | return adap->fe == NULL ? -ENODEV : 0; | 1282 | return adap->fe[0] == NULL ? -ENODEV : 0; |
1283 | } | 1283 | } |
1284 | 1284 | ||
1285 | /* STK807xPVR */ | 1285 | /* STK807xPVR */ |
@@ -1305,10 +1305,10 @@ static int stk807xpvr_frontend_attach0(struct dvb_usb_adapter *adap) | |||
1305 | /* initialize IC 0 */ | 1305 | /* initialize IC 0 */ |
1306 | dib8000_i2c_enumeration(&adap->dev->i2c_adap, 1, 0x22, 0x80); | 1306 | dib8000_i2c_enumeration(&adap->dev->i2c_adap, 1, 0x22, 0x80); |
1307 | 1307 | ||
1308 | adap->fe = dvb_attach(dib8000_attach, &adap->dev->i2c_adap, 0x80, | 1308 | adap->fe[0] = dvb_attach(dib8000_attach, &adap->dev->i2c_adap, 0x80, |
1309 | &dib807x_dib8000_config[0]); | 1309 | &dib807x_dib8000_config[0]); |
1310 | 1310 | ||
1311 | return adap->fe == NULL ? -ENODEV : 0; | 1311 | return adap->fe[0] == NULL ? -ENODEV : 0; |
1312 | } | 1312 | } |
1313 | 1313 | ||
1314 | static int stk807xpvr_frontend_attach1(struct dvb_usb_adapter *adap) | 1314 | static int stk807xpvr_frontend_attach1(struct dvb_usb_adapter *adap) |
@@ -1316,10 +1316,10 @@ static int stk807xpvr_frontend_attach1(struct dvb_usb_adapter *adap) | |||
1316 | /* initialize IC 1 */ | 1316 | /* initialize IC 1 */ |
1317 | dib8000_i2c_enumeration(&adap->dev->i2c_adap, 1, 0x12, 0x82); | 1317 | dib8000_i2c_enumeration(&adap->dev->i2c_adap, 1, 0x12, 0x82); |
1318 | 1318 | ||
1319 | adap->fe = dvb_attach(dib8000_attach, &adap->dev->i2c_adap, 0x82, | 1319 | adap->fe[0] = dvb_attach(dib8000_attach, &adap->dev->i2c_adap, 0x82, |
1320 | &dib807x_dib8000_config[1]); | 1320 | &dib807x_dib8000_config[1]); |
1321 | 1321 | ||
1322 | return adap->fe == NULL ? -ENODEV : 0; | 1322 | return adap->fe[0] == NULL ? -ENODEV : 0; |
1323 | } | 1323 | } |
1324 | 1324 | ||
1325 | /* STK8096GP */ | 1325 | /* STK8096GP */ |
@@ -1546,13 +1546,13 @@ static int dib8096_set_param_override(struct dvb_frontend *fe, | |||
1546 | static int dib809x_tuner_attach(struct dvb_usb_adapter *adap) | 1546 | static int dib809x_tuner_attach(struct dvb_usb_adapter *adap) |
1547 | { | 1547 | { |
1548 | struct dib0700_adapter_state *st = adap->priv; | 1548 | struct dib0700_adapter_state *st = adap->priv; |
1549 | struct i2c_adapter *tun_i2c = dib8000_get_i2c_master(adap->fe, DIBX000_I2C_INTERFACE_TUNER, 1); | 1549 | struct i2c_adapter *tun_i2c = dib8000_get_i2c_master(adap->fe[0], DIBX000_I2C_INTERFACE_TUNER, 1); |
1550 | 1550 | ||
1551 | if (dvb_attach(dib0090_register, adap->fe, tun_i2c, &dib809x_dib0090_config) == NULL) | 1551 | if (dvb_attach(dib0090_register, adap->fe[0], tun_i2c, &dib809x_dib0090_config) == NULL) |
1552 | return -ENODEV; | 1552 | return -ENODEV; |
1553 | 1553 | ||
1554 | st->set_param_save = adap->fe->ops.tuner_ops.set_params; | 1554 | st->set_param_save = adap->fe[0]->ops.tuner_ops.set_params; |
1555 | adap->fe->ops.tuner_ops.set_params = dib8096_set_param_override; | 1555 | adap->fe[0]->ops.tuner_ops.set_params = dib8096_set_param_override; |
1556 | return 0; | 1556 | return 0; |
1557 | } | 1557 | } |
1558 | 1558 | ||
@@ -1575,30 +1575,30 @@ static int stk809x_frontend_attach(struct dvb_usb_adapter *adap) | |||
1575 | 1575 | ||
1576 | dib8000_i2c_enumeration(&adap->dev->i2c_adap, 1, 18, 0x80); | 1576 | dib8000_i2c_enumeration(&adap->dev->i2c_adap, 1, 18, 0x80); |
1577 | 1577 | ||
1578 | adap->fe = dvb_attach(dib8000_attach, &adap->dev->i2c_adap, 0x80, &dib809x_dib8000_config[0]); | 1578 | adap->fe[0] = dvb_attach(dib8000_attach, &adap->dev->i2c_adap, 0x80, &dib809x_dib8000_config[0]); |
1579 | 1579 | ||
1580 | return adap->fe == NULL ? -ENODEV : 0; | 1580 | return adap->fe[0] == NULL ? -ENODEV : 0; |
1581 | } | 1581 | } |
1582 | 1582 | ||
1583 | static int nim8096md_tuner_attach(struct dvb_usb_adapter *adap) | 1583 | static int nim8096md_tuner_attach(struct dvb_usb_adapter *adap) |
1584 | { | 1584 | { |
1585 | struct dib0700_adapter_state *st = adap->priv; | 1585 | struct dib0700_adapter_state *st = adap->priv; |
1586 | struct i2c_adapter *tun_i2c; | 1586 | struct i2c_adapter *tun_i2c; |
1587 | struct dvb_frontend *fe_slave = dib8000_get_slave_frontend(adap->fe, 1); | 1587 | struct dvb_frontend *fe_slave = dib8000_get_slave_frontend(adap->fe[0], 1); |
1588 | 1588 | ||
1589 | if (fe_slave) { | 1589 | if (fe_slave) { |
1590 | tun_i2c = dib8000_get_i2c_master(fe_slave, DIBX000_I2C_INTERFACE_TUNER, 1); | 1590 | tun_i2c = dib8000_get_i2c_master(fe_slave, DIBX000_I2C_INTERFACE_TUNER, 1); |
1591 | if (dvb_attach(dib0090_register, fe_slave, tun_i2c, &dib809x_dib0090_config) == NULL) | 1591 | if (dvb_attach(dib0090_register, fe_slave, tun_i2c, &dib809x_dib0090_config) == NULL) |
1592 | return -ENODEV; | 1592 | return -ENODEV; |
1593 | fe_slave->dvb = adap->fe->dvb; | 1593 | fe_slave->dvb = adap->fe[0]->dvb; |
1594 | fe_slave->ops.tuner_ops.set_params = dib8096_set_param_override; | 1594 | fe_slave->ops.tuner_ops.set_params = dib8096_set_param_override; |
1595 | } | 1595 | } |
1596 | tun_i2c = dib8000_get_i2c_master(adap->fe, DIBX000_I2C_INTERFACE_TUNER, 1); | 1596 | tun_i2c = dib8000_get_i2c_master(adap->fe[0], DIBX000_I2C_INTERFACE_TUNER, 1); |
1597 | if (dvb_attach(dib0090_register, adap->fe, tun_i2c, &dib809x_dib0090_config) == NULL) | 1597 | if (dvb_attach(dib0090_register, adap->fe[0], tun_i2c, &dib809x_dib0090_config) == NULL) |
1598 | return -ENODEV; | 1598 | return -ENODEV; |
1599 | 1599 | ||
1600 | st->set_param_save = adap->fe->ops.tuner_ops.set_params; | 1600 | st->set_param_save = adap->fe[0]->ops.tuner_ops.set_params; |
1601 | adap->fe->ops.tuner_ops.set_params = dib8096_set_param_override; | 1601 | adap->fe[0]->ops.tuner_ops.set_params = dib8096_set_param_override; |
1602 | 1602 | ||
1603 | return 0; | 1603 | return 0; |
1604 | } | 1604 | } |
@@ -1626,12 +1626,12 @@ static int nim8096md_frontend_attach(struct dvb_usb_adapter *adap) | |||
1626 | 1626 | ||
1627 | dib8000_i2c_enumeration(&adap->dev->i2c_adap, 2, 18, 0x80); | 1627 | dib8000_i2c_enumeration(&adap->dev->i2c_adap, 2, 18, 0x80); |
1628 | 1628 | ||
1629 | adap->fe = dvb_attach(dib8000_attach, &adap->dev->i2c_adap, 0x80, &dib809x_dib8000_config[0]); | 1629 | adap->fe[0] = dvb_attach(dib8000_attach, &adap->dev->i2c_adap, 0x80, &dib809x_dib8000_config[0]); |
1630 | if (adap->fe == NULL) | 1630 | if (adap->fe[0] == NULL) |
1631 | return -ENODEV; | 1631 | return -ENODEV; |
1632 | 1632 | ||
1633 | fe_slave = dvb_attach(dib8000_attach, &adap->dev->i2c_adap, 0x82, &dib809x_dib8000_config[1]); | 1633 | fe_slave = dvb_attach(dib8000_attach, &adap->dev->i2c_adap, 0x82, &dib809x_dib8000_config[1]); |
1634 | dib8000_set_slave_frontend(adap->fe, fe_slave); | 1634 | dib8000_set_slave_frontend(adap->fe[0], fe_slave); |
1635 | 1635 | ||
1636 | return fe_slave == NULL ? -ENODEV : 0; | 1636 | return fe_slave == NULL ? -ENODEV : 0; |
1637 | } | 1637 | } |
@@ -1639,12 +1639,12 @@ static int nim8096md_frontend_attach(struct dvb_usb_adapter *adap) | |||
1639 | /* STK9090M */ | 1639 | /* STK9090M */ |
1640 | static int dib90x0_pid_filter(struct dvb_usb_adapter *adapter, int index, u16 pid, int onoff) | 1640 | static int dib90x0_pid_filter(struct dvb_usb_adapter *adapter, int index, u16 pid, int onoff) |
1641 | { | 1641 | { |
1642 | return dib9000_fw_pid_filter(adapter->fe, index, pid, onoff); | 1642 | return dib9000_fw_pid_filter(adapter->fe[0], index, pid, onoff); |
1643 | } | 1643 | } |
1644 | 1644 | ||
1645 | static int dib90x0_pid_filter_ctrl(struct dvb_usb_adapter *adapter, int onoff) | 1645 | static int dib90x0_pid_filter_ctrl(struct dvb_usb_adapter *adapter, int onoff) |
1646 | { | 1646 | { |
1647 | return dib9000_fw_pid_filter_ctrl(adapter->fe, onoff); | 1647 | return dib9000_fw_pid_filter_ctrl(adapter->fe[0], onoff); |
1648 | } | 1648 | } |
1649 | 1649 | ||
1650 | static int dib90x0_tuner_reset(struct dvb_frontend *fe, int onoff) | 1650 | static int dib90x0_tuner_reset(struct dvb_frontend *fe, int onoff) |
@@ -1856,15 +1856,15 @@ static int stk9090m_frontend_attach(struct dvb_usb_adapter *adap) | |||
1856 | stk9090m_config.microcode_B_fe_size = state->frontend_firmware->size; | 1856 | stk9090m_config.microcode_B_fe_size = state->frontend_firmware->size; |
1857 | stk9090m_config.microcode_B_fe_buffer = state->frontend_firmware->data; | 1857 | stk9090m_config.microcode_B_fe_buffer = state->frontend_firmware->data; |
1858 | 1858 | ||
1859 | adap->fe = dvb_attach(dib9000_attach, &adap->dev->i2c_adap, 0x80, &stk9090m_config); | 1859 | adap->fe[0] = dvb_attach(dib9000_attach, &adap->dev->i2c_adap, 0x80, &stk9090m_config); |
1860 | 1860 | ||
1861 | return adap->fe == NULL ? -ENODEV : 0; | 1861 | return adap->fe[0] == NULL ? -ENODEV : 0; |
1862 | } | 1862 | } |
1863 | 1863 | ||
1864 | static int dib9090_tuner_attach(struct dvb_usb_adapter *adap) | 1864 | static int dib9090_tuner_attach(struct dvb_usb_adapter *adap) |
1865 | { | 1865 | { |
1866 | struct dib0700_adapter_state *state = adap->priv; | 1866 | struct dib0700_adapter_state *state = adap->priv; |
1867 | struct i2c_adapter *i2c = dib9000_get_tuner_interface(adap->fe); | 1867 | struct i2c_adapter *i2c = dib9000_get_tuner_interface(adap->fe[0]); |
1868 | u16 data_dib190[10] = { | 1868 | u16 data_dib190[10] = { |
1869 | 1, 0x1374, | 1869 | 1, 0x1374, |
1870 | 2, 0x01a2, | 1870 | 2, 0x01a2, |
@@ -1873,13 +1873,13 @@ static int dib9090_tuner_attach(struct dvb_usb_adapter *adap) | |||
1873 | 8, 0x0486, | 1873 | 8, 0x0486, |
1874 | }; | 1874 | }; |
1875 | 1875 | ||
1876 | if (dvb_attach(dib0090_fw_register, adap->fe, i2c, &dib9090_dib0090_config) == NULL) | 1876 | if (dvb_attach(dib0090_fw_register, adap->fe[0], i2c, &dib9090_dib0090_config) == NULL) |
1877 | return -ENODEV; | 1877 | return -ENODEV; |
1878 | i2c = dib9000_get_i2c_master(adap->fe, DIBX000_I2C_INTERFACE_GPIO_1_2, 0); | 1878 | i2c = dib9000_get_i2c_master(adap->fe[0], DIBX000_I2C_INTERFACE_GPIO_1_2, 0); |
1879 | if (dib01x0_pmu_update(i2c, data_dib190, 10) != 0) | 1879 | if (dib01x0_pmu_update(i2c, data_dib190, 10) != 0) |
1880 | return -ENODEV; | 1880 | return -ENODEV; |
1881 | dib0700_set_i2c_speed(adap->dev, 2000); | 1881 | dib0700_set_i2c_speed(adap->dev, 2000); |
1882 | if (dib9000_firmware_post_pll_init(adap->fe) < 0) | 1882 | if (dib9000_firmware_post_pll_init(adap->fe[0]) < 0) |
1883 | return -ENODEV; | 1883 | return -ENODEV; |
1884 | release_firmware(state->frontend_firmware); | 1884 | release_firmware(state->frontend_firmware); |
1885 | return 0; | 1885 | return 0; |
@@ -1925,16 +1925,16 @@ static int nim9090md_frontend_attach(struct dvb_usb_adapter *adap) | |||
1925 | nim9090md_config[1].microcode_B_fe_buffer = state->frontend_firmware->data; | 1925 | nim9090md_config[1].microcode_B_fe_buffer = state->frontend_firmware->data; |
1926 | 1926 | ||
1927 | dib9000_i2c_enumeration(&adap->dev->i2c_adap, 1, 0x20, 0x80); | 1927 | dib9000_i2c_enumeration(&adap->dev->i2c_adap, 1, 0x20, 0x80); |
1928 | adap->fe = dvb_attach(dib9000_attach, &adap->dev->i2c_adap, 0x80, &nim9090md_config[0]); | 1928 | adap->fe[0] = dvb_attach(dib9000_attach, &adap->dev->i2c_adap, 0x80, &nim9090md_config[0]); |
1929 | 1929 | ||
1930 | if (adap->fe == NULL) | 1930 | if (adap->fe[0] == NULL) |
1931 | return -ENODEV; | 1931 | return -ENODEV; |
1932 | 1932 | ||
1933 | i2c = dib9000_get_i2c_master(adap->fe, DIBX000_I2C_INTERFACE_GPIO_3_4, 0); | 1933 | i2c = dib9000_get_i2c_master(adap->fe[0], DIBX000_I2C_INTERFACE_GPIO_3_4, 0); |
1934 | dib9000_i2c_enumeration(i2c, 1, 0x12, 0x82); | 1934 | dib9000_i2c_enumeration(i2c, 1, 0x12, 0x82); |
1935 | 1935 | ||
1936 | fe_slave = dvb_attach(dib9000_attach, i2c, 0x82, &nim9090md_config[1]); | 1936 | fe_slave = dvb_attach(dib9000_attach, i2c, 0x82, &nim9090md_config[1]); |
1937 | dib9000_set_slave_frontend(adap->fe, fe_slave); | 1937 | dib9000_set_slave_frontend(adap->fe[0], fe_slave); |
1938 | 1938 | ||
1939 | return fe_slave == NULL ? -ENODEV : 0; | 1939 | return fe_slave == NULL ? -ENODEV : 0; |
1940 | } | 1940 | } |
@@ -1951,26 +1951,26 @@ static int nim9090md_tuner_attach(struct dvb_usb_adapter *adap) | |||
1951 | 0, 0x00ef, | 1951 | 0, 0x00ef, |
1952 | 8, 0x0406, | 1952 | 8, 0x0406, |
1953 | }; | 1953 | }; |
1954 | i2c = dib9000_get_tuner_interface(adap->fe); | 1954 | i2c = dib9000_get_tuner_interface(adap->fe[0]); |
1955 | if (dvb_attach(dib0090_fw_register, adap->fe, i2c, &nim9090md_dib0090_config[0]) == NULL) | 1955 | if (dvb_attach(dib0090_fw_register, adap->fe[0], i2c, &nim9090md_dib0090_config[0]) == NULL) |
1956 | return -ENODEV; | 1956 | return -ENODEV; |
1957 | i2c = dib9000_get_i2c_master(adap->fe, DIBX000_I2C_INTERFACE_GPIO_1_2, 0); | 1957 | i2c = dib9000_get_i2c_master(adap->fe[0], DIBX000_I2C_INTERFACE_GPIO_1_2, 0); |
1958 | if (dib01x0_pmu_update(i2c, data_dib190, 10) < 0) | 1958 | if (dib01x0_pmu_update(i2c, data_dib190, 10) < 0) |
1959 | return -ENODEV; | 1959 | return -ENODEV; |
1960 | dib0700_set_i2c_speed(adap->dev, 2000); | 1960 | dib0700_set_i2c_speed(adap->dev, 2000); |
1961 | if (dib9000_firmware_post_pll_init(adap->fe) < 0) | 1961 | if (dib9000_firmware_post_pll_init(adap->fe[0]) < 0) |
1962 | return -ENODEV; | 1962 | return -ENODEV; |
1963 | 1963 | ||
1964 | fe_slave = dib9000_get_slave_frontend(adap->fe, 1); | 1964 | fe_slave = dib9000_get_slave_frontend(adap->fe[0], 1); |
1965 | if (fe_slave != NULL) { | 1965 | if (fe_slave != NULL) { |
1966 | i2c = dib9000_get_component_bus_interface(adap->fe); | 1966 | i2c = dib9000_get_component_bus_interface(adap->fe[0]); |
1967 | dib9000_set_i2c_adapter(fe_slave, i2c); | 1967 | dib9000_set_i2c_adapter(fe_slave, i2c); |
1968 | 1968 | ||
1969 | i2c = dib9000_get_tuner_interface(fe_slave); | 1969 | i2c = dib9000_get_tuner_interface(fe_slave); |
1970 | if (dvb_attach(dib0090_fw_register, fe_slave, i2c, &nim9090md_dib0090_config[1]) == NULL) | 1970 | if (dvb_attach(dib0090_fw_register, fe_slave, i2c, &nim9090md_dib0090_config[1]) == NULL) |
1971 | return -ENODEV; | 1971 | return -ENODEV; |
1972 | fe_slave->dvb = adap->fe->dvb; | 1972 | fe_slave->dvb = adap->fe[0]->dvb; |
1973 | dib9000_fw_set_component_bus_speed(adap->fe, 2000); | 1973 | dib9000_fw_set_component_bus_speed(adap->fe[0], 2000); |
1974 | if (dib9000_firmware_post_pll_init(fe_slave) < 0) | 1974 | if (dib9000_firmware_post_pll_init(fe_slave) < 0) |
1975 | return -ENODEV; | 1975 | return -ENODEV; |
1976 | } | 1976 | } |
@@ -2393,23 +2393,23 @@ static int nim7090_frontend_attach(struct dvb_usb_adapter *adap) | |||
2393 | err("%s: dib7000p_i2c_enumeration failed. Cannot continue\n", __func__); | 2393 | err("%s: dib7000p_i2c_enumeration failed. Cannot continue\n", __func__); |
2394 | return -ENODEV; | 2394 | return -ENODEV; |
2395 | } | 2395 | } |
2396 | adap->fe = dvb_attach(dib7000p_attach, &adap->dev->i2c_adap, 0x80, &nim7090_dib7000p_config); | 2396 | adap->fe[0] = dvb_attach(dib7000p_attach, &adap->dev->i2c_adap, 0x80, &nim7090_dib7000p_config); |
2397 | 2397 | ||
2398 | return adap->fe == NULL ? -ENODEV : 0; | 2398 | return adap->fe[0] == NULL ? -ENODEV : 0; |
2399 | } | 2399 | } |
2400 | 2400 | ||
2401 | static int nim7090_tuner_attach(struct dvb_usb_adapter *adap) | 2401 | static int nim7090_tuner_attach(struct dvb_usb_adapter *adap) |
2402 | { | 2402 | { |
2403 | struct dib0700_adapter_state *st = adap->priv; | 2403 | struct dib0700_adapter_state *st = adap->priv; |
2404 | struct i2c_adapter *tun_i2c = dib7090_get_i2c_tuner(adap->fe); | 2404 | struct i2c_adapter *tun_i2c = dib7090_get_i2c_tuner(adap->fe[0]); |
2405 | 2405 | ||
2406 | if (dvb_attach(dib0090_register, adap->fe, tun_i2c, &nim7090_dib0090_config) == NULL) | 2406 | if (dvb_attach(dib0090_register, adap->fe[0], tun_i2c, &nim7090_dib0090_config) == NULL) |
2407 | return -ENODEV; | 2407 | return -ENODEV; |
2408 | 2408 | ||
2409 | dib7000p_set_gpio(adap->fe, 8, 0, 1); | 2409 | dib7000p_set_gpio(adap->fe[0], 8, 0, 1); |
2410 | 2410 | ||
2411 | st->set_param_save = adap->fe->ops.tuner_ops.set_params; | 2411 | st->set_param_save = adap->fe[0]->ops.tuner_ops.set_params; |
2412 | adap->fe->ops.tuner_ops.set_params = dib7090_agc_startup; | 2412 | adap->fe[0]->ops.tuner_ops.set_params = dib7090_agc_startup; |
2413 | return 0; | 2413 | return 0; |
2414 | } | 2414 | } |
2415 | 2415 | ||
@@ -2439,11 +2439,11 @@ static int tfe7090pvr_frontend0_attach(struct dvb_usb_adapter *adap) | |||
2439 | } | 2439 | } |
2440 | 2440 | ||
2441 | dib0700_set_i2c_speed(adap->dev, 340); | 2441 | dib0700_set_i2c_speed(adap->dev, 340); |
2442 | adap->fe = dvb_attach(dib7000p_attach, &adap->dev->i2c_adap, 0x90, &tfe7090pvr_dib7000p_config[0]); | 2442 | adap->fe[0] = dvb_attach(dib7000p_attach, &adap->dev->i2c_adap, 0x90, &tfe7090pvr_dib7000p_config[0]); |
2443 | if (adap->fe == NULL) | 2443 | if (adap->fe[0] == NULL) |
2444 | return -ENODEV; | 2444 | return -ENODEV; |
2445 | 2445 | ||
2446 | dib7090_slave_reset(adap->fe); | 2446 | dib7090_slave_reset(adap->fe[0]); |
2447 | 2447 | ||
2448 | return 0; | 2448 | return 0; |
2449 | } | 2449 | } |
@@ -2452,50 +2452,50 @@ static int tfe7090pvr_frontend1_attach(struct dvb_usb_adapter *adap) | |||
2452 | { | 2452 | { |
2453 | struct i2c_adapter *i2c; | 2453 | struct i2c_adapter *i2c; |
2454 | 2454 | ||
2455 | if (adap->dev->adapter[0].fe == NULL) { | 2455 | if (adap->dev->adapter[0].fe[0] == NULL) { |
2456 | err("the master dib7090 has to be initialized first"); | 2456 | err("the master dib7090 has to be initialized first"); |
2457 | return -ENODEV; /* the master device has not been initialized */ | 2457 | return -ENODEV; /* the master device has not been initialized */ |
2458 | } | 2458 | } |
2459 | 2459 | ||
2460 | i2c = dib7000p_get_i2c_master(adap->dev->adapter[0].fe, DIBX000_I2C_INTERFACE_GPIO_6_7, 1); | 2460 | i2c = dib7000p_get_i2c_master(adap->dev->adapter[0].fe[0], DIBX000_I2C_INTERFACE_GPIO_6_7, 1); |
2461 | if (dib7000p_i2c_enumeration(i2c, 1, 0x10, &tfe7090pvr_dib7000p_config[1]) != 0) { | 2461 | if (dib7000p_i2c_enumeration(i2c, 1, 0x10, &tfe7090pvr_dib7000p_config[1]) != 0) { |
2462 | err("%s: dib7000p_i2c_enumeration failed. Cannot continue\n", __func__); | 2462 | err("%s: dib7000p_i2c_enumeration failed. Cannot continue\n", __func__); |
2463 | return -ENODEV; | 2463 | return -ENODEV; |
2464 | } | 2464 | } |
2465 | 2465 | ||
2466 | adap->fe = dvb_attach(dib7000p_attach, i2c, 0x92, &tfe7090pvr_dib7000p_config[1]); | 2466 | adap->fe[0] = dvb_attach(dib7000p_attach, i2c, 0x92, &tfe7090pvr_dib7000p_config[1]); |
2467 | dib0700_set_i2c_speed(adap->dev, 200); | 2467 | dib0700_set_i2c_speed(adap->dev, 200); |
2468 | 2468 | ||
2469 | return adap->fe == NULL ? -ENODEV : 0; | 2469 | return adap->fe[0] == NULL ? -ENODEV : 0; |
2470 | } | 2470 | } |
2471 | 2471 | ||
2472 | static int tfe7090pvr_tuner0_attach(struct dvb_usb_adapter *adap) | 2472 | static int tfe7090pvr_tuner0_attach(struct dvb_usb_adapter *adap) |
2473 | { | 2473 | { |
2474 | struct dib0700_adapter_state *st = adap->priv; | 2474 | struct dib0700_adapter_state *st = adap->priv; |
2475 | struct i2c_adapter *tun_i2c = dib7090_get_i2c_tuner(adap->fe); | 2475 | struct i2c_adapter *tun_i2c = dib7090_get_i2c_tuner(adap->fe[0]); |
2476 | 2476 | ||
2477 | if (dvb_attach(dib0090_register, adap->fe, tun_i2c, &tfe7090pvr_dib0090_config[0]) == NULL) | 2477 | if (dvb_attach(dib0090_register, adap->fe[0], tun_i2c, &tfe7090pvr_dib0090_config[0]) == NULL) |
2478 | return -ENODEV; | 2478 | return -ENODEV; |
2479 | 2479 | ||
2480 | dib7000p_set_gpio(adap->fe, 8, 0, 1); | 2480 | dib7000p_set_gpio(adap->fe[0], 8, 0, 1); |
2481 | 2481 | ||
2482 | st->set_param_save = adap->fe->ops.tuner_ops.set_params; | 2482 | st->set_param_save = adap->fe[0]->ops.tuner_ops.set_params; |
2483 | adap->fe->ops.tuner_ops.set_params = dib7090_agc_startup; | 2483 | adap->fe[0]->ops.tuner_ops.set_params = dib7090_agc_startup; |
2484 | return 0; | 2484 | return 0; |
2485 | } | 2485 | } |
2486 | 2486 | ||
2487 | static int tfe7090pvr_tuner1_attach(struct dvb_usb_adapter *adap) | 2487 | static int tfe7090pvr_tuner1_attach(struct dvb_usb_adapter *adap) |
2488 | { | 2488 | { |
2489 | struct dib0700_adapter_state *st = adap->priv; | 2489 | struct dib0700_adapter_state *st = adap->priv; |
2490 | struct i2c_adapter *tun_i2c = dib7090_get_i2c_tuner(adap->fe); | 2490 | struct i2c_adapter *tun_i2c = dib7090_get_i2c_tuner(adap->fe[0]); |
2491 | 2491 | ||
2492 | if (dvb_attach(dib0090_register, adap->fe, tun_i2c, &tfe7090pvr_dib0090_config[1]) == NULL) | 2492 | if (dvb_attach(dib0090_register, adap->fe[0], tun_i2c, &tfe7090pvr_dib0090_config[1]) == NULL) |
2493 | return -ENODEV; | 2493 | return -ENODEV; |
2494 | 2494 | ||
2495 | dib7000p_set_gpio(adap->fe, 8, 0, 1); | 2495 | dib7000p_set_gpio(adap->fe[0], 8, 0, 1); |
2496 | 2496 | ||
2497 | st->set_param_save = adap->fe->ops.tuner_ops.set_params; | 2497 | st->set_param_save = adap->fe[0]->ops.tuner_ops.set_params; |
2498 | adap->fe->ops.tuner_ops.set_params = dib7090_agc_startup; | 2498 | adap->fe[0]->ops.tuner_ops.set_params = dib7090_agc_startup; |
2499 | return 0; | 2499 | return 0; |
2500 | } | 2500 | } |
2501 | 2501 | ||
@@ -2555,14 +2555,14 @@ static int stk7070pd_frontend_attach0(struct dvb_usb_adapter *adap) | |||
2555 | return -ENODEV; | 2555 | return -ENODEV; |
2556 | } | 2556 | } |
2557 | 2557 | ||
2558 | adap->fe = dvb_attach(dib7000p_attach, &adap->dev->i2c_adap, 0x80, &stk7070pd_dib7000p_config[0]); | 2558 | adap->fe[0] = dvb_attach(dib7000p_attach, &adap->dev->i2c_adap, 0x80, &stk7070pd_dib7000p_config[0]); |
2559 | return adap->fe == NULL ? -ENODEV : 0; | 2559 | return adap->fe[0] == NULL ? -ENODEV : 0; |
2560 | } | 2560 | } |
2561 | 2561 | ||
2562 | static int stk7070pd_frontend_attach1(struct dvb_usb_adapter *adap) | 2562 | static int stk7070pd_frontend_attach1(struct dvb_usb_adapter *adap) |
2563 | { | 2563 | { |
2564 | adap->fe = dvb_attach(dib7000p_attach, &adap->dev->i2c_adap, 0x82, &stk7070pd_dib7000p_config[1]); | 2564 | adap->fe[0] = dvb_attach(dib7000p_attach, &adap->dev->i2c_adap, 0x82, &stk7070pd_dib7000p_config[1]); |
2565 | return adap->fe == NULL ? -ENODEV : 0; | 2565 | return adap->fe[0] == NULL ? -ENODEV : 0; |
2566 | } | 2566 | } |
2567 | 2567 | ||
2568 | /* S5H1411 */ | 2568 | /* S5H1411 */ |
@@ -2617,9 +2617,9 @@ static int s5h1411_frontend_attach(struct dvb_usb_adapter *adap) | |||
2617 | dib0700_set_gpio(adap->dev, GPIO2, GPIO_OUT, 1); | 2617 | dib0700_set_gpio(adap->dev, GPIO2, GPIO_OUT, 1); |
2618 | 2618 | ||
2619 | /* GPIOs are initialized, do the attach */ | 2619 | /* GPIOs are initialized, do the attach */ |
2620 | adap->fe = dvb_attach(s5h1411_attach, &pinnacle_801e_config, | 2620 | adap->fe[0] = dvb_attach(s5h1411_attach, &pinnacle_801e_config, |
2621 | &adap->dev->i2c_adap); | 2621 | &adap->dev->i2c_adap); |
2622 | return adap->fe == NULL ? -ENODEV : 0; | 2622 | return adap->fe[0] == NULL ? -ENODEV : 0; |
2623 | } | 2623 | } |
2624 | 2624 | ||
2625 | static int dib0700_xc5000_tuner_callback(void *priv, int component, | 2625 | static int dib0700_xc5000_tuner_callback(void *priv, int component, |
@@ -2649,9 +2649,9 @@ static struct xc5000_config s5h1411_xc5000_tunerconfig = { | |||
2649 | static int xc5000_tuner_attach(struct dvb_usb_adapter *adap) | 2649 | static int xc5000_tuner_attach(struct dvb_usb_adapter *adap) |
2650 | { | 2650 | { |
2651 | /* FIXME: generalize & move to common area */ | 2651 | /* FIXME: generalize & move to common area */ |
2652 | adap->fe->callback = dib0700_xc5000_tuner_callback; | 2652 | adap->fe[0]->callback = dib0700_xc5000_tuner_callback; |
2653 | 2653 | ||
2654 | return dvb_attach(xc5000_attach, adap->fe, &adap->dev->i2c_adap, | 2654 | return dvb_attach(xc5000_attach, adap->fe[0], &adap->dev->i2c_adap, |
2655 | &s5h1411_xc5000_tunerconfig) | 2655 | &s5h1411_xc5000_tunerconfig) |
2656 | == NULL ? -ENODEV : 0; | 2656 | == NULL ? -ENODEV : 0; |
2657 | } | 2657 | } |
@@ -2663,9 +2663,9 @@ static int dib0700_xc4000_tuner_callback(void *priv, int component, | |||
2663 | 2663 | ||
2664 | if (command == XC4000_TUNER_RESET) { | 2664 | if (command == XC4000_TUNER_RESET) { |
2665 | /* Reset the tuner */ | 2665 | /* Reset the tuner */ |
2666 | dib7000p_set_gpio(adap->fe, 8, 0, 0); | 2666 | dib7000p_set_gpio(adap->fe[0], 8, 0, 0); |
2667 | msleep(10); | 2667 | msleep(10); |
2668 | dib7000p_set_gpio(adap->fe, 8, 0, 1); | 2668 | dib7000p_set_gpio(adap->fe[0], 8, 0, 1); |
2669 | } else { | 2669 | } else { |
2670 | err("xc4000: unknown tuner callback command: %d\n", command); | 2670 | err("xc4000: unknown tuner callback command: %d\n", command); |
2671 | return -EINVAL; | 2671 | return -EINVAL; |
@@ -2771,11 +2771,11 @@ static int pctv340e_frontend_attach(struct dvb_usb_adapter *adap) | |||
2771 | return -ENODEV; | 2771 | return -ENODEV; |
2772 | } | 2772 | } |
2773 | 2773 | ||
2774 | adap->fe = dvb_attach(dib7000p_attach, &adap->dev->i2c_adap, 0x12, | 2774 | adap->fe[0] = dvb_attach(dib7000p_attach, &adap->dev->i2c_adap, 0x12, |
2775 | &pctv_340e_config); | 2775 | &pctv_340e_config); |
2776 | st->is_dib7000pc = 1; | 2776 | st->is_dib7000pc = 1; |
2777 | 2777 | ||
2778 | return adap->fe == NULL ? -ENODEV : 0; | 2778 | return adap->fe[0] == NULL ? -ENODEV : 0; |
2779 | } | 2779 | } |
2780 | 2780 | ||
2781 | static struct xc4000_config dib7000p_xc4000_tunerconfig = { | 2781 | static struct xc4000_config dib7000p_xc4000_tunerconfig = { |
@@ -2791,7 +2791,7 @@ static int xc4000_tuner_attach(struct dvb_usb_adapter *adap) | |||
2791 | struct i2c_adapter *tun_i2c; | 2791 | struct i2c_adapter *tun_i2c; |
2792 | 2792 | ||
2793 | /* The xc4000 is not on the main i2c bus */ | 2793 | /* The xc4000 is not on the main i2c bus */ |
2794 | tun_i2c = dib7000p_get_i2c_master(adap->fe, | 2794 | tun_i2c = dib7000p_get_i2c_master(adap->fe[0], |
2795 | DIBX000_I2C_INTERFACE_TUNER, 1); | 2795 | DIBX000_I2C_INTERFACE_TUNER, 1); |
2796 | if (tun_i2c == NULL) { | 2796 | if (tun_i2c == NULL) { |
2797 | printk(KERN_ERR "Could not reach tuner i2c bus\n"); | 2797 | printk(KERN_ERR "Could not reach tuner i2c bus\n"); |
@@ -2799,9 +2799,9 @@ static int xc4000_tuner_attach(struct dvb_usb_adapter *adap) | |||
2799 | } | 2799 | } |
2800 | 2800 | ||
2801 | /* Setup the reset callback */ | 2801 | /* Setup the reset callback */ |
2802 | adap->fe->callback = dib0700_xc4000_tuner_callback; | 2802 | adap->fe[0]->callback = dib0700_xc4000_tuner_callback; |
2803 | 2803 | ||
2804 | return dvb_attach(xc4000_attach, adap->fe, tun_i2c, | 2804 | return dvb_attach(xc4000_attach, adap->fe[0], tun_i2c, |
2805 | &dib7000p_xc4000_tunerconfig) | 2805 | &dib7000p_xc4000_tunerconfig) |
2806 | == NULL ? -ENODEV : 0; | 2806 | == NULL ? -ENODEV : 0; |
2807 | } | 2807 | } |
@@ -2857,16 +2857,16 @@ static int lgdt3305_frontend_attach(struct dvb_usb_adapter *adap) | |||
2857 | dib0700_set_gpio(adap->dev, GPIO10, GPIO_OUT, 1); | 2857 | dib0700_set_gpio(adap->dev, GPIO10, GPIO_OUT, 1); |
2858 | msleep(30); | 2858 | msleep(30); |
2859 | 2859 | ||
2860 | adap->fe = dvb_attach(lgdt3305_attach, | 2860 | adap->fe[0] = dvb_attach(lgdt3305_attach, |
2861 | &hcw_lgdt3305_config, | 2861 | &hcw_lgdt3305_config, |
2862 | &adap->dev->i2c_adap); | 2862 | &adap->dev->i2c_adap); |
2863 | 2863 | ||
2864 | return adap->fe == NULL ? -ENODEV : 0; | 2864 | return adap->fe[0] == NULL ? -ENODEV : 0; |
2865 | } | 2865 | } |
2866 | 2866 | ||
2867 | static int mxl5007t_tuner_attach(struct dvb_usb_adapter *adap) | 2867 | static int mxl5007t_tuner_attach(struct dvb_usb_adapter *adap) |
2868 | { | 2868 | { |
2869 | return dvb_attach(mxl5007t_attach, adap->fe, | 2869 | return dvb_attach(mxl5007t_attach, adap->fe[0], |
2870 | &adap->dev->i2c_adap, 0x60, | 2870 | &adap->dev->i2c_adap, 0x60, |
2871 | &hcw_mxl5007t_config) == NULL ? -ENODEV : 0; | 2871 | &hcw_mxl5007t_config) == NULL ? -ENODEV : 0; |
2872 | } | 2872 | } |
diff --git a/drivers/media/dvb/dvb-usb/dibusb-common.c b/drivers/media/dvb/dvb-usb/dibusb-common.c index 4c2a689c820e..263235e194f9 100644 --- a/drivers/media/dvb/dvb-usb/dibusb-common.c +++ b/drivers/media/dvb/dvb-usb/dibusb-common.c | |||
@@ -23,7 +23,7 @@ int dibusb_streaming_ctrl(struct dvb_usb_adapter *adap, int onoff) | |||
23 | if (adap->priv != NULL) { | 23 | if (adap->priv != NULL) { |
24 | struct dibusb_state *st = adap->priv; | 24 | struct dibusb_state *st = adap->priv; |
25 | if (st->ops.fifo_ctrl != NULL) | 25 | if (st->ops.fifo_ctrl != NULL) |
26 | if (st->ops.fifo_ctrl(adap->fe,onoff)) { | 26 | if (st->ops.fifo_ctrl(adap->fe[0],onoff)) { |
27 | err("error while controlling the fifo of the demod."); | 27 | err("error while controlling the fifo of the demod."); |
28 | return -ENODEV; | 28 | return -ENODEV; |
29 | } | 29 | } |
@@ -37,7 +37,7 @@ int dibusb_pid_filter(struct dvb_usb_adapter *adap, int index, u16 pid, int onof | |||
37 | if (adap->priv != NULL) { | 37 | if (adap->priv != NULL) { |
38 | struct dibusb_state *st = adap->priv; | 38 | struct dibusb_state *st = adap->priv; |
39 | if (st->ops.pid_ctrl != NULL) | 39 | if (st->ops.pid_ctrl != NULL) |
40 | st->ops.pid_ctrl(adap->fe,index,pid,onoff); | 40 | st->ops.pid_ctrl(adap->fe[0],index,pid,onoff); |
41 | } | 41 | } |
42 | return 0; | 42 | return 0; |
43 | } | 43 | } |
@@ -48,7 +48,7 @@ int dibusb_pid_filter_ctrl(struct dvb_usb_adapter *adap, int onoff) | |||
48 | if (adap->priv != NULL) { | 48 | if (adap->priv != NULL) { |
49 | struct dibusb_state *st = adap->priv; | 49 | struct dibusb_state *st = adap->priv; |
50 | if (st->ops.pid_parse != NULL) | 50 | if (st->ops.pid_parse != NULL) |
51 | if (st->ops.pid_parse(adap->fe,onoff) < 0) | 51 | if (st->ops.pid_parse(adap->fe[0],onoff) < 0) |
52 | err("could not handle pid_parser"); | 52 | err("could not handle pid_parser"); |
53 | } | 53 | } |
54 | return 0; | 54 | return 0; |
@@ -254,8 +254,8 @@ int dibusb_dib3000mc_frontend_attach(struct dvb_usb_adapter *adap) | |||
254 | msleep(1000); | 254 | msleep(1000); |
255 | } | 255 | } |
256 | 256 | ||
257 | if ((adap->fe = dvb_attach(dib3000mc_attach, &adap->dev->i2c_adap, DEFAULT_DIB3000P_I2C_ADDRESS, &mod3000p_dib3000p_config)) != NULL || | 257 | if ((adap->fe[0] = dvb_attach(dib3000mc_attach, &adap->dev->i2c_adap, DEFAULT_DIB3000P_I2C_ADDRESS, &mod3000p_dib3000p_config)) != NULL || |
258 | (adap->fe = dvb_attach(dib3000mc_attach, &adap->dev->i2c_adap, DEFAULT_DIB3000MC_I2C_ADDRESS, &mod3000p_dib3000p_config)) != NULL) { | 258 | (adap->fe[0] = dvb_attach(dib3000mc_attach, &adap->dev->i2c_adap, DEFAULT_DIB3000MC_I2C_ADDRESS, &mod3000p_dib3000p_config)) != NULL) { |
259 | if (adap->priv != NULL) { | 259 | if (adap->priv != NULL) { |
260 | struct dibusb_state *st = adap->priv; | 260 | struct dibusb_state *st = adap->priv; |
261 | st->ops.pid_parse = dib3000mc_pid_parse; | 261 | st->ops.pid_parse = dib3000mc_pid_parse; |
@@ -309,15 +309,15 @@ int dibusb_dib3000mc_tuner_attach(struct dvb_usb_adapter *adap) | |||
309 | } | 309 | } |
310 | } | 310 | } |
311 | 311 | ||
312 | tun_i2c = dib3000mc_get_tuner_i2c_master(adap->fe, 1); | 312 | tun_i2c = dib3000mc_get_tuner_i2c_master(adap->fe[0], 1); |
313 | if (dvb_attach(mt2060_attach, adap->fe, tun_i2c, &stk3000p_mt2060_config, if1) == NULL) { | 313 | if (dvb_attach(mt2060_attach, adap->fe[0], tun_i2c, &stk3000p_mt2060_config, if1) == NULL) { |
314 | /* not found - use panasonic pll parameters */ | 314 | /* not found - use panasonic pll parameters */ |
315 | if (dvb_attach(dvb_pll_attach, adap->fe, 0x60, tun_i2c, DVB_PLL_ENV57H1XD5) == NULL) | 315 | if (dvb_attach(dvb_pll_attach, adap->fe[0], 0x60, tun_i2c, DVB_PLL_ENV57H1XD5) == NULL) |
316 | return -ENOMEM; | 316 | return -ENOMEM; |
317 | } else { | 317 | } else { |
318 | st->mt2060_present = 1; | 318 | st->mt2060_present = 1; |
319 | /* set the correct parameters for the dib3000p */ | 319 | /* set the correct parameters for the dib3000p */ |
320 | dib3000mc_set_config(adap->fe, &stk3000p_dib3000p_config); | 320 | dib3000mc_set_config(adap->fe[0], &stk3000p_dib3000p_config); |
321 | } | 321 | } |
322 | return 0; | 322 | return 0; |
323 | } | 323 | } |
diff --git a/drivers/media/dvb/dvb-usb/dibusb-mb.c b/drivers/media/dvb/dvb-usb/dibusb-mb.c index 04d91bdd3562..c653b321e428 100644 --- a/drivers/media/dvb/dvb-usb/dibusb-mb.c +++ b/drivers/media/dvb/dvb-usb/dibusb-mb.c | |||
@@ -31,11 +31,11 @@ static int dibusb_dib3000mb_frontend_attach(struct dvb_usb_adapter *adap) | |||
31 | 31 | ||
32 | demod_cfg.demod_address = 0x8; | 32 | demod_cfg.demod_address = 0x8; |
33 | 33 | ||
34 | if ((adap->fe = dvb_attach(dib3000mb_attach, &demod_cfg, | 34 | if ((adap->fe[0] = dvb_attach(dib3000mb_attach, &demod_cfg, |
35 | &adap->dev->i2c_adap, &st->ops)) == NULL) | 35 | &adap->dev->i2c_adap, &st->ops)) == NULL) |
36 | return -ENODEV; | 36 | return -ENODEV; |
37 | 37 | ||
38 | adap->fe->ops.i2c_gate_ctrl = dib3000mb_i2c_gate_ctrl; | 38 | adap->fe[0]->ops.i2c_gate_ctrl = dib3000mb_i2c_gate_ctrl; |
39 | 39 | ||
40 | return 0; | 40 | return 0; |
41 | } | 41 | } |
@@ -46,7 +46,7 @@ static int dibusb_thomson_tuner_attach(struct dvb_usb_adapter *adap) | |||
46 | 46 | ||
47 | st->tuner_addr = 0x61; | 47 | st->tuner_addr = 0x61; |
48 | 48 | ||
49 | dvb_attach(dvb_pll_attach, adap->fe, 0x61, &adap->dev->i2c_adap, | 49 | dvb_attach(dvb_pll_attach, adap->fe[0], 0x61, &adap->dev->i2c_adap, |
50 | DVB_PLL_TUA6010XS); | 50 | DVB_PLL_TUA6010XS); |
51 | return 0; | 51 | return 0; |
52 | } | 52 | } |
@@ -57,7 +57,7 @@ static int dibusb_panasonic_tuner_attach(struct dvb_usb_adapter *adap) | |||
57 | 57 | ||
58 | st->tuner_addr = 0x60; | 58 | st->tuner_addr = 0x60; |
59 | 59 | ||
60 | dvb_attach(dvb_pll_attach, adap->fe, 0x60, &adap->dev->i2c_adap, | 60 | dvb_attach(dvb_pll_attach, adap->fe[0], 0x60, &adap->dev->i2c_adap, |
61 | DVB_PLL_TDA665X); | 61 | DVB_PLL_TDA665X); |
62 | return 0; | 62 | return 0; |
63 | } | 63 | } |
@@ -78,16 +78,16 @@ static int dibusb_tuner_probe_and_attach(struct dvb_usb_adapter *adap) | |||
78 | /* the Panasonic sits on I2C addrass 0x60, the Thomson on 0x61 */ | 78 | /* the Panasonic sits on I2C addrass 0x60, the Thomson on 0x61 */ |
79 | msg[0].addr = msg[1].addr = st->tuner_addr = 0x60; | 79 | msg[0].addr = msg[1].addr = st->tuner_addr = 0x60; |
80 | 80 | ||
81 | if (adap->fe->ops.i2c_gate_ctrl) | 81 | if (adap->fe[0]->ops.i2c_gate_ctrl) |
82 | adap->fe->ops.i2c_gate_ctrl(adap->fe,1); | 82 | adap->fe[0]->ops.i2c_gate_ctrl(adap->fe[0],1); |
83 | 83 | ||
84 | if (i2c_transfer(&adap->dev->i2c_adap, msg, 2) != 2) { | 84 | if (i2c_transfer(&adap->dev->i2c_adap, msg, 2) != 2) { |
85 | err("tuner i2c write failed."); | 85 | err("tuner i2c write failed."); |
86 | ret = -EREMOTEIO; | 86 | ret = -EREMOTEIO; |
87 | } | 87 | } |
88 | 88 | ||
89 | if (adap->fe->ops.i2c_gate_ctrl) | 89 | if (adap->fe[0]->ops.i2c_gate_ctrl) |
90 | adap->fe->ops.i2c_gate_ctrl(adap->fe,0); | 90 | adap->fe[0]->ops.i2c_gate_ctrl(adap->fe[0],0); |
91 | 91 | ||
92 | if (b2[0] == 0xfe) { | 92 | if (b2[0] == 0xfe) { |
93 | info("This device has the Thomson Cable onboard. Which is default."); | 93 | info("This device has the Thomson Cable onboard. Which is default."); |
diff --git a/drivers/media/dvb/dvb-usb/digitv.c b/drivers/media/dvb/dvb-usb/digitv.c index f6344cdd360f..1e17d15bd3e9 100644 --- a/drivers/media/dvb/dvb-usb/digitv.c +++ b/drivers/media/dvb/dvb-usb/digitv.c | |||
@@ -137,11 +137,11 @@ static int digitv_frontend_attach(struct dvb_usb_adapter *adap) | |||
137 | { | 137 | { |
138 | struct digitv_state *st = adap->dev->priv; | 138 | struct digitv_state *st = adap->dev->priv; |
139 | 139 | ||
140 | if ((adap->fe = dvb_attach(mt352_attach, &digitv_mt352_config, &adap->dev->i2c_adap)) != NULL) { | 140 | if ((adap->fe[0] = dvb_attach(mt352_attach, &digitv_mt352_config, &adap->dev->i2c_adap)) != NULL) { |
141 | st->is_nxt6000 = 0; | 141 | st->is_nxt6000 = 0; |
142 | return 0; | 142 | return 0; |
143 | } | 143 | } |
144 | if ((adap->fe = dvb_attach(nxt6000_attach, &digitv_nxt6000_config, &adap->dev->i2c_adap)) != NULL) { | 144 | if ((adap->fe[0] = dvb_attach(nxt6000_attach, &digitv_nxt6000_config, &adap->dev->i2c_adap)) != NULL) { |
145 | st->is_nxt6000 = 1; | 145 | st->is_nxt6000 = 1; |
146 | return 0; | 146 | return 0; |
147 | } | 147 | } |
@@ -152,11 +152,11 @@ static int digitv_tuner_attach(struct dvb_usb_adapter *adap) | |||
152 | { | 152 | { |
153 | struct digitv_state *st = adap->dev->priv; | 153 | struct digitv_state *st = adap->dev->priv; |
154 | 154 | ||
155 | if (!dvb_attach(dvb_pll_attach, adap->fe, 0x60, NULL, DVB_PLL_TDED4)) | 155 | if (!dvb_attach(dvb_pll_attach, adap->fe[0], 0x60, NULL, DVB_PLL_TDED4)) |
156 | return -ENODEV; | 156 | return -ENODEV; |
157 | 157 | ||
158 | if (st->is_nxt6000) | 158 | if (st->is_nxt6000) |
159 | adap->fe->ops.tuner_ops.set_params = digitv_nxt6000_tuner_set_params; | 159 | adap->fe[0]->ops.tuner_ops.set_params = digitv_nxt6000_tuner_set_params; |
160 | 160 | ||
161 | return 0; | 161 | return 0; |
162 | } | 162 | } |
diff --git a/drivers/media/dvb/dvb-usb/dtt200u.c b/drivers/media/dvb/dvb-usb/dtt200u.c index ecd86eca2548..ea2a46ffbb0a 100644 --- a/drivers/media/dvb/dvb-usb/dtt200u.c +++ b/drivers/media/dvb/dvb-usb/dtt200u.c | |||
@@ -90,7 +90,7 @@ static int dtt200u_rc_query(struct dvb_usb_device *d, u32 *event, int *state) | |||
90 | 90 | ||
91 | static int dtt200u_frontend_attach(struct dvb_usb_adapter *adap) | 91 | static int dtt200u_frontend_attach(struct dvb_usb_adapter *adap) |
92 | { | 92 | { |
93 | adap->fe = dtt200u_fe_attach(adap->dev); | 93 | adap->fe[0] = dtt200u_fe_attach(adap->dev); |
94 | return 0; | 94 | return 0; |
95 | } | 95 | } |
96 | 96 | ||
diff --git a/drivers/media/dvb/dvb-usb/dtv5100.c b/drivers/media/dvb/dvb-usb/dtv5100.c index 078ce92ca436..75ed55cdd8a0 100644 --- a/drivers/media/dvb/dvb-usb/dtv5100.c +++ b/drivers/media/dvb/dvb-usb/dtv5100.c | |||
@@ -115,13 +115,13 @@ static struct zl10353_config dtv5100_zl10353_config = { | |||
115 | 115 | ||
116 | static int dtv5100_frontend_attach(struct dvb_usb_adapter *adap) | 116 | static int dtv5100_frontend_attach(struct dvb_usb_adapter *adap) |
117 | { | 117 | { |
118 | adap->fe = dvb_attach(zl10353_attach, &dtv5100_zl10353_config, | 118 | adap->fe[0] = dvb_attach(zl10353_attach, &dtv5100_zl10353_config, |
119 | &adap->dev->i2c_adap); | 119 | &adap->dev->i2c_adap); |
120 | if (adap->fe == NULL) | 120 | if (adap->fe[0] == NULL) |
121 | return -EIO; | 121 | return -EIO; |
122 | 122 | ||
123 | /* disable i2c gate, or it won't work... is this safe? */ | 123 | /* disable i2c gate, or it won't work... is this safe? */ |
124 | adap->fe->ops.i2c_gate_ctrl = NULL; | 124 | adap->fe[0]->ops.i2c_gate_ctrl = NULL; |
125 | 125 | ||
126 | return 0; | 126 | return 0; |
127 | } | 127 | } |
@@ -133,7 +133,7 @@ static struct qt1010_config dtv5100_qt1010_config = { | |||
133 | static int dtv5100_tuner_attach(struct dvb_usb_adapter *adap) | 133 | static int dtv5100_tuner_attach(struct dvb_usb_adapter *adap) |
134 | { | 134 | { |
135 | return dvb_attach(qt1010_attach, | 135 | return dvb_attach(qt1010_attach, |
136 | adap->fe, &adap->dev->i2c_adap, | 136 | adap->fe[0], &adap->dev->i2c_adap, |
137 | &dtv5100_qt1010_config) == NULL ? -ENODEV : 0; | 137 | &dtv5100_qt1010_config) == NULL ? -ENODEV : 0; |
138 | } | 138 | } |
139 | 139 | ||
diff --git a/drivers/media/dvb/dvb-usb/dvb-usb-dvb.c b/drivers/media/dvb/dvb-usb/dvb-usb-dvb.c index b3cb626ed56e..d8c0bd9107f3 100644 --- a/drivers/media/dvb/dvb-usb/dvb-usb-dvb.c +++ b/drivers/media/dvb/dvb-usb/dvb-usb-dvb.c | |||
@@ -186,14 +186,14 @@ int dvb_usb_adapter_frontend_init(struct dvb_usb_adapter *adap) | |||
186 | } | 186 | } |
187 | 187 | ||
188 | /* re-assign sleep and wakeup functions */ | 188 | /* re-assign sleep and wakeup functions */ |
189 | if (adap->props.frontend_attach(adap) == 0 && adap->fe != NULL) { | 189 | if (adap->props.frontend_attach(adap) == 0 && adap->fe[0] != NULL) { |
190 | adap->fe_init = adap->fe->ops.init; adap->fe->ops.init = dvb_usb_fe_wakeup; | 190 | adap->fe_init = adap->fe[0]->ops.init; adap->fe[0]->ops.init = dvb_usb_fe_wakeup; |
191 | adap->fe_sleep = adap->fe->ops.sleep; adap->fe->ops.sleep = dvb_usb_fe_sleep; | 191 | adap->fe_sleep = adap->fe[0]->ops.sleep; adap->fe[0]->ops.sleep = dvb_usb_fe_sleep; |
192 | 192 | ||
193 | if (dvb_register_frontend(&adap->dvb_adap, adap->fe)) { | 193 | if (dvb_register_frontend(&adap->dvb_adap, adap->fe[0])) { |
194 | err("Frontend registration failed."); | 194 | err("Frontend registration failed."); |
195 | dvb_frontend_detach(adap->fe); | 195 | dvb_frontend_detach(adap->fe[0]); |
196 | adap->fe = NULL; | 196 | adap->fe[0] = NULL; |
197 | return -ENODEV; | 197 | return -ENODEV; |
198 | } | 198 | } |
199 | 199 | ||
@@ -208,9 +208,9 @@ int dvb_usb_adapter_frontend_init(struct dvb_usb_adapter *adap) | |||
208 | 208 | ||
209 | int dvb_usb_adapter_frontend_exit(struct dvb_usb_adapter *adap) | 209 | int dvb_usb_adapter_frontend_exit(struct dvb_usb_adapter *adap) |
210 | { | 210 | { |
211 | if (adap->fe != NULL) { | 211 | if (adap->fe[0] != NULL) { |
212 | dvb_unregister_frontend(adap->fe); | 212 | dvb_unregister_frontend(adap->fe[0]); |
213 | dvb_frontend_detach(adap->fe); | 213 | dvb_frontend_detach(adap->fe[0]); |
214 | } | 214 | } |
215 | return 0; | 215 | return 0; |
216 | } | 216 | } |
diff --git a/drivers/media/dvb/dvb-usb/dvb-usb.h b/drivers/media/dvb/dvb-usb/dvb-usb.h index 7d35d078342b..2e57bffad3e3 100644 --- a/drivers/media/dvb/dvb-usb/dvb-usb.h +++ b/drivers/media/dvb/dvb-usb/dvb-usb.h | |||
@@ -363,7 +363,7 @@ struct dvb_usb_adapter { | |||
363 | struct dmxdev dmxdev; | 363 | struct dmxdev dmxdev; |
364 | struct dvb_demux demux; | 364 | struct dvb_demux demux; |
365 | struct dvb_net dvb_net; | 365 | struct dvb_net dvb_net; |
366 | struct dvb_frontend *fe; | 366 | struct dvb_frontend *fe[1]; |
367 | int max_feed_count; | 367 | int max_feed_count; |
368 | 368 | ||
369 | int (*fe_init) (struct dvb_frontend *); | 369 | int (*fe_init) (struct dvb_frontend *); |
diff --git a/drivers/media/dvb/dvb-usb/dw2102.c b/drivers/media/dvb/dvb-usb/dw2102.c index 058b2318abed..eb5dff59251d 100644 --- a/drivers/media/dvb/dvb-usb/dw2102.c +++ b/drivers/media/dvb/dvb-usb/dw2102.c | |||
@@ -992,18 +992,18 @@ static int dw2104_frontend_attach(struct dvb_usb_adapter *d) | |||
992 | struct dvb_tuner_ops *tuner_ops = NULL; | 992 | struct dvb_tuner_ops *tuner_ops = NULL; |
993 | 993 | ||
994 | if (demod_probe & 4) { | 994 | if (demod_probe & 4) { |
995 | d->fe = dvb_attach(stv0900_attach, &dw2104a_stv0900_config, | 995 | d->fe[0] = dvb_attach(stv0900_attach, &dw2104a_stv0900_config, |
996 | &d->dev->i2c_adap, 0); | 996 | &d->dev->i2c_adap, 0); |
997 | if (d->fe != NULL) { | 997 | if (d->fe[0] != NULL) { |
998 | if (dvb_attach(stb6100_attach, d->fe, | 998 | if (dvb_attach(stb6100_attach, d->fe[0], |
999 | &dw2104a_stb6100_config, | 999 | &dw2104a_stb6100_config, |
1000 | &d->dev->i2c_adap)) { | 1000 | &d->dev->i2c_adap)) { |
1001 | tuner_ops = &d->fe->ops.tuner_ops; | 1001 | tuner_ops = &d->fe[0]->ops.tuner_ops; |
1002 | tuner_ops->set_frequency = stb6100_set_freq; | 1002 | tuner_ops->set_frequency = stb6100_set_freq; |
1003 | tuner_ops->get_frequency = stb6100_get_freq; | 1003 | tuner_ops->get_frequency = stb6100_get_freq; |
1004 | tuner_ops->set_bandwidth = stb6100_set_bandw; | 1004 | tuner_ops->set_bandwidth = stb6100_set_bandw; |
1005 | tuner_ops->get_bandwidth = stb6100_get_bandw; | 1005 | tuner_ops->get_bandwidth = stb6100_get_bandw; |
1006 | d->fe->ops.set_voltage = dw210x_set_voltage; | 1006 | d->fe[0]->ops.set_voltage = dw210x_set_voltage; |
1007 | info("Attached STV0900+STB6100!\n"); | 1007 | info("Attached STV0900+STB6100!\n"); |
1008 | return 0; | 1008 | return 0; |
1009 | } | 1009 | } |
@@ -1011,13 +1011,13 @@ static int dw2104_frontend_attach(struct dvb_usb_adapter *d) | |||
1011 | } | 1011 | } |
1012 | 1012 | ||
1013 | if (demod_probe & 2) { | 1013 | if (demod_probe & 2) { |
1014 | d->fe = dvb_attach(stv0900_attach, &dw2104_stv0900_config, | 1014 | d->fe[0] = dvb_attach(stv0900_attach, &dw2104_stv0900_config, |
1015 | &d->dev->i2c_adap, 0); | 1015 | &d->dev->i2c_adap, 0); |
1016 | if (d->fe != NULL) { | 1016 | if (d->fe[0] != NULL) { |
1017 | if (dvb_attach(stv6110_attach, d->fe, | 1017 | if (dvb_attach(stv6110_attach, d->fe[0], |
1018 | &dw2104_stv6110_config, | 1018 | &dw2104_stv6110_config, |
1019 | &d->dev->i2c_adap)) { | 1019 | &d->dev->i2c_adap)) { |
1020 | d->fe->ops.set_voltage = dw210x_set_voltage; | 1020 | d->fe[0]->ops.set_voltage = dw210x_set_voltage; |
1021 | info("Attached STV0900+STV6110A!\n"); | 1021 | info("Attached STV0900+STV6110A!\n"); |
1022 | return 0; | 1022 | return 0; |
1023 | } | 1023 | } |
@@ -1025,19 +1025,19 @@ static int dw2104_frontend_attach(struct dvb_usb_adapter *d) | |||
1025 | } | 1025 | } |
1026 | 1026 | ||
1027 | if (demod_probe & 1) { | 1027 | if (demod_probe & 1) { |
1028 | d->fe = dvb_attach(cx24116_attach, &dw2104_config, | 1028 | d->fe[0] = dvb_attach(cx24116_attach, &dw2104_config, |
1029 | &d->dev->i2c_adap); | 1029 | &d->dev->i2c_adap); |
1030 | if (d->fe != NULL) { | 1030 | if (d->fe[0] != NULL) { |
1031 | d->fe->ops.set_voltage = dw210x_set_voltage; | 1031 | d->fe[0]->ops.set_voltage = dw210x_set_voltage; |
1032 | info("Attached cx24116!\n"); | 1032 | info("Attached cx24116!\n"); |
1033 | return 0; | 1033 | return 0; |
1034 | } | 1034 | } |
1035 | } | 1035 | } |
1036 | 1036 | ||
1037 | d->fe = dvb_attach(ds3000_attach, &dw2104_ds3000_config, | 1037 | d->fe[0] = dvb_attach(ds3000_attach, &dw2104_ds3000_config, |
1038 | &d->dev->i2c_adap); | 1038 | &d->dev->i2c_adap); |
1039 | if (d->fe != NULL) { | 1039 | if (d->fe[0] != NULL) { |
1040 | d->fe->ops.set_voltage = dw210x_set_voltage; | 1040 | d->fe[0]->ops.set_voltage = dw210x_set_voltage; |
1041 | info("Attached DS3000!\n"); | 1041 | info("Attached DS3000!\n"); |
1042 | return 0; | 1042 | return 0; |
1043 | } | 1043 | } |
@@ -1053,22 +1053,22 @@ static int dw2102_frontend_attach(struct dvb_usb_adapter *d) | |||
1053 | { | 1053 | { |
1054 | if (dw2102_properties.i2c_algo == &dw2102_serit_i2c_algo) { | 1054 | if (dw2102_properties.i2c_algo == &dw2102_serit_i2c_algo) { |
1055 | /*dw2102_properties.adapter->tuner_attach = NULL;*/ | 1055 | /*dw2102_properties.adapter->tuner_attach = NULL;*/ |
1056 | d->fe = dvb_attach(si21xx_attach, &serit_sp1511lhb_config, | 1056 | d->fe[0] = dvb_attach(si21xx_attach, &serit_sp1511lhb_config, |
1057 | &d->dev->i2c_adap); | 1057 | &d->dev->i2c_adap); |
1058 | if (d->fe != NULL) { | 1058 | if (d->fe[0] != NULL) { |
1059 | d->fe->ops.set_voltage = dw210x_set_voltage; | 1059 | d->fe[0]->ops.set_voltage = dw210x_set_voltage; |
1060 | info("Attached si21xx!\n"); | 1060 | info("Attached si21xx!\n"); |
1061 | return 0; | 1061 | return 0; |
1062 | } | 1062 | } |
1063 | } | 1063 | } |
1064 | 1064 | ||
1065 | if (dw2102_properties.i2c_algo == &dw2102_earda_i2c_algo) { | 1065 | if (dw2102_properties.i2c_algo == &dw2102_earda_i2c_algo) { |
1066 | d->fe = dvb_attach(stv0288_attach, &earda_config, | 1066 | d->fe[0] = dvb_attach(stv0288_attach, &earda_config, |
1067 | &d->dev->i2c_adap); | 1067 | &d->dev->i2c_adap); |
1068 | if (d->fe != NULL) { | 1068 | if (d->fe[0] != NULL) { |
1069 | if (dvb_attach(stb6000_attach, d->fe, 0x61, | 1069 | if (dvb_attach(stb6000_attach, d->fe[0], 0x61, |
1070 | &d->dev->i2c_adap)) { | 1070 | &d->dev->i2c_adap)) { |
1071 | d->fe->ops.set_voltage = dw210x_set_voltage; | 1071 | d->fe[0]->ops.set_voltage = dw210x_set_voltage; |
1072 | info("Attached stv0288!\n"); | 1072 | info("Attached stv0288!\n"); |
1073 | return 0; | 1073 | return 0; |
1074 | } | 1074 | } |
@@ -1077,10 +1077,10 @@ static int dw2102_frontend_attach(struct dvb_usb_adapter *d) | |||
1077 | 1077 | ||
1078 | if (dw2102_properties.i2c_algo == &dw2102_i2c_algo) { | 1078 | if (dw2102_properties.i2c_algo == &dw2102_i2c_algo) { |
1079 | /*dw2102_properties.adapter->tuner_attach = dw2102_tuner_attach;*/ | 1079 | /*dw2102_properties.adapter->tuner_attach = dw2102_tuner_attach;*/ |
1080 | d->fe = dvb_attach(stv0299_attach, &sharp_z0194a_config, | 1080 | d->fe[0] = dvb_attach(stv0299_attach, &sharp_z0194a_config, |
1081 | &d->dev->i2c_adap); | 1081 | &d->dev->i2c_adap); |
1082 | if (d->fe != NULL) { | 1082 | if (d->fe[0] != NULL) { |
1083 | d->fe->ops.set_voltage = dw210x_set_voltage; | 1083 | d->fe[0]->ops.set_voltage = dw210x_set_voltage; |
1084 | info("Attached stv0299!\n"); | 1084 | info("Attached stv0299!\n"); |
1085 | return 0; | 1085 | return 0; |
1086 | } | 1086 | } |
@@ -1090,9 +1090,9 @@ static int dw2102_frontend_attach(struct dvb_usb_adapter *d) | |||
1090 | 1090 | ||
1091 | static int dw3101_frontend_attach(struct dvb_usb_adapter *d) | 1091 | static int dw3101_frontend_attach(struct dvb_usb_adapter *d) |
1092 | { | 1092 | { |
1093 | d->fe = dvb_attach(tda10023_attach, &dw3101_tda10023_config, | 1093 | d->fe[0] = dvb_attach(tda10023_attach, &dw3101_tda10023_config, |
1094 | &d->dev->i2c_adap, 0x48); | 1094 | &d->dev->i2c_adap, 0x48); |
1095 | if (d->fe != NULL) { | 1095 | if (d->fe[0] != NULL) { |
1096 | info("Attached tda10023!\n"); | 1096 | info("Attached tda10023!\n"); |
1097 | return 0; | 1097 | return 0; |
1098 | } | 1098 | } |
@@ -1101,12 +1101,12 @@ static int dw3101_frontend_attach(struct dvb_usb_adapter *d) | |||
1101 | 1101 | ||
1102 | static int zl100313_frontend_attach(struct dvb_usb_adapter *d) | 1102 | static int zl100313_frontend_attach(struct dvb_usb_adapter *d) |
1103 | { | 1103 | { |
1104 | d->fe = dvb_attach(mt312_attach, &zl313_config, | 1104 | d->fe[0] = dvb_attach(mt312_attach, &zl313_config, |
1105 | &d->dev->i2c_adap); | 1105 | &d->dev->i2c_adap); |
1106 | if (d->fe != NULL) { | 1106 | if (d->fe[0] != NULL) { |
1107 | if (dvb_attach(zl10039_attach, d->fe, 0x60, | 1107 | if (dvb_attach(zl10039_attach, d->fe[0], 0x60, |
1108 | &d->dev->i2c_adap)) { | 1108 | &d->dev->i2c_adap)) { |
1109 | d->fe->ops.set_voltage = dw210x_set_voltage; | 1109 | d->fe[0]->ops.set_voltage = dw210x_set_voltage; |
1110 | info("Attached zl100313+zl10039!\n"); | 1110 | info("Attached zl100313+zl10039!\n"); |
1111 | return 0; | 1111 | return 0; |
1112 | } | 1112 | } |
@@ -1119,16 +1119,16 @@ static int stv0288_frontend_attach(struct dvb_usb_adapter *d) | |||
1119 | { | 1119 | { |
1120 | u8 obuf[] = {7, 1}; | 1120 | u8 obuf[] = {7, 1}; |
1121 | 1121 | ||
1122 | d->fe = dvb_attach(stv0288_attach, &earda_config, | 1122 | d->fe[0] = dvb_attach(stv0288_attach, &earda_config, |
1123 | &d->dev->i2c_adap); | 1123 | &d->dev->i2c_adap); |
1124 | 1124 | ||
1125 | if (d->fe == NULL) | 1125 | if (d->fe[0] == NULL) |
1126 | return -EIO; | 1126 | return -EIO; |
1127 | 1127 | ||
1128 | if (NULL == dvb_attach(stb6000_attach, d->fe, 0x61, &d->dev->i2c_adap)) | 1128 | if (NULL == dvb_attach(stb6000_attach, d->fe[0], 0x61, &d->dev->i2c_adap)) |
1129 | return -EIO; | 1129 | return -EIO; |
1130 | 1130 | ||
1131 | d->fe->ops.set_voltage = dw210x_set_voltage; | 1131 | d->fe[0]->ops.set_voltage = dw210x_set_voltage; |
1132 | 1132 | ||
1133 | dw210x_op_rw(d->dev->udev, 0x8a, 0, 0, obuf, 2, DW210X_WRITE_MSG); | 1133 | dw210x_op_rw(d->dev->udev, 0x8a, 0, 0, obuf, 2, DW210X_WRITE_MSG); |
1134 | 1134 | ||
@@ -1143,14 +1143,14 @@ static int ds3000_frontend_attach(struct dvb_usb_adapter *d) | |||
1143 | struct s6x0_state *st = (struct s6x0_state *)d->dev->priv; | 1143 | struct s6x0_state *st = (struct s6x0_state *)d->dev->priv; |
1144 | u8 obuf[] = {7, 1}; | 1144 | u8 obuf[] = {7, 1}; |
1145 | 1145 | ||
1146 | d->fe = dvb_attach(ds3000_attach, &dw2104_ds3000_config, | 1146 | d->fe[0] = dvb_attach(ds3000_attach, &dw2104_ds3000_config, |
1147 | &d->dev->i2c_adap); | 1147 | &d->dev->i2c_adap); |
1148 | 1148 | ||
1149 | if (d->fe == NULL) | 1149 | if (d->fe[0] == NULL) |
1150 | return -EIO; | 1150 | return -EIO; |
1151 | 1151 | ||
1152 | st->old_set_voltage = d->fe->ops.set_voltage; | 1152 | st->old_set_voltage = d->fe[0]->ops.set_voltage; |
1153 | d->fe->ops.set_voltage = s660_set_voltage; | 1153 | d->fe[0]->ops.set_voltage = s660_set_voltage; |
1154 | 1154 | ||
1155 | dw210x_op_rw(d->dev->udev, 0x8a, 0, 0, obuf, 2, DW210X_WRITE_MSG); | 1155 | dw210x_op_rw(d->dev->udev, 0x8a, 0, 0, obuf, 2, DW210X_WRITE_MSG); |
1156 | 1156 | ||
@@ -1163,12 +1163,12 @@ static int prof_7500_frontend_attach(struct dvb_usb_adapter *d) | |||
1163 | { | 1163 | { |
1164 | u8 obuf[] = {7, 1}; | 1164 | u8 obuf[] = {7, 1}; |
1165 | 1165 | ||
1166 | d->fe = dvb_attach(stv0900_attach, &prof_7500_stv0900_config, | 1166 | d->fe[0] = dvb_attach(stv0900_attach, &prof_7500_stv0900_config, |
1167 | &d->dev->i2c_adap, 0); | 1167 | &d->dev->i2c_adap, 0); |
1168 | if (d->fe == NULL) | 1168 | if (d->fe[0] == NULL) |
1169 | return -EIO; | 1169 | return -EIO; |
1170 | 1170 | ||
1171 | d->fe->ops.set_voltage = dw210x_set_voltage; | 1171 | d->fe[0]->ops.set_voltage = dw210x_set_voltage; |
1172 | 1172 | ||
1173 | dw210x_op_rw(d->dev->udev, 0x8a, 0, 0, obuf, 2, DW210X_WRITE_MSG); | 1173 | dw210x_op_rw(d->dev->udev, 0x8a, 0, 0, obuf, 2, DW210X_WRITE_MSG); |
1174 | 1174 | ||
@@ -1204,9 +1204,9 @@ static int su3000_frontend_attach(struct dvb_usb_adapter *d) | |||
1204 | if (dvb_usb_generic_rw(d->dev, obuf, 1, ibuf, 1, 0) < 0) | 1204 | if (dvb_usb_generic_rw(d->dev, obuf, 1, ibuf, 1, 0) < 0) |
1205 | err("command 0x51 transfer failed."); | 1205 | err("command 0x51 transfer failed."); |
1206 | 1206 | ||
1207 | d->fe = dvb_attach(ds3000_attach, &su3000_ds3000_config, | 1207 | d->fe[0] = dvb_attach(ds3000_attach, &su3000_ds3000_config, |
1208 | &d->dev->i2c_adap); | 1208 | &d->dev->i2c_adap); |
1209 | if (d->fe == NULL) | 1209 | if (d->fe[0] == NULL) |
1210 | return -EIO; | 1210 | return -EIO; |
1211 | 1211 | ||
1212 | info("Attached DS3000!\n"); | 1212 | info("Attached DS3000!\n"); |
@@ -1216,14 +1216,14 @@ static int su3000_frontend_attach(struct dvb_usb_adapter *d) | |||
1216 | 1216 | ||
1217 | static int dw2102_tuner_attach(struct dvb_usb_adapter *adap) | 1217 | static int dw2102_tuner_attach(struct dvb_usb_adapter *adap) |
1218 | { | 1218 | { |
1219 | dvb_attach(dvb_pll_attach, adap->fe, 0x60, | 1219 | dvb_attach(dvb_pll_attach, adap->fe[0], 0x60, |
1220 | &adap->dev->i2c_adap, DVB_PLL_OPERA1); | 1220 | &adap->dev->i2c_adap, DVB_PLL_OPERA1); |
1221 | return 0; | 1221 | return 0; |
1222 | } | 1222 | } |
1223 | 1223 | ||
1224 | static int dw3101_tuner_attach(struct dvb_usb_adapter *adap) | 1224 | static int dw3101_tuner_attach(struct dvb_usb_adapter *adap) |
1225 | { | 1225 | { |
1226 | dvb_attach(dvb_pll_attach, adap->fe, 0x60, | 1226 | dvb_attach(dvb_pll_attach, adap->fe[0], 0x60, |
1227 | &adap->dev->i2c_adap, DVB_PLL_TUA6034); | 1227 | &adap->dev->i2c_adap, DVB_PLL_TUA6034); |
1228 | 1228 | ||
1229 | return 0; | 1229 | return 0; |
diff --git a/drivers/media/dvb/dvb-usb/ec168.c b/drivers/media/dvb/dvb-usb/ec168.c index 1ba3e5dbee10..581bdfc0b1ff 100644 --- a/drivers/media/dvb/dvb-usb/ec168.c +++ b/drivers/media/dvb/dvb-usb/ec168.c | |||
@@ -200,9 +200,9 @@ static struct ec100_config ec168_ec100_config = { | |||
200 | static int ec168_ec100_frontend_attach(struct dvb_usb_adapter *adap) | 200 | static int ec168_ec100_frontend_attach(struct dvb_usb_adapter *adap) |
201 | { | 201 | { |
202 | deb_info("%s:\n", __func__); | 202 | deb_info("%s:\n", __func__); |
203 | adap->fe = dvb_attach(ec100_attach, &ec168_ec100_config, | 203 | adap->fe[0] = dvb_attach(ec100_attach, &ec168_ec100_config, |
204 | &adap->dev->i2c_adap); | 204 | &adap->dev->i2c_adap); |
205 | if (adap->fe == NULL) | 205 | if (adap->fe[0] == NULL) |
206 | return -ENODEV; | 206 | return -ENODEV; |
207 | 207 | ||
208 | return 0; | 208 | return 0; |
@@ -228,7 +228,7 @@ static struct mxl5005s_config ec168_mxl5003s_config = { | |||
228 | static int ec168_mxl5003s_tuner_attach(struct dvb_usb_adapter *adap) | 228 | static int ec168_mxl5003s_tuner_attach(struct dvb_usb_adapter *adap) |
229 | { | 229 | { |
230 | deb_info("%s:\n", __func__); | 230 | deb_info("%s:\n", __func__); |
231 | return dvb_attach(mxl5005s_attach, adap->fe, &adap->dev->i2c_adap, | 231 | return dvb_attach(mxl5005s_attach, adap->fe[0], &adap->dev->i2c_adap, |
232 | &ec168_mxl5003s_config) == NULL ? -ENODEV : 0; | 232 | &ec168_mxl5003s_config) == NULL ? -ENODEV : 0; |
233 | } | 233 | } |
234 | 234 | ||
diff --git a/drivers/media/dvb/dvb-usb/friio.c b/drivers/media/dvb/dvb-usb/friio.c index 76159aed9bb0..0e4b559720ea 100644 --- a/drivers/media/dvb/dvb-usb/friio.c +++ b/drivers/media/dvb/dvb-usb/friio.c | |||
@@ -403,8 +403,8 @@ static int friio_frontend_attach(struct dvb_usb_adapter *adap) | |||
403 | if (friio_initialize(adap->dev) < 0) | 403 | if (friio_initialize(adap->dev) < 0) |
404 | return -EIO; | 404 | return -EIO; |
405 | 405 | ||
406 | adap->fe = jdvbt90502_attach(adap->dev); | 406 | adap->fe[0] = jdvbt90502_attach(adap->dev); |
407 | if (adap->fe == NULL) | 407 | if (adap->fe[0] == NULL) |
408 | return -EIO; | 408 | return -EIO; |
409 | 409 | ||
410 | return 0; | 410 | return 0; |
diff --git a/drivers/media/dvb/dvb-usb/gl861.c b/drivers/media/dvb/dvb-usb/gl861.c index 6f596ed41761..fba24ed2e843 100644 --- a/drivers/media/dvb/dvb-usb/gl861.c +++ b/drivers/media/dvb/dvb-usb/gl861.c | |||
@@ -103,9 +103,9 @@ static struct zl10353_config gl861_zl10353_config = { | |||
103 | static int gl861_frontend_attach(struct dvb_usb_adapter *adap) | 103 | static int gl861_frontend_attach(struct dvb_usb_adapter *adap) |
104 | { | 104 | { |
105 | 105 | ||
106 | adap->fe = dvb_attach(zl10353_attach, &gl861_zl10353_config, | 106 | adap->fe[0] = dvb_attach(zl10353_attach, &gl861_zl10353_config, |
107 | &adap->dev->i2c_adap); | 107 | &adap->dev->i2c_adap); |
108 | if (adap->fe == NULL) | 108 | if (adap->fe[0] == NULL) |
109 | return -EIO; | 109 | return -EIO; |
110 | 110 | ||
111 | return 0; | 111 | return 0; |
@@ -118,7 +118,7 @@ static struct qt1010_config gl861_qt1010_config = { | |||
118 | static int gl861_tuner_attach(struct dvb_usb_adapter *adap) | 118 | static int gl861_tuner_attach(struct dvb_usb_adapter *adap) |
119 | { | 119 | { |
120 | return dvb_attach(qt1010_attach, | 120 | return dvb_attach(qt1010_attach, |
121 | adap->fe, &adap->dev->i2c_adap, | 121 | adap->fe[0], &adap->dev->i2c_adap, |
122 | &gl861_qt1010_config) == NULL ? -ENODEV : 0; | 122 | &gl861_qt1010_config) == NULL ? -ENODEV : 0; |
123 | } | 123 | } |
124 | 124 | ||
diff --git a/drivers/media/dvb/dvb-usb/gp8psk.c b/drivers/media/dvb/dvb-usb/gp8psk.c index 1cb3d9a66e02..f254e13c35be 100644 --- a/drivers/media/dvb/dvb-usb/gp8psk.c +++ b/drivers/media/dvb/dvb-usb/gp8psk.c | |||
@@ -230,7 +230,7 @@ static int gp8psk_streaming_ctrl(struct dvb_usb_adapter *adap, int onoff) | |||
230 | 230 | ||
231 | static int gp8psk_frontend_attach(struct dvb_usb_adapter *adap) | 231 | static int gp8psk_frontend_attach(struct dvb_usb_adapter *adap) |
232 | { | 232 | { |
233 | adap->fe = gp8psk_fe_attach(adap->dev); | 233 | adap->fe[0] = gp8psk_fe_attach(adap->dev); |
234 | return 0; | 234 | return 0; |
235 | } | 235 | } |
236 | 236 | ||
diff --git a/drivers/media/dvb/dvb-usb/lmedm04.c b/drivers/media/dvb/dvb-usb/lmedm04.c index 37b146961ae2..ef5911a2d342 100644 --- a/drivers/media/dvb/dvb-usb/lmedm04.c +++ b/drivers/media/dvb/dvb-usb/lmedm04.c | |||
@@ -941,7 +941,7 @@ static int lme_name(struct dvb_usb_adapter *adap) | |||
941 | const char *desc = adap->dev->desc->name; | 941 | const char *desc = adap->dev->desc->name; |
942 | char *fe_name[] = {"", " LG TDQY-P001F", " SHARP:BS2F7HZ7395", | 942 | char *fe_name[] = {"", " LG TDQY-P001F", " SHARP:BS2F7HZ7395", |
943 | " SHARP:BS2F7HZ0194"}; | 943 | " SHARP:BS2F7HZ0194"}; |
944 | char *name = adap->fe->ops.info.name; | 944 | char *name = adap->fe[0]->ops.info.name; |
945 | 945 | ||
946 | strlcpy(name, desc, 128); | 946 | strlcpy(name, desc, 128); |
947 | strlcat(name, fe_name[st->tuner_config], 128); | 947 | strlcat(name, fe_name[st->tuner_config], 128); |
@@ -958,10 +958,10 @@ static int dm04_lme2510_frontend_attach(struct dvb_usb_adapter *adap) | |||
958 | st->i2c_talk_onoff = 1; | 958 | st->i2c_talk_onoff = 1; |
959 | 959 | ||
960 | st->i2c_gate = 4; | 960 | st->i2c_gate = 4; |
961 | adap->fe = dvb_attach(tda10086_attach, &tda10086_config, | 961 | adap->fe[0] = dvb_attach(tda10086_attach, &tda10086_config, |
962 | &adap->dev->i2c_adap); | 962 | &adap->dev->i2c_adap); |
963 | 963 | ||
964 | if (adap->fe) { | 964 | if (adap->fe[0]) { |
965 | info("TUN Found Frontend TDA10086"); | 965 | info("TUN Found Frontend TDA10086"); |
966 | st->i2c_tuner_gate_w = 4; | 966 | st->i2c_tuner_gate_w = 4; |
967 | st->i2c_tuner_gate_r = 4; | 967 | st->i2c_tuner_gate_r = 4; |
@@ -975,9 +975,9 @@ static int dm04_lme2510_frontend_attach(struct dvb_usb_adapter *adap) | |||
975 | } | 975 | } |
976 | 976 | ||
977 | st->i2c_gate = 4; | 977 | st->i2c_gate = 4; |
978 | adap->fe = dvb_attach(stv0299_attach, &sharp_z0194_config, | 978 | adap->fe[0] = dvb_attach(stv0299_attach, &sharp_z0194_config, |
979 | &adap->dev->i2c_adap); | 979 | &adap->dev->i2c_adap); |
980 | if (adap->fe) { | 980 | if (adap->fe[0]) { |
981 | info("FE Found Stv0299"); | 981 | info("FE Found Stv0299"); |
982 | st->i2c_tuner_gate_w = 4; | 982 | st->i2c_tuner_gate_w = 4; |
983 | st->i2c_tuner_gate_r = 5; | 983 | st->i2c_tuner_gate_r = 5; |
@@ -991,9 +991,9 @@ static int dm04_lme2510_frontend_attach(struct dvb_usb_adapter *adap) | |||
991 | } | 991 | } |
992 | 992 | ||
993 | st->i2c_gate = 5; | 993 | st->i2c_gate = 5; |
994 | adap->fe = dvb_attach(stv0288_attach, &lme_config, | 994 | adap->fe[0] = dvb_attach(stv0288_attach, &lme_config, |
995 | &adap->dev->i2c_adap); | 995 | &adap->dev->i2c_adap); |
996 | if (adap->fe) { | 996 | if (adap->fe[0]) { |
997 | info("FE Found Stv0288"); | 997 | info("FE Found Stv0288"); |
998 | st->i2c_tuner_gate_w = 4; | 998 | st->i2c_tuner_gate_w = 4; |
999 | st->i2c_tuner_gate_r = 5; | 999 | st->i2c_tuner_gate_r = 5; |
@@ -1010,15 +1010,15 @@ static int dm04_lme2510_frontend_attach(struct dvb_usb_adapter *adap) | |||
1010 | 1010 | ||
1011 | 1011 | ||
1012 | end: if (ret) { | 1012 | end: if (ret) { |
1013 | if (adap->fe) { | 1013 | if (adap->fe[0]) { |
1014 | dvb_frontend_detach(adap->fe); | 1014 | dvb_frontend_detach(adap->fe[0]); |
1015 | adap->fe = NULL; | 1015 | adap->fe[0] = NULL; |
1016 | } | 1016 | } |
1017 | adap->dev->props.rc.core.rc_codes = NULL; | 1017 | adap->dev->props.rc.core.rc_codes = NULL; |
1018 | return -ENODEV; | 1018 | return -ENODEV; |
1019 | } | 1019 | } |
1020 | 1020 | ||
1021 | adap->fe->ops.set_voltage = dm04_lme2510_set_voltage; | 1021 | adap->fe[0]->ops.set_voltage = dm04_lme2510_set_voltage; |
1022 | ret = lme_name(adap); | 1022 | ret = lme_name(adap); |
1023 | return ret; | 1023 | return ret; |
1024 | } | 1024 | } |
@@ -1031,17 +1031,17 @@ static int dm04_lme2510_tuner(struct dvb_usb_adapter *adap) | |||
1031 | 1031 | ||
1032 | switch (st->tuner_config) { | 1032 | switch (st->tuner_config) { |
1033 | case TUNER_LG: | 1033 | case TUNER_LG: |
1034 | if (dvb_attach(tda826x_attach, adap->fe, 0xc0, | 1034 | if (dvb_attach(tda826x_attach, adap->fe[0], 0xc0, |
1035 | &adap->dev->i2c_adap, 1)) | 1035 | &adap->dev->i2c_adap, 1)) |
1036 | ret = st->tuner_config; | 1036 | ret = st->tuner_config; |
1037 | break; | 1037 | break; |
1038 | case TUNER_S7395: | 1038 | case TUNER_S7395: |
1039 | if (dvb_attach(ix2505v_attach , adap->fe, &lme_tuner, | 1039 | if (dvb_attach(ix2505v_attach , adap->fe[0], &lme_tuner, |
1040 | &adap->dev->i2c_adap)) | 1040 | &adap->dev->i2c_adap)) |
1041 | ret = st->tuner_config; | 1041 | ret = st->tuner_config; |
1042 | break; | 1042 | break; |
1043 | case TUNER_S0194: | 1043 | case TUNER_S0194: |
1044 | if (dvb_attach(dvb_pll_attach , adap->fe, 0xc0, | 1044 | if (dvb_attach(dvb_pll_attach , adap->fe[0], 0xc0, |
1045 | &adap->dev->i2c_adap, DVB_PLL_OPERA1)) | 1045 | &adap->dev->i2c_adap, DVB_PLL_OPERA1)) |
1046 | ret = st->tuner_config; | 1046 | ret = st->tuner_config; |
1047 | break; | 1047 | break; |
diff --git a/drivers/media/dvb/dvb-usb/m920x.c b/drivers/media/dvb/dvb-usb/m920x.c index 9456792f219b..ed5c161c1c4b 100644 --- a/drivers/media/dvb/dvb-usb/m920x.c +++ b/drivers/media/dvb/dvb-usb/m920x.c | |||
@@ -501,7 +501,7 @@ static int m920x_mt352_frontend_attach(struct dvb_usb_adapter *adap) | |||
501 | { | 501 | { |
502 | deb("%s\n",__func__); | 502 | deb("%s\n",__func__); |
503 | 503 | ||
504 | if ((adap->fe = dvb_attach(mt352_attach, | 504 | if ((adap->fe[0] = dvb_attach(mt352_attach, |
505 | &m920x_mt352_config, | 505 | &m920x_mt352_config, |
506 | &adap->dev->i2c_adap)) == NULL) | 506 | &adap->dev->i2c_adap)) == NULL) |
507 | return -EIO; | 507 | return -EIO; |
@@ -513,7 +513,7 @@ static int m920x_tda10046_08_frontend_attach(struct dvb_usb_adapter *adap) | |||
513 | { | 513 | { |
514 | deb("%s\n",__func__); | 514 | deb("%s\n",__func__); |
515 | 515 | ||
516 | if ((adap->fe = dvb_attach(tda10046_attach, | 516 | if ((adap->fe[0] = dvb_attach(tda10046_attach, |
517 | &m920x_tda10046_08_config, | 517 | &m920x_tda10046_08_config, |
518 | &adap->dev->i2c_adap)) == NULL) | 518 | &adap->dev->i2c_adap)) == NULL) |
519 | return -EIO; | 519 | return -EIO; |
@@ -525,7 +525,7 @@ static int m920x_tda10046_0b_frontend_attach(struct dvb_usb_adapter *adap) | |||
525 | { | 525 | { |
526 | deb("%s\n",__func__); | 526 | deb("%s\n",__func__); |
527 | 527 | ||
528 | if ((adap->fe = dvb_attach(tda10046_attach, | 528 | if ((adap->fe[0] = dvb_attach(tda10046_attach, |
529 | &m920x_tda10046_0b_config, | 529 | &m920x_tda10046_0b_config, |
530 | &adap->dev->i2c_adap)) == NULL) | 530 | &adap->dev->i2c_adap)) == NULL) |
531 | return -EIO; | 531 | return -EIO; |
@@ -537,7 +537,7 @@ static int m920x_qt1010_tuner_attach(struct dvb_usb_adapter *adap) | |||
537 | { | 537 | { |
538 | deb("%s\n",__func__); | 538 | deb("%s\n",__func__); |
539 | 539 | ||
540 | if (dvb_attach(qt1010_attach, adap->fe, &adap->dev->i2c_adap, &m920x_qt1010_config) == NULL) | 540 | if (dvb_attach(qt1010_attach, adap->fe[0], &adap->dev->i2c_adap, &m920x_qt1010_config) == NULL) |
541 | return -ENODEV; | 541 | return -ENODEV; |
542 | 542 | ||
543 | return 0; | 543 | return 0; |
@@ -547,7 +547,7 @@ static int m920x_tda8275_60_tuner_attach(struct dvb_usb_adapter *adap) | |||
547 | { | 547 | { |
548 | deb("%s\n",__func__); | 548 | deb("%s\n",__func__); |
549 | 549 | ||
550 | if (dvb_attach(tda827x_attach, adap->fe, 0x60, &adap->dev->i2c_adap, NULL) == NULL) | 550 | if (dvb_attach(tda827x_attach, adap->fe[0], 0x60, &adap->dev->i2c_adap, NULL) == NULL) |
551 | return -ENODEV; | 551 | return -ENODEV; |
552 | 552 | ||
553 | return 0; | 553 | return 0; |
@@ -557,7 +557,7 @@ static int m920x_tda8275_61_tuner_attach(struct dvb_usb_adapter *adap) | |||
557 | { | 557 | { |
558 | deb("%s\n",__func__); | 558 | deb("%s\n",__func__); |
559 | 559 | ||
560 | if (dvb_attach(tda827x_attach, adap->fe, 0x61, &adap->dev->i2c_adap, NULL) == NULL) | 560 | if (dvb_attach(tda827x_attach, adap->fe[0], 0x61, &adap->dev->i2c_adap, NULL) == NULL) |
561 | return -ENODEV; | 561 | return -ENODEV; |
562 | 562 | ||
563 | return 0; | 563 | return 0; |
@@ -565,7 +565,7 @@ static int m920x_tda8275_61_tuner_attach(struct dvb_usb_adapter *adap) | |||
565 | 565 | ||
566 | static int m920x_fmd1216me_tuner_attach(struct dvb_usb_adapter *adap) | 566 | static int m920x_fmd1216me_tuner_attach(struct dvb_usb_adapter *adap) |
567 | { | 567 | { |
568 | dvb_attach(simple_tuner_attach, adap->fe, | 568 | dvb_attach(simple_tuner_attach, adap->fe[0], |
569 | &adap->dev->i2c_adap, 0x61, | 569 | &adap->dev->i2c_adap, 0x61, |
570 | TUNER_PHILIPS_FMD1216ME_MK3); | 570 | TUNER_PHILIPS_FMD1216ME_MK3); |
571 | return 0; | 571 | return 0; |
diff --git a/drivers/media/dvb/dvb-usb/opera1.c b/drivers/media/dvb/dvb-usb/opera1.c index 2e4fab7215f5..170b1ef16fac 100644 --- a/drivers/media/dvb/dvb-usb/opera1.c +++ b/drivers/media/dvb/dvb-usb/opera1.c | |||
@@ -263,10 +263,10 @@ static struct stv0299_config opera1_stv0299_config = { | |||
263 | 263 | ||
264 | static int opera1_frontend_attach(struct dvb_usb_adapter *d) | 264 | static int opera1_frontend_attach(struct dvb_usb_adapter *d) |
265 | { | 265 | { |
266 | if ((d->fe = | 266 | if ((d->fe[0] = |
267 | dvb_attach(stv0299_attach, &opera1_stv0299_config, | 267 | dvb_attach(stv0299_attach, &opera1_stv0299_config, |
268 | &d->dev->i2c_adap)) != NULL) { | 268 | &d->dev->i2c_adap)) != NULL) { |
269 | d->fe->ops.set_voltage = opera1_set_voltage; | 269 | d->fe[0]->ops.set_voltage = opera1_set_voltage; |
270 | return 0; | 270 | return 0; |
271 | } | 271 | } |
272 | info("not attached stv0299"); | 272 | info("not attached stv0299"); |
@@ -276,7 +276,7 @@ static int opera1_frontend_attach(struct dvb_usb_adapter *d) | |||
276 | static int opera1_tuner_attach(struct dvb_usb_adapter *adap) | 276 | static int opera1_tuner_attach(struct dvb_usb_adapter *adap) |
277 | { | 277 | { |
278 | dvb_attach( | 278 | dvb_attach( |
279 | dvb_pll_attach, adap->fe, 0xc0>>1, | 279 | dvb_pll_attach, adap->fe[0], 0xc0>>1, |
280 | &adap->dev->i2c_adap, DVB_PLL_OPERA1 | 280 | &adap->dev->i2c_adap, DVB_PLL_OPERA1 |
281 | ); | 281 | ); |
282 | return 0; | 282 | return 0; |
diff --git a/drivers/media/dvb/dvb-usb/technisat-usb2.c b/drivers/media/dvb/dvb-usb/technisat-usb2.c index 473b95ed4d52..2a89d1ef89a3 100644 --- a/drivers/media/dvb/dvb-usb/technisat-usb2.c +++ b/drivers/media/dvb/dvb-usb/technisat-usb2.c | |||
@@ -292,7 +292,7 @@ static void technisat_usb2_green_led_control(struct work_struct *work) | |||
292 | { | 292 | { |
293 | struct technisat_usb2_state *state = | 293 | struct technisat_usb2_state *state = |
294 | container_of(work, struct technisat_usb2_state, green_led_work.work); | 294 | container_of(work, struct technisat_usb2_state, green_led_work.work); |
295 | struct dvb_frontend *fe = state->dev->adapter[0].fe; | 295 | struct dvb_frontend *fe = state->dev->adapter[0].fe[0]; |
296 | 296 | ||
297 | if (state->power_state == 0) | 297 | if (state->power_state == 0) |
298 | goto schedule; | 298 | goto schedule; |
@@ -505,14 +505,14 @@ static int technisat_usb2_frontend_attach(struct dvb_usb_adapter *a) | |||
505 | struct usb_device *udev = a->dev->udev; | 505 | struct usb_device *udev = a->dev->udev; |
506 | int ret; | 506 | int ret; |
507 | 507 | ||
508 | a->fe = dvb_attach(stv090x_attach, &technisat_usb2_stv090x_config, | 508 | a->fe[0] = dvb_attach(stv090x_attach, &technisat_usb2_stv090x_config, |
509 | &a->dev->i2c_adap, STV090x_DEMODULATOR_0); | 509 | &a->dev->i2c_adap, STV090x_DEMODULATOR_0); |
510 | 510 | ||
511 | if (a->fe) { | 511 | if (a->fe[0]) { |
512 | struct stv6110x_devctl *ctl; | 512 | struct stv6110x_devctl *ctl; |
513 | 513 | ||
514 | ctl = dvb_attach(stv6110x_attach, | 514 | ctl = dvb_attach(stv6110x_attach, |
515 | a->fe, | 515 | a->fe[0], |
516 | &technisat_usb2_stv6110x_config, | 516 | &technisat_usb2_stv6110x_config, |
517 | &a->dev->i2c_adap); | 517 | &a->dev->i2c_adap); |
518 | 518 | ||
@@ -532,8 +532,8 @@ static int technisat_usb2_frontend_attach(struct dvb_usb_adapter *a) | |||
532 | /* call the init function once to initialize | 532 | /* call the init function once to initialize |
533 | tuner's clock output divider and demod's | 533 | tuner's clock output divider and demod's |
534 | master clock */ | 534 | master clock */ |
535 | if (a->fe->ops.init) | 535 | if (a->fe[0]->ops.init) |
536 | a->fe->ops.init(a->fe); | 536 | a->fe[0]->ops.init(a->fe[0]); |
537 | 537 | ||
538 | if (mutex_lock_interruptible(&a->dev->i2c_mutex) < 0) | 538 | if (mutex_lock_interruptible(&a->dev->i2c_mutex) < 0) |
539 | return -EAGAIN; | 539 | return -EAGAIN; |
@@ -548,20 +548,20 @@ static int technisat_usb2_frontend_attach(struct dvb_usb_adapter *a) | |||
548 | if (ret != 0) | 548 | if (ret != 0) |
549 | err("could not set IF_CLK to external"); | 549 | err("could not set IF_CLK to external"); |
550 | 550 | ||
551 | a->fe->ops.set_voltage = technisat_usb2_set_voltage; | 551 | a->fe[0]->ops.set_voltage = technisat_usb2_set_voltage; |
552 | 552 | ||
553 | /* if everything was successful assign a nice name to the frontend */ | 553 | /* if everything was successful assign a nice name to the frontend */ |
554 | strlcpy(a->fe->ops.info.name, a->dev->desc->name, | 554 | strlcpy(a->fe[0]->ops.info.name, a->dev->desc->name, |
555 | sizeof(a->fe->ops.info.name)); | 555 | sizeof(a->fe[0]->ops.info.name)); |
556 | } else { | 556 | } else { |
557 | dvb_frontend_detach(a->fe); | 557 | dvb_frontend_detach(a->fe[0]); |
558 | a->fe = NULL; | 558 | a->fe[0] = NULL; |
559 | } | 559 | } |
560 | } | 560 | } |
561 | 561 | ||
562 | technisat_usb2_set_led_timer(a->dev, 1, 1); | 562 | technisat_usb2_set_led_timer(a->dev, 1, 1); |
563 | 563 | ||
564 | return a->fe == NULL ? -ENODEV : 0; | 564 | return a->fe[0] == NULL ? -ENODEV : 0; |
565 | } | 565 | } |
566 | 566 | ||
567 | /* Remote control */ | 567 | /* Remote control */ |
diff --git a/drivers/media/dvb/dvb-usb/ttusb2.c b/drivers/media/dvb/dvb-usb/ttusb2.c index 0d4709ff9cbb..c0f5ef56f5e9 100644 --- a/drivers/media/dvb/dvb-usb/ttusb2.c +++ b/drivers/media/dvb/dvb-usb/ttusb2.c | |||
@@ -195,7 +195,7 @@ static int ttusb2_frontend_tda10086_attach(struct dvb_usb_adapter *adap) | |||
195 | if (usb_set_interface(adap->dev->udev,0,3) < 0) | 195 | if (usb_set_interface(adap->dev->udev,0,3) < 0) |
196 | err("set interface to alts=3 failed"); | 196 | err("set interface to alts=3 failed"); |
197 | 197 | ||
198 | if ((adap->fe = dvb_attach(tda10086_attach, &tda10086_config, &adap->dev->i2c_adap)) == NULL) { | 198 | if ((adap->fe[0] = dvb_attach(tda10086_attach, &tda10086_config, &adap->dev->i2c_adap)) == NULL) { |
199 | deb_info("TDA10086 attach failed\n"); | 199 | deb_info("TDA10086 attach failed\n"); |
200 | return -ENODEV; | 200 | return -ENODEV; |
201 | } | 201 | } |
@@ -207,7 +207,7 @@ static int ttusb2_frontend_tda10023_attach(struct dvb_usb_adapter *adap) | |||
207 | { | 207 | { |
208 | if (usb_set_interface(adap->dev->udev, 0, 3) < 0) | 208 | if (usb_set_interface(adap->dev->udev, 0, 3) < 0) |
209 | err("set interface to alts=3 failed"); | 209 | err("set interface to alts=3 failed"); |
210 | if ((adap->fe = dvb_attach(tda10023_attach, &tda10023_config, &adap->dev->i2c_adap, 0x48)) == NULL) { | 210 | if ((adap->fe[0] = dvb_attach(tda10023_attach, &tda10023_config, &adap->dev->i2c_adap, 0x48)) == NULL) { |
211 | deb_info("TDA10023 attach failed\n"); | 211 | deb_info("TDA10023 attach failed\n"); |
212 | return -ENODEV; | 212 | return -ENODEV; |
213 | } | 213 | } |
@@ -216,7 +216,7 @@ static int ttusb2_frontend_tda10023_attach(struct dvb_usb_adapter *adap) | |||
216 | 216 | ||
217 | static int ttusb2_tuner_tda827x_attach(struct dvb_usb_adapter *adap) | 217 | static int ttusb2_tuner_tda827x_attach(struct dvb_usb_adapter *adap) |
218 | { | 218 | { |
219 | if (dvb_attach(tda827x_attach, adap->fe, 0x61, &adap->dev->i2c_adap, NULL) == NULL) { | 219 | if (dvb_attach(tda827x_attach, adap->fe[0], 0x61, &adap->dev->i2c_adap, NULL) == NULL) { |
220 | printk(KERN_ERR "%s: No tda827x found!\n", __func__); | 220 | printk(KERN_ERR "%s: No tda827x found!\n", __func__); |
221 | return -ENODEV; | 221 | return -ENODEV; |
222 | } | 222 | } |
@@ -225,12 +225,12 @@ static int ttusb2_tuner_tda827x_attach(struct dvb_usb_adapter *adap) | |||
225 | 225 | ||
226 | static int ttusb2_tuner_tda826x_attach(struct dvb_usb_adapter *adap) | 226 | static int ttusb2_tuner_tda826x_attach(struct dvb_usb_adapter *adap) |
227 | { | 227 | { |
228 | if (dvb_attach(tda826x_attach, adap->fe, 0x60, &adap->dev->i2c_adap, 0) == NULL) { | 228 | if (dvb_attach(tda826x_attach, adap->fe[0], 0x60, &adap->dev->i2c_adap, 0) == NULL) { |
229 | deb_info("TDA8263 attach failed\n"); | 229 | deb_info("TDA8263 attach failed\n"); |
230 | return -ENODEV; | 230 | return -ENODEV; |
231 | } | 231 | } |
232 | 232 | ||
233 | if (dvb_attach(lnbp21_attach, adap->fe, &adap->dev->i2c_adap, 0, 0) == NULL) { | 233 | if (dvb_attach(lnbp21_attach, adap->fe[0], &adap->dev->i2c_adap, 0, 0) == NULL) { |
234 | deb_info("LNBP21 attach failed\n"); | 234 | deb_info("LNBP21 attach failed\n"); |
235 | return -ENODEV; | 235 | return -ENODEV; |
236 | } | 236 | } |
diff --git a/drivers/media/dvb/dvb-usb/umt-010.c b/drivers/media/dvb/dvb-usb/umt-010.c index 118aab1a3e54..ed4765a1f323 100644 --- a/drivers/media/dvb/dvb-usb/umt-010.c +++ b/drivers/media/dvb/dvb-usb/umt-010.c | |||
@@ -60,14 +60,14 @@ static int umt_mt352_frontend_attach(struct dvb_usb_adapter *adap) | |||
60 | umt_config.demod_init = umt_mt352_demod_init; | 60 | umt_config.demod_init = umt_mt352_demod_init; |
61 | umt_config.demod_address = 0xf; | 61 | umt_config.demod_address = 0xf; |
62 | 62 | ||
63 | adap->fe = dvb_attach(mt352_attach, &umt_config, &adap->dev->i2c_adap); | 63 | adap->fe[0] = dvb_attach(mt352_attach, &umt_config, &adap->dev->i2c_adap); |
64 | 64 | ||
65 | return 0; | 65 | return 0; |
66 | } | 66 | } |
67 | 67 | ||
68 | static int umt_tuner_attach (struct dvb_usb_adapter *adap) | 68 | static int umt_tuner_attach (struct dvb_usb_adapter *adap) |
69 | { | 69 | { |
70 | dvb_attach(dvb_pll_attach, adap->fe, 0x61, NULL, DVB_PLL_TUA6034); | 70 | dvb_attach(dvb_pll_attach, adap->fe[0], 0x61, NULL, DVB_PLL_TUA6034); |
71 | return 0; | 71 | return 0; |
72 | } | 72 | } |
73 | 73 | ||
diff --git a/drivers/media/dvb/dvb-usb/vp702x.c b/drivers/media/dvb/dvb-usb/vp702x.c index 54355f84a98f..47b3462cead8 100644 --- a/drivers/media/dvb/dvb-usb/vp702x.c +++ b/drivers/media/dvb/dvb-usb/vp702x.c | |||
@@ -320,7 +320,7 @@ static int vp702x_frontend_attach(struct dvb_usb_adapter *adap) | |||
320 | 320 | ||
321 | vp702x_init_pid_filter(adap); | 321 | vp702x_init_pid_filter(adap); |
322 | 322 | ||
323 | adap->fe = vp702x_fe_attach(adap->dev); | 323 | adap->fe[0] = vp702x_fe_attach(adap->dev); |
324 | vp702x_usb_out_op(adap->dev, SET_TUNER_POWER_REQ, 1, 7, NULL, 0); | 324 | vp702x_usb_out_op(adap->dev, SET_TUNER_POWER_REQ, 1, 7, NULL, 0); |
325 | 325 | ||
326 | return 0; | 326 | return 0; |
diff --git a/drivers/media/dvb/dvb-usb/vp7045.c b/drivers/media/dvb/dvb-usb/vp7045.c index 3db89e3cb0bb..4264523fcf67 100644 --- a/drivers/media/dvb/dvb-usb/vp7045.c +++ b/drivers/media/dvb/dvb-usb/vp7045.c | |||
@@ -214,7 +214,7 @@ static int vp7045_frontend_attach(struct dvb_usb_adapter *adap) | |||
214 | /* Dump the EEPROM */ | 214 | /* Dump the EEPROM */ |
215 | /* vp7045_read_eeprom(d,buf, 255, FX2_ID_ADDR); */ | 215 | /* vp7045_read_eeprom(d,buf, 255, FX2_ID_ADDR); */ |
216 | 216 | ||
217 | adap->fe = vp7045_fe_attach(adap->dev); | 217 | adap->fe[0] = vp7045_fe_attach(adap->dev); |
218 | 218 | ||
219 | return 0; | 219 | return 0; |
220 | } | 220 | } |