> As suggested I have the below now, (are there any changes Ive missed?) Well, get_sda should really only get SDA :) > > +static int riic_get_sda(struct i2c_adapter *adap) > +{ > + struct riic_dev *riic = i2c_get_adapdata(adap); > + > + /* Check if the bus is busy or SDA is not high */ > + if ((riic_readb(riic, RIIC_ICCR2) & ICCR2_BBSY) || > + !(riic_readb(riic, RIIC_ICCR1) & ICCR1_SDAI)) > + return -EBUSY; > + > + return 1; > +} I have +static int riic_get_sda(struct i2c_adapter *adap) +{ + struct riic_dev *riic = i2c_get_adapdata(adap); + + return !!(riic_readb(riic, RIIC_ICCR1) & ICCR1_SDAI); +} I believe the BBSY handling could be why it does not work.
Attachment:
signature.asc
Description: PGP signature