From: swj <swj@rock-chips.com> Date: Fri, 30 Jul 2010 08:24:05 +0000 (-0700) Subject: modify spi_i2c for return value X-Git-Tag: firefly_0821_release~11323 X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=913629cacd1c28c452e7a489d35e416fa0047203;p=firefly-linux-kernel-4.4.55.git modify spi_i2c for return value --- diff --git a/drivers/fpga/spi_i2c.c b/drivers/fpga/spi_i2c.c index ea1261aa48e0..e80854cbb941 100755 --- a/drivers/fpga/spi_i2c.c +++ b/drivers/fpga/spi_i2c.c @@ -108,6 +108,7 @@ int spi_i2c_readbuf(struct spi_fpga_port *port ,struct i2c_msg *pmsg,int ch) unsigned int speed; unsigned int channel = 0 ; unsigned int result; + int ret = 0; slaveaddr = pmsg->addr<<1; len = pmsg->len; @@ -155,6 +156,7 @@ int spi_i2c_readbuf(struct spi_fpga_port *port ,struct i2c_msg *pmsg,int ch) spin_lock(&port->i2c.i2c_lock); port->i2c.interrupt &= INT_I2C_READ_MASK; spin_unlock(&port->i2c.i2c_lock); + ret = pmsg->len; break; } else @@ -162,7 +164,7 @@ int spi_i2c_readbuf(struct spi_fpga_port *port ,struct i2c_msg *pmsg,int ch) } //for(i = 0;i<len;i++) //printk("pmsg->buf[%d] = 0x%x \n",i,pmsg->buf[i]); - return pmsg->len; + return ret>0 ? ret:-1; } @@ -174,6 +176,7 @@ int spi_i2c_writebuf(struct spi_fpga_port *port ,struct i2c_msg *pmsg,int ch) unsigned int slaveaddr; unsigned int speed; unsigned int channel = 0; + int ret = 0; slaveaddr = pmsg->addr; len = pmsg->len; @@ -217,6 +220,7 @@ int spi_i2c_writebuf(struct spi_fpga_port *port ,struct i2c_msg *pmsg,int ch) spin_lock(&port->i2c.i2c_lock); port->i2c.interrupt &= INT_I2C_WRITE_MASK; spin_unlock(&port->i2c.i2c_lock); + ret = pmsg->len; break; } else @@ -227,6 +231,7 @@ int spi_i2c_writebuf(struct spi_fpga_port *port ,struct i2c_msg *pmsg,int ch) else if(i==len-1 && pmsg->read_type == I2C_NO_STOP) { spi_out(port,reg,pmsg->buf[i],SEL_I2C); + ret = pmsg->len; } else { @@ -235,7 +240,7 @@ int spi_i2c_writebuf(struct spi_fpga_port *port ,struct i2c_msg *pmsg,int ch) } - return pmsg->len; + return ret>0? ret:-1; } @@ -274,7 +279,7 @@ int spi_i2c_xfer(struct i2c_adapter *adapter, struct i2c_msg *msgs, int num) { //i2c->msg_idx = i; ret = spi_xfer_msg(adapter,&msgs[i],(i == (num - 1))); - if(ret == 0) + if(ret <= 0) { num = ret; printk("spi_xfer_msg error .ret = %d\n",ret); @@ -513,7 +518,6 @@ int spi_i2c_unregister(struct spi_fpga_port *port) return 0; } - MODULE_DESCRIPTION("Driver for spi2i2c."); MODULE_AUTHOR("swj <swj@rock-chips.com>"); MODULE_LICENSE("GPL");