On Wed, Apr 03, 2024 at 10:55:29AM +0200, Javier Carrasco wrote:
- ret = tps6598x_read64(tps, TPS_REG_INT_EVENT1, &event1);
- ret |= tps6598x_read64(tps, TPS_REG_INT_EVENT2, &event2);
- ret = tps6598x_block_read(tps, TPS_REG_INT_EVENT1, event1, 11);
This is not going to work with the older TI PD controllers.
The lenght of these registers is 8 bytes on the older TI PD controllers (TPS65981, TPS65982, etc.). I think we need to split this function.
That is a good point. I had a look at the older TI PD controllers and I agree with you that we should split the function to cover both register lengths separately.
I was thinking about adding a new compatible for the newer PD controllers (tps65987 and tps65988), keeping the current tps6598x for the older ones as well as backwards compatibility. But backwards compatibility would also mean that flags beyond the first 8 bytes would be ignored.
On the other hand, the upper flags are only relevant for firmware updates, so we could check those (i.e. read 11 bytes) if a firmware was provided via "firmware-name", and ignore them (i.e. read 8 bytes) otherwise.
Other ideas or improvements to mine are more than welcome.
I don't have any good ideas. On ACPI platforms the same device ID may be used with all of these, so we should actually try to figure out the version from registers like VID, DID and Version (if they are available).
thanks,