GNU Linux-libre 4.4.289-gnu1
[releases.git] / drivers / i2c / i2c-dev.c
1 /*
2     i2c-dev.c - i2c-bus driver, char device interface
3
4     Copyright (C) 1995-97 Simon G. Vogl
5     Copyright (C) 1998-99 Frodo Looijaard <frodol@dds.nl>
6     Copyright (C) 2003 Greg Kroah-Hartman <greg@kroah.com>
7
8     This program is free software; you can redistribute it and/or modify
9     it under the terms of the GNU General Public License as published by
10     the Free Software Foundation; either version 2 of the License, or
11     (at your option) any later version.
12
13     This program is distributed in the hope that it will be useful,
14     but WITHOUT ANY WARRANTY; without even the implied warranty of
15     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16     GNU General Public License for more details.
17 */
18
19 /* Note that this is a complete rewrite of Simon Vogl's i2c-dev module.
20    But I have used so much of his original code and ideas that it seems
21    only fair to recognize him as co-author -- Frodo */
22
23 /* The I2C_RDWR ioctl code is written by Kolja Waschk <waschk@telos.de> */
24
25 #include <linux/cdev.h>
26 #include <linux/kernel.h>
27 #include <linux/module.h>
28 #include <linux/device.h>
29 #include <linux/notifier.h>
30 #include <linux/fs.h>
31 #include <linux/slab.h>
32 #include <linux/init.h>
33 #include <linux/list.h>
34 #include <linux/i2c.h>
35 #include <linux/i2c-dev.h>
36 #include <linux/jiffies.h>
37 #include <linux/uaccess.h>
38
39 /*
40  * An i2c_dev represents an i2c_adapter ... an I2C or SMBus master, not a
41  * slave (i2c_client) with which messages will be exchanged.  It's coupled
42  * with a character special file which is accessed by user mode drivers.
43  *
44  * The list of i2c_dev structures is parallel to the i2c_adapter lists
45  * maintained by the driver model, and is updated using bus notifications.
46  */
47 struct i2c_dev {
48         struct list_head list;
49         struct i2c_adapter *adap;
50         struct device dev;
51         struct cdev cdev;
52 };
53
54 #define I2C_MINORS      MINORMASK
55 static LIST_HEAD(i2c_dev_list);
56 static DEFINE_SPINLOCK(i2c_dev_list_lock);
57
58 static struct i2c_dev *i2c_dev_get_by_minor(unsigned index)
59 {
60         struct i2c_dev *i2c_dev;
61
62         spin_lock(&i2c_dev_list_lock);
63         list_for_each_entry(i2c_dev, &i2c_dev_list, list) {
64                 if (i2c_dev->adap->nr == index)
65                         goto found;
66         }
67         i2c_dev = NULL;
68 found:
69         spin_unlock(&i2c_dev_list_lock);
70         return i2c_dev;
71 }
72
73 static struct i2c_dev *get_free_i2c_dev(struct i2c_adapter *adap)
74 {
75         struct i2c_dev *i2c_dev;
76
77         if (adap->nr >= I2C_MINORS) {
78                 printk(KERN_ERR "i2c-dev: Out of device minors (%d)\n",
79                        adap->nr);
80                 return ERR_PTR(-ENODEV);
81         }
82
83         i2c_dev = kzalloc(sizeof(*i2c_dev), GFP_KERNEL);
84         if (!i2c_dev)
85                 return ERR_PTR(-ENOMEM);
86         i2c_dev->adap = adap;
87
88         spin_lock(&i2c_dev_list_lock);
89         list_add_tail(&i2c_dev->list, &i2c_dev_list);
90         spin_unlock(&i2c_dev_list_lock);
91         return i2c_dev;
92 }
93
94 static void put_i2c_dev(struct i2c_dev *i2c_dev, bool del_cdev)
95 {
96         spin_lock(&i2c_dev_list_lock);
97         list_del(&i2c_dev->list);
98         spin_unlock(&i2c_dev_list_lock);
99         if (del_cdev)
100                 cdev_device_del(&i2c_dev->cdev, &i2c_dev->dev);
101         put_device(&i2c_dev->dev);
102 }
103
104 static ssize_t name_show(struct device *dev,
105                          struct device_attribute *attr, char *buf)
106 {
107         struct i2c_dev *i2c_dev = i2c_dev_get_by_minor(MINOR(dev->devt));
108
109         if (!i2c_dev)
110                 return -ENODEV;
111         return sprintf(buf, "%s\n", i2c_dev->adap->name);
112 }
113 static DEVICE_ATTR_RO(name);
114
115 static struct attribute *i2c_attrs[] = {
116         &dev_attr_name.attr,
117         NULL,
118 };
119 ATTRIBUTE_GROUPS(i2c);
120
121 /* ------------------------------------------------------------------------- */
122
123 /*
124  * After opening an instance of this character special file, a file
125  * descriptor starts out associated only with an i2c_adapter (and bus).
126  *
127  * Using the I2C_RDWR ioctl(), you can then *immediately* issue i2c_msg
128  * traffic to any devices on the bus used by that adapter.  That's because
129  * the i2c_msg vectors embed all the addressing information they need, and
130  * are submitted directly to an i2c_adapter.  However, SMBus-only adapters
131  * don't support that interface.
132  *
133  * To use read()/write() system calls on that file descriptor, or to use
134  * SMBus interfaces (and work with SMBus-only hosts!), you must first issue
135  * an I2C_SLAVE (or I2C_SLAVE_FORCE) ioctl.  That configures an anonymous
136  * (never registered) i2c_client so it holds the addressing information
137  * needed by those system calls and by this SMBus interface.
138  */
139
140 static ssize_t i2cdev_read(struct file *file, char __user *buf, size_t count,
141                 loff_t *offset)
142 {
143         char *tmp;
144         int ret;
145
146         struct i2c_client *client = file->private_data;
147
148         if (count > 8192)
149                 count = 8192;
150
151         tmp = kzalloc(count, GFP_KERNEL);
152         if (tmp == NULL)
153                 return -ENOMEM;
154
155         pr_debug("i2c-dev: i2c-%d reading %zu bytes.\n",
156                 iminor(file_inode(file)), count);
157
158         ret = i2c_master_recv(client, tmp, count);
159         if (ret >= 0)
160                 if (copy_to_user(buf, tmp, ret))
161                         ret = -EFAULT;
162         kfree(tmp);
163         return ret;
164 }
165
166 static ssize_t i2cdev_write(struct file *file, const char __user *buf,
167                 size_t count, loff_t *offset)
168 {
169         int ret;
170         char *tmp;
171         struct i2c_client *client = file->private_data;
172
173         if (count > 8192)
174                 count = 8192;
175
176         tmp = memdup_user(buf, count);
177         if (IS_ERR(tmp))
178                 return PTR_ERR(tmp);
179
180         pr_debug("i2c-dev: i2c-%d writing %zu bytes.\n",
181                 iminor(file_inode(file)), count);
182
183         ret = i2c_master_send(client, tmp, count);
184         kfree(tmp);
185         return ret;
186 }
187
188 static int i2cdev_check(struct device *dev, void *addrp)
189 {
190         struct i2c_client *client = i2c_verify_client(dev);
191
192         if (!client || client->addr != *(unsigned int *)addrp)
193                 return 0;
194
195         return dev->driver ? -EBUSY : 0;
196 }
197
198 /* walk up mux tree */
199 static int i2cdev_check_mux_parents(struct i2c_adapter *adapter, int addr)
200 {
201         struct i2c_adapter *parent = i2c_parent_is_i2c_adapter(adapter);
202         int result;
203
204         result = device_for_each_child(&adapter->dev, &addr, i2cdev_check);
205         if (!result && parent)
206                 result = i2cdev_check_mux_parents(parent, addr);
207
208         return result;
209 }
210
211 /* recurse down mux tree */
212 static int i2cdev_check_mux_children(struct device *dev, void *addrp)
213 {
214         int result;
215
216         if (dev->type == &i2c_adapter_type)
217                 result = device_for_each_child(dev, addrp,
218                                                 i2cdev_check_mux_children);
219         else
220                 result = i2cdev_check(dev, addrp);
221
222         return result;
223 }
224
225 /* This address checking function differs from the one in i2c-core
226    in that it considers an address with a registered device, but no
227    driver bound to it, as NOT busy. */
228 static int i2cdev_check_addr(struct i2c_adapter *adapter, unsigned int addr)
229 {
230         struct i2c_adapter *parent = i2c_parent_is_i2c_adapter(adapter);
231         int result = 0;
232
233         if (parent)
234                 result = i2cdev_check_mux_parents(parent, addr);
235
236         if (!result)
237                 result = device_for_each_child(&adapter->dev, &addr,
238                                                 i2cdev_check_mux_children);
239
240         return result;
241 }
242
243 static noinline int i2cdev_ioctl_rdwr(struct i2c_client *client,
244                 unsigned long arg)
245 {
246         struct i2c_rdwr_ioctl_data rdwr_arg;
247         struct i2c_msg *rdwr_pa;
248         u8 __user **data_ptrs;
249         int i, res;
250
251         if (copy_from_user(&rdwr_arg,
252                            (struct i2c_rdwr_ioctl_data __user *)arg,
253                            sizeof(rdwr_arg)))
254                 return -EFAULT;
255
256         /* Put an arbitrary limit on the number of messages that can
257          * be sent at once */
258         if (rdwr_arg.nmsgs > I2C_RDWR_IOCTL_MAX_MSGS)
259                 return -EINVAL;
260
261         rdwr_pa = memdup_user(rdwr_arg.msgs,
262                               rdwr_arg.nmsgs * sizeof(struct i2c_msg));
263         if (IS_ERR(rdwr_pa))
264                 return PTR_ERR(rdwr_pa);
265
266         data_ptrs = kmalloc(rdwr_arg.nmsgs * sizeof(u8 __user *), GFP_KERNEL);
267         if (data_ptrs == NULL) {
268                 kfree(rdwr_pa);
269                 return -ENOMEM;
270         }
271
272         res = 0;
273         for (i = 0; i < rdwr_arg.nmsgs; i++) {
274                 /* Limit the size of the message to a sane amount */
275                 if (rdwr_pa[i].len > 8192) {
276                         res = -EINVAL;
277                         break;
278                 }
279
280                 data_ptrs[i] = (u8 __user *)rdwr_pa[i].buf;
281                 rdwr_pa[i].buf = memdup_user(data_ptrs[i], rdwr_pa[i].len);
282                 if (IS_ERR(rdwr_pa[i].buf)) {
283                         res = PTR_ERR(rdwr_pa[i].buf);
284                         break;
285                 }
286
287                 /*
288                  * If the message length is received from the slave (similar
289                  * to SMBus block read), we must ensure that the buffer will
290                  * be large enough to cope with a message length of
291                  * I2C_SMBUS_BLOCK_MAX as this is the maximum underlying bus
292                  * drivers allow. The first byte in the buffer must be
293                  * pre-filled with the number of extra bytes, which must be
294                  * at least one to hold the message length, but can be
295                  * greater (for example to account for a checksum byte at
296                  * the end of the message.)
297                  */
298                 if (rdwr_pa[i].flags & I2C_M_RECV_LEN) {
299                         if (!(rdwr_pa[i].flags & I2C_M_RD) ||
300                             rdwr_pa[i].buf[0] < 1 ||
301                             rdwr_pa[i].len < rdwr_pa[i].buf[0] +
302                                              I2C_SMBUS_BLOCK_MAX) {
303                                 i++;
304                                 res = -EINVAL;
305                                 break;
306                         }
307
308                         rdwr_pa[i].len = rdwr_pa[i].buf[0];
309                 }
310         }
311         if (res < 0) {
312                 int j;
313                 for (j = 0; j < i; ++j)
314                         kfree(rdwr_pa[j].buf);
315                 kfree(data_ptrs);
316                 kfree(rdwr_pa);
317                 return res;
318         }
319
320         res = i2c_transfer(client->adapter, rdwr_pa, rdwr_arg.nmsgs);
321         while (i-- > 0) {
322                 if (res >= 0 && (rdwr_pa[i].flags & I2C_M_RD)) {
323                         if (copy_to_user(data_ptrs[i], rdwr_pa[i].buf,
324                                          rdwr_pa[i].len))
325                                 res = -EFAULT;
326                 }
327                 kfree(rdwr_pa[i].buf);
328         }
329         kfree(data_ptrs);
330         kfree(rdwr_pa);
331         return res;
332 }
333
334 static noinline int i2cdev_ioctl_smbus(struct i2c_client *client,
335                 unsigned long arg)
336 {
337         struct i2c_smbus_ioctl_data data_arg;
338         union i2c_smbus_data temp = {};
339         int datasize, res;
340
341         if (copy_from_user(&data_arg,
342                            (struct i2c_smbus_ioctl_data __user *) arg,
343                            sizeof(struct i2c_smbus_ioctl_data)))
344                 return -EFAULT;
345         if ((data_arg.size != I2C_SMBUS_BYTE) &&
346             (data_arg.size != I2C_SMBUS_QUICK) &&
347             (data_arg.size != I2C_SMBUS_BYTE_DATA) &&
348             (data_arg.size != I2C_SMBUS_WORD_DATA) &&
349             (data_arg.size != I2C_SMBUS_PROC_CALL) &&
350             (data_arg.size != I2C_SMBUS_BLOCK_DATA) &&
351             (data_arg.size != I2C_SMBUS_I2C_BLOCK_BROKEN) &&
352             (data_arg.size != I2C_SMBUS_I2C_BLOCK_DATA) &&
353             (data_arg.size != I2C_SMBUS_BLOCK_PROC_CALL)) {
354                 dev_dbg(&client->adapter->dev,
355                         "size out of range (%x) in ioctl I2C_SMBUS.\n",
356                         data_arg.size);
357                 return -EINVAL;
358         }
359         /* Note that I2C_SMBUS_READ and I2C_SMBUS_WRITE are 0 and 1,
360            so the check is valid if size==I2C_SMBUS_QUICK too. */
361         if ((data_arg.read_write != I2C_SMBUS_READ) &&
362             (data_arg.read_write != I2C_SMBUS_WRITE)) {
363                 dev_dbg(&client->adapter->dev,
364                         "read_write out of range (%x) in ioctl I2C_SMBUS.\n",
365                         data_arg.read_write);
366                 return -EINVAL;
367         }
368
369         /* Note that command values are always valid! */
370
371         if ((data_arg.size == I2C_SMBUS_QUICK) ||
372             ((data_arg.size == I2C_SMBUS_BYTE) &&
373             (data_arg.read_write == I2C_SMBUS_WRITE)))
374                 /* These are special: we do not use data */
375                 return i2c_smbus_xfer(client->adapter, client->addr,
376                                       client->flags, data_arg.read_write,
377                                       data_arg.command, data_arg.size, NULL);
378
379         if (data_arg.data == NULL) {
380                 dev_dbg(&client->adapter->dev,
381                         "data is NULL pointer in ioctl I2C_SMBUS.\n");
382                 return -EINVAL;
383         }
384
385         if ((data_arg.size == I2C_SMBUS_BYTE_DATA) ||
386             (data_arg.size == I2C_SMBUS_BYTE))
387                 datasize = sizeof(data_arg.data->byte);
388         else if ((data_arg.size == I2C_SMBUS_WORD_DATA) ||
389                  (data_arg.size == I2C_SMBUS_PROC_CALL))
390                 datasize = sizeof(data_arg.data->word);
391         else /* size == smbus block, i2c block, or block proc. call */
392                 datasize = sizeof(data_arg.data->block);
393
394         if ((data_arg.size == I2C_SMBUS_PROC_CALL) ||
395             (data_arg.size == I2C_SMBUS_BLOCK_PROC_CALL) ||
396             (data_arg.size == I2C_SMBUS_I2C_BLOCK_DATA) ||
397             (data_arg.read_write == I2C_SMBUS_WRITE)) {
398                 if (copy_from_user(&temp, data_arg.data, datasize))
399                         return -EFAULT;
400         }
401         if (data_arg.size == I2C_SMBUS_I2C_BLOCK_BROKEN) {
402                 /* Convert old I2C block commands to the new
403                    convention. This preserves binary compatibility. */
404                 data_arg.size = I2C_SMBUS_I2C_BLOCK_DATA;
405                 if (data_arg.read_write == I2C_SMBUS_READ)
406                         temp.block[0] = I2C_SMBUS_BLOCK_MAX;
407         }
408         res = i2c_smbus_xfer(client->adapter, client->addr, client->flags,
409               data_arg.read_write, data_arg.command, data_arg.size, &temp);
410         if (!res && ((data_arg.size == I2C_SMBUS_PROC_CALL) ||
411                      (data_arg.size == I2C_SMBUS_BLOCK_PROC_CALL) ||
412                      (data_arg.read_write == I2C_SMBUS_READ))) {
413                 if (copy_to_user(data_arg.data, &temp, datasize))
414                         return -EFAULT;
415         }
416         return res;
417 }
418
419 static long i2cdev_ioctl(struct file *file, unsigned int cmd, unsigned long arg)
420 {
421         struct i2c_client *client = file->private_data;
422         unsigned long funcs;
423
424         dev_dbg(&client->adapter->dev, "ioctl, cmd=0x%02x, arg=0x%02lx\n",
425                 cmd, arg);
426
427         switch (cmd) {
428         case I2C_SLAVE:
429         case I2C_SLAVE_FORCE:
430                 if ((arg > 0x3ff) ||
431                     (((client->flags & I2C_M_TEN) == 0) && arg > 0x7f))
432                         return -EINVAL;
433                 if (cmd == I2C_SLAVE && i2cdev_check_addr(client->adapter, arg))
434                         return -EBUSY;
435                 /* REVISIT: address could become busy later */
436                 client->addr = arg;
437                 return 0;
438         case I2C_TENBIT:
439                 if (arg)
440                         client->flags |= I2C_M_TEN;
441                 else
442                         client->flags &= ~I2C_M_TEN;
443                 return 0;
444         case I2C_PEC:
445                 /*
446                  * Setting the PEC flag here won't affect kernel drivers,
447                  * which will be using the i2c_client node registered with
448                  * the driver model core.  Likewise, when that client has
449                  * the PEC flag already set, the i2c-dev driver won't see
450                  * (or use) this setting.
451                  */
452                 if (arg)
453                         client->flags |= I2C_CLIENT_PEC;
454                 else
455                         client->flags &= ~I2C_CLIENT_PEC;
456                 return 0;
457         case I2C_FUNCS:
458                 funcs = i2c_get_functionality(client->adapter);
459                 return put_user(funcs, (unsigned long __user *)arg);
460
461         case I2C_RDWR:
462                 return i2cdev_ioctl_rdwr(client, arg);
463
464         case I2C_SMBUS:
465                 return i2cdev_ioctl_smbus(client, arg);
466
467         case I2C_RETRIES:
468                 if (arg > INT_MAX)
469                         return -EINVAL;
470
471                 client->adapter->retries = arg;
472                 break;
473         case I2C_TIMEOUT:
474                 if (arg > INT_MAX)
475                         return -EINVAL;
476
477                 /* For historical reasons, user-space sets the timeout
478                  * value in units of 10 ms.
479                  */
480                 client->adapter->timeout = msecs_to_jiffies(arg * 10);
481                 break;
482         default:
483                 /* NOTE:  returning a fault code here could cause trouble
484                  * in buggy userspace code.  Some old kernel bugs returned
485                  * zero in this case, and userspace code might accidentally
486                  * have depended on that bug.
487                  */
488                 return -ENOTTY;
489         }
490         return 0;
491 }
492
493 static int i2cdev_open(struct inode *inode, struct file *file)
494 {
495         unsigned int minor = iminor(inode);
496         struct i2c_client *client;
497         struct i2c_adapter *adap;
498
499         adap = i2c_get_adapter(minor);
500         if (!adap)
501                 return -ENODEV;
502
503         /* This creates an anonymous i2c_client, which may later be
504          * pointed to some address using I2C_SLAVE or I2C_SLAVE_FORCE.
505          *
506          * This client is ** NEVER REGISTERED ** with the driver model
507          * or I2C core code!!  It just holds private copies of addressing
508          * information and maybe a PEC flag.
509          */
510         client = kzalloc(sizeof(*client), GFP_KERNEL);
511         if (!client) {
512                 i2c_put_adapter(adap);
513                 return -ENOMEM;
514         }
515         snprintf(client->name, I2C_NAME_SIZE, "i2c-dev %d", adap->nr);
516
517         client->adapter = adap;
518         file->private_data = client;
519
520         return 0;
521 }
522
523 static int i2cdev_release(struct inode *inode, struct file *file)
524 {
525         struct i2c_client *client = file->private_data;
526
527         i2c_put_adapter(client->adapter);
528         kfree(client);
529         file->private_data = NULL;
530
531         return 0;
532 }
533
534 static const struct file_operations i2cdev_fops = {
535         .owner          = THIS_MODULE,
536         .llseek         = no_llseek,
537         .read           = i2cdev_read,
538         .write          = i2cdev_write,
539         .unlocked_ioctl = i2cdev_ioctl,
540         .open           = i2cdev_open,
541         .release        = i2cdev_release,
542 };
543
544 /* ------------------------------------------------------------------------- */
545
546 static struct class *i2c_dev_class;
547
548 static void i2cdev_dev_release(struct device *dev)
549 {
550         struct i2c_dev *i2c_dev;
551
552         i2c_dev = container_of(dev, struct i2c_dev, dev);
553         kfree(i2c_dev);
554 }
555
556 static int i2cdev_attach_adapter(struct device *dev, void *dummy)
557 {
558         struct i2c_adapter *adap;
559         struct i2c_dev *i2c_dev;
560         int res;
561
562         if (dev->type != &i2c_adapter_type)
563                 return 0;
564         adap = to_i2c_adapter(dev);
565
566         i2c_dev = get_free_i2c_dev(adap);
567         if (IS_ERR(i2c_dev))
568                 return PTR_ERR(i2c_dev);
569
570         cdev_init(&i2c_dev->cdev, &i2cdev_fops);
571         i2c_dev->cdev.owner = THIS_MODULE;
572
573         device_initialize(&i2c_dev->dev);
574         i2c_dev->dev.devt = MKDEV(I2C_MAJOR, adap->nr);
575         i2c_dev->dev.class = i2c_dev_class;
576         i2c_dev->dev.parent = &adap->dev;
577         i2c_dev->dev.release = i2cdev_dev_release;
578         dev_set_name(&i2c_dev->dev, "i2c-%d", adap->nr);
579
580         res = cdev_device_add(&i2c_dev->cdev, &i2c_dev->dev);
581         if (res) {
582                 put_i2c_dev(i2c_dev, false);
583                 return res;
584         }
585
586         pr_debug("i2c-dev: adapter [%s] registered as minor %d\n",
587                  adap->name, adap->nr);
588         return 0;
589 }
590
591 static int i2cdev_detach_adapter(struct device *dev, void *dummy)
592 {
593         struct i2c_adapter *adap;
594         struct i2c_dev *i2c_dev;
595
596         if (dev->type != &i2c_adapter_type)
597                 return 0;
598         adap = to_i2c_adapter(dev);
599
600         i2c_dev = i2c_dev_get_by_minor(adap->nr);
601         if (!i2c_dev) /* attach_adapter must have failed */
602                 return 0;
603
604         put_i2c_dev(i2c_dev, true);
605
606         pr_debug("i2c-dev: adapter [%s] unregistered\n", adap->name);
607         return 0;
608 }
609
610 static int i2cdev_notifier_call(struct notifier_block *nb, unsigned long action,
611                          void *data)
612 {
613         struct device *dev = data;
614
615         switch (action) {
616         case BUS_NOTIFY_ADD_DEVICE:
617                 return i2cdev_attach_adapter(dev, NULL);
618         case BUS_NOTIFY_DEL_DEVICE:
619                 return i2cdev_detach_adapter(dev, NULL);
620         }
621
622         return 0;
623 }
624
625 static struct notifier_block i2cdev_notifier = {
626         .notifier_call = i2cdev_notifier_call,
627 };
628
629 /* ------------------------------------------------------------------------- */
630
631 /*
632  * module load/unload record keeping
633  */
634
635 static int __init i2c_dev_init(void)
636 {
637         int res;
638
639         printk(KERN_INFO "i2c /dev entries driver\n");
640
641         res = register_chrdev_region(MKDEV(I2C_MAJOR, 0), I2C_MINORS, "i2c");
642         if (res)
643                 goto out;
644
645         i2c_dev_class = class_create(THIS_MODULE, "i2c-dev");
646         if (IS_ERR(i2c_dev_class)) {
647                 res = PTR_ERR(i2c_dev_class);
648                 goto out_unreg_chrdev;
649         }
650         i2c_dev_class->dev_groups = i2c_groups;
651
652         /* Keep track of adapters which will be added or removed later */
653         res = bus_register_notifier(&i2c_bus_type, &i2cdev_notifier);
654         if (res)
655                 goto out_unreg_class;
656
657         /* Bind to already existing adapters right away */
658         i2c_for_each_dev(NULL, i2cdev_attach_adapter);
659
660         return 0;
661
662 out_unreg_class:
663         class_destroy(i2c_dev_class);
664 out_unreg_chrdev:
665         unregister_chrdev_region(MKDEV(I2C_MAJOR, 0), I2C_MINORS);
666 out:
667         printk(KERN_ERR "%s: Driver Initialisation failed\n", __FILE__);
668         return res;
669 }
670
671 static void __exit i2c_dev_exit(void)
672 {
673         bus_unregister_notifier(&i2c_bus_type, &i2cdev_notifier);
674         i2c_for_each_dev(NULL, i2cdev_detach_adapter);
675         class_destroy(i2c_dev_class);
676         unregister_chrdev_region(MKDEV(I2C_MAJOR, 0), I2C_MINORS);
677 }
678
679 MODULE_AUTHOR("Frodo Looijaard <frodol@dds.nl> and "
680                 "Simon G. Vogl <simon@tk.uni-linz.ac.at>");
681 MODULE_DESCRIPTION("I2C /dev entries driver");
682 MODULE_LICENSE("GPL");
683
684 module_init(i2c_dev_init);
685 module_exit(i2c_dev_exit);