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