static inline int nas_check_firmwork(struct ts_nas *ts) { int data; int len = 10; char buf[10] = {0x03 , 0x03 , 0x0a , 0x01 , 'D' , 0x00 , 0x00 , 0x00 , 0x00 , 0x00}; int i; short contactid=0; data = i2c_master_normal_send(ts->client, buf,len, 200*1000); if(data < 0){ dev_err(&ts->client->dev, "i2c io error %d \n", data); return data; } data = i2c_master_normal_recv(ts->client, buf,len, 200*1000); if(data < 0){ dev_err(&ts->client->dev, "i2c io error %d \n", data); return data; } printk("nas reg[5] = %c ,reg[6] = %c, reg[7] = %c, reg[8] = %c\n" , buf[5],buf[6],buf[7],buf[8]); printk("nas reg[5] = %x ,reg[6] = %x, reg[7] = %x, reg[8] = %x\n" , buf[5],buf[6],buf[7],buf[8]); return data; }
static int cm3217_command_get(struct i2c_client *client, char *buf, int num) { int ret = 0; ret = i2c_master_normal_recv(client, buf, num, CM3217_I2C_RATE); return (ret == num) ? 0 : ret; }
int sensor_rx_data_normal(struct i2c_client *client, char *buf, int num) { int ret = 0; ret = i2c_master_normal_recv(client, buf, num, SENSOR_I2C_RATE); return (ret == num) ? 0 : ret; }
static int ct360_read_regs(struct i2c_client *client, u8 buf[], unsigned len) { int ret; ret = i2c_master_normal_recv(client, buf, len, 100*1000); if(ret < 0) printk("%s:i2c_transfer fail =%d\n",__func__,ret); return ret; }
int rmi_i2c_read_block(struct rmi_phys_device *phys, u16 addr, u8 *buf, int len) { struct i2c_client *client = to_i2c_client(phys->dev); struct rmi_i2c_data *data = phys->data; u8 txbuf[1] = {addr & 0xff}; int retval; #if COMMS_DEBUG int i; #endif mutex_lock(&data->page_mutex); if (RMI_I2C_PAGE(addr) != data->page) { retval = rmi_set_page(phys, RMI_I2C_PAGE(addr)); if (retval < 0) goto exit; } #if COMMS_DEBUG dev_dbg(&client->dev, "RMI4 I2C writes 1 bytes: %02x\n", txbuf[0]); #endif phys->info.tx_count++; phys->info.tx_bytes += sizeof(txbuf); retval = i2c_master_normal_send(client, txbuf, sizeof(txbuf), CONFIG_RMI4_I2C_SCL_RATE); if (retval != sizeof(txbuf)) { phys->info.tx_errs++; retval = (retval < 0) ? retval : -EIO; goto exit; } retval = i2c_master_normal_recv(client, buf, len, CONFIG_RMI4_I2C_SCL_RATE); phys->info.rx_count++; phys->info.rx_bytes += len; if (retval < 0) phys->info.rx_errs++; #if COMMS_DEBUG else { dev_dbg(&client->dev, "RMI4 I2C received %d bytes: ", len); for (i = 0; i < len; i++) dev_dbg(&client->dev, "%02x ", buf[i]); dev_dbg(&client->dev, "\n"); } #endif exit: mutex_unlock(&data->page_mutex); return retval; }
static void smsi2c_worker_thread(void *args) { struct smscore_buffer_t *cb; struct SmsMsgHdr_S *phdr; u16 len; int ret; u8 local_buf[100]; sms_debug("Worker thread is running.\n"); if (!g_smsi2c_device->coredev) { sms_debug("Using local buffer\n"); cb = NULL; phdr = (struct SmsMsgHdr_S *)local_buf; } else { sms_debug("Using core buffer\n"); cb = smscore_getbuffer(g_smsi2c_device->coredev); if (!cb) { sms_err("Unable to allocate data buffer!\n"); goto exit; } phdr = (struct SmsMsgHdr_S *)cb->p; } sms_debug("Recieve the message header.....\n"); memset(phdr, 0, (int)sizeof(struct SmsMsgHdr_S)); sms_debug("buf before: 0x%x, 0x%x, 0x%x, 0x%x, 0x%x, 0x%x, 0x%x, 0x%x", ((u8*)phdr)[0], ((u8*)phdr)[1], ((u8*)phdr)[2], ((u8*)phdr)[3], ((u8*)phdr)[4], ((u8*)phdr)[5], ((u8*)phdr)[6], ((u8*)phdr)[7]); #if 0 ret = i2c_master_recv(g_smsi2c_device->client, (void *)phdr, (int)sizeof(struct SmsMsgHdr_S)); #else ret = i2c_master_normal_recv(g_smsi2c_device->client, (void *)phdr, (int)sizeof(struct SmsMsgHdr_S), I2C_SCL_TATE); #endif if (ret < 0) { if ((void*)phdr != (void*)local_buf) smscore_putbuffer(g_smsi2c_device->coredev, cb); sms_err("Unable to read sms header! ret=%d\n", ret); goto exit; } #if 0 sms_debug("hdr: type=%d, src=%d, dst=%d, len=%d, flag=0x%x\n", phdr->msgType, phdr->msgSrcId, phdr->msgDstId, phdr->msgLength, phdr->msgFlags); sms_debug("buf: 0x%x, 0x%x, 0x%x, 0x%x, 0x%x, 0x%x, 0x%x, 0x%x", ((u8*)phdr)[0], ((u8*)phdr)[1], ((u8*)phdr)[2], ((u8*)phdr)[3], ((u8*)phdr)[4], ((u8*)phdr)[5], ((u8*)phdr)[6], ((u8*)phdr)[7]); sms_debug("Recieve the rest of the message.....\n"); #endif len = phdr->msgLength; if (len > sizeof(struct SmsMsgHdr_S)) { #if 0 ret = i2c_master_recv(g_smsi2c_device->client, (u8*)(phdr+1), len - (int)sizeof(struct SmsMsgHdr_S)); #else ret = i2c_master_normal_recv(g_smsi2c_device->client, (u8*)(phdr+1), len - (int)sizeof(struct SmsMsgHdr_S), I2C_SCL_TATE); #endif //sms_debug("recv of data returned %d", ret); if (ret < 0) { if ((void*)phdr != (void*)local_buf) smscore_putbuffer(g_smsi2c_device->coredev, cb); sms_err("Unable to read sms payload!\n"); goto exit; } sms_debug("data: 0x%x, 0x%x, 0x%x, 0x%x, 0x%x, 0x%x, 0x%x, 0x%x", ((u8*)(phdr+1))[0], ((u8*)(phdr+1))[1], ((u8*)(phdr+1))[2], ((u8*)(phdr+1))[3], ((u8*)(phdr+1))[4], ((u8*)(phdr+1))[5], ((u8*)(phdr+1))[6], ((u8*)(phdr+1))[7]); } if ((phdr->msgType == MSG_SMS_GET_VERSION_EX_RES) && ((void*)phdr == (void*)local_buf)) { /*This was an internal command, so we won't send it out*/ g_smsi2c_device->chip_model = *((u16*)(phdr+1)); sms_info("chip model=0x%x\n", g_smsi2c_device->chip_model); g_smsi2c_device->chip_metal = ((u8*)(phdr+1))[3]; sms_info("chip step=0x%x\n", g_smsi2c_device->chip_metal); g_smsi2c_device->wait_for_version_resp = 0; sms_info("complete get version\n"); complete(&g_smsi2c_device->version_ex_done); sms_info("done."); return; } #ifdef I2C_TS_ENABLE { if (MSG_SMS_INIT_DEVICE_RES == phdr->msgType) { ret = smsi2c_ts_enable(g_smsi2c_device); sms_debug("smsi2c_ts_enable.......\n"); } } #endif sms_debug("Message recieved. Sending to callback.....\n"); if (((void*)phdr != (void*)local_buf)) { sms_debug("Ext buf.....\n"); cb->offset = 0; cb->size = len; if (g_smsi2c_device->coredev) { smscore_onresponse(g_smsi2c_device->coredev, cb); } } exit: return; }