1016a45b2Smrg#ifndef __FI1236_H__ 2016a45b2Smrg#define __FI1236_H__ 3016a45b2Smrg 4016a45b2Smrg#include "xf86i2c.h" 5016a45b2Smrg 6016a45b2Smrg/* why someone has defined NUM someplace else is beyoung me.. */ 7016a45b2Smrg#undef NUM 8016a45b2Smrg 9016a45b2Smrgtypedef struct { 10016a45b2Smrg CARD32 fcar; /* 16 * fcar_Mhz */ 11016a45b2Smrg CARD32 min_freq; /* 16 * min_freq_Mhz */ 12016a45b2Smrg CARD32 max_freq; /* 16 * max_freq_Mhz */ 13016a45b2Smrg 14016a45b2Smrg CARD32 threshold1; /* 16 * Value_Mhz */ 15016a45b2Smrg CARD32 threshold2; /* 16 * Value_Mhz */ 16016a45b2Smrg 17016a45b2Smrg CARD8 band_low; 18016a45b2Smrg CARD8 band_mid; 19016a45b2Smrg CARD8 band_high; 20016a45b2Smrg CARD8 control; 21016a45b2Smrg } FI1236_parameters; 22016a45b2Smrg 23016a45b2Smrg 24016a45b2Smrgtypedef struct { 25016a45b2Smrg /* what we want */ 26016a45b2Smrg /* all frequencies are in Mhz */ 27016a45b2Smrg double f_rf; /* frequency to tune to */ 28016a45b2Smrg double f_if1; /* first intermediate frequency */ 29016a45b2Smrg double f_if2; /* second intermediate frequency */ 30016a45b2Smrg double f_ref; /* reference frequency */ 31016a45b2Smrg double f_ifbw; /* bandwidth */ 32016a45b2Smrg double f_step; /* step */ 33016a45b2Smrg 34016a45b2Smrg /* what we compute */ 35016a45b2Smrg double f_lo1; 36016a45b2Smrg double f_lo2; 37016a45b2Smrg int LO1I; 38016a45b2Smrg int LO2I; 39016a45b2Smrg int SEL; 40016a45b2Smrg int STEP; 41016a45b2Smrg int NUM; 42016a45b2Smrg } MT2032_parameters; 43016a45b2Smrg 44016a45b2Smrgtypedef struct { 45016a45b2Smrg I2CDevRec d; 46016a45b2Smrg int type; 47016a45b2Smrg 48016a45b2Smrg void* afc_source; /* The AFC source may be another chip like TDA988x */ 49016a45b2Smrg 50016a45b2Smrg int afc_delta; 51016a45b2Smrg CARD32 original_frequency; 52016a45b2Smrg Bool afc_timer_installed; 53016a45b2Smrg int afc_count; 54016a45b2Smrg int last_afc_hint; 55016a45b2Smrg 56016a45b2Smrg double video_if; 57016a45b2Smrg FI1236_parameters parm; 58016a45b2Smrg int xogc; /* for MT2032 */ 59016a45b2Smrg 60016a45b2Smrg struct { 61016a45b2Smrg CARD8 div1; 62016a45b2Smrg CARD8 div2; 63016a45b2Smrg CARD8 control; 64016a45b2Smrg CARD8 band; 65016a45b2Smrg CARD8 aux; /* this is for MK3 tuners */ 66016a45b2Smrg } tuner_data; 67016a45b2Smrg } FI1236Rec, *FI1236Ptr; 68016a45b2Smrg 69016a45b2Smrg#define TUNER_TYPE_FI1236 0 70016a45b2Smrg#define TUNER_TYPE_FI1216 1 71016a45b2Smrg#define TUNER_TYPE_TEMIC_FN5AL 2 72016a45b2Smrg#define TUNER_TYPE_MT2032 3 73016a45b2Smrg#define TUNER_TYPE_FI1246 4 74016a45b2Smrg#define TUNER_TYPE_FI1256 5 75016a45b2Smrg#define TUNER_TYPE_FI1236W 6 76016a45b2Smrg#define TUNER_TYPE_FM1216ME 7 77016a45b2Smrg 78016a45b2Smrg#define FI1236_ADDR(a) ((a)->d.SlaveAddr) 79016a45b2Smrg 80016a45b2Smrg#define FI1236_ADDR_1 0xC6 81016a45b2Smrg#define FI1236_ADDR_2 0xC0 82016a45b2Smrg 83016a45b2Smrg#define TUNER_TUNED 0 84016a45b2Smrg#define TUNER_JUST_BELOW 1 85016a45b2Smrg#define TUNER_JUST_ABOVE -1 86016a45b2Smrg#define TUNER_OFF 4 87016a45b2Smrg#define TUNER_STILL_TUNING 5 88016a45b2Smrg 89016a45b2Smrg 90016a45b2Smrgvoid FI1236_tune(FI1236Ptr f, CARD32 frequency); 91016a45b2Smrg 92016a45b2Smrg#define FI1236SymbolsList \ 93016a45b2Smrg "Detect_FI1236", \ 94016a45b2Smrg "FI1236_set_tuner_type", \ 95016a45b2Smrg "TUNER_set_frequency" 96016a45b2Smrg 97016a45b2Smrg#define xf86_Detect_FI1236 Detect_FI1236 98016a45b2Smrgextern _X_EXPORT FI1236Ptr Detect_FI1236(I2CBusPtr b, I2CSlaveAddr addr); 99016a45b2Smrg#define xf86_FI1236_set_tuner_type FI1236_set_tuner_type 100016a45b2Smrgextern _X_EXPORT void FI1236_set_tuner_type(FI1236Ptr f, int type); 101016a45b2Smrg#define xf86_TUNER_set_frequency TUNER_set_frequency 102016a45b2Smrgextern _X_EXPORT void TUNER_set_frequency(FI1236Ptr f, CARD32 frequency); 103016a45b2Smrg 104016a45b2Smrg#define xf86_FI1236_AFC FI1236_AFC 105016a45b2Smrgextern _X_EXPORT int FI1236_AFC(FI1236Ptr f); 106016a45b2Smrg#define xf86_TUNER_get_afc_hint TUNER_get_afc_hint 107016a45b2Smrgextern _X_EXPORT int TUNER_get_afc_hint(FI1236Ptr f); 108016a45b2Smrg#define xf86_fi1236_dump_status fi1236_dump_status 109016a45b2Smrgextern _X_EXPORT void fi1236_dump_status(FI1236Ptr f); 110016a45b2Smrg 111016a45b2Smrg#endif 112