Merge remote-tracking branch 'iommu/next'
[deliverable/linux.git] / drivers / misc / eeprom / at24.c
index 3cdf8e1ca0add01db5295259af3b34f9ba4508b5..051b14766ef964984da6ff487db81f5a782cb3ba 100644 (file)
@@ -593,6 +593,7 @@ static int at24_probe(struct i2c_client *client, const struct i2c_device_id *id)
        struct at24_data *at24;
        int err;
        unsigned i, num_addresses;
+       u8 test_byte;
 
        if (client->dev.platform_data) {
                chip = *(struct at24_platform_data *)client->dev.platform_data;
@@ -743,6 +744,18 @@ static int at24_probe(struct i2c_client *client, const struct i2c_device_id *id)
                }
        }
 
+       i2c_set_clientdata(client, at24);
+
+       /*
+        * Perform a one-byte test read to verify that the
+        * chip is functional.
+        */
+       err = at24_read(at24, 0, &test_byte, 1);
+       if (err) {
+               err = -ENODEV;
+               goto err_clients;
+       }
+
        at24->nvmem_config.name = dev_name(&client->dev);
        at24->nvmem_config.dev = &client->dev;
        at24->nvmem_config.read_only = !writable;
@@ -764,8 +777,6 @@ static int at24_probe(struct i2c_client *client, const struct i2c_device_id *id)
                goto err_clients;
        }
 
-       i2c_set_clientdata(client, at24);
-
        dev_info(&client->dev, "%u byte %s EEPROM, %s, %u bytes/write\n",
                chip.byte_len, client->name,
                writable ? "writable" : "read-only", at24->write_max);
This page took 0.026361 seconds and 5 git commands to generate.