找回密码
 立注即册
搜索
查看: 4276|回复: 1

9269新增服务文件调用i2c接口方法参考

[复制链接]

283

主题

816

回帖

4353

积分

认证会员

积分
4353
 楼主| 发表于 2022-4-15 11:54:40 | 显示全部楼层 |阅读模式
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;
}

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立注即册

×
回复

使用道具 举报

283

主题

816

回帖

4353

积分

认证会员

积分
4353
 楼主| 发表于 2022-4-15 12:01:40 | 显示全部楼层
主main函数入口时加入
int main(int argc, char** argv)
{
+++ MI_I2C_IIC_Init();
即可按上面说的读写i2c了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立注即册

本版积分规则

Archiver|手机版|小黑屋|泰科开发者社区 ( 粤ICP备16096640号 )

GMT+8, 2025-5-23 02:20 , Processed in 0.193519 second(s), 22 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表