aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/media/dvb/frontends/dib7000m.c
diff options
context:
space:
mode:
authorMauro Carvalho Chehab <mchehab@redhat.com>2011-12-22 17:06:20 -0500
committerMauro Carvalho Chehab <mchehab@redhat.com>2011-12-31 06:15:34 -0500
commitc1f814f49904ae5b275407f71aefd3a31c774098 (patch)
treed6cb68dfbf989b34cbdb071a13792436cc771fa2 /drivers/media/dvb/frontends/dib7000m.c
parenta73efc05b7fc7686b6333c48732a0ba5777e3726 (diff)
[media] dibx000: convert set_fontend to use DVBv5 parameters
Instead of using dvb_frontend_parameters struct, that were designed for a subset of the supported standards, use the DVBv5 cache information. Also, fill the supported delivery systems at dvb_frontend_ops struct. Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Diffstat (limited to 'drivers/media/dvb/frontends/dib7000m.c')
-rw-r--r--drivers/media/dvb/frontends/dib7000m.c135
1 files changed, 72 insertions, 63 deletions
diff --git a/drivers/media/dvb/frontends/dib7000m.c b/drivers/media/dvb/frontends/dib7000m.c
index 45c110590b7f..29123aebf870 100644
--- a/drivers/media/dvb/frontends/dib7000m.c
+++ b/drivers/media/dvb/frontends/dib7000m.c
@@ -313,6 +313,9 @@ static int dib7000m_set_bandwidth(struct dib7000m_state *state, u32 bw)
313{ 313{
314 u32 timf; 314 u32 timf;
315 315
316 if (!bw)
317 bw = 8000;
318
316 // store the current bandwidth for later use 319 // store the current bandwidth for later use
317 state->current_bandwidth = bw; 320 state->current_bandwidth = bw;
318 321
@@ -742,8 +745,9 @@ static void dib7000m_update_timf(struct dib7000m_state *state)
742 dprintk( "updated timf_frequency: %d (default: %d)",state->timf, state->timf_default); 745 dprintk( "updated timf_frequency: %d (default: %d)",state->timf, state->timf_default);
743} 746}
744 747
745static int dib7000m_agc_startup(struct dvb_frontend *demod, struct dvb_frontend_parameters *ch) 748static int dib7000m_agc_startup(struct dvb_frontend *demod)
746{ 749{
750 struct dtv_frontend_properties *ch = &demod->dtv_property_cache;
747 struct dib7000m_state *state = demod->demodulator_priv; 751 struct dib7000m_state *state = demod->demodulator_priv;
748 u16 cfg_72 = dib7000m_read_word(state, 72); 752 u16 cfg_72 = dib7000m_read_word(state, 72);
749 int ret = -1; 753 int ret = -1;
@@ -832,28 +836,29 @@ static int dib7000m_agc_startup(struct dvb_frontend *demod, struct dvb_frontend_
832 return ret; 836 return ret;
833} 837}
834 838
835static void dib7000m_set_channel(struct dib7000m_state *state, struct dvb_frontend_parameters *ch, u8 seq) 839static void dib7000m_set_channel(struct dib7000m_state *state, struct dtv_frontend_properties *ch,
840 u8 seq)
836{ 841{
837 u16 value, est[4]; 842 u16 value, est[4];
838 843
839 dib7000m_set_bandwidth(state, BANDWIDTH_TO_KHZ(ch->u.ofdm.bandwidth)); 844 dib7000m_set_bandwidth(state, BANDWIDTH_TO_KHZ(ch->bandwidth_hz));
840 845
841 /* nfft, guard, qam, alpha */ 846 /* nfft, guard, qam, alpha */
842 value = 0; 847 value = 0;
843 switch (ch->u.ofdm.transmission_mode) { 848 switch (ch->transmission_mode) {
844 case TRANSMISSION_MODE_2K: value |= (0 << 7); break; 849 case TRANSMISSION_MODE_2K: value |= (0 << 7); break;
845 case TRANSMISSION_MODE_4K: value |= (2 << 7); break; 850 case TRANSMISSION_MODE_4K: value |= (2 << 7); break;
846 default: 851 default:
847 case TRANSMISSION_MODE_8K: value |= (1 << 7); break; 852 case TRANSMISSION_MODE_8K: value |= (1 << 7); break;
848 } 853 }
849 switch (ch->u.ofdm.guard_interval) { 854 switch (ch->guard_interval) {
850 case GUARD_INTERVAL_1_32: value |= (0 << 5); break; 855 case GUARD_INTERVAL_1_32: value |= (0 << 5); break;
851 case GUARD_INTERVAL_1_16: value |= (1 << 5); break; 856 case GUARD_INTERVAL_1_16: value |= (1 << 5); break;
852 case GUARD_INTERVAL_1_4: value |= (3 << 5); break; 857 case GUARD_INTERVAL_1_4: value |= (3 << 5); break;
853 default: 858 default:
854 case GUARD_INTERVAL_1_8: value |= (2 << 5); break; 859 case GUARD_INTERVAL_1_8: value |= (2 << 5); break;
855 } 860 }
856 switch (ch->u.ofdm.constellation) { 861 switch (ch->modulation) {
857 case QPSK: value |= (0 << 3); break; 862 case QPSK: value |= (0 << 3); break;
858 case QAM_16: value |= (1 << 3); break; 863 case QAM_16: value |= (1 << 3); break;
859 default: 864 default:
@@ -872,11 +877,11 @@ static void dib7000m_set_channel(struct dib7000m_state *state, struct dvb_fronte
872 value = 0; 877 value = 0;
873 if (1 != 0) 878 if (1 != 0)
874 value |= (1 << 6); 879 value |= (1 << 6);
875 if (ch->u.ofdm.hierarchy_information == 1) 880 if (ch->hierarchy == 1)
876 value |= (1 << 4); 881 value |= (1 << 4);
877 if (1 == 1) 882 if (1 == 1)
878 value |= 1; 883 value |= 1;
879 switch ((ch->u.ofdm.hierarchy_information == 0 || 1 == 1) ? ch->u.ofdm.code_rate_HP : ch->u.ofdm.code_rate_LP) { 884 switch ((ch->hierarchy == 0 || 1 == 1) ? ch->code_rate_HP : ch->code_rate_LP) {
880 case FEC_2_3: value |= (2 << 1); break; 885 case FEC_2_3: value |= (2 << 1); break;
881 case FEC_3_4: value |= (3 << 1); break; 886 case FEC_3_4: value |= (3 << 1); break;
882 case FEC_5_6: value |= (5 << 1); break; 887 case FEC_5_6: value |= (5 << 1); break;
@@ -901,13 +906,13 @@ static void dib7000m_set_channel(struct dib7000m_state *state, struct dvb_fronte
901 dib7000m_write_word(state, 33, (0 << 4) | 0x5); 906 dib7000m_write_word(state, 33, (0 << 4) | 0x5);
902 907
903 /* P_dvsy_sync_wait */ 908 /* P_dvsy_sync_wait */
904 switch (ch->u.ofdm.transmission_mode) { 909 switch (ch->transmission_mode) {
905 case TRANSMISSION_MODE_8K: value = 256; break; 910 case TRANSMISSION_MODE_8K: value = 256; break;
906 case TRANSMISSION_MODE_4K: value = 128; break; 911 case TRANSMISSION_MODE_4K: value = 128; break;
907 case TRANSMISSION_MODE_2K: 912 case TRANSMISSION_MODE_2K:
908 default: value = 64; break; 913 default: value = 64; break;
909 } 914 }
910 switch (ch->u.ofdm.guard_interval) { 915 switch (ch->guard_interval) {
911 case GUARD_INTERVAL_1_16: value *= 2; break; 916 case GUARD_INTERVAL_1_16: value *= 2; break;
912 case GUARD_INTERVAL_1_8: value *= 4; break; 917 case GUARD_INTERVAL_1_8: value *= 4; break;
913 case GUARD_INTERVAL_1_4: value *= 8; break; 918 case GUARD_INTERVAL_1_4: value *= 8; break;
@@ -925,7 +930,7 @@ static void dib7000m_set_channel(struct dib7000m_state *state, struct dvb_fronte
925 dib7000m_set_diversity_in(&state->demod, state->div_state); 930 dib7000m_set_diversity_in(&state->demod, state->div_state);
926 931
927 /* channel estimation fine configuration */ 932 /* channel estimation fine configuration */
928 switch (ch->u.ofdm.constellation) { 933 switch (ch->modulation) {
929 case QAM_64: 934 case QAM_64:
930 est[0] = 0x0148; /* P_adp_regul_cnt 0.04 */ 935 est[0] = 0x0148; /* P_adp_regul_cnt 0.04 */
931 est[1] = 0xfff0; /* P_adp_noise_cnt -0.002 */ 936 est[1] = 0xfff0; /* P_adp_noise_cnt -0.002 */
@@ -952,25 +957,26 @@ static void dib7000m_set_channel(struct dib7000m_state *state, struct dvb_fronte
952 dib7000m_set_power_mode(state, DIB7000M_POWER_COR4_DINTLV_ICIRM_EQUAL_CFROD); 957 dib7000m_set_power_mode(state, DIB7000M_POWER_COR4_DINTLV_ICIRM_EQUAL_CFROD);
953} 958}
954 959
955static int dib7000m_autosearch_start(struct dvb_frontend *demod, struct dvb_frontend_parameters *ch) 960static int dib7000m_autosearch_start(struct dvb_frontend *demod)
956{ 961{
962 struct dtv_frontend_properties *ch = &demod->dtv_property_cache;
957 struct dib7000m_state *state = demod->demodulator_priv; 963 struct dib7000m_state *state = demod->demodulator_priv;
958 struct dvb_frontend_parameters schan; 964 struct dtv_frontend_properties schan;
959 int ret = 0; 965 int ret = 0;
960 u32 value, factor; 966 u32 value, factor;
961 967
962 schan = *ch; 968 schan = *ch;
963 969
964 schan.u.ofdm.constellation = QAM_64; 970 schan.modulation = QAM_64;
965 schan.u.ofdm.guard_interval = GUARD_INTERVAL_1_32; 971 schan.guard_interval = GUARD_INTERVAL_1_32;
966 schan.u.ofdm.transmission_mode = TRANSMISSION_MODE_8K; 972 schan.transmission_mode = TRANSMISSION_MODE_8K;
967 schan.u.ofdm.code_rate_HP = FEC_2_3; 973 schan.code_rate_HP = FEC_2_3;
968 schan.u.ofdm.code_rate_LP = FEC_3_4; 974 schan.code_rate_LP = FEC_3_4;
969 schan.u.ofdm.hierarchy_information = 0; 975 schan.hierarchy = 0;
970 976
971 dib7000m_set_channel(state, &schan, 7); 977 dib7000m_set_channel(state, &schan, 7);
972 978
973 factor = BANDWIDTH_TO_KHZ(ch->u.ofdm.bandwidth); 979 factor = BANDWIDTH_TO_KHZ(schan.bandwidth_hz);
974 if (factor >= 5000) 980 if (factor >= 5000)
975 factor = 1; 981 factor = 1;
976 else 982 else
@@ -1027,8 +1033,9 @@ static int dib7000m_autosearch_is_irq(struct dvb_frontend *demod)
1027 return dib7000m_autosearch_irq(state, 537); 1033 return dib7000m_autosearch_irq(state, 537);
1028} 1034}
1029 1035
1030static int dib7000m_tune(struct dvb_frontend *demod, struct dvb_frontend_parameters *ch) 1036static int dib7000m_tune(struct dvb_frontend *demod)
1031{ 1037{
1038 struct dtv_frontend_properties *ch = &demod->dtv_property_cache;
1032 struct dib7000m_state *state = demod->demodulator_priv; 1039 struct dib7000m_state *state = demod->demodulator_priv;
1033 int ret = 0; 1040 int ret = 0;
1034 u16 value; 1041 u16 value;
@@ -1055,7 +1062,7 @@ static int dib7000m_tune(struct dvb_frontend *demod, struct dvb_frontend_paramet
1055 //dump_reg(state); 1062 //dump_reg(state);
1056 /* P_timf_alpha, P_corm_alpha=6, P_corm_thres=0x80 */ 1063 /* P_timf_alpha, P_corm_alpha=6, P_corm_thres=0x80 */
1057 value = (6 << 8) | 0x80; 1064 value = (6 << 8) | 0x80;
1058 switch (ch->u.ofdm.transmission_mode) { 1065 switch (ch->transmission_mode) {
1059 case TRANSMISSION_MODE_2K: value |= (7 << 12); break; 1066 case TRANSMISSION_MODE_2K: value |= (7 << 12); break;
1060 case TRANSMISSION_MODE_4K: value |= (8 << 12); break; 1067 case TRANSMISSION_MODE_4K: value |= (8 << 12); break;
1061 default: 1068 default:
@@ -1065,7 +1072,7 @@ static int dib7000m_tune(struct dvb_frontend *demod, struct dvb_frontend_paramet
1065 1072
1066 /* P_ctrl_freeze_pha_shift=0, P_ctrl_pha_off_max */ 1073 /* P_ctrl_freeze_pha_shift=0, P_ctrl_pha_off_max */
1067 value = (0 << 4); 1074 value = (0 << 4);
1068 switch (ch->u.ofdm.transmission_mode) { 1075 switch (ch->transmission_mode) {
1069 case TRANSMISSION_MODE_2K: value |= 0x6; break; 1076 case TRANSMISSION_MODE_2K: value |= 0x6; break;
1070 case TRANSMISSION_MODE_4K: value |= 0x7; break; 1077 case TRANSMISSION_MODE_4K: value |= 0x7; break;
1071 default: 1078 default:
@@ -1075,7 +1082,7 @@ static int dib7000m_tune(struct dvb_frontend *demod, struct dvb_frontend_paramet
1075 1082
1076 /* P_ctrl_sfreq_inh=0, P_ctrl_sfreq_step */ 1083 /* P_ctrl_sfreq_inh=0, P_ctrl_sfreq_step */
1077 value = (0 << 4); 1084 value = (0 << 4);
1078 switch (ch->u.ofdm.transmission_mode) { 1085 switch (ch->transmission_mode) {
1079 case TRANSMISSION_MODE_2K: value |= 0x6; break; 1086 case TRANSMISSION_MODE_2K: value |= 0x6; break;
1080 case TRANSMISSION_MODE_4K: value |= 0x7; break; 1087 case TRANSMISSION_MODE_4K: value |= 0x7; break;
1081 default: 1088 default:
@@ -1087,7 +1094,7 @@ static int dib7000m_tune(struct dvb_frontend *demod, struct dvb_frontend_paramet
1087 if ((dib7000m_read_word(state, 535) >> 6) & 0x1) 1094 if ((dib7000m_read_word(state, 535) >> 6) & 0x1)
1088 dib7000m_update_timf(state); 1095 dib7000m_update_timf(state);
1089 1096
1090 dib7000m_set_bandwidth(state, BANDWIDTH_TO_KHZ(ch->u.ofdm.bandwidth)); 1097 dib7000m_set_bandwidth(state, BANDWIDTH_TO_KHZ(ch->bandwidth_hz));
1091 return ret; 1098 return ret;
1092} 1099}
1093 1100
@@ -1148,56 +1155,56 @@ static int dib7000m_identify(struct dib7000m_state *state)
1148 1155
1149 1156
1150static int dib7000m_get_frontend(struct dvb_frontend* fe, 1157static int dib7000m_get_frontend(struct dvb_frontend* fe,
1151 struct dvb_frontend_parameters *fep) 1158 struct dtv_frontend_properties *fep)
1152{ 1159{
1153 struct dib7000m_state *state = fe->demodulator_priv; 1160 struct dib7000m_state *state = fe->demodulator_priv;
1154 u16 tps = dib7000m_read_word(state,480); 1161 u16 tps = dib7000m_read_word(state,480);
1155 1162
1156 fep->inversion = INVERSION_AUTO; 1163 fep->inversion = INVERSION_AUTO;
1157 1164
1158 fep->u.ofdm.bandwidth = state->current_bandwidth; 1165 fep->bandwidth_hz = BANDWIDTH_TO_HZ(state->current_bandwidth);
1159 1166
1160 switch ((tps >> 8) & 0x3) { 1167 switch ((tps >> 8) & 0x3) {
1161 case 0: fep->u.ofdm.transmission_mode = TRANSMISSION_MODE_2K; break; 1168 case 0: fep->transmission_mode = TRANSMISSION_MODE_2K; break;
1162 case 1: fep->u.ofdm.transmission_mode = TRANSMISSION_MODE_8K; break; 1169 case 1: fep->transmission_mode = TRANSMISSION_MODE_8K; break;
1163 /* case 2: fep->u.ofdm.transmission_mode = TRANSMISSION_MODE_4K; break; */ 1170 /* case 2: fep->transmission_mode = TRANSMISSION_MODE_4K; break; */
1164 } 1171 }
1165 1172
1166 switch (tps & 0x3) { 1173 switch (tps & 0x3) {
1167 case 0: fep->u.ofdm.guard_interval = GUARD_INTERVAL_1_32; break; 1174 case 0: fep->guard_interval = GUARD_INTERVAL_1_32; break;
1168 case 1: fep->u.ofdm.guard_interval = GUARD_INTERVAL_1_16; break; 1175 case 1: fep->guard_interval = GUARD_INTERVAL_1_16; break;
1169 case 2: fep->u.ofdm.guard_interval = GUARD_INTERVAL_1_8; break; 1176 case 2: fep->guard_interval = GUARD_INTERVAL_1_8; break;
1170 case 3: fep->u.ofdm.guard_interval = GUARD_INTERVAL_1_4; break; 1177 case 3: fep->guard_interval = GUARD_INTERVAL_1_4; break;
1171 } 1178 }
1172 1179
1173 switch ((tps >> 14) & 0x3) { 1180 switch ((tps >> 14) & 0x3) {
1174 case 0: fep->u.ofdm.constellation = QPSK; break; 1181 case 0: fep->modulation = QPSK; break;
1175 case 1: fep->u.ofdm.constellation = QAM_16; break; 1182 case 1: fep->modulation = QAM_16; break;
1176 case 2: 1183 case 2:
1177 default: fep->u.ofdm.constellation = QAM_64; break; 1184 default: fep->modulation = QAM_64; break;
1178 } 1185 }
1179 1186
1180 /* as long as the frontend_param structure is fixed for hierarchical transmission I refuse to use it */ 1187 /* as long as the frontend_param structure is fixed for hierarchical transmission I refuse to use it */
1181 /* (tps >> 13) & 0x1 == hrch is used, (tps >> 10) & 0x7 == alpha */ 1188 /* (tps >> 13) & 0x1 == hrch is used, (tps >> 10) & 0x7 == alpha */
1182 1189
1183 fep->u.ofdm.hierarchy_information = HIERARCHY_NONE; 1190 fep->hierarchy = HIERARCHY_NONE;
1184 switch ((tps >> 5) & 0x7) { 1191 switch ((tps >> 5) & 0x7) {
1185 case 1: fep->u.ofdm.code_rate_HP = FEC_1_2; break; 1192 case 1: fep->code_rate_HP = FEC_1_2; break;
1186 case 2: fep->u.ofdm.code_rate_HP = FEC_2_3; break; 1193 case 2: fep->code_rate_HP = FEC_2_3; break;
1187 case 3: fep->u.ofdm.code_rate_HP = FEC_3_4; break; 1194 case 3: fep->code_rate_HP = FEC_3_4; break;
1188 case 5: fep->u.ofdm.code_rate_HP = FEC_5_6; break; 1195 case 5: fep->code_rate_HP = FEC_5_6; break;
1189 case 7: 1196 case 7:
1190 default: fep->u.ofdm.code_rate_HP = FEC_7_8; break; 1197 default: fep->code_rate_HP = FEC_7_8; break;
1191 1198
1192 } 1199 }
1193 1200
1194 switch ((tps >> 2) & 0x7) { 1201 switch ((tps >> 2) & 0x7) {
1195 case 1: fep->u.ofdm.code_rate_LP = FEC_1_2; break; 1202 case 1: fep->code_rate_LP = FEC_1_2; break;
1196 case 2: fep->u.ofdm.code_rate_LP = FEC_2_3; break; 1203 case 2: fep->code_rate_LP = FEC_2_3; break;
1197 case 3: fep->u.ofdm.code_rate_LP = FEC_3_4; break; 1204 case 3: fep->code_rate_LP = FEC_3_4; break;
1198 case 5: fep->u.ofdm.code_rate_LP = FEC_5_6; break; 1205 case 5: fep->code_rate_LP = FEC_5_6; break;
1199 case 7: 1206 case 7:
1200 default: fep->u.ofdm.code_rate_LP = FEC_7_8; break; 1207 default: fep->code_rate_LP = FEC_7_8; break;
1201 } 1208 }
1202 1209
1203 /* native interleaver: (dib7000m_read_word(state, 481) >> 5) & 0x1 */ 1210 /* native interleaver: (dib7000m_read_word(state, 481) >> 5) & 0x1 */
@@ -1205,16 +1212,15 @@ static int dib7000m_get_frontend(struct dvb_frontend* fe,
1205 return 0; 1212 return 0;
1206} 1213}
1207 1214
1208static int dib7000m_set_frontend(struct dvb_frontend* fe, 1215static int dib7000m_set_frontend(struct dvb_frontend *fe)
1209 struct dvb_frontend_parameters *fep)
1210{ 1216{
1217 struct dtv_frontend_properties *fep = &fe->dtv_property_cache, tmp;
1211 struct dib7000m_state *state = fe->demodulator_priv; 1218 struct dib7000m_state *state = fe->demodulator_priv;
1212 int time, ret; 1219 int time, ret;
1213 1220
1214 dib7000m_set_output_mode(state, OUTMODE_HIGH_Z); 1221 dib7000m_set_output_mode(state, OUTMODE_HIGH_Z);
1215 1222
1216 state->current_bandwidth = fep->u.ofdm.bandwidth; 1223 dib7000m_set_bandwidth(state, BANDWIDTH_TO_KHZ(fep->bandwidth_hz));
1217 dib7000m_set_bandwidth(state, BANDWIDTH_TO_KHZ(fep->u.ofdm.bandwidth));
1218 1224
1219 if (fe->ops.tuner_ops.set_params) 1225 if (fe->ops.tuner_ops.set_params)
1220 fe->ops.tuner_ops.set_params(fe); 1226 fe->ops.tuner_ops.set_params(fe);
@@ -1222,18 +1228,20 @@ static int dib7000m_set_frontend(struct dvb_frontend* fe,
1222 /* start up the AGC */ 1228 /* start up the AGC */
1223 state->agc_state = 0; 1229 state->agc_state = 0;
1224 do { 1230 do {
1225 time = dib7000m_agc_startup(fe, fep); 1231 time = dib7000m_agc_startup(fe);
1226 if (time != -1) 1232 if (time != -1)
1227 msleep(time); 1233 msleep(time);
1228 } while (time != -1); 1234 } while (time != -1);
1229 1235
1230 if (fep->u.ofdm.transmission_mode == TRANSMISSION_MODE_AUTO || 1236 if (fep->transmission_mode == TRANSMISSION_MODE_AUTO ||
1231 fep->u.ofdm.guard_interval == GUARD_INTERVAL_AUTO || 1237 fep->guard_interval == GUARD_INTERVAL_AUTO ||
1232 fep->u.ofdm.constellation == QAM_AUTO || 1238 fep->modulation == QAM_AUTO ||
1233 fep->u.ofdm.code_rate_HP == FEC_AUTO) { 1239 fep->code_rate_HP == FEC_AUTO) {
1234 int i = 800, found; 1240 int i = 800, found;
1235 1241
1236 dib7000m_autosearch_start(fe, fep); 1242 tmp = *fep;
1243
1244 dib7000m_autosearch_start(fe);
1237 do { 1245 do {
1238 msleep(1); 1246 msleep(1);
1239 found = dib7000m_autosearch_is_irq(fe); 1247 found = dib7000m_autosearch_is_irq(fe);
@@ -1243,10 +1251,10 @@ static int dib7000m_set_frontend(struct dvb_frontend* fe,
1243 if (found == 0 || found == 1) 1251 if (found == 0 || found == 1)
1244 return 0; // no channel found 1252 return 0; // no channel found
1245 1253
1246 dib7000m_get_frontend(fe, fep); 1254 dib7000m_get_frontend(fe, &tmp);
1247 } 1255 }
1248 1256
1249 ret = dib7000m_tune(fe, fep); 1257 ret = dib7000m_tune(fe);
1250 1258
1251 /* make this a config parameter */ 1259 /* make this a config parameter */
1252 dib7000m_set_output_mode(state, OUTMODE_MPEG2_FIFO); 1260 dib7000m_set_output_mode(state, OUTMODE_MPEG2_FIFO);
@@ -1430,6 +1438,7 @@ error:
1430EXPORT_SYMBOL(dib7000m_attach); 1438EXPORT_SYMBOL(dib7000m_attach);
1431 1439
1432static struct dvb_frontend_ops dib7000m_ops = { 1440static struct dvb_frontend_ops dib7000m_ops = {
1441 .delsys = { SYS_DVBT },
1433 .info = { 1442 .info = {
1434 .name = "DiBcom 7000MA/MB/PA/PB/MC", 1443 .name = "DiBcom 7000MA/MB/PA/PB/MC",
1435 .type = FE_OFDM, 1444 .type = FE_OFDM,
@@ -1451,9 +1460,9 @@ static struct dvb_frontend_ops dib7000m_ops = {
1451 .init = dib7000m_wakeup, 1460 .init = dib7000m_wakeup,
1452 .sleep = dib7000m_sleep, 1461 .sleep = dib7000m_sleep,
1453 1462
1454 .set_frontend_legacy = dib7000m_set_frontend, 1463 .set_frontend = dib7000m_set_frontend,
1455 .get_tune_settings = dib7000m_fe_get_tune_settings, 1464 .get_tune_settings = dib7000m_fe_get_tune_settings,
1456 .get_frontend_legacy = dib7000m_get_frontend, 1465 .get_frontend = dib7000m_get_frontend,
1457 1466
1458 .read_status = dib7000m_read_status, 1467 .read_status = dib7000m_read_status,
1459 .read_ber = dib7000m_read_ber, 1468 .read_ber = dib7000m_read_ber,