Em 27-10-2010 14:41, Antti Palosaari escreveu: > On 10/27/2010 07:12 PM, Mauro Carvalho Chehab wrote: >> int tda18271_write_regs(struct dvb_frontend *fe, int idx, int len) >> { >> ... >> switch (priv->small_i2c) { >> case TDA18271_03_BYTE_CHUNK_INIT: >> max = 3; >> break; >> case TDA18271_08_BYTE_CHUNK_INIT: >> max = 8; >> break; >> case TDA18271_16_BYTE_CHUNK_INIT: >> max = 16; >> break; >> case TDA18271_39_BYTE_CHUNK_INIT: >> default: >> max = 39; >> } >> >> >> with small_i2c = 1, the driver will not restrict the maximum length size. >> >> It's weird that the patch didn't fix it. Are you sure that reverting this >> patch is enough to make the driver work? >> >> Please test this one. >> >> It will properly log the size of the message the driver tried to use, and will >> reduce the max number of bytes per I2C transfer to 8. > > All in all, this small_i2c was added (Michael Krufky and I) when this tuner was taken in use with af9015 and it was 16 bytes initially. I think those other chunks are added later. Yeah, another change added a max restriction of 8. > AF9015 I2C adapter can write 21 bytes at once. > Correct solution is to add option which splits writes as wanted (like option .i2c_wr_max) to the TDA18271. I have no HW to test. Changing to 21 won't change anything in practice, as it will still use 3 URB's for transferring data. Only at setup, it needs to write values on more than 16 registers. The current way that .small_i2c is defined is like that: it specifies the maximum amount of data that can be transferred. I won't object to change it from an enum into an integer, although I would do it only if we need to touch on that code for another reason. Cheers, Mauro -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html