Hi Wolfram,
I would like you to clarify the situation when it comes to the value of
the timeout field of struct i2c_pca9564_pf_platform_data:
struct i2c_pca9564_pf_platform_data {
(...)
int timeout; /* timeout = this value * 10us */
};
The only user, board-sh7785lcr.c, sets this value to 100, resulting in
a 1 ms timeout. This seems really short. Is this really intended?
Why is the timeout value defined in such a strange unit?
In the i2c-pca-platform driver, I then see:
static int __devinit i2c_pca_pf_probe(struct platform_device *pdev)
{
struct i2c_pca_pf_data *i2c;
(...)
struct i2c_pca9564_pf_platform_data *platform_data =
pdev->dev.platform_data;
(...)
i2c->adap.timeout = platform_data->timeout;
The problem is that i2c->adap.timeout is supposed to be expressed in
jiffies, not units of 10 us. So there is a conversion missing.
Lastly, you define a timeout value but never use it. Shouldn't you use
wait_event_interruptible_timeout() instead of
wait_event_interruptible() in i2c_pca_pf_waitforcompletion?
An upcoming patch will add code which handles a timeout at i2c-core
level, so it matters to get all i2c bus drivers right first.
Thanks,
--
Jean Delvare
--
To unsubscribe from this list: send the line "unsubscribe linux-i2c" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html