1  // SPDX-License-Identifier: GPL-2.0-or-later
2  /*
3   * Linux I2C core
4   *
5   * Copyright (C) 1995-99 Simon G. Vogl
6   *   With some changes from Kyösti Mälkki <kmalkki@cc.hut.fi>
7   *   Mux support by Rodolfo Giometti <giometti@enneenne.com> and
8   *   Michael Lawnick <michael.lawnick.ext@nsn.com>
9   *
10   * Copyright (C) 2013-2017 Wolfram Sang <wsa@kernel.org>
11   */
12  
13  #define pr_fmt(fmt) "i2c-core: " fmt
14  
15  #include <dt-bindings/i2c/i2c.h>
16  #include <linux/acpi.h>
17  #include <linux/clk/clk-conf.h>
18  #include <linux/completion.h>
19  #include <linux/debugfs.h>
20  #include <linux/delay.h>
21  #include <linux/err.h>
22  #include <linux/errno.h>
23  #include <linux/gpio/consumer.h>
24  #include <linux/i2c.h>
25  #include <linux/i2c-smbus.h>
26  #include <linux/idr.h>
27  #include <linux/init.h>
28  #include <linux/interrupt.h>
29  #include <linux/irqflags.h>
30  #include <linux/jump_label.h>
31  #include <linux/kernel.h>
32  #include <linux/module.h>
33  #include <linux/mutex.h>
34  #include <linux/of_device.h>
35  #include <linux/of.h>
36  #include <linux/of_irq.h>
37  #include <linux/pinctrl/consumer.h>
38  #include <linux/pinctrl/devinfo.h>
39  #include <linux/pm_domain.h>
40  #include <linux/pm_runtime.h>
41  #include <linux/pm_wakeirq.h>
42  #include <linux/property.h>
43  #include <linux/rwsem.h>
44  #include <linux/slab.h>
45  
46  #include "i2c-core.h"
47  
48  #define CREATE_TRACE_POINTS
49  #include <trace/events/i2c.h>
50  
51  #define I2C_ADDR_OFFSET_TEN_BIT	0xa000
52  #define I2C_ADDR_OFFSET_SLAVE	0x1000
53  
54  #define I2C_ADDR_7BITS_MAX	0x77
55  #define I2C_ADDR_7BITS_COUNT	(I2C_ADDR_7BITS_MAX + 1)
56  
57  #define I2C_ADDR_DEVICE_ID	0x7c
58  
59  /*
60   * core_lock protects i2c_adapter_idr, and guarantees that device detection,
61   * deletion of detected devices are serialized
62   */
63  static DEFINE_MUTEX(core_lock);
64  static DEFINE_IDR(i2c_adapter_idr);
65  
66  static int i2c_detect(struct i2c_adapter *adapter, struct i2c_driver *driver);
67  
68  static DEFINE_STATIC_KEY_FALSE(i2c_trace_msg_key);
69  static bool is_registered;
70  
71  static struct dentry *i2c_debugfs_root;
72  
i2c_transfer_trace_reg(void)73  int i2c_transfer_trace_reg(void)
74  {
75  	static_branch_inc(&i2c_trace_msg_key);
76  	return 0;
77  }
78  
i2c_transfer_trace_unreg(void)79  void i2c_transfer_trace_unreg(void)
80  {
81  	static_branch_dec(&i2c_trace_msg_key);
82  }
83  
i2c_freq_mode_string(u32 bus_freq_hz)84  const char *i2c_freq_mode_string(u32 bus_freq_hz)
85  {
86  	switch (bus_freq_hz) {
87  	case I2C_MAX_STANDARD_MODE_FREQ:
88  		return "Standard Mode (100 kHz)";
89  	case I2C_MAX_FAST_MODE_FREQ:
90  		return "Fast Mode (400 kHz)";
91  	case I2C_MAX_FAST_MODE_PLUS_FREQ:
92  		return "Fast Mode Plus (1.0 MHz)";
93  	case I2C_MAX_TURBO_MODE_FREQ:
94  		return "Turbo Mode (1.4 MHz)";
95  	case I2C_MAX_HIGH_SPEED_MODE_FREQ:
96  		return "High Speed Mode (3.4 MHz)";
97  	case I2C_MAX_ULTRA_FAST_MODE_FREQ:
98  		return "Ultra Fast Mode (5.0 MHz)";
99  	default:
100  		return "Unknown Mode";
101  	}
102  }
103  EXPORT_SYMBOL_GPL(i2c_freq_mode_string);
104  
i2c_match_id(const struct i2c_device_id * id,const struct i2c_client * client)105  const struct i2c_device_id *i2c_match_id(const struct i2c_device_id *id,
106  						const struct i2c_client *client)
107  {
108  	if (!(id && client))
109  		return NULL;
110  
111  	while (id->name[0]) {
112  		if (strcmp(client->name, id->name) == 0)
113  			return id;
114  		id++;
115  	}
116  	return NULL;
117  }
118  EXPORT_SYMBOL_GPL(i2c_match_id);
119  
i2c_get_match_data(const struct i2c_client * client)120  const void *i2c_get_match_data(const struct i2c_client *client)
121  {
122  	struct i2c_driver *driver = to_i2c_driver(client->dev.driver);
123  	const struct i2c_device_id *match;
124  	const void *data;
125  
126  	data = device_get_match_data(&client->dev);
127  	if (!data) {
128  		match = i2c_match_id(driver->id_table, client);
129  		if (!match)
130  			return NULL;
131  
132  		data = (const void *)match->driver_data;
133  	}
134  
135  	return data;
136  }
137  EXPORT_SYMBOL(i2c_get_match_data);
138  
i2c_device_match(struct device * dev,const struct device_driver * drv)139  static int i2c_device_match(struct device *dev, const struct device_driver *drv)
140  {
141  	struct i2c_client	*client = i2c_verify_client(dev);
142  	const struct i2c_driver	*driver;
143  
144  
145  	/* Attempt an OF style match */
146  	if (i2c_of_match_device(drv->of_match_table, client))
147  		return 1;
148  
149  	/* Then ACPI style match */
150  	if (acpi_driver_match_device(dev, drv))
151  		return 1;
152  
153  	driver = to_i2c_driver(drv);
154  
155  	/* Finally an I2C match */
156  	if (i2c_match_id(driver->id_table, client))
157  		return 1;
158  
159  	return 0;
160  }
161  
i2c_device_uevent(const struct device * dev,struct kobj_uevent_env * env)162  static int i2c_device_uevent(const struct device *dev, struct kobj_uevent_env *env)
163  {
164  	const struct i2c_client *client = to_i2c_client(dev);
165  	int rc;
166  
167  	rc = of_device_uevent_modalias(dev, env);
168  	if (rc != -ENODEV)
169  		return rc;
170  
171  	rc = acpi_device_uevent_modalias(dev, env);
172  	if (rc != -ENODEV)
173  		return rc;
174  
175  	return add_uevent_var(env, "MODALIAS=%s%s", I2C_MODULE_PREFIX, client->name);
176  }
177  
178  /* i2c bus recovery routines */
get_scl_gpio_value(struct i2c_adapter * adap)179  static int get_scl_gpio_value(struct i2c_adapter *adap)
180  {
181  	return gpiod_get_value_cansleep(adap->bus_recovery_info->scl_gpiod);
182  }
183  
set_scl_gpio_value(struct i2c_adapter * adap,int val)184  static void set_scl_gpio_value(struct i2c_adapter *adap, int val)
185  {
186  	gpiod_set_value_cansleep(adap->bus_recovery_info->scl_gpiod, val);
187  }
188  
get_sda_gpio_value(struct i2c_adapter * adap)189  static int get_sda_gpio_value(struct i2c_adapter *adap)
190  {
191  	return gpiod_get_value_cansleep(adap->bus_recovery_info->sda_gpiod);
192  }
193  
set_sda_gpio_value(struct i2c_adapter * adap,int val)194  static void set_sda_gpio_value(struct i2c_adapter *adap, int val)
195  {
196  	gpiod_set_value_cansleep(adap->bus_recovery_info->sda_gpiod, val);
197  }
198  
i2c_generic_bus_free(struct i2c_adapter * adap)199  static int i2c_generic_bus_free(struct i2c_adapter *adap)
200  {
201  	struct i2c_bus_recovery_info *bri = adap->bus_recovery_info;
202  	int ret = -EOPNOTSUPP;
203  
204  	if (bri->get_bus_free)
205  		ret = bri->get_bus_free(adap);
206  	else if (bri->get_sda)
207  		ret = bri->get_sda(adap);
208  
209  	if (ret < 0)
210  		return ret;
211  
212  	return ret ? 0 : -EBUSY;
213  }
214  
215  /*
216   * We are generating clock pulses. ndelay() determines durating of clk pulses.
217   * We will generate clock with rate 100 KHz and so duration of both clock levels
218   * is: delay in ns = (10^6 / 100) / 2
219   */
220  #define RECOVERY_NDELAY		5000
221  #define RECOVERY_CLK_CNT	9
222  
i2c_generic_scl_recovery(struct i2c_adapter * adap)223  int i2c_generic_scl_recovery(struct i2c_adapter *adap)
224  {
225  	struct i2c_bus_recovery_info *bri = adap->bus_recovery_info;
226  	int i = 0, scl = 1, ret = 0;
227  
228  	if (bri->prepare_recovery)
229  		bri->prepare_recovery(adap);
230  	if (bri->pinctrl)
231  		pinctrl_select_state(bri->pinctrl, bri->pins_gpio);
232  
233  	/*
234  	 * If we can set SDA, we will always create a STOP to ensure additional
235  	 * pulses will do no harm. This is achieved by letting SDA follow SCL
236  	 * half a cycle later. Check the 'incomplete_write_byte' fault injector
237  	 * for details. Note that we must honour tsu:sto, 4us, but lets use 5us
238  	 * here for simplicity.
239  	 */
240  	bri->set_scl(adap, scl);
241  	ndelay(RECOVERY_NDELAY);
242  	if (bri->set_sda)
243  		bri->set_sda(adap, scl);
244  	ndelay(RECOVERY_NDELAY / 2);
245  
246  	/*
247  	 * By this time SCL is high, as we need to give 9 falling-rising edges
248  	 */
249  	while (i++ < RECOVERY_CLK_CNT * 2) {
250  		if (scl) {
251  			/* SCL shouldn't be low here */
252  			if (!bri->get_scl(adap)) {
253  				dev_err(&adap->dev,
254  					"SCL is stuck low, exit recovery\n");
255  				ret = -EBUSY;
256  				break;
257  			}
258  		}
259  
260  		scl = !scl;
261  		bri->set_scl(adap, scl);
262  		/* Creating STOP again, see above */
263  		if (scl)  {
264  			/* Honour minimum tsu:sto */
265  			ndelay(RECOVERY_NDELAY);
266  		} else {
267  			/* Honour minimum tf and thd:dat */
268  			ndelay(RECOVERY_NDELAY / 2);
269  		}
270  		if (bri->set_sda)
271  			bri->set_sda(adap, scl);
272  		ndelay(RECOVERY_NDELAY / 2);
273  
274  		if (scl) {
275  			ret = i2c_generic_bus_free(adap);
276  			if (ret == 0)
277  				break;
278  		}
279  	}
280  
281  	/* If we can't check bus status, assume recovery worked */
282  	if (ret == -EOPNOTSUPP)
283  		ret = 0;
284  
285  	if (bri->unprepare_recovery)
286  		bri->unprepare_recovery(adap);
287  	if (bri->pinctrl)
288  		pinctrl_select_state(bri->pinctrl, bri->pins_default);
289  
290  	return ret;
291  }
292  EXPORT_SYMBOL_GPL(i2c_generic_scl_recovery);
293  
i2c_recover_bus(struct i2c_adapter * adap)294  int i2c_recover_bus(struct i2c_adapter *adap)
295  {
296  	if (!adap->bus_recovery_info)
297  		return -EBUSY;
298  
299  	dev_dbg(&adap->dev, "Trying i2c bus recovery\n");
300  	return adap->bus_recovery_info->recover_bus(adap);
301  }
302  EXPORT_SYMBOL_GPL(i2c_recover_bus);
303  
i2c_gpio_init_pinctrl_recovery(struct i2c_adapter * adap)304  static void i2c_gpio_init_pinctrl_recovery(struct i2c_adapter *adap)
305  {
306  	struct i2c_bus_recovery_info *bri = adap->bus_recovery_info;
307  	struct device *dev = &adap->dev;
308  	struct pinctrl *p = bri->pinctrl ?: dev_pinctrl(dev->parent);
309  
310  	bri->pinctrl = p;
311  
312  	/*
313  	 * we can't change states without pinctrl, so remove the states if
314  	 * populated
315  	 */
316  	if (!p) {
317  		bri->pins_default = NULL;
318  		bri->pins_gpio = NULL;
319  		return;
320  	}
321  
322  	if (!bri->pins_default) {
323  		bri->pins_default = pinctrl_lookup_state(p,
324  							 PINCTRL_STATE_DEFAULT);
325  		if (IS_ERR(bri->pins_default)) {
326  			dev_dbg(dev, PINCTRL_STATE_DEFAULT " state not found for GPIO recovery\n");
327  			bri->pins_default = NULL;
328  		}
329  	}
330  	if (!bri->pins_gpio) {
331  		bri->pins_gpio = pinctrl_lookup_state(p, "gpio");
332  		if (IS_ERR(bri->pins_gpio))
333  			bri->pins_gpio = pinctrl_lookup_state(p, "recovery");
334  
335  		if (IS_ERR(bri->pins_gpio)) {
336  			dev_dbg(dev, "no gpio or recovery state found for GPIO recovery\n");
337  			bri->pins_gpio = NULL;
338  		}
339  	}
340  
341  	/* for pinctrl state changes, we need all the information */
342  	if (bri->pins_default && bri->pins_gpio) {
343  		dev_info(dev, "using pinctrl states for GPIO recovery");
344  	} else {
345  		bri->pinctrl = NULL;
346  		bri->pins_default = NULL;
347  		bri->pins_gpio = NULL;
348  	}
349  }
350  
i2c_gpio_init_generic_recovery(struct i2c_adapter * adap)351  static int i2c_gpio_init_generic_recovery(struct i2c_adapter *adap)
352  {
353  	struct i2c_bus_recovery_info *bri = adap->bus_recovery_info;
354  	struct device *dev = &adap->dev;
355  	struct gpio_desc *gpiod;
356  	int ret = 0;
357  
358  	/*
359  	 * don't touch the recovery information if the driver is not using
360  	 * generic SCL recovery
361  	 */
362  	if (bri->recover_bus && bri->recover_bus != i2c_generic_scl_recovery)
363  		return 0;
364  
365  	/*
366  	 * pins might be taken as GPIO, so we should inform pinctrl about
367  	 * this and move the state to GPIO
368  	 */
369  	if (bri->pinctrl)
370  		pinctrl_select_state(bri->pinctrl, bri->pins_gpio);
371  
372  	/*
373  	 * if there is incomplete or no recovery information, see if generic
374  	 * GPIO recovery is available
375  	 */
376  	if (!bri->scl_gpiod) {
377  		gpiod = devm_gpiod_get(dev, "scl", GPIOD_OUT_HIGH_OPEN_DRAIN);
378  		if (PTR_ERR(gpiod) == -EPROBE_DEFER) {
379  			ret  = -EPROBE_DEFER;
380  			goto cleanup_pinctrl_state;
381  		}
382  		if (!IS_ERR(gpiod)) {
383  			bri->scl_gpiod = gpiod;
384  			bri->recover_bus = i2c_generic_scl_recovery;
385  			dev_info(dev, "using generic GPIOs for recovery\n");
386  		}
387  	}
388  
389  	/* SDA GPIOD line is optional, so we care about DEFER only */
390  	if (!bri->sda_gpiod) {
391  		/*
392  		 * We have SCL. Pull SCL low and wait a bit so that SDA glitches
393  		 * have no effect.
394  		 */
395  		gpiod_direction_output(bri->scl_gpiod, 0);
396  		udelay(10);
397  		gpiod = devm_gpiod_get(dev, "sda", GPIOD_IN);
398  
399  		/* Wait a bit in case of a SDA glitch, and then release SCL. */
400  		udelay(10);
401  		gpiod_direction_output(bri->scl_gpiod, 1);
402  
403  		if (PTR_ERR(gpiod) == -EPROBE_DEFER) {
404  			ret = -EPROBE_DEFER;
405  			goto cleanup_pinctrl_state;
406  		}
407  		if (!IS_ERR(gpiod))
408  			bri->sda_gpiod = gpiod;
409  	}
410  
411  cleanup_pinctrl_state:
412  	/* change the state of the pins back to their default state */
413  	if (bri->pinctrl)
414  		pinctrl_select_state(bri->pinctrl, bri->pins_default);
415  
416  	return ret;
417  }
418  
i2c_gpio_init_recovery(struct i2c_adapter * adap)419  static int i2c_gpio_init_recovery(struct i2c_adapter *adap)
420  {
421  	i2c_gpio_init_pinctrl_recovery(adap);
422  	return i2c_gpio_init_generic_recovery(adap);
423  }
424  
i2c_init_recovery(struct i2c_adapter * adap)425  static int i2c_init_recovery(struct i2c_adapter *adap)
426  {
427  	struct i2c_bus_recovery_info *bri = adap->bus_recovery_info;
428  	bool is_error_level = true;
429  	char *err_str;
430  
431  	if (!bri)
432  		return 0;
433  
434  	if (i2c_gpio_init_recovery(adap) == -EPROBE_DEFER)
435  		return -EPROBE_DEFER;
436  
437  	if (!bri->recover_bus) {
438  		err_str = "no suitable method provided";
439  		is_error_level = false;
440  		goto err;
441  	}
442  
443  	if (bri->scl_gpiod && bri->recover_bus == i2c_generic_scl_recovery) {
444  		bri->get_scl = get_scl_gpio_value;
445  		bri->set_scl = set_scl_gpio_value;
446  		if (bri->sda_gpiod) {
447  			bri->get_sda = get_sda_gpio_value;
448  			/* FIXME: add proper flag instead of '0' once available */
449  			if (gpiod_get_direction(bri->sda_gpiod) == 0)
450  				bri->set_sda = set_sda_gpio_value;
451  		}
452  	} else if (bri->recover_bus == i2c_generic_scl_recovery) {
453  		/* Generic SCL recovery */
454  		if (!bri->set_scl || !bri->get_scl) {
455  			err_str = "no {get|set}_scl() found";
456  			goto err;
457  		}
458  		if (!bri->set_sda && !bri->get_sda) {
459  			err_str = "either get_sda() or set_sda() needed";
460  			goto err;
461  		}
462  	}
463  
464  	return 0;
465   err:
466  	if (is_error_level)
467  		dev_err(&adap->dev, "Not using recovery: %s\n", err_str);
468  	else
469  		dev_dbg(&adap->dev, "Not using recovery: %s\n", err_str);
470  	adap->bus_recovery_info = NULL;
471  
472  	return -EINVAL;
473  }
474  
i2c_smbus_host_notify_to_irq(const struct i2c_client * client)475  static int i2c_smbus_host_notify_to_irq(const struct i2c_client *client)
476  {
477  	struct i2c_adapter *adap = client->adapter;
478  	unsigned int irq;
479  
480  	if (!adap->host_notify_domain)
481  		return -ENXIO;
482  
483  	if (client->flags & I2C_CLIENT_TEN)
484  		return -EINVAL;
485  
486  	irq = irq_create_mapping(adap->host_notify_domain, client->addr);
487  
488  	return irq > 0 ? irq : -ENXIO;
489  }
490  
i2c_device_probe(struct device * dev)491  static int i2c_device_probe(struct device *dev)
492  {
493  	struct i2c_client	*client = i2c_verify_client(dev);
494  	struct i2c_driver	*driver;
495  	bool do_power_on;
496  	int status;
497  
498  	if (!client)
499  		return 0;
500  
501  	client->irq = client->init_irq;
502  
503  	if (!client->irq) {
504  		int irq = -ENOENT;
505  
506  		if (client->flags & I2C_CLIENT_HOST_NOTIFY) {
507  			dev_dbg(dev, "Using Host Notify IRQ\n");
508  			/* Keep adapter active when Host Notify is required */
509  			pm_runtime_get_sync(&client->adapter->dev);
510  			irq = i2c_smbus_host_notify_to_irq(client);
511  		} else if (dev->of_node) {
512  			irq = of_irq_get_byname(dev->of_node, "irq");
513  			if (irq == -EINVAL || irq == -ENODATA)
514  				irq = of_irq_get(dev->of_node, 0);
515  		} else if (ACPI_COMPANION(dev)) {
516  			bool wake_capable;
517  
518  			irq = i2c_acpi_get_irq(client, &wake_capable);
519  			if (irq > 0 && wake_capable)
520  				client->flags |= I2C_CLIENT_WAKE;
521  		}
522  		if (irq == -EPROBE_DEFER) {
523  			status = irq;
524  			goto put_sync_adapter;
525  		}
526  
527  		if (irq < 0)
528  			irq = 0;
529  
530  		client->irq = irq;
531  	}
532  
533  	driver = to_i2c_driver(dev->driver);
534  
535  	/*
536  	 * An I2C ID table is not mandatory, if and only if, a suitable OF
537  	 * or ACPI ID table is supplied for the probing device.
538  	 */
539  	if (!driver->id_table &&
540  	    !acpi_driver_match_device(dev, dev->driver) &&
541  	    !i2c_of_match_device(dev->driver->of_match_table, client)) {
542  		status = -ENODEV;
543  		goto put_sync_adapter;
544  	}
545  
546  	if (client->flags & I2C_CLIENT_WAKE) {
547  		int wakeirq;
548  
549  		wakeirq = of_irq_get_byname(dev->of_node, "wakeup");
550  		if (wakeirq == -EPROBE_DEFER) {
551  			status = wakeirq;
552  			goto put_sync_adapter;
553  		}
554  
555  		device_init_wakeup(&client->dev, true);
556  
557  		if (wakeirq > 0 && wakeirq != client->irq)
558  			status = dev_pm_set_dedicated_wake_irq(dev, wakeirq);
559  		else if (client->irq > 0)
560  			status = dev_pm_set_wake_irq(dev, client->irq);
561  		else
562  			status = 0;
563  
564  		if (status)
565  			dev_warn(&client->dev, "failed to set up wakeup irq\n");
566  	}
567  
568  	dev_dbg(dev, "probe\n");
569  
570  	status = of_clk_set_defaults(dev->of_node, false);
571  	if (status < 0)
572  		goto err_clear_wakeup_irq;
573  
574  	do_power_on = !i2c_acpi_waive_d0_probe(dev);
575  	status = dev_pm_domain_attach(&client->dev, do_power_on);
576  	if (status)
577  		goto err_clear_wakeup_irq;
578  
579  	client->devres_group_id = devres_open_group(&client->dev, NULL,
580  						    GFP_KERNEL);
581  	if (!client->devres_group_id) {
582  		status = -ENOMEM;
583  		goto err_detach_pm_domain;
584  	}
585  
586  	if (driver->probe)
587  		status = driver->probe(client);
588  	else
589  		status = -EINVAL;
590  
591  	/*
592  	 * Note that we are not closing the devres group opened above so
593  	 * even resources that were attached to the device after probe is
594  	 * run are released when i2c_device_remove() is executed. This is
595  	 * needed as some drivers would allocate additional resources,
596  	 * for example when updating firmware.
597  	 */
598  
599  	if (status)
600  		goto err_release_driver_resources;
601  
602  	return 0;
603  
604  err_release_driver_resources:
605  	devres_release_group(&client->dev, client->devres_group_id);
606  err_detach_pm_domain:
607  	dev_pm_domain_detach(&client->dev, do_power_on);
608  err_clear_wakeup_irq:
609  	dev_pm_clear_wake_irq(&client->dev);
610  	device_init_wakeup(&client->dev, false);
611  put_sync_adapter:
612  	if (client->flags & I2C_CLIENT_HOST_NOTIFY)
613  		pm_runtime_put_sync(&client->adapter->dev);
614  
615  	return status;
616  }
617  
i2c_device_remove(struct device * dev)618  static void i2c_device_remove(struct device *dev)
619  {
620  	struct i2c_client	*client = to_i2c_client(dev);
621  	struct i2c_driver	*driver;
622  
623  	driver = to_i2c_driver(dev->driver);
624  	if (driver->remove) {
625  		dev_dbg(dev, "remove\n");
626  
627  		driver->remove(client);
628  	}
629  
630  	devres_release_group(&client->dev, client->devres_group_id);
631  
632  	dev_pm_domain_detach(&client->dev, true);
633  
634  	dev_pm_clear_wake_irq(&client->dev);
635  	device_init_wakeup(&client->dev, false);
636  
637  	client->irq = 0;
638  	if (client->flags & I2C_CLIENT_HOST_NOTIFY)
639  		pm_runtime_put(&client->adapter->dev);
640  }
641  
i2c_device_shutdown(struct device * dev)642  static void i2c_device_shutdown(struct device *dev)
643  {
644  	struct i2c_client *client = i2c_verify_client(dev);
645  	struct i2c_driver *driver;
646  
647  	if (!client || !dev->driver)
648  		return;
649  	driver = to_i2c_driver(dev->driver);
650  	if (driver->shutdown)
651  		driver->shutdown(client);
652  	else if (client->irq > 0)
653  		disable_irq(client->irq);
654  }
655  
i2c_client_dev_release(struct device * dev)656  static void i2c_client_dev_release(struct device *dev)
657  {
658  	kfree(to_i2c_client(dev));
659  }
660  
661  static ssize_t
name_show(struct device * dev,struct device_attribute * attr,char * buf)662  name_show(struct device *dev, struct device_attribute *attr, char *buf)
663  {
664  	return sprintf(buf, "%s\n", dev->type == &i2c_client_type ?
665  		       to_i2c_client(dev)->name : to_i2c_adapter(dev)->name);
666  }
667  static DEVICE_ATTR_RO(name);
668  
669  static ssize_t
modalias_show(struct device * dev,struct device_attribute * attr,char * buf)670  modalias_show(struct device *dev, struct device_attribute *attr, char *buf)
671  {
672  	struct i2c_client *client = to_i2c_client(dev);
673  	int len;
674  
675  	len = of_device_modalias(dev, buf, PAGE_SIZE);
676  	if (len != -ENODEV)
677  		return len;
678  
679  	len = acpi_device_modalias(dev, buf, PAGE_SIZE - 1);
680  	if (len != -ENODEV)
681  		return len;
682  
683  	return sprintf(buf, "%s%s\n", I2C_MODULE_PREFIX, client->name);
684  }
685  static DEVICE_ATTR_RO(modalias);
686  
687  static struct attribute *i2c_dev_attrs[] = {
688  	&dev_attr_name.attr,
689  	/* modalias helps coldplug:  modprobe $(cat .../modalias) */
690  	&dev_attr_modalias.attr,
691  	NULL
692  };
693  ATTRIBUTE_GROUPS(i2c_dev);
694  
695  const struct bus_type i2c_bus_type = {
696  	.name		= "i2c",
697  	.match		= i2c_device_match,
698  	.probe		= i2c_device_probe,
699  	.remove		= i2c_device_remove,
700  	.shutdown	= i2c_device_shutdown,
701  };
702  EXPORT_SYMBOL_GPL(i2c_bus_type);
703  
704  const struct device_type i2c_client_type = {
705  	.groups		= i2c_dev_groups,
706  	.uevent		= i2c_device_uevent,
707  	.release	= i2c_client_dev_release,
708  };
709  EXPORT_SYMBOL_GPL(i2c_client_type);
710  
711  
712  /**
713   * i2c_verify_client - return parameter as i2c_client, or NULL
714   * @dev: device, probably from some driver model iterator
715   *
716   * When traversing the driver model tree, perhaps using driver model
717   * iterators like @device_for_each_child(), you can't assume very much
718   * about the nodes you find.  Use this function to avoid oopses caused
719   * by wrongly treating some non-I2C device as an i2c_client.
720   */
i2c_verify_client(struct device * dev)721  struct i2c_client *i2c_verify_client(struct device *dev)
722  {
723  	return (dev->type == &i2c_client_type)
724  			? to_i2c_client(dev)
725  			: NULL;
726  }
727  EXPORT_SYMBOL(i2c_verify_client);
728  
729  
730  /* Return a unique address which takes the flags of the client into account */
i2c_encode_flags_to_addr(struct i2c_client * client)731  static unsigned short i2c_encode_flags_to_addr(struct i2c_client *client)
732  {
733  	unsigned short addr = client->addr;
734  
735  	/* For some client flags, add an arbitrary offset to avoid collisions */
736  	if (client->flags & I2C_CLIENT_TEN)
737  		addr |= I2C_ADDR_OFFSET_TEN_BIT;
738  
739  	if (client->flags & I2C_CLIENT_SLAVE)
740  		addr |= I2C_ADDR_OFFSET_SLAVE;
741  
742  	return addr;
743  }
744  
745  /* This is a permissive address validity check, I2C address map constraints
746   * are purposely not enforced, except for the general call address. */
i2c_check_addr_validity(unsigned int addr,unsigned short flags)747  static int i2c_check_addr_validity(unsigned int addr, unsigned short flags)
748  {
749  	if (flags & I2C_CLIENT_TEN) {
750  		/* 10-bit address, all values are valid */
751  		if (addr > 0x3ff)
752  			return -EINVAL;
753  	} else {
754  		/* 7-bit address, reject the general call address */
755  		if (addr == 0x00 || addr > 0x7f)
756  			return -EINVAL;
757  	}
758  	return 0;
759  }
760  
761  /* And this is a strict address validity check, used when probing. If a
762   * device uses a reserved address, then it shouldn't be probed. 7-bit
763   * addressing is assumed, 10-bit address devices are rare and should be
764   * explicitly enumerated. */
i2c_check_7bit_addr_validity_strict(unsigned short addr)765  int i2c_check_7bit_addr_validity_strict(unsigned short addr)
766  {
767  	/*
768  	 * Reserved addresses per I2C specification:
769  	 *  0x00       General call address / START byte
770  	 *  0x01       CBUS address
771  	 *  0x02       Reserved for different bus format
772  	 *  0x03       Reserved for future purposes
773  	 *  0x04-0x07  Hs-mode master code
774  	 *  0x78-0x7b  10-bit slave addressing
775  	 *  0x7c-0x7f  Reserved for future purposes
776  	 */
777  	if (addr < 0x08 || addr > 0x77)
778  		return -EINVAL;
779  	return 0;
780  }
781  
__i2c_check_addr_busy(struct device * dev,void * addrp)782  static int __i2c_check_addr_busy(struct device *dev, void *addrp)
783  {
784  	struct i2c_client	*client = i2c_verify_client(dev);
785  	int			addr = *(int *)addrp;
786  
787  	if (client && i2c_encode_flags_to_addr(client) == addr)
788  		return -EBUSY;
789  	return 0;
790  }
791  
792  /* walk up mux tree */
i2c_check_mux_parents(struct i2c_adapter * adapter,int addr)793  static int i2c_check_mux_parents(struct i2c_adapter *adapter, int addr)
794  {
795  	struct i2c_adapter *parent = i2c_parent_is_i2c_adapter(adapter);
796  	int result;
797  
798  	result = device_for_each_child(&adapter->dev, &addr,
799  					__i2c_check_addr_busy);
800  
801  	if (!result && parent)
802  		result = i2c_check_mux_parents(parent, addr);
803  
804  	return result;
805  }
806  
807  /* recurse down mux tree */
i2c_check_mux_children(struct device * dev,void * addrp)808  static int i2c_check_mux_children(struct device *dev, void *addrp)
809  {
810  	int result;
811  
812  	if (dev->type == &i2c_adapter_type)
813  		result = device_for_each_child(dev, addrp,
814  						i2c_check_mux_children);
815  	else
816  		result = __i2c_check_addr_busy(dev, addrp);
817  
818  	return result;
819  }
820  
i2c_check_addr_busy(struct i2c_adapter * adapter,int addr)821  static int i2c_check_addr_busy(struct i2c_adapter *adapter, int addr)
822  {
823  	struct i2c_adapter *parent = i2c_parent_is_i2c_adapter(adapter);
824  	int result = 0;
825  
826  	if (parent)
827  		result = i2c_check_mux_parents(parent, addr);
828  
829  	if (!result)
830  		result = device_for_each_child(&adapter->dev, &addr,
831  						i2c_check_mux_children);
832  
833  	return result;
834  }
835  
836  /**
837   * i2c_adapter_lock_bus - Get exclusive access to an I2C bus segment
838   * @adapter: Target I2C bus segment
839   * @flags: I2C_LOCK_ROOT_ADAPTER locks the root i2c adapter, I2C_LOCK_SEGMENT
840   *	locks only this branch in the adapter tree
841   */
i2c_adapter_lock_bus(struct i2c_adapter * adapter,unsigned int flags)842  static void i2c_adapter_lock_bus(struct i2c_adapter *adapter,
843  				 unsigned int flags)
844  {
845  	rt_mutex_lock_nested(&adapter->bus_lock, i2c_adapter_depth(adapter));
846  }
847  
848  /**
849   * i2c_adapter_trylock_bus - Try to get exclusive access to an I2C bus segment
850   * @adapter: Target I2C bus segment
851   * @flags: I2C_LOCK_ROOT_ADAPTER trylocks the root i2c adapter, I2C_LOCK_SEGMENT
852   *	trylocks only this branch in the adapter tree
853   */
i2c_adapter_trylock_bus(struct i2c_adapter * adapter,unsigned int flags)854  static int i2c_adapter_trylock_bus(struct i2c_adapter *adapter,
855  				   unsigned int flags)
856  {
857  	return rt_mutex_trylock(&adapter->bus_lock);
858  }
859  
860  /**
861   * i2c_adapter_unlock_bus - Release exclusive access to an I2C bus segment
862   * @adapter: Target I2C bus segment
863   * @flags: I2C_LOCK_ROOT_ADAPTER unlocks the root i2c adapter, I2C_LOCK_SEGMENT
864   *	unlocks only this branch in the adapter tree
865   */
i2c_adapter_unlock_bus(struct i2c_adapter * adapter,unsigned int flags)866  static void i2c_adapter_unlock_bus(struct i2c_adapter *adapter,
867  				   unsigned int flags)
868  {
869  	rt_mutex_unlock(&adapter->bus_lock);
870  }
871  
i2c_dev_set_name(struct i2c_adapter * adap,struct i2c_client * client,struct i2c_board_info const * info)872  static void i2c_dev_set_name(struct i2c_adapter *adap,
873  			     struct i2c_client *client,
874  			     struct i2c_board_info const *info)
875  {
876  	struct acpi_device *adev = ACPI_COMPANION(&client->dev);
877  
878  	if (info && info->dev_name) {
879  		dev_set_name(&client->dev, "i2c-%s", info->dev_name);
880  		return;
881  	}
882  
883  	if (adev) {
884  		dev_set_name(&client->dev, "i2c-%s", acpi_dev_name(adev));
885  		return;
886  	}
887  
888  	dev_set_name(&client->dev, "%d-%04x", i2c_adapter_id(adap),
889  		     i2c_encode_flags_to_addr(client));
890  }
891  
i2c_dev_irq_from_resources(const struct resource * resources,unsigned int num_resources)892  int i2c_dev_irq_from_resources(const struct resource *resources,
893  			       unsigned int num_resources)
894  {
895  	struct irq_data *irqd;
896  	int i;
897  
898  	for (i = 0; i < num_resources; i++) {
899  		const struct resource *r = &resources[i];
900  
901  		if (resource_type(r) != IORESOURCE_IRQ)
902  			continue;
903  
904  		if (r->flags & IORESOURCE_BITS) {
905  			irqd = irq_get_irq_data(r->start);
906  			if (!irqd)
907  				break;
908  
909  			irqd_set_trigger_type(irqd, r->flags & IORESOURCE_BITS);
910  		}
911  
912  		return r->start;
913  	}
914  
915  	return 0;
916  }
917  
918  /*
919   * Serialize device instantiation in case it can be instantiated explicitly
920   * and by auto-detection
921   */
i2c_lock_addr(struct i2c_adapter * adap,unsigned short addr,unsigned short flags)922  static int i2c_lock_addr(struct i2c_adapter *adap, unsigned short addr,
923  			 unsigned short flags)
924  {
925  	if (!(flags & I2C_CLIENT_TEN) &&
926  	    test_and_set_bit(addr, adap->addrs_in_instantiation))
927  		return -EBUSY;
928  
929  	return 0;
930  }
931  
i2c_unlock_addr(struct i2c_adapter * adap,unsigned short addr,unsigned short flags)932  static void i2c_unlock_addr(struct i2c_adapter *adap, unsigned short addr,
933  			    unsigned short flags)
934  {
935  	if (!(flags & I2C_CLIENT_TEN))
936  		clear_bit(addr, adap->addrs_in_instantiation);
937  }
938  
939  /**
940   * i2c_new_client_device - instantiate an i2c device
941   * @adap: the adapter managing the device
942   * @info: describes one I2C device; bus_num is ignored
943   * Context: can sleep
944   *
945   * Create an i2c device. Binding is handled through driver model
946   * probe()/remove() methods.  A driver may be bound to this device when we
947   * return from this function, or any later moment (e.g. maybe hotplugging will
948   * load the driver module).  This call is not appropriate for use by mainboard
949   * initialization logic, which usually runs during an arch_initcall() long
950   * before any i2c_adapter could exist.
951   *
952   * This returns the new i2c client, which may be saved for later use with
953   * i2c_unregister_device(); or an ERR_PTR to describe the error.
954   */
955  struct i2c_client *
i2c_new_client_device(struct i2c_adapter * adap,struct i2c_board_info const * info)956  i2c_new_client_device(struct i2c_adapter *adap, struct i2c_board_info const *info)
957  {
958  	struct i2c_client *client;
959  	bool need_put = false;
960  	int status;
961  
962  	client = kzalloc(sizeof *client, GFP_KERNEL);
963  	if (!client)
964  		return ERR_PTR(-ENOMEM);
965  
966  	client->adapter = adap;
967  
968  	client->dev.platform_data = info->platform_data;
969  	client->flags = info->flags;
970  	client->addr = info->addr;
971  
972  	client->init_irq = info->irq;
973  	if (!client->init_irq)
974  		client->init_irq = i2c_dev_irq_from_resources(info->resources,
975  							 info->num_resources);
976  
977  	strscpy(client->name, info->type, sizeof(client->name));
978  
979  	status = i2c_check_addr_validity(client->addr, client->flags);
980  	if (status) {
981  		dev_err(&adap->dev, "Invalid %d-bit I2C address 0x%02hx\n",
982  			client->flags & I2C_CLIENT_TEN ? 10 : 7, client->addr);
983  		goto out_err_silent;
984  	}
985  
986  	status = i2c_lock_addr(adap, client->addr, client->flags);
987  	if (status)
988  		goto out_err_silent;
989  
990  	/* Check for address business */
991  	status = i2c_check_addr_busy(adap, i2c_encode_flags_to_addr(client));
992  	if (status)
993  		goto out_err;
994  
995  	client->dev.parent = &client->adapter->dev;
996  	client->dev.bus = &i2c_bus_type;
997  	client->dev.type = &i2c_client_type;
998  	client->dev.of_node = of_node_get(info->of_node);
999  	client->dev.fwnode = info->fwnode;
1000  
1001  	device_enable_async_suspend(&client->dev);
1002  
1003  	if (info->swnode) {
1004  		status = device_add_software_node(&client->dev, info->swnode);
1005  		if (status) {
1006  			dev_err(&adap->dev,
1007  				"Failed to add software node to client %s: %d\n",
1008  				client->name, status);
1009  			goto out_err_put_of_node;
1010  		}
1011  	}
1012  
1013  	i2c_dev_set_name(adap, client, info);
1014  	status = device_register(&client->dev);
1015  	if (status)
1016  		goto out_remove_swnode;
1017  
1018  	dev_dbg(&adap->dev, "client [%s] registered with bus id %s\n",
1019  		client->name, dev_name(&client->dev));
1020  
1021  	i2c_unlock_addr(adap, client->addr, client->flags);
1022  
1023  	return client;
1024  
1025  out_remove_swnode:
1026  	device_remove_software_node(&client->dev);
1027  	need_put = true;
1028  out_err_put_of_node:
1029  	of_node_put(info->of_node);
1030  out_err:
1031  	dev_err(&adap->dev,
1032  		"Failed to register i2c client %s at 0x%02x (%d)\n",
1033  		client->name, client->addr, status);
1034  	i2c_unlock_addr(adap, client->addr, client->flags);
1035  out_err_silent:
1036  	if (need_put)
1037  		put_device(&client->dev);
1038  	else
1039  		kfree(client);
1040  	return ERR_PTR(status);
1041  }
1042  EXPORT_SYMBOL_GPL(i2c_new_client_device);
1043  
1044  /**
1045   * i2c_unregister_device - reverse effect of i2c_new_*_device()
1046   * @client: value returned from i2c_new_*_device()
1047   * Context: can sleep
1048   */
i2c_unregister_device(struct i2c_client * client)1049  void i2c_unregister_device(struct i2c_client *client)
1050  {
1051  	if (IS_ERR_OR_NULL(client))
1052  		return;
1053  
1054  	if (client->dev.of_node) {
1055  		of_node_clear_flag(client->dev.of_node, OF_POPULATED);
1056  		of_node_put(client->dev.of_node);
1057  	}
1058  
1059  	if (ACPI_COMPANION(&client->dev))
1060  		acpi_device_clear_enumerated(ACPI_COMPANION(&client->dev));
1061  	device_remove_software_node(&client->dev);
1062  	device_unregister(&client->dev);
1063  }
1064  EXPORT_SYMBOL_GPL(i2c_unregister_device);
1065  
1066  /**
1067   * i2c_find_device_by_fwnode() - find an i2c_client for the fwnode
1068   * @fwnode: &struct fwnode_handle corresponding to the &struct i2c_client
1069   *
1070   * Look up and return the &struct i2c_client corresponding to the @fwnode.
1071   * If no client can be found, or @fwnode is NULL, this returns NULL.
1072   *
1073   * The user must call put_device(&client->dev) once done with the i2c client.
1074   */
i2c_find_device_by_fwnode(struct fwnode_handle * fwnode)1075  struct i2c_client *i2c_find_device_by_fwnode(struct fwnode_handle *fwnode)
1076  {
1077  	struct i2c_client *client;
1078  	struct device *dev;
1079  
1080  	if (!fwnode)
1081  		return NULL;
1082  
1083  	dev = bus_find_device_by_fwnode(&i2c_bus_type, fwnode);
1084  	if (!dev)
1085  		return NULL;
1086  
1087  	client = i2c_verify_client(dev);
1088  	if (!client)
1089  		put_device(dev);
1090  
1091  	return client;
1092  }
1093  EXPORT_SYMBOL(i2c_find_device_by_fwnode);
1094  
1095  
1096  static const struct i2c_device_id dummy_id[] = {
1097  	{ "dummy", },
1098  	{ "smbus_host_notify", },
1099  	{ }
1100  };
1101  
dummy_probe(struct i2c_client * client)1102  static int dummy_probe(struct i2c_client *client)
1103  {
1104  	return 0;
1105  }
1106  
1107  static struct i2c_driver dummy_driver = {
1108  	.driver.name	= "dummy",
1109  	.probe		= dummy_probe,
1110  	.id_table	= dummy_id,
1111  };
1112  
1113  /**
1114   * i2c_new_dummy_device - return a new i2c device bound to a dummy driver
1115   * @adapter: the adapter managing the device
1116   * @address: seven bit address to be used
1117   * Context: can sleep
1118   *
1119   * This returns an I2C client bound to the "dummy" driver, intended for use
1120   * with devices that consume multiple addresses.  Examples of such chips
1121   * include various EEPROMS (like 24c04 and 24c08 models).
1122   *
1123   * These dummy devices have two main uses.  First, most I2C and SMBus calls
1124   * except i2c_transfer() need a client handle; the dummy will be that handle.
1125   * And second, this prevents the specified address from being bound to a
1126   * different driver.
1127   *
1128   * This returns the new i2c client, which should be saved for later use with
1129   * i2c_unregister_device(); or an ERR_PTR to describe the error.
1130   */
i2c_new_dummy_device(struct i2c_adapter * adapter,u16 address)1131  struct i2c_client *i2c_new_dummy_device(struct i2c_adapter *adapter, u16 address)
1132  {
1133  	struct i2c_board_info info = {
1134  		I2C_BOARD_INFO("dummy", address),
1135  	};
1136  
1137  	return i2c_new_client_device(adapter, &info);
1138  }
1139  EXPORT_SYMBOL_GPL(i2c_new_dummy_device);
1140  
devm_i2c_release_dummy(void * client)1141  static void devm_i2c_release_dummy(void *client)
1142  {
1143  	i2c_unregister_device(client);
1144  }
1145  
1146  /**
1147   * devm_i2c_new_dummy_device - return a new i2c device bound to a dummy driver
1148   * @dev: device the managed resource is bound to
1149   * @adapter: the adapter managing the device
1150   * @address: seven bit address to be used
1151   * Context: can sleep
1152   *
1153   * This is the device-managed version of @i2c_new_dummy_device. It returns the
1154   * new i2c client or an ERR_PTR in case of an error.
1155   */
devm_i2c_new_dummy_device(struct device * dev,struct i2c_adapter * adapter,u16 address)1156  struct i2c_client *devm_i2c_new_dummy_device(struct device *dev,
1157  					     struct i2c_adapter *adapter,
1158  					     u16 address)
1159  {
1160  	struct i2c_client *client;
1161  	int ret;
1162  
1163  	client = i2c_new_dummy_device(adapter, address);
1164  	if (IS_ERR(client))
1165  		return client;
1166  
1167  	ret = devm_add_action_or_reset(dev, devm_i2c_release_dummy, client);
1168  	if (ret)
1169  		return ERR_PTR(ret);
1170  
1171  	return client;
1172  }
1173  EXPORT_SYMBOL_GPL(devm_i2c_new_dummy_device);
1174  
1175  /**
1176   * i2c_new_ancillary_device - Helper to get the instantiated secondary address
1177   * and create the associated device
1178   * @client: Handle to the primary client
1179   * @name: Handle to specify which secondary address to get
1180   * @default_addr: Used as a fallback if no secondary address was specified
1181   * Context: can sleep
1182   *
1183   * I2C clients can be composed of multiple I2C slaves bound together in a single
1184   * component. The I2C client driver then binds to the master I2C slave and needs
1185   * to create I2C dummy clients to communicate with all the other slaves.
1186   *
1187   * This function creates and returns an I2C dummy client whose I2C address is
1188   * retrieved from the platform firmware based on the given slave name. If no
1189   * address is specified by the firmware default_addr is used.
1190   *
1191   * On DT-based platforms the address is retrieved from the "reg" property entry
1192   * cell whose "reg-names" value matches the slave name.
1193   *
1194   * This returns the new i2c client, which should be saved for later use with
1195   * i2c_unregister_device(); or an ERR_PTR to describe the error.
1196   */
i2c_new_ancillary_device(struct i2c_client * client,const char * name,u16 default_addr)1197  struct i2c_client *i2c_new_ancillary_device(struct i2c_client *client,
1198  						const char *name,
1199  						u16 default_addr)
1200  {
1201  	struct device_node *np = client->dev.of_node;
1202  	u32 addr = default_addr;
1203  	int i;
1204  
1205  	if (np) {
1206  		i = of_property_match_string(np, "reg-names", name);
1207  		if (i >= 0)
1208  			of_property_read_u32_index(np, "reg", i, &addr);
1209  	}
1210  
1211  	dev_dbg(&client->adapter->dev, "Address for %s : 0x%x\n", name, addr);
1212  	return i2c_new_dummy_device(client->adapter, addr);
1213  }
1214  EXPORT_SYMBOL_GPL(i2c_new_ancillary_device);
1215  
1216  /* ------------------------------------------------------------------------- */
1217  
1218  /* I2C bus adapters -- one roots each I2C or SMBUS segment */
1219  
i2c_adapter_dev_release(struct device * dev)1220  static void i2c_adapter_dev_release(struct device *dev)
1221  {
1222  	struct i2c_adapter *adap = to_i2c_adapter(dev);
1223  	complete(&adap->dev_released);
1224  }
1225  
i2c_adapter_depth(struct i2c_adapter * adapter)1226  unsigned int i2c_adapter_depth(struct i2c_adapter *adapter)
1227  {
1228  	unsigned int depth = 0;
1229  	struct device *parent;
1230  
1231  	for (parent = adapter->dev.parent; parent; parent = parent->parent)
1232  		if (parent->type == &i2c_adapter_type)
1233  			depth++;
1234  
1235  	WARN_ONCE(depth >= MAX_LOCKDEP_SUBCLASSES,
1236  		  "adapter depth exceeds lockdep subclass limit\n");
1237  
1238  	return depth;
1239  }
1240  EXPORT_SYMBOL_GPL(i2c_adapter_depth);
1241  
1242  /*
1243   * Let users instantiate I2C devices through sysfs. This can be used when
1244   * platform initialization code doesn't contain the proper data for
1245   * whatever reason. Also useful for drivers that do device detection and
1246   * detection fails, either because the device uses an unexpected address,
1247   * or this is a compatible device with different ID register values.
1248   *
1249   * Parameter checking may look overzealous, but we really don't want
1250   * the user to provide incorrect parameters.
1251   */
1252  static ssize_t
new_device_store(struct device * dev,struct device_attribute * attr,const char * buf,size_t count)1253  new_device_store(struct device *dev, struct device_attribute *attr,
1254  		 const char *buf, size_t count)
1255  {
1256  	struct i2c_adapter *adap = to_i2c_adapter(dev);
1257  	struct i2c_board_info info;
1258  	struct i2c_client *client;
1259  	char *blank, end;
1260  	int res;
1261  
1262  	memset(&info, 0, sizeof(struct i2c_board_info));
1263  
1264  	blank = strchr(buf, ' ');
1265  	if (!blank) {
1266  		dev_err(dev, "%s: Missing parameters\n", "new_device");
1267  		return -EINVAL;
1268  	}
1269  	if (blank - buf > I2C_NAME_SIZE - 1) {
1270  		dev_err(dev, "%s: Invalid device name\n", "new_device");
1271  		return -EINVAL;
1272  	}
1273  	memcpy(info.type, buf, blank - buf);
1274  
1275  	/* Parse remaining parameters, reject extra parameters */
1276  	res = sscanf(++blank, "%hi%c", &info.addr, &end);
1277  	if (res < 1) {
1278  		dev_err(dev, "%s: Can't parse I2C address\n", "new_device");
1279  		return -EINVAL;
1280  	}
1281  	if (res > 1  && end != '\n') {
1282  		dev_err(dev, "%s: Extra parameters\n", "new_device");
1283  		return -EINVAL;
1284  	}
1285  
1286  	if ((info.addr & I2C_ADDR_OFFSET_TEN_BIT) == I2C_ADDR_OFFSET_TEN_BIT) {
1287  		info.addr &= ~I2C_ADDR_OFFSET_TEN_BIT;
1288  		info.flags |= I2C_CLIENT_TEN;
1289  	}
1290  
1291  	if (info.addr & I2C_ADDR_OFFSET_SLAVE) {
1292  		info.addr &= ~I2C_ADDR_OFFSET_SLAVE;
1293  		info.flags |= I2C_CLIENT_SLAVE;
1294  	}
1295  
1296  	client = i2c_new_client_device(adap, &info);
1297  	if (IS_ERR(client))
1298  		return PTR_ERR(client);
1299  
1300  	/* Keep track of the added device */
1301  	mutex_lock(&adap->userspace_clients_lock);
1302  	list_add_tail(&client->detected, &adap->userspace_clients);
1303  	mutex_unlock(&adap->userspace_clients_lock);
1304  	dev_info(dev, "%s: Instantiated device %s at 0x%02hx\n", "new_device",
1305  		 info.type, info.addr);
1306  
1307  	return count;
1308  }
1309  static DEVICE_ATTR_WO(new_device);
1310  
1311  /*
1312   * And of course let the users delete the devices they instantiated, if
1313   * they got it wrong. This interface can only be used to delete devices
1314   * instantiated by i2c_sysfs_new_device above. This guarantees that we
1315   * don't delete devices to which some kernel code still has references.
1316   *
1317   * Parameter checking may look overzealous, but we really don't want
1318   * the user to delete the wrong device.
1319   */
1320  static ssize_t
delete_device_store(struct device * dev,struct device_attribute * attr,const char * buf,size_t count)1321  delete_device_store(struct device *dev, struct device_attribute *attr,
1322  		    const char *buf, size_t count)
1323  {
1324  	struct i2c_adapter *adap = to_i2c_adapter(dev);
1325  	struct i2c_client *client, *next;
1326  	unsigned short addr;
1327  	char end;
1328  	int res;
1329  
1330  	/* Parse parameters, reject extra parameters */
1331  	res = sscanf(buf, "%hi%c", &addr, &end);
1332  	if (res < 1) {
1333  		dev_err(dev, "%s: Can't parse I2C address\n", "delete_device");
1334  		return -EINVAL;
1335  	}
1336  	if (res > 1  && end != '\n') {
1337  		dev_err(dev, "%s: Extra parameters\n", "delete_device");
1338  		return -EINVAL;
1339  	}
1340  
1341  	/* Make sure the device was added through sysfs */
1342  	res = -ENOENT;
1343  	mutex_lock_nested(&adap->userspace_clients_lock,
1344  			  i2c_adapter_depth(adap));
1345  	list_for_each_entry_safe(client, next, &adap->userspace_clients,
1346  				 detected) {
1347  		if (i2c_encode_flags_to_addr(client) == addr) {
1348  			dev_info(dev, "%s: Deleting device %s at 0x%02hx\n",
1349  				 "delete_device", client->name, client->addr);
1350  
1351  			list_del(&client->detected);
1352  			i2c_unregister_device(client);
1353  			res = count;
1354  			break;
1355  		}
1356  	}
1357  	mutex_unlock(&adap->userspace_clients_lock);
1358  
1359  	if (res < 0)
1360  		dev_err(dev, "%s: Can't find device in list\n",
1361  			"delete_device");
1362  	return res;
1363  }
1364  static DEVICE_ATTR_IGNORE_LOCKDEP(delete_device, S_IWUSR, NULL,
1365  				  delete_device_store);
1366  
1367  static struct attribute *i2c_adapter_attrs[] = {
1368  	&dev_attr_name.attr,
1369  	&dev_attr_new_device.attr,
1370  	&dev_attr_delete_device.attr,
1371  	NULL
1372  };
1373  ATTRIBUTE_GROUPS(i2c_adapter);
1374  
1375  const struct device_type i2c_adapter_type = {
1376  	.groups		= i2c_adapter_groups,
1377  	.release	= i2c_adapter_dev_release,
1378  };
1379  EXPORT_SYMBOL_GPL(i2c_adapter_type);
1380  
1381  /**
1382   * i2c_verify_adapter - return parameter as i2c_adapter or NULL
1383   * @dev: device, probably from some driver model iterator
1384   *
1385   * When traversing the driver model tree, perhaps using driver model
1386   * iterators like @device_for_each_child(), you can't assume very much
1387   * about the nodes you find.  Use this function to avoid oopses caused
1388   * by wrongly treating some non-I2C device as an i2c_adapter.
1389   */
i2c_verify_adapter(struct device * dev)1390  struct i2c_adapter *i2c_verify_adapter(struct device *dev)
1391  {
1392  	return (dev->type == &i2c_adapter_type)
1393  			? to_i2c_adapter(dev)
1394  			: NULL;
1395  }
1396  EXPORT_SYMBOL(i2c_verify_adapter);
1397  
i2c_scan_static_board_info(struct i2c_adapter * adapter)1398  static void i2c_scan_static_board_info(struct i2c_adapter *adapter)
1399  {
1400  	struct i2c_devinfo	*devinfo;
1401  
1402  	down_read(&__i2c_board_lock);
1403  	list_for_each_entry(devinfo, &__i2c_board_list, list) {
1404  		if (devinfo->busnum == adapter->nr &&
1405  		    IS_ERR(i2c_new_client_device(adapter, &devinfo->board_info)))
1406  			dev_err(&adapter->dev,
1407  				"Can't create device at 0x%02x\n",
1408  				devinfo->board_info.addr);
1409  	}
1410  	up_read(&__i2c_board_lock);
1411  }
1412  
i2c_do_add_adapter(struct i2c_driver * driver,struct i2c_adapter * adap)1413  static int i2c_do_add_adapter(struct i2c_driver *driver,
1414  			      struct i2c_adapter *adap)
1415  {
1416  	/* Detect supported devices on that bus, and instantiate them */
1417  	i2c_detect(adap, driver);
1418  
1419  	return 0;
1420  }
1421  
__process_new_adapter(struct device_driver * d,void * data)1422  static int __process_new_adapter(struct device_driver *d, void *data)
1423  {
1424  	return i2c_do_add_adapter(to_i2c_driver(d), data);
1425  }
1426  
1427  static const struct i2c_lock_operations i2c_adapter_lock_ops = {
1428  	.lock_bus =    i2c_adapter_lock_bus,
1429  	.trylock_bus = i2c_adapter_trylock_bus,
1430  	.unlock_bus =  i2c_adapter_unlock_bus,
1431  };
1432  
i2c_host_notify_irq_teardown(struct i2c_adapter * adap)1433  static void i2c_host_notify_irq_teardown(struct i2c_adapter *adap)
1434  {
1435  	struct irq_domain *domain = adap->host_notify_domain;
1436  	irq_hw_number_t hwirq;
1437  
1438  	if (!domain)
1439  		return;
1440  
1441  	for (hwirq = 0 ; hwirq < I2C_ADDR_7BITS_COUNT ; hwirq++)
1442  		irq_dispose_mapping(irq_find_mapping(domain, hwirq));
1443  
1444  	irq_domain_remove(domain);
1445  	adap->host_notify_domain = NULL;
1446  }
1447  
i2c_host_notify_irq_map(struct irq_domain * h,unsigned int virq,irq_hw_number_t hw_irq_num)1448  static int i2c_host_notify_irq_map(struct irq_domain *h,
1449  					  unsigned int virq,
1450  					  irq_hw_number_t hw_irq_num)
1451  {
1452  	irq_set_chip_and_handler(virq, &dummy_irq_chip, handle_simple_irq);
1453  
1454  	return 0;
1455  }
1456  
1457  static const struct irq_domain_ops i2c_host_notify_irq_ops = {
1458  	.map = i2c_host_notify_irq_map,
1459  };
1460  
i2c_setup_host_notify_irq_domain(struct i2c_adapter * adap)1461  static int i2c_setup_host_notify_irq_domain(struct i2c_adapter *adap)
1462  {
1463  	struct irq_domain *domain;
1464  
1465  	if (!i2c_check_functionality(adap, I2C_FUNC_SMBUS_HOST_NOTIFY))
1466  		return 0;
1467  
1468  	domain = irq_domain_create_linear(adap->dev.parent->fwnode,
1469  					  I2C_ADDR_7BITS_COUNT,
1470  					  &i2c_host_notify_irq_ops, adap);
1471  	if (!domain)
1472  		return -ENOMEM;
1473  
1474  	adap->host_notify_domain = domain;
1475  
1476  	return 0;
1477  }
1478  
1479  /**
1480   * i2c_handle_smbus_host_notify - Forward a Host Notify event to the correct
1481   * I2C client.
1482   * @adap: the adapter
1483   * @addr: the I2C address of the notifying device
1484   * Context: can't sleep
1485   *
1486   * Helper function to be called from an I2C bus driver's interrupt
1487   * handler. It will schedule the Host Notify IRQ.
1488   */
i2c_handle_smbus_host_notify(struct i2c_adapter * adap,unsigned short addr)1489  int i2c_handle_smbus_host_notify(struct i2c_adapter *adap, unsigned short addr)
1490  {
1491  	int irq;
1492  
1493  	if (!adap)
1494  		return -EINVAL;
1495  
1496  	dev_dbg(&adap->dev, "Detected HostNotify from address 0x%02x", addr);
1497  
1498  	irq = irq_find_mapping(adap->host_notify_domain, addr);
1499  	if (irq <= 0)
1500  		return -ENXIO;
1501  
1502  	generic_handle_irq_safe(irq);
1503  
1504  	return 0;
1505  }
1506  EXPORT_SYMBOL_GPL(i2c_handle_smbus_host_notify);
1507  
i2c_register_adapter(struct i2c_adapter * adap)1508  static int i2c_register_adapter(struct i2c_adapter *adap)
1509  {
1510  	int res = -EINVAL;
1511  
1512  	/* Can't register until after driver model init */
1513  	if (WARN_ON(!is_registered)) {
1514  		res = -EAGAIN;
1515  		goto out_list;
1516  	}
1517  
1518  	/* Sanity checks */
1519  	if (WARN(!adap->name[0], "i2c adapter has no name"))
1520  		goto out_list;
1521  
1522  	if (!adap->algo) {
1523  		pr_err("adapter '%s': no algo supplied!\n", adap->name);
1524  		goto out_list;
1525  	}
1526  
1527  	if (!adap->lock_ops)
1528  		adap->lock_ops = &i2c_adapter_lock_ops;
1529  
1530  	adap->locked_flags = 0;
1531  	rt_mutex_init(&adap->bus_lock);
1532  	rt_mutex_init(&adap->mux_lock);
1533  	mutex_init(&adap->userspace_clients_lock);
1534  	INIT_LIST_HEAD(&adap->userspace_clients);
1535  
1536  	/* Set default timeout to 1 second if not already set */
1537  	if (adap->timeout == 0)
1538  		adap->timeout = HZ;
1539  
1540  	/* register soft irqs for Host Notify */
1541  	res = i2c_setup_host_notify_irq_domain(adap);
1542  	if (res) {
1543  		pr_err("adapter '%s': can't create Host Notify IRQs (%d)\n",
1544  		       adap->name, res);
1545  		goto out_list;
1546  	}
1547  
1548  	dev_set_name(&adap->dev, "i2c-%d", adap->nr);
1549  	adap->dev.bus = &i2c_bus_type;
1550  	adap->dev.type = &i2c_adapter_type;
1551  	device_initialize(&adap->dev);
1552  
1553  	/*
1554  	 * This adapter can be used as a parent immediately after device_add(),
1555  	 * setup runtime-pm (especially ignore-children) before hand.
1556  	 */
1557  	device_enable_async_suspend(&adap->dev);
1558  	pm_runtime_no_callbacks(&adap->dev);
1559  	pm_suspend_ignore_children(&adap->dev, true);
1560  	pm_runtime_enable(&adap->dev);
1561  
1562  	res = device_add(&adap->dev);
1563  	if (res) {
1564  		pr_err("adapter '%s': can't register device (%d)\n", adap->name, res);
1565  		goto out_list;
1566  	}
1567  
1568  	adap->debugfs = debugfs_create_dir(dev_name(&adap->dev), i2c_debugfs_root);
1569  
1570  	res = i2c_setup_smbus_alert(adap);
1571  	if (res)
1572  		goto out_reg;
1573  
1574  	res = i2c_init_recovery(adap);
1575  	if (res == -EPROBE_DEFER)
1576  		goto out_reg;
1577  
1578  	dev_dbg(&adap->dev, "adapter [%s] registered\n", adap->name);
1579  
1580  	/* create pre-declared device nodes */
1581  	of_i2c_register_devices(adap);
1582  	i2c_acpi_install_space_handler(adap);
1583  	i2c_acpi_register_devices(adap);
1584  
1585  	if (adap->nr < __i2c_first_dynamic_bus_num)
1586  		i2c_scan_static_board_info(adap);
1587  
1588  	/* Notify drivers */
1589  	mutex_lock(&core_lock);
1590  	bus_for_each_drv(&i2c_bus_type, NULL, adap, __process_new_adapter);
1591  	mutex_unlock(&core_lock);
1592  
1593  	return 0;
1594  
1595  out_reg:
1596  	debugfs_remove_recursive(adap->debugfs);
1597  	init_completion(&adap->dev_released);
1598  	device_unregister(&adap->dev);
1599  	wait_for_completion(&adap->dev_released);
1600  out_list:
1601  	mutex_lock(&core_lock);
1602  	idr_remove(&i2c_adapter_idr, adap->nr);
1603  	mutex_unlock(&core_lock);
1604  	return res;
1605  }
1606  
1607  /**
1608   * __i2c_add_numbered_adapter - i2c_add_numbered_adapter where nr is never -1
1609   * @adap: the adapter to register (with adap->nr initialized)
1610   * Context: can sleep
1611   *
1612   * See i2c_add_numbered_adapter() for details.
1613   */
__i2c_add_numbered_adapter(struct i2c_adapter * adap)1614  static int __i2c_add_numbered_adapter(struct i2c_adapter *adap)
1615  {
1616  	int id;
1617  
1618  	mutex_lock(&core_lock);
1619  	id = idr_alloc(&i2c_adapter_idr, adap, adap->nr, adap->nr + 1, GFP_KERNEL);
1620  	mutex_unlock(&core_lock);
1621  	if (WARN(id < 0, "couldn't get idr"))
1622  		return id == -ENOSPC ? -EBUSY : id;
1623  
1624  	return i2c_register_adapter(adap);
1625  }
1626  
1627  /**
1628   * i2c_add_adapter - declare i2c adapter, use dynamic bus number
1629   * @adapter: the adapter to add
1630   * Context: can sleep
1631   *
1632   * This routine is used to declare an I2C adapter when its bus number
1633   * doesn't matter or when its bus number is specified by an dt alias.
1634   * Examples of bases when the bus number doesn't matter: I2C adapters
1635   * dynamically added by USB links or PCI plugin cards.
1636   *
1637   * When this returns zero, a new bus number was allocated and stored
1638   * in adap->nr, and the specified adapter became available for clients.
1639   * Otherwise, a negative errno value is returned.
1640   */
i2c_add_adapter(struct i2c_adapter * adapter)1641  int i2c_add_adapter(struct i2c_adapter *adapter)
1642  {
1643  	struct device *dev = &adapter->dev;
1644  	int id;
1645  
1646  	if (dev->of_node) {
1647  		id = of_alias_get_id(dev->of_node, "i2c");
1648  		if (id >= 0) {
1649  			adapter->nr = id;
1650  			return __i2c_add_numbered_adapter(adapter);
1651  		}
1652  	}
1653  
1654  	mutex_lock(&core_lock);
1655  	id = idr_alloc(&i2c_adapter_idr, adapter,
1656  		       __i2c_first_dynamic_bus_num, 0, GFP_KERNEL);
1657  	mutex_unlock(&core_lock);
1658  	if (WARN(id < 0, "couldn't get idr"))
1659  		return id;
1660  
1661  	adapter->nr = id;
1662  
1663  	return i2c_register_adapter(adapter);
1664  }
1665  EXPORT_SYMBOL(i2c_add_adapter);
1666  
1667  /**
1668   * i2c_add_numbered_adapter - declare i2c adapter, use static bus number
1669   * @adap: the adapter to register (with adap->nr initialized)
1670   * Context: can sleep
1671   *
1672   * This routine is used to declare an I2C adapter when its bus number
1673   * matters.  For example, use it for I2C adapters from system-on-chip CPUs,
1674   * or otherwise built in to the system's mainboard, and where i2c_board_info
1675   * is used to properly configure I2C devices.
1676   *
1677   * If the requested bus number is set to -1, then this function will behave
1678   * identically to i2c_add_adapter, and will dynamically assign a bus number.
1679   *
1680   * If no devices have pre-been declared for this bus, then be sure to
1681   * register the adapter before any dynamically allocated ones.  Otherwise
1682   * the required bus ID may not be available.
1683   *
1684   * When this returns zero, the specified adapter became available for
1685   * clients using the bus number provided in adap->nr.  Also, the table
1686   * of I2C devices pre-declared using i2c_register_board_info() is scanned,
1687   * and the appropriate driver model device nodes are created.  Otherwise, a
1688   * negative errno value is returned.
1689   */
i2c_add_numbered_adapter(struct i2c_adapter * adap)1690  int i2c_add_numbered_adapter(struct i2c_adapter *adap)
1691  {
1692  	if (adap->nr == -1) /* -1 means dynamically assign bus id */
1693  		return i2c_add_adapter(adap);
1694  
1695  	return __i2c_add_numbered_adapter(adap);
1696  }
1697  EXPORT_SYMBOL_GPL(i2c_add_numbered_adapter);
1698  
i2c_do_del_adapter(struct i2c_driver * driver,struct i2c_adapter * adapter)1699  static void i2c_do_del_adapter(struct i2c_driver *driver,
1700  			      struct i2c_adapter *adapter)
1701  {
1702  	struct i2c_client *client, *_n;
1703  
1704  	/* Remove the devices we created ourselves as the result of hardware
1705  	 * probing (using a driver's detect method) */
1706  	list_for_each_entry_safe(client, _n, &driver->clients, detected) {
1707  		if (client->adapter == adapter) {
1708  			dev_dbg(&adapter->dev, "Removing %s at 0x%x\n",
1709  				client->name, client->addr);
1710  			list_del(&client->detected);
1711  			i2c_unregister_device(client);
1712  		}
1713  	}
1714  }
1715  
__unregister_client(struct device * dev,void * dummy)1716  static int __unregister_client(struct device *dev, void *dummy)
1717  {
1718  	struct i2c_client *client = i2c_verify_client(dev);
1719  	if (client && strcmp(client->name, "dummy"))
1720  		i2c_unregister_device(client);
1721  	return 0;
1722  }
1723  
__unregister_dummy(struct device * dev,void * dummy)1724  static int __unregister_dummy(struct device *dev, void *dummy)
1725  {
1726  	struct i2c_client *client = i2c_verify_client(dev);
1727  	i2c_unregister_device(client);
1728  	return 0;
1729  }
1730  
__process_removed_adapter(struct device_driver * d,void * data)1731  static int __process_removed_adapter(struct device_driver *d, void *data)
1732  {
1733  	i2c_do_del_adapter(to_i2c_driver(d), data);
1734  	return 0;
1735  }
1736  
1737  /**
1738   * i2c_del_adapter - unregister I2C adapter
1739   * @adap: the adapter being unregistered
1740   * Context: can sleep
1741   *
1742   * This unregisters an I2C adapter which was previously registered
1743   * by @i2c_add_adapter or @i2c_add_numbered_adapter.
1744   */
i2c_del_adapter(struct i2c_adapter * adap)1745  void i2c_del_adapter(struct i2c_adapter *adap)
1746  {
1747  	struct i2c_adapter *found;
1748  	struct i2c_client *client, *next;
1749  
1750  	/* First make sure that this adapter was ever added */
1751  	mutex_lock(&core_lock);
1752  	found = idr_find(&i2c_adapter_idr, adap->nr);
1753  	mutex_unlock(&core_lock);
1754  	if (found != adap) {
1755  		pr_debug("attempting to delete unregistered adapter [%s]\n", adap->name);
1756  		return;
1757  	}
1758  
1759  	i2c_acpi_remove_space_handler(adap);
1760  	/* Tell drivers about this removal */
1761  	mutex_lock(&core_lock);
1762  	bus_for_each_drv(&i2c_bus_type, NULL, adap,
1763  			       __process_removed_adapter);
1764  	mutex_unlock(&core_lock);
1765  
1766  	/* Remove devices instantiated from sysfs */
1767  	mutex_lock_nested(&adap->userspace_clients_lock,
1768  			  i2c_adapter_depth(adap));
1769  	list_for_each_entry_safe(client, next, &adap->userspace_clients,
1770  				 detected) {
1771  		dev_dbg(&adap->dev, "Removing %s at 0x%x\n", client->name,
1772  			client->addr);
1773  		list_del(&client->detected);
1774  		i2c_unregister_device(client);
1775  	}
1776  	mutex_unlock(&adap->userspace_clients_lock);
1777  
1778  	/* Detach any active clients. This can't fail, thus we do not
1779  	 * check the returned value. This is a two-pass process, because
1780  	 * we can't remove the dummy devices during the first pass: they
1781  	 * could have been instantiated by real devices wishing to clean
1782  	 * them up properly, so we give them a chance to do that first. */
1783  	device_for_each_child(&adap->dev, NULL, __unregister_client);
1784  	device_for_each_child(&adap->dev, NULL, __unregister_dummy);
1785  
1786  	/* device name is gone after device_unregister */
1787  	dev_dbg(&adap->dev, "adapter [%s] unregistered\n", adap->name);
1788  
1789  	pm_runtime_disable(&adap->dev);
1790  
1791  	i2c_host_notify_irq_teardown(adap);
1792  
1793  	debugfs_remove_recursive(adap->debugfs);
1794  
1795  	/* wait until all references to the device are gone
1796  	 *
1797  	 * FIXME: This is old code and should ideally be replaced by an
1798  	 * alternative which results in decoupling the lifetime of the struct
1799  	 * device from the i2c_adapter, like spi or netdev do. Any solution
1800  	 * should be thoroughly tested with DEBUG_KOBJECT_RELEASE enabled!
1801  	 */
1802  	init_completion(&adap->dev_released);
1803  	device_unregister(&adap->dev);
1804  	wait_for_completion(&adap->dev_released);
1805  
1806  	/* free bus id */
1807  	mutex_lock(&core_lock);
1808  	idr_remove(&i2c_adapter_idr, adap->nr);
1809  	mutex_unlock(&core_lock);
1810  
1811  	/* Clear the device structure in case this adapter is ever going to be
1812  	   added again */
1813  	memset(&adap->dev, 0, sizeof(adap->dev));
1814  }
1815  EXPORT_SYMBOL(i2c_del_adapter);
1816  
devm_i2c_del_adapter(void * adapter)1817  static void devm_i2c_del_adapter(void *adapter)
1818  {
1819  	i2c_del_adapter(adapter);
1820  }
1821  
1822  /**
1823   * devm_i2c_add_adapter - device-managed variant of i2c_add_adapter()
1824   * @dev: managing device for adding this I2C adapter
1825   * @adapter: the adapter to add
1826   * Context: can sleep
1827   *
1828   * Add adapter with dynamic bus number, same with i2c_add_adapter()
1829   * but the adapter will be auto deleted on driver detach.
1830   */
devm_i2c_add_adapter(struct device * dev,struct i2c_adapter * adapter)1831  int devm_i2c_add_adapter(struct device *dev, struct i2c_adapter *adapter)
1832  {
1833  	int ret;
1834  
1835  	ret = i2c_add_adapter(adapter);
1836  	if (ret)
1837  		return ret;
1838  
1839  	return devm_add_action_or_reset(dev, devm_i2c_del_adapter, adapter);
1840  }
1841  EXPORT_SYMBOL_GPL(devm_i2c_add_adapter);
1842  
i2c_dev_or_parent_fwnode_match(struct device * dev,const void * data)1843  static int i2c_dev_or_parent_fwnode_match(struct device *dev, const void *data)
1844  {
1845  	if (dev_fwnode(dev) == data)
1846  		return 1;
1847  
1848  	if (dev->parent && dev_fwnode(dev->parent) == data)
1849  		return 1;
1850  
1851  	return 0;
1852  }
1853  
1854  /**
1855   * i2c_find_adapter_by_fwnode() - find an i2c_adapter for the fwnode
1856   * @fwnode: &struct fwnode_handle corresponding to the &struct i2c_adapter
1857   *
1858   * Look up and return the &struct i2c_adapter corresponding to the @fwnode.
1859   * If no adapter can be found, or @fwnode is NULL, this returns NULL.
1860   *
1861   * The user must call put_device(&adapter->dev) once done with the i2c adapter.
1862   */
i2c_find_adapter_by_fwnode(struct fwnode_handle * fwnode)1863  struct i2c_adapter *i2c_find_adapter_by_fwnode(struct fwnode_handle *fwnode)
1864  {
1865  	struct i2c_adapter *adapter;
1866  	struct device *dev;
1867  
1868  	if (!fwnode)
1869  		return NULL;
1870  
1871  	dev = bus_find_device(&i2c_bus_type, NULL, fwnode,
1872  			      i2c_dev_or_parent_fwnode_match);
1873  	if (!dev)
1874  		return NULL;
1875  
1876  	adapter = i2c_verify_adapter(dev);
1877  	if (!adapter)
1878  		put_device(dev);
1879  
1880  	return adapter;
1881  }
1882  EXPORT_SYMBOL(i2c_find_adapter_by_fwnode);
1883  
1884  /**
1885   * i2c_get_adapter_by_fwnode() - find an i2c_adapter for the fwnode
1886   * @fwnode: &struct fwnode_handle corresponding to the &struct i2c_adapter
1887   *
1888   * Look up and return the &struct i2c_adapter corresponding to the @fwnode,
1889   * and increment the adapter module's use count. If no adapter can be found,
1890   * or @fwnode is NULL, this returns NULL.
1891   *
1892   * The user must call i2c_put_adapter(adapter) once done with the i2c adapter.
1893   * Note that this is different from i2c_find_adapter_by_node().
1894   */
i2c_get_adapter_by_fwnode(struct fwnode_handle * fwnode)1895  struct i2c_adapter *i2c_get_adapter_by_fwnode(struct fwnode_handle *fwnode)
1896  {
1897  	struct i2c_adapter *adapter;
1898  
1899  	adapter = i2c_find_adapter_by_fwnode(fwnode);
1900  	if (!adapter)
1901  		return NULL;
1902  
1903  	if (!try_module_get(adapter->owner)) {
1904  		put_device(&adapter->dev);
1905  		adapter = NULL;
1906  	}
1907  
1908  	return adapter;
1909  }
1910  EXPORT_SYMBOL(i2c_get_adapter_by_fwnode);
1911  
i2c_parse_timing(struct device * dev,char * prop_name,u32 * cur_val_p,u32 def_val,bool use_def)1912  static void i2c_parse_timing(struct device *dev, char *prop_name, u32 *cur_val_p,
1913  			    u32 def_val, bool use_def)
1914  {
1915  	int ret;
1916  
1917  	ret = device_property_read_u32(dev, prop_name, cur_val_p);
1918  	if (ret && use_def)
1919  		*cur_val_p = def_val;
1920  
1921  	dev_dbg(dev, "%s: %u\n", prop_name, *cur_val_p);
1922  }
1923  
1924  /**
1925   * i2c_parse_fw_timings - get I2C related timing parameters from firmware
1926   * @dev: The device to scan for I2C timing properties
1927   * @t: the i2c_timings struct to be filled with values
1928   * @use_defaults: bool to use sane defaults derived from the I2C specification
1929   *		  when properties are not found, otherwise don't update
1930   *
1931   * Scan the device for the generic I2C properties describing timing parameters
1932   * for the signal and fill the given struct with the results. If a property was
1933   * not found and use_defaults was true, then maximum timings are assumed which
1934   * are derived from the I2C specification. If use_defaults is not used, the
1935   * results will be as before, so drivers can apply their own defaults before
1936   * calling this helper. The latter is mainly intended for avoiding regressions
1937   * of existing drivers which want to switch to this function. New drivers
1938   * almost always should use the defaults.
1939   */
i2c_parse_fw_timings(struct device * dev,struct i2c_timings * t,bool use_defaults)1940  void i2c_parse_fw_timings(struct device *dev, struct i2c_timings *t, bool use_defaults)
1941  {
1942  	bool u = use_defaults;
1943  	u32 d;
1944  
1945  	i2c_parse_timing(dev, "clock-frequency", &t->bus_freq_hz,
1946  			 I2C_MAX_STANDARD_MODE_FREQ, u);
1947  
1948  	d = t->bus_freq_hz <= I2C_MAX_STANDARD_MODE_FREQ ? 1000 :
1949  	    t->bus_freq_hz <= I2C_MAX_FAST_MODE_FREQ ? 300 : 120;
1950  	i2c_parse_timing(dev, "i2c-scl-rising-time-ns", &t->scl_rise_ns, d, u);
1951  
1952  	d = t->bus_freq_hz <= I2C_MAX_FAST_MODE_FREQ ? 300 : 120;
1953  	i2c_parse_timing(dev, "i2c-scl-falling-time-ns", &t->scl_fall_ns, d, u);
1954  
1955  	i2c_parse_timing(dev, "i2c-scl-internal-delay-ns",
1956  			 &t->scl_int_delay_ns, 0, u);
1957  	i2c_parse_timing(dev, "i2c-sda-falling-time-ns", &t->sda_fall_ns,
1958  			 t->scl_fall_ns, u);
1959  	i2c_parse_timing(dev, "i2c-sda-hold-time-ns", &t->sda_hold_ns, 0, u);
1960  	i2c_parse_timing(dev, "i2c-digital-filter-width-ns",
1961  			 &t->digital_filter_width_ns, 0, u);
1962  	i2c_parse_timing(dev, "i2c-analog-filter-cutoff-frequency",
1963  			 &t->analog_filter_cutoff_freq_hz, 0, u);
1964  }
1965  EXPORT_SYMBOL_GPL(i2c_parse_fw_timings);
1966  
1967  /* ------------------------------------------------------------------------- */
1968  
i2c_for_each_dev(void * data,int (* fn)(struct device * dev,void * data))1969  int i2c_for_each_dev(void *data, int (*fn)(struct device *dev, void *data))
1970  {
1971  	int res;
1972  
1973  	mutex_lock(&core_lock);
1974  	res = bus_for_each_dev(&i2c_bus_type, NULL, data, fn);
1975  	mutex_unlock(&core_lock);
1976  
1977  	return res;
1978  }
1979  EXPORT_SYMBOL_GPL(i2c_for_each_dev);
1980  
__process_new_driver(struct device * dev,void * data)1981  static int __process_new_driver(struct device *dev, void *data)
1982  {
1983  	if (dev->type != &i2c_adapter_type)
1984  		return 0;
1985  	return i2c_do_add_adapter(data, to_i2c_adapter(dev));
1986  }
1987  
1988  /*
1989   * An i2c_driver is used with one or more i2c_client (device) nodes to access
1990   * i2c slave chips, on a bus instance associated with some i2c_adapter.
1991   */
1992  
i2c_register_driver(struct module * owner,struct i2c_driver * driver)1993  int i2c_register_driver(struct module *owner, struct i2c_driver *driver)
1994  {
1995  	int res;
1996  
1997  	/* Can't register until after driver model init */
1998  	if (WARN_ON(!is_registered))
1999  		return -EAGAIN;
2000  
2001  	/* add the driver to the list of i2c drivers in the driver core */
2002  	driver->driver.owner = owner;
2003  	driver->driver.bus = &i2c_bus_type;
2004  	INIT_LIST_HEAD(&driver->clients);
2005  
2006  	/* When registration returns, the driver core
2007  	 * will have called probe() for all matching-but-unbound devices.
2008  	 */
2009  	res = driver_register(&driver->driver);
2010  	if (res)
2011  		return res;
2012  
2013  	pr_debug("driver [%s] registered\n", driver->driver.name);
2014  
2015  	/* Walk the adapters that are already present */
2016  	i2c_for_each_dev(driver, __process_new_driver);
2017  
2018  	return 0;
2019  }
2020  EXPORT_SYMBOL(i2c_register_driver);
2021  
__process_removed_driver(struct device * dev,void * data)2022  static int __process_removed_driver(struct device *dev, void *data)
2023  {
2024  	if (dev->type == &i2c_adapter_type)
2025  		i2c_do_del_adapter(data, to_i2c_adapter(dev));
2026  	return 0;
2027  }
2028  
2029  /**
2030   * i2c_del_driver - unregister I2C driver
2031   * @driver: the driver being unregistered
2032   * Context: can sleep
2033   */
i2c_del_driver(struct i2c_driver * driver)2034  void i2c_del_driver(struct i2c_driver *driver)
2035  {
2036  	i2c_for_each_dev(driver, __process_removed_driver);
2037  
2038  	driver_unregister(&driver->driver);
2039  	pr_debug("driver [%s] unregistered\n", driver->driver.name);
2040  }
2041  EXPORT_SYMBOL(i2c_del_driver);
2042  
2043  /* ------------------------------------------------------------------------- */
2044  
2045  struct i2c_cmd_arg {
2046  	unsigned	cmd;
2047  	void		*arg;
2048  };
2049  
i2c_cmd(struct device * dev,void * _arg)2050  static int i2c_cmd(struct device *dev, void *_arg)
2051  {
2052  	struct i2c_client	*client = i2c_verify_client(dev);
2053  	struct i2c_cmd_arg	*arg = _arg;
2054  	struct i2c_driver	*driver;
2055  
2056  	if (!client || !client->dev.driver)
2057  		return 0;
2058  
2059  	driver = to_i2c_driver(client->dev.driver);
2060  	if (driver->command)
2061  		driver->command(client, arg->cmd, arg->arg);
2062  	return 0;
2063  }
2064  
i2c_clients_command(struct i2c_adapter * adap,unsigned int cmd,void * arg)2065  void i2c_clients_command(struct i2c_adapter *adap, unsigned int cmd, void *arg)
2066  {
2067  	struct i2c_cmd_arg	cmd_arg;
2068  
2069  	cmd_arg.cmd = cmd;
2070  	cmd_arg.arg = arg;
2071  	device_for_each_child(&adap->dev, &cmd_arg, i2c_cmd);
2072  }
2073  EXPORT_SYMBOL(i2c_clients_command);
2074  
i2c_init(void)2075  static int __init i2c_init(void)
2076  {
2077  	int retval;
2078  
2079  	retval = of_alias_get_highest_id("i2c");
2080  
2081  	down_write(&__i2c_board_lock);
2082  	if (retval >= __i2c_first_dynamic_bus_num)
2083  		__i2c_first_dynamic_bus_num = retval + 1;
2084  	up_write(&__i2c_board_lock);
2085  
2086  	retval = bus_register(&i2c_bus_type);
2087  	if (retval)
2088  		return retval;
2089  
2090  	is_registered = true;
2091  
2092  	i2c_debugfs_root = debugfs_create_dir("i2c", NULL);
2093  
2094  	retval = i2c_add_driver(&dummy_driver);
2095  	if (retval)
2096  		goto class_err;
2097  
2098  	if (IS_ENABLED(CONFIG_OF_DYNAMIC))
2099  		WARN_ON(of_reconfig_notifier_register(&i2c_of_notifier));
2100  	if (IS_ENABLED(CONFIG_ACPI))
2101  		WARN_ON(acpi_reconfig_notifier_register(&i2c_acpi_notifier));
2102  
2103  	return 0;
2104  
2105  class_err:
2106  	is_registered = false;
2107  	bus_unregister(&i2c_bus_type);
2108  	return retval;
2109  }
2110  
i2c_exit(void)2111  static void __exit i2c_exit(void)
2112  {
2113  	if (IS_ENABLED(CONFIG_ACPI))
2114  		WARN_ON(acpi_reconfig_notifier_unregister(&i2c_acpi_notifier));
2115  	if (IS_ENABLED(CONFIG_OF_DYNAMIC))
2116  		WARN_ON(of_reconfig_notifier_unregister(&i2c_of_notifier));
2117  	i2c_del_driver(&dummy_driver);
2118  	debugfs_remove_recursive(i2c_debugfs_root);
2119  	bus_unregister(&i2c_bus_type);
2120  	tracepoint_synchronize_unregister();
2121  }
2122  
2123  /* We must initialize early, because some subsystems register i2c drivers
2124   * in subsys_initcall() code, but are linked (and initialized) before i2c.
2125   */
2126  postcore_initcall(i2c_init);
2127  module_exit(i2c_exit);
2128  
2129  /* ----------------------------------------------------
2130   * the functional interface to the i2c busses.
2131   * ----------------------------------------------------
2132   */
2133  
2134  /* Check if val is exceeding the quirk IFF quirk is non 0 */
2135  #define i2c_quirk_exceeded(val, quirk) ((quirk) && ((val) > (quirk)))
2136  
i2c_quirk_error(struct i2c_adapter * adap,struct i2c_msg * msg,char * err_msg)2137  static int i2c_quirk_error(struct i2c_adapter *adap, struct i2c_msg *msg, char *err_msg)
2138  {
2139  	dev_err_ratelimited(&adap->dev, "adapter quirk: %s (addr 0x%04x, size %u, %s)\n",
2140  			    err_msg, msg->addr, msg->len,
2141  			    msg->flags & I2C_M_RD ? "read" : "write");
2142  	return -EOPNOTSUPP;
2143  }
2144  
i2c_check_for_quirks(struct i2c_adapter * adap,struct i2c_msg * msgs,int num)2145  static int i2c_check_for_quirks(struct i2c_adapter *adap, struct i2c_msg *msgs, int num)
2146  {
2147  	const struct i2c_adapter_quirks *q = adap->quirks;
2148  	int max_num = q->max_num_msgs, i;
2149  	bool do_len_check = true;
2150  
2151  	if (q->flags & I2C_AQ_COMB) {
2152  		max_num = 2;
2153  
2154  		/* special checks for combined messages */
2155  		if (num == 2) {
2156  			if (q->flags & I2C_AQ_COMB_WRITE_FIRST && msgs[0].flags & I2C_M_RD)
2157  				return i2c_quirk_error(adap, &msgs[0], "1st comb msg must be write");
2158  
2159  			if (q->flags & I2C_AQ_COMB_READ_SECOND && !(msgs[1].flags & I2C_M_RD))
2160  				return i2c_quirk_error(adap, &msgs[1], "2nd comb msg must be read");
2161  
2162  			if (q->flags & I2C_AQ_COMB_SAME_ADDR && msgs[0].addr != msgs[1].addr)
2163  				return i2c_quirk_error(adap, &msgs[0], "comb msg only to same addr");
2164  
2165  			if (i2c_quirk_exceeded(msgs[0].len, q->max_comb_1st_msg_len))
2166  				return i2c_quirk_error(adap, &msgs[0], "msg too long");
2167  
2168  			if (i2c_quirk_exceeded(msgs[1].len, q->max_comb_2nd_msg_len))
2169  				return i2c_quirk_error(adap, &msgs[1], "msg too long");
2170  
2171  			do_len_check = false;
2172  		}
2173  	}
2174  
2175  	if (i2c_quirk_exceeded(num, max_num))
2176  		return i2c_quirk_error(adap, &msgs[0], "too many messages");
2177  
2178  	for (i = 0; i < num; i++) {
2179  		u16 len = msgs[i].len;
2180  
2181  		if (msgs[i].flags & I2C_M_RD) {
2182  			if (do_len_check && i2c_quirk_exceeded(len, q->max_read_len))
2183  				return i2c_quirk_error(adap, &msgs[i], "msg too long");
2184  
2185  			if (q->flags & I2C_AQ_NO_ZERO_LEN_READ && len == 0)
2186  				return i2c_quirk_error(adap, &msgs[i], "no zero length");
2187  		} else {
2188  			if (do_len_check && i2c_quirk_exceeded(len, q->max_write_len))
2189  				return i2c_quirk_error(adap, &msgs[i], "msg too long");
2190  
2191  			if (q->flags & I2C_AQ_NO_ZERO_LEN_WRITE && len == 0)
2192  				return i2c_quirk_error(adap, &msgs[i], "no zero length");
2193  		}
2194  	}
2195  
2196  	return 0;
2197  }
2198  
2199  /**
2200   * __i2c_transfer - unlocked flavor of i2c_transfer
2201   * @adap: Handle to I2C bus
2202   * @msgs: One or more messages to execute before STOP is issued to
2203   *	terminate the operation; each message begins with a START.
2204   * @num: Number of messages to be executed.
2205   *
2206   * Returns negative errno, else the number of messages executed.
2207   *
2208   * Adapter lock must be held when calling this function. No debug logging
2209   * takes place.
2210   */
__i2c_transfer(struct i2c_adapter * adap,struct i2c_msg * msgs,int num)2211  int __i2c_transfer(struct i2c_adapter *adap, struct i2c_msg *msgs, int num)
2212  {
2213  	unsigned long orig_jiffies;
2214  	int ret, try;
2215  
2216  	if (!adap->algo->master_xfer) {
2217  		dev_dbg(&adap->dev, "I2C level transfers not supported\n");
2218  		return -EOPNOTSUPP;
2219  	}
2220  
2221  	if (WARN_ON(!msgs || num < 1))
2222  		return -EINVAL;
2223  
2224  	ret = __i2c_check_suspended(adap);
2225  	if (ret)
2226  		return ret;
2227  
2228  	if (adap->quirks && i2c_check_for_quirks(adap, msgs, num))
2229  		return -EOPNOTSUPP;
2230  
2231  	/*
2232  	 * i2c_trace_msg_key gets enabled when tracepoint i2c_transfer gets
2233  	 * enabled.  This is an efficient way of keeping the for-loop from
2234  	 * being executed when not needed.
2235  	 */
2236  	if (static_branch_unlikely(&i2c_trace_msg_key)) {
2237  		int i;
2238  		for (i = 0; i < num; i++)
2239  			if (msgs[i].flags & I2C_M_RD)
2240  				trace_i2c_read(adap, &msgs[i], i);
2241  			else
2242  				trace_i2c_write(adap, &msgs[i], i);
2243  	}
2244  
2245  	/* Retry automatically on arbitration loss */
2246  	orig_jiffies = jiffies;
2247  	for (ret = 0, try = 0; try <= adap->retries; try++) {
2248  		if (i2c_in_atomic_xfer_mode() && adap->algo->master_xfer_atomic)
2249  			ret = adap->algo->master_xfer_atomic(adap, msgs, num);
2250  		else
2251  			ret = adap->algo->master_xfer(adap, msgs, num);
2252  
2253  		if (ret != -EAGAIN)
2254  			break;
2255  		if (time_after(jiffies, orig_jiffies + adap->timeout))
2256  			break;
2257  	}
2258  
2259  	if (static_branch_unlikely(&i2c_trace_msg_key)) {
2260  		int i;
2261  		for (i = 0; i < ret; i++)
2262  			if (msgs[i].flags & I2C_M_RD)
2263  				trace_i2c_reply(adap, &msgs[i], i);
2264  		trace_i2c_result(adap, num, ret);
2265  	}
2266  
2267  	return ret;
2268  }
2269  EXPORT_SYMBOL(__i2c_transfer);
2270  
2271  /**
2272   * i2c_transfer - execute a single or combined I2C message
2273   * @adap: Handle to I2C bus
2274   * @msgs: One or more messages to execute before STOP is issued to
2275   *	terminate the operation; each message begins with a START.
2276   * @num: Number of messages to be executed.
2277   *
2278   * Returns negative errno, else the number of messages executed.
2279   *
2280   * Note that there is no requirement that each message be sent to
2281   * the same slave address, although that is the most common model.
2282   */
i2c_transfer(struct i2c_adapter * adap,struct i2c_msg * msgs,int num)2283  int i2c_transfer(struct i2c_adapter *adap, struct i2c_msg *msgs, int num)
2284  {
2285  	int ret;
2286  
2287  	/* REVISIT the fault reporting model here is weak:
2288  	 *
2289  	 *  - When we get an error after receiving N bytes from a slave,
2290  	 *    there is no way to report "N".
2291  	 *
2292  	 *  - When we get a NAK after transmitting N bytes to a slave,
2293  	 *    there is no way to report "N" ... or to let the master
2294  	 *    continue executing the rest of this combined message, if
2295  	 *    that's the appropriate response.
2296  	 *
2297  	 *  - When for example "num" is two and we successfully complete
2298  	 *    the first message but get an error part way through the
2299  	 *    second, it's unclear whether that should be reported as
2300  	 *    one (discarding status on the second message) or errno
2301  	 *    (discarding status on the first one).
2302  	 */
2303  	ret = __i2c_lock_bus_helper(adap);
2304  	if (ret)
2305  		return ret;
2306  
2307  	ret = __i2c_transfer(adap, msgs, num);
2308  	i2c_unlock_bus(adap, I2C_LOCK_SEGMENT);
2309  
2310  	return ret;
2311  }
2312  EXPORT_SYMBOL(i2c_transfer);
2313  
2314  /**
2315   * i2c_transfer_buffer_flags - issue a single I2C message transferring data
2316   *			       to/from a buffer
2317   * @client: Handle to slave device
2318   * @buf: Where the data is stored
2319   * @count: How many bytes to transfer, must be less than 64k since msg.len is u16
2320   * @flags: The flags to be used for the message, e.g. I2C_M_RD for reads
2321   *
2322   * Returns negative errno, or else the number of bytes transferred.
2323   */
i2c_transfer_buffer_flags(const struct i2c_client * client,char * buf,int count,u16 flags)2324  int i2c_transfer_buffer_flags(const struct i2c_client *client, char *buf,
2325  			      int count, u16 flags)
2326  {
2327  	int ret;
2328  	struct i2c_msg msg = {
2329  		.addr = client->addr,
2330  		.flags = flags | (client->flags & I2C_M_TEN),
2331  		.len = count,
2332  		.buf = buf,
2333  	};
2334  
2335  	ret = i2c_transfer(client->adapter, &msg, 1);
2336  
2337  	/*
2338  	 * If everything went ok (i.e. 1 msg transferred), return #bytes
2339  	 * transferred, else error code.
2340  	 */
2341  	return (ret == 1) ? count : ret;
2342  }
2343  EXPORT_SYMBOL(i2c_transfer_buffer_flags);
2344  
2345  /**
2346   * i2c_get_device_id - get manufacturer, part id and die revision of a device
2347   * @client: The device to query
2348   * @id: The queried information
2349   *
2350   * Returns negative errno on error, zero on success.
2351   */
i2c_get_device_id(const struct i2c_client * client,struct i2c_device_identity * id)2352  int i2c_get_device_id(const struct i2c_client *client,
2353  		      struct i2c_device_identity *id)
2354  {
2355  	struct i2c_adapter *adap = client->adapter;
2356  	union i2c_smbus_data raw_id;
2357  	int ret;
2358  
2359  	if (!i2c_check_functionality(adap, I2C_FUNC_SMBUS_READ_I2C_BLOCK))
2360  		return -EOPNOTSUPP;
2361  
2362  	raw_id.block[0] = 3;
2363  	ret = i2c_smbus_xfer(adap, I2C_ADDR_DEVICE_ID, 0,
2364  			     I2C_SMBUS_READ, client->addr << 1,
2365  			     I2C_SMBUS_I2C_BLOCK_DATA, &raw_id);
2366  	if (ret)
2367  		return ret;
2368  
2369  	id->manufacturer_id = (raw_id.block[1] << 4) | (raw_id.block[2] >> 4);
2370  	id->part_id = ((raw_id.block[2] & 0xf) << 5) | (raw_id.block[3] >> 3);
2371  	id->die_revision = raw_id.block[3] & 0x7;
2372  	return 0;
2373  }
2374  EXPORT_SYMBOL_GPL(i2c_get_device_id);
2375  
2376  /**
2377   * i2c_client_get_device_id - get the driver match table entry of a device
2378   * @client: the device to query. The device must be bound to a driver
2379   *
2380   * Returns a pointer to the matching entry if found, NULL otherwise.
2381   */
i2c_client_get_device_id(const struct i2c_client * client)2382  const struct i2c_device_id *i2c_client_get_device_id(const struct i2c_client *client)
2383  {
2384  	const struct i2c_driver *drv = to_i2c_driver(client->dev.driver);
2385  
2386  	return i2c_match_id(drv->id_table, client);
2387  }
2388  EXPORT_SYMBOL_GPL(i2c_client_get_device_id);
2389  
2390  /* ----------------------------------------------------
2391   * the i2c address scanning function
2392   * Will not work for 10-bit addresses!
2393   * ----------------------------------------------------
2394   */
2395  
2396  /*
2397   * Legacy default probe function, mostly relevant for SMBus. The default
2398   * probe method is a quick write, but it is known to corrupt the 24RF08
2399   * EEPROMs due to a state machine bug, and could also irreversibly
2400   * write-protect some EEPROMs, so for address ranges 0x30-0x37 and 0x50-0x5f,
2401   * we use a short byte read instead. Also, some bus drivers don't implement
2402   * quick write, so we fallback to a byte read in that case too.
2403   * On x86, there is another special case for FSC hardware monitoring chips,
2404   * which want regular byte reads (address 0x73.) Fortunately, these are the
2405   * only known chips using this I2C address on PC hardware.
2406   * Returns 1 if probe succeeded, 0 if not.
2407   */
i2c_default_probe(struct i2c_adapter * adap,unsigned short addr)2408  static int i2c_default_probe(struct i2c_adapter *adap, unsigned short addr)
2409  {
2410  	int err;
2411  	union i2c_smbus_data dummy;
2412  
2413  #ifdef CONFIG_X86
2414  	if (addr == 0x73 && (adap->class & I2C_CLASS_HWMON)
2415  	 && i2c_check_functionality(adap, I2C_FUNC_SMBUS_READ_BYTE_DATA))
2416  		err = i2c_smbus_xfer(adap, addr, 0, I2C_SMBUS_READ, 0,
2417  				     I2C_SMBUS_BYTE_DATA, &dummy);
2418  	else
2419  #endif
2420  	if (!((addr & ~0x07) == 0x30 || (addr & ~0x0f) == 0x50)
2421  	 && i2c_check_functionality(adap, I2C_FUNC_SMBUS_QUICK))
2422  		err = i2c_smbus_xfer(adap, addr, 0, I2C_SMBUS_WRITE, 0,
2423  				     I2C_SMBUS_QUICK, NULL);
2424  	else if (i2c_check_functionality(adap, I2C_FUNC_SMBUS_READ_BYTE))
2425  		err = i2c_smbus_xfer(adap, addr, 0, I2C_SMBUS_READ, 0,
2426  				     I2C_SMBUS_BYTE, &dummy);
2427  	else {
2428  		dev_warn(&adap->dev, "No suitable probing method supported for address 0x%02X\n",
2429  			 addr);
2430  		err = -EOPNOTSUPP;
2431  	}
2432  
2433  	return err >= 0;
2434  }
2435  
i2c_detect_address(struct i2c_client * temp_client,struct i2c_driver * driver)2436  static int i2c_detect_address(struct i2c_client *temp_client,
2437  			      struct i2c_driver *driver)
2438  {
2439  	struct i2c_board_info info;
2440  	struct i2c_adapter *adapter = temp_client->adapter;
2441  	int addr = temp_client->addr;
2442  	int err;
2443  
2444  	/* Make sure the address is valid */
2445  	err = i2c_check_7bit_addr_validity_strict(addr);
2446  	if (err) {
2447  		dev_warn(&adapter->dev, "Invalid probe address 0x%02x\n",
2448  			 addr);
2449  		return err;
2450  	}
2451  
2452  	/* Skip if already in use (7 bit, no need to encode flags) */
2453  	if (i2c_check_addr_busy(adapter, addr))
2454  		return 0;
2455  
2456  	/* Make sure there is something at this address */
2457  	if (!i2c_default_probe(adapter, addr))
2458  		return 0;
2459  
2460  	/* Finally call the custom detection function */
2461  	memset(&info, 0, sizeof(struct i2c_board_info));
2462  	info.addr = addr;
2463  	err = driver->detect(temp_client, &info);
2464  	if (err) {
2465  		/* -ENODEV is returned if the detection fails. We catch it
2466  		   here as this isn't an error. */
2467  		return err == -ENODEV ? 0 : err;
2468  	}
2469  
2470  	/* Consistency check */
2471  	if (info.type[0] == '\0') {
2472  		dev_err(&adapter->dev,
2473  			"%s detection function provided no name for 0x%x\n",
2474  			driver->driver.name, addr);
2475  	} else {
2476  		struct i2c_client *client;
2477  
2478  		/* Detection succeeded, instantiate the device */
2479  		if (adapter->class & I2C_CLASS_DEPRECATED)
2480  			dev_warn(&adapter->dev,
2481  				"This adapter will soon drop class based instantiation of devices. "
2482  				"Please make sure client 0x%02x gets instantiated by other means. "
2483  				"Check 'Documentation/i2c/instantiating-devices.rst' for details.\n",
2484  				info.addr);
2485  
2486  		dev_dbg(&adapter->dev, "Creating %s at 0x%02x\n",
2487  			info.type, info.addr);
2488  		client = i2c_new_client_device(adapter, &info);
2489  		if (!IS_ERR(client))
2490  			list_add_tail(&client->detected, &driver->clients);
2491  		else
2492  			dev_err(&adapter->dev, "Failed creating %s at 0x%02x\n",
2493  				info.type, info.addr);
2494  	}
2495  	return 0;
2496  }
2497  
i2c_detect(struct i2c_adapter * adapter,struct i2c_driver * driver)2498  static int i2c_detect(struct i2c_adapter *adapter, struct i2c_driver *driver)
2499  {
2500  	const unsigned short *address_list;
2501  	struct i2c_client *temp_client;
2502  	int i, err = 0;
2503  
2504  	address_list = driver->address_list;
2505  	if (!driver->detect || !address_list)
2506  		return 0;
2507  
2508  	/* Warn that the adapter lost class based instantiation */
2509  	if (adapter->class == I2C_CLASS_DEPRECATED) {
2510  		dev_dbg(&adapter->dev,
2511  			"This adapter dropped support for I2C classes and won't auto-detect %s devices anymore. "
2512  			"If you need it, check 'Documentation/i2c/instantiating-devices.rst' 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,
2529  			"found normal entry for adapter %d, addr 0x%02x\n",
2530  			i2c_adapter_id(adapter), address_list[i]);
2531  		temp_client->addr = address_list[i];
2532  		err = i2c_detect_address(temp_client, driver);
2533  		if (unlikely(err))
2534  			break;
2535  	}
2536  
2537  	kfree(temp_client);
2538  	return err;
2539  }
2540  
i2c_probe_func_quick_read(struct i2c_adapter * adap,unsigned short addr)2541  int i2c_probe_func_quick_read(struct i2c_adapter *adap, unsigned short addr)
2542  {
2543  	return i2c_smbus_xfer(adap, addr, 0, I2C_SMBUS_READ, 0,
2544  			      I2C_SMBUS_QUICK, NULL) >= 0;
2545  }
2546  EXPORT_SYMBOL_GPL(i2c_probe_func_quick_read);
2547  
2548  struct i2c_client *
i2c_new_scanned_device(struct i2c_adapter * adap,struct i2c_board_info * info,unsigned short const * addr_list,int (* probe)(struct i2c_adapter * adap,unsigned short addr))2549  i2c_new_scanned_device(struct i2c_adapter *adap,
2550  		       struct i2c_board_info *info,
2551  		       unsigned short const *addr_list,
2552  		       int (*probe)(struct i2c_adapter *adap, unsigned short addr))
2553  {
2554  	int i;
2555  
2556  	if (!probe)
2557  		probe = i2c_default_probe;
2558  
2559  	for (i = 0; addr_list[i] != I2C_CLIENT_END; i++) {
2560  		/* Check address validity */
2561  		if (i2c_check_7bit_addr_validity_strict(addr_list[i]) < 0) {
2562  			dev_warn(&adap->dev, "Invalid 7-bit address 0x%02x\n",
2563  				 addr_list[i]);
2564  			continue;
2565  		}
2566  
2567  		/* Check address availability (7 bit, no need to encode flags) */
2568  		if (i2c_check_addr_busy(adap, addr_list[i])) {
2569  			dev_dbg(&adap->dev,
2570  				"Address 0x%02x already in use, not probing\n",
2571  				addr_list[i]);
2572  			continue;
2573  		}
2574  
2575  		/* Test address responsiveness */
2576  		if (probe(adap, addr_list[i]))
2577  			break;
2578  	}
2579  
2580  	if (addr_list[i] == I2C_CLIENT_END) {
2581  		dev_dbg(&adap->dev, "Probing failed, no device found\n");
2582  		return ERR_PTR(-ENODEV);
2583  	}
2584  
2585  	info->addr = addr_list[i];
2586  	return i2c_new_client_device(adap, info);
2587  }
2588  EXPORT_SYMBOL_GPL(i2c_new_scanned_device);
2589  
i2c_get_adapter(int nr)2590  struct i2c_adapter *i2c_get_adapter(int nr)
2591  {
2592  	struct i2c_adapter *adapter;
2593  
2594  	mutex_lock(&core_lock);
2595  	adapter = idr_find(&i2c_adapter_idr, nr);
2596  	if (!adapter)
2597  		goto exit;
2598  
2599  	if (try_module_get(adapter->owner))
2600  		get_device(&adapter->dev);
2601  	else
2602  		adapter = NULL;
2603  
2604   exit:
2605  	mutex_unlock(&core_lock);
2606  	return adapter;
2607  }
2608  EXPORT_SYMBOL(i2c_get_adapter);
2609  
i2c_put_adapter(struct i2c_adapter * adap)2610  void i2c_put_adapter(struct i2c_adapter *adap)
2611  {
2612  	if (!adap)
2613  		return;
2614  
2615  	module_put(adap->owner);
2616  	/* Should be last, otherwise we risk use-after-free with 'adap' */
2617  	put_device(&adap->dev);
2618  }
2619  EXPORT_SYMBOL(i2c_put_adapter);
2620  
2621  /**
2622   * i2c_get_dma_safe_msg_buf() - get a DMA safe buffer for the given i2c_msg
2623   * @msg: the message to be checked
2624   * @threshold: the minimum number of bytes for which using DMA makes sense.
2625   *	       Should at least be 1.
2626   *
2627   * Return: NULL if a DMA safe buffer was not obtained. Use msg->buf with PIO.
2628   *	   Or a valid pointer to be used with DMA. After use, release it by
2629   *	   calling i2c_put_dma_safe_msg_buf().
2630   *
2631   * This function must only be called from process context!
2632   */
i2c_get_dma_safe_msg_buf(struct i2c_msg * msg,unsigned int threshold)2633  u8 *i2c_get_dma_safe_msg_buf(struct i2c_msg *msg, unsigned int threshold)
2634  {
2635  	/* also skip 0-length msgs for bogus thresholds of 0 */
2636  	if (!threshold)
2637  		pr_debug("DMA buffer for addr=0x%02x with length 0 is bogus\n",
2638  			 msg->addr);
2639  	if (msg->len < threshold || msg->len == 0)
2640  		return NULL;
2641  
2642  	if (msg->flags & I2C_M_DMA_SAFE)
2643  		return msg->buf;
2644  
2645  	pr_debug("using bounce buffer for addr=0x%02x, len=%d\n",
2646  		 msg->addr, msg->len);
2647  
2648  	if (msg->flags & I2C_M_RD)
2649  		return kzalloc(msg->len, GFP_KERNEL);
2650  	else
2651  		return kmemdup(msg->buf, msg->len, GFP_KERNEL);
2652  }
2653  EXPORT_SYMBOL_GPL(i2c_get_dma_safe_msg_buf);
2654  
2655  /**
2656   * i2c_put_dma_safe_msg_buf - release DMA safe buffer and sync with i2c_msg
2657   * @buf: the buffer obtained from i2c_get_dma_safe_msg_buf(). May be NULL.
2658   * @msg: the message which the buffer corresponds to
2659   * @xferred: bool saying if the message was transferred
2660   */
i2c_put_dma_safe_msg_buf(u8 * buf,struct i2c_msg * msg,bool xferred)2661  void i2c_put_dma_safe_msg_buf(u8 *buf, struct i2c_msg *msg, bool xferred)
2662  {
2663  	if (!buf || buf == msg->buf)
2664  		return;
2665  
2666  	if (xferred && msg->flags & I2C_M_RD)
2667  		memcpy(msg->buf, buf, msg->len);
2668  
2669  	kfree(buf);
2670  }
2671  EXPORT_SYMBOL_GPL(i2c_put_dma_safe_msg_buf);
2672  
2673  MODULE_AUTHOR("Simon G. Vogl <simon@tk.uni-linz.ac.at>");
2674  MODULE_DESCRIPTION("I2C-Bus main module");
2675  MODULE_LICENSE("GPL");
2676