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