linux/drivers/i2c/i2c-core.c
<<
>>
Prefs
   1/* i2c-core.c - a device driver for the iic-bus interface                    */
   2/* ------------------------------------------------------------------------- */
   3/*   Copyright (C) 1995-99 Simon G. Vogl
   4
   5    This program is free software; you can redistribute it and/or modify
   6    it under the terms of the GNU General Public License as published by
   7    the Free Software Foundation; either version 2 of the License, or
   8    (at your option) any later version.
   9
  10    This program is distributed in the hope that it will be useful,
  11    but WITHOUT ANY WARRANTY; without even the implied warranty of
  12    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  13    GNU General Public License for more details.
  14
  15    You should have received a copy of the GNU General Public License
  16    along with this program; if not, write to the Free Software
  17    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.                */
  18/* ------------------------------------------------------------------------- */
  19
  20/* With some changes from Ky\xC3\xB6sti M\xC3\xA4lkki <kmalkki@cc.hut.fi>.
  21   All SMBus-related things are written by Frodo Looijaard <frodol@dds.nl>
  22   SMBus 2.0 support by Mark Studebaker <mdsxyz123@yahoo.com> and
  23   Jean Delvare <khali@linux-fr.org> */
  24
  25#include <linux/module.h>
  26#include <linux/kernel.h>
  27#include <linux/errno.h>
  28#include <linux/slab.h>
  29#include <linux/i2c.h>
  30#include <linux/init.h>
  31#include <linux/idr.h>
  32#include <linux/platform_device.h>
  33#include <linux/mutex.h>
  34#include <linux/completion.h>
  35#include <linux/hardirq.h>
  36#include <linux/irqflags.h>
  37#include <asm/uaccess.h>
  38
  39#include "i2c-core.h"
  40
  41
  42static DEFINE_MUTEX(core_lock);
  43static DEFINE_IDR(i2c_adapter_idr);
  44
  45#define is_newstyle_driver(d) ((d)->probe || (d)->remove || (d)->detect)
  46
  47static int i2c_detect(struct i2c_adapter *adapter, struct i2c_driver *driver);
  48
  49/* ------------------------------------------------------------------------- */
  50
  51static const struct i2c_device_id *i2c_match_id(const struct i2c_device_id *id,
  52                                                const struct i2c_client *client)
  53{
  54        while (id->name[0]) {
  55                if (strcmp(client->name, id->name) == 0)
  56                        return id;
  57                id++;
  58        }
  59        return NULL;
  60}
  61
  62static int i2c_device_match(struct device *dev, struct device_driver *drv)
  63{
  64        struct i2c_client       *client = to_i2c_client(dev);
  65        struct i2c_driver       *driver = to_i2c_driver(drv);
  66
  67        /* make legacy i2c drivers bypass driver model probing entirely;
  68         * such drivers scan each i2c adapter/bus themselves.
  69         */
  70        if (!is_newstyle_driver(driver))
  71                return 0;
  72
  73        /* match on an id table if there is one */
  74        if (driver->id_table)
  75                return i2c_match_id(driver->id_table, client) != NULL;
  76
  77        return 0;
  78}
  79
  80#ifdef  CONFIG_HOTPLUG
  81
  82/* uevent helps with hotplug: modprobe -q $(MODALIAS) */
  83static int i2c_device_uevent(struct device *dev, struct kobj_uevent_env *env)
  84{
  85        struct i2c_client       *client = to_i2c_client(dev);
  86
  87        /* by definition, legacy drivers can't hotplug */
  88        if (dev->driver)
  89                return 0;
  90
  91        if (add_uevent_var(env, "MODALIAS=%s%s",
  92                           I2C_MODULE_PREFIX, client->name))
  93                return -ENOMEM;
  94        dev_dbg(dev, "uevent\n");
  95        return 0;
  96}
  97
  98#else
  99#define i2c_device_uevent       NULL
 100#endif  /* CONFIG_HOTPLUG */
 101
 102static int i2c_device_probe(struct device *dev)
 103{
 104        struct i2c_client       *client = to_i2c_client(dev);
 105        struct i2c_driver       *driver = to_i2c_driver(dev->driver);
 106        int status;
 107
 108        if (!driver->probe || !driver->id_table)
 109                return -ENODEV;
 110        client->driver = driver;
 111        if (!device_can_wakeup(&client->dev))
 112                device_init_wakeup(&client->dev,
 113                                        client->flags & I2C_CLIENT_WAKE);
 114        dev_dbg(dev, "probe\n");
 115
 116        status = driver->probe(client, i2c_match_id(driver->id_table, client));
 117        if (status)
 118                client->driver = NULL;
 119        return status;
 120}
 121
 122static int i2c_device_remove(struct device *dev)
 123{
 124        struct i2c_client       *client = to_i2c_client(dev);
 125        struct i2c_driver       *driver;
 126        int                     status;
 127
 128        if (!dev->driver)
 129                return 0;
 130
 131        driver = to_i2c_driver(dev->driver);
 132        if (driver->remove) {
 133                dev_dbg(dev, "remove\n");
 134                status = driver->remove(client);
 135        } else {
 136                dev->driver = NULL;
 137                status = 0;
 138        }
 139        if (status == 0)
 140                client->driver = NULL;
 141        return status;
 142}
 143
 144static void i2c_device_shutdown(struct device *dev)
 145{
 146        struct i2c_driver *driver;
 147
 148        if (!dev->driver)
 149                return;
 150        driver = to_i2c_driver(dev->driver);
 151        if (driver->shutdown)
 152                driver->shutdown(to_i2c_client(dev));
 153}
 154
 155static int i2c_device_suspend(struct device * dev, pm_message_t mesg)
 156{
 157        struct i2c_driver *driver;
 158
 159        if (!dev->driver)
 160                return 0;
 161        driver = to_i2c_driver(dev->driver);
 162        if (!driver->suspend)
 163                return 0;
 164        return driver->suspend(to_i2c_client(dev), mesg);
 165}
 166
 167static int i2c_device_resume(struct device * dev)
 168{
 169        struct i2c_driver *driver;
 170
 171        if (!dev->driver)
 172                return 0;
 173        driver = to_i2c_driver(dev->driver);
 174        if (!driver->resume)
 175                return 0;
 176        return driver->resume(to_i2c_client(dev));
 177}
 178
 179static void i2c_client_release(struct device *dev)
 180{
 181        struct i2c_client *client = to_i2c_client(dev);
 182        complete(&client->released);
 183}
 184
 185static void i2c_client_dev_release(struct device *dev)
 186{
 187        kfree(to_i2c_client(dev));
 188}
 189
 190static ssize_t show_client_name(struct device *dev, struct device_attribute *attr, char *buf)
 191{
 192        struct i2c_client *client = to_i2c_client(dev);
 193        return sprintf(buf, "%s\n", client->name);
 194}
 195
 196static ssize_t show_modalias(struct device *dev, struct device_attribute *attr, char *buf)
 197{
 198        struct i2c_client *client = to_i2c_client(dev);
 199        return sprintf(buf, "%s%s\n", I2C_MODULE_PREFIX, client->name);
 200}
 201
 202static struct device_attribute i2c_dev_attrs[] = {
 203        __ATTR(name, S_IRUGO, show_client_name, NULL),
 204        /* modalias helps coldplug:  modprobe $(cat .../modalias) */
 205        __ATTR(modalias, S_IRUGO, show_modalias, NULL),
 206        { },
 207};
 208
 209struct bus_type i2c_bus_type = {
 210        .name           = "i2c",
 211        .dev_attrs      = i2c_dev_attrs,
 212        .match          = i2c_device_match,
 213        .uevent         = i2c_device_uevent,
 214        .probe          = i2c_device_probe,
 215        .remove         = i2c_device_remove,
 216        .shutdown       = i2c_device_shutdown,
 217        .suspend        = i2c_device_suspend,
 218        .resume         = i2c_device_resume,
 219};
 220EXPORT_SYMBOL_GPL(i2c_bus_type);
 221
 222
 223/**
 224 * i2c_verify_client - return parameter as i2c_client, or NULL
 225 * @dev: device, probably from some driver model iterator
 226 *
 227 * When traversing the driver model tree, perhaps using driver model
 228 * iterators like @device_for_each_child(), you can't assume very much
 229 * about the nodes you find.  Use this function to avoid oopses caused
 230 * by wrongly treating some non-I2C device as an i2c_client.
 231 */
 232struct i2c_client *i2c_verify_client(struct device *dev)
 233{
 234        return (dev->bus == &i2c_bus_type)
 235                        ? to_i2c_client(dev)
 236                        : NULL;
 237}
 238EXPORT_SYMBOL(i2c_verify_client);
 239
 240
 241/**
 242 * i2c_new_device - instantiate an i2c device for use with a new style driver
 243 * @adap: the adapter managing the device
 244 * @info: describes one I2C device; bus_num is ignored
 245 * Context: can sleep
 246 *
 247 * Create a device to work with a new style i2c driver, where binding is
 248 * handled through driver model probe()/remove() methods.  This call is not
 249 * appropriate for use by mainboad initialization logic, which usually runs
 250 * during an arch_initcall() long before any i2c_adapter could exist.
 251 *
 252 * This returns the new i2c client, which may be saved for later use with
 253 * i2c_unregister_device(); or NULL to indicate an error.
 254 */
 255struct i2c_client *
 256i2c_new_device(struct i2c_adapter *adap, struct i2c_board_info const *info)
 257{
 258        struct i2c_client       *client;
 259        int                     status;
 260
 261        client = kzalloc(sizeof *client, GFP_KERNEL);
 262        if (!client)
 263                return NULL;
 264
 265        client->adapter = adap;
 266
 267        client->dev.platform_data = info->platform_data;
 268
 269        client->flags = info->flags;
 270        client->addr = info->addr;
 271        client->irq = info->irq;
 272
 273        strlcpy(client->name, info->type, sizeof(client->name));
 274
 275        /* a new style driver may be bound to this device when we
 276         * return from this function, or any later moment (e.g. maybe
 277         * hotplugging will load the driver module).  and the device
 278         * refcount model is the standard driver model one.
 279         */
 280        status = i2c_attach_client(client);
 281        if (status < 0) {
 282                kfree(client);
 283                client = NULL;
 284        }
 285        return client;
 286}
 287EXPORT_SYMBOL_GPL(i2c_new_device);
 288
 289
 290/**
 291 * i2c_unregister_device - reverse effect of i2c_new_device()
 292 * @client: value returned from i2c_new_device()
 293 * Context: can sleep
 294 */
 295void i2c_unregister_device(struct i2c_client *client)
 296{
 297        struct i2c_adapter      *adapter = client->adapter;
 298        struct i2c_driver       *driver = client->driver;
 299
 300        if (driver && !is_newstyle_driver(driver)) {
 301                dev_err(&client->dev, "can't unregister devices "
 302                        "with legacy drivers\n");
 303                WARN_ON(1);
 304                return;
 305        }
 306
 307        if (adapter->client_unregister) {
 308                if (adapter->client_unregister(client)) {
 309                        dev_warn(&client->dev,
 310                                 "client_unregister [%s] failed\n",
 311                                 client->name);
 312                }
 313        }
 314
 315        mutex_lock(&adapter->clist_lock);
 316        list_del(&client->list);
 317        mutex_unlock(&adapter->clist_lock);
 318
 319        device_unregister(&client->dev);
 320}
 321EXPORT_SYMBOL_GPL(i2c_unregister_device);
 322
 323
 324static const struct i2c_device_id dummy_id[] = {
 325        { "dummy", 0 },
 326        { },
 327};
 328
 329static int dummy_probe(struct i2c_client *client,
 330                       const struct i2c_device_id *id)
 331{
 332        return 0;
 333}
 334
 335static int dummy_remove(struct i2c_client *client)
 336{
 337        return 0;
 338}
 339
 340static struct i2c_driver dummy_driver = {
 341        .driver.name    = "dummy",
 342        .probe          = dummy_probe,
 343        .remove         = dummy_remove,
 344        .id_table       = dummy_id,
 345};
 346
 347/**
 348 * i2c_new_dummy - return a new i2c device bound to a dummy driver
 349 * @adapter: the adapter managing the device
 350 * @address: seven bit address to be used
 351 * Context: can sleep
 352 *
 353 * This returns an I2C client bound to the "dummy" driver, intended for use
 354 * with devices that consume multiple addresses.  Examples of such chips
 355 * include various EEPROMS (like 24c04 and 24c08 models).
 356 *
 357 * These dummy devices have two main uses.  First, most I2C and SMBus calls
 358 * except i2c_transfer() need a client handle; the dummy will be that handle.
 359 * And second, this prevents the specified address from being bound to a
 360 * different driver.
 361 *
 362 * This returns the new i2c client, which should be saved for later use with
 363 * i2c_unregister_device(); or NULL to indicate an error.
 364 */
 365struct i2c_client *
 366i2c_new_dummy(struct i2c_adapter *adapter, u16 address)
 367{
 368        struct i2c_board_info info = {
 369                I2C_BOARD_INFO("dummy", address),
 370        };
 371
 372        return i2c_new_device(adapter, &info);
 373}
 374EXPORT_SYMBOL_GPL(i2c_new_dummy);
 375
 376/* ------------------------------------------------------------------------- */
 377
 378/* I2C bus adapters -- one roots each I2C or SMBUS segment */
 379
 380static void i2c_adapter_dev_release(struct device *dev)
 381{
 382        struct i2c_adapter *adap = to_i2c_adapter(dev);
 383        complete(&adap->dev_released);
 384}
 385
 386static ssize_t
 387show_adapter_name(struct device *dev, struct device_attribute *attr, char *buf)
 388{
 389        struct i2c_adapter *adap = to_i2c_adapter(dev);
 390        return sprintf(buf, "%s\n", adap->name);
 391}
 392
 393static struct device_attribute i2c_adapter_attrs[] = {
 394        __ATTR(name, S_IRUGO, show_adapter_name, NULL),
 395        { },
 396};
 397
 398static struct class i2c_adapter_class = {
 399        .owner                  = THIS_MODULE,
 400        .name                   = "i2c-adapter",
 401        .dev_attrs              = i2c_adapter_attrs,
 402};
 403
 404static void i2c_scan_static_board_info(struct i2c_adapter *adapter)
 405{
 406        struct i2c_devinfo      *devinfo;
 407
 408        mutex_lock(&__i2c_board_lock);
 409        list_for_each_entry(devinfo, &__i2c_board_list, list) {
 410                if (devinfo->busnum == adapter->nr
 411                                && !i2c_new_device(adapter,
 412                                                &devinfo->board_info))
 413                        printk(KERN_ERR "i2c-core: can't create i2c%d-%04x\n",
 414                                i2c_adapter_id(adapter),
 415                                devinfo->board_info.addr);
 416        }
 417        mutex_unlock(&__i2c_board_lock);
 418}
 419
 420static int i2c_do_add_adapter(struct device_driver *d, void *data)
 421{
 422        struct i2c_driver *driver = to_i2c_driver(d);
 423        struct i2c_adapter *adap = data;
 424
 425        /* Detect supported devices on that bus, and instantiate them */
 426        i2c_detect(adap, driver);
 427
 428        /* Let legacy drivers scan this bus for matching devices */
 429        if (driver->attach_adapter) {
 430                /* We ignore the return code; if it fails, too bad */
 431                driver->attach_adapter(adap);
 432        }
 433        return 0;
 434}
 435
 436static int i2c_register_adapter(struct i2c_adapter *adap)
 437{
 438        int res = 0, dummy;
 439
 440        mutex_init(&adap->bus_lock);
 441        mutex_init(&adap->clist_lock);
 442        INIT_LIST_HEAD(&adap->clients);
 443
 444        mutex_lock(&core_lock);
 445
 446        /* Add the adapter to the driver core.
 447         * If the parent pointer is not set up,
 448         * we add this adapter to the host bus.
 449         */
 450        if (adap->dev.parent == NULL) {
 451                adap->dev.parent = &platform_bus;
 452                pr_debug("I2C adapter driver [%s] forgot to specify "
 453                         "physical device\n", adap->name);
 454        }
 455        sprintf(adap->dev.bus_id, "i2c-%d", adap->nr);
 456        adap->dev.release = &i2c_adapter_dev_release;
 457        adap->dev.class = &i2c_adapter_class;
 458        res = device_register(&adap->dev);
 459        if (res)
 460                goto out_list;
 461
 462        dev_dbg(&adap->dev, "adapter [%s] registered\n", adap->name);
 463
 464        /* create pre-declared device nodes for new-style drivers */
 465        if (adap->nr < __i2c_first_dynamic_bus_num)
 466                i2c_scan_static_board_info(adap);
 467
 468        /* Notify drivers */
 469        dummy = bus_for_each_drv(&i2c_bus_type, NULL, adap,
 470                                 i2c_do_add_adapter);
 471
 472out_unlock:
 473        mutex_unlock(&core_lock);
 474        return res;
 475
 476out_list:
 477        idr_remove(&i2c_adapter_idr, adap->nr);
 478        goto out_unlock;
 479}
 480
 481/**
 482 * i2c_add_adapter - declare i2c adapter, use dynamic bus number
 483 * @adapter: the adapter to add
 484 * Context: can sleep
 485 *
 486 * This routine is used to declare an I2C adapter when its bus number
 487 * doesn't matter.  Examples: for I2C adapters dynamically added by
 488 * USB links or PCI plugin cards.
 489 *
 490 * When this returns zero, a new bus number was allocated and stored
 491 * in adap->nr, and the specified adapter became available for clients.
 492 * Otherwise, a negative errno value is returned.
 493 */
 494int i2c_add_adapter(struct i2c_adapter *adapter)
 495{
 496        int     id, res = 0;
 497
 498retry:
 499        if (idr_pre_get(&i2c_adapter_idr, GFP_KERNEL) == 0)
 500                return -ENOMEM;
 501
 502        mutex_lock(&core_lock);
 503        /* "above" here means "above or equal to", sigh */
 504        res = idr_get_new_above(&i2c_adapter_idr, adapter,
 505                                __i2c_first_dynamic_bus_num, &id);
 506        mutex_unlock(&core_lock);
 507
 508        if (res < 0) {
 509                if (res == -EAGAIN)
 510                        goto retry;
 511                return res;
 512        }
 513
 514        adapter->nr = id;
 515        return i2c_register_adapter(adapter);
 516}
 517EXPORT_SYMBOL(i2c_add_adapter);
 518
 519/**
 520 * i2c_add_numbered_adapter - declare i2c adapter, use static bus number
 521 * @adap: the adapter to register (with adap->nr initialized)
 522 * Context: can sleep
 523 *
 524 * This routine is used to declare an I2C adapter when its bus number
 525 * matters.  For example, use it for I2C adapters from system-on-chip CPUs,
 526 * or otherwise built in to the system's mainboard, and where i2c_board_info
 527 * is used to properly configure I2C devices.
 528 *
 529 * If no devices have pre-been declared for this bus, then be sure to
 530 * register the adapter before any dynamically allocated ones.  Otherwise
 531 * the required bus ID may not be available.
 532 *
 533 * When this returns zero, the specified adapter became available for
 534 * clients using the bus number provided in adap->nr.  Also, the table
 535 * of I2C devices pre-declared using i2c_register_board_info() is scanned,
 536 * and the appropriate driver model device nodes are created.  Otherwise, a
 537 * negative errno value is returned.
 538 */
 539int i2c_add_numbered_adapter(struct i2c_adapter *adap)
 540{
 541        int     id;
 542        int     status;
 543
 544        if (adap->nr & ~MAX_ID_MASK)
 545                return -EINVAL;
 546
 547retry:
 548        if (idr_pre_get(&i2c_adapter_idr, GFP_KERNEL) == 0)
 549                return -ENOMEM;
 550
 551        mutex_lock(&core_lock);
 552        /* "above" here means "above or equal to", sigh;
 553         * we need the "equal to" result to force the result
 554         */
 555        status = idr_get_new_above(&i2c_adapter_idr, adap, adap->nr, &id);
 556        if (status == 0 && id != adap->nr) {
 557                status = -EBUSY;
 558                idr_remove(&i2c_adapter_idr, id);
 559        }
 560        mutex_unlock(&core_lock);
 561        if (status == -EAGAIN)
 562                goto retry;
 563
 564        if (status == 0)
 565                status = i2c_register_adapter(adap);
 566        return status;
 567}
 568EXPORT_SYMBOL_GPL(i2c_add_numbered_adapter);
 569
 570static int i2c_do_del_adapter(struct device_driver *d, void *data)
 571{
 572        struct i2c_driver *driver = to_i2c_driver(d);
 573        struct i2c_adapter *adapter = data;
 574        struct i2c_client *client, *_n;
 575        int res;
 576
 577        /* Remove the devices we created ourselves */
 578        list_for_each_entry_safe(client, _n, &driver->clients, detected) {
 579                if (client->adapter == adapter) {
 580                        dev_dbg(&adapter->dev, "Removing %s at 0x%x\n",
 581                                client->name, client->addr);
 582                        list_del(&client->detected);
 583                        i2c_unregister_device(client);
 584                }
 585        }
 586
 587        if (!driver->detach_adapter)
 588                return 0;
 589        res = driver->detach_adapter(adapter);
 590        if (res)
 591                dev_err(&adapter->dev, "detach_adapter failed (%d) "
 592                        "for driver [%s]\n", res, driver->driver.name);
 593        return res;
 594}
 595
 596/**
 597 * i2c_del_adapter - unregister I2C adapter
 598 * @adap: the adapter being unregistered
 599 * Context: can sleep
 600 *
 601 * This unregisters an I2C adapter which was previously registered
 602 * by @i2c_add_adapter or @i2c_add_numbered_adapter.
 603 */
 604int i2c_del_adapter(struct i2c_adapter *adap)
 605{
 606        struct i2c_client *client, *_n;
 607        int res = 0;
 608
 609        mutex_lock(&core_lock);
 610
 611        /* First make sure that this adapter was ever added */
 612        if (idr_find(&i2c_adapter_idr, adap->nr) != adap) {
 613                pr_debug("i2c-core: attempting to delete unregistered "
 614                         "adapter [%s]\n", adap->name);
 615                res = -EINVAL;
 616                goto out_unlock;
 617        }
 618
 619        /* Tell drivers about this removal */
 620        res = bus_for_each_drv(&i2c_bus_type, NULL, adap,
 621                               i2c_do_del_adapter);
 622        if (res)
 623                goto out_unlock;
 624
 625        /* detach any active clients. This must be done first, because
 626         * it can fail; in which case we give up. */
 627        list_for_each_entry_safe(client, _n, &adap->clients, list) {
 628                struct i2c_driver       *driver;
 629
 630                driver = client->driver;
 631
 632                /* new style, follow standard driver model */
 633                if (!driver || is_newstyle_driver(driver)) {
 634                        i2c_unregister_device(client);
 635                        continue;
 636                }
 637
 638                /* legacy drivers create and remove clients themselves */
 639                if ((res = driver->detach_client(client))) {
 640                        dev_err(&adap->dev, "detach_client failed for client "
 641                                "[%s] at address 0x%02x\n", client->name,
 642                                client->addr);
 643                        goto out_unlock;
 644                }
 645        }
 646
 647        /* device name is gone after device_unregister */
 648        dev_dbg(&adap->dev, "adapter [%s] unregistered\n", adap->name);
 649
 650        /* clean up the sysfs representation */
 651        init_completion(&adap->dev_released);
 652        device_unregister(&adap->dev);
 653
 654        /* wait for sysfs to drop all references */
 655        wait_for_completion(&adap->dev_released);
 656
 657        /* free bus id */
 658        idr_remove(&i2c_adapter_idr, adap->nr);
 659
 660        /* Clear the device structure in case this adapter is ever going to be
 661           added again */
 662        memset(&adap->dev, 0, sizeof(adap->dev));
 663
 664 out_unlock:
 665        mutex_unlock(&core_lock);
 666        return res;
 667}
 668EXPORT_SYMBOL(i2c_del_adapter);
 669
 670
 671/* ------------------------------------------------------------------------- */
 672
 673static int __attach_adapter(struct device *dev, void *data)
 674{
 675        struct i2c_adapter *adapter = to_i2c_adapter(dev);
 676        struct i2c_driver *driver = data;
 677
 678        i2c_detect(adapter, driver);
 679
 680        /* Legacy drivers scan i2c busses directly */
 681        if (driver->attach_adapter)
 682                driver->attach_adapter(adapter);
 683
 684        return 0;
 685}
 686
 687/*
 688 * An i2c_driver is used with one or more i2c_client (device) nodes to access
 689 * i2c slave chips, on a bus instance associated with some i2c_adapter.  There
 690 * are two models for binding the driver to its device:  "new style" drivers
 691 * follow the standard Linux driver model and just respond to probe() calls
 692 * issued if the driver core sees they match(); "legacy" drivers create device
 693 * nodes themselves.
 694 */
 695
 696int i2c_register_driver(struct module *owner, struct i2c_driver *driver)
 697{
 698        int res;
 699
 700        /* new style driver methods can't mix with legacy ones */
 701        if (is_newstyle_driver(driver)) {
 702                if (driver->attach_adapter || driver->detach_adapter
 703                                || driver->detach_client) {
 704                        printk(KERN_WARNING
 705                                        "i2c-core: driver [%s] is confused\n",
 706                                        driver->driver.name);
 707                        return -EINVAL;
 708                }
 709        }
 710
 711        /* add the driver to the list of i2c drivers in the driver core */
 712        driver->driver.owner = owner;
 713        driver->driver.bus = &i2c_bus_type;
 714
 715        /* for new style drivers, when registration returns the driver core
 716         * will have called probe() for all matching-but-unbound devices.
 717         */
 718        res = driver_register(&driver->driver);
 719        if (res)
 720                return res;
 721
 722        mutex_lock(&core_lock);
 723
 724        pr_debug("i2c-core: driver [%s] registered\n", driver->driver.name);
 725
 726        INIT_LIST_HEAD(&driver->clients);
 727        /* Walk the adapters that are already present */
 728        class_for_each_device(&i2c_adapter_class, NULL, driver,
 729                              __attach_adapter);
 730
 731        mutex_unlock(&core_lock);
 732        return 0;
 733}
 734EXPORT_SYMBOL(i2c_register_driver);
 735
 736static int __detach_adapter(struct device *dev, void *data)
 737{
 738        struct i2c_adapter *adapter = to_i2c_adapter(dev);
 739        struct i2c_driver *driver = data;
 740        struct i2c_client *client, *_n;
 741
 742        list_for_each_entry_safe(client, _n, &driver->clients, detected) {
 743                dev_dbg(&adapter->dev, "Removing %s at 0x%x\n",
 744                        client->name, client->addr);
 745                list_del(&client->detected);
 746                i2c_unregister_device(client);
 747        }
 748
 749        if (is_newstyle_driver(driver))
 750                return 0;
 751
 752        /* Have a look at each adapter, if clients of this driver are still
 753         * attached. If so, detach them to be able to kill the driver
 754         * afterwards.
 755         */
 756        if (driver->detach_adapter) {
 757                if (driver->detach_adapter(adapter))
 758                        dev_err(&adapter->dev,
 759                                "detach_adapter failed for driver [%s]\n",
 760                                driver->driver.name);
 761        } else {
 762                struct i2c_client *client, *_n;
 763
 764                list_for_each_entry_safe(client, _n, &adapter->clients, list) {
 765                        if (client->driver != driver)
 766                                continue;
 767                        dev_dbg(&adapter->dev,
 768                                "detaching client [%s] at 0x%02x\n",
 769                                client->name, client->addr);
 770                        if (driver->detach_client(client))
 771                                dev_err(&adapter->dev, "detach_client "
 772                                        "failed for client [%s] at 0x%02x\n",
 773                                        client->name, client->addr);
 774                }
 775        }
 776
 777        return 0;
 778}
 779
 780/**
 781 * i2c_del_driver - unregister I2C driver
 782 * @driver: the driver being unregistered
 783 * Context: can sleep
 784 */
 785void i2c_del_driver(struct i2c_driver *driver)
 786{
 787        mutex_lock(&core_lock);
 788
 789        class_for_each_device(&i2c_adapter_class, NULL, driver,
 790                              __detach_adapter);
 791
 792        driver_unregister(&driver->driver);
 793        pr_debug("i2c-core: driver [%s] unregistered\n", driver->driver.name);
 794
 795        mutex_unlock(&core_lock);
 796}
 797EXPORT_SYMBOL(i2c_del_driver);
 798
 799/* ------------------------------------------------------------------------- */
 800
 801static int __i2c_check_addr(struct device *dev, void *addrp)
 802{
 803        struct i2c_client       *client = i2c_verify_client(dev);
 804        int                     addr = *(int *)addrp;
 805
 806        if (client && client->addr == addr)
 807                return -EBUSY;
 808        return 0;
 809}
 810
 811static int i2c_check_addr(struct i2c_adapter *adapter, int addr)
 812{
 813        return device_for_each_child(&adapter->dev, &addr, __i2c_check_addr);
 814}
 815
 816int i2c_attach_client(struct i2c_client *client)
 817{
 818        struct i2c_adapter *adapter = client->adapter;
 819        int res;
 820
 821        /* Check for address business */
 822        res = i2c_check_addr(adapter, client->addr);
 823        if (res)
 824                return res;
 825
 826        client->dev.parent = &client->adapter->dev;
 827        client->dev.bus = &i2c_bus_type;
 828
 829        if (client->driver)
 830                client->dev.driver = &client->driver->driver;
 831
 832        if (client->driver && !is_newstyle_driver(client->driver)) {
 833                client->dev.release = i2c_client_release;
 834                client->dev.uevent_suppress = 1;
 835        } else
 836                client->dev.release = i2c_client_dev_release;
 837
 838        snprintf(&client->dev.bus_id[0], sizeof(client->dev.bus_id),
 839                "%d-%04x", i2c_adapter_id(adapter), client->addr);
 840        res = device_register(&client->dev);
 841        if (res)
 842                goto out_err;
 843
 844        mutex_lock(&adapter->clist_lock);
 845        list_add_tail(&client->list, &adapter->clients);
 846        mutex_unlock(&adapter->clist_lock);
 847
 848        dev_dbg(&adapter->dev, "client [%s] registered with bus id %s\n",
 849                client->name, client->dev.bus_id);
 850
 851        if (adapter->client_register)  {
 852                if (adapter->client_register(client)) {
 853                        dev_dbg(&adapter->dev, "client_register "
 854                                "failed for client [%s] at 0x%02x\n",
 855                                client->name, client->addr);
 856                }
 857        }
 858
 859        return 0;
 860
 861out_err:
 862        dev_err(&adapter->dev, "Failed to attach i2c client %s at 0x%02x "
 863                "(%d)\n", client->name, client->addr, res);
 864        return res;
 865}
 866EXPORT_SYMBOL(i2c_attach_client);
 867
 868int i2c_detach_client(struct i2c_client *client)
 869{
 870        struct i2c_adapter *adapter = client->adapter;
 871        int res = 0;
 872
 873        if (adapter->client_unregister)  {
 874                res = adapter->client_unregister(client);
 875                if (res) {
 876                        dev_err(&client->dev,
 877                                "client_unregister [%s] failed, "
 878                                "client not detached\n", client->name);
 879                        goto out;
 880                }
 881        }
 882
 883        mutex_lock(&adapter->clist_lock);
 884        list_del(&client->list);
 885        mutex_unlock(&adapter->clist_lock);
 886
 887        init_completion(&client->released);
 888        device_unregister(&client->dev);
 889        wait_for_completion(&client->released);
 890
 891 out:
 892        return res;
 893}
 894EXPORT_SYMBOL(i2c_detach_client);
 895
 896/**
 897 * i2c_use_client - increments the reference count of the i2c client structure
 898 * @client: the client being referenced
 899 *
 900 * Each live reference to a client should be refcounted. The driver model does
 901 * that automatically as part of driver binding, so that most drivers don't
 902 * need to do this explicitly: they hold a reference until they're unbound
 903 * from the device.
 904 *
 905 * A pointer to the client with the incremented reference counter is returned.
 906 */
 907struct i2c_client *i2c_use_client(struct i2c_client *client)
 908{
 909        if (client && get_device(&client->dev))
 910                return client;
 911        return NULL;
 912}
 913EXPORT_SYMBOL(i2c_use_client);
 914
 915/**
 916 * i2c_release_client - release a use of the i2c client structure
 917 * @client: the client being no longer referenced
 918 *
 919 * Must be called when a user of a client is finished with it.
 920 */
 921void i2c_release_client(struct i2c_client *client)
 922{
 923        if (client)
 924                put_device(&client->dev);
 925}
 926EXPORT_SYMBOL(i2c_release_client);
 927
 928struct i2c_cmd_arg {
 929        unsigned        cmd;
 930        void            *arg;
 931};
 932
 933static int i2c_cmd(struct device *dev, void *_arg)
 934{
 935        struct i2c_client       *client = i2c_verify_client(dev);
 936        struct i2c_cmd_arg      *arg = _arg;
 937
 938        if (client && client->driver && client->driver->command)
 939                client->driver->command(client, arg->cmd, arg->arg);
 940        return 0;
 941}
 942
 943void i2c_clients_command(struct i2c_adapter *adap, unsigned int cmd, void *arg)
 944{
 945        struct i2c_cmd_arg      cmd_arg;
 946
 947        cmd_arg.cmd = cmd;
 948        cmd_arg.arg = arg;
 949        device_for_each_child(&adap->dev, &cmd_arg, i2c_cmd);
 950}
 951EXPORT_SYMBOL(i2c_clients_command);
 952
 953static int __init i2c_init(void)
 954{
 955        int retval;
 956
 957        retval = bus_register(&i2c_bus_type);
 958        if (retval)
 959                return retval;
 960        retval = class_register(&i2c_adapter_class);
 961        if (retval)
 962                goto bus_err;
 963        retval = i2c_add_driver(&dummy_driver);
 964        if (retval)
 965                goto class_err;
 966        return 0;
 967
 968class_err:
 969        class_unregister(&i2c_adapter_class);
 970bus_err:
 971        bus_unregister(&i2c_bus_type);
 972        return retval;
 973}
 974
 975static void __exit i2c_exit(void)
 976{
 977        i2c_del_driver(&dummy_driver);
 978        class_unregister(&i2c_adapter_class);
 979        bus_unregister(&i2c_bus_type);
 980}
 981
 982subsys_initcall(i2c_init);
 983module_exit(i2c_exit);
 984
 985/* ----------------------------------------------------
 986 * the functional interface to the i2c busses.
 987 * ----------------------------------------------------
 988 */
 989
 990/**
 991 * i2c_transfer - execute a single or combined I2C message
 992 * @adap: Handle to I2C bus
 993 * @msgs: One or more messages to execute before STOP is issued to
 994 *      terminate the operation; each message begins with a START.
 995 * @num: Number of messages to be executed.
 996 *
 997 * Returns negative errno, else the number of messages executed.
 998 *
 999 * Note that there is no requirement that each message be sent to
1000 * the same slave address, although that is the most common model.
1001 */
1002int i2c_transfer(struct i2c_adapter * adap, struct i2c_msg *msgs, int num)
1003{
1004        int ret;
1005
1006        /* REVISIT the fault reporting model here is weak:
1007         *
1008         *  - When we get an error after receiving N bytes from a slave,
1009         *    there is no way to report "N".
1010         *
1011         *  - When we get a NAK after transmitting N bytes to a slave,
1012         *    there is no way to report "N" ... or to let the master
1013         *    continue executing the rest of this combined message, if
1014         *    that's the appropriate response.
1015         *
1016         *  - When for example "num" is two and we successfully complete
1017         *    the first message but get an error part way through the
1018         *    second, it's unclear whether that should be reported as
1019         *    one (discarding status on the second message) or errno
1020         *    (discarding status on the first one).
1021         */
1022
1023        if (adap->algo->master_xfer) {
1024#ifdef DEBUG
1025                for (ret = 0; ret < num; ret++) {
1026                        dev_dbg(&adap->dev, "master_xfer[%d] %c, addr=0x%02x, "
1027                                "len=%d%s\n", ret, (msgs[ret].flags & I2C_M_RD)
1028                                ? 'R' : 'W', msgs[ret].addr, msgs[ret].len,
1029                                (msgs[ret].flags & I2C_M_RECV_LEN) ? "+" : "");
1030                }
1031#endif
1032
1033                if (in_atomic() || irqs_disabled()) {
1034                        ret = mutex_trylock(&adap->bus_lock);
1035                        if (!ret)
1036                                /* I2C activity is ongoing. */
1037                                return -EAGAIN;
1038                } else {
1039                        mutex_lock_nested(&adap->bus_lock, adap->level);
1040                }
1041
1042                ret = adap->algo->master_xfer(adap,msgs,num);
1043                mutex_unlock(&adap->bus_lock);
1044
1045                return ret;
1046        } else {
1047                dev_dbg(&adap->dev, "I2C level transfers not supported\n");
1048                return -EOPNOTSUPP;
1049        }
1050}
1051EXPORT_SYMBOL(i2c_transfer);
1052
1053/**
1054 * i2c_master_send - issue a single I2C message in master transmit mode
1055 * @client: Handle to slave device
1056 * @buf: Data that will be written to the slave
1057 * @count: How many bytes to write
1058 *
1059 * Returns negative errno, or else the number of bytes written.
1060 */
1061int i2c_master_send(struct i2c_client *client,const char *buf ,int count)
1062{
1063        int ret;
1064        struct i2c_adapter *adap=client->adapter;
1065        struct i2c_msg msg;
1066
1067        msg.addr = client->addr;
1068        msg.flags = client->flags & I2C_M_TEN;
1069        msg.len = count;
1070        msg.buf = (char *)buf;
1071
1072        ret = i2c_transfer(adap, &msg, 1);
1073
1074        /* If everything went ok (i.e. 1 msg transmitted), return #bytes
1075           transmitted, else error code. */
1076        return (ret == 1) ? count : ret;
1077}
1078EXPORT_SYMBOL(i2c_master_send);
1079
1080/**
1081 * i2c_master_recv - issue a single I2C message in master receive mode
1082 * @client: Handle to slave device
1083 * @buf: Where to store data read from slave
1084 * @count: How many bytes to read
1085 *
1086 * Returns negative errno, or else the number of bytes read.
1087 */
1088int i2c_master_recv(struct i2c_client *client, char *buf ,int count)
1089{
1090        struct i2c_adapter *adap=client->adapter;
1091        struct i2c_msg msg;
1092        int ret;
1093
1094        msg.addr = client->addr;
1095        msg.flags = client->flags & I2C_M_TEN;
1096        msg.flags |= I2C_M_RD;
1097        msg.len = count;
1098        msg.buf = buf;
1099
1100        ret = i2c_transfer(adap, &msg, 1);
1101
1102        /* If everything went ok (i.e. 1 msg transmitted), return #bytes
1103           transmitted, else error code. */
1104        return (ret == 1) ? count : ret;
1105}
1106EXPORT_SYMBOL(i2c_master_recv);
1107
1108/* ----------------------------------------------------
1109 * the i2c address scanning function
1110 * Will not work for 10-bit addresses!
1111 * ----------------------------------------------------
1112 */
1113static int i2c_probe_address(struct i2c_adapter *adapter, int addr, int kind,
1114                             int (*found_proc) (struct i2c_adapter *, int, int))
1115{
1116        int err;
1117
1118        /* Make sure the address is valid */
1119        if (addr < 0x03 || addr > 0x77) {
1120                dev_warn(&adapter->dev, "Invalid probe address 0x%02x\n",
1121                         addr);
1122                return -EINVAL;
1123        }
1124
1125        /* Skip if already in use */
1126        if (i2c_check_addr(adapter, addr))
1127                return 0;
1128
1129        /* Make sure there is something at this address, unless forced */
1130        if (kind < 0) {
1131                if (i2c_smbus_xfer(adapter, addr, 0, 0, 0,
1132                                   I2C_SMBUS_QUICK, NULL) < 0)
1133                        return 0;
1134
1135                /* prevent 24RF08 corruption */
1136                if ((addr & ~0x0f) == 0x50)
1137                        i2c_smbus_xfer(adapter, addr, 0, 0, 0,
1138                                       I2C_SMBUS_QUICK, NULL);
1139        }
1140
1141        /* Finally call the custom detection function */
1142        err = found_proc(adapter, addr, kind);
1143        /* -ENODEV can be returned if there is a chip at the given address
1144           but it isn't supported by this chip driver. We catch it here as
1145           this isn't an error. */
1146        if (err == -ENODEV)
1147                err = 0;
1148
1149        if (err)
1150                dev_warn(&adapter->dev, "Client creation failed at 0x%x (%d)\n",
1151                         addr, err);
1152        return err;
1153}
1154
1155int i2c_probe(struct i2c_adapter *adapter,
1156              const struct i2c_client_address_data *address_data,
1157              int (*found_proc) (struct i2c_adapter *, int, int))
1158{
1159        int i, err;
1160        int adap_id = i2c_adapter_id(adapter);
1161
1162        /* Force entries are done first, and are not affected by ignore
1163           entries */
1164        if (address_data->forces) {
1165                const unsigned short * const *forces = address_data->forces;
1166                int kind;
1167
1168                for (kind = 0; forces[kind]; kind++) {
1169                        for (i = 0; forces[kind][i] != I2C_CLIENT_END;
1170                             i += 2) {
1171                                if (forces[kind][i] == adap_id
1172                                 || forces[kind][i] == ANY_I2C_BUS) {
1173                                        dev_dbg(&adapter->dev, "found force "
1174                                                "parameter for adapter %d, "
1175                                                "addr 0x%02x, kind %d\n",
1176                                                adap_id, forces[kind][i + 1],
1177                                                kind);
1178                                        err = i2c_probe_address(adapter,
1179                                                forces[kind][i + 1],
1180                                                kind, found_proc);
1181                                        if (err)
1182                                                return err;
1183                                }
1184                        }
1185                }
1186        }
1187
1188        /* Stop here if we can't use SMBUS_QUICK */
1189        if (!i2c_check_functionality(adapter, I2C_FUNC_SMBUS_QUICK)) {
1190                if (address_data->probe[0] == I2C_CLIENT_END
1191                 && address_data->normal_i2c[0] == I2C_CLIENT_END)
1192                        return 0;
1193
1194                dev_dbg(&adapter->dev, "SMBus Quick command not supported, "
1195                        "can't probe for chips\n");
1196                return -EOPNOTSUPP;
1197        }
1198
1199        /* Probe entries are done second, and are not affected by ignore
1200           entries either */
1201        for (i = 0; address_data->probe[i] != I2C_CLIENT_END; i += 2) {
1202                if (address_data->probe[i] == adap_id
1203                 || address_data->probe[i] == ANY_I2C_BUS) {
1204                        dev_dbg(&adapter->dev, "found probe parameter for "
1205                                "adapter %d, addr 0x%02x\n", adap_id,
1206                                address_data->probe[i + 1]);
1207                        err = i2c_probe_address(adapter,
1208                                                address_data->probe[i + 1],
1209                                                -1, found_proc);
1210                        if (err)
1211                                return err;
1212                }
1213        }
1214
1215        /* Normal entries are done last, unless shadowed by an ignore entry */
1216        for (i = 0; address_data->normal_i2c[i] != I2C_CLIENT_END; i += 1) {
1217                int j, ignore;
1218
1219                ignore = 0;
1220                for (j = 0; address_data->ignore[j] != I2C_CLIENT_END;
1221                     j += 2) {
1222                        if ((address_data->ignore[j] == adap_id ||
1223                             address_data->ignore[j] == ANY_I2C_BUS)
1224                         && address_data->ignore[j + 1]
1225                            == address_data->normal_i2c[i]) {
1226                                dev_dbg(&adapter->dev, "found ignore "
1227                                        "parameter for adapter %d, "
1228                                        "addr 0x%02x\n", adap_id,
1229                                        address_data->ignore[j + 1]);
1230                                ignore = 1;
1231                                break;
1232                        }
1233                }
1234                if (ignore)
1235                        continue;
1236
1237                dev_dbg(&adapter->dev, "found normal entry for adapter %d, "
1238                        "addr 0x%02x\n", adap_id,
1239                        address_data->normal_i2c[i]);
1240                err = i2c_probe_address(adapter, address_data->normal_i2c[i],
1241                                        -1, found_proc);
1242                if (err)
1243                        return err;
1244        }
1245
1246        return 0;
1247}
1248EXPORT_SYMBOL(i2c_probe);
1249
1250/* Separate detection function for new-style drivers */
1251static int i2c_detect_address(struct i2c_client *temp_client, int kind,
1252                              struct i2c_driver *driver)
1253{
1254        struct i2c_board_info info;
1255        struct i2c_adapter *adapter = temp_client->adapter;
1256        int addr = temp_client->addr;
1257        int err;
1258
1259        /* Make sure the address is valid */
1260        if (addr < 0x03 || addr > 0x77) {
1261                dev_warn(&adapter->dev, "Invalid probe address 0x%02x\n",
1262                         addr);
1263                return -EINVAL;
1264        }
1265
1266        /* Skip if already in use */
1267        if (i2c_check_addr(adapter, addr))
1268                return 0;
1269
1270        /* Make sure there is something at this address, unless forced */
1271        if (kind < 0) {
1272                if (addr == 0x73 && (adapter->class & I2C_CLASS_HWMON)) {
1273                        /* Special probe for FSC hwmon chips */
1274                        union i2c_smbus_data dummy;
1275
1276                        if (i2c_smbus_xfer(adapter, addr, 0, I2C_SMBUS_READ, 0,
1277                                           I2C_SMBUS_BYTE_DATA, &dummy) < 0)
1278                                return 0;
1279                } else {
1280                        if (i2c_smbus_xfer(adapter, addr, 0, I2C_SMBUS_WRITE, 0,
1281                                           I2C_SMBUS_QUICK, NULL) < 0)
1282                                return 0;
1283
1284                        /* Prevent 24RF08 corruption */
1285                        if ((addr & ~0x0f) == 0x50)
1286                                i2c_smbus_xfer(adapter, addr, 0,
1287                                               I2C_SMBUS_WRITE, 0,
1288                                               I2C_SMBUS_QUICK, NULL);
1289                }
1290        }
1291
1292        /* Finally call the custom detection function */
1293        memset(&info, 0, sizeof(struct i2c_board_info));
1294        info.addr = addr;
1295        err = driver->detect(temp_client, kind, &info);
1296        if (err) {
1297                /* -ENODEV is returned if the detection fails. We catch it
1298                   here as this isn't an error. */
1299                return err == -ENODEV ? 0 : err;
1300        }
1301
1302        /* Consistency check */
1303        if (info.type[0] == '\0') {
1304                dev_err(&adapter->dev, "%s detection function provided "
1305                        "no name for 0x%x\n", driver->driver.name,
1306                        addr);
1307        } else {
1308                struct i2c_client *client;
1309
1310                /* Detection succeeded, instantiate the device */
1311                dev_dbg(&adapter->dev, "Creating %s at 0x%02x\n",
1312                        info.type, info.addr);
1313                client = i2c_new_device(adapter, &info);
1314                if (client)
1315                        list_add_tail(&client->detected, &driver->clients);
1316                else
1317                        dev_err(&adapter->dev, "Failed creating %s at 0x%02x\n",
1318                                info.type, info.addr);
1319        }
1320        return 0;
1321}
1322
1323static int i2c_detect(struct i2c_adapter *adapter, struct i2c_driver *driver)
1324{
1325        const struct i2c_client_address_data *address_data;
1326        struct i2c_client *temp_client;
1327        int i, err = 0;
1328        int adap_id = i2c_adapter_id(adapter);
1329
1330        address_data = driver->address_data;
1331        if (!driver->detect || !address_data)
1332                return 0;
1333
1334        /* Set up a temporary client to help detect callback */
1335        temp_client = kzalloc(sizeof(struct i2c_client), GFP_KERNEL);
1336        if (!temp_client)
1337                return -ENOMEM;
1338        temp_client->adapter = adapter;
1339
1340        /* Force entries are done first, and are not affected by ignore
1341           entries */
1342        if (address_data->forces) {
1343                const unsigned short * const *forces = address_data->forces;
1344                int kind;
1345
1346                for (kind = 0; forces[kind]; kind++) {
1347                        for (i = 0; forces[kind][i] != I2C_CLIENT_END;
1348                             i += 2) {
1349                                if (forces[kind][i] == adap_id
1350                                 || forces[kind][i] == ANY_I2C_BUS) {
1351                                        dev_dbg(&adapter->dev, "found force "
1352                                                "parameter for adapter %d, "
1353                                                "addr 0x%02x, kind %d\n",
1354                                                adap_id, forces[kind][i + 1],
1355                                                kind);
1356                                        temp_client->addr = forces[kind][i + 1];
1357                                        err = i2c_detect_address(temp_client,
1358                                                kind, driver);
1359                                        if (err)
1360                                                goto exit_free;
1361                                }
1362                        }
1363                }
1364        }
1365
1366        /* Stop here if the classes do not match */
1367        if (!(adapter->class & driver->class))
1368                goto exit_free;
1369
1370        /* Stop here if we can't use SMBUS_QUICK */
1371        if (!i2c_check_functionality(adapter, I2C_FUNC_SMBUS_QUICK)) {
1372                if (address_data->probe[0] == I2C_CLIENT_END
1373                 && address_data->normal_i2c[0] == I2C_CLIENT_END)
1374                        goto exit_free;
1375
1376                dev_warn(&adapter->dev, "SMBus Quick command not supported, "
1377                         "can't probe for chips\n");
1378                err = -EOPNOTSUPP;
1379                goto exit_free;
1380        }
1381
1382        /* Probe entries are done second, and are not affected by ignore
1383           entries either */
1384        for (i = 0; address_data->probe[i] != I2C_CLIENT_END; i += 2) {
1385                if (address_data->probe[i] == adap_id
1386                 || address_data->probe[i] == ANY_I2C_BUS) {
1387                        dev_dbg(&adapter->dev, "found probe parameter for "
1388                                "adapter %d, addr 0x%02x\n", adap_id,
1389                                address_data->probe[i + 1]);
1390                        temp_client->addr = address_data->probe[i + 1];
1391                        err = i2c_detect_address(temp_client, -1, driver);
1392                        if (err)
1393                                goto exit_free;
1394                }
1395        }
1396
1397        /* Normal entries are done last, unless shadowed by an ignore entry */
1398        for (i = 0; address_data->normal_i2c[i] != I2C_CLIENT_END; i += 1) {
1399                int j, ignore;
1400
1401                ignore = 0;
1402                for (j = 0; address_data->ignore[j] != I2C_CLIENT_END;
1403                     j += 2) {
1404                        if ((address_data->ignore[j] == adap_id ||
1405                             address_data->ignore[j] == ANY_I2C_BUS)
1406                         && address_data->ignore[j + 1]
1407                            == address_data->normal_i2c[i]) {
1408                                dev_dbg(&adapter->dev, "found ignore "
1409                                        "parameter for adapter %d, "
1410                                        "addr 0x%02x\n", adap_id,
1411                                        address_data->ignore[j + 1]);
1412                                ignore = 1;
1413                                break;
1414                        }
1415                }
1416                if (ignore)
1417                        continue;
1418
1419                dev_dbg(&adapter->dev, "found normal entry for adapter %d, "
1420                        "addr 0x%02x\n", adap_id,
1421                        address_data->normal_i2c[i]);
1422                temp_client->addr = address_data->normal_i2c[i];
1423                err = i2c_detect_address(temp_client, -1, driver);
1424                if (err)
1425                        goto exit_free;
1426        }
1427
1428 exit_free:
1429        kfree(temp_client);
1430        return err;
1431}
1432
1433struct i2c_client *
1434i2c_new_probed_device(struct i2c_adapter *adap,
1435                      struct i2c_board_info *info,
1436                      unsigned short const *addr_list)
1437{
1438        int i;
1439
1440        /* Stop here if the bus doesn't support probing */
1441        if (!i2c_check_functionality(adap, I2C_FUNC_SMBUS_READ_BYTE)) {
1442                dev_err(&adap->dev, "Probing not supported\n");
1443                return NULL;
1444        }
1445
1446        for (i = 0; addr_list[i] != I2C_CLIENT_END; i++) {
1447                /* Check address validity */
1448                if (addr_list[i] < 0x03 || addr_list[i] > 0x77) {
1449                        dev_warn(&adap->dev, "Invalid 7-bit address "
1450                                 "0x%02x\n", addr_list[i]);
1451                        continue;
1452                }
1453
1454                /* Check address availability */
1455                if (i2c_check_addr(adap, addr_list[i])) {
1456                        dev_dbg(&adap->dev, "Address 0x%02x already in "
1457                                "use, not probing\n", addr_list[i]);
1458                        continue;
1459                }
1460
1461                /* Test address responsiveness
1462                   The default probe method is a quick write, but it is known
1463                   to corrupt the 24RF08 EEPROMs due to a state machine bug,
1464                   and could also irreversibly write-protect some EEPROMs, so
1465                   for address ranges 0x30-0x37 and 0x50-0x5f, we use a byte
1466                   read instead. Also, some bus drivers don't implement
1467                   quick write, so we fallback to a byte read it that case
1468                   too. */
1469                if ((addr_list[i] & ~0x07) == 0x30
1470                 || (addr_list[i] & ~0x0f) == 0x50
1471                 || !i2c_check_functionality(adap, I2C_FUNC_SMBUS_QUICK)) {
1472                        union i2c_smbus_data data;
1473
1474                        if (i2c_smbus_xfer(adap, addr_list[i], 0,
1475                                           I2C_SMBUS_READ, 0,
1476                                           I2C_SMBUS_BYTE, &data) >= 0)
1477                                break;
1478                } else {
1479                        if (i2c_smbus_xfer(adap, addr_list[i], 0,
1480                                           I2C_SMBUS_WRITE, 0,
1481                                           I2C_SMBUS_QUICK, NULL) >= 0)
1482                                break;
1483                }
1484        }
1485
1486        if (addr_list[i] == I2C_CLIENT_END) {
1487                dev_dbg(&adap->dev, "Probing failed, no device found\n");
1488                return NULL;
1489        }
1490
1491        info->addr = addr_list[i];
1492        return i2c_new_device(adap, info);
1493}
1494EXPORT_SYMBOL_GPL(i2c_new_probed_device);
1495
1496struct i2c_adapter* i2c_get_adapter(int id)
1497{
1498        struct i2c_adapter *adapter;
1499
1500        mutex_lock(&core_lock);
1501        adapter = (struct i2c_adapter *)idr_find(&i2c_adapter_idr, id);
1502        if (adapter && !try_module_get(adapter->owner))
1503                adapter = NULL;
1504
1505        mutex_unlock(&core_lock);
1506        return adapter;
1507}
1508EXPORT_SYMBOL(i2c_get_adapter);
1509
1510void i2c_put_adapter(struct i2c_adapter *adap)
1511{
1512        module_put(adap->owner);
1513}
1514EXPORT_SYMBOL(i2c_put_adapter);
1515
1516/* The SMBus parts */
1517
1518#define POLY    (0x1070U << 3)
1519static u8
1520crc8(u16 data)
1521{
1522        int i;
1523
1524        for(i = 0; i < 8; i++) {
1525                if (data & 0x8000)
1526                        data = data ^ POLY;
1527                data = data << 1;
1528        }
1529        return (u8)(data >> 8);
1530}
1531
1532/* Incremental CRC8 over count bytes in the array pointed to by p */
1533static u8 i2c_smbus_pec(u8 crc, u8 *p, size_t count)
1534{
1535        int i;
1536
1537        for(i = 0; i < count; i++)
1538                crc = crc8((crc ^ p[i]) << 8);
1539        return crc;
1540}
1541
1542/* Assume a 7-bit address, which is reasonable for SMBus */
1543static u8 i2c_smbus_msg_pec(u8 pec, struct i2c_msg *msg)
1544{
1545        /* The address will be sent first */
1546        u8 addr = (msg->addr << 1) | !!(msg->flags & I2C_M_RD);
1547        pec = i2c_smbus_pec(pec, &addr, 1);
1548
1549        /* The data buffer follows */
1550        return i2c_smbus_pec(pec, msg->buf, msg->len);
1551}
1552
1553/* Used for write only transactions */
1554static inline void i2c_smbus_add_pec(struct i2c_msg *msg)
1555{
1556        msg->buf[msg->len] = i2c_smbus_msg_pec(0, msg);
1557        msg->len++;
1558}
1559
1560/* Return <0 on CRC error
1561   If there was a write before this read (most cases) we need to take the
1562   partial CRC from the write part into account.
1563   Note that this function does modify the message (we need to decrease the
1564   message length to hide the CRC byte from the caller). */
1565static int i2c_smbus_check_pec(u8 cpec, struct i2c_msg *msg)
1566{
1567        u8 rpec = msg->buf[--msg->len];
1568        cpec = i2c_smbus_msg_pec(cpec, msg);
1569
1570        if (rpec != cpec) {
1571                pr_debug("i2c-core: Bad PEC 0x%02x vs. 0x%02x\n",
1572                        rpec, cpec);
1573                return -EBADMSG;
1574        }
1575        return 0;
1576}
1577
1578/**
1579 * i2c_smbus_read_byte - SMBus "receive byte" protocol
1580 * @client: Handle to slave device
1581 *
1582 * This executes the SMBus "receive byte" protocol, returning negative errno
1583 * else the byte received from the device.
1584 */
1585s32 i2c_smbus_read_byte(struct i2c_client *client)
1586{
1587        union i2c_smbus_data data;
1588        int status;
1589
1590        status = i2c_smbus_xfer(client->adapter, client->addr, client->flags,
1591                                I2C_SMBUS_READ, 0,
1592                                I2C_SMBUS_BYTE, &data);
1593        return (status < 0) ? status : data.byte;
1594}
1595EXPORT_SYMBOL(i2c_smbus_read_byte);
1596
1597/**
1598 * i2c_smbus_write_byte - SMBus "send byte" protocol
1599 * @client: Handle to slave device
1600 * @value: Byte to be sent
1601 *
1602 * This executes the SMBus "send byte" protocol, returning negative errno
1603 * else zero on success.
1604 */
1605s32 i2c_smbus_write_byte(struct i2c_client *client, u8 value)
1606{
1607        return i2c_smbus_xfer(client->adapter,client->addr,client->flags,
1608                              I2C_SMBUS_WRITE, value, I2C_SMBUS_BYTE, NULL);
1609}
1610EXPORT_SYMBOL(i2c_smbus_write_byte);
1611
1612/**
1613 * i2c_smbus_read_byte_data - SMBus "read byte" protocol
1614 * @client: Handle to slave device
1615 * @command: Byte interpreted by slave
1616 *
1617 * This executes the SMBus "read byte" protocol, returning negative errno
1618 * else a data byte received from the device.
1619 */
1620s32 i2c_smbus_read_byte_data(struct i2c_client *client, u8 command)
1621{
1622        union i2c_smbus_data data;
1623        int status;
1624
1625        status = i2c_smbus_xfer(client->adapter, client->addr, client->flags,
1626                                I2C_SMBUS_READ, command,
1627                                I2C_SMBUS_BYTE_DATA, &data);
1628        return (status < 0) ? status : data.byte;
1629}
1630EXPORT_SYMBOL(i2c_smbus_read_byte_data);
1631
1632/**
1633 * i2c_smbus_write_byte_data - SMBus "write byte" protocol
1634 * @client: Handle to slave device
1635 * @command: Byte interpreted by slave
1636 * @value: Byte being written
1637 *
1638 * This executes the SMBus "write byte" protocol, returning negative errno
1639 * else zero on success.
1640 */
1641s32 i2c_smbus_write_byte_data(struct i2c_client *client, u8 command, u8 value)
1642{
1643        union i2c_smbus_data data;
1644        data.byte = value;
1645        return i2c_smbus_xfer(client->adapter,client->addr,client->flags,
1646                              I2C_SMBUS_WRITE,command,
1647                              I2C_SMBUS_BYTE_DATA,&data);
1648}
1649EXPORT_SYMBOL(i2c_smbus_write_byte_data);
1650
1651/**
1652 * i2c_smbus_read_word_data - SMBus "read word" protocol
1653 * @client: Handle to slave device
1654 * @command: Byte interpreted by slave
1655 *
1656 * This executes the SMBus "read word" protocol, returning negative errno
1657 * else a 16-bit unsigned "word" received from the device.
1658 */
1659s32 i2c_smbus_read_word_data(struct i2c_client *client, u8 command)
1660{
1661        union i2c_smbus_data data;
1662        int status;
1663
1664        status = i2c_smbus_xfer(client->adapter, client->addr, client->flags,
1665                                I2C_SMBUS_READ, command,
1666                                I2C_SMBUS_WORD_DATA, &data);
1667        return (status < 0) ? status : data.word;
1668}
1669EXPORT_SYMBOL(i2c_smbus_read_word_data);
1670
1671/**
1672 * i2c_smbus_write_word_data - SMBus "write word" protocol
1673 * @client: Handle to slave device
1674 * @command: Byte interpreted by slave
1675 * @value: 16-bit "word" being written
1676 *
1677 * This executes the SMBus "write word" protocol, returning negative errno
1678 * else zero on success.
1679 */
1680s32 i2c_smbus_write_word_data(struct i2c_client *client, u8 command, u16 value)
1681{
1682        union i2c_smbus_data data;
1683        data.word = value;
1684        return i2c_smbus_xfer(client->adapter,client->addr,client->flags,
1685                              I2C_SMBUS_WRITE,command,
1686                              I2C_SMBUS_WORD_DATA,&data);
1687}
1688EXPORT_SYMBOL(i2c_smbus_write_word_data);
1689
1690/**
1691 * i2c_smbus_read_block_data - SMBus "block read" protocol
1692 * @client: Handle to slave device
1693 * @command: Byte interpreted by slave
1694 * @values: Byte array into which data will be read; big enough to hold
1695 *      the data returned by the slave.  SMBus allows at most 32 bytes.
1696 *
1697 * This executes the SMBus "block read" protocol, returning negative errno
1698 * else the number of data bytes in the slave's response.
1699 *
1700 * Note that using this function requires that the client's adapter support
1701 * the I2C_FUNC_SMBUS_READ_BLOCK_DATA functionality.  Not all adapter drivers
1702 * support this; its emulation through I2C messaging relies on a specific
1703 * mechanism (I2C_M_RECV_LEN) which may not be implemented.
1704 */
1705s32 i2c_smbus_read_block_data(struct i2c_client *client, u8 command,
1706                              u8 *values)
1707{
1708        union i2c_smbus_data data;
1709        int status;
1710
1711        status = i2c_smbus_xfer(client->adapter, client->addr, client->flags,
1712                                I2C_SMBUS_READ, command,
1713                                I2C_SMBUS_BLOCK_DATA, &data);
1714        if (status)
1715                return status;
1716
1717        memcpy(values, &data.block[1], data.block[0]);
1718        return data.block[0];
1719}
1720EXPORT_SYMBOL(i2c_smbus_read_block_data);
1721
1722/**
1723 * i2c_smbus_write_block_data - SMBus "block write" protocol
1724 * @client: Handle to slave device
1725 * @command: Byte interpreted by slave
1726 * @length: Size of data block; SMBus allows at most 32 bytes
1727 * @values: Byte array which will be written.
1728 *
1729 * This executes the SMBus "block write" protocol, returning negative errno
1730 * else zero on success.
1731 */
1732s32 i2c_smbus_write_block_data(struct i2c_client *client, u8 command,
1733                               u8 length, const u8 *values)
1734{
1735        union i2c_smbus_data data;
1736
1737        if (length > I2C_SMBUS_BLOCK_MAX)
1738                length = I2C_SMBUS_BLOCK_MAX;
1739        data.block[0] = length;
1740        memcpy(&data.block[1], values, length);
1741        return i2c_smbus_xfer(client->adapter,client->addr,client->flags,
1742                              I2C_SMBUS_WRITE,command,
1743                              I2C_SMBUS_BLOCK_DATA,&data);
1744}
1745EXPORT_SYMBOL(i2c_smbus_write_block_data);
1746
1747/* Returns the number of read bytes */
1748s32 i2c_smbus_read_i2c_block_data(struct i2c_client *client, u8 command,
1749                                  u8 length, u8 *values)
1750{
1751        union i2c_smbus_data data;
1752        int status;
1753
1754        if (length > I2C_SMBUS_BLOCK_MAX)
1755                length = I2C_SMBUS_BLOCK_MAX;
1756        data.block[0] = length;
1757        status = i2c_smbus_xfer(client->adapter, client->addr, client->flags,
1758                                I2C_SMBUS_READ, command,
1759                                I2C_SMBUS_I2C_BLOCK_DATA, &data);
1760        if (status < 0)
1761                return status;
1762
1763        memcpy(values, &data.block[1], data.block[0]);
1764        return data.block[0];
1765}
1766EXPORT_SYMBOL(i2c_smbus_read_i2c_block_data);
1767
1768s32 i2c_smbus_write_i2c_block_data(struct i2c_client *client, u8 command,
1769                                   u8 length, const u8 *values)
1770{
1771        union i2c_smbus_data data;
1772
1773        if (length > I2C_SMBUS_BLOCK_MAX)
1774                length = I2C_SMBUS_BLOCK_MAX;
1775        data.block[0] = length;
1776        memcpy(data.block + 1, values, length);
1777        return i2c_smbus_xfer(client->adapter, client->addr, client->flags,
1778                              I2C_SMBUS_WRITE, command,
1779                              I2C_SMBUS_I2C_BLOCK_DATA, &data);
1780}
1781EXPORT_SYMBOL(i2c_smbus_write_i2c_block_data);
1782
1783/* Simulate a SMBus command using the i2c protocol
1784   No checking of parameters is done!  */
1785static s32 i2c_smbus_xfer_emulated(struct i2c_adapter * adapter, u16 addr,
1786                                   unsigned short flags,
1787                                   char read_write, u8 command, int size,
1788                                   union i2c_smbus_data * data)
1789{
1790        /* So we need to generate a series of msgs. In the case of writing, we
1791          need to use only one message; when reading, we need two. We initialize
1792          most things with sane defaults, to keep the code below somewhat
1793          simpler. */
1794        unsigned char msgbuf0[I2C_SMBUS_BLOCK_MAX+3];
1795        unsigned char msgbuf1[I2C_SMBUS_BLOCK_MAX+2];
1796        int num = read_write == I2C_SMBUS_READ?2:1;
1797        struct i2c_msg msg[2] = { { addr, flags, 1, msgbuf0 },
1798                                  { addr, flags | I2C_M_RD, 0, msgbuf1 }
1799                                };
1800        int i;
1801        u8 partial_pec = 0;
1802        int status;
1803
1804        msgbuf0[0] = command;
1805        switch(size) {
1806        case I2C_SMBUS_QUICK:
1807                msg[0].len = 0;
1808                /* Special case: The read/write field is used as data */
1809                msg[0].flags = flags | (read_write == I2C_SMBUS_READ ?
1810                                        I2C_M_RD : 0);
1811                num = 1;
1812                break;
1813        case I2C_SMBUS_BYTE:
1814                if (read_write == I2C_SMBUS_READ) {
1815                        /* Special case: only a read! */
1816                        msg[0].flags = I2C_M_RD | flags;
1817                        num = 1;
1818                }
1819                break;
1820        case I2C_SMBUS_BYTE_DATA:
1821                if (read_write == I2C_SMBUS_READ)
1822                        msg[1].len = 1;
1823                else {
1824                        msg[0].len = 2;
1825                        msgbuf0[1] = data->byte;
1826                }
1827                break;
1828        case I2C_SMBUS_WORD_DATA:
1829                if (read_write == I2C_SMBUS_READ)
1830                        msg[1].len = 2;
1831                else {
1832                        msg[0].len=3;
1833                        msgbuf0[1] = data->word & 0xff;
1834                        msgbuf0[2] = data->word >> 8;
1835                }
1836                break;
1837        case I2C_SMBUS_PROC_CALL:
1838                num = 2; /* Special case */
1839                read_write = I2C_SMBUS_READ;
1840                msg[0].len = 3;
1841                msg[1].len = 2;
1842                msgbuf0[1] = data->word & 0xff;
1843                msgbuf0[2] = data->word >> 8;
1844                break;
1845        case I2C_SMBUS_BLOCK_DATA:
1846                if (read_write == I2C_SMBUS_READ) {
1847                        msg[1].flags |= I2C_M_RECV_LEN;
1848                        msg[1].len = 1; /* block length will be added by
1849                                           the underlying bus driver */
1850                } else {
1851                        msg[0].len = data->block[0] + 2;
1852                        if (msg[0].len > I2C_SMBUS_BLOCK_MAX + 2) {
1853                                dev_err(&adapter->dev,
1854                                        "Invalid block write size %d\n",
1855                                        data->block[0]);
1856                                return -EINVAL;
1857                        }
1858                        for (i = 1; i < msg[0].len; i++)
1859                                msgbuf0[i] = data->block[i-1];
1860                }
1861                break;
1862        case I2C_SMBUS_BLOCK_PROC_CALL:
1863                num = 2; /* Another special case */
1864                read_write = I2C_SMBUS_READ;
1865                if (data->block[0] > I2C_SMBUS_BLOCK_MAX) {
1866                        dev_err(&adapter->dev,
1867                                "Invalid block write size %d\n",
1868                                data->block[0]);
1869                        return -EINVAL;
1870                }
1871                msg[0].len = data->block[0] + 2;
1872                for (i = 1; i < msg[0].len; i++)
1873                        msgbuf0[i] = data->block[i-1];
1874                msg[1].flags |= I2C_M_RECV_LEN;
1875                msg[1].len = 1; /* block length will be added by
1876                                   the underlying bus driver */
1877                break;
1878        case I2C_SMBUS_I2C_BLOCK_DATA:
1879                if (read_write == I2C_SMBUS_READ) {
1880                        msg[1].len = data->block[0];
1881                } else {
1882                        msg[0].len = data->block[0] + 1;
1883                        if (msg[0].len > I2C_SMBUS_BLOCK_MAX + 1) {
1884                                dev_err(&adapter->dev,
1885                                        "Invalid block write size %d\n",
1886                                        data->block[0]);
1887                                return -EINVAL;
1888                        }
1889                        for (i = 1; i <= data->block[0]; i++)
1890                                msgbuf0[i] = data->block[i];
1891                }
1892                break;
1893        default:
1894                dev_err(&adapter->dev, "Unsupported transaction %d\n", size);
1895                return -EOPNOTSUPP;
1896        }
1897
1898        i = ((flags & I2C_CLIENT_PEC) && size != I2C_SMBUS_QUICK
1899                                      && size != I2C_SMBUS_I2C_BLOCK_DATA);
1900        if (i) {
1901                /* Compute PEC if first message is a write */
1902                if (!(msg[0].flags & I2C_M_RD)) {
1903                        if (num == 1) /* Write only */
1904                                i2c_smbus_add_pec(&msg[0]);
1905                        else /* Write followed by read */
1906                                partial_pec = i2c_smbus_msg_pec(0, &msg[0]);
1907                }
1908                /* Ask for PEC if last message is a read */
1909                if (msg[num-1].flags & I2C_M_RD)
1910                        msg[num-1].len++;
1911        }
1912
1913        status = i2c_transfer(adapter, msg, num);
1914        if (status < 0)
1915                return status;
1916
1917        /* Check PEC if last message is a read */
1918        if (i && (msg[num-1].flags & I2C_M_RD)) {
1919                status = i2c_smbus_check_pec(partial_pec, &msg[num-1]);
1920                if (status < 0)
1921                        return status;
1922        }
1923
1924        if (read_write == I2C_SMBUS_READ)
1925                switch(size) {
1926                        case I2C_SMBUS_BYTE:
1927                                data->byte = msgbuf0[0];
1928                                break;
1929                        case I2C_SMBUS_BYTE_DATA:
1930                                data->byte = msgbuf1[0];
1931                                break;
1932                        case I2C_SMBUS_WORD_DATA:
1933                        case I2C_SMBUS_PROC_CALL:
1934                                data->word = msgbuf1[0] | (msgbuf1[1] << 8);
1935                                break;
1936                        case I2C_SMBUS_I2C_BLOCK_DATA:
1937                                for (i = 0; i < data->block[0]; i++)
1938                                        data->block[i+1] = msgbuf1[i];
1939                                break;
1940                        case I2C_SMBUS_BLOCK_DATA:
1941                        case I2C_SMBUS_BLOCK_PROC_CALL:
1942                                for (i = 0; i < msgbuf1[0] + 1; i++)
1943                                        data->block[i] = msgbuf1[i];
1944                                break;
1945                }
1946        return 0;
1947}
1948
1949/**
1950 * i2c_smbus_xfer - execute SMBus protocol operations
1951 * @adapter: Handle to I2C bus
1952 * @addr: Address of SMBus slave on that bus
1953 * @flags: I2C_CLIENT_* flags (usually zero or I2C_CLIENT_PEC)
1954 * @read_write: I2C_SMBUS_READ or I2C_SMBUS_WRITE
1955 * @command: Byte interpreted by slave, for protocols which use such bytes
1956 * @protocol: SMBus protocol operation to execute, such as I2C_SMBUS_PROC_CALL
1957 * @data: Data to be read or written
1958 *
1959 * This executes an SMBus protocol operation, and returns a negative
1960 * errno code else zero on success.
1961 */
1962s32 i2c_smbus_xfer(struct i2c_adapter * adapter, u16 addr, unsigned short flags,
1963                   char read_write, u8 command, int protocol,
1964                   union i2c_smbus_data * data)
1965{
1966        s32 res;
1967
1968        flags &= I2C_M_TEN | I2C_CLIENT_PEC;
1969
1970        if (adapter->algo->smbus_xfer) {
1971                mutex_lock(&adapter->bus_lock);
1972                res = adapter->algo->smbus_xfer(adapter,addr,flags,read_write,
1973                                                command, protocol, data);
1974                mutex_unlock(&adapter->bus_lock);
1975        } else
1976                res = i2c_smbus_xfer_emulated(adapter,addr,flags,read_write,
1977                                              command, protocol, data);
1978
1979        return res;
1980}
1981EXPORT_SYMBOL(i2c_smbus_xfer);
1982
1983MODULE_AUTHOR("Simon G. Vogl <simon@tk.uni-linz.ac.at>");
1984MODULE_DESCRIPTION("I2C-Bus main module");
1985MODULE_LICENSE("GPL");
1986