Thank you, it fixes the issue on the multi-address eeprom that I have access to. Tested-by: Sven Van Asbroeck on a 24AA16/24LC16B <svendev@xxxxxxxx> One very minor remark: + struct device *dev = &at24->client[0]->dev; It is sufficiently clear to others (and us a few months down the line) why we are using only client[0] for power management? Could it benefit from a separate function with comments? struct device *dev = get_pm_device(at24); static struct device *get_pm_device(struct at24_data *at24) { /* explain why we use client[0] and not any of the dummies */ return &at24->client[0]->dev; }