Lines Matching refs:fepriv

203 	struct dvb_frontend_private *fepriv = fe->frontend_priv;  in dvb_frontend_add_event()  local
204 struct dvb_fe_events *events = &fepriv->events; in dvb_frontend_add_event()
211 dtv_get_frontend(fe, &fepriv->parameters_out); in dvb_frontend_add_event()
223 e->parameters = fepriv->parameters_out; in dvb_frontend_add_event()
235 struct dvb_frontend_private *fepriv = fe->frontend_priv; in dvb_frontend_get_event() local
236 struct dvb_fe_events *events = &fepriv->events; in dvb_frontend_get_event()
251 up(&fepriv->sem); in dvb_frontend_get_event()
256 if (down_interruptible (&fepriv->sem)) in dvb_frontend_get_event()
273 struct dvb_frontend_private *fepriv = fe->frontend_priv; in dvb_frontend_clear_events() local
274 struct dvb_fe_events *events = &fepriv->events; in dvb_frontend_clear_events()
300 struct dvb_frontend_private *fepriv = fe->frontend_priv; in dvb_frontend_reinitialise() local
302 fepriv->reinitialise = 1; in dvb_frontend_reinitialise()
307 static void dvb_frontend_swzigzag_update_delay(struct dvb_frontend_private *fepriv, int locked) in dvb_frontend_swzigzag_update_delay() argument
310 struct dvb_frontend *fe = fepriv->dvbdev->priv; in dvb_frontend_swzigzag_update_delay()
315 (fepriv->quality) = (fepriv->quality * 220 + 36*256) / 256; in dvb_frontend_swzigzag_update_delay()
317 (fepriv->quality) = (fepriv->quality * 220 + 0) / 256; in dvb_frontend_swzigzag_update_delay()
319 q2 = fepriv->quality - 128; in dvb_frontend_swzigzag_update_delay()
322 fepriv->delay = fepriv->min_delay + q2 * HZ / (128*128); in dvb_frontend_swzigzag_update_delay()
337 struct dvb_frontend_private *fepriv = fe->frontend_priv; in dvb_frontend_swzigzag_autotune() local
349 fepriv->lnb_drift = fepriv->auto_step * fepriv->step_size; in dvb_frontend_swzigzag_autotune()
352 if (fepriv->lnb_drift > fepriv->max_drift) { in dvb_frontend_swzigzag_autotune()
353 fepriv->auto_step = 0; in dvb_frontend_swzigzag_autotune()
354 fepriv->auto_sub_step = 0; in dvb_frontend_swzigzag_autotune()
355 fepriv->lnb_drift = 0; in dvb_frontend_swzigzag_autotune()
359 switch(fepriv->auto_sub_step) { in dvb_frontend_swzigzag_autotune()
368 fepriv->inversion = (fepriv->inversion == INVERSION_OFF) ? INVERSION_ON : INVERSION_OFF; in dvb_frontend_swzigzag_autotune()
373 if (fepriv->lnb_drift == 0) break; in dvb_frontend_swzigzag_autotune()
375 fepriv->lnb_drift = -fepriv->lnb_drift; in dvb_frontend_swzigzag_autotune()
380 if (fepriv->lnb_drift == 0) break; in dvb_frontend_swzigzag_autotune()
383 fepriv->inversion = (fepriv->inversion == INVERSION_OFF) ? INVERSION_ON : INVERSION_OFF; in dvb_frontend_swzigzag_autotune()
384 fepriv->lnb_drift = -fepriv->lnb_drift; in dvb_frontend_swzigzag_autotune()
389 fepriv->auto_step++; in dvb_frontend_swzigzag_autotune()
390 fepriv->auto_sub_step = -1; /* it'll be incremented to 0 in a moment */ in dvb_frontend_swzigzag_autotune()
394 if (!ready) fepriv->auto_sub_step++; in dvb_frontend_swzigzag_autotune()
399 if ((fepriv->auto_step == fepriv->started_auto_step) && in dvb_frontend_swzigzag_autotune()
400 (fepriv->auto_sub_step == 0) && check_wrapped) { in dvb_frontend_swzigzag_autotune()
406 __func__, fepriv->lnb_drift, fepriv->inversion, in dvb_frontend_swzigzag_autotune()
407 fepriv->auto_step, fepriv->auto_sub_step, in dvb_frontend_swzigzag_autotune()
408 fepriv->started_auto_step); in dvb_frontend_swzigzag_autotune()
411 c->frequency += fepriv->lnb_drift; in dvb_frontend_swzigzag_autotune()
413 c->inversion = fepriv->inversion; in dvb_frontend_swzigzag_autotune()
419 fepriv->state = FESTATE_ERROR; in dvb_frontend_swzigzag_autotune()
426 fepriv->auto_sub_step++; in dvb_frontend_swzigzag_autotune()
434 struct dvb_frontend_private *fepriv = fe->frontend_priv; in dvb_frontend_swzigzag() local
438 if (fepriv->state & FESTATE_IDLE) { in dvb_frontend_swzigzag()
439 fepriv->delay = 3*HZ; in dvb_frontend_swzigzag()
440 fepriv->quality = 0; in dvb_frontend_swzigzag()
445 if (fepriv->tune_mode_flags & FE_TUNE_MODE_ONESHOT) { in dvb_frontend_swzigzag()
446 if (fepriv->state & FESTATE_RETUNE) { in dvb_frontend_swzigzag()
452 fepriv->state = FESTATE_ERROR; in dvb_frontend_swzigzag()
454 fepriv->state = FESTATE_TUNED; in dvb_frontend_swzigzag()
456 fepriv->delay = 3*HZ; in dvb_frontend_swzigzag()
457 fepriv->quality = 0; in dvb_frontend_swzigzag()
462 if (fepriv->state & FESTATE_RETUNE) { in dvb_frontend_swzigzag()
467 if (s != fepriv->status) { in dvb_frontend_swzigzag()
469 fepriv->status = s; in dvb_frontend_swzigzag()
474 if ((fepriv->state & FESTATE_WAITFORLOCK) && (s & FE_HAS_LOCK)) { in dvb_frontend_swzigzag()
475 dvb_frontend_swzigzag_update_delay(fepriv, s & FE_HAS_LOCK); in dvb_frontend_swzigzag()
476 fepriv->state = FESTATE_TUNED; in dvb_frontend_swzigzag()
481 c->inversion = fepriv->inversion; in dvb_frontend_swzigzag()
487 if (fepriv->state & FESTATE_TUNED) { in dvb_frontend_swzigzag()
488 dvb_frontend_swzigzag_update_delay(fepriv, s & FE_HAS_LOCK); in dvb_frontend_swzigzag()
494 fepriv->state = FESTATE_ZIGZAG_FAST; in dvb_frontend_swzigzag()
495 fepriv->started_auto_step = fepriv->auto_step; in dvb_frontend_swzigzag()
496 fepriv->check_wrapped = 0; in dvb_frontend_swzigzag()
502 if ((fepriv->state & FESTATE_LOSTLOCK) && in dvb_frontend_swzigzag()
503 (fe->ops.info.caps & FE_CAN_RECOVER) && (fepriv->max_drift == 0)) { in dvb_frontend_swzigzag()
504 dvb_frontend_swzigzag_update_delay(fepriv, s & FE_HAS_LOCK); in dvb_frontend_swzigzag()
511 if (fepriv->state & FESTATE_DISEQC) { in dvb_frontend_swzigzag()
512 dvb_frontend_swzigzag_update_delay(fepriv, s & FE_HAS_LOCK); in dvb_frontend_swzigzag()
519 if (fepriv->state & FESTATE_RETUNE) { in dvb_frontend_swzigzag()
520 fepriv->lnb_drift = 0; in dvb_frontend_swzigzag()
521 fepriv->auto_step = 0; in dvb_frontend_swzigzag()
522 fepriv->auto_sub_step = 0; in dvb_frontend_swzigzag()
523 fepriv->started_auto_step = 0; in dvb_frontend_swzigzag()
524 fepriv->check_wrapped = 0; in dvb_frontend_swzigzag()
528 if ((fepriv->state & FESTATE_SEARCHING_FAST) || (fepriv->state & FESTATE_RETUNE)) { in dvb_frontend_swzigzag()
529 fepriv->delay = fepriv->min_delay; in dvb_frontend_swzigzag()
533 fepriv->check_wrapped); in dvb_frontend_swzigzag()
539 fepriv->state = FESTATE_SEARCHING_SLOW; in dvb_frontend_swzigzag()
540 fepriv->started_auto_step = fepriv->auto_step; in dvb_frontend_swzigzag()
543 fepriv->check_wrapped = 1; in dvb_frontend_swzigzag()
549 if (fepriv->state & FESTATE_RETUNE) { in dvb_frontend_swzigzag()
550 fepriv->state = FESTATE_TUNING_FAST; in dvb_frontend_swzigzag()
555 if (fepriv->state & FESTATE_SEARCHING_SLOW) { in dvb_frontend_swzigzag()
556 dvb_frontend_swzigzag_update_delay(fepriv, s & FE_HAS_LOCK); in dvb_frontend_swzigzag()
566 struct dvb_frontend_private *fepriv = fe->frontend_priv; in dvb_frontend_is_exiting() local
571 if (fepriv->dvbdev->writers == 1) in dvb_frontend_is_exiting()
572 if (time_after_eq(jiffies, fepriv->release_jiffies + in dvb_frontend_is_exiting()
581 struct dvb_frontend_private *fepriv = fe->frontend_priv; in dvb_frontend_should_wakeup() local
583 if (fepriv->wakeup) { in dvb_frontend_should_wakeup()
584 fepriv->wakeup = 0; in dvb_frontend_should_wakeup()
592 struct dvb_frontend_private *fepriv = fe->frontend_priv; in dvb_frontend_wakeup() local
594 fepriv->wakeup = 1; in dvb_frontend_wakeup()
595 wake_up_interruptible(&fepriv->wait_queue); in dvb_frontend_wakeup()
619 struct dvb_frontend_private *fepriv = fe->frontend_priv; in dvb_enable_media_tuner() local
626 fepriv->pipe_start_entity = NULL; in dvb_enable_media_tuner()
631 entity = fepriv->dvbdev->entity; in dvb_enable_media_tuner()
632 fepriv->pipe_start_entity = entity; in dvb_enable_media_tuner()
660 fepriv->pipe_start_entity = source; in dvb_enable_media_tuner()
692 struct dvb_frontend_private *fepriv = fe->frontend_priv; in dvb_frontend_thread() local
704 fepriv->check_wrapped = 0; in dvb_frontend_thread()
705 fepriv->quality = 0; in dvb_frontend_thread()
706 fepriv->delay = 3*HZ; in dvb_frontend_thread()
707 fepriv->status = 0; in dvb_frontend_thread()
708 fepriv->wakeup = 0; in dvb_frontend_thread()
709 fepriv->reinitialise = 0; in dvb_frontend_thread()
717 } else if (fepriv->pipe_start_entity) { in dvb_frontend_thread()
718 ret = media_entity_pipeline_start(fepriv->pipe_start_entity, in dvb_frontend_thread()
719 &fepriv->pipe); in dvb_frontend_thread()
729 up(&fepriv->sem); /* is locked when we enter the thread... */ in dvb_frontend_thread()
731 wait_event_interruptible_timeout(fepriv->wait_queue, in dvb_frontend_thread()
734 fepriv->delay); in dvb_frontend_thread()
738 if (!down_interruptible(&fepriv->sem)) in dvb_frontend_thread()
747 if (down_interruptible(&fepriv->sem)) in dvb_frontend_thread()
750 if (fepriv->reinitialise) { in dvb_frontend_thread()
752 if (fe->ops.set_tone && fepriv->tone != -1) in dvb_frontend_thread()
753 fe->ops.set_tone(fe, fepriv->tone); in dvb_frontend_thread()
754 if (fe->ops.set_voltage && fepriv->voltage != -1) in dvb_frontend_thread()
755 fe->ops.set_voltage(fe, fepriv->voltage); in dvb_frontend_thread()
756 fepriv->reinitialise = 0; in dvb_frontend_thread()
766 if (fepriv->state & FESTATE_RETUNE) { in dvb_frontend_thread()
769 fepriv->state = FESTATE_TUNED; in dvb_frontend_thread()
775 fe->ops.tune(fe, re_tune, fepriv->tune_mode_flags, &fepriv->delay, &s); in dvb_frontend_thread()
777 if (s != fepriv->status && !(fepriv->tune_mode_flags & FE_TUNE_MODE_ONESHOT)) { in dvb_frontend_thread()
780 fepriv->status = s; in dvb_frontend_thread()
788 …dev_dbg(fe->dvb->device, "%s: Frontend ALGO = DVBFE_ALGO_CUSTOM, state=%d\n", __func__, fepriv->st… in dvb_frontend_thread()
789 if (fepriv->state & FESTATE_RETUNE) { in dvb_frontend_thread()
791 fepriv->state = FESTATE_TUNED; in dvb_frontend_thread()
797 if (fepriv->algo_status & DVBFE_ALGO_SEARCH_AGAIN) { in dvb_frontend_thread()
799 fepriv->algo_status = fe->ops.search(fe); in dvb_frontend_thread()
804 fepriv->algo_status &= ~DVBFE_ALGO_SEARCH_AGAIN; in dvb_frontend_thread()
808 if (fepriv->algo_status != DVBFE_ALGO_SEARCH_SUCCESS) { in dvb_frontend_thread()
809 fepriv->algo_status |= DVBFE_ALGO_SEARCH_AGAIN; in dvb_frontend_thread()
810 fepriv->delay = HZ / 2; in dvb_frontend_thread()
812 dtv_property_legacy_params_sync(fe, &fepriv->parameters_out); in dvb_frontend_thread()
814 if (s != fepriv->status) { in dvb_frontend_thread()
816 fepriv->status = s; in dvb_frontend_thread()
818 fepriv->delay = HZ / 10; in dvb_frontend_thread()
819 fepriv->algo_status |= DVBFE_ALGO_SEARCH_AGAIN; in dvb_frontend_thread()
821 fepriv->delay = 60 * HZ; in dvb_frontend_thread()
835 if (fepriv->pipe_start_entity) in dvb_frontend_thread()
836 media_entity_pipeline_stop(fepriv->pipe_start_entity); in dvb_frontend_thread()
837 fepriv->pipe_start_entity = NULL; in dvb_frontend_thread()
854 fepriv->thread = NULL; in dvb_frontend_thread()
862 up(&fepriv->sem); in dvb_frontend_thread()
869 struct dvb_frontend_private *fepriv = fe->frontend_priv; in dvb_frontend_stop() local
877 if (!fepriv->thread) in dvb_frontend_stop()
880 kthread_stop(fepriv->thread); in dvb_frontend_stop()
882 sema_init(&fepriv->sem, 1); in dvb_frontend_stop()
883 fepriv->state = FESTATE_IDLE; in dvb_frontend_stop()
886 if (fepriv->thread) in dvb_frontend_stop()
889 fepriv->thread); in dvb_frontend_stop()
938 struct dvb_frontend_private *fepriv = fe->frontend_priv; in dvb_frontend_start() local
943 if (fepriv->thread) { in dvb_frontend_start()
952 if (down_interruptible (&fepriv->sem)) in dvb_frontend_start()
955 fepriv->state = FESTATE_IDLE; in dvb_frontend_start()
957 fepriv->thread = NULL; in dvb_frontend_start()
967 up(&fepriv->sem); in dvb_frontend_start()
970 fepriv->thread = fe_thread; in dvb_frontend_start()
2022 struct dvb_frontend_private *fepriv = fe->frontend_priv; in dvb_frontend_ioctl() local
2026 if (down_interruptible(&fepriv->sem)) in dvb_frontend_ioctl()
2030 up(&fepriv->sem); in dvb_frontend_ioctl()
2037 up(&fepriv->sem); in dvb_frontend_ioctl()
2048 up(&fepriv->sem); in dvb_frontend_ioctl()
2057 struct dvb_frontend_private *fepriv = fe->frontend_priv; in dvb_frontend_ioctl_properties() local
2124 if (fepriv->state != FESTATE_IDLE) { in dvb_frontend_ioctl_properties()
2152 struct dvb_frontend_private *fepriv = fe->frontend_priv; in dtv_set_frontend() local
2165 dtv_property_legacy_params_sync(fe, &fepriv->parameters_out); in dtv_set_frontend()
2235 fepriv->min_delay = (fetunesettings.min_delay_ms * HZ) / 1000; in dtv_set_frontend()
2236 fepriv->max_drift = fetunesettings.max_drift; in dtv_set_frontend()
2237 fepriv->step_size = fetunesettings.step_size; in dtv_set_frontend()
2247 fepriv->min_delay = HZ / 20; in dtv_set_frontend()
2248 fepriv->step_size = c->symbol_rate / 16000; in dtv_set_frontend()
2249 fepriv->max_drift = c->symbol_rate / 2000; in dtv_set_frontend()
2255 fepriv->min_delay = HZ / 20; in dtv_set_frontend()
2256 fepriv->step_size = fe->ops.info.frequency_stepsize * 2; in dtv_set_frontend()
2257 fepriv->max_drift = (fe->ops.info.frequency_stepsize * 2) + 1; in dtv_set_frontend()
2264 fepriv->min_delay = HZ / 20; in dtv_set_frontend()
2265 fepriv->step_size = 0; /* no zigzag */ in dtv_set_frontend()
2266 fepriv->max_drift = 0; in dtv_set_frontend()
2271 fepriv->min_delay = (dvb_override_tune_delay * HZ) / 1000; in dtv_set_frontend()
2273 fepriv->state = FESTATE_RETUNE; in dtv_set_frontend()
2276 fepriv->algo_status |= DVBFE_ALGO_SEARCH_AGAIN; in dtv_set_frontend()
2281 fepriv->status = 0; in dtv_set_frontend()
2292 struct dvb_frontend_private *fepriv = fe->frontend_priv; in dvb_frontend_ioctl_legacy() local
2337 if (!(fepriv->tune_mode_flags & FE_TUNE_MODE_ONESHOT)) in dvb_frontend_ioctl_legacy()
2348 if (fepriv->state == FESTATE_RETUNE || in dvb_frontend_ioctl_legacy()
2349 fepriv->state == FESTATE_ERROR) { in dvb_frontend_ioctl_legacy()
2362 if (fepriv->thread) in dvb_frontend_ioctl_legacy()
2371 if (fepriv->thread) in dvb_frontend_ioctl_legacy()
2380 if (fepriv->thread) in dvb_frontend_ioctl_legacy()
2389 if (fepriv->thread) in dvb_frontend_ioctl_legacy()
2399 fepriv->state = FESTATE_DISEQC; in dvb_frontend_ioctl_legacy()
2400 fepriv->status = 0; in dvb_frontend_ioctl_legacy()
2407 fepriv->state = FESTATE_DISEQC; in dvb_frontend_ioctl_legacy()
2408 fepriv->status = 0; in dvb_frontend_ioctl_legacy()
2415 fepriv->state = FESTATE_DISEQC; in dvb_frontend_ioctl_legacy()
2416 fepriv->status = 0; in dvb_frontend_ioctl_legacy()
2423 fepriv->tone = (fe_sec_tone_mode_t) parg; in dvb_frontend_ioctl_legacy()
2424 fepriv->state = FESTATE_DISEQC; in dvb_frontend_ioctl_legacy()
2425 fepriv->status = 0; in dvb_frontend_ioctl_legacy()
2432 fepriv->voltage = (fe_sec_voltage_t) parg; in dvb_frontend_ioctl_legacy()
2433 fepriv->state = FESTATE_DISEQC; in dvb_frontend_ioctl_legacy()
2434 fepriv->status = 0; in dvb_frontend_ioctl_legacy()
2441 fepriv->state = FESTATE_DISEQC; in dvb_frontend_ioctl_legacy()
2442 fepriv->status = 0; in dvb_frontend_ioctl_legacy()
2495 fepriv->state = FESTATE_DISEQC; in dvb_frontend_ioctl_legacy()
2496 fepriv->status = 0; in dvb_frontend_ioctl_legacy()
2529 fepriv->tune_mode_flags = (unsigned long) parg; in dvb_frontend_ioctl_legacy()
2542 struct dvb_frontend_private *fepriv = fe->frontend_priv; in dvb_frontend_poll() local
2546 poll_wait (file, &fepriv->events.wait_queue, wait); in dvb_frontend_poll()
2548 if (fepriv->events.eventw != fepriv->events.eventr) in dvb_frontend_poll()
2558 struct dvb_frontend_private *fepriv = fe->frontend_priv; in dvb_frontend_open() local
2615 fepriv->reinitialise = 1; in dvb_frontend_open()
2623 fepriv->tune_mode_flags &= ~FE_TUNE_MODE_ONESHOT; in dvb_frontend_open()
2624 fepriv->tone = -1; in dvb_frontend_open()
2625 fepriv->voltage = -1; in dvb_frontend_open()
2632 fepriv->events.eventr = fepriv->events.eventw = 0; in dvb_frontend_open()
2654 struct dvb_frontend_private *fepriv = fe->frontend_priv; in dvb_frontend_release() local
2660 fepriv->release_jiffies = jiffies; in dvb_frontend_release()
2667 wake_up(&fepriv->wait_queue); in dvb_frontend_release()
2707 struct dvb_frontend_private *fepriv = fe->frontend_priv; in dvb_frontend_resume() local
2723 fepriv->state = FESTATE_RETUNE; in dvb_frontend_resume()
2733 struct dvb_frontend_private *fepriv; in dvb_register_frontend() local
2755 fepriv = fe->frontend_priv; in dvb_register_frontend()
2757 sema_init(&fepriv->sem, 1); in dvb_register_frontend()
2758 init_waitqueue_head (&fepriv->wait_queue); in dvb_register_frontend()
2759 init_waitqueue_head (&fepriv->events.wait_queue); in dvb_register_frontend()
2760 mutex_init(&fepriv->events.mtx); in dvb_register_frontend()
2762 fepriv->inversion = INVERSION_OFF; in dvb_register_frontend()
2768 dvb_register_device (fe->dvb, &fepriv->dvbdev, &dvbdev_template, in dvb_register_frontend()
2786 struct dvb_frontend_private *fepriv = fe->frontend_priv; in dvb_unregister_frontend() local
2793 if (fepriv->dvbdev->users < -1) in dvb_unregister_frontend()
2794 wait_event(fepriv->dvbdev->wait_queue, in dvb_unregister_frontend()
2795 fepriv->dvbdev->users==-1); in dvb_unregister_frontend()
2798 dvb_unregister_device (fepriv->dvbdev); in dvb_unregister_frontend()
2801 kfree(fepriv); in dvb_unregister_frontend()