diff options
Diffstat (limited to 'drivers/media/dvb/frontends/dib7000m.c')
-rw-r--r-- | drivers/media/dvb/frontends/dib7000m.c | 136 |
1 files changed, 71 insertions, 65 deletions
diff --git a/drivers/media/dvb/frontends/dib7000m.c b/drivers/media/dvb/frontends/dib7000m.c index dbb76d75c932..148bf79236fb 100644 --- a/drivers/media/dvb/frontends/dib7000m.c +++ b/drivers/media/dvb/frontends/dib7000m.c | |||
@@ -38,7 +38,7 @@ struct dib7000m_state { | |||
38 | u16 wbd_ref; | 38 | u16 wbd_ref; |
39 | 39 | ||
40 | u8 current_band; | 40 | u8 current_band; |
41 | fe_bandwidth_t current_bandwidth; | 41 | u32 current_bandwidth; |
42 | struct dibx000_agc_config *current_agc; | 42 | struct dibx000_agc_config *current_agc; |
43 | u32 timf; | 43 | u32 timf; |
44 | u32 timf_default; | 44 | u32 timf_default; |
@@ -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 | ||
745 | static int dib7000m_agc_startup(struct dvb_frontend *demod, struct dvb_frontend_parameters *ch) | 748 | static 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 | ||
835 | static void dib7000m_set_channel(struct dib7000m_state *state, struct dvb_frontend_parameters *ch, u8 seq) | 839 | static 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 | ||
955 | static int dib7000m_autosearch_start(struct dvb_frontend *demod, struct dvb_frontend_parameters *ch) | 960 | static 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 | ||
1030 | static int dib7000m_tune(struct dvb_frontend *demod, struct dvb_frontend_parameters *ch) | 1036 | static 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 | ||
@@ -1147,57 +1154,57 @@ static int dib7000m_identify(struct dib7000m_state *state) | |||
1147 | } | 1154 | } |
1148 | 1155 | ||
1149 | 1156 | ||
1150 | static int dib7000m_get_frontend(struct dvb_frontend* fe, | 1157 | static int dib7000m_get_frontend(struct dvb_frontend* fe) |
1151 | struct dvb_frontend_parameters *fep) | ||
1152 | { | 1158 | { |
1159 | struct dtv_frontend_properties *fep = &fe->dtv_property_cache; | ||
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,35 +1212,34 @@ static int dib7000m_get_frontend(struct dvb_frontend* fe, | |||
1205 | return 0; | 1212 | return 0; |
1206 | } | 1213 | } |
1207 | 1214 | ||
1208 | static int dib7000m_set_frontend(struct dvb_frontend* fe, | 1215 | static 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; | ||
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, fep); | 1226 | fe->ops.tuner_ops.set_params(fe); |
1221 | 1227 | ||
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 | dib7000m_autosearch_start(fe); |
1237 | do { | 1243 | do { |
1238 | msleep(1); | 1244 | msleep(1); |
1239 | found = dib7000m_autosearch_is_irq(fe); | 1245 | found = dib7000m_autosearch_is_irq(fe); |
@@ -1243,10 +1249,10 @@ static int dib7000m_set_frontend(struct dvb_frontend* fe, | |||
1243 | if (found == 0 || found == 1) | 1249 | if (found == 0 || found == 1) |
1244 | return 0; // no channel found | 1250 | return 0; // no channel found |
1245 | 1251 | ||
1246 | dib7000m_get_frontend(fe, fep); | 1252 | dib7000m_get_frontend(fe); |
1247 | } | 1253 | } |
1248 | 1254 | ||
1249 | ret = dib7000m_tune(fe, fep); | 1255 | ret = dib7000m_tune(fe); |
1250 | 1256 | ||
1251 | /* make this a config parameter */ | 1257 | /* make this a config parameter */ |
1252 | dib7000m_set_output_mode(state, OUTMODE_MPEG2_FIFO); | 1258 | dib7000m_set_output_mode(state, OUTMODE_MPEG2_FIFO); |
@@ -1430,9 +1436,9 @@ error: | |||
1430 | EXPORT_SYMBOL(dib7000m_attach); | 1436 | EXPORT_SYMBOL(dib7000m_attach); |
1431 | 1437 | ||
1432 | static struct dvb_frontend_ops dib7000m_ops = { | 1438 | static struct dvb_frontend_ops dib7000m_ops = { |
1439 | .delsys = { SYS_DVBT }, | ||
1433 | .info = { | 1440 | .info = { |
1434 | .name = "DiBcom 7000MA/MB/PA/PB/MC", | 1441 | .name = "DiBcom 7000MA/MB/PA/PB/MC", |
1435 | .type = FE_OFDM, | ||
1436 | .frequency_min = 44250000, | 1442 | .frequency_min = 44250000, |
1437 | .frequency_max = 867250000, | 1443 | .frequency_max = 867250000, |
1438 | .frequency_stepsize = 62500, | 1444 | .frequency_stepsize = 62500, |