Thanks for the solution. Previously we were testing if the driver can handle zero-length transfer, but it turns out it will timeout. (Also checked this from mtk's datasheet) Adding original owner qii.wang to verify that. We'll apply this after verification. On Sat, Feb 16, 2019 at 12:36 AM Wolfram Sang <wsa@xxxxxxxxxxxxx> wrote: > > > >> > Ok, I can add a check in another patch. Should we return NULL pointer > >> > if msg->len is 0 or print out some warnings? Thanks. > >> > >> No warning, msg->len == 0 is a valid setting. But interesting question: > >> I was about to say NULL, but your driver would assume ENOMEM there and > >> discard the message which is also not correct since msg->len == 0 is a > >> valid setting. So, should we just return msg->buf then? Will this work > >> with your driver? Can it handle zero-length transfers? > > > > dma_map_single(i2c->dev, msg->buf , msgs->len, DMA_TO_DEVICE); breaks > > kernel if msgs->len is 0, so I think it doesn't handle zero-length transfer. > > Please don't drop the lists. > > Then, the correct solution is to forbid those transfer with this > controller. Check I2C_AQ_NO_ZERO_LEN. Also, update the functionality > like this .. (I2C_FUNC_SMBUS_EMUL & ~I2C_FUNC_SMBUS_QUICK). >