diff options
Diffstat (limited to 'src/af903x.h')
-rw-r--r-- | src/af903x.h | 225 |
1 files changed, 225 insertions, 0 deletions
diff --git a/src/af903x.h b/src/af903x.h new file mode 100644 index 0000000..4158343 --- /dev/null +++ b/src/af903x.h @@ -0,0 +1,225 @@ + +#ifndef _AF903X_H_ +#define _AF903X_H_ + +#define DVB_USB_LOG_PREFIX "AF903X" +#include <linux/kernel.h> +#include <linux/errno.h> +#include <linux/init.h> +#include <linux/slab.h> +#include <linux/module.h> +#include <linux/kref.h> +#include <linux/smp_lock.h> +#include <linux/usb.h> +#include <asm/uaccess.h> +#include "dvb-usb.h" +#include "af903x-ioctl.h" +#include "demodulator.h" +#include "userdef.h" +#include "firmware.h" +#include "type.h" +#include "Common.h" +#include <linux/version.h> +#include <linux/mutex.h> + + +#define DRIVER_RELEASE_VERSION "v9.08.14.1" +//***************** customization ***************** +//#define QuantaMID 1 +//#define EEEPC 1 +//***************** from compat.h ***************** +#if LINUX_VERSION_CODE == KERNEL_VERSION(2,6,18) +typedef int bool; +#define true 1 +#define false 0 +//***************** from dvb-usb.h ***************** +#define dvb_usb_device_properties dvb_usb_properties +#define dvb_usb_adapter dvb_usb_device +#endif +//***************** from device.h *****************// +#define AFA_USB_DEVICE + +#define SLAVE_DEMOD_2WIREADDR 0x3A + +#define TS_PACKET_SIZE 188 +#define TS_PACKET_COUNT_HI 348 +#define TS_PACKET_COUNT_FU 21 + +//***************** from driver.h *****************// +#define TS_FRAMES_HI 16 +#define TS_FRAMES_FU 128 +#define MAX_USB20_IRP_NUM 5 +#define MAX_USB11_IRP_NUM 2 + +//***************** from afdrv.h *****************// +#define GANY_ONLY 0x42F5 +#define EEPROM_FLB_OFS 8 + +#define EEPROM_IRMODE (GANY_ONLY+EEPROM_FLB_OFS+0x10) //00:disabled, 01:HID +#define EEPROM_SELSUSPEND (GANY_ONLY+EEPROM_FLB_OFS+0x28) //Selective Suspend Mode +#define EEPROM_TSMODE (GANY_ONLY+EEPROM_FLB_OFS+0x28+1) //0:one ts, 1:dual ts +#define EEPROM_2WIREADDR (GANY_ONLY+EEPROM_FLB_OFS+0x28+2) //MPEG2 2WireAddr +#define EEPROM_SUSPEND (GANY_ONLY+EEPROM_FLB_OFS+0x28+3) //Suspend Mode +#define EEPROM_IRTYPE (GANY_ONLY+EEPROM_FLB_OFS+0x28+4) //0:NEC, 1:RC6 +#define EEPROM_SAWBW1 (GANY_ONLY+EEPROM_FLB_OFS+0x28+5) +#define EEPROM_XTAL1 (GANY_ONLY+EEPROM_FLB_OFS+0x28+6) //0:28800, 1:20480 +#define EEPROM_SPECINV1 (GANY_ONLY+EEPROM_FLB_OFS+0x28+7) +#define EEPROM_TUNERID (GANY_ONLY+EEPROM_FLB_OFS+0x30+4) // +#define EEPROM_IFFREQL (GANY_ONLY+EEPROM_FLB_OFS+0x30) +#define EEPROM_IFFREQH (GANY_ONLY+EEPROM_FLB_OFS+0x30+1) +#define EEPROM_IF1L (GANY_ONLY+EEPROM_FLB_OFS+0x30+2) +#define EEPROM_IF1H (GANY_ONLY+EEPROM_FLB_OFS+0x30+3) +#define EEPROM_SHIFT (0x10) //EEPROM Addr Shift for slave front end + + +extern int dvb_usb_af903x_debug; +//#define deb_info(args...) dprintk(dvb_usb_af903x_debug,0x01,args) +//#define deb_fw(args...) dprintk(dvb_usb_af903x_debug,0x02,args) +//#define deb_fwdata(args...) dprintk(dvb_usb_af903x_debug,0x04,args) +//#define deb_data(args...) dprintk(dvb_usb_af903x_debug,0x08,args) + + +//#define DEBUG 1 +#ifdef DEBUG +#define deb_data(args...) printk(KERN_NOTICE args) +#else +#define deb_data(args...) +#endif + +//***************** from device.h *****************// +typedef struct _TUNER_INFO { + + Bool bTunerInited; + Bool bSettingFreq; + BYTE TunerId; + Bool bTunerOK; + Tuner_struct MXL5005_Info; + +} TUNER_INFO, *PTUNER_INFO; +typedef struct _FILTER_CONTEXT_HW { + DWORD ulCurrentFrequency; + WORD ucCurrentBandWidth; + DWORD ulDesiredFrequency; + WORD ucDesiredBandWidth; + //ULONG ulBandWidth; + Bool bTimerOn; + // PKSFILTER filter; + Byte GraphBuilt; + TUNER_INFO tunerinfo; + //SIGNAL_STATISTICS ss; + //SIGNAL_RETRAIN sr; + //DWORD gdwOrigFCW; //move from AF901x.cpp [global variable] + //BYTE gucOrigUnplugTh; //move from AF901x.cpp [global variable] + //BYTE gucPreShiftIdx; //move from AF901x.cpp [global variable] + // PKSFILTERFACTORY pFilterFactory; + int bEnPID; + //ULONG ulcPIDs; + // ULONG aulPIDs[32]; + Bool bApOn; + int bResetTs; + Byte OvrFlwChk; +} FILTER_CONTEXT_HW, *PFILTER_CONTEXT_HW; + +typedef struct _DEVICE_CONTEXT { + FILTER_CONTEXT_HW fc[2]; + Byte DeviceNo; + Bool bBootCode; + Bool bEP12Error; + Bool bEP45Error; + //bool bDebugMsg; + //bool bDevExist; + Bool bDualTs; + Bool bIrTblDownload; + Byte BulkOutData[256]; + u32 WriteLength; + Bool bSurpriseRemoval; + Bool bDevNotResp; + Bool bEnterSuspend; + Bool bSupportSuspend; + Bool bSupportSelSuspend; + u16 regIdx; + Byte eepromIdx; + u16 UsbMode; + u16 MaxPacketSize; + u32 MaxIrpSize; + u32 TsFrames; + u32 TsFrameSize; + u32 TsFrameSizeDw; + u32 TsPacketCount; + //BYTE ucDemod2WireAddr; + //USB_IDLE_CALLBACK_INFO cbinfo; // callback info for selective suspend // our selective suspend IRP + + Bool bSelectiveSuspend; + u32 ulActiveFilter; + //BYTE ucSerialNo; + Architecture architecture; + //BYTE Tuner_Id; + StreamType StreamType; + Bool bDCAPIP; + Bool bSwapFilter; + Byte FilterCnt; + Bool bTunerPowerOff; + //PKSPIN PinSave; + Byte UsbCtrlTimeOut; + + Ganymede Demodulator; + + Bool ForceWrite; + +} DEVICE_CONTEXT, *PDEVICE_CONTEXT; + +#define PTI (PDC->fc[ucSlaveDemod].tunerinfo) //TunerInfo pointer + + + +struct af903x_ofdm_channel { + u32 RF_kHz; + u8 Bw; + s16 nfft; + s16 guard; + s16 nqam; + s16 vit_hrch; + s16 vit_select_hp; + s16 vit_alpha; + s16 vit_code_rate_hp; + s16 vit_code_rate_lp; + u8 intlv_native; +}; + +struct tuner_priv { + struct tuner_config *cfg; + struct i2c_adapter *i2c; + + u32 frequency; + u32 bandwidth; + u16 if1_freq; + u8 fmfreq; +}; + +extern struct dvb_frontend * tuner_attach(struct dvb_frontend *fe); +extern struct dvb_frontend * af903x_attach(u8 TMP); +extern struct dvb_usb_device_properties af903x_properties[]; +extern struct usb_device_id af903x_usb_id_table[]; +extern struct usb_device *udevs; +extern PDEVICE_CONTEXT PDC; +extern int af903x_device_count; + +extern DWORD Device_init(struct usb_device *udev,PDEVICE_CONTEXT PDCs, Bool bBoot); +extern DWORD DL_ApCtrl (BYTE ucSlaveDemod, Bool bOn); +extern DWORD DL_Tuner_SetFreqBw(BYTE ucSlaveDemod,u32 ucFreq,u8 ucBw); +extern DWORD DL_isLocked(BYTE ucSlaveDemod, Bool *bLock); +extern DWORD DL_getSignalStrength(BYTE ucSlaveDemod, BYTE* strength); +extern DWORD DL_getSignalStrengthDbm(BYTE ucSlaveDemod, Long* strengthDbm); +extern DWORD DL_getChannelStatistic(BYTE ucSlaveDemod, ChannelStatistic* channelStatistic); +extern DWORD DL_getChannelModulation(BYTE ucSlaveDemod, ChannelModulation* channelModulation); +extern DWORD DL_getSNR(BYTE ucSlaveDemod, Constellation* constellation, BYTE* snr); +extern DWORD DL_ReSetInterval(void); +extern DWORD DL_Reboot(void); +extern DWORD DL_CheckTunerInited(BYTE ucSlaveDemod, Bool *bOn); +extern DWORD DL_PIDOnOff(BYTE ucSlaveDemod, bool bOn); +extern DWORD DL_ResetPID(BYTE chip); +extern DWORD DL_AddPID(BYTE ucSlaveDemod, Byte index,Pid pid); +extern DWORD DL_RemovePID(BYTE ucSlaveDemod, Byte index,Pid pid); +extern bool TunerInited0, TunerInited1, DevicePower, DeviceReboot; +#endif + |