Merge master.kernel.org:/pub/scm/linux/kernel/git/davem/sparc-2.6
[safe/jmp/linux-2.6] / drivers / rtc / rtc-x1205.c
index cdf0eba..513d1a6 100644 (file)
@@ -372,7 +372,7 @@ static int x1205_validate_client(struct i2c_client *client)
                };
 
                if ((xfer = i2c_transfer(client->adapter, msgs, 2)) != 2) {
-                       dev_err(&client->adapter->dev,
+                       dev_err(&client->dev,
                                "%s: could not read register %x\n",
                                __FUNCTION__, probe_zero_pattern[i]);
 
@@ -380,7 +380,7 @@ static int x1205_validate_client(struct i2c_client *client)
                }
 
                if ((buf & probe_zero_pattern[i+1]) != 0) {
-                       dev_err(&client->adapter->dev,
+                       dev_err(&client->dev,
                                "%s: register=%02x, zero pattern=%d, value=%x\n",
                                __FUNCTION__, probe_zero_pattern[i], i, buf);
 
@@ -400,7 +400,7 @@ static int x1205_validate_client(struct i2c_client *client)
                };
 
                if ((xfer = i2c_transfer(client->adapter, msgs, 2)) != 2) {
-                       dev_err(&client->adapter->dev,
+                       dev_err(&client->dev,
                                "%s: could not read register %x\n",
                                __FUNCTION__, probe_limits_pattern[i].reg);
 
@@ -411,7 +411,7 @@ static int x1205_validate_client(struct i2c_client *client)
 
                if (value > probe_limits_pattern[i].max ||
                        value < probe_limits_pattern[i].min) {
-                       dev_dbg(&client->adapter->dev,
+                       dev_dbg(&client->dev,
                                "%s: register=%x, lim pattern=%d, value=%d\n",
                                __FUNCTION__, probe_limits_pattern[i].reg,
                                i, value);
@@ -451,8 +451,6 @@ static int x1205_rtc_proc(struct device *dev, struct seq_file *seq)
 {
        int err, dtrim, atrim;
 
-       seq_printf(seq, "24hr\t\t: yes\n");
-
        if ((err = x1205_get_dtrim(to_i2c_client(dev), &dtrim)) == 0)
                seq_printf(seq, "digital_trim\t: %d ppm\n", dtrim);
 
@@ -462,7 +460,7 @@ static int x1205_rtc_proc(struct device *dev, struct seq_file *seq)
        return 0;
 }
 
-static struct rtc_class_ops x1205_rtc_ops = {
+static const struct rtc_class_ops x1205_rtc_ops = {
        .proc           = x1205_rtc_proc,
        .read_time      = x1205_rtc_read_time,
        .set_time       = x1205_rtc_set_time,
@@ -546,8 +544,6 @@ static int x1205_probe(struct i2c_adapter *adapter, int address, int kind)
 
        if (IS_ERR(rtc)) {
                err = PTR_ERR(rtc);
-               dev_err(&client->dev,
-                       "unable to register the class device\n");
                goto exit_detach;
        }
 
@@ -566,11 +562,19 @@ static int x1205_probe(struct i2c_adapter *adapter, int address, int kind)
        else
                dev_err(&client->dev, "couldn't read status\n");
 
-       device_create_file(&client->dev, &dev_attr_atrim);
-       device_create_file(&client->dev, &dev_attr_dtrim);
+       err = device_create_file(&client->dev, &dev_attr_atrim);
+       if (err) goto exit_devreg;
+       err = device_create_file(&client->dev, &dev_attr_dtrim);
+       if (err) goto exit_atrim;
 
        return 0;
 
+exit_atrim:
+       device_remove_file(&client->dev, &dev_attr_atrim);
+
+exit_devreg:
+       rtc_device_unregister(rtc);
+
 exit_detach:
        i2c_detach_client(client);