 +	.set_time	= isl12024_rtc_set_time,
 +};
 +
-+static int
-+read_proc(char * page, char ** start, off_t off, int count, int * eof, void * data)
-+{
++static ssize_t isl12024_show_id(struct device *dev, struct device_attribute *attr,
++			    char *buf)
++{
++	struct i2c_client *client = to_i2c_client(dev);
++	int err;
 +	int len = 0;
 +	int i;
-+
-+	for (i = 0; i < ISL12024_RTC_SECTION_LEN; i++)
-+		len += sprintf(page+len, "%02X", buf_id[i]);
-+	len += sprintf(page+len, "\n");
-+
-+	len -= off;
-+	if ( len < count ) {
-+		*eof = 1;
-+		if ( len <= 0 )
-+			return 0;
-+	} else {
-+		len = count;
-+	}
-+
-+	*start = page + off;
-+
++	u8 id_buffer[ISL12024_RTC_SECTION_LEN];
++
++	/* Read unique id from eeprom */
++	err = isl12024_i2c_read_regs(client, ISL12024_REG_ID, id_buffer, sizeof(id_buffer));
++	if (err < 0) {
++		dev_err(&client->dev, "reading RTC section failed\n");
++		return err;
++	}
++
++	/* Print hexadecimal */
++	for (i = 0; i < sizeof(id_buffer); i++)
++		len += sprintf(buf + len, "%02X", id_buffer[i]);
++	len += sprintf(buf + len, "\n");
 +	return len;
 +}
++
++static DEVICE_ATTR(id, S_IRUGO, isl12024_show_id, NULL);
 +
 +static int
 +isl12024_probe(struct i2c_client *client, const struct i2c_device_id *id)

+{
+	struct rtc_device *rtc = i2c_get_clientdata(client);
+
+	/* FIXME : unregister from procfs */
+	rtc_device_unregister(rtc);
+
+	return 0;
+}

+#include <linux/i2c.h>
+#include <linux/bcd.h>
+#include <linux/rtc.h>
+#include <linux/delay.h>
+
+#define DRV_VERSION "0.3"
