⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tlg1100mfg.c

📁 泰景的模拟电视全部驱动及MTK平台界面代码
💻 C
字号:
/*****************************************************************************
* FILENAME
* tlg1100Mfg.c
*
*
* ABSTRACT
* This file contains Application Programmer's Interface library support for
* manufacturing floor tests of the TLG1100 Ultra Low Power NTSC/PAL
* Tuner/Decoder Front End.
*
* $Revision: 1.2 $
*
* (c) 2006 Telegent Systems
*****************************************************************************/
#include "tlgConfig.h"
#if TLG_CHIP_TYPE == TLG_CHIP_TYPE_TLG1100_1

#include "tlg1100Api.h"
#include "tlg1100Hal.h"
#include "tlgi2c.h"

/*****************************************************************************
* TLG_FreezeAgcLoops
*
* 
*
*
*****************************************************************************/
TLGDLL_API int TLG_FreezeAgcLoops(uint32 base_addr, int minmax, tlg_statep state)
{
    uint16 lna2_gain, bb1_gain, bb2_gain;

    if (minmax == TLG_FREEZE_MAX)
    {
        lna2_gain = 0x1200;
        bb1_gain  = 0xf800;
        bb2_gain  = 0xd400;
    } else {
        lna2_gain = 0x0000;
        bb1_gain  = 0x0000;
        bb2_gain  = 0x0000;
    }
    TLG_ReadReg(base_addr, REG_0030,       &state[1]);
    TLG_WriteReg(base_addr,REG_002F,       lna2_gain);
    TLG_WriteReg(base_addr,REG_0030,       0xc000);
    TLG_ReadReg(base_addr, REG_001B,     &state[2]);
    TLG_WriteReg(base_addr,REG_001D,     bb1_gain);
    TLG_WriteReg(base_addr,REG_001C,     bb2_gain);
    TLG_WriteReg(base_addr,REG_001B,     0x0003);

	state[0] = TLG_STATE1;
    return(TLG_ERR_SUCCESS);
}

/*****************************************************************************
* TLG_RestoreAgcLoops
*
* 
*
*
*****************************************************************************/
TLGDLL_API int TLG_RestoreAgcLoops(uint32 base_addr, tlg_statep state)
{
    if (state[0] != TLG_STATE1)
        return (TLG_ERR_PARAM);
    TLG_WriteReg(base_addr, REG_0030,      state[1]);
    TLG_WriteReg(base_addr, REG_001B,    state[2]);
    return(TLG_ERR_SUCCESS);
}

/*****************************************************************************
* TLG_EnterAdcMode
*
* 
*
*
*****************************************************************************/
TLGDLL_API int TLG_EnterAdcMode(uint32 base_addr, tlg_statep state)
{
    uint16 reg;

#ifdef TLG_SUPPORT_RUNTIME_CHECK
    {uint32 version; TLG_GetChipVersion(base_addr, &version);}
#endif /* TLG_SUPPORT_RUNTIME_CHECK */
TLG_CHIP_VERS_1_2_BEGIN
    #if defined(TLG_CMP_CHIP_1_3) || defined(TLG_CMP_CHIP_2)
    TLG_ReadReg(base_addr, REG_0000, &state[1]);
    reg = state[1];
    TLGHAL_CLEAR(reg, REG_0000_BIT1_MASK);
    TLG_WriteReg(base_addr, REG_0000, reg);
    #endif /* TLG_CMP_CHIP_1_2 */
 TLG_CHIP_VERS_1_1_ELSE
    #ifdef TLG_CMP_CHIP_1_1
    TLG_ReadReg(base_addr, REG_0000, &state[1]);
    reg = state[1];
    TLGHAL_SET(reg, TLG_ON, REG_0000_BIT1_SHIFT, REG_0000_BIT1_MASK);
    TLG_WriteReg(base_addr, REG_0000, reg);
    #endif /* TLG_CMP_CHIP_1_1 */
 TLG_CHIP_VERS_END

    TLG_ReadReg(base_addr, REG_0098, &state[2]);
    reg = state[2];
    TLGHAL_SET(reg, REG_0098_BIT3_0_ADC, REG_0098_BIT3_0_SHIFT,
                                           REG_0098_BIT3_0_MASK);
    TLG_WriteReg(base_addr, REG_0098, reg);

    state[0] = TLG_STATE1;
    return(TLG_ERR_SUCCESS);
}

/*****************************************************************************
* TLG_ExitAdcMode
*
* 
*
*
*****************************************************************************/
TLGDLL_API int TLG_ExitAdcMode(uint32 base_addr, tlg_statep state)
{
    if (state[0] != TLG_STATE1)
        return(TLG_ERR_PARAM);
    TLG_WriteReg(base_addr, REG_0000,        state[1]);
    TLG_WriteReg(base_addr, REG_0098,      state[2]);

    return(TLG_ERR_SUCCESS);
}


/*****************************************************************************
* TLG_GetTFCalCode
*
* 
*
*
*****************************************************************************/
TLGDLL_API int TLG_GetTFCalCode(uint32 base_addr, uint16 *tfCalCode)
{
    TLG_NULLPTR_CHECK(tfCalCode);
    /* Tracking Filter cal code */
    TLG_ReadRegNS(base_addr,    REG_011C,   tfCalCode);
    return TLG_ERR_SUCCESS;
}

/*****************************************************************************
* TLG_GetPeakAgcGain
*
* 
*
*
*****************************************************************************/
TLGDLL_API int TLG_GetPeakAgcGain(uint32 base_addr, uint16 *peakAgcGain)
{
    TLG_NULLPTR_CHECK(peakAgcGain);
    TLG_ReadRegNS(base_addr, REG_0123, peakAgcGain);
    return TLG_ERR_SUCCESS;
}


/*****************************************************************************
* TLG_GetTotalGain
*
* 
*
*
*****************************************************************************/
TLGDLL_API int TLG_GetTotalGain(uint32 base_addr, uint16 *ttlGain)
{
    uint16 bb1, bb2, lna1, lna2, lna_mode, m6db;
    int res = TLG_ERR_SUCCESS;
    int lna_gain, bb_gain, fix;

    TLG_NULLPTR_CHECK(ttlGain);

    /* Calculate the total gain */
    TLG_ReadRegNS(base_addr,    REG_010E, &bb1);
    TLG_ReadRegNS(base_addr,    REG_010D, &bb2);
    TLGHAL_GET(bb1, bb1,        REG_010E_BIT15_11_SHIFT,
                                REG_010E_BIT15_11_MASK);
    TLGHAL_GET(bb2, bb2,        REG_010D_BIT15_10_SHIFT,
                                REG_010D_BIT15_10_MASK);

#ifdef TLG_SUPPORT_RUNTIME_CHECK
    {uint32 version; TLG_GetChipVersion(base_addr, &version);}
#endif /* TLG_SUPPORT_RUNTIME_CHECK */
TLG_CHIP_VERS_1_2_BEGIN
    #if defined(TLG_CMP_CHIP_1_3) || defined(TLG_CMP_CHIP_1_2)
    TLG_ReadRegNS(base_addr,    REG_0139, &lna1);
    TLGHAL_GET(lna1, lna1,      REG_0139_BIT10_9_SHIFT,
                                REG_0139_BIT10_9_MASK);
    #endif /* TLG_CMP_CHIP_1_2 */
 TLG_CHIP_VERS_1_1_ELSE
    #ifdef TLG_CMP_CHIP_1_1
    TLG_ReadRegNS(base_addr,    REG_0113, &lna1);
    TLGHAL_GET(lna1, lna1,      REG_0113_BIT1_0_SHIFT,
                                REG_0113_BIT1_0_MASK);
    #endif /* TLG_CMP_CHIP_1_1 */
 TLG_CHIP_VERS_END
    TLG_ReadRegNS(base_addr,    REG_0114, &lna2);
    TLGHAL_GET(lna2, lna2,      REG_0114_BIT12_9_SHIFT,
                                REG_0114_BIT12_9_MASK);
    TLG_ReadReg(base_addr,      REG_0180, &lna_mode);
    TLGHAL_GET(lna_mode, lna_mode,  REG_0180_BIT15_13_SHIFT,
                                    REG_0180_BIT15_13_MASK);
    TLG_ReadReg(base_addr,      REG_0193, &m6db);
    TLGHAL_GET(m6db, m6db,      REG_0193_BIT15_SHIFT,
                                REG_0193_BIT15_MASK);

    lna_gain    = -20*min(2,(3-lna1)) + -2*max(0, 9-lna2);
    bb_gain     = (bb1 + bb2)/2;
    switch (lna_mode)
    {
    case TLG_LNA_UHF : fix = 11; break;
    case TLG_LNA_VHF2: fix = 12; break;
    case TLG_LNA_VHF1: fix = 13; break;
    default: res = TLG_ERR_FAIL; break;
    }
    if (res == TLG_ERR_SUCCESS)
    {
        fix += (m6db) ? 5 : 11;
        *ttlGain = lna_gain + bb_gain + fix + 21;
    }
    return(res);
}
#endif /*TLG_CHIP_TYPE */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -