return ret;
}
}
- writel(I2C_LCMR_START, i2c->regs + I2C_LCMR);
+ if (msg->flags & I2C_M_RD)
+ writel(I2C_LCMR_START|I2C_LCMR_RESUME, i2c->regs + I2C_LCMR);
+ else
+ writel(I2C_LCMR_START, i2c->regs + I2C_LCMR);
/*
if(msg->flags & I2C_M_TEN)
{
{
return ret;
}
- addr_2nd = msg->addr & 0xff;
+ addr_2nd = msg->addr & 0xff;if (msg->flags & I2C_M_RD)
writel(addr_2nd, i2c->regs + I2C_MTXR);
writel(I2C_LCMR_RESUME, i2c->regs + I2C_LCMR);
if (msg->flags & I2C_M_RD)
conr = readl(i2c->regs + I2C_CONR);
conr |= I2C_CONR_NAK;
writel(conr, i2c->regs + I2C_CONR);
+ if(!stop)
+ return 0;
if(msg->flags & I2C_M_TEN)
writel(I2C_LCMR_START|I2C_LCMR_RESUME , i2c->regs + I2C_LCMR);
else