📄 drv_ch_i2c_com.c
字号:
PrintError(("[DRV_Ch_I2c_Write()] UNKNOWN CHIP\n\r"));
#endif
if(ErrCode != DDI_CH_I2C_OK){
PrintError(("drv_i2c_WriteNoStop() Fails[%x] Handle:[%d] SubAddr:[%x] NtR:[%d]\n\r", ErrCode, Handle, Buffer[0], NumberWritten));
}else{
#ifdef CH_PRINT_DATA
int i=0;
PrintDump((" drv_i2c_WriteNoStop()"));
for(i = 0; i < NumberToWrite; i++){
PrintDump(("[0x%02X]", Buffer[i]));
}
PrintDump(("\n"));
#endif
}
return ( ErrCode );
} /* end of drv_i2c_WriteNoStop */
/*=============================================================================
Function : drv_i2c_Write
Description : STI2C_Write
Input :
Output :
Return : TRUE if error, FALSE if success
=============================================================================*/
int DRV_Ch_I2c_WriteNoStopRead(unsigned char unitId, unsigned long Handle, unsigned char *wBuffer, unsigned long NumberToWrite
,unsigned char *rBuffer, unsigned long NumberToRead )
{
int ErrCode;
unsigned int NumberWritten;
#if defined(CHIPSET_ST)
STI2C_Lock(Handle,TRUE);
ErrCode = STI2C_WriteNoStop((STI2C_Handle_t)Handle, (const U8 *)wBuffer, NumberToWrite, DDI_CH_I2C_WRITE_TIMEOUT, (U32 *)&NumberWritten);
if(ErrCode != ST_NO_ERROR)
{
sttbx_Print("STI2C_WriteNoStop err 0x%x\n",ErrCode);
}
ErrCode = STI2C_Read((STI2C_Handle_t)Handle, (U8*)rBuffer, (U32)NumberToRead, DDI_CH_I2C_READ_TIMEOUT, (U32 *)&NumberToRead);
if(ErrCode != ST_NO_ERROR)
{
sttbx_Print("STI2C_Read err 0x%x\n",ErrCode);
}
STI2C_Unlock(Handle);
#endif
return ( ErrCode );
} /* end of drv_i2c_WriteNoStop */
/*=============================================================================
Function : drv_i2c_Read
Description : STI2C_Read
Input :
Output :
Return : TRUE if error, FALSE if success
=============================================================================*/
int DRV_Ch_I2c_Read(unsigned char unitId, unsigned long Handle, unsigned char *Buffer, unsigned long NumberToRead )
{
int ErrCode;
unsigned int NumberRead;
#if defined(CHIPSET_ST)
STI2C_Lock(Handle,TRUE);
ErrCode = STI2C_Read(Handle, Buffer, NumberToRead, DDI_CH_I2C_READ_TIMEOUT, &NumberRead);
STI2C_Unlock(Handle);
#elif defined(SUPPORT_NEC_CHIP)
MMAC_IIC_READ_IOPB iopb;
// buffer[0] -> subaddr buffer[1] -> data.
iopb.deviceNumber = (MMAC_IIC_DEV_NUM)g_hI2c_DeviceId[unitId];
iopb.data = &Buffer[1];
iopb.length = (unsigned long)(NumberToRead-1);
iopb.slaveAddr = (unsigned char)g_hDemod_I2c_Addr[unitId];
iopb.numSubAddressBytes = MMAC_IIC_ONE_BYTE_ADDRESSING;
iopb.subAddr = (unsigned long)Buffer[0];
iopb.timeout = (unsigned long)DDI_CH_I2C_READ_TIMEOUT;
ErrCode = MMAC_IIC_Read( &iopb );
#else
PrintError(("[DRV_Ch_I2c_Write()] UNKNOWN CHIP\n\r"));
#endif
if(ErrCode != DDI_CH_I2C_OK)
{
PrintError(("drv_Ch_i2c_Read() Fails[%x] Handle:[%d] SubAddr:[%x] NtR:[%d]\n\r", ErrCode, Handle, Buffer[0], NumberRead));
}
else
{
#ifdef CH_PRINT_DATA
int i=0;
PrintDump(" drv_i2c_Read()");
for(i = 0; i < NumberToRead; i++){
PrintDump(("[0x%02X]", Buffer[i]));
}
PrintDump("\n");
#endif
}
return ( ErrCode );
} /* end of drv_i2c_Read */
/*=============================================================================
Function : drv_i2c_Read
Description : STI2C_Read
Input :
Output :
Return : TRUE if error, FALSE if success
=============================================================================*/
int DRV_Ch_Tuner_I2c_Read(unsigned char unitId, unsigned long Handle, unsigned char *Buffer, unsigned long NumberToRead )
{
int ErrCode;
unsigned int NumberRead;
#if defined(CHIPSET_ST)
STI2C_Lock(Handle,TRUE);
ErrCode = STI2C_Read(Handle, Buffer, NumberToRead, DDI_CH_I2C_READ_TIMEOUT, &NumberRead);
STI2C_Unlock(Handle);
#elif defined(SUPPORT_NEC_CHIP)
MMAC_IIC_READ_IOPB iopb;
// buffer[0] -> subaddr buffer[1] -> data.
iopb.deviceNumber = (MMAC_IIC_DEV_NUM)g_hI2c_DeviceId[unitId];
iopb.data = &Buffer[0];
iopb.length = (unsigned long)(NumberToRead);
iopb.slaveAddr = (unsigned char)g_hTuner_I2c_Addr[unitId];
iopb.numSubAddressBytes = MMAC_IIC_ZERO_BYTE_ADDRESSING;
iopb.subAddr = (unsigned long)0;
iopb.timeout = (unsigned long)DDI_CH_I2C_WRITE_TIMEOUT;
ErrCode = MMAC_IIC_Read( &iopb );
#else
PrintError(("[DRV_Ch_I2c_Write()] UNKNOWN CHIP\n\r"));
#endif
if(ErrCode != DDI_CH_I2C_OK)
{
PrintError(("DRV_Ch_Tuner_I2c_Read() Fails[%x] Handle:[%d] SubAddr:[%x] NtR:[%d]\n\r", ErrCode, Handle, Buffer[0], NumberRead));
}
else
{
#ifdef CH_PRINT_DATA
int i=0;
PrintDump(" drv_i2c_Read()");
for(i = 0; i < NumberToRead; i++){
PrintDump(("[0x%02x]", Buffer[i]));
}
PrintDump("\n");
#endif
}
return ( ErrCode );
} /* end of drv_i2c_Read */
/*=============================================================================
Function : drv_ch_i2c_DEMODWrite
Description :
Input :
Output :
Return : TRUE if error, FALSE if success
=============================================================================*/
int drv_ch_i2c_DEMODWrite(
unsigned char unitId,
unsigned char index,
unsigned char *Buffer,
unsigned int NumberToWrite )
{
int ErrCode;
unsigned char buf[DEMOD_NUM_OF_REG + 1];
buf[0] = index;
memcpy((void *)&buf[1], (const void *)Buffer, (size_t)NumberToWrite);
#if defined(CHIPSET_ST)
ErrCode = DRV_Ch_I2c_Write(unitId, (unsigned long)g_hDEMOD_I2CHandle[unitId], buf, (NumberToWrite+1));
#elif defined(SUPPORT_NEC_CHIP)
// emma does not need the i2c handle.
ErrCode = DRV_Ch_I2c_Write(unitId, (unsigned long)unitId, buf, (NumberToWrite+1));
#else
PrintError(("[DRV_Ch_I2c_Write()] UNKNOWN CHIP\n\r"));
#endif
if(ErrCode != DDI_CH_I2C_OK)
{
PrintError(("[drv_ch_i2c_DEMODWrite] (Id:%x subAddr:%x) Error:0x%x \n", unitId, index, ErrCode));
}
return ( ErrCode );
} /* end of drv_ch_i2c_DEMODWrite */
/*=============================================================================
Function : drv_ch_i2c_DEMODRead
Description :
Input :
Output :
Return : TRUE if error, FALSE if success
=============================================================================*/
int drv_ch_i2c_DEMODRead(
unsigned char unitId,
unsigned char index,
unsigned char *Buffer,
unsigned int NumberToRead )
{
int ErrCode , TotalError;
unsigned char buf[DEMOD_NUM_OF_REG + 1];
TotalError = DDI_CH_I2C_OK;
buf[0] = index;
memcpy((void *)&buf[1], (const void *)Buffer, (size_t)NumberToRead);
#if defined(CHIPSET_ST)
// 7710_T ErrCode = (int)DRV_Ch_I2c_Write(unitId, (unsigned long)g_hDEMOD_I2CHandle[unitId],&buf[0], 1 );
ErrCode = (int)DRV_Ch_I2c_Write(unitId, I2C_GET_HANDLE(I2C_BACK,CH_I2C_DEMOD_HANDLEID_SAT),&buf[0], 1 );
if(ErrCode != DDI_CH_I2C_OK)
{
PrintError(("drv_ch_i2c_DEMODRead> drv_i2c_Write Fails status:(%x)\n", ErrCode));
}
// 7710_T ErrCode= (int)DRV_Ch_I2c_Read(unitId, (unsigned long)g_hDEMOD_I2CHandle[unitId], Buffer, NumberToRead);
ErrCode= (int)DRV_Ch_I2c_Read(unitId, I2C_GET_HANDLE(I2C_BACK,CH_I2C_DEMOD_HANDLEID_SAT), Buffer, NumberToRead);
if(ErrCode != DDI_CH_I2C_OK)
{
PrintError(("drv_ch_i2c_DEMODRead> drv_i2c_Read Fails status:(%x)\n", ErrCode));
}
#elif defined(SUPPORT_NEC_CHIP)
ErrCode= (int)DRV_Ch_I2c_Read(unitId, (unsigned long)unitId, buf, (NumberToRead+1));
if(ErrCode != DDI_CH_I2C_OK)
{
PrintError(("[drv_ch_i2c_DEMODRead] (Id:%x subAddr:%x) Error:0x%x \n", unitId, index, ErrCode));
}
#else
PrintError(("[DRV_Ch_I2c_Write()] UNKNOWN CHIP\n\r"));
#endif
return TotalError;
} /* end of drv_ch_i2c_DEMODRead */
int drv_ch_i2c_DEMODReadBytes(unsigned char unitId,
unsigned char index,
unsigned char *Buffer,
unsigned int NumberToRead )
{
int ErrCode , TotalError;
unsigned char buf[DEMOD_NUM_OF_REG + 1];
TotalError = DDI_CH_I2C_OK;
buf[0] = index;
memcpy((void *)&buf[1], (const void *)Buffer, (size_t)NumberToRead);
#if defined(CHIPSET_ST)
#if 1 //
ErrCode = (int)DRV_Ch_I2c_WriteNoStopRead(unitId, I2C_GET_HANDLE(I2C_BACK,CH_I2C_DEMOD_HANDLEID_SAT),&buf[0], 1 ,Buffer, NumberToRead);
if(ErrCode != DDI_CH_I2C_OK)
{
PrintError(("drv_ch_i2c_DEMODReadBytes> drv_i2c_Write Fails status:(%x)\n", ErrCode));
}
#else
// 7710_T ErrCode = (int)DRV_Ch_I2c_WriteNoStop(unitId, (unsigned long)g_hDEMOD_I2CHandle[unitId],&buf[0], 1 );
STI2C_Lock(I2C_GET_HANDLE(I2C_BACK,CH_I2C_DEMOD_HANDLEID_SAT), TRUE);
ErrCode = (int)DRV_Ch_I2c_WriteNoStop(unitId,I2C_GET_HANDLE(I2C_BACK,CH_I2C_DEMOD_HANDLEID_SAT),&buf[0], 1 );
if(ErrCode != DDI_CH_I2C_OK)
{
PrintError(("drv_ch_i2c_DEMODReadBytes> drv_i2c_Write Fails status:(%x)\n", ErrCode));
}
// 7710_T ErrCode= (int)DRV_Ch_I2c_Read(unitId, (unsigned long)g_hDEMOD_I2CHandle[unitId], Buffer, NumberToRead);
ErrCode= (int)DRV_Ch_I2c_Read(unitId, I2C_GET_HANDLE(I2C_BACK,CH_I2C_DEMOD_HANDLEID_SAT), Buffer, NumberToRead);
if(ErrCode != DDI_CH_I2C_OK)
{
PrintError(("drv_ch_i2c_DEMODReadBytes> drv_i2c_Read Fails status:(%x)\n", ErrCode));
}
STI2C_Unlock(I2C_GET_HANDLE(I2C_BACK,CH_I2C_DEMOD_HANDLEID_SAT));
#endif
#elif defined(SUPPORT_NEC_CHIP)
ErrCode= (int)DRV_Ch_I2c_Read(unitId, (unsigned long)unitId, buf, (NumberToRead+1));
if(ErrCode != DDI_CH_I2C_OK)
{
PrintError(("[drv_ch_i2c_DEMODReadBytes] (Id:%x subAddr:%x) Error:0x%x \n", unitId, index, ErrCode));
}
#else
PrintError(("[drv_ch_i2c_DEMODReadBytes()] UNKNOWN CHIP\n\r"));
#endif
return TotalError;
} /* end of drv_ch_i2c_DEMODRead */
int drv_ch_i2c_DEMODWriteBytes(unsigned char unitId,
unsigned char index,
unsigned char *Buffer,
unsigned char NumberToWrite )
{
int ErrCode;
#if defined(CHIPSET_ST)
// 7710_T ErrCode = DRV_Ch_I2c_Write(unitId, (unsigned long)g_hDEMOD_I2CHandle[unitId], Buffer, NumberToWrite);
ErrCode = DRV_Ch_I2c_Write(unitId,I2C_GET_HANDLE(I2C_BACK,CH_I2C_DEMOD_HANDLEID_SAT), Buffer, NumberToWrite);
#elif defined(SUPPORT_NEC_CHIP)
// emma does not need the i2c handle.
ErrCode = DRV_Ch_I2c_Write(unitId, (unsigned long)unitId, Buffer, NumberToWrite);
#else
PrintError(("[drv_ch_i2c_DEMODWriteBytes()] UNKNOWN CHIP\n\r"));
#endif
if(ErrCode != DDI_CH_I2C_OK)
{
PrintError(("[drv_ch_i2c_DEMODWriteBytes] (Id:%x subAddr:%x) Error:0x%x \n", unitId, index, ErrCode));
}
return ( ErrCode );
}
/*=============================================================================
Function : drv_ch_i2c_TUNERWrite
Description :
Input :
Output :
Return : TRUE if error, FALSE if success
=============================================================================*/
int drv_ch_i2c_TUNERWrite(unsigned char unitId, unsigned char *Buffer, unsigned int NumberToWrite)
{
int ErrCode;
#if 0
{
int i;
for(i=0;i<NumberToWrite;i++)
PrintDump(("%x ",Buffer[i]));
PrintDump(("\n\r"));
}
#endif
#if defined(CHIPSET_ST)
// 7710_T ErrCode = DRV_Ch_I2c_Write(unitId, (unsigned long)g_hTUNER_I2CHandle[unitId], Buffer, NumberToWrite);
ErrCode = DRV_Ch_I2c_Write(unitId, I2C_GET_HANDLE(I2C_BACK,CH_I2C_TUNER_HANDLEID_SAT), Buffer, NumberToWrite);
#elif defined(SUPPORT_NEC_CHIP)
ErrCode = DRV_Ch_Tuner_I2c_Write(unitId, (unsigned long)unitId, Buffer, NumberToWrite);
#else
PrintError(("[DRV_Ch_I2c_Write()] UNKNOWN CHIP\n\r"));
#endif
if(ErrCode != DDI_CH_I2C_OK){
PrintError(("[drv_ch_i2c_DEMODWriteBytes] (Id:%x ) Error:0x%x \n", unitId, ErrCode));
}
return ErrCode;
} /* end of drv_ch_i2c_TUNERWrite */
/*=============================================================================
Function : drv_ch_i2c_TUNERRead
Description :
Input :
Output :
Return : TRUE if error, FALSE if success
=============================================================================*/
int drv_ch_i2c_NTunerRead(unsigned char unitId, unsigned char *Buffer ,unsigned int NumberToWrite)
{
int ErrCode;
#if defined(CHIPSET_ST)
// 7710_T ErrCode = DRV_Ch_I2c_Read(unitId, (unsigned long)g_hTUNER_I2CHandle[unitId], Buffer, NumberToWrite);
ErrCode = DRV_Ch_I2c_Read(unitId, I2C_GET_HANDLE(I2C_BACK,CH_I2C_TUNER_HANDLEID_SAT), Buffer, NumberToWrite);
#elif defined(SUPPORT_NEC_CHIP)
ErrCode = DRV_Ch_Tuner_I2c_Read(unitId, (unsigned long)unitId, Buffer, NumberToWrite);
#else
PrintError(("[DRV_Ch_I2c_Write()] UNKNOWN CHIP\n\r"));
#endif
if(ErrCode != DDI_CH_I2C_OK){
PrintError(("[sat] Tuner.drv_i2c_Read Fails [%d.%x]\n\r", unitId , ErrCode ));
}
return ErrCode;
} /* end of drv_ch_i2c_TUNERRead */
/*=============================================================================
Function : drv_ch_i2c_TUNERRead
Description :
Input :
Output :
Return : TRUE if error, FALSE if success
=============================================================================*/
int drv_ch_i2c_TUNERRead(unsigned char unitId, unsigned char *buf )
{
int ErrCode , TotalError;
unsigned char buffer[2];
TotalError = DDI_CH_I2C_OK;
buffer[0] = DEMOD_REG_CLEAR;
buffer[1] = DEMOD_REG[unitId][DEMOD_REG_CLEAR] | DEMOD_REG_BIT_IICTRL; /* IICTRL : set */
#if defined(CHIPSET_ST)
// STI2C_TakeSemaphore();
// 7710_T ErrCode = DRV_Ch_I2c_Write(unitId, (unsigned long)g_hDEMOD_I2CHandle[unitId], buffer, 2);
ErrCode = DRV_Ch_I2c_Write(unitId, I2C_GET_HANDLE(I2C_BACK,CH_I2C_DEMOD_HANDLEID_SAT), buffer, 2);
if(ErrCode != DDI_CH_I2C_OK){
PrintError(("[sat]drv_ch_i2c_TUNERRead()'s drv_i2c_Write Fails [%d.%x.%x] \n\r", unitId, I2C_GET_HANDLE(I2C_BACK,CH_I2C_DEMOD_HANDLEID_SAT), ErrCode ));
TotalError |= ErrCode;
}
// 7710_T ErrCode = DRV_Ch_I2c_Read(unitId, (unsigned long)g_hTUNER_I2CHandle[unitId], buf, 1);
ErrCode = DRV_Ch_I2c_Read(unitId,I2C_GET_HANDLE(I2C_BACK,CH_I2C_TUNER_HANDLEID_SAT), buf, 1);
if(ErrCode != DDI_CH_I2C_OK){
PrintError(("[sat]drv_ch_i2c_TUNERRead()'s drv_i2c_Read() Fails [%d.%x.%x] \n\r", unitId, I2C_GET_HANDLE(I2C_BACK,CH_I2C_TUNER_HANDLEID_SAT), ErrCode ));
TotalError |= ErrCode;
}
buffer[1] = DEMOD_REG[unitId][DEMOD_REG_CLEAR] & ~(DEMOD_REG_BIT_IICTRL);/* IICTRL : clear */
// 7710_T ErrCode = DRV_Ch_I2c_Write(unitId, (unsigned long)g_hDEMOD_I2CHandle[unitId], buffer, 2);
ErrCode = DRV_Ch_I2c_Write(unitId,I2C_GET_HANDLE(I2C_BACK,CH_I2C_DEMOD_HANDLEID_SAT), buffer, 2);
if(ErrCode != DDI_CH_I2C_OK){
PrintError(("[sat]drv_ch_i2c_TUNERRead()'s drv_i2c_Write Fails [%d.%x.%x] \n\r", unitId, I2C_GET_HANDLE(I2C_BACK,CH_I2C_DEMOD_HANDLEID_SAT),ErrCode));
TotalError |= ErrCode;
}
#elif defined(SUPPORT_NEC_CHIP)
// ????????
#else
PrintError(("[DRV_Ch_I2c_Write()] UNKNOWN CHIP\n\r"));
#endif
return TotalError;
} /* end of drv_ch_i2c_TUNERRead */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -