|
9269新增服务文件调用i2c接口方法参考
可以在这里加 个 服务文件,\vendor\mediatek\proprietary_tv\open\common\executables
脚本可以参考附件写;
main里面调用 i2c的方法可以使用这种方式,i2c读写主要看 MI_I2C_IIC_Read和MI_I2C_IIC_Write;里面带的参数譬如4, 对应board.ini里面 的那个地方,见附件图片
#include "mi_i2c_iic.h"
#include "mi_misc.h"
MI_BOOL ReadMSA301Cmd(MI_U8 u8AddrSize, MI_U8 *pu8Addr,MI_U16 u16Size, MI_U8 *pu8Data)
{
usleep(1000*50);//delay 60ms
if((iSMSA331_Work==false) && (iSQMA7981_Work == false) && (iSSC7A20_Work == false))
{
MI_BOOL ret = MI_I2C_IIC_Read(4,u8AddrSize,pu8Addr,u16Size,pu8Data);;
if (!ret)
{
ALOGE("\r\n\033[0;31m MSA301 Read Cmd fail\033[0m\n");
return FALSE;
}
}
else if((iSMSA331_Work==false) && (iSSC7A20_Work == false))
{
MI_BOOL ret = MI_I2C_IIC_Read(7,u8AddrSize,pu8Addr,u16Size,pu8Data);;
if (!ret)
{
ALOGE("\r\n\033[0;31m QMA7981 Read Cmd fail\033[0m\n");
return FALSE;
}
}
else if(iSMSA331_Work==false)
{
MI_BOOL ret = MI_I2C_IIC_Read(6,u8AddrSize,pu8Addr,u16Size,pu8Data);;
if (!ret)
{
ALOGE("\r\n\033[0;31m SC7A20 Read Cmd fail\033[0m\n");
return FALSE;
}
}
else
{
MI_BOOL ret = MI_I2C_IIC_Read(5,u8AddrSize,pu8Addr,u16Size,pu8Data);;
if (!ret)
{
ALOGE("\r\n\033[0;31m MSA331 Read Cmd fail\033[0m\n");
return FALSE;
}
}
return TRUE;
}
MI_BOOL msa_register_read( MI_U8 addr, MI_U8 *data)
{
if((iSMSA331_Work==false) && (iSQMA7981_Work == false) && (iSSC7A20_Work == false))
{
MI_BOOL ret = MI_I2C_IIC_Read(4,1,&addr,1,data);
if (!ret)
{
ALOGE("\r\n\033[0;31m MSA301 Read Cmd fail\033[0m\n");
return FALSE;
}
}
else if((iSMSA331_Work==false) && (iSSC7A20_Work == false))
{
MI_BOOL ret = MI_I2C_IIC_Read(7,1,&addr,1,data);;
if (!ret)
{
ALOGE("\r\n\033[0;31m QMA7981 Read Cmd fail\033[0m\n");
return FALSE;
}
}
else if(iSMSA331_Work==false)
{
MI_BOOL ret = MI_I2C_IIC_Read(6,1,&addr,1,data);;
if (!ret)
{
ALOGE("\r\n\033[0;31m SC7A20 Read Cmd fail\033[0m\n");
return FALSE;
}
}
else
{
MI_BOOL ret = MI_I2C_IIC_Read(5,1,&addr,1,data);
if (!ret)
{
ALOGE("\r\n\033[0;31m MSA331 Read Cmd fail\033[0m\n");
return FALSE;
}
}
//ALOGD("\r\n\033[0;31m MSA301 Read Cmd =%d\033[0m\n",data);
return TRUE;
}
MI_BOOL msa_register_write( MI_U8 addr, MI_U8 data)
{
if((iSMSA331_Work==false) && (iSQMA7981_Work == false) && (iSSC7A20_Work == false))
{
MI_BOOL ret = MI_I2C_IIC_Write(4,1,&addr,1,&data);
if (!ret)
{
ALOGE("\r\n\033[0;31m MSA301 write Cmd fail\033[0m\n");
return FALSE;
}
}
else if((iSMSA331_Work==false) && (iSSC7A20_Work == false))
{
MI_BOOL ret = MI_I2C_IIC_Write(7,1,&addr,1,&data);;
if (!ret)
{
ALOGE("\r\n\033[0;31m QMA7981 write Cmd fail\033[0m\n");
return FALSE;
}
}
else if(iSMSA331_Work==false)
{
MI_BOOL ret = MI_I2C_IIC_Write(6,1,&addr,1,&data);;
if (!ret)
{
ALOGE("\r\n\033[0;31m SC7A20 write Cmd fail\033[0m\n");
return FALSE;
}
}
else
{
MI_BOOL ret = MI_I2C_IIC_Write(5,1,&addr,1,&data);
if (!ret)
{
ALOGE("\r\n\033[0;31m MSA331 write Cmd fail\033[0m\n");
return FALSE;
}
}
//ALOGD("\r\n\033[0;31m MSA301 write Cmd =%x\033[0m\n",data);
return TRUE;
}
MI_BOOL msa_register_mask_write(MI_U8 addr, MI_U8 mask, MI_U8 data)
{
MI_BOOL res = 0;
MI_U8 tmp_data;
res = msa_register_read(addr, &tmp_data);
//ALOGD("\r\n\033[0;31m jimmy.gan tmp_data =%x mask=%x\033[0m\n",tmp_data,mask);
tmp_data &= ~mask;
//ALOGD("\r\n\033[0;31m jimmy.gan tmp_data2 =%x data=%x\033[0m\n",tmp_data,data);
tmp_data |= data & mask;
res = msa_register_write(addr, tmp_data);
return res;
}
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立注即册
×
|