I tried applying the block support for mv64xx as well:
https://patchwork.ozlabs.org/project/linux-i2c/patch/20200118115820.9080-1-fuga@xxxxxxxxxxxxxx/
That patch would be needed, but it looks buggy to me. This chunk:
+ drv_data->effective_length = data+1;
+ drv_data->bytes_left = data+1;
+ drv_data->msg->len = data+1;
should be:
+ drv_data->effective_length = data+1;
+ drv_data->bytes_left = data;
+ drv_data->msg->len = data+1;
It should also make sure that 'data' is not larger than I2C_SMBUS_BLOCK_MAX,
and bail out if it isn't.
Yeah, I did not check the contents, I just saw 2 reviews and tested it
since it can't hurt.
That patch doesn't work at all. Make the above change, and also change
the type of effective_length from u32 to int, and try again.
I was just looking and it, and doing the changes you recommended make
no difference at all.