?? lgtunerdrv.c
字號:
/*************************************************************************
* LGTunrDRV.C *
* Copyright ? Shenzhen Coship Electronics Co.#,LTD. 2002.3 *
* All rights reserved. *
* *
* Author: Zhou Cheng *
* Date: 2002/3/13 *
* Compiler: *
* *
* Description: LG Tuner PLL IC Driver ( used in LG TDQB-S001F Tuner ) *
* Notes: *
* Update: 2002/3/6 Zhou Cheng *
*************************************************************************/
// For LG TDQB-S001F Tuner
#include "cs_typedef.h"
#include "CSHDI_typedef.h"
#include "CSQpskCFG.h"
#include "cs_os.h"
#include "CS_I2c.h"
#include "LGTunerDRV.h"
#define TUNER_IF 0
#define TUNE_STEP 125
#define TUNELIMIT_LOW 900000 // KHz 9f8qJiION*(950M - 2150M)
#define TUNELIMIT_HIGH 2200000 // KHz Ub@oJJ517E?m
#define BANDFREQREF 1600000 // KHz
#define PLLLOCK_MASK 0x40
#define PLLLOCK_FLAG 0x40
static HCSHANDLE hLGI2C[MAX_TUNER_NUM];
//ADD BY SFG FOR COMPILER
extern CSQPSK_Error_t STV0299EnableTunerI2C ( CSHDITunerIndex bTunerIndex );
extern CSQPSK_Error_t STV0299DisableTunerI2C (CSHDITunerIndex bTunerIndex);
//add end
CSQPSK_Error_t LGInit(CSHDITunerIndex bTunerIndex)
{
int ErrorCode;
hLGI2C[bTunerIndex] = 0;
ErrorCode = CSI2COpen(bTunerIndex,LGTunerADDR,&hLGI2C[bTunerIndex]);
if (ErrorCode != CSI2C_SUCCESS)
{
return CSQPSK_I2C_ERROR;
}
return CSQPSK_SUCCESS;
}
CSQPSK_Error_t LGTerm(CSHDITunerIndex bTunerIndex)
{
int ErrorCode;
ErrorCode = CSI2CClose(hLGI2C[bTunerIndex]);
if (ErrorCode != CSI2C_SUCCESS)
{
return CSQPSK_I2C_ERROR;
}
return CSQPSK_SUCCESS;
}
/* +==========================================================================+ */
/* | Function: IhVC TUNER 5wP3F5BJ | */
/* | Input: | */
/* | Output: N^ | */
/* | Return: 2YWw3I9&1jV> | */
/* +==========================================================================+ */
CSQPSK_Error_t LGTunerWrtFreq( CSHDITunerIndex bTunerIndex, BYTE *pbTune ,DWORD dwDataLen)
{
// sfg int ErrorCode;
CSQPSK_Error_t ErrorCode;
if ( CSI2CRequestBus_inner(bTunerIndex, CSHDI_TIMEOUT_INFINITY) == CSI2C_SUCCESS )
{
STV0299EnableTunerI2C(bTunerIndex);
ErrorCode = CSI2CWriteWithStop ( hLGI2C[bTunerIndex], pbTune, dwDataLen ) ;
STV0299DisableTunerI2C(bTunerIndex);
CSI2CReleaseBus_inner(bTunerIndex);
if ( ErrorCode == CSI2C_SUCCESS )
{
return CSQPSK_SUCCESS;
}
}
return CSQPSK_I2C_ERROR;
}
/* +==========================================================================+ */
/* | Function: <l2b TUNER PLL W4L, | */
/* | Input: N^ | */
/* | Output: 6A3v5DJ}>] | */
/* | Return: 0 -- PLL Lost Lock, 1 -- PLL Lock | */
/* +==========================================================================+ */
CSQPSK_Error_t LGTunerGetPLLStatus ( CSHDITunerIndex bTunerIndex, int *pnPllLock )
{
int nResult;
BYTE bValue;
if ( CSI2CRequestBus_inner(bTunerIndex, CSHDI_TIMEOUT_INFINITY) == CSI2C_SUCCESS )
{
STV0299EnableTunerI2C(bTunerIndex);
nResult = CSI2CReadWithStop ( hLGI2C[bTunerIndex], &bValue, 1 ) ;
STV0299DisableTunerI2C(bTunerIndex);
CSI2CReleaseBus_inner(bTunerIndex);
if ( nResult == CSI2C_SUCCESS )
{
if (( bValue & PLLLOCK_MASK ) == PLLLOCK_FLAG )
*pnPllLock = TRUE;
else
*pnPllLock = FALSE;
return CSQPSK_SUCCESS;
}
}
return CSQPSK_I2C_ERROR;
}
/* +==========================================================================+ */
/* | Function: IhVC TUNER 5wP3F5BJ | */
/* | Input: F5BJ (KHzN*5%N;) | */
/* | Output: N^ | */
/* | Return: 2YWw3I9&1jV> | */
/* +==========================================================================+ */
CSQPSK_Error_t LGTunerSetFreq( CSHDITunerIndex bTunerIndex, DWORD dwTuneFreq)
{
BYTE pbValue[4];
DWORD dwFrequency;
pbValue[2] = 0x84;
// if (( dwTuneFreq < TUNELIMIT_LOW ) || ( dwTuneFreq > TUNELIMIT_HIGH ) )
// return FAILURE; // JdHkF5BJ3,3vTUNER5wP376N'
if ( dwTuneFreq < BANDFREQREF )
pbValue[3] = 0x84;
else
pbValue[3] = 0x80;
/*
dwFrquency = (dwTuneFreq + 0) / 125
*/
dwFrequency = ( dwTuneFreq + TUNER_IF ) / TUNE_STEP ;
pbValue[0] = (BYTE)( ( dwFrequency >> 8 ) & 0x7F );
pbValue[1] = (BYTE)( dwFrequency & 0xFF );
return ( LGTunerWrtFreq ( bTunerIndex,pbValue, 4 ) ) ;
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -