On Thu, May 27, 2021 at 9:27 PM Guenter Roeck <linux@xxxxxxxxxxxx> wrote:
On Thu, May 27, 2021 at 09:14:03PM +0200, Robert Marko wrote:
On Thu, May 27, 2021 at 6:37 PM Guenter Roeck <linux@xxxxxxxxxxxx> wrote:
On 5/27/21 7:58 AM, Robert Marko wrote:
[ ... ]
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.
Is the i2c controller compatible with marvell,mv78230-i2c ?
The block transfers would not work in that case. Let me know
and I'll send you a patch that might fix it.
Yes, the CPU is Armada 7040 and I can see that compatible is
marvell,mv78230-i2c indeed.
It would be great if you have the patch,
See below.
I can confirm that this does indeed enable block reads and
i2c_smbus_read_block_data()
works now.
PMBUS_MFR_ID and PMBUS_MFR_MODEL are indeed populated.