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