]> git.karo-electronics.de Git - karo-tx-linux.git/blob - drivers/i2c/i2c-core.c
Merge remote-tracking branch 'slab/for-next'
[karo-tx-linux.git] / drivers / i2c / i2c-core.c
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., 51 Franklin Street, Fifth Floor, Boston,
18     MA 02110-1301 USA.                                                       */
19 /* ------------------------------------------------------------------------- */
20
21 /* With some changes from Kyösti Mälkki <kmalkki@cc.hut.fi>.
22    All SMBus-related things are written by Frodo Looijaard <frodol@dds.nl>
23    SMBus 2.0 support by Mark Studebaker <mdsxyz123@yahoo.com> and
24    Jean Delvare <khali@linux-fr.org>
25    Mux support by Rodolfo Giometti <giometti@enneenne.com> and
26    Michael Lawnick <michael.lawnick.ext@nsn.com> */
27
28 #include <linux/module.h>
29 #include <linux/kernel.h>
30 #include <linux/delay.h>
31 #include <linux/errno.h>
32 #include <linux/gpio.h>
33 #include <linux/slab.h>
34 #include <linux/i2c.h>
35 #include <linux/init.h>
36 #include <linux/idr.h>
37 #include <linux/mutex.h>
38 #include <linux/of_device.h>
39 #include <linux/completion.h>
40 #include <linux/hardirq.h>
41 #include <linux/irqflags.h>
42 #include <linux/rwsem.h>
43 #include <linux/pm_runtime.h>
44 #include <linux/acpi.h>
45 #include <asm/uaccess.h>
46
47 #include "i2c-core.h"
48
49
50 /* core_lock protects i2c_adapter_idr, and guarantees
51    that device detection, deletion of detected devices, and attach_adapter
52    and detach_adapter calls are serialized */
53 static DEFINE_MUTEX(core_lock);
54 static DEFINE_IDR(i2c_adapter_idr);
55
56 static struct device_type i2c_client_type;
57 static int i2c_detect(struct i2c_adapter *adapter, struct i2c_driver *driver);
58
59 /* ------------------------------------------------------------------------- */
60
61 static const struct i2c_device_id *i2c_match_id(const struct i2c_device_id *id,
62                                                 const struct i2c_client *client)
63 {
64         while (id->name[0]) {
65                 if (strcmp(client->name, id->name) == 0)
66                         return id;
67                 id++;
68         }
69         return NULL;
70 }
71
72 static int i2c_device_match(struct device *dev, struct device_driver *drv)
73 {
74         struct i2c_client       *client = i2c_verify_client(dev);
75         struct i2c_driver       *driver;
76
77         if (!client)
78                 return 0;
79
80         /* Attempt an OF style match */
81         if (of_driver_match_device(dev, drv))
82                 return 1;
83
84         /* Then ACPI style match */
85         if (acpi_driver_match_device(dev, drv))
86                 return 1;
87
88         driver = to_i2c_driver(drv);
89         /* match on an id table if there is one */
90         if (driver->id_table)
91                 return i2c_match_id(driver->id_table, client) != NULL;
92
93         return 0;
94 }
95
96 #ifdef  CONFIG_HOTPLUG
97
98 /* uevent helps with hotplug: modprobe -q $(MODALIAS) */
99 static int i2c_device_uevent(struct device *dev, struct kobj_uevent_env *env)
100 {
101         struct i2c_client       *client = to_i2c_client(dev);
102
103         if (add_uevent_var(env, "MODALIAS=%s%s",
104                            I2C_MODULE_PREFIX, client->name))
105                 return -ENOMEM;
106         dev_dbg(dev, "uevent\n");
107         return 0;
108 }
109
110 #else
111 #define i2c_device_uevent       NULL
112 #endif  /* CONFIG_HOTPLUG */
113
114 /* i2c bus recovery routines */
115 static int get_scl_gpio_value(struct i2c_adapter *adap)
116 {
117         return gpio_get_value(adap->bus_recovery_info->scl_gpio);
118 }
119
120 static void set_scl_gpio_value(struct i2c_adapter *adap, int val)
121 {
122         gpio_set_value(adap->bus_recovery_info->scl_gpio, val);
123 }
124
125 static int get_sda_gpio_value(struct i2c_adapter *adap)
126 {
127         return gpio_get_value(adap->bus_recovery_info->sda_gpio);
128 }
129
130 static int i2c_get_gpios_for_recovery(struct i2c_adapter *adap)
131 {
132         struct i2c_bus_recovery_info *bri = adap->bus_recovery_info;
133         struct device *dev = &adap->dev;
134         int ret = 0;
135
136         ret = gpio_request_one(bri->scl_gpio, GPIOF_OPEN_DRAIN |
137                         GPIOF_OUT_INIT_HIGH, "i2c-scl");
138         if (ret) {
139                 dev_warn(dev, "Can't get SCL gpio: %d\n", bri->scl_gpio);
140                 return ret;
141         }
142
143         if (bri->get_sda) {
144                 if (gpio_request_one(bri->sda_gpio, GPIOF_IN, "i2c-sda")) {
145                         /* work without SDA polling */
146                         dev_warn(dev, "Can't get SDA gpio: %d. Not using SDA polling\n",
147                                         bri->sda_gpio);
148                         bri->get_sda = NULL;
149                 }
150         }
151
152         return ret;
153 }
154
155 static void i2c_put_gpios_for_recovery(struct i2c_adapter *adap)
156 {
157         struct i2c_bus_recovery_info *bri = adap->bus_recovery_info;
158
159         if (bri->get_sda)
160                 gpio_free(bri->sda_gpio);
161
162         gpio_free(bri->scl_gpio);
163 }
164
165 /*
166  * We are generating clock pulses. ndelay() determines durating of clk pulses.
167  * We will generate clock with rate 100 KHz and so duration of both clock levels
168  * is: delay in ns = (10^6 / 100) / 2
169  */
170 #define RECOVERY_NDELAY         5000
171 #define RECOVERY_CLK_CNT        9
172
173 static int i2c_generic_recovery(struct i2c_adapter *adap)
174 {
175         struct i2c_bus_recovery_info *bri = adap->bus_recovery_info;
176         int i = 0, val = 1, ret = 0;
177
178         if (bri->prepare_recovery)
179                 bri->prepare_recovery(bri);
180
181         /*
182          * By this time SCL is high, as we need to give 9 falling-rising edges
183          */
184         while (i++ < RECOVERY_CLK_CNT * 2) {
185                 if (val) {
186                         /* Break if SDA is high */
187                         if (bri->get_sda && bri->get_sda(adap))
188                                         break;
189                         /* SCL shouldn't be low here */
190                         if (!bri->get_scl(adap)) {
191                                 dev_err(&adap->dev,
192                                         "SCL is stuck low, exit recovery\n");
193                                 ret = -EBUSY;
194                                 break;
195                         }
196                 }
197
198                 val = !val;
199                 bri->set_scl(adap, val);
200                 ndelay(RECOVERY_NDELAY);
201         }
202
203         if (bri->unprepare_recovery)
204                 bri->unprepare_recovery(bri);
205
206         return ret;
207 }
208
209 int i2c_generic_scl_recovery(struct i2c_adapter *adap)
210 {
211         adap->bus_recovery_info->set_scl(adap, 1);
212         return i2c_generic_recovery(adap);
213 }
214
215 int i2c_generic_gpio_recovery(struct i2c_adapter *adap)
216 {
217         int ret;
218
219         ret = i2c_get_gpios_for_recovery(adap);
220         if (ret)
221                 return ret;
222
223         ret = i2c_generic_recovery(adap);
224         i2c_put_gpios_for_recovery(adap);
225
226         return ret;
227 }
228
229 int i2c_recover_bus(struct i2c_adapter *adap)
230 {
231         if (!adap->bus_recovery_info)
232                 return -EOPNOTSUPP;
233
234         dev_dbg(&adap->dev, "Trying i2c bus recovery\n");
235         return adap->bus_recovery_info->recover_bus(adap);
236 }
237
238 static int i2c_device_probe(struct device *dev)
239 {
240         struct i2c_client       *client = i2c_verify_client(dev);
241         struct i2c_driver       *driver;
242         int status;
243
244         if (!client)
245                 return 0;
246
247         driver = to_i2c_driver(dev->driver);
248         if (!driver->probe || !driver->id_table)
249                 return -ENODEV;
250         client->driver = driver;
251         if (!device_can_wakeup(&client->dev))
252                 device_init_wakeup(&client->dev,
253                                         client->flags & I2C_CLIENT_WAKE);
254         dev_dbg(dev, "probe\n");
255
256         status = driver->probe(client, i2c_match_id(driver->id_table, client));
257         if (status) {
258                 client->driver = NULL;
259                 i2c_set_clientdata(client, NULL);
260         }
261         return status;
262 }
263
264 static int i2c_device_remove(struct device *dev)
265 {
266         struct i2c_client       *client = i2c_verify_client(dev);
267         struct i2c_driver       *driver;
268         int                     status;
269
270         if (!client || !dev->driver)
271                 return 0;
272
273         driver = to_i2c_driver(dev->driver);
274         if (driver->remove) {
275                 dev_dbg(dev, "remove\n");
276                 status = driver->remove(client);
277         } else {
278                 dev->driver = NULL;
279                 status = 0;
280         }
281         if (status == 0) {
282                 client->driver = NULL;
283                 i2c_set_clientdata(client, NULL);
284         }
285         return status;
286 }
287
288 static void i2c_device_shutdown(struct device *dev)
289 {
290         struct i2c_client *client = i2c_verify_client(dev);
291         struct i2c_driver *driver;
292
293         if (!client || !dev->driver)
294                 return;
295         driver = to_i2c_driver(dev->driver);
296         if (driver->shutdown)
297                 driver->shutdown(client);
298 }
299
300 #ifdef CONFIG_PM_SLEEP
301 static int i2c_legacy_suspend(struct device *dev, pm_message_t mesg)
302 {
303         struct i2c_client *client = i2c_verify_client(dev);
304         struct i2c_driver *driver;
305
306         if (!client || !dev->driver)
307                 return 0;
308         driver = to_i2c_driver(dev->driver);
309         if (!driver->suspend)
310                 return 0;
311         return driver->suspend(client, mesg);
312 }
313
314 static int i2c_legacy_resume(struct device *dev)
315 {
316         struct i2c_client *client = i2c_verify_client(dev);
317         struct i2c_driver *driver;
318
319         if (!client || !dev->driver)
320                 return 0;
321         driver = to_i2c_driver(dev->driver);
322         if (!driver->resume)
323                 return 0;
324         return driver->resume(client);
325 }
326
327 static int i2c_device_pm_suspend(struct device *dev)
328 {
329         const struct dev_pm_ops *pm = dev->driver ? dev->driver->pm : NULL;
330
331         if (pm)
332                 return pm_generic_suspend(dev);
333         else
334                 return i2c_legacy_suspend(dev, PMSG_SUSPEND);
335 }
336
337 static int i2c_device_pm_resume(struct device *dev)
338 {
339         const struct dev_pm_ops *pm = dev->driver ? dev->driver->pm : NULL;
340
341         if (pm)
342                 return pm_generic_resume(dev);
343         else
344                 return i2c_legacy_resume(dev);
345 }
346
347 static int i2c_device_pm_freeze(struct device *dev)
348 {
349         const struct dev_pm_ops *pm = dev->driver ? dev->driver->pm : NULL;
350
351         if (pm)
352                 return pm_generic_freeze(dev);
353         else
354                 return i2c_legacy_suspend(dev, PMSG_FREEZE);
355 }
356
357 static int i2c_device_pm_thaw(struct device *dev)
358 {
359         const struct dev_pm_ops *pm = dev->driver ? dev->driver->pm : NULL;
360
361         if (pm)
362                 return pm_generic_thaw(dev);
363         else
364                 return i2c_legacy_resume(dev);
365 }
366
367 static int i2c_device_pm_poweroff(struct device *dev)
368 {
369         const struct dev_pm_ops *pm = dev->driver ? dev->driver->pm : NULL;
370
371         if (pm)
372                 return pm_generic_poweroff(dev);
373         else
374                 return i2c_legacy_suspend(dev, PMSG_HIBERNATE);
375 }
376
377 static int i2c_device_pm_restore(struct device *dev)
378 {
379         const struct dev_pm_ops *pm = dev->driver ? dev->driver->pm : NULL;
380
381         if (pm)
382                 return pm_generic_restore(dev);
383         else
384                 return i2c_legacy_resume(dev);
385 }
386 #else /* !CONFIG_PM_SLEEP */
387 #define i2c_device_pm_suspend   NULL
388 #define i2c_device_pm_resume    NULL
389 #define i2c_device_pm_freeze    NULL
390 #define i2c_device_pm_thaw      NULL
391 #define i2c_device_pm_poweroff  NULL
392 #define i2c_device_pm_restore   NULL
393 #endif /* !CONFIG_PM_SLEEP */
394
395 static void i2c_client_dev_release(struct device *dev)
396 {
397         kfree(to_i2c_client(dev));
398 }
399
400 static ssize_t
401 show_name(struct device *dev, struct device_attribute *attr, char *buf)
402 {
403         return sprintf(buf, "%s\n", dev->type == &i2c_client_type ?
404                        to_i2c_client(dev)->name : to_i2c_adapter(dev)->name);
405 }
406
407 static ssize_t
408 show_modalias(struct device *dev, struct device_attribute *attr, char *buf)
409 {
410         struct i2c_client *client = to_i2c_client(dev);
411         return sprintf(buf, "%s%s\n", I2C_MODULE_PREFIX, client->name);
412 }
413
414 static DEVICE_ATTR(name, S_IRUGO, show_name, NULL);
415 static DEVICE_ATTR(modalias, S_IRUGO, show_modalias, NULL);
416
417 static struct attribute *i2c_dev_attrs[] = {
418         &dev_attr_name.attr,
419         /* modalias helps coldplug:  modprobe $(cat .../modalias) */
420         &dev_attr_modalias.attr,
421         NULL
422 };
423
424 static struct attribute_group i2c_dev_attr_group = {
425         .attrs          = i2c_dev_attrs,
426 };
427
428 static const struct attribute_group *i2c_dev_attr_groups[] = {
429         &i2c_dev_attr_group,
430         NULL
431 };
432
433 static const struct dev_pm_ops i2c_device_pm_ops = {
434         .suspend = i2c_device_pm_suspend,
435         .resume = i2c_device_pm_resume,
436         .freeze = i2c_device_pm_freeze,
437         .thaw = i2c_device_pm_thaw,
438         .poweroff = i2c_device_pm_poweroff,
439         .restore = i2c_device_pm_restore,
440         SET_RUNTIME_PM_OPS(
441                 pm_generic_runtime_suspend,
442                 pm_generic_runtime_resume,
443                 pm_generic_runtime_idle
444         )
445 };
446
447 struct bus_type i2c_bus_type = {
448         .name           = "i2c",
449         .match          = i2c_device_match,
450         .probe          = i2c_device_probe,
451         .remove         = i2c_device_remove,
452         .shutdown       = i2c_device_shutdown,
453         .pm             = &i2c_device_pm_ops,
454 };
455 EXPORT_SYMBOL_GPL(i2c_bus_type);
456
457 static struct device_type i2c_client_type = {
458         .groups         = i2c_dev_attr_groups,
459         .uevent         = i2c_device_uevent,
460         .release        = i2c_client_dev_release,
461 };
462
463
464 /**
465  * i2c_verify_client - return parameter as i2c_client, or NULL
466  * @dev: device, probably from some driver model iterator
467  *
468  * When traversing the driver model tree, perhaps using driver model
469  * iterators like @device_for_each_child(), you can't assume very much
470  * about the nodes you find.  Use this function to avoid oopses caused
471  * by wrongly treating some non-I2C device as an i2c_client.
472  */
473 struct i2c_client *i2c_verify_client(struct device *dev)
474 {
475         return (dev->type == &i2c_client_type)
476                         ? to_i2c_client(dev)
477                         : NULL;
478 }
479 EXPORT_SYMBOL(i2c_verify_client);
480
481
482 /* This is a permissive address validity check, I2C address map constraints
483  * are purposely not enforced, except for the general call address. */
484 static int i2c_check_client_addr_validity(const struct i2c_client *client)
485 {
486         if (client->flags & I2C_CLIENT_TEN) {
487                 /* 10-bit address, all values are valid */
488                 if (client->addr > 0x3ff)
489                         return -EINVAL;
490         } else {
491                 /* 7-bit address, reject the general call address */
492                 if (client->addr == 0x00 || client->addr > 0x7f)
493                         return -EINVAL;
494         }
495         return 0;
496 }
497
498 /* And this is a strict address validity check, used when probing. If a
499  * device uses a reserved address, then it shouldn't be probed. 7-bit
500  * addressing is assumed, 10-bit address devices are rare and should be
501  * explicitly enumerated. */
502 static int i2c_check_addr_validity(unsigned short addr)
503 {
504         /*
505          * Reserved addresses per I2C specification:
506          *  0x00       General call address / START byte
507          *  0x01       CBUS address
508          *  0x02       Reserved for different bus format
509          *  0x03       Reserved for future purposes
510          *  0x04-0x07  Hs-mode master code
511          *  0x78-0x7b  10-bit slave addressing
512          *  0x7c-0x7f  Reserved for future purposes
513          */
514         if (addr < 0x08 || addr > 0x77)
515                 return -EINVAL;
516         return 0;
517 }
518
519 static int __i2c_check_addr_busy(struct device *dev, void *addrp)
520 {
521         struct i2c_client       *client = i2c_verify_client(dev);
522         int                     addr = *(int *)addrp;
523
524         if (client && client->addr == addr)
525                 return -EBUSY;
526         return 0;
527 }
528
529 /* walk up mux tree */
530 static int i2c_check_mux_parents(struct i2c_adapter *adapter, int addr)
531 {
532         struct i2c_adapter *parent = i2c_parent_is_i2c_adapter(adapter);
533         int result;
534
535         result = device_for_each_child(&adapter->dev, &addr,
536                                         __i2c_check_addr_busy);
537
538         if (!result && parent)
539                 result = i2c_check_mux_parents(parent, addr);
540
541         return result;
542 }
543
544 /* recurse down mux tree */
545 static int i2c_check_mux_children(struct device *dev, void *addrp)
546 {
547         int result;
548
549         if (dev->type == &i2c_adapter_type)
550                 result = device_for_each_child(dev, addrp,
551                                                 i2c_check_mux_children);
552         else
553                 result = __i2c_check_addr_busy(dev, addrp);
554
555         return result;
556 }
557
558 static int i2c_check_addr_busy(struct i2c_adapter *adapter, int addr)
559 {
560         struct i2c_adapter *parent = i2c_parent_is_i2c_adapter(adapter);
561         int result = 0;
562
563         if (parent)
564                 result = i2c_check_mux_parents(parent, addr);
565
566         if (!result)
567                 result = device_for_each_child(&adapter->dev, &addr,
568                                                 i2c_check_mux_children);
569
570         return result;
571 }
572
573 /**
574  * i2c_lock_adapter - Get exclusive access to an I2C bus segment
575  * @adapter: Target I2C bus segment
576  */
577 void i2c_lock_adapter(struct i2c_adapter *adapter)
578 {
579         struct i2c_adapter *parent = i2c_parent_is_i2c_adapter(adapter);
580
581         if (parent)
582                 i2c_lock_adapter(parent);
583         else
584                 rt_mutex_lock(&adapter->bus_lock);
585 }
586 EXPORT_SYMBOL_GPL(i2c_lock_adapter);
587
588 /**
589  * i2c_trylock_adapter - Try to get exclusive access to an I2C bus segment
590  * @adapter: Target I2C bus segment
591  */
592 static int i2c_trylock_adapter(struct i2c_adapter *adapter)
593 {
594         struct i2c_adapter *parent = i2c_parent_is_i2c_adapter(adapter);
595
596         if (parent)
597                 return i2c_trylock_adapter(parent);
598         else
599                 return rt_mutex_trylock(&adapter->bus_lock);
600 }
601
602 /**
603  * i2c_unlock_adapter - Release exclusive access to an I2C bus segment
604  * @adapter: Target I2C bus segment
605  */
606 void i2c_unlock_adapter(struct i2c_adapter *adapter)
607 {
608         struct i2c_adapter *parent = i2c_parent_is_i2c_adapter(adapter);
609
610         if (parent)
611                 i2c_unlock_adapter(parent);
612         else
613                 rt_mutex_unlock(&adapter->bus_lock);
614 }
615 EXPORT_SYMBOL_GPL(i2c_unlock_adapter);
616
617 /**
618  * i2c_new_device - instantiate an i2c device
619  * @adap: the adapter managing the device
620  * @info: describes one I2C device; bus_num is ignored
621  * Context: can sleep
622  *
623  * Create an i2c device. Binding is handled through driver model
624  * probe()/remove() methods.  A driver may be bound to this device when we
625  * return from this function, or any later moment (e.g. maybe hotplugging will
626  * load the driver module).  This call is not appropriate for use by mainboard
627  * initialization logic, which usually runs during an arch_initcall() long
628  * before any i2c_adapter could exist.
629  *
630  * This returns the new i2c client, which may be saved for later use with
631  * i2c_unregister_device(); or NULL to indicate an error.
632  */
633 struct i2c_client *
634 i2c_new_device(struct i2c_adapter *adap, struct i2c_board_info const *info)
635 {
636         struct i2c_client       *client;
637         int                     status;
638
639         client = kzalloc(sizeof *client, GFP_KERNEL);
640         if (!client)
641                 return NULL;
642
643         client->adapter = adap;
644
645         client->dev.platform_data = info->platform_data;
646
647         if (info->archdata)
648                 client->dev.archdata = *info->archdata;
649
650         client->flags = info->flags;
651         client->addr = info->addr;
652         client->irq = info->irq;
653
654         strlcpy(client->name, info->type, sizeof(client->name));
655
656         /* Check for address validity */
657         status = i2c_check_client_addr_validity(client);
658         if (status) {
659                 dev_err(&adap->dev, "Invalid %d-bit I2C address 0x%02hx\n",
660                         client->flags & I2C_CLIENT_TEN ? 10 : 7, client->addr);
661                 goto out_err_silent;
662         }
663
664         /* Check for address business */
665         status = i2c_check_addr_busy(adap, client->addr);
666         if (status)
667                 goto out_err;
668
669         client->dev.parent = &client->adapter->dev;
670         client->dev.bus = &i2c_bus_type;
671         client->dev.type = &i2c_client_type;
672         client->dev.of_node = info->of_node;
673         ACPI_HANDLE_SET(&client->dev, info->acpi_node.handle);
674
675         /* For 10-bit clients, add an arbitrary offset to avoid collisions */
676         dev_set_name(&client->dev, "%d-%04x", i2c_adapter_id(adap),
677                      client->addr | ((client->flags & I2C_CLIENT_TEN)
678                                      ? 0xa000 : 0));
679         status = device_register(&client->dev);
680         if (status)
681                 goto out_err;
682
683         dev_dbg(&adap->dev, "client [%s] registered with bus id %s\n",
684                 client->name, dev_name(&client->dev));
685
686         return client;
687
688 out_err:
689         dev_err(&adap->dev, "Failed to register i2c client %s at 0x%02x "
690                 "(%d)\n", client->name, client->addr, status);
691 out_err_silent:
692         kfree(client);
693         return NULL;
694 }
695 EXPORT_SYMBOL_GPL(i2c_new_device);
696
697
698 /**
699  * i2c_unregister_device - reverse effect of i2c_new_device()
700  * @client: value returned from i2c_new_device()
701  * Context: can sleep
702  */
703 void i2c_unregister_device(struct i2c_client *client)
704 {
705         device_unregister(&client->dev);
706 }
707 EXPORT_SYMBOL_GPL(i2c_unregister_device);
708
709
710 static const struct i2c_device_id dummy_id[] = {
711         { "dummy", 0 },
712         { },
713 };
714
715 static int dummy_probe(struct i2c_client *client,
716                        const struct i2c_device_id *id)
717 {
718         return 0;
719 }
720
721 static int dummy_remove(struct i2c_client *client)
722 {
723         return 0;
724 }
725
726 static struct i2c_driver dummy_driver = {
727         .driver.name    = "dummy",
728         .probe          = dummy_probe,
729         .remove         = dummy_remove,
730         .id_table       = dummy_id,
731 };
732
733 /**
734  * i2c_new_dummy - return a new i2c device bound to a dummy driver
735  * @adapter: the adapter managing the device
736  * @address: seven bit address to be used
737  * Context: can sleep
738  *
739  * This returns an I2C client bound to the "dummy" driver, intended for use
740  * with devices that consume multiple addresses.  Examples of such chips
741  * include various EEPROMS (like 24c04 and 24c08 models).
742  *
743  * These dummy devices have two main uses.  First, most I2C and SMBus calls
744  * except i2c_transfer() need a client handle; the dummy will be that handle.
745  * And second, this prevents the specified address from being bound to a
746  * different driver.
747  *
748  * This returns the new i2c client, which should be saved for later use with
749  * i2c_unregister_device(); or NULL to indicate an error.
750  */
751 struct i2c_client *i2c_new_dummy(struct i2c_adapter *adapter, u16 address)
752 {
753         struct i2c_board_info info = {
754                 I2C_BOARD_INFO("dummy", address),
755         };
756
757         return i2c_new_device(adapter, &info);
758 }
759 EXPORT_SYMBOL_GPL(i2c_new_dummy);
760
761 /* ------------------------------------------------------------------------- */
762
763 /* I2C bus adapters -- one roots each I2C or SMBUS segment */
764
765 static void i2c_adapter_dev_release(struct device *dev)
766 {
767         struct i2c_adapter *adap = to_i2c_adapter(dev);
768         complete(&adap->dev_released);
769 }
770
771 /*
772  * This function is only needed for mutex_lock_nested, so it is never
773  * called unless locking correctness checking is enabled. Thus we
774  * make it inline to avoid a compiler warning. That's what gcc ends up
775  * doing anyway.
776  */
777 static inline unsigned int i2c_adapter_depth(struct i2c_adapter *adapter)
778 {
779         unsigned int depth = 0;
780
781         while ((adapter = i2c_parent_is_i2c_adapter(adapter)))
782                 depth++;
783
784         return depth;
785 }
786
787 /*
788  * Let users instantiate I2C devices through sysfs. This can be used when
789  * platform initialization code doesn't contain the proper data for
790  * whatever reason. Also useful for drivers that do device detection and
791  * detection fails, either because the device uses an unexpected address,
792  * or this is a compatible device with different ID register values.
793  *
794  * Parameter checking may look overzealous, but we really don't want
795  * the user to provide incorrect parameters.
796  */
797 static ssize_t
798 i2c_sysfs_new_device(struct device *dev, struct device_attribute *attr,
799                      const char *buf, size_t count)
800 {
801         struct i2c_adapter *adap = to_i2c_adapter(dev);
802         struct i2c_board_info info;
803         struct i2c_client *client;
804         char *blank, end;
805         int res;
806
807         memset(&info, 0, sizeof(struct i2c_board_info));
808
809         blank = strchr(buf, ' ');
810         if (!blank) {
811                 dev_err(dev, "%s: Missing parameters\n", "new_device");
812                 return -EINVAL;
813         }
814         if (blank - buf > I2C_NAME_SIZE - 1) {
815                 dev_err(dev, "%s: Invalid device name\n", "new_device");
816                 return -EINVAL;
817         }
818         memcpy(info.type, buf, blank - buf);
819
820         /* Parse remaining parameters, reject extra parameters */
821         res = sscanf(++blank, "%hi%c", &info.addr, &end);
822         if (res < 1) {
823                 dev_err(dev, "%s: Can't parse I2C address\n", "new_device");
824                 return -EINVAL;
825         }
826         if (res > 1  && end != '\n') {
827                 dev_err(dev, "%s: Extra parameters\n", "new_device");
828                 return -EINVAL;
829         }
830
831         client = i2c_new_device(adap, &info);
832         if (!client)
833                 return -EINVAL;
834
835         /* Keep track of the added device */
836         mutex_lock(&adap->userspace_clients_lock);
837         list_add_tail(&client->detected, &adap->userspace_clients);
838         mutex_unlock(&adap->userspace_clients_lock);
839         dev_info(dev, "%s: Instantiated device %s at 0x%02hx\n", "new_device",
840                  info.type, info.addr);
841
842         return count;
843 }
844
845 /*
846  * And of course let the users delete the devices they instantiated, if
847  * they got it wrong. This interface can only be used to delete devices
848  * instantiated by i2c_sysfs_new_device above. This guarantees that we
849  * don't delete devices to which some kernel code still has references.
850  *
851  * Parameter checking may look overzealous, but we really don't want
852  * the user to delete the wrong device.
853  */
854 static ssize_t
855 i2c_sysfs_delete_device(struct device *dev, struct device_attribute *attr,
856                         const char *buf, size_t count)
857 {
858         struct i2c_adapter *adap = to_i2c_adapter(dev);
859         struct i2c_client *client, *next;
860         unsigned short addr;
861         char end;
862         int res;
863
864         /* Parse parameters, reject extra parameters */
865         res = sscanf(buf, "%hi%c", &addr, &end);
866         if (res < 1) {
867                 dev_err(dev, "%s: Can't parse I2C address\n", "delete_device");
868                 return -EINVAL;
869         }
870         if (res > 1  && end != '\n') {
871                 dev_err(dev, "%s: Extra parameters\n", "delete_device");
872                 return -EINVAL;
873         }
874
875         /* Make sure the device was added through sysfs */
876         res = -ENOENT;
877         mutex_lock_nested(&adap->userspace_clients_lock,
878                           i2c_adapter_depth(adap));
879         list_for_each_entry_safe(client, next, &adap->userspace_clients,
880                                  detected) {
881                 if (client->addr == addr) {
882                         dev_info(dev, "%s: Deleting device %s at 0x%02hx\n",
883                                  "delete_device", client->name, client->addr);
884
885                         list_del(&client->detected);
886                         i2c_unregister_device(client);
887                         res = count;
888                         break;
889                 }
890         }
891         mutex_unlock(&adap->userspace_clients_lock);
892
893         if (res < 0)
894                 dev_err(dev, "%s: Can't find device in list\n",
895                         "delete_device");
896         return res;
897 }
898
899 static DEVICE_ATTR(new_device, S_IWUSR, NULL, i2c_sysfs_new_device);
900 static DEVICE_ATTR(delete_device, S_IWUSR, NULL, i2c_sysfs_delete_device);
901
902 static struct attribute *i2c_adapter_attrs[] = {
903         &dev_attr_name.attr,
904         &dev_attr_new_device.attr,
905         &dev_attr_delete_device.attr,
906         NULL
907 };
908
909 static struct attribute_group i2c_adapter_attr_group = {
910         .attrs          = i2c_adapter_attrs,
911 };
912
913 static const struct attribute_group *i2c_adapter_attr_groups[] = {
914         &i2c_adapter_attr_group,
915         NULL
916 };
917
918 struct device_type i2c_adapter_type = {
919         .groups         = i2c_adapter_attr_groups,
920         .release        = i2c_adapter_dev_release,
921 };
922 EXPORT_SYMBOL_GPL(i2c_adapter_type);
923
924 /**
925  * i2c_verify_adapter - return parameter as i2c_adapter or NULL
926  * @dev: device, probably from some driver model iterator
927  *
928  * When traversing the driver model tree, perhaps using driver model
929  * iterators like @device_for_each_child(), you can't assume very much
930  * about the nodes you find.  Use this function to avoid oopses caused
931  * by wrongly treating some non-I2C device as an i2c_adapter.
932  */
933 struct i2c_adapter *i2c_verify_adapter(struct device *dev)
934 {
935         return (dev->type == &i2c_adapter_type)
936                         ? to_i2c_adapter(dev)
937                         : NULL;
938 }
939 EXPORT_SYMBOL(i2c_verify_adapter);
940
941 #ifdef CONFIG_I2C_COMPAT
942 static struct class_compat *i2c_adapter_compat_class;
943 #endif
944
945 static void i2c_scan_static_board_info(struct i2c_adapter *adapter)
946 {
947         struct i2c_devinfo      *devinfo;
948
949         down_read(&__i2c_board_lock);
950         list_for_each_entry(devinfo, &__i2c_board_list, list) {
951                 if (devinfo->busnum == adapter->nr
952                                 && !i2c_new_device(adapter,
953                                                 &devinfo->board_info))
954                         dev_err(&adapter->dev,
955                                 "Can't create device at 0x%02x\n",
956                                 devinfo->board_info.addr);
957         }
958         up_read(&__i2c_board_lock);
959 }
960
961 static int i2c_do_add_adapter(struct i2c_driver *driver,
962                               struct i2c_adapter *adap)
963 {
964         /* Detect supported devices on that bus, and instantiate them */
965         i2c_detect(adap, driver);
966
967         /* Let legacy drivers scan this bus for matching devices */
968         if (driver->attach_adapter) {
969                 dev_warn(&adap->dev, "%s: attach_adapter method is deprecated\n",
970                          driver->driver.name);
971                 dev_warn(&adap->dev, "Please use another way to instantiate "
972                          "your i2c_client\n");
973                 /* We ignore the return code; if it fails, too bad */
974                 driver->attach_adapter(adap);
975         }
976         return 0;
977 }
978
979 static int __process_new_adapter(struct device_driver *d, void *data)
980 {
981         return i2c_do_add_adapter(to_i2c_driver(d), data);
982 }
983
984 static int i2c_register_adapter(struct i2c_adapter *adap)
985 {
986         int res = 0;
987
988         /* Can't register until after driver model init */
989         if (unlikely(WARN_ON(!i2c_bus_type.p))) {
990                 res = -EAGAIN;
991                 goto out_list;
992         }
993
994         /* Sanity checks */
995         if (unlikely(adap->name[0] == '\0')) {
996                 pr_err("i2c-core: Attempt to register an adapter with "
997                        "no name!\n");
998                 return -EINVAL;
999         }
1000         if (unlikely(!adap->algo)) {
1001                 pr_err("i2c-core: Attempt to register adapter '%s' with "
1002                        "no algo!\n", adap->name);
1003                 return -EINVAL;
1004         }
1005
1006         rt_mutex_init(&adap->bus_lock);
1007         mutex_init(&adap->userspace_clients_lock);
1008         INIT_LIST_HEAD(&adap->userspace_clients);
1009
1010         /* Set default timeout to 1 second if not already set */
1011         if (adap->timeout == 0)
1012                 adap->timeout = HZ;
1013
1014         dev_set_name(&adap->dev, "i2c-%d", adap->nr);
1015         adap->dev.bus = &i2c_bus_type;
1016         adap->dev.type = &i2c_adapter_type;
1017         res = device_register(&adap->dev);
1018         if (res)
1019                 goto out_list;
1020
1021         dev_dbg(&adap->dev, "adapter [%s] registered\n", adap->name);
1022
1023 #ifdef CONFIG_I2C_COMPAT
1024         res = class_compat_create_link(i2c_adapter_compat_class, &adap->dev,
1025                                        adap->dev.parent);
1026         if (res)
1027                 dev_warn(&adap->dev,
1028                          "Failed to create compatibility class link\n");
1029 #endif
1030
1031         /* bus recovery specific initialization */
1032         if (adap->bus_recovery_info) {
1033                 struct i2c_bus_recovery_info *bri = adap->bus_recovery_info;
1034
1035                 if (!bri->recover_bus) {
1036                         dev_err(&adap->dev, "No recover_bus() found, not using recovery\n");
1037                         adap->bus_recovery_info = NULL;
1038                         goto exit_recovery;
1039                 }
1040
1041                 /* Generic GPIO recovery */
1042                 if (bri->recover_bus == i2c_generic_gpio_recovery) {
1043                         if (!gpio_is_valid(bri->scl_gpio)) {
1044                                 dev_err(&adap->dev, "Invalid SCL gpio, not using recovery\n");
1045                                 adap->bus_recovery_info = NULL;
1046                                 goto exit_recovery;
1047                         }
1048
1049                         if (gpio_is_valid(bri->sda_gpio))
1050                                 bri->get_sda = get_sda_gpio_value;
1051                         else
1052                                 bri->get_sda = NULL;
1053
1054                         bri->get_scl = get_scl_gpio_value;
1055                         bri->set_scl = set_scl_gpio_value;
1056                 } else if (!bri->set_scl || !bri->get_scl) {
1057                         /* Generic SCL recovery */
1058                         dev_err(&adap->dev, "No {get|set}_gpio() found, not using recovery\n");
1059                         adap->bus_recovery_info = NULL;
1060                 }
1061         }
1062
1063 exit_recovery:
1064         /* create pre-declared device nodes */
1065         if (adap->nr < __i2c_first_dynamic_bus_num)
1066                 i2c_scan_static_board_info(adap);
1067
1068         /* Notify drivers */
1069         mutex_lock(&core_lock);
1070         bus_for_each_drv(&i2c_bus_type, NULL, adap, __process_new_adapter);
1071         mutex_unlock(&core_lock);
1072
1073         return 0;
1074
1075 out_list:
1076         mutex_lock(&core_lock);
1077         idr_remove(&i2c_adapter_idr, adap->nr);
1078         mutex_unlock(&core_lock);
1079         return res;
1080 }
1081
1082 /**
1083  * __i2c_add_numbered_adapter - i2c_add_numbered_adapter where nr is never -1
1084  * @adap: the adapter to register (with adap->nr initialized)
1085  * Context: can sleep
1086  *
1087  * See i2c_add_numbered_adapter() for details.
1088  */
1089 static int __i2c_add_numbered_adapter(struct i2c_adapter *adap)
1090 {
1091         int     id;
1092
1093         mutex_lock(&core_lock);
1094         id = idr_alloc(&i2c_adapter_idr, adap, adap->nr, adap->nr + 1,
1095                        GFP_KERNEL);
1096         mutex_unlock(&core_lock);
1097         if (id < 0)
1098                 return id == -ENOSPC ? -EBUSY : id;
1099
1100         return i2c_register_adapter(adap);
1101 }
1102
1103 /**
1104  * i2c_add_adapter - declare i2c adapter, use dynamic bus number
1105  * @adapter: the adapter to add
1106  * Context: can sleep
1107  *
1108  * This routine is used to declare an I2C adapter when its bus number
1109  * doesn't matter or when its bus number is specified by an dt alias.
1110  * Examples of bases when the bus number doesn't matter: I2C adapters
1111  * dynamically added by USB links or PCI plugin cards.
1112  *
1113  * When this returns zero, a new bus number was allocated and stored
1114  * in adap->nr, and the specified adapter became available for clients.
1115  * Otherwise, a negative errno value is returned.
1116  */
1117 int i2c_add_adapter(struct i2c_adapter *adapter)
1118 {
1119         struct device *dev = &adapter->dev;
1120         int id;
1121
1122         if (dev->of_node) {
1123                 id = of_alias_get_id(dev->of_node, "i2c");
1124                 if (id >= 0) {
1125                         adapter->nr = id;
1126                         return __i2c_add_numbered_adapter(adapter);
1127                 }
1128         }
1129
1130         mutex_lock(&core_lock);
1131         id = idr_alloc(&i2c_adapter_idr, adapter,
1132                        __i2c_first_dynamic_bus_num, 0, GFP_KERNEL);
1133         mutex_unlock(&core_lock);
1134         if (id < 0)
1135                 return id;
1136
1137         adapter->nr = id;
1138
1139         return i2c_register_adapter(adapter);
1140 }
1141 EXPORT_SYMBOL(i2c_add_adapter);
1142
1143 /**
1144  * i2c_add_numbered_adapter - declare i2c adapter, use static bus number
1145  * @adap: the adapter to register (with adap->nr initialized)
1146  * Context: can sleep
1147  *
1148  * This routine is used to declare an I2C adapter when its bus number
1149  * matters.  For example, use it for I2C adapters from system-on-chip CPUs,
1150  * or otherwise built in to the system's mainboard, and where i2c_board_info
1151  * is used to properly configure I2C devices.
1152  *
1153  * If the requested bus number is set to -1, then this function will behave
1154  * identically to i2c_add_adapter, and will dynamically assign a bus number.
1155  *
1156  * If no devices have pre-been declared for this bus, then be sure to
1157  * register the adapter before any dynamically allocated ones.  Otherwise
1158  * the required bus ID may not be available.
1159  *
1160  * When this returns zero, the specified adapter became available for
1161  * clients using the bus number provided in adap->nr.  Also, the table
1162  * of I2C devices pre-declared using i2c_register_board_info() is scanned,
1163  * and the appropriate driver model device nodes are created.  Otherwise, a
1164  * negative errno value is returned.
1165  */
1166 int i2c_add_numbered_adapter(struct i2c_adapter *adap)
1167 {
1168         if (adap->nr == -1) /* -1 means dynamically assign bus id */
1169                 return i2c_add_adapter(adap);
1170
1171         return __i2c_add_numbered_adapter(adap);
1172 }
1173 EXPORT_SYMBOL_GPL(i2c_add_numbered_adapter);
1174
1175 static int i2c_do_del_adapter(struct i2c_driver *driver,
1176                               struct i2c_adapter *adapter)
1177 {
1178         struct i2c_client *client, *_n;
1179         int res;
1180
1181         /* Remove the devices we created ourselves as the result of hardware
1182          * probing (using a driver's detect method) */
1183         list_for_each_entry_safe(client, _n, &driver->clients, detected) {
1184                 if (client->adapter == adapter) {
1185                         dev_dbg(&adapter->dev, "Removing %s at 0x%x\n",
1186                                 client->name, client->addr);
1187                         list_del(&client->detected);
1188                         i2c_unregister_device(client);
1189                 }
1190         }
1191
1192         if (!driver->detach_adapter)
1193                 return 0;
1194         dev_warn(&adapter->dev, "%s: detach_adapter method is deprecated\n",
1195                  driver->driver.name);
1196         res = driver->detach_adapter(adapter);
1197         if (res)
1198                 dev_err(&adapter->dev, "detach_adapter failed (%d) "
1199                         "for driver [%s]\n", res, driver->driver.name);
1200         return res;
1201 }
1202
1203 static int __unregister_client(struct device *dev, void *dummy)
1204 {
1205         struct i2c_client *client = i2c_verify_client(dev);
1206         if (client && strcmp(client->name, "dummy"))
1207                 i2c_unregister_device(client);
1208         return 0;
1209 }
1210
1211 static int __unregister_dummy(struct device *dev, void *dummy)
1212 {
1213         struct i2c_client *client = i2c_verify_client(dev);
1214         if (client)
1215                 i2c_unregister_device(client);
1216         return 0;
1217 }
1218
1219 static int __process_removed_adapter(struct device_driver *d, void *data)
1220 {
1221         return i2c_do_del_adapter(to_i2c_driver(d), data);
1222 }
1223
1224 /**
1225  * i2c_del_adapter - unregister I2C adapter
1226  * @adap: the adapter being unregistered
1227  * Context: can sleep
1228  *
1229  * This unregisters an I2C adapter which was previously registered
1230  * by @i2c_add_adapter or @i2c_add_numbered_adapter.
1231  */
1232 int i2c_del_adapter(struct i2c_adapter *adap)
1233 {
1234         int res = 0;
1235         struct i2c_adapter *found;
1236         struct i2c_client *client, *next;
1237
1238         /* First make sure that this adapter was ever added */
1239         mutex_lock(&core_lock);
1240         found = idr_find(&i2c_adapter_idr, adap->nr);
1241         mutex_unlock(&core_lock);
1242         if (found != adap) {
1243                 pr_debug("i2c-core: attempting to delete unregistered "
1244                          "adapter [%s]\n", adap->name);
1245                 return -EINVAL;
1246         }
1247
1248         /* Tell drivers about this removal */
1249         mutex_lock(&core_lock);
1250         res = bus_for_each_drv(&i2c_bus_type, NULL, adap,
1251                                __process_removed_adapter);
1252         mutex_unlock(&core_lock);
1253         if (res)
1254                 return res;
1255
1256         /* Remove devices instantiated from sysfs */
1257         mutex_lock_nested(&adap->userspace_clients_lock,
1258                           i2c_adapter_depth(adap));
1259         list_for_each_entry_safe(client, next, &adap->userspace_clients,
1260                                  detected) {
1261                 dev_dbg(&adap->dev, "Removing %s at 0x%x\n", client->name,
1262                         client->addr);
1263                 list_del(&client->detected);
1264                 i2c_unregister_device(client);
1265         }
1266         mutex_unlock(&adap->userspace_clients_lock);
1267
1268         /* Detach any active clients. This can't fail, thus we do not
1269          * check the returned value. This is a two-pass process, because
1270          * we can't remove the dummy devices during the first pass: they
1271          * could have been instantiated by real devices wishing to clean
1272          * them up properly, so we give them a chance to do that first. */
1273         res = device_for_each_child(&adap->dev, NULL, __unregister_client);
1274         res = device_for_each_child(&adap->dev, NULL, __unregister_dummy);
1275
1276 #ifdef CONFIG_I2C_COMPAT
1277         class_compat_remove_link(i2c_adapter_compat_class, &adap->dev,
1278                                  adap->dev.parent);
1279 #endif
1280
1281         /* device name is gone after device_unregister */
1282         dev_dbg(&adap->dev, "adapter [%s] unregistered\n", adap->name);
1283
1284         /* clean up the sysfs representation */
1285         init_completion(&adap->dev_released);
1286         device_unregister(&adap->dev);
1287
1288         /* wait for sysfs to drop all references */
1289         wait_for_completion(&adap->dev_released);
1290
1291         /* free bus id */
1292         mutex_lock(&core_lock);
1293         idr_remove(&i2c_adapter_idr, adap->nr);
1294         mutex_unlock(&core_lock);
1295
1296         /* Clear the device structure in case this adapter is ever going to be
1297            added again */
1298         memset(&adap->dev, 0, sizeof(adap->dev));
1299
1300         return 0;
1301 }
1302 EXPORT_SYMBOL(i2c_del_adapter);
1303
1304
1305 /* ------------------------------------------------------------------------- */
1306
1307 int i2c_for_each_dev(void *data, int (*fn)(struct device *, void *))
1308 {
1309         int res;
1310
1311         mutex_lock(&core_lock);
1312         res = bus_for_each_dev(&i2c_bus_type, NULL, data, fn);
1313         mutex_unlock(&core_lock);
1314
1315         return res;
1316 }
1317 EXPORT_SYMBOL_GPL(i2c_for_each_dev);
1318
1319 static int __process_new_driver(struct device *dev, void *data)
1320 {
1321         if (dev->type != &i2c_adapter_type)
1322                 return 0;
1323         return i2c_do_add_adapter(data, to_i2c_adapter(dev));
1324 }
1325
1326 /*
1327  * An i2c_driver is used with one or more i2c_client (device) nodes to access
1328  * i2c slave chips, on a bus instance associated with some i2c_adapter.
1329  */
1330
1331 int i2c_register_driver(struct module *owner, struct i2c_driver *driver)
1332 {
1333         int res;
1334
1335         /* Can't register until after driver model init */
1336         if (unlikely(WARN_ON(!i2c_bus_type.p)))
1337                 return -EAGAIN;
1338
1339         /* add the driver to the list of i2c drivers in the driver core */
1340         driver->driver.owner = owner;
1341         driver->driver.bus = &i2c_bus_type;
1342
1343         /* When registration returns, the driver core
1344          * will have called probe() for all matching-but-unbound devices.
1345          */
1346         res = driver_register(&driver->driver);
1347         if (res)
1348                 return res;
1349
1350         /* Drivers should switch to dev_pm_ops instead. */
1351         if (driver->suspend)
1352                 pr_warn("i2c-core: driver [%s] using legacy suspend method\n",
1353                         driver->driver.name);
1354         if (driver->resume)
1355                 pr_warn("i2c-core: driver [%s] using legacy resume method\n",
1356                         driver->driver.name);
1357
1358         pr_debug("i2c-core: driver [%s] registered\n", driver->driver.name);
1359
1360         INIT_LIST_HEAD(&driver->clients);
1361         /* Walk the adapters that are already present */
1362         i2c_for_each_dev(driver, __process_new_driver);
1363
1364         return 0;
1365 }
1366 EXPORT_SYMBOL(i2c_register_driver);
1367
1368 static int __process_removed_driver(struct device *dev, void *data)
1369 {
1370         if (dev->type != &i2c_adapter_type)
1371                 return 0;
1372         return i2c_do_del_adapter(data, to_i2c_adapter(dev));
1373 }
1374
1375 /**
1376  * i2c_del_driver - unregister I2C driver
1377  * @driver: the driver being unregistered
1378  * Context: can sleep
1379  */
1380 void i2c_del_driver(struct i2c_driver *driver)
1381 {
1382         i2c_for_each_dev(driver, __process_removed_driver);
1383
1384         driver_unregister(&driver->driver);
1385         pr_debug("i2c-core: driver [%s] unregistered\n", driver->driver.name);
1386 }
1387 EXPORT_SYMBOL(i2c_del_driver);
1388
1389 /* ------------------------------------------------------------------------- */
1390
1391 /**
1392  * i2c_use_client - increments the reference count of the i2c client structure
1393  * @client: the client being referenced
1394  *
1395  * Each live reference to a client should be refcounted. The driver model does
1396  * that automatically as part of driver binding, so that most drivers don't
1397  * need to do this explicitly: they hold a reference until they're unbound
1398  * from the device.
1399  *
1400  * A pointer to the client with the incremented reference counter is returned.
1401  */
1402 struct i2c_client *i2c_use_client(struct i2c_client *client)
1403 {
1404         if (client && get_device(&client->dev))
1405                 return client;
1406         return NULL;
1407 }
1408 EXPORT_SYMBOL(i2c_use_client);
1409
1410 /**
1411  * i2c_release_client - release a use of the i2c client structure
1412  * @client: the client being no longer referenced
1413  *
1414  * Must be called when a user of a client is finished with it.
1415  */
1416 void i2c_release_client(struct i2c_client *client)
1417 {
1418         if (client)
1419                 put_device(&client->dev);
1420 }
1421 EXPORT_SYMBOL(i2c_release_client);
1422
1423 struct i2c_cmd_arg {
1424         unsigned        cmd;
1425         void            *arg;
1426 };
1427
1428 static int i2c_cmd(struct device *dev, void *_arg)
1429 {
1430         struct i2c_client       *client = i2c_verify_client(dev);
1431         struct i2c_cmd_arg      *arg = _arg;
1432
1433         if (client && client->driver && client->driver->command)
1434                 client->driver->command(client, arg->cmd, arg->arg);
1435         return 0;
1436 }
1437
1438 void i2c_clients_command(struct i2c_adapter *adap, unsigned int cmd, void *arg)
1439 {
1440         struct i2c_cmd_arg      cmd_arg;
1441
1442         cmd_arg.cmd = cmd;
1443         cmd_arg.arg = arg;
1444         device_for_each_child(&adap->dev, &cmd_arg, i2c_cmd);
1445 }
1446 EXPORT_SYMBOL(i2c_clients_command);
1447
1448 static int __init i2c_init(void)
1449 {
1450         int retval;
1451
1452         retval = bus_register(&i2c_bus_type);
1453         if (retval)
1454                 return retval;
1455 #ifdef CONFIG_I2C_COMPAT
1456         i2c_adapter_compat_class = class_compat_register("i2c-adapter");
1457         if (!i2c_adapter_compat_class) {
1458                 retval = -ENOMEM;
1459                 goto bus_err;
1460         }
1461 #endif
1462         retval = i2c_add_driver(&dummy_driver);
1463         if (retval)
1464                 goto class_err;
1465         return 0;
1466
1467 class_err:
1468 #ifdef CONFIG_I2C_COMPAT
1469         class_compat_unregister(i2c_adapter_compat_class);
1470 bus_err:
1471 #endif
1472         bus_unregister(&i2c_bus_type);
1473         return retval;
1474 }
1475
1476 static void __exit i2c_exit(void)
1477 {
1478         i2c_del_driver(&dummy_driver);
1479 #ifdef CONFIG_I2C_COMPAT
1480         class_compat_unregister(i2c_adapter_compat_class);
1481 #endif
1482         bus_unregister(&i2c_bus_type);
1483 }
1484
1485 /* We must initialize early, because some subsystems register i2c drivers
1486  * in subsys_initcall() code, but are linked (and initialized) before i2c.
1487  */
1488 postcore_initcall(i2c_init);
1489 module_exit(i2c_exit);
1490
1491 /* ----------------------------------------------------
1492  * the functional interface to the i2c busses.
1493  * ----------------------------------------------------
1494  */
1495
1496 /**
1497  * __i2c_transfer - unlocked flavor of i2c_transfer
1498  * @adap: Handle to I2C bus
1499  * @msgs: One or more messages to execute before STOP is issued to
1500  *      terminate the operation; each message begins with a START.
1501  * @num: Number of messages to be executed.
1502  *
1503  * Returns negative errno, else the number of messages executed.
1504  *
1505  * Adapter lock must be held when calling this function. No debug logging
1506  * takes place. adap->algo->master_xfer existence isn't checked.
1507  */
1508 int __i2c_transfer(struct i2c_adapter *adap, struct i2c_msg *msgs, int num)
1509 {
1510         unsigned long orig_jiffies;
1511         int ret, try;
1512
1513         /* Retry automatically on arbitration loss */
1514         orig_jiffies = jiffies;
1515         for (ret = 0, try = 0; try <= adap->retries; try++) {
1516                 ret = adap->algo->master_xfer(adap, msgs, num);
1517                 if (ret != -EAGAIN)
1518                         break;
1519                 if (time_after(jiffies, orig_jiffies + adap->timeout))
1520                         break;
1521         }
1522
1523         return ret;
1524 }
1525 EXPORT_SYMBOL(__i2c_transfer);
1526
1527 /**
1528  * i2c_transfer - execute a single or combined I2C message
1529  * @adap: Handle to I2C bus
1530  * @msgs: One or more messages to execute before STOP is issued to
1531  *      terminate the operation; each message begins with a START.
1532  * @num: Number of messages to be executed.
1533  *
1534  * Returns negative errno, else the number of messages executed.
1535  *
1536  * Note that there is no requirement that each message be sent to
1537  * the same slave address, although that is the most common model.
1538  */
1539 int i2c_transfer(struct i2c_adapter *adap, struct i2c_msg *msgs, int num)
1540 {
1541         int ret;
1542
1543         /* REVISIT the fault reporting model here is weak:
1544          *
1545          *  - When we get an error after receiving N bytes from a slave,
1546          *    there is no way to report "N".
1547          *
1548          *  - When we get a NAK after transmitting N bytes to a slave,
1549          *    there is no way to report "N" ... or to let the master
1550          *    continue executing the rest of this combined message, if
1551          *    that's the appropriate response.
1552          *
1553          *  - When for example "num" is two and we successfully complete
1554          *    the first message but get an error part way through the
1555          *    second, it's unclear whether that should be reported as
1556          *    one (discarding status on the second message) or errno
1557          *    (discarding status on the first one).
1558          */
1559
1560         if (adap->algo->master_xfer) {
1561 #ifdef DEBUG
1562                 for (ret = 0; ret < num; ret++) {
1563                         dev_dbg(&adap->dev, "master_xfer[%d] %c, addr=0x%02x, "
1564                                 "len=%d%s\n", ret, (msgs[ret].flags & I2C_M_RD)
1565                                 ? 'R' : 'W', msgs[ret].addr, msgs[ret].len,
1566                                 (msgs[ret].flags & I2C_M_RECV_LEN) ? "+" : "");
1567                 }
1568 #endif
1569
1570                 if (in_atomic() || irqs_disabled()) {
1571                         ret = i2c_trylock_adapter(adap);
1572                         if (!ret)
1573                                 /* I2C activity is ongoing. */
1574                                 return -EAGAIN;
1575                 } else {
1576                         i2c_lock_adapter(adap);
1577                 }
1578
1579                 ret = __i2c_transfer(adap, msgs, num);
1580                 i2c_unlock_adapter(adap);
1581
1582                 return ret;
1583         } else {
1584                 dev_dbg(&adap->dev, "I2C level transfers not supported\n");
1585                 return -EOPNOTSUPP;
1586         }
1587 }
1588 EXPORT_SYMBOL(i2c_transfer);
1589
1590 /**
1591  * i2c_master_send - issue a single I2C message in master transmit mode
1592  * @client: Handle to slave device
1593  * @buf: Data that will be written to the slave
1594  * @count: How many bytes to write, must be less than 64k since msg.len is u16
1595  *
1596  * Returns negative errno, or else the number of bytes written.
1597  */
1598 int i2c_master_send(const struct i2c_client *client, const char *buf, int count)
1599 {
1600         int ret;
1601         struct i2c_adapter *adap = client->adapter;
1602         struct i2c_msg msg;
1603
1604         msg.addr = client->addr;
1605         msg.flags = client->flags & I2C_M_TEN;
1606         msg.len = count;
1607         msg.buf = (char *)buf;
1608
1609         ret = i2c_transfer(adap, &msg, 1);
1610
1611         /*
1612          * If everything went ok (i.e. 1 msg transmitted), return #bytes
1613          * transmitted, else error code.
1614          */
1615         return (ret == 1) ? count : ret;
1616 }
1617 EXPORT_SYMBOL(i2c_master_send);
1618
1619 /**
1620  * i2c_master_recv - issue a single I2C message in master receive mode
1621  * @client: Handle to slave device
1622  * @buf: Where to store data read from slave
1623  * @count: How many bytes to read, must be less than 64k since msg.len is u16
1624  *
1625  * Returns negative errno, or else the number of bytes read.
1626  */
1627 int i2c_master_recv(const struct i2c_client *client, char *buf, int count)
1628 {
1629         struct i2c_adapter *adap = client->adapter;
1630         struct i2c_msg msg;
1631         int ret;
1632
1633         msg.addr = client->addr;
1634         msg.flags = client->flags & I2C_M_TEN;
1635         msg.flags |= I2C_M_RD;
1636         msg.len = count;
1637         msg.buf = buf;
1638
1639         ret = i2c_transfer(adap, &msg, 1);
1640
1641         /*
1642          * If everything went ok (i.e. 1 msg received), return #bytes received,
1643          * else error code.
1644          */
1645         return (ret == 1) ? count : ret;
1646 }
1647 EXPORT_SYMBOL(i2c_master_recv);
1648
1649 /* ----------------------------------------------------
1650  * the i2c address scanning function
1651  * Will not work for 10-bit addresses!
1652  * ----------------------------------------------------
1653  */
1654
1655 /*
1656  * Legacy default probe function, mostly relevant for SMBus. The default
1657  * probe method is a quick write, but it is known to corrupt the 24RF08
1658  * EEPROMs due to a state machine bug, and could also irreversibly
1659  * write-protect some EEPROMs, so for address ranges 0x30-0x37 and 0x50-0x5f,
1660  * we use a short byte read instead. Also, some bus drivers don't implement
1661  * quick write, so we fallback to a byte read in that case too.
1662  * On x86, there is another special case for FSC hardware monitoring chips,
1663  * which want regular byte reads (address 0x73.) Fortunately, these are the
1664  * only known chips using this I2C address on PC hardware.
1665  * Returns 1 if probe succeeded, 0 if not.
1666  */
1667 static int i2c_default_probe(struct i2c_adapter *adap, unsigned short addr)
1668 {
1669         int err;
1670         union i2c_smbus_data dummy;
1671
1672 #ifdef CONFIG_X86
1673         if (addr == 0x73 && (adap->class & I2C_CLASS_HWMON)
1674          && i2c_check_functionality(adap, I2C_FUNC_SMBUS_READ_BYTE_DATA))
1675                 err = i2c_smbus_xfer(adap, addr, 0, I2C_SMBUS_READ, 0,
1676                                      I2C_SMBUS_BYTE_DATA, &dummy);
1677         else
1678 #endif
1679         if (!((addr & ~0x07) == 0x30 || (addr & ~0x0f) == 0x50)
1680          && i2c_check_functionality(adap, I2C_FUNC_SMBUS_QUICK))
1681                 err = i2c_smbus_xfer(adap, addr, 0, I2C_SMBUS_WRITE, 0,
1682                                      I2C_SMBUS_QUICK, NULL);
1683         else if (i2c_check_functionality(adap, I2C_FUNC_SMBUS_READ_BYTE))
1684                 err = i2c_smbus_xfer(adap, addr, 0, I2C_SMBUS_READ, 0,
1685                                      I2C_SMBUS_BYTE, &dummy);
1686         else {
1687                 dev_warn(&adap->dev, "No suitable probing method supported\n");
1688                 err = -EOPNOTSUPP;
1689         }
1690
1691         return err >= 0;
1692 }
1693
1694 static int i2c_detect_address(struct i2c_client *temp_client,
1695                               struct i2c_driver *driver)
1696 {
1697         struct i2c_board_info info;
1698         struct i2c_adapter *adapter = temp_client->adapter;
1699         int addr = temp_client->addr;
1700         int err;
1701
1702         /* Make sure the address is valid */
1703         err = i2c_check_addr_validity(addr);
1704         if (err) {
1705                 dev_warn(&adapter->dev, "Invalid probe address 0x%02x\n",
1706                          addr);
1707                 return err;
1708         }
1709
1710         /* Skip if already in use */
1711         if (i2c_check_addr_busy(adapter, addr))
1712                 return 0;
1713
1714         /* Make sure there is something at this address */
1715         if (!i2c_default_probe(adapter, addr))
1716                 return 0;
1717
1718         /* Finally call the custom detection function */
1719         memset(&info, 0, sizeof(struct i2c_board_info));
1720         info.addr = addr;
1721         err = driver->detect(temp_client, &info);
1722         if (err) {
1723                 /* -ENODEV is returned if the detection fails. We catch it
1724                    here as this isn't an error. */
1725                 return err == -ENODEV ? 0 : err;
1726         }
1727
1728         /* Consistency check */
1729         if (info.type[0] == '\0') {
1730                 dev_err(&adapter->dev, "%s detection function provided "
1731                         "no name for 0x%x\n", driver->driver.name,
1732                         addr);
1733         } else {
1734                 struct i2c_client *client;
1735
1736                 /* Detection succeeded, instantiate the device */
1737                 dev_dbg(&adapter->dev, "Creating %s at 0x%02x\n",
1738                         info.type, info.addr);
1739                 client = i2c_new_device(adapter, &info);
1740                 if (client)
1741                         list_add_tail(&client->detected, &driver->clients);
1742                 else
1743                         dev_err(&adapter->dev, "Failed creating %s at 0x%02x\n",
1744                                 info.type, info.addr);
1745         }
1746         return 0;
1747 }
1748
1749 static int i2c_detect(struct i2c_adapter *adapter, struct i2c_driver *driver)
1750 {
1751         const unsigned short *address_list;
1752         struct i2c_client *temp_client;
1753         int i, err = 0;
1754         int adap_id = i2c_adapter_id(adapter);
1755
1756         address_list = driver->address_list;
1757         if (!driver->detect || !address_list)
1758                 return 0;
1759
1760         /* Stop here if the classes do not match */
1761         if (!(adapter->class & driver->class))
1762                 return 0;
1763
1764         /* Set up a temporary client to help detect callback */
1765         temp_client = kzalloc(sizeof(struct i2c_client), GFP_KERNEL);
1766         if (!temp_client)
1767                 return -ENOMEM;
1768         temp_client->adapter = adapter;
1769
1770         for (i = 0; address_list[i] != I2C_CLIENT_END; i += 1) {
1771                 dev_dbg(&adapter->dev, "found normal entry for adapter %d, "
1772                         "addr 0x%02x\n", adap_id, address_list[i]);
1773                 temp_client->addr = address_list[i];
1774                 err = i2c_detect_address(temp_client, driver);
1775                 if (unlikely(err))
1776                         break;
1777         }
1778
1779         kfree(temp_client);
1780         return err;
1781 }
1782
1783 int i2c_probe_func_quick_read(struct i2c_adapter *adap, unsigned short addr)
1784 {
1785         return i2c_smbus_xfer(adap, addr, 0, I2C_SMBUS_READ, 0,
1786                               I2C_SMBUS_QUICK, NULL) >= 0;
1787 }
1788 EXPORT_SYMBOL_GPL(i2c_probe_func_quick_read);
1789
1790 struct i2c_client *
1791 i2c_new_probed_device(struct i2c_adapter *adap,
1792                       struct i2c_board_info *info,
1793                       unsigned short const *addr_list,
1794                       int (*probe)(struct i2c_adapter *, unsigned short addr))
1795 {
1796         int i;
1797
1798         if (!probe)
1799                 probe = i2c_default_probe;
1800
1801         for (i = 0; addr_list[i] != I2C_CLIENT_END; i++) {
1802                 /* Check address validity */
1803                 if (i2c_check_addr_validity(addr_list[i]) < 0) {
1804                         dev_warn(&adap->dev, "Invalid 7-bit address "
1805                                  "0x%02x\n", addr_list[i]);
1806                         continue;
1807                 }
1808
1809                 /* Check address availability */
1810                 if (i2c_check_addr_busy(adap, addr_list[i])) {
1811                         dev_dbg(&adap->dev, "Address 0x%02x already in "
1812                                 "use, not probing\n", addr_list[i]);
1813                         continue;
1814                 }
1815
1816                 /* Test address responsiveness */
1817                 if (probe(adap, addr_list[i]))
1818                         break;
1819         }
1820
1821         if (addr_list[i] == I2C_CLIENT_END) {
1822                 dev_dbg(&adap->dev, "Probing failed, no device found\n");
1823                 return NULL;
1824         }
1825
1826         info->addr = addr_list[i];
1827         return i2c_new_device(adap, info);
1828 }
1829 EXPORT_SYMBOL_GPL(i2c_new_probed_device);
1830
1831 struct i2c_adapter *i2c_get_adapter(int nr)
1832 {
1833         struct i2c_adapter *adapter;
1834
1835         mutex_lock(&core_lock);
1836         adapter = idr_find(&i2c_adapter_idr, nr);
1837         if (adapter && !try_module_get(adapter->owner))
1838                 adapter = NULL;
1839
1840         mutex_unlock(&core_lock);
1841         return adapter;
1842 }
1843 EXPORT_SYMBOL(i2c_get_adapter);
1844
1845 void i2c_put_adapter(struct i2c_adapter *adap)
1846 {
1847         module_put(adap->owner);
1848 }
1849 EXPORT_SYMBOL(i2c_put_adapter);
1850
1851 /* The SMBus parts */
1852
1853 #define POLY    (0x1070U << 3)
1854 static u8 crc8(u16 data)
1855 {
1856         int i;
1857
1858         for (i = 0; i < 8; i++) {
1859                 if (data & 0x8000)
1860                         data = data ^ POLY;
1861                 data = data << 1;
1862         }
1863         return (u8)(data >> 8);
1864 }
1865
1866 /* Incremental CRC8 over count bytes in the array pointed to by p */
1867 static u8 i2c_smbus_pec(u8 crc, u8 *p, size_t count)
1868 {
1869         int i;
1870
1871         for (i = 0; i < count; i++)
1872                 crc = crc8((crc ^ p[i]) << 8);
1873         return crc;
1874 }
1875
1876 /* Assume a 7-bit address, which is reasonable for SMBus */
1877 static u8 i2c_smbus_msg_pec(u8 pec, struct i2c_msg *msg)
1878 {
1879         /* The address will be sent first */
1880         u8 addr = (msg->addr << 1) | !!(msg->flags & I2C_M_RD);
1881         pec = i2c_smbus_pec(pec, &addr, 1);
1882
1883         /* The data buffer follows */
1884         return i2c_smbus_pec(pec, msg->buf, msg->len);
1885 }
1886
1887 /* Used for write only transactions */
1888 static inline void i2c_smbus_add_pec(struct i2c_msg *msg)
1889 {
1890         msg->buf[msg->len] = i2c_smbus_msg_pec(0, msg);
1891         msg->len++;
1892 }
1893
1894 /* Return <0 on CRC error
1895    If there was a write before this read (most cases) we need to take the
1896    partial CRC from the write part into account.
1897    Note that this function does modify the message (we need to decrease the
1898    message length to hide the CRC byte from the caller). */
1899 static int i2c_smbus_check_pec(u8 cpec, struct i2c_msg *msg)
1900 {
1901         u8 rpec = msg->buf[--msg->len];
1902         cpec = i2c_smbus_msg_pec(cpec, msg);
1903
1904         if (rpec != cpec) {
1905                 pr_debug("i2c-core: Bad PEC 0x%02x vs. 0x%02x\n",
1906                         rpec, cpec);
1907                 return -EBADMSG;
1908         }
1909         return 0;
1910 }
1911
1912 /**
1913  * i2c_smbus_read_byte - SMBus "receive byte" protocol
1914  * @client: Handle to slave device
1915  *
1916  * This executes the SMBus "receive byte" protocol, returning negative errno
1917  * else the byte received from the device.
1918  */
1919 s32 i2c_smbus_read_byte(const struct i2c_client *client)
1920 {
1921         union i2c_smbus_data data;
1922         int status;
1923
1924         status = i2c_smbus_xfer(client->adapter, client->addr, client->flags,
1925                                 I2C_SMBUS_READ, 0,
1926                                 I2C_SMBUS_BYTE, &data);
1927         return (status < 0) ? status : data.byte;
1928 }
1929 EXPORT_SYMBOL(i2c_smbus_read_byte);
1930
1931 /**
1932  * i2c_smbus_write_byte - SMBus "send byte" protocol
1933  * @client: Handle to slave device
1934  * @value: Byte to be sent
1935  *
1936  * This executes the SMBus "send byte" protocol, returning negative errno
1937  * else zero on success.
1938  */
1939 s32 i2c_smbus_write_byte(const struct i2c_client *client, u8 value)
1940 {
1941         return i2c_smbus_xfer(client->adapter, client->addr, client->flags,
1942                               I2C_SMBUS_WRITE, value, I2C_SMBUS_BYTE, NULL);
1943 }
1944 EXPORT_SYMBOL(i2c_smbus_write_byte);
1945
1946 /**
1947  * i2c_smbus_read_byte_data - SMBus "read byte" protocol
1948  * @client: Handle to slave device
1949  * @command: Byte interpreted by slave
1950  *
1951  * This executes the SMBus "read byte" protocol, returning negative errno
1952  * else a data byte received from the device.
1953  */
1954 s32 i2c_smbus_read_byte_data(const struct i2c_client *client, u8 command)
1955 {
1956         union i2c_smbus_data data;
1957         int status;
1958
1959         status = i2c_smbus_xfer(client->adapter, client->addr, client->flags,
1960                                 I2C_SMBUS_READ, command,
1961                                 I2C_SMBUS_BYTE_DATA, &data);
1962         return (status < 0) ? status : data.byte;
1963 }
1964 EXPORT_SYMBOL(i2c_smbus_read_byte_data);
1965
1966 /**
1967  * i2c_smbus_write_byte_data - SMBus "write byte" protocol
1968  * @client: Handle to slave device
1969  * @command: Byte interpreted by slave
1970  * @value: Byte being written
1971  *
1972  * This executes the SMBus "write byte" protocol, returning negative errno
1973  * else zero on success.
1974  */
1975 s32 i2c_smbus_write_byte_data(const struct i2c_client *client, u8 command,
1976                               u8 value)
1977 {
1978         union i2c_smbus_data data;
1979         data.byte = value;
1980         return i2c_smbus_xfer(client->adapter, client->addr, client->flags,
1981                               I2C_SMBUS_WRITE, command,
1982                               I2C_SMBUS_BYTE_DATA, &data);
1983 }
1984 EXPORT_SYMBOL(i2c_smbus_write_byte_data);
1985
1986 /**
1987  * i2c_smbus_read_word_data - SMBus "read word" protocol
1988  * @client: Handle to slave device
1989  * @command: Byte interpreted by slave
1990  *
1991  * This executes the SMBus "read word" protocol, returning negative errno
1992  * else a 16-bit unsigned "word" received from the device.
1993  */
1994 s32 i2c_smbus_read_word_data(const struct i2c_client *client, u8 command)
1995 {
1996         union i2c_smbus_data data;
1997         int status;
1998
1999         status = i2c_smbus_xfer(client->adapter, client->addr, client->flags,
2000                                 I2C_SMBUS_READ, command,
2001                                 I2C_SMBUS_WORD_DATA, &data);
2002         return (status < 0) ? status : data.word;
2003 }
2004 EXPORT_SYMBOL(i2c_smbus_read_word_data);
2005
2006 /**
2007  * i2c_smbus_write_word_data - SMBus "write word" protocol
2008  * @client: Handle to slave device
2009  * @command: Byte interpreted by slave
2010  * @value: 16-bit "word" being written
2011  *
2012  * This executes the SMBus "write word" protocol, returning negative errno
2013  * else zero on success.
2014  */
2015 s32 i2c_smbus_write_word_data(const struct i2c_client *client, u8 command,
2016                               u16 value)
2017 {
2018         union i2c_smbus_data data;
2019         data.word = value;
2020         return i2c_smbus_xfer(client->adapter, client->addr, client->flags,
2021                               I2C_SMBUS_WRITE, command,
2022                               I2C_SMBUS_WORD_DATA, &data);
2023 }
2024 EXPORT_SYMBOL(i2c_smbus_write_word_data);
2025
2026 /**
2027  * i2c_smbus_read_block_data - SMBus "block read" protocol
2028  * @client: Handle to slave device
2029  * @command: Byte interpreted by slave
2030  * @values: Byte array into which data will be read; big enough to hold
2031  *      the data returned by the slave.  SMBus allows at most 32 bytes.
2032  *
2033  * This executes the SMBus "block read" protocol, returning negative errno
2034  * else the number of data bytes in the slave's response.
2035  *
2036  * Note that using this function requires that the client's adapter support
2037  * the I2C_FUNC_SMBUS_READ_BLOCK_DATA functionality.  Not all adapter drivers
2038  * support this; its emulation through I2C messaging relies on a specific
2039  * mechanism (I2C_M_RECV_LEN) which may not be implemented.
2040  */
2041 s32 i2c_smbus_read_block_data(const struct i2c_client *client, u8 command,
2042                               u8 *values)
2043 {
2044         union i2c_smbus_data data;
2045         int status;
2046
2047         status = i2c_smbus_xfer(client->adapter, client->addr, client->flags,
2048                                 I2C_SMBUS_READ, command,
2049                                 I2C_SMBUS_BLOCK_DATA, &data);
2050         if (status)
2051                 return status;
2052
2053         memcpy(values, &data.block[1], data.block[0]);
2054         return data.block[0];
2055 }
2056 EXPORT_SYMBOL(i2c_smbus_read_block_data);
2057
2058 /**
2059  * i2c_smbus_write_block_data - SMBus "block write" protocol
2060  * @client: Handle to slave device
2061  * @command: Byte interpreted by slave
2062  * @length: Size of data block; SMBus allows at most 32 bytes
2063  * @values: Byte array which will be written.
2064  *
2065  * This executes the SMBus "block write" protocol, returning negative errno
2066  * else zero on success.
2067  */
2068 s32 i2c_smbus_write_block_data(const struct i2c_client *client, u8 command,
2069                                u8 length, const u8 *values)
2070 {
2071         union i2c_smbus_data data;
2072
2073         if (length > I2C_SMBUS_BLOCK_MAX)
2074                 length = I2C_SMBUS_BLOCK_MAX;
2075         data.block[0] = length;
2076         memcpy(&data.block[1], values, length);
2077         return i2c_smbus_xfer(client->adapter, client->addr, client->flags,
2078                               I2C_SMBUS_WRITE, command,
2079                               I2C_SMBUS_BLOCK_DATA, &data);
2080 }
2081 EXPORT_SYMBOL(i2c_smbus_write_block_data);
2082
2083 /* Returns the number of read bytes */
2084 s32 i2c_smbus_read_i2c_block_data(const struct i2c_client *client, u8 command,
2085                                   u8 length, u8 *values)
2086 {
2087         union i2c_smbus_data data;
2088         int status;
2089
2090         if (length > I2C_SMBUS_BLOCK_MAX)
2091                 length = I2C_SMBUS_BLOCK_MAX;
2092         data.block[0] = length;
2093         status = i2c_smbus_xfer(client->adapter, client->addr, client->flags,
2094                                 I2C_SMBUS_READ, command,
2095                                 I2C_SMBUS_I2C_BLOCK_DATA, &data);
2096         if (status < 0)
2097                 return status;
2098
2099         memcpy(values, &data.block[1], data.block[0]);
2100         return data.block[0];
2101 }
2102 EXPORT_SYMBOL(i2c_smbus_read_i2c_block_data);
2103
2104 s32 i2c_smbus_write_i2c_block_data(const struct i2c_client *client, u8 command,
2105                                    u8 length, const u8 *values)
2106 {
2107         union i2c_smbus_data data;
2108
2109         if (length > I2C_SMBUS_BLOCK_MAX)
2110                 length = I2C_SMBUS_BLOCK_MAX;
2111         data.block[0] = length;
2112         memcpy(data.block + 1, values, length);
2113         return i2c_smbus_xfer(client->adapter, client->addr, client->flags,
2114                               I2C_SMBUS_WRITE, command,
2115                               I2C_SMBUS_I2C_BLOCK_DATA, &data);
2116 }
2117 EXPORT_SYMBOL(i2c_smbus_write_i2c_block_data);
2118
2119 /* Simulate a SMBus command using the i2c protocol
2120    No checking of parameters is done!  */
2121 static s32 i2c_smbus_xfer_emulated(struct i2c_adapter *adapter, u16 addr,
2122                                    unsigned short flags,
2123                                    char read_write, u8 command, int size,
2124                                    union i2c_smbus_data *data)
2125 {
2126         /* So we need to generate a series of msgs. In the case of writing, we
2127           need to use only one message; when reading, we need two. We initialize
2128           most things with sane defaults, to keep the code below somewhat
2129           simpler. */
2130         unsigned char msgbuf0[I2C_SMBUS_BLOCK_MAX+3];
2131         unsigned char msgbuf1[I2C_SMBUS_BLOCK_MAX+2];
2132         int num = read_write == I2C_SMBUS_READ ? 2 : 1;
2133         int i;
2134         u8 partial_pec = 0;
2135         int status;
2136         struct i2c_msg msg[2] = {
2137                 {
2138                         .addr = addr,
2139                         .flags = flags,
2140                         .len = 1,
2141                         .buf = msgbuf0,
2142                 }, {
2143                         .addr = addr,
2144                         .flags = flags | I2C_M_RD,
2145                         .len = 0,
2146                         .buf = msgbuf1,
2147                 },
2148         };
2149
2150         msgbuf0[0] = command;
2151         switch (size) {
2152         case I2C_SMBUS_QUICK:
2153                 msg[0].len = 0;
2154                 /* Special case: The read/write field is used as data */
2155                 msg[0].flags = flags | (read_write == I2C_SMBUS_READ ?
2156                                         I2C_M_RD : 0);
2157                 num = 1;
2158                 break;
2159         case I2C_SMBUS_BYTE:
2160                 if (read_write == I2C_SMBUS_READ) {
2161                         /* Special case: only a read! */
2162                         msg[0].flags = I2C_M_RD | flags;
2163                         num = 1;
2164                 }
2165                 break;
2166         case I2C_SMBUS_BYTE_DATA:
2167                 if (read_write == I2C_SMBUS_READ)
2168                         msg[1].len = 1;
2169                 else {
2170                         msg[0].len = 2;
2171                         msgbuf0[1] = data->byte;
2172                 }
2173                 break;
2174         case I2C_SMBUS_WORD_DATA:
2175                 if (read_write == I2C_SMBUS_READ)
2176                         msg[1].len = 2;
2177                 else {
2178                         msg[0].len = 3;
2179                         msgbuf0[1] = data->word & 0xff;
2180                         msgbuf0[2] = data->word >> 8;
2181                 }
2182                 break;
2183         case I2C_SMBUS_PROC_CALL:
2184                 num = 2; /* Special case */
2185                 read_write = I2C_SMBUS_READ;
2186                 msg[0].len = 3;
2187                 msg[1].len = 2;
2188                 msgbuf0[1] = data->word & 0xff;
2189                 msgbuf0[2] = data->word >> 8;
2190                 break;
2191         case I2C_SMBUS_BLOCK_DATA:
2192                 if (read_write == I2C_SMBUS_READ) {
2193                         msg[1].flags |= I2C_M_RECV_LEN;
2194                         msg[1].len = 1; /* block length will be added by
2195                                            the underlying bus driver */
2196                 } else {
2197                         msg[0].len = data->block[0] + 2;
2198                         if (msg[0].len > I2C_SMBUS_BLOCK_MAX + 2) {
2199                                 dev_err(&adapter->dev,
2200                                         "Invalid block write size %d\n",
2201                                         data->block[0]);
2202                                 return -EINVAL;
2203                         }
2204                         for (i = 1; i < msg[0].len; i++)
2205                                 msgbuf0[i] = data->block[i-1];
2206                 }
2207                 break;
2208         case I2C_SMBUS_BLOCK_PROC_CALL:
2209                 num = 2; /* Another special case */
2210                 read_write = I2C_SMBUS_READ;
2211                 if (data->block[0] > I2C_SMBUS_BLOCK_MAX) {
2212                         dev_err(&adapter->dev,
2213                                 "Invalid block write size %d\n",
2214                                 data->block[0]);
2215                         return -EINVAL;
2216                 }
2217                 msg[0].len = data->block[0] + 2;
2218                 for (i = 1; i < msg[0].len; i++)
2219                         msgbuf0[i] = data->block[i-1];
2220                 msg[1].flags |= I2C_M_RECV_LEN;
2221                 msg[1].len = 1; /* block length will be added by
2222                                    the underlying bus driver */
2223                 break;
2224         case I2C_SMBUS_I2C_BLOCK_DATA:
2225                 if (read_write == I2C_SMBUS_READ) {
2226                         msg[1].len = data->block[0];
2227                 } else {
2228                         msg[0].len = data->block[0] + 1;
2229                         if (msg[0].len > I2C_SMBUS_BLOCK_MAX + 1) {
2230                                 dev_err(&adapter->dev,
2231                                         "Invalid block write size %d\n",
2232                                         data->block[0]);
2233                                 return -EINVAL;
2234                         }
2235                         for (i = 1; i <= data->block[0]; i++)
2236                                 msgbuf0[i] = data->block[i];
2237                 }
2238                 break;
2239         default:
2240                 dev_err(&adapter->dev, "Unsupported transaction %d\n", size);
2241                 return -EOPNOTSUPP;
2242         }
2243
2244         i = ((flags & I2C_CLIENT_PEC) && size != I2C_SMBUS_QUICK
2245                                       && size != I2C_SMBUS_I2C_BLOCK_DATA);
2246         if (i) {
2247                 /* Compute PEC if first message is a write */
2248                 if (!(msg[0].flags & I2C_M_RD)) {
2249                         if (num == 1) /* Write only */
2250                                 i2c_smbus_add_pec(&msg[0]);
2251                         else /* Write followed by read */
2252                                 partial_pec = i2c_smbus_msg_pec(0, &msg[0]);
2253                 }
2254                 /* Ask for PEC if last message is a read */
2255                 if (msg[num-1].flags & I2C_M_RD)
2256                         msg[num-1].len++;
2257         }
2258
2259         status = i2c_transfer(adapter, msg, num);
2260         if (status < 0)
2261                 return status;
2262
2263         /* Check PEC if last message is a read */
2264         if (i && (msg[num-1].flags & I2C_M_RD)) {
2265                 status = i2c_smbus_check_pec(partial_pec, &msg[num-1]);
2266                 if (status < 0)
2267                         return status;
2268         }
2269
2270         if (read_write == I2C_SMBUS_READ)
2271                 switch (size) {
2272                 case I2C_SMBUS_BYTE:
2273                         data->byte = msgbuf0[0];
2274                         break;
2275                 case I2C_SMBUS_BYTE_DATA:
2276                         data->byte = msgbuf1[0];
2277                         break;
2278                 case I2C_SMBUS_WORD_DATA:
2279                 case I2C_SMBUS_PROC_CALL:
2280                         data->word = msgbuf1[0] | (msgbuf1[1] << 8);
2281                         break;
2282                 case I2C_SMBUS_I2C_BLOCK_DATA:
2283                         for (i = 0; i < data->block[0]; i++)
2284                                 data->block[i+1] = msgbuf1[i];
2285                         break;
2286                 case I2C_SMBUS_BLOCK_DATA:
2287                 case I2C_SMBUS_BLOCK_PROC_CALL:
2288                         for (i = 0; i < msgbuf1[0] + 1; i++)
2289                                 data->block[i] = msgbuf1[i];
2290                         break;
2291                 }
2292         return 0;
2293 }
2294
2295 /**
2296  * i2c_smbus_xfer - execute SMBus protocol operations
2297  * @adapter: Handle to I2C bus
2298  * @addr: Address of SMBus slave on that bus
2299  * @flags: I2C_CLIENT_* flags (usually zero or I2C_CLIENT_PEC)
2300  * @read_write: I2C_SMBUS_READ or I2C_SMBUS_WRITE
2301  * @command: Byte interpreted by slave, for protocols which use such bytes
2302  * @protocol: SMBus protocol operation to execute, such as I2C_SMBUS_PROC_CALL
2303  * @data: Data to be read or written
2304  *
2305  * This executes an SMBus protocol operation, and returns a negative
2306  * errno code else zero on success.
2307  */
2308 s32 i2c_smbus_xfer(struct i2c_adapter *adapter, u16 addr, unsigned short flags,
2309                    char read_write, u8 command, int protocol,
2310                    union i2c_smbus_data *data)
2311 {
2312         unsigned long orig_jiffies;
2313         int try;
2314         s32 res;
2315
2316         flags &= I2C_M_TEN | I2C_CLIENT_PEC | I2C_CLIENT_SCCB;
2317
2318         if (adapter->algo->smbus_xfer) {
2319                 i2c_lock_adapter(adapter);
2320
2321                 /* Retry automatically on arbitration loss */
2322                 orig_jiffies = jiffies;
2323                 for (res = 0, try = 0; try <= adapter->retries; try++) {
2324                         res = adapter->algo->smbus_xfer(adapter, addr, flags,
2325                                                         read_write, command,
2326                                                         protocol, data);
2327                         if (res != -EAGAIN)
2328                                 break;
2329                         if (time_after(jiffies,
2330                                        orig_jiffies + adapter->timeout))
2331                                 break;
2332                 }
2333                 i2c_unlock_adapter(adapter);
2334
2335                 if (res != -EOPNOTSUPP || !adapter->algo->master_xfer)
2336                         return res;
2337                 /*
2338                  * Fall back to i2c_smbus_xfer_emulated if the adapter doesn't
2339                  * implement native support for the SMBus operation.
2340                  */
2341         }
2342
2343         return i2c_smbus_xfer_emulated(adapter, addr, flags, read_write,
2344                                        command, protocol, data);
2345 }
2346 EXPORT_SYMBOL(i2c_smbus_xfer);
2347
2348 MODULE_AUTHOR("Simon G. Vogl <simon@tk.uni-linz.ac.at>");
2349 MODULE_DESCRIPTION("I2C-Bus main module");
2350 MODULE_LICENSE("GPL");