|
@@ -140,7 +140,16 @@ static int i2c_sendbytes(struct i2c_adapter *i2c_adap,
|
|
|
dprintk(4, "%s()\n", __func__);
|
|
|
|
|
|
au0828_write(dev, REG_2FF, 0x01);
|
|
|
- au0828_write(dev, REG_202, 0x07);
|
|
|
+
|
|
|
+ /* FIXME: There is a problem with i2c communications with xc5000 that
|
|
|
+ requires us to slow down the i2c clock until we have a better
|
|
|
+ strategy (such as using the secondary i2c bus to do firmware
|
|
|
+ loading */
|
|
|
+ if ((msg->addr << 1) == 0xc2) {
|
|
|
+ au0828_write(dev, REG_202, 0x40);
|
|
|
+ } else {
|
|
|
+ au0828_write(dev, REG_202, 0x07);
|
|
|
+ }
|
|
|
|
|
|
/* Hardware needs 8 bit addresses */
|
|
|
au0828_write(dev, REG_203, msg->addr << 1);
|
|
@@ -191,7 +200,16 @@ static int i2c_readbytes(struct i2c_adapter *i2c_adap,
|
|
|
dprintk(4, "%s()\n", __func__);
|
|
|
|
|
|
au0828_write(dev, REG_2FF, 0x01);
|
|
|
- au0828_write(dev, REG_202, 0x07);
|
|
|
+
|
|
|
+ /* FIXME: There is a problem with i2c communications with xc5000 that
|
|
|
+ requires us to slow down the i2c clock until we have a better
|
|
|
+ strategy (such as using the secondary i2c bus to do firmware
|
|
|
+ loading */
|
|
|
+ if ((msg->addr << 1) == 0xc2) {
|
|
|
+ au0828_write(dev, REG_202, 0x40);
|
|
|
+ } else {
|
|
|
+ au0828_write(dev, REG_202, 0x07);
|
|
|
+ }
|
|
|
|
|
|
/* Hardware needs 8 bit addresses */
|
|
|
au0828_write(dev, REG_203, msg->addr << 1);
|