• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /netgear-R7000-V1.0.7.12_1.2.5/components/opensource/linux/linux-2.6.36/drivers/media/dvb/dvb-core/

Lines Matching defs:fe

141 static void dvb_frontend_wakeup(struct dvb_frontend *fe);
143 static void dvb_frontend_add_event(struct dvb_frontend *fe, fe_status_t status)
145 struct dvb_frontend_private *fepriv = fe->frontend_priv;
168 if (fe->ops.get_frontend)
169 fe->ops.get_frontend(fe, &e->parameters);
180 static int dvb_frontend_get_event(struct dvb_frontend *fe,
183 struct dvb_frontend_private *fepriv = fe->frontend_priv;
224 static void dvb_frontend_init(struct dvb_frontend *fe)
227 fe->dvb->num,
228 fe->id,
229 fe->ops.info.name);
231 if (fe->ops.init)
232 fe->ops.init(fe);
233 if (fe->ops.tuner_ops.init) {
234 if (fe->ops.i2c_gate_ctrl)
235 fe->ops.i2c_gate_ctrl(fe, 1);
236 fe->ops.tuner_ops.init(fe);
237 if (fe->ops.i2c_gate_ctrl)
238 fe->ops.i2c_gate_ctrl(fe, 0);
242 void dvb_frontend_reinitialise(struct dvb_frontend *fe)
244 struct dvb_frontend_private *fepriv = fe->frontend_priv;
247 dvb_frontend_wakeup(fe);
271 * @param fe The frontend concerned.
275 static int dvb_frontend_swzigzag_autotune(struct dvb_frontend *fe, int check_wrapped)
280 struct dvb_frontend_private *fepriv = fe->frontend_priv;
285 autoinversion = ((!(fe->ops.info.caps & FE_CAN_INVERSION_AUTO)) &&
355 if (fe->ops.set_frontend)
356 fe_set_err = fe->ops.set_frontend(fe, &fepriv->parameters);
369 static void dvb_frontend_swzigzag(struct dvb_frontend *fe)
373 struct dvb_frontend_private *fepriv = fe->frontend_priv;
385 if (fe->ops.set_frontend)
386 retval = fe->ops.set_frontend(fe,
402 if (fe->ops.read_status)
403 fe->ops.read_status(fe, &s);
405 dvb_frontend_add_event(fe, s);
416 if ((!(fe->ops.info.caps & FE_CAN_INVERSION_AUTO)) &&
440 (fe->ops.info.caps & FE_CAN_RECOVER) && (fepriv->max_drift == 0)) {
469 retval = dvb_frontend_swzigzag_autotune(fe,
497 dvb_frontend_swzigzag_autotune(fe, 0);
501 static int dvb_frontend_is_exiting(struct dvb_frontend *fe)
503 struct dvb_frontend_private *fepriv = fe->frontend_priv;
516 static int dvb_frontend_should_wakeup(struct dvb_frontend *fe)
518 struct dvb_frontend_private *fepriv = fe->frontend_priv;
524 return dvb_frontend_is_exiting(fe);
527 static void dvb_frontend_wakeup(struct dvb_frontend *fe)
529 struct dvb_frontend_private *fepriv = fe->frontend_priv;
537 struct dvb_frontend *fe = data;
538 struct dvb_frontend_private *fepriv = fe->frontend_priv;
554 dvb_frontend_init(fe);
561 dvb_frontend_should_wakeup(fe) || kthread_should_stop()
565 if (kthread_should_stop() || dvb_frontend_is_exiting(fe)) {
578 dvb_frontend_init(fe);
580 fe->ops.set_tone(fe, fepriv->tone);
583 fe->ops.set_voltage(fe, fepriv->voltage);
589 if (fe->ops.get_frontend_algo) {
590 algo = fe->ops.get_frontend_algo(fe);
602 if (fe->ops.tune)
603 fe->ops.tune(fe, params, fepriv->tune_mode_flags, &fepriv->delay, &s);
607 dvb_frontend_add_event(fe, s);
613 dvb_frontend_swzigzag(fe);
628 if (fe->ops.search) {
629 fepriv->algo_status = fe->ops.search(fe, &fepriv->parameters);
639 if (fe->ops.track)
640 fe->ops.track(fe, &fepriv->parameters);
645 fe->ops.read_status(fe, &s);
647 dvb_frontend_add_event(fe, s); /* update event list */
662 dvb_frontend_swzigzag(fe);
667 if (fe->ops.set_voltage)
668 fe->ops.set_voltage(fe, SEC_VOLTAGE_OFF);
669 if (fe->ops.tuner_ops.sleep) {
670 if (fe->ops.i2c_gate_ctrl)
671 fe->ops.i2c_gate_ctrl(fe, 1);
672 fe->ops.tuner_ops.sleep(fe);
673 if (fe->ops.i2c_gate_ctrl)
674 fe->ops.i2c_gate_ctrl(fe, 0);
676 if (fe->ops.sleep)
677 fe->ops.sleep(fe);
687 dvb_frontend_wakeup(fe);
691 static void dvb_frontend_stop(struct dvb_frontend *fe)
693 struct dvb_frontend_private *fepriv = fe->frontend_priv;
757 static int dvb_frontend_start(struct dvb_frontend *fe)
760 struct dvb_frontend_private *fepriv = fe->frontend_priv;
769 dvb_frontend_stop (fe);
782 fe_thread = kthread_run(dvb_frontend_thread, fe,
783 "kdvb-ad-%i-fe-%i", fe->dvb->num,fe->id);
794 static void dvb_frontend_get_frequency_limits(struct dvb_frontend *fe,
797 *freq_min = max(fe->ops.info.frequency_min, fe->ops.tuner_ops.info.frequency_min);
799 if (fe->ops.info.frequency_max == 0)
800 *freq_max = fe->ops.tuner_ops.info.frequency_max;
801 else if (fe->ops.tuner_ops.info.frequency_max == 0)
802 *freq_max = fe->ops.info.frequency_max;
804 *freq_max = min(fe->ops.info.frequency_max, fe->ops.tuner_ops.info.frequency_max);
808 fe->dvb->num,fe->id);
811 static int dvb_frontend_check_parameters(struct dvb_frontend *fe,
818 dvb_frontend_get_frequency_limits(fe, &freq_min, &freq_max);
822 fe->dvb->num, fe->id, parms->frequency, freq_min, freq_max);
827 if (fe->ops.info.type == FE_QPSK) {
828 if ((fe->ops.info.symbol_rate_min &&
829 parms->u.qpsk.symbol_rate < fe->ops.info.symbol_rate_min) ||
830 (fe->ops.info.symbol_rate_max &&
831 parms->u.qpsk.symbol_rate > fe->ops.info.symbol_rate_max)) {
833 fe->dvb->num, fe->id, parms->u.qpsk.symbol_rate,
834 fe->ops.info.symbol_rate_min, fe->ops.info.symbol_rate_max);
838 } else if (fe->ops.info.type == FE_QAM) {
839 if ((fe->ops.info.symbol_rate_min &&
840 parms->u.qam.symbol_rate < fe->ops.info.symbol_rate_min) ||
841 (fe->ops.info.symbol_rate_max &&
842 parms->u.qam.symbol_rate > fe->ops.info.symbol_rate_max)) {
844 fe->dvb->num, fe->id, parms->u.qam.symbol_rate,
845 fe->ops.info.symbol_rate_min, fe->ops.info.symbol_rate_max);
851 if (fe->ops.info.type == FE_QAM &&
853 !((1 << (parms->u.qam.modulation + 10)) & fe->ops.info.caps))) {
855 fe->dvb->num, fe->id, parms->u.qam.modulation);
862 static int dvb_frontend_clear_cache(struct dvb_frontend *fe)
866 memset(&(fe->dtv_property_cache), 0,
869 fe->dtv_property_cache.state = DTV_CLEAR;
870 fe->dtv_property_cache.delivery_system = SYS_UNDEFINED;
871 fe->dtv_property_cache.inversion = INVERSION_AUTO;
872 fe->dtv_property_cache.fec_inner = FEC_AUTO;
873 fe->dtv_property_cache.transmission_mode = TRANSMISSION_MODE_AUTO;
874 fe->dtv_property_cache.bandwidth_hz = BANDWIDTH_AUTO;
875 fe->dtv_property_cache.guard_interval = GUARD_INTERVAL_AUTO;
876 fe->dtv_property_cache.hierarchy = HIERARCHY_AUTO;
877 fe->dtv_property_cache.symbol_rate = QAM_AUTO;
878 fe->dtv_property_cache.code_rate_HP = FEC_AUTO;
879 fe->dtv_property_cache.code_rate_LP = FEC_AUTO;
881 fe->dtv_property_cache.isdbt_partial_reception = -1;
882 fe->dtv_property_cache.isdbt_sb_mode = -1;
883 fe->dtv_property_cache.isdbt_sb_subchannel = -1;
884 fe->dtv_property_cache.isdbt_sb_segment_idx = -1;
885 fe->dtv_property_cache.isdbt_sb_segment_count = -1;
886 fe->dtv_property_cache.isdbt_layer_enabled = 0x7;
888 fe->dtv_property_cache.layer[i].fec = FEC_AUTO;
889 fe->dtv_property_cache.layer[i].modulation = QAM_AUTO;
890 fe->dtv_property_cache.layer[i].interleaving = -1;
891 fe->dtv_property_cache.layer[i].segment_count = -1;
1023 static void dtv_property_cache_sync(struct dvb_frontend *fe,
1026 struct dtv_frontend_properties *c = &fe->dtv_property_cache;
1031 switch (fe->ops.info.type) {
1076 static void dtv_property_legacy_params_sync(struct dvb_frontend *fe)
1078 struct dtv_frontend_properties *c = &fe->dtv_property_cache;
1079 struct dvb_frontend_private *fepriv = fe->frontend_priv;
1085 switch (fe->ops.info.type) {
1131 static void dtv_property_adv_params_sync(struct dvb_frontend *fe)
1133 struct dtv_frontend_properties *c = &fe->dtv_property_cache;
1134 struct dvb_frontend_private *fepriv = fe->frontend_priv;
1173 static void dtv_property_cache_submit(struct dvb_frontend *fe)
1175 struct dtv_frontend_properties *c = &fe->dtv_property_cache;
1184 dtv_property_legacy_params_sync(fe);
1195 dtv_property_adv_params_sync(fe);
1204 static int dtv_property_process_get(struct dvb_frontend *fe,
1211 if (fe->ops.get_property)
1212 r = fe->ops.get_property(fe, tvp);
1219 tvp->u.data = fe->dtv_property_cache.frequency;
1222 tvp->u.data = fe->dtv_property_cache.modulation;
1225 tvp->u.data = fe->dtv_property_cache.bandwidth_hz;
1228 tvp->u.data = fe->dtv_property_cache.inversion;
1231 tvp->u.data = fe->dtv_property_cache.symbol_rate;
1234 tvp->u.data = fe->dtv_property_cache.fec_inner;
1237 tvp->u.data = fe->dtv_property_cache.pilot;
1240 tvp->u.data = fe->dtv_property_cache.rolloff;
1243 tvp->u.data = fe->dtv_property_cache.delivery_system;
1246 tvp->u.data = fe->dtv_property_cache.voltage;
1249 tvp->u.data = fe->dtv_property_cache.sectone;
1255 tvp->u.data = fe->dtv_property_cache.code_rate_HP;
1258 tvp->u.data = fe->dtv_property_cache.code_rate_LP;
1261 tvp->u.data = fe->dtv_property_cache.guard_interval;
1264 tvp->u.data = fe->dtv_property_cache.transmission_mode;
1267 tvp->u.data = fe->dtv_property_cache.hierarchy;
1272 tvp->u.data = fe->dtv_property_cache.isdbt_partial_reception;
1275 tvp->u.data = fe->dtv_property_cache.isdbt_sb_mode;
1278 tvp->u.data = fe->dtv_property_cache.isdbt_sb_subchannel;
1281 tvp->u.data = fe->dtv_property_cache.isdbt_sb_segment_idx;
1284 tvp->u.data = fe->dtv_property_cache.isdbt_sb_segment_count;
1287 tvp->u.data = fe->dtv_property_cache.isdbt_layer_enabled;
1290 tvp->u.data = fe->dtv_property_cache.layer[0].fec;
1293 tvp->u.data = fe->dtv_property_cache.layer[0].modulation;
1296 tvp->u.data = fe->dtv_property_cache.layer[0].segment_count;
1299 tvp->u.data = fe->dtv_property_cache.layer[0].interleaving;
1302 tvp->u.data = fe->dtv_property_cache.layer[1].fec;
1305 tvp->u.data = fe->dtv_property_cache.layer[1].modulation;
1308 tvp->u.data = fe->dtv_property_cache.layer[1].segment_count;
1311 tvp->u.data = fe->dtv_property_cache.layer[1].interleaving;
1314 tvp->u.data = fe->dtv_property_cache.layer[2].fec;
1317 tvp->u.data = fe->dtv_property_cache.layer[2].modulation;
1320 tvp->u.data = fe->dtv_property_cache.layer[2].segment_count;
1323 tvp->u.data = fe->dtv_property_cache.layer[2].interleaving;
1326 tvp->u.data = fe->dtv_property_cache.isdbs_ts_id;
1337 static int dtv_property_process_set(struct dvb_frontend *fe,
1342 struct dvb_frontend_private *fepriv = fe->frontend_priv;
1346 if (fe->ops.set_property)
1347 r = fe->ops.set_property(fe, tvp);
1357 dvb_frontend_clear_cache(fe);
1365 fe->dtv_property_cache.state = tvp->cmd;
1367 dtv_property_cache_submit(fe);
1373 fe->dtv_property_cache.frequency = tvp->u.data;
1376 fe->dtv_property_cache.modulation = tvp->u.data;
1379 fe->dtv_property_cache.bandwidth_hz = tvp->u.data;
1382 fe->dtv_property_cache.inversion = tvp->u.data;
1385 fe->dtv_property_cache.symbol_rate = tvp->u.data;
1388 fe->dtv_property_cache.fec_inner = tvp->u.data;
1391 fe->dtv_property_cache.pilot = tvp->u.data;
1394 fe->dtv_property_cache.rolloff = tvp->u.data;
1397 fe->dtv_property_cache.delivery_system = tvp->u.data;
1400 fe->dtv_property_cache.voltage = tvp->u.data;
1402 (void *)fe->dtv_property_cache.voltage);
1405 fe->dtv_property_cache.sectone = tvp->u.data;
1407 (void *)fe->dtv_property_cache.sectone);
1410 fe->dtv_property_cache.code_rate_HP = tvp->u.data;
1413 fe->dtv_property_cache.code_rate_LP = tvp->u.data;
1416 fe->dtv_property_cache.guard_interval = tvp->u.data;
1419 fe->dtv_property_cache.transmission_mode = tvp->u.data;
1422 fe->dtv_property_cache.hierarchy = tvp->u.data;
1427 fe->dtv_property_cache.isdbt_partial_reception = tvp->u.data;
1430 fe->dtv_property_cache.isdbt_sb_mode = tvp->u.data;
1433 fe->dtv_property_cache.isdbt_sb_subchannel = tvp->u.data;
1436 fe->dtv_property_cache.isdbt_sb_segment_idx = tvp->u.data;
1439 fe->dtv_property_cache.isdbt_sb_segment_count = tvp->u.data;
1442 fe->dtv_property_cache.isdbt_layer_enabled = tvp->u.data;
1445 fe->dtv_property_cache.layer[0].fec = tvp->u.data;
1448 fe->dtv_property_cache.layer[0].modulation = tvp->u.data;
1451 fe->dtv_property_cache.layer[0].segment_count = tvp->u.data;
1454 fe->dtv_property_cache.layer[0].interleaving = tvp->u.data;
1457 fe->dtv_property_cache.layer[1].fec = tvp->u.data;
1460 fe->dtv_property_cache.layer[1].modulation = tvp->u.data;
1463 fe->dtv_property_cache.layer[1].segment_count = tvp->u.data;
1466 fe->dtv_property_cache.layer[1].interleaving = tvp->u.data;
1469 fe->dtv_property_cache.layer[2].fec = tvp->u.data;
1472 fe->dtv_property_cache.layer[2].modulation = tvp->u.data;
1475 fe->dtv_property_cache.layer[2].segment_count = tvp->u.data;
1478 fe->dtv_property_cache.layer[2].interleaving = tvp->u.data;
1481 fe->dtv_property_cache.isdbs_ts_id = tvp->u.data;
1494 struct dvb_frontend *fe = dvbdev->priv;
1495 struct dvb_frontend_private *fepriv = fe->frontend_priv;
1514 fe->dtv_property_cache.state = DTV_UNDEFINED;
1526 struct dvb_frontend *fe = dvbdev->priv;
1558 (tvp + i)->result = dtv_property_process_set(fe, tvp + i, file);
1562 if(fe->dtv_property_cache.state == DTV_TUNE)
1590 (tvp + i)->result = dtv_property_process_get(fe, tvp + i, file);
1611 struct dvb_frontend *fe = dvbdev->priv;
1612 struct dvb_frontend_private *fepriv = fe->frontend_priv;
1615 if (fe->dvb->fe_ioctl_override) {
1616 cb_err = fe->dvb->fe_ioctl_override(fe, cmd, parg,
1629 memcpy(info, &fe->ops.info, sizeof(struct dvb_frontend_info));
1630 dvb_frontend_get_frequency_limits(fe, &info->frequency_min, &info->frequency_max);
1651 if (fe->ops.read_status)
1652 err = fe->ops.read_status(fe, status);
1656 if (fe->ops.read_ber)
1657 err = fe->ops.read_ber(fe, (__u32*) parg);
1661 if (fe->ops.read_signal_strength)
1662 err = fe->ops.read_signal_strength(fe, (__u16*) parg);
1666 if (fe->ops.read_snr)
1667 err = fe->ops.read_snr(fe, (__u16*) parg);
1671 if (fe->ops.read_ucblocks)
1672 err = fe->ops.read_ucblocks(fe, (__u32*) parg);
1677 if (fe->ops.diseqc_reset_overload) {
1678 err = fe->ops.diseqc_reset_overload(fe);
1685 if (fe->ops.diseqc_send_master_cmd) {
1686 err = fe->ops.diseqc_send_master_cmd(fe, (struct dvb_diseqc_master_cmd*) parg);
1693 if (fe->ops.diseqc_send_burst) {
1694 err = fe->ops.diseqc_send_burst(fe, (fe_sec_mini_cmd_t) parg);
1701 if (fe->ops.set_tone) {
1702 err = fe->ops.set_tone(fe, (fe_sec_tone_mode_t) parg);
1710 if (fe->ops.set_voltage) {
1711 err = fe->ops.set_voltage(fe, (fe_sec_voltage_t) parg);
1719 if (fe->ops.dishnetwork_send_legacy_command) {
1720 err = fe->ops.dishnetwork_send_legacy_command(fe, (unsigned long) parg);
1723 } else if (fe->ops.set_voltage) {
1753 fe->ops.set_voltage(fe, SEC_VOLTAGE_18);
1761 fe->ops.set_voltage(fe, (last) ? SEC_VOLTAGE_13 : SEC_VOLTAGE_18);
1770 __func__, fe->dvb->num);
1781 if (fe->ops.diseqc_recv_slave_reply)
1782 err = fe->ops.diseqc_recv_slave_reply(fe, (struct dvb_diseqc_slave_reply*) parg);
1786 if (fe->ops.enable_high_lnb_voltage)
1787 err = fe->ops.enable_high_lnb_voltage(fe, (long) parg);
1793 if(fe->dtv_property_cache.state == DTV_TUNE) {
1794 if (dvb_frontend_check_parameters(fe, &fepriv->parameters) < 0) {
1799 if (dvb_frontend_check_parameters(fe, parg) < 0) {
1806 dtv_property_cache_sync(fe, &fepriv->parameters);
1818 if (fe->ops.info.type == FE_OFDM) {
1827 if (fe->ops.get_tune_settings && (fe->ops.get_tune_settings(fe, &fetunesettings) == 0)) {
1833 switch(fe->ops.info.type) {
1848 fepriv->step_size = fe->ops.info.frequency_stepsize * 2;
1849 fepriv->max_drift = (fe->ops.info.frequency_stepsize * 2) + 1;
1866 dvb_frontend_wakeup(fe);
1867 dvb_frontend_add_event(fe, 0);
1874 err = dvb_frontend_get_event (fe, parg, file->f_flags);
1878 if (fe->ops.get_frontend) {
1880 err = fe->ops.get_frontend(fe, (struct dvb_frontend_parameters*) parg);
1890 if (fe->dvb->fe_ioctl_override) {
1891 cb_err = fe->dvb->fe_ioctl_override(fe, cmd, parg,
1904 struct dvb_frontend *fe = dvbdev->priv;
1905 struct dvb_frontend_private *fepriv = fe->frontend_priv;
1920 struct dvb_frontend *fe = dvbdev->priv;
1921 struct dvb_frontend_private *fepriv = fe->frontend_priv;
1922 struct dvb_adapter *adapter = fe->dvb;
1968 if (dvbdev->users == -1 && fe->ops.ts_bus_ctrl) {
1969 if ((ret = fe->ops.ts_bus_ctrl(fe, 1)) < 0)
1982 ret = dvb_frontend_start (fe);
1997 if (dvbdev->users == -1 && fe->ops.ts_bus_ctrl)
1998 fe->ops.ts_bus_ctrl(fe, 0);
2008 struct dvb_frontend *fe = dvbdev->priv;
2009 struct dvb_frontend_private *fepriv = fe->frontend_priv;
2025 if (fe->ops.ts_bus_ctrl)
2026 fe->ops.ts_bus_ctrl(fe, 0);
2041 struct dvb_frontend* fe)
2057 fe->frontend_priv = kzalloc(sizeof(struct dvb_frontend_private), GFP_KERNEL);
2058 if (fe->frontend_priv == NULL) {
2062 fepriv = fe->frontend_priv;
2068 fe->dvb = dvb;
2072 fe->dvb->num,
2073 fe->id,
2074 fe->ops.info.name);
2076 dvb_register_device (fe->dvb, &fepriv->dvbdev, &dvbdev_template,
2077 fe, DVB_DEVICE_FRONTEND);
2084 int dvb_unregister_frontend(struct dvb_frontend* fe)
2086 struct dvb_frontend_private *fepriv = fe->frontend_priv;
2090 dvb_frontend_stop (fe);
2100 /* fe is invalid now */
2108 void dvb_frontend_detach(struct dvb_frontend* fe)
2112 if (fe->ops.release_sec) {
2113 fe->ops.release_sec(fe);
2114 symbol_put_addr(fe->ops.release_sec);
2116 if (fe->ops.tuner_ops.release) {
2117 fe->ops.tuner_ops.release(fe);
2118 symbol_put_addr(fe->ops.tuner_ops.release);
2120 if (fe->ops.analog_ops.release) {
2121 fe->ops.analog_ops.release(fe);
2122 symbol_put_addr(fe->ops.analog_ops.release);
2124 ptr = (void*)fe->ops.release;
2126 fe->ops.release(fe);
2131 void dvb_frontend_detach(struct dvb_frontend* fe)
2133 if (fe->ops.release_sec)
2134 fe->ops.release_sec(fe);
2135 if (fe->ops.tuner_ops.release)
2136 fe->ops.tuner_ops.release(fe);
2137 if (fe->ops.analog_ops.release)
2138 fe->ops.analog_ops.release(fe);
2139 if (fe->ops.release)
2140 fe->ops.release(fe);