unsigned int speed;\r
unsigned int channel = 0 ;\r
unsigned int result;\r
+ int ret = 0;\r
\r
slaveaddr = pmsg->addr<<1;\r
len = pmsg->len; \r
spin_lock(&port->i2c.i2c_lock);\r
port->i2c.interrupt &= INT_I2C_READ_MASK;\r
spin_unlock(&port->i2c.i2c_lock);\r
+ ret = pmsg->len;\r
break;\r
}\r
else\r
}\r
//for(i = 0;i<len;i++)\r
//printk("pmsg->buf[%d] = 0x%x \n",i,pmsg->buf[i]); \r
- return pmsg->len;\r
+ return ret>0 ? ret:-1;\r
\r
}\r
\r
unsigned int slaveaddr;\r
unsigned int speed;\r
unsigned int channel = 0;\r
+ int ret = 0;\r
\r
slaveaddr = pmsg->addr;\r
len = pmsg->len; \r
spin_lock(&port->i2c.i2c_lock);\r
port->i2c.interrupt &= INT_I2C_WRITE_MASK;\r
spin_unlock(&port->i2c.i2c_lock);\r
+ ret = pmsg->len;\r
break;\r
}\r
else\r
else if(i==len-1 && pmsg->read_type == I2C_NO_STOP)\r
{ \r
spi_out(port,reg,pmsg->buf[i],SEL_I2C);\r
+ ret = pmsg->len;\r
}\r
else\r
{ \r
} \r
\r
\r
- return pmsg->len;\r
+ return ret>0? ret:-1;\r
\r
\r
}\r
{\r
//i2c->msg_idx = i;\r
ret = spi_xfer_msg(adapter,&msgs[i],(i == (num - 1))); \r
- if(ret == 0)\r
+ if(ret <= 0)\r
{\r
num = ret;\r
printk("spi_xfer_msg error .ret = %d\n",ret);\r
return 0;\r
}\r
\r
-\r
MODULE_DESCRIPTION("Driver for spi2i2c.");\r
MODULE_AUTHOR("swj <swj@rock-chips.com>");\r
MODULE_LICENSE("GPL");\r