1706f2543Smrg#ifndef __FI1236_H__ 2706f2543Smrg#define __FI1236_H__ 3706f2543Smrg 4706f2543Smrg#include "xf86i2c.h" 5706f2543Smrg 6706f2543Smrg/* why someone has defined NUM someplace else is beyoung me.. */ 7706f2543Smrg#undef NUM 8706f2543Smrg 9706f2543Smrgtypedef struct { 10706f2543Smrg CARD32 fcar; /* 16 * fcar_Mhz */ 11706f2543Smrg CARD32 min_freq; /* 16 * min_freq_Mhz */ 12706f2543Smrg CARD32 max_freq; /* 16 * max_freq_Mhz */ 13706f2543Smrg 14706f2543Smrg CARD32 threshold1; /* 16 * Value_Mhz */ 15706f2543Smrg CARD32 threshold2; /* 16 * Value_Mhz */ 16706f2543Smrg 17706f2543Smrg CARD8 band_low; 18706f2543Smrg CARD8 band_mid; 19706f2543Smrg CARD8 band_high; 20706f2543Smrg CARD8 control; 21706f2543Smrg } FI1236_parameters; 22706f2543Smrg 23706f2543Smrg 24706f2543Smrgtypedef struct { 25706f2543Smrg /* what we want */ 26706f2543Smrg /* all frequencies are in Mhz */ 27706f2543Smrg double f_rf; /* frequency to tune to */ 28706f2543Smrg double f_if1; /* first intermediate frequency */ 29706f2543Smrg double f_if2; /* second intermediate frequency */ 30706f2543Smrg double f_ref; /* reference frequency */ 31706f2543Smrg double f_ifbw; /* bandwidth */ 32706f2543Smrg double f_step; /* step */ 33706f2543Smrg 34706f2543Smrg /* what we compute */ 35706f2543Smrg double f_lo1; 36706f2543Smrg double f_lo2; 37706f2543Smrg int LO1I; 38706f2543Smrg int LO2I; 39706f2543Smrg int SEL; 40706f2543Smrg int STEP; 41706f2543Smrg int NUM; 42706f2543Smrg } MT2032_parameters; 43706f2543Smrg 44706f2543Smrgtypedef struct { 45706f2543Smrg I2CDevRec d; 46706f2543Smrg int type; 47706f2543Smrg 48706f2543Smrg void* afc_source; /* The AFC source may be another chip like TDA988x */ 49706f2543Smrg 50706f2543Smrg int afc_delta; 51706f2543Smrg CARD32 original_frequency; 52706f2543Smrg Bool afc_timer_installed; 53706f2543Smrg int afc_count; 54706f2543Smrg int last_afc_hint; 55706f2543Smrg 56706f2543Smrg double video_if; 57706f2543Smrg FI1236_parameters parm; 58706f2543Smrg int xogc; /* for MT2032 */ 59706f2543Smrg 60706f2543Smrg struct { 61706f2543Smrg CARD8 div1; 62706f2543Smrg CARD8 div2; 63706f2543Smrg CARD8 control; 64706f2543Smrg CARD8 band; 65706f2543Smrg CARD8 aux; /* this is for MK3 tuners */ 66706f2543Smrg } tuner_data; 67706f2543Smrg } FI1236Rec, *FI1236Ptr; 68706f2543Smrg 69706f2543Smrg#define TUNER_TYPE_FI1236 0 70706f2543Smrg#define TUNER_TYPE_FI1216 1 71706f2543Smrg#define TUNER_TYPE_TEMIC_FN5AL 2 72706f2543Smrg#define TUNER_TYPE_MT2032 3 73706f2543Smrg#define TUNER_TYPE_FI1246 4 74706f2543Smrg#define TUNER_TYPE_FI1256 5 75706f2543Smrg#define TUNER_TYPE_FI1236W 6 76706f2543Smrg#define TUNER_TYPE_FM1216ME 7 77706f2543Smrg 78706f2543Smrg#define FI1236_ADDR(a) ((a)->d.SlaveAddr) 79706f2543Smrg 80706f2543Smrg#define FI1236_ADDR_1 0xC6 81706f2543Smrg#define FI1236_ADDR_2 0xC0 82706f2543Smrg 83706f2543Smrg#define TUNER_TUNED 0 84706f2543Smrg#define TUNER_JUST_BELOW 1 85706f2543Smrg#define TUNER_JUST_ABOVE -1 86706f2543Smrg#define TUNER_OFF 4 87706f2543Smrg#define TUNER_STILL_TUNING 5 88706f2543Smrg 89706f2543Smrg 90706f2543Smrgvoid FI1236_tune(FI1236Ptr f, CARD32 frequency); 91706f2543Smrg 92706f2543Smrg#define FI1236SymbolsList \ 93706f2543Smrg "Detect_FI1236", \ 94706f2543Smrg "FI1236_set_tuner_type", \ 95706f2543Smrg "TUNER_set_frequency" 96706f2543Smrg 97706f2543Smrg#define xf86_Detect_FI1236 Detect_FI1236 98706f2543Smrgextern _X_EXPORT FI1236Ptr Detect_FI1236(I2CBusPtr b, I2CSlaveAddr addr); 99706f2543Smrg#define xf86_FI1236_set_tuner_type FI1236_set_tuner_type 100706f2543Smrgextern _X_EXPORT void FI1236_set_tuner_type(FI1236Ptr f, int type); 101706f2543Smrg#define xf86_TUNER_set_frequency TUNER_set_frequency 102706f2543Smrgextern _X_EXPORT void TUNER_set_frequency(FI1236Ptr f, CARD32 frequency); 103706f2543Smrg 104706f2543Smrg#define xf86_FI1236_AFC FI1236_AFC 105706f2543Smrgextern _X_EXPORT int FI1236_AFC(FI1236Ptr f); 106706f2543Smrg#define xf86_TUNER_get_afc_hint TUNER_get_afc_hint 107706f2543Smrgextern _X_EXPORT int TUNER_get_afc_hint(FI1236Ptr f); 108706f2543Smrg#define xf86_fi1236_dump_status fi1236_dump_status 109706f2543Smrgextern _X_EXPORT void fi1236_dump_status(FI1236Ptr f); 110706f2543Smrg 111706f2543Smrg#endif 112