eeprom: at24: implement support for 'num-addresses' property
authorBartosz Golaszewski <bgolaszewski@baylibre.com>
Tue, 5 Feb 2019 13:18:25 +0000 (14:18 +0100)
committerBartosz Golaszewski <bgolaszewski@baylibre.com>
Thu, 14 Feb 2019 08:32:35 +0000 (09:32 +0100)
If the device node defines 'num-addresses', let it override the default
behavior.

Signed-off-by: Bartosz Golaszewski <bgolaszewski@baylibre.com>
drivers/misc/eeprom/at24.c

index b806a40..63aa541 100644 (file)
@@ -641,11 +641,14 @@ static int at24_probe(struct i2c_client *client)
        if (!is_power_of_2(page_size))
                dev_warn(dev, "page_size looks suspicious (no power of 2)!\n");
 
-       if (flags & AT24_FLAG_TAKE8ADDR)
-               num_addresses = 8;
-       else
-               num_addresses = DIV_ROUND_UP(byte_len,
-                       (flags & AT24_FLAG_ADDR16) ? 65536 : 256);
+       err = device_property_read_u32(dev, "num-addresses", &num_addresses);
+       if (err) {
+               if (flags & AT24_FLAG_TAKE8ADDR)
+                       num_addresses = 8;
+               else
+                       num_addresses = DIV_ROUND_UP(byte_len,
+                               (flags & AT24_FLAG_ADDR16) ? 65536 : 256);
+       }
 
        if ((flags & AT24_FLAG_SERIAL) && (flags & AT24_FLAG_MAC)) {
                dev_err(dev,