Esempio n. 1
0
/*============================================================================*/
tmErrorCode_t
tmbslHCDP_SetClocks(
    tmUnitSelect_t tUnit,
    UInt32 uSamplingClock,
    UInt32 uDClock
)
{
    pHCDPObject_t pObj = Null;
    tmErrorCode_t err = TM_OK;

    /* check input parameters */
    err = iHCDP_GetInstance(tUnit, &pObj);
    
    _MUTEX_ACQUIRE(HCDP)

    tmDBGPRINTEx(DEBUGLVL_VERBOSE, "tmbslHCDP_SetClocks(0x%08X)", tUnit);

    if (err == TM_OK)
    {
        pObj->sConfig.uDClock = uDClock;
        pObj->sConfig.uSamplingClock = uSamplingClock;
    }

    _MUTEX_RELEASE(HCDP)

    return err;
}
Esempio n. 2
0
/*============================================================================*/
tmErrorCode_t
tmbslHCDP_ConstGetIQ(
    tmUnitSelect_t tUnit,
    tmFrontEndFracNb32_t *pI,
    tmFrontEndFracNb32_t *pQ
)
{
    UInt16 uVal;

    pHCDPObject_t pObj = Null;
    tmErrorCode_t       err = TM_OK;

    /* check input parameters */
    err = iHCDP_GetInstance(tUnit, &pObj);
    
    _MUTEX_ACQUIRE(HCDP)

    tmDBGPRINTEx(DEBUGLVL_VERBOSE, "tmbslHCDP_ConstGetIQ(0x%08X)", tUnit);

    if (err == TM_OK)
    {
        err = iHCDP_RegRead(pObj,HCDPRegConstellationData,&uVal);
    }

    if (err == TM_OK)
    {
        /* when drawing graph,using: float i = (float)pI->lInteger / (float)pI->uDivider;
             the result I value will between (-1.0 ~ 1.0)         */
        if (uVal%2)
        {
            pQ->lInteger = iHCDP_GetConPhyData(pObj, uVal>>1);
            pQ->uDivider = pObj->usConDScale;
        }
        else
        {
Esempio n. 3
0
/*============================================================================*/
tmErrorCode_t
tmbslHCDP_SetRFAGCThreshold(
    tmUnitSelect_t tUnit,
    UInt16 uRFAGCThrLow,
    UInt16 uRFAGCThrHigh
)
{
    pHCDPObject_t pObj = Null;
    tmErrorCode_t       err = TM_OK;

    /* check input parameters */
    err = iHCDP_GetInstance(tUnit, &pObj);
    
    _MUTEX_ACQUIRE(HCDP)

    tmDBGPRINTEx(DEBUGLVL_VERBOSE, "tmbslHCDP_SetRFAGCThreshold(0x%08X)", tUnit);

    if (err == TM_OK)
    {
        err = iHCDP_SetRFAGCThreshold(pObj,uRFAGCThrLow,uRFAGCThrHigh);
    }

    _MUTEX_RELEASE(HCDP)

    return err;
}
Esempio n. 4
0
/*============================================================================*/
tmErrorCode_t
tmbslHCDP_GetIFAGCThreshold(
    tmUnitSelect_t tUnit,
    UInt16 *puIFAGCThr
)
{
    UInt16  uVal = 0;
    pHCDPObject_t pObj = Null;
    tmErrorCode_t       err = TM_OK;

    /* check input parameters */
    err = iHCDP_GetInstance(tUnit, &pObj);
    
    _MUTEX_ACQUIRE(HCDP)

    tmDBGPRINTEx(DEBUGLVL_VERBOSE, "tmbslHCDP_GetIFAGCThreshold(0x%08X)", tUnit);

    if (err == TM_OK)
    {
        err = iHCDP_RegRead( pObj, HCDPRegAagcEmThr0, &uVal );
    }

    if (err == TM_OK)
    {
        pObj->sConfig.uIFAGCThreshold = uVal;
        *puIFAGCThr = pObj->sConfig.uIFAGCThreshold;
    }

    _MUTEX_RELEASE(HCDP)

    return err;
}
Esempio n. 5
0
/*---------------------------------------------------------------------------*/
tmErrorCode_t UserWrittenI2CWrite (tmUnitSelect_t tUnit,     UInt32 AddrSize, UInt8* pAddr,
UInt32 WriteLen, UInt8* pData)
{
   /* Variable declarations */
   tmErrorCode_t err = TM_OK;

/* Customer code here */
/* ...*/
	ptmOM3971Object_t  pObj = Null;
    Int      errI2C = 0;
    //Bool               bIncSubAddress = True;
    UInt8              uSubAddress = 0;
    UInt16             uSubAddress16 = 0;
    UInt32             uCounter = 0;
    UInt8              WriteBuffer[I2C_BUFFER_SIZE+1] = {0};
    UInt32             count = 0;
    UInt32             remain = 0;
    tmUnitSelect_t     tUnitOM3949 = GET_SYSTEM_TUNIT(tUnit);
	struct i2c_msg 					msgs[2];
	struct i2c_rdwr_ioctl_data 		ioctl_data;

    if(GET_XFER_DISABLED_FLAG_TUNIT(tUnit) == False)
    {
        err = OM3971GetInstance(tUnitOM3949, &pObj);
        tmASSERTExT(err, TM_OK, (DEBUGLVL_ERROR, "OM3971GetInstance(0x%08X) failed.", tUnit));

        if(err == TM_OK)
        {
            //if(pObj->uHwAddress[UNIT_PATH_TYPE_GET(tUnit)] != OM3949_INVALID_DEVICE_ADDRESS)
            {
	            switch(AddrSize)
	            {
		            default:
		            case 0:
		                uSubAddress = 0;
		                break;
		            case 1:
		                //uSubAddress = (*pAddr)&0xFF;//pAddr[0];
		                //WriteBuffer[0] = (*pAddr)&0xFF;
		                break;
		            case 2:
		                //uSubAddress16 = pAddr[1]<<8 | pAddr[0];
		                WriteBuffer[0] = pAddr[1];
						WriteBuffer[1] = pAddr[0];
		                break;
            	}
                for(count=0; count<WriteLen; count += remain)
                {
                    //remain = min(WriteLen-count, I2C_BUFFER_SIZE);
					if ( (WriteLen - count) > 127 )
					    remain = 127;
					else
						remain = WriteLen - count;
                    switch(AddrSize)
                    {
	                    default:
	                    case 0:
	                    case 1:
	                        /* copy I2CMap data in WriteBuffer */
	                        for (uCounter = 0; uCounter < remain; uCounter++)
	                        {
	                            WriteBuffer[uCounter] = pData[count+uCounter];
	                        }
	                        break;
	                    case 2:
	                        /* copy I2CMap data in WriteBuffer */
	                        for (uCounter = 0; uCounter < remain; uCounter+=2)
	                        {
	                            WriteBuffer[uCounter+2] = pData[count+uCounter+1];
	                            WriteBuffer[uCounter+3] = pData[count+uCounter];
	                        }
	                        break;
                    }

                    switch(UNIT_PATH_TYPE_GET(tUnit))
                    {
                        case tmOM3971UnitDeviceTypeTDA18250:
							errI2C = DRV_I2C_Write( DeviceTDA18250Addr, pAddr, AddrSize, WriteBuffer, remain);
                            break;

                        case tmOM3971UnitDeviceTypeTDA10025:							
							errI2C = DRV_I2C_Write( DeviceTDA10025Addr, pAddr, 0, WriteBuffer, (remain + AddrSize));
                            break;
                        default:
                            tmDBGPRINTEx(DEBUGLVL_ERROR, "tmsysOM3971I2CWrite(0x%08X) failed. Unknown Device Type.", tUnit);
                            err = OM3971_ERR_BAD_PARAMETER;
                            break;
                    }

                    if( errI2C != 0 )
                    {
                        tmDBGPRINTEx(DEBUGLVL_ERROR, "tmsysOM3949I2CWrite(0x%08X, [sub@0x%02x] %d/%d) failed.", tUnit, (pAddr[1] << 8)|pAddr[0], count, WriteLen);
                        err = OM3971_ERR_HW;
                    }

                    if(err != TM_OK)
                        break;
                    #if  0
                    if(bIncSubAddress)
                    {
                        uSubAddress = (UInt8)(uSubAddress+remain);
                        uSubAddress16 = (UInt16)(uSubAddress16+remain);
                    }
					#endif /* #if 0 */
                }
            }
        }
    }
/* ...*/
/* End of Customer code here */

   return err;
}
Esempio n. 6
0
/*----------------------------------------------------------------------------*/
tmErrorCode_t UserWrittenI2CRead
				(
					tmUnitSelect_t tUnit,    
					UInt32 AddrSize, 
					UInt8* pAddr,
					UInt32 ReadLen, 
					UInt8* pData
				)
{
   /* Variable declarations */
   tmErrorCode_t err = TM_OK;

/* Customer code here */
/* ...*/
    ptmOM3971Object_t  				pObj = Null;
	tmErrorCode_t      				errI2C = TM_OK;
	UInt8							i = 0;
    UInt8              				uBytesBuffer[I2C_BUFFER_SIZE];
    UInt8              				uSubAddress16[2] = {0,0};
	tmUnitSelect_t     				tUnitOM3971 = GET_SYSTEM_TUNIT(tUnit);
	struct i2c_msg 					msgs[2];
	struct i2c_rdwr_ioctl_data 		ioctl_data; 

    err = OM3971GetInstance(tUnitOM3971, &pObj);
    tmASSERTExT(err, TM_OK, (DEBUGLVL_ERROR, "OM3949GetInstance(0x%08X) failed.\n", tUnit));
	if(err == TM_OK)
	{
		switch ( AddrSize )
		{
		    case 1 :
		        uSubAddress16[0] = *pAddr&0xFF;
		        break;
		    case 2 :
		        uSubAddress16[0] = pAddr[1];
				uSubAddress16[1] = pAddr[0];
		        break;
		    case 0 :
		    default:
		        uSubAddress16[0] = 0; 
		}

		if ( ReadLen > I2C_BUFFER_SIZE )
		{
		    err = OM3971_ERR_BAD_PARAMETER;
		}
		else
		{
			switch(UNIT_PATH_TYPE_GET(tUnit))
			{
				case tmOM3971UnitDeviceTypeTDA18250:
					//errI2C = HI_UNF_I2C_Read( 0, DeviceTDA18250Addr, uSubAddress, AddrSize, uBytesBuffer, ReadLen );
					errI2C = DRV_I2C_Read( DeviceTDA18250Addr, uSubAddress16, AddrSize, uBytesBuffer, ReadLen);
				break;

				case tmOM3971UnitDeviceTypeTDA10025:
					//errI2C = HI_UNF_I2C_Read( 0, DeviceTDA10025Addr, uSubAddress16, AddrSize, uBytesBuffer, ReadLen );
					errI2C = DRV_I2C_Read( DeviceTDA10025Addr, uSubAddress16, AddrSize, uBytesBuffer, ReadLen);			
				break;
				default:
					tmDBGPRINTEx(DEBUGLVL_ERROR, "tmsysOM3949I2CRead(%08X) failed. Unknown Device Type.", tUnit);
					err = OM3971_ERR_BAD_PARAMETER;
				break;
			}
		}
	    if(errI2C == 0 && err == TM_OK)
	    {
	        switch(AddrSize)
	        {
		        default:
		        case 0:
		        case 1:						
		            for ( i = 0; i < ReadLen ; i++ ) 
		            {
		                *(pData + i) = (UInt8)uBytesBuffer[i];
		            }
		            break;

		        case 2:
		            for ( i= 0 ; i < ReadLen ; i += 2 ) 
		            {
		                *(pData + i) = (UInt8)uBytesBuffer[i+1];
		                *(pData + i + 1) = (UInt8)uBytesBuffer[i];
		            }
		            break;
	        }
	    }
	    else
	    {
	        tmDBGPRINTEx(DEBUGLVL_ERROR, "tmsysOM3949I2CRead (0x%08X, [sub@0x%02x] %d) failed.", tUnit, (uSubAddress16[1] << 8)|uSubAddress16[0], ReadLen);
	        err = OM3971_ERR_HW;
	    }
	}
/* ...*/
/* End of Customer code here */

   return err;
}
Esempio n. 7
0
tmErrorCode_t tmsysOM3912I2CWrite(tmUnitSelect_t tUnit, UInt32 AddrSize, UInt8* pAddr, UInt32 WriteLen, UInt8* pData)
{
    ptmOM3912Object_t    pObj = Null;
    tmErrorCode_t           err = TM_OK;
    tmErrorCode_t           errI2C = TM_OK;
    Bool                    bIncSubAddress = True;
    UInt8                   uSubAddress = 0;
    UInt32                  uCounter = 0;
    UInt8                   WriteBuffer[I2C_BUFFER_SIZE+1] = {0};
    UInt32                  count = 0;
    UInt32                  remain = 0;
    tmUnitSelect_t          tUnitOM3912 = GET_SYSTEM_TUNIT(tUnit);

    if(GET_XFER_DISABLED_FLAG_TUNIT(tUnit) == False)
    {
        err = OM3912GetInstance(tUnitOM3912, &pObj);
        tmASSERTExT(err, TM_OK, (DEBUGLVL_ERROR, "OM3912GetInstance(0x%08X) failed.", tUnit));

        if(err == TM_OK)
        {
            if(pObj->uHwAddress[UNIT_PATH_TYPE_GET(tUnit)] != OM3912_INVALID_DEVICE_ADDRESS)
            {
                switch(AddrSize)
                {
                default:
                case 0:
                    uSubAddress = 0;
                    break;

                case 1:
                    uSubAddress = (*pAddr)&0xFF;
                    break;
                }

                /* Copy uSubAddress to first data byte */
                WriteBuffer[0] = uSubAddress;

                for(count=0; count<WriteLen; count += remain)
                {
                    remain = min(WriteLen-count, I2C_BUFFER_SIZE);

                    /* copy I2CMap data in WriteBuffer */
                    for (uCounter = 0; uCounter < remain; uCounter++)
                    {
                        WriteBuffer[uCounter+1] = pData[count+uCounter];
                    }

                    switch(UNIT_PATH_TYPE_GET(tUnit))
                    {
                    case tmOM3912UnitDeviceTypeTDA18273:
                        errI2C = tmdlI2CWrite(tUnit, pObj->uHwAddress[UNIT_PATH_TYPE_GET(tUnit)], AddrSize, &uSubAddress, remain, WriteBuffer+1);
                        break;

                    default:
                        tmDBGPRINTEx(DEBUGLVL_ERROR, "tmsysOM3912I2CWrite(0x%08X) failed. Unknown Device Type.", tUnit);
                        err = OM3912_ERR_BAD_PARAMETER;
                        break;
                    }

                    if(errI2C != TM_OK)
                    {
                        tmDBGPRINTEx(DEBUGLVL_ERROR, "tmsysOM3912I2CWrite(0x%08X, [sub@0x%02x] %d/%d) failed.", tUnit, uSubAddress, count, WriteLen);
                        err = OM3912_ERR_HW;
                    }

                    if(err != TM_OK)
                        break;

                    if(bIncSubAddress)
                    {
                        uSubAddress = (UInt8)(uSubAddress+remain);
                        WriteBuffer[0] = uSubAddress;
                    }
                }
            }
        }
    }

    return err;
}
Esempio n. 8
0
tmErrorCode_t tmsysOM3912I2CRead(tmUnitSelect_t tUnit, UInt32 AddrSize, UInt8* pAddr, UInt32 ReadLen, UInt8* pData)
{
    ptmOM3912Object_t    pObj = Null;
    tmErrorCode_t           err = TM_OK;
    tmErrorCode_t           errI2C = TM_OK;
    UInt8                   uBytesBuffer[I2C_BUFFER_SIZE];
    UInt8                   uSubAddress = 0;
    UInt32                  i = 0;
    tmUnitSelect_t          tUnitOM3912 = GET_SYSTEM_TUNIT(tUnit);

    if(GET_XFER_DISABLED_FLAG_TUNIT(tUnit) == False)
    {
        err = OM3912GetInstance(tUnitOM3912, &pObj);
        tmASSERTExT(err, TM_OK, (DEBUGLVL_ERROR, "OM3912GetInstance(0x%08X) failed.", tUnit));

        if(err == TM_OK)
        {
            if(pObj->uHwAddress[UNIT_PATH_TYPE_GET(tUnit)] != OM3912_INVALID_DEVICE_ADDRESS)
            {          
                switch(AddrSize)
                {
                default:
                case 0:
                    uSubAddress = 0;
                    break;

                case 1:
                    uSubAddress = (*pAddr)&0xFF;
                    break;
                }

                if (ReadLen > I2C_BUFFER_SIZE)
                {
                    err = OM3912_ERR_BAD_PARAMETER;
                }
                else
                {
                    switch(UNIT_PATH_TYPE_GET(tUnit))
                    {
                    case tmOM3912UnitDeviceTypeTDA18273:
                        errI2C = tmdlI2CRead(tUnit, pObj->uHwAddress[UNIT_PATH_TYPE_GET(tUnit)], AddrSize, &uSubAddress, ReadLen, uBytesBuffer);
                        break;

                    default:
                        tmDBGPRINTEx(DEBUGLVL_ERROR, "tmsysOM3912I2CRead(%08X) failed. Unknown Device Type.", tUnit);
                        err = OM3912_ERR_BAD_PARAMETER;
                        break;
                    }
                }

                if(errI2C == TM_OK && err == TM_OK)
                {
                    for (i=0 ; i<ReadLen ; i++) 
                    {
                        *(pData + i) = (UInt8)uBytesBuffer[i];
                    }
                }
                else
                {
                    tmDBGPRINTEx(DEBUGLVL_ERROR, "tmsysOM3912I2CRead(0x%08X, [sub@0x%02x] %d) failed.", tUnit, uSubAddress, ReadLen);
                    err = OM3912_ERR_HW;
                }
            }
        }
    }

    return err;
}
Esempio n. 9
0
/*============================================================================*/
tmErrorCode_t
tmbslHCDP_ConstPreset(
    tmUnitSelect_t tUnit,
    HCDP_ConstellationSource_t eSource
)
{
    UInt8 mode = 0;
    
    pHCDPObject_t pObj = Null;
    tmErrorCode_t       err = TM_OK;

    /* check input parameters */
    err = iHCDP_GetInstance(tUnit, &pObj);
    
    _MUTEX_ACQUIRE(HCDP)

    tmDBGPRINTEx(DEBUGLVL_VERBOSE, "tmbslHCDP_ConstPreset(0x%08X)", tUnit);

    if (err == TM_OK)
    {
        switch (eSource)
        {
            case HCDP_ConstellationSource_ADC:
                mode = 0;
                pObj->usConDMask = 0xFFF; /*12 bits*/
                pObj->usConDScale = 2048;
                break;
            case HCDP_ConstellationSource_FEDR:
                mode = 1;
                pObj->usConDMask = 0x1FFF; /*13 bits*/
                pObj->usConDScale = 4096;
                break;
            case HCDP_ConstellationSource_PDF:
                pObj->usConDMask = 0x7FFF; /*15 bits*/
                pObj->usConDScale = 16384;
                mode = 2;
                break;
            case HCDP_ConstellationSource_DAGC:
                pObj->usConDMask = 0x1FFF; /*13 bits*/
                pObj->usConDScale = 4096;
                mode = 3;
                break;
            case HCDP_ConstellationSource_MF:
                pObj->usConDMask = 0x3FFF; /*14 bits*/
                pObj->usConDScale = 8192;
                mode = 4;
                break;
            case HCDP_ConstellationSource_CAGC:
                pObj->usConDMask = 0x1FFF; /*13 bits*/
                pObj->usConDScale = 4096 ;
                mode = 5;
                break;
            case HCDP_ConstellationSource_Equalizer:
                pObj->usConDMask = 0x1FFF; /*13 bits*/
                pObj->usConDScale = 4096;
                mode = 6;
                break;
            case HCDP_ConstellationSource_BEDR:
                pObj->usConDMask = 0x1FFF;  /*13 bits*/
                pObj->usConDScale = 4096;
                mode = 7;
                break;
            default:
                err = HCDP_ERR_NOT_SUPPORTED;
                break;
        }
    }

    if (err == TM_OK)
    {
        err = iHCDP_RegWrite(pObj,HCDPRegConstellationCtrl,mode);
    }

    if (err == TM_OK)
    {
        err = iHCDP_RegWrite(pObj,HCDPRegConstellationData,0xFF);
    }

    _MUTEX_RELEASE(HCDP)

    return err;
}