
On Fri, Feb 08, 2008 at 07:17:30PM -0500, Ben Warren wrote:
While your fix is technically correct, I looked into this last week and found that this exact code is duplicated in EVERY I2C controller, except one (MPC8xx), where there are calls to i2c_init() in each of the functions.
Yup, that's why I give up fixing all that stuff, not mentioning my patch doesn't containg the same code which reads:
void i2c_reg_write(uchar chip, uchar reg, uchar val) { i2c_write(chip, reg, 1, &val, 1); }
as omap has separate function to read and write single byte and I used it.
I posted a request for information about why the i2c_init() call is necessary in MPC8xx and nobody has responded yet. Maybe somebody has an MPC8xx-based board and could experiment a bit to make it the same???
I'd prefer to see these functions as static inlines in i2c.h in order to cut down on duplication.
Agree here, except it would be nice to use something like this:
void __i2c_reg_write(uchar chip, uchar reg, uchar val) { i2c_write(chip, reg, 1, &val, 1); } void void i2c_reg_write(uchar chip, uchar reg, uchar val) __attribute__((weak, alias("__i2c_reg_write")));
So anyone may still use his own i2c_reg_write implementation and you do not need to wait for answer to your question about MPC8xx.
Best regards, ladis