IMO it would be better to use id->driver_data unconditionally and save a call to of_device_get_match_data() What would you suggest to move ahead?
I'd suggest using id->driver_data unconditionally, but I'd like Wolfram's opinion on this (CC'ed).
IIUC: I'd suggest to leave it as it is.
There are people working on removing the quirky fallback to i2c_device_id in case of_compatible is not provided. If that gets mainline, you don't have i2c_device_id anymore with DT matching. So all binding methods should be self-contained.