RE: [PATCH v4 2/3] i2c: add support for Cypress CYUSBS234 USB-I2C adapter

Muthu Mani
2014-12-12T16:03:42Z

Hi,

Thanks for reviewing the code.

> > +/*
> > + * It exposes sysfs entries under the i2c adapter for getting the i2c
> > +transfer
> > + * status, reset i2c read/write module, get/set nak and stop bits.
> > + */
>
> Yes, I see that. Yet, I don't know why they are needed? The driver should
> know when to send NAK/STOP. Why expose that to the user? And why do
> we need a reset? Are there stability problems? What about unloading the
> module? And what is the use case for reading the status?

For repeated start (Sr) scenario, the STOP bit will not be set.
For dummy write scenario (writing EEPROM address from I2C EEPROM slave), the STOP bit should not be set. But, for normal I2C write, the STOP bit should be set.
We provide control to user to control when to STOP/NAK to handle different scenarios.

The reset is an additional provision given to user to reset the I2C read or write engines. It does not require unloading I2C kernel module.
The status indicates the information about the last i2c read/write operation.

>
> > + if (num > 1) {
> > + dev_err(&adapter->dev, "i2c_msg number is > 1\n");
> > + return -EIO;
> > + }
>
> Ouch! Don't you have any repeated start option somewhere?

In this version of the driver, we handle only single i2c message. In future iterations, we will add support for multiple i2c messages.

Thanks,
Muthu