* Structure of data needed for Spur Avoidance
*/
struct MT2063_AvoidSpursData_t {
- u32 nAS_Algorithm;
u32 f_ref;
u32 f_in;
u32 f_LO1;
static void MT2063_AddExclZone(struct MT2063_AvoidSpursData_t *pAS_Info,
u32 f_min, u32 f_max);
static u32 MT2063_ReInit(struct mt2063_state *state);
-static u32 MT2063_Close(struct mt2063_state *state);
static u32 MT2063_GetReg(struct mt2063_state *state, u8 reg, u8 * val);
static u32 MT2063_GetParam(struct mt2063_state *state, enum MT2063_Param param, u32 * pValue);
static u32 MT2063_SetReg(struct mt2063_state *state, u8 reg, u8 val);
return (status);
}
-/*****************************************************************************
-**
-** Name: MT_Sleep
-**
-** Description: Delay execution for "nMinDelayTime" milliseconds
-**
-** Parameters: hUserData - User-specific I/O parameter that was
-** passed to tuner's Open function.
-** nMinDelayTime - Delay time in milliseconds
-**
-** Returns: None.
-**
-** Notes: This is a callback function that is called from the
-** the tuning algorithm. You MUST provide code that
-** blocks execution for the specified period of time.
-**
-** Revision History:
-**
-** SCR Date Author Description
-** -------------------------------------------------------------------------
-** N/A 03-25-2004 DAD Original
-**
-*****************************************************************************/
+/*
+ * FIXME: Is this really needed?
+ */
static int MT2063_Sleep(struct dvb_frontend *fe)
{
/*
return 0;
}
-//end of mt2063_userdef.c
-//=================================================================
-//#################################################################
-//=================================================================
-
-//context of mt2063_spuravoid.c <Henry> ======================================
-//#################################################################
-//=================================================================
-
-/*****************************************************************************
-**
-** Name: mt_spuravoid.c
-**
-** Description: Microtune spur avoidance software module.
-** Supports Microtune tuner drivers.
-**
-** CVS ID: $Id: mt_spuravoid.c,v 1.3 2008/06/26 15:39:52 software Exp $
-** CVS Source: $Source: /export/home/cvsroot/software/tuners/MT2063/mt_spuravoid.c,v $
-**
-** Revision History:
-**
-** SCR Date Author Description
-** -------------------------------------------------------------------------
-** 082 03-25-2005 JWS Original multi-tuner support - requires
-** MTxxxx_CNT declarations
-** 096 04-06-2005 DAD Ver 1.11: Fix divide by 0 error if maxH==0.
-** 094 04-06-2005 JWS Ver 1.11 Added uceil and ufloor to get rid
-** of compiler warnings
-** N/A 04-07-2005 DAD Ver 1.13: Merged single- and multi-tuner spur
-** avoidance into a single module.
-** 103 01-31-2005 DAD Ver 1.14: In MT_AddExclZone(), if the range
-** (f_min, f_max) < 0, ignore the entry.
-** 115 03-23-2007 DAD Fix declaration of spur due to truncation
-** errors.
-** 117 03-29-2007 RSK Ver 1.15: Re-wrote to match search order from
-** tuner DLL.
-** 137 06-18-2007 DAD Ver 1.16: Fix possible divide-by-0 error for
-** multi-tuners that have
-** (delta IF1) > (f_out-f_outbw/2).
-** 147 07-27-2007 RSK Ver 1.17: Corrected calculation (-) to (+)
-** Added logic to force f_Center within 1/2 f_Step.
-** 177 S 02-26-2008 RSK Ver 1.18: Corrected calculation using LO1 > MAX/2
-** Type casts added to preserve correct sign.
-** N/A I 06-17-2008 RSK Ver 1.19: Refactoring avoidance of DECT
-** frequencies into MT_ResetExclZones().
-** N/A I 06-20-2008 RSK Ver 1.21: New VERSION number for ver checking.
-**
-*****************************************************************************/
-
+/*
+ * Microtune spur avoidance
+ */
/* Implement ceiling, floor functions. */
#define ceil(n, d) (((n) < 0) ? (-((-(n))/(d))) : (n)/(d) + ((n)%(d) != 0))
-#define uceil(n, d) ((n)/(d) + ((n)%(d) != 0))
#define floor(n, d) (((n) < 0) ? (-((-(n))/(d))) - ((n)%(d) != 0) : (n)/(d))
-#define ufloor(n, d) ((n)/(d))
struct MT2063_FIFZone_t {
s32 min_;
s32 max_;
};
-
-static u32 MT2063_RegisterTuner(struct MT2063_AvoidSpursData_t *pAS_Info)
-{
- pAS_Info->nAS_Algorithm = 1;
- return 0;
-}
-
-static void MT2063_UnRegisterTuner(struct MT2063_AvoidSpursData_t *pAS_Info)
-{
-}
-
/*
** Reset all exclusion zones.
** Add zones to protect the PLL FracN regions near zero
gf_Scale = MT2063_umax((u32) MT2063_gcd(lo_gcd, f), f_Scale);
hgfs = gf_Scale / 2;
- n0 = uceil(f_LO2 - d, f_LO1 - f_LO2);
+ n0 = DIV_ROUND_UP(f_LO2 - d, f_LO1 - f_LO2);
/* Check out all multiples of LO1 from n0 to m_maxLOSpurHarmonic */
for (n = n0; n <= pAS_Info->maxH1; ++n) {
u32 status; /* Status to be returned. */
struct mt2063_state *state = fe->tuner_priv;
- /* Default tuner handle to NULL. If successful, it will be reassigned */
-
- if (state->MT2063_init == false)
- state->rcvr_mode = MT2063_CABLE_QAM;
-
- status = MT2063_RegisterTuner(&state->AS_Data);
- if (status >= 0) {
- state->rcvr_mode = MT2063_CABLE_QAM;
+ state->rcvr_mode = MT2063_CABLE_QAM;
+ if (state->MT2063_init != false) {
status = MT2063_ReInit(state);
+ if (status < 0)
+ return status;
}
- if (status < 0)
- /* MT2063_Close handles the un-registration of the tuner */
- MT2063_Close(state);
- else {
- state->MT2063_init = true;
- }
-
- return (status);
-}
-
-/******************************************************************************
-**
-** Name: MT2063_Close
-**
-** Description: Release the handle to the tuner.
-**
-** Parameters: hMT2063 - Handle to the MT2063 tuner
-**
-** Returns: status:
-** MT_OK - No errors
-** MT_INV_HANDLE - Invalid tuner handle
-**
-** Dependencies: mt_errordef.h - definition of error codes
-**
-** Revision History:
-**
-** SCR Date Author Description
-** -------------------------------------------------------------------------
-** 138 06-19-2007 DAD Ver 1.00: Initial, derived from mt2067_b.
-**
-******************************************************************************/
-static u32 MT2063_Close(struct mt2063_state *state)
-{
- /* Unregister tuner with SpurAvoidance routines (if needed) */
- MT2063_UnRegisterTuner(&state->AS_Data);
- /* Now remove the tuner from our own list of tuners */
-
+ state->MT2063_init = true;
return 0;
}
*pValue = state->AS_Data.f_min_LO_Separation;
break;
- /* ID of avoid-spurs algorithm in use */
- case MT2063_AS_ALG:
- *pValue = state->AS_Data.nAS_Algorithm;
- break;
-
/* max # of intra-tuner harmonics */
case MT2063_MAX_HARM1:
*pValue = state->AS_Data.maxH1;