/* this function is for external use only */ int TUNER_get_afc_hint(FI1236Ptr f) { if(f->afc_timer_installed)return TUNER_STILL_TUNING; return f->last_afc_hint; if(f->type==TUNER_TYPE_MT2032) return MT2032_get_afc_hint(f); else return FI1236_get_afc_hint(f); }
int FI1236_AFC(FI1236Ptr f) { #if 0 xf86DrvMsg(f->d.pI2CBus->scrnIndex, X_INFO, "AFC: f=%p f->count=%d f->original_frequency=%d f->afc_delta=%d\n", f, f->afc_count, f->original_frequency, f->afc_delta); #endif f->afc_count++; if(f->type==TUNER_TYPE_MT2032) { f->last_afc_hint=MT2032_get_afc_hint(f); xf86DrvMsg(f->d.pI2CBus->scrnIndex, X_INFO, "AFC: afc_hint=%d\n", f->last_afc_hint); if(f->last_afc_hint==TUNER_TUNED)return 0; if(f->afc_count>3)f->last_afc_hint=TUNER_OFF; if(f->last_afc_hint==TUNER_OFF) { f->afc_delta=0; } else f->afc_delta+=f->last_afc_hint; xf86DrvMsg(f->d.pI2CBus->scrnIndex, X_INFO, "AFC: Setting tuner frequency to %g\n", (0.5*(2*f->original_frequency+f->afc_delta))/16.0); MT2032_tune(f, (1.0*f->original_frequency+0.5*f->afc_delta)/16.0, 0.03125); if(f->last_afc_hint==TUNER_OFF)return 0; return 1; /* call me again */ } else { f->last_afc_hint=FI1236_get_afc_hint(f); if(f->last_afc_hint==TUNER_TUNED) { xf86DrvMsg(f->d.pI2CBus->scrnIndex, X_INFO, "AFC: TUNER_TUNNED\n"); return 0; } if(f->afc_count>3)f->last_afc_hint=TUNER_OFF; if(f->last_afc_hint==TUNER_OFF) { f->afc_delta=0; } else f->afc_delta+=f->last_afc_hint; xf86DrvMsg(f->d.pI2CBus->scrnIndex, X_INFO, "AFC: Setting tuner frequency to %g\n", (0.5*(2*f->original_frequency+f->afc_delta))/16.0); FI1236_tune(f, f->original_frequency+f->afc_delta); if(f->last_afc_hint==TUNER_OFF)return 0; return 1; /* call me again */ } return 0; /* done */ }