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

Reply via email to