xref: /openbmc/linux/drivers/i2c/i2c-core-base.c (revision fac59652993f075d57860769c99045b3ca18780d)
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,struct device_driver * drv)139  static int i2c_device_match(struct device *dev, struct device_driver *drv)
140  {
141  	struct i2c_client	*client = i2c_verify_client(dev);
142  	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  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  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", 0 },
1098  	{ "smbus_host_notify", 0 },
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  
1230  	while ((adapter = i2c_parent_is_i2c_adapter(adapter)))
1231  		depth++;
1232  
1233  	WARN_ONCE(depth >= MAX_LOCKDEP_SUBCLASSES,
1234  		  "adapter depth exceeds lockdep subclass limit\n");
1235  
1236  	return depth;
1237  }
1238  EXPORT_SYMBOL_GPL(i2c_adapter_depth);
1239  
1240  /*
1241   * Let users instantiate I2C devices through sysfs. This can be used when
1242   * platform initialization code doesn't contain the proper data for
1243   * whatever reason. Also useful for drivers that do device detection and
1244   * detection fails, either because the device uses an unexpected address,
1245   * or this is a compatible device with different ID register values.
1246   *
1247   * Parameter checking may look overzealous, but we really don't want
1248   * the user to provide incorrect parameters.
1249   */
1250  static ssize_t
new_device_store(struct device * dev,struct device_attribute * attr,const char * buf,size_t count)1251  new_device_store(struct device *dev, struct device_attribute *attr,
1252  		 const char *buf, size_t count)
1253  {
1254  	struct i2c_adapter *adap = to_i2c_adapter(dev);
1255  	struct i2c_board_info info;
1256  	struct i2c_client *client;
1257  	char *blank, end;
1258  	int res;
1259  
1260  	memset(&info, 0, sizeof(struct i2c_board_info));
1261  
1262  	blank = strchr(buf, ' ');
1263  	if (!blank) {
1264  		dev_err(dev, "%s: Missing parameters\n", "new_device");
1265  		return -EINVAL;
1266  	}
1267  	if (blank - buf > I2C_NAME_SIZE - 1) {
1268  		dev_err(dev, "%s: Invalid device name\n", "new_device");
1269  		return -EINVAL;
1270  	}
1271  	memcpy(info.type, buf, blank - buf);
1272  
1273  	/* Parse remaining parameters, reject extra parameters */
1274  	res = sscanf(++blank, "%hi%c", &info.addr, &end);
1275  	if (res < 1) {
1276  		dev_err(dev, "%s: Can't parse I2C address\n", "new_device");
1277  		return -EINVAL;
1278  	}
1279  	if (res > 1  && end != '\n') {
1280  		dev_err(dev, "%s: Extra parameters\n", "new_device");
1281  		return -EINVAL;
1282  	}
1283  
1284  	if ((info.addr & I2C_ADDR_OFFSET_TEN_BIT) == I2C_ADDR_OFFSET_TEN_BIT) {
1285  		info.addr &= ~I2C_ADDR_OFFSET_TEN_BIT;
1286  		info.flags |= I2C_CLIENT_TEN;
1287  	}
1288  
1289  	if (info.addr & I2C_ADDR_OFFSET_SLAVE) {
1290  		info.addr &= ~I2C_ADDR_OFFSET_SLAVE;
1291  		info.flags |= I2C_CLIENT_SLAVE;
1292  	}
1293  
1294  	client = i2c_new_client_device(adap, &info);
1295  	if (IS_ERR(client))
1296  		return PTR_ERR(client);
1297  
1298  	/* Keep track of the added device */
1299  	mutex_lock(&adap->userspace_clients_lock);
1300  	list_add_tail(&client->detected, &adap->userspace_clients);
1301  	mutex_unlock(&adap->userspace_clients_lock);
1302  	dev_info(dev, "%s: Instantiated device %s at 0x%02hx\n", "new_device",
1303  		 info.type, info.addr);
1304  
1305  	return count;
1306  }
1307  static DEVICE_ATTR_WO(new_device);
1308  
1309  /*
1310   * And of course let the users delete the devices they instantiated, if
1311   * they got it wrong. This interface can only be used to delete devices
1312   * instantiated by i2c_sysfs_new_device above. This guarantees that we
1313   * don't delete devices to which some kernel code still has references.
1314   *
1315   * Parameter checking may look overzealous, but we really don't want
1316   * the user to delete the wrong device.
1317   */
1318  static ssize_t
delete_device_store(struct device * dev,struct device_attribute * attr,const char * buf,size_t count)1319  delete_device_store(struct device *dev, struct device_attribute *attr,
1320  		    const char *buf, size_t count)
1321  {
1322  	struct i2c_adapter *adap = to_i2c_adapter(dev);
1323  	struct i2c_client *client, *next;
1324  	unsigned short addr;
1325  	char end;
1326  	int res;
1327  
1328  	/* Parse parameters, reject extra parameters */
1329  	res = sscanf(buf, "%hi%c", &addr, &end);
1330  	if (res < 1) {
1331  		dev_err(dev, "%s: Can't parse I2C address\n", "delete_device");
1332  		return -EINVAL;
1333  	}
1334  	if (res > 1  && end != '\n') {
1335  		dev_err(dev, "%s: Extra parameters\n", "delete_device");
1336  		return -EINVAL;
1337  	}
1338  
1339  	/* Make sure the device was added through sysfs */
1340  	res = -ENOENT;
1341  	mutex_lock_nested(&adap->userspace_clients_lock,
1342  			  i2c_adapter_depth(adap));
1343  	list_for_each_entry_safe(client, next, &adap->userspace_clients,
1344  				 detected) {
1345  		if (i2c_encode_flags_to_addr(client) == addr) {
1346  			dev_info(dev, "%s: Deleting device %s at 0x%02hx\n",
1347  				 "delete_device", client->name, client->addr);
1348  
1349  			list_del(&client->detected);
1350  			i2c_unregister_device(client);
1351  			res = count;
1352  			break;
1353  		}
1354  	}
1355  	mutex_unlock(&adap->userspace_clients_lock);
1356  
1357  	if (res < 0)
1358  		dev_err(dev, "%s: Can't find device in list\n",
1359  			"delete_device");
1360  	return res;
1361  }
1362  static DEVICE_ATTR_IGNORE_LOCKDEP(delete_device, S_IWUSR, NULL,
1363  				  delete_device_store);
1364  
1365  static struct attribute *i2c_adapter_attrs[] = {
1366  	&dev_attr_name.attr,
1367  	&dev_attr_new_device.attr,
1368  	&dev_attr_delete_device.attr,
1369  	NULL
1370  };
1371  ATTRIBUTE_GROUPS(i2c_adapter);
1372  
1373  struct device_type i2c_adapter_type = {
1374  	.groups		= i2c_adapter_groups,
1375  	.release	= i2c_adapter_dev_release,
1376  };
1377  EXPORT_SYMBOL_GPL(i2c_adapter_type);
1378  
1379  /**
1380   * i2c_verify_adapter - return parameter as i2c_adapter or NULL
1381   * @dev: device, probably from some driver model iterator
1382   *
1383   * When traversing the driver model tree, perhaps using driver model
1384   * iterators like @device_for_each_child(), you can't assume very much
1385   * about the nodes you find.  Use this function to avoid oopses caused
1386   * by wrongly treating some non-I2C device as an i2c_adapter.
1387   */
i2c_verify_adapter(struct device * dev)1388  struct i2c_adapter *i2c_verify_adapter(struct device *dev)
1389  {
1390  	return (dev->type == &i2c_adapter_type)
1391  			? to_i2c_adapter(dev)
1392  			: NULL;
1393  }
1394  EXPORT_SYMBOL(i2c_verify_adapter);
1395  
1396  #ifdef CONFIG_I2C_COMPAT
1397  static struct class_compat *i2c_adapter_compat_class;
1398  #endif
1399  
i2c_scan_static_board_info(struct i2c_adapter * adapter)1400  static void i2c_scan_static_board_info(struct i2c_adapter *adapter)
1401  {
1402  	struct i2c_devinfo	*devinfo;
1403  
1404  	down_read(&__i2c_board_lock);
1405  	list_for_each_entry(devinfo, &__i2c_board_list, list) {
1406  		if (devinfo->busnum == adapter->nr &&
1407  		    IS_ERR(i2c_new_client_device(adapter, &devinfo->board_info)))
1408  			dev_err(&adapter->dev,
1409  				"Can't create device at 0x%02x\n",
1410  				devinfo->board_info.addr);
1411  	}
1412  	up_read(&__i2c_board_lock);
1413  }
1414  
i2c_do_add_adapter(struct i2c_driver * driver,struct i2c_adapter * adap)1415  static int i2c_do_add_adapter(struct i2c_driver *driver,
1416  			      struct i2c_adapter *adap)
1417  {
1418  	/* Detect supported devices on that bus, and instantiate them */
1419  	i2c_detect(adap, driver);
1420  
1421  	return 0;
1422  }
1423  
__process_new_adapter(struct device_driver * d,void * data)1424  static int __process_new_adapter(struct device_driver *d, void *data)
1425  {
1426  	return i2c_do_add_adapter(to_i2c_driver(d), data);
1427  }
1428  
1429  static const struct i2c_lock_operations i2c_adapter_lock_ops = {
1430  	.lock_bus =    i2c_adapter_lock_bus,
1431  	.trylock_bus = i2c_adapter_trylock_bus,
1432  	.unlock_bus =  i2c_adapter_unlock_bus,
1433  };
1434  
1435  /*
1436   * For a non-mux adapter, the lock_select operation locks the chain of
1437   * adapters upwards, returning the root. If there's a mux above this adapter
1438   * somehow, it should also get locked and the desired channel selected.
1439   */
i2c_adapter_lock_select(struct i2c_adapter * adapter)1440  static struct i2c_adapter *i2c_adapter_lock_select(struct i2c_adapter *adapter)
1441  {
1442  	struct i2c_adapter *ret = adapter;
1443  	struct i2c_adapter *parent = i2c_parent_is_i2c_adapter(adapter);
1444  
1445  	if (parent) {
1446  		ret = parent->mux_root_ops->lock_select(parent);
1447  		if (IS_ERR(ret))
1448  			return ret;
1449  	}
1450  
1451  	adapter->lock_ops->lock_bus(adapter, I2C_LOCK_ROOT_ADAPTER);
1452  	return ret;
1453  }
1454  
i2c_adapter_unlock_deselect(struct i2c_adapter * adapter)1455  static void i2c_adapter_unlock_deselect(struct i2c_adapter *adapter)
1456  {
1457  	struct i2c_adapter *parent = i2c_parent_is_i2c_adapter(adapter);
1458  
1459  	adapter->lock_ops->unlock_bus(adapter, I2C_LOCK_ROOT_ADAPTER);
1460  
1461  	if (parent)
1462  		parent->mux_root_ops->unlock_deselect(parent);
1463  }
1464  
1465  static const struct i2c_mux_root_operations i2c_adapter_mux_root_ops = {
1466  	.lock_select = i2c_adapter_lock_select,
1467  	.unlock_deselect = i2c_adapter_unlock_deselect,
1468  };
1469  
i2c_host_notify_irq_teardown(struct i2c_adapter * adap)1470  static void i2c_host_notify_irq_teardown(struct i2c_adapter *adap)
1471  {
1472  	struct irq_domain *domain = adap->host_notify_domain;
1473  	irq_hw_number_t hwirq;
1474  
1475  	if (!domain)
1476  		return;
1477  
1478  	for (hwirq = 0 ; hwirq < I2C_ADDR_7BITS_COUNT ; hwirq++)
1479  		irq_dispose_mapping(irq_find_mapping(domain, hwirq));
1480  
1481  	irq_domain_remove(domain);
1482  	adap->host_notify_domain = NULL;
1483  }
1484  
i2c_host_notify_irq_map(struct irq_domain * h,unsigned int virq,irq_hw_number_t hw_irq_num)1485  static int i2c_host_notify_irq_map(struct irq_domain *h,
1486  					  unsigned int virq,
1487  					  irq_hw_number_t hw_irq_num)
1488  {
1489  	irq_set_chip_and_handler(virq, &dummy_irq_chip, handle_simple_irq);
1490  
1491  	return 0;
1492  }
1493  
1494  static const struct irq_domain_ops i2c_host_notify_irq_ops = {
1495  	.map = i2c_host_notify_irq_map,
1496  };
1497  
i2c_setup_host_notify_irq_domain(struct i2c_adapter * adap)1498  static int i2c_setup_host_notify_irq_domain(struct i2c_adapter *adap)
1499  {
1500  	struct irq_domain *domain;
1501  
1502  	if (!i2c_check_functionality(adap, I2C_FUNC_SMBUS_HOST_NOTIFY))
1503  		return 0;
1504  
1505  	domain = irq_domain_create_linear(adap->dev.parent->fwnode,
1506  					  I2C_ADDR_7BITS_COUNT,
1507  					  &i2c_host_notify_irq_ops, adap);
1508  	if (!domain)
1509  		return -ENOMEM;
1510  
1511  	adap->host_notify_domain = domain;
1512  
1513  	return 0;
1514  }
1515  
1516  /**
1517   * i2c_handle_smbus_host_notify - Forward a Host Notify event to the correct
1518   * I2C client.
1519   * @adap: the adapter
1520   * @addr: the I2C address of the notifying device
1521   * Context: can't sleep
1522   *
1523   * Helper function to be called from an I2C bus driver's interrupt
1524   * handler. It will schedule the Host Notify IRQ.
1525   */
i2c_handle_smbus_host_notify(struct i2c_adapter * adap,unsigned short addr)1526  int i2c_handle_smbus_host_notify(struct i2c_adapter *adap, unsigned short addr)
1527  {
1528  	int irq;
1529  
1530  	if (!adap)
1531  		return -EINVAL;
1532  
1533  	irq = irq_find_mapping(adap->host_notify_domain, addr);
1534  	if (irq <= 0)
1535  		return -ENXIO;
1536  
1537  	generic_handle_irq_safe(irq);
1538  
1539  	return 0;
1540  }
1541  EXPORT_SYMBOL_GPL(i2c_handle_smbus_host_notify);
1542  
i2c_register_adapter(struct i2c_adapter * adap)1543  static int i2c_register_adapter(struct i2c_adapter *adap)
1544  {
1545  	int res = -EINVAL;
1546  
1547  	/* Can't register until after driver model init */
1548  	if (WARN_ON(!is_registered)) {
1549  		res = -EAGAIN;
1550  		goto out_list;
1551  	}
1552  
1553  	/* Sanity checks */
1554  	if (WARN(!adap->name[0], "i2c adapter has no name"))
1555  		goto out_list;
1556  
1557  	if (!adap->algo) {
1558  		pr_err("adapter '%s': no algo supplied!\n", adap->name);
1559  		goto out_list;
1560  	}
1561  
1562  	if (!adap->lock_ops)
1563  		adap->lock_ops = &i2c_adapter_lock_ops;
1564  
1565  	if (!adap->mux_root_ops)
1566  		adap->mux_root_ops = &i2c_adapter_mux_root_ops;
1567  
1568  	adap->locked_flags = 0;
1569  	rt_mutex_init(&adap->bus_lock);
1570  	rt_mutex_init(&adap->mux_lock);
1571  	mutex_init(&adap->userspace_clients_lock);
1572  	INIT_LIST_HEAD(&adap->userspace_clients);
1573  
1574  	/* Set default timeout to 1 second if not already set */
1575  	if (adap->timeout == 0)
1576  		adap->timeout = HZ;
1577  
1578  	/* register soft irqs for Host Notify */
1579  	res = i2c_setup_host_notify_irq_domain(adap);
1580  	if (res) {
1581  		pr_err("adapter '%s': can't create Host Notify IRQs (%d)\n",
1582  		       adap->name, res);
1583  		goto out_list;
1584  	}
1585  
1586  	dev_set_name(&adap->dev, "i2c-%d", adap->nr);
1587  	adap->dev.bus = &i2c_bus_type;
1588  	adap->dev.type = &i2c_adapter_type;
1589  	res = device_register(&adap->dev);
1590  	if (res) {
1591  		pr_err("adapter '%s': can't register device (%d)\n", adap->name, res);
1592  		goto out_list;
1593  	}
1594  
1595  	adap->debugfs = debugfs_create_dir(dev_name(&adap->dev), i2c_debugfs_root);
1596  
1597  	res = i2c_setup_smbus_alert(adap);
1598  	if (res)
1599  		goto out_reg;
1600  
1601  	device_enable_async_suspend(&adap->dev);
1602  	pm_runtime_no_callbacks(&adap->dev);
1603  	pm_suspend_ignore_children(&adap->dev, true);
1604  	pm_runtime_enable(&adap->dev);
1605  
1606  	res = i2c_init_recovery(adap);
1607  	if (res == -EPROBE_DEFER)
1608  		goto out_reg;
1609  
1610  	dev_dbg(&adap->dev, "adapter [%s] registered\n", adap->name);
1611  
1612  #ifdef CONFIG_I2C_COMPAT
1613  	res = class_compat_create_link(i2c_adapter_compat_class, &adap->dev,
1614  				       adap->dev.parent);
1615  	if (res)
1616  		dev_warn(&adap->dev,
1617  			 "Failed to create compatibility class link\n");
1618  #endif
1619  
1620  	/* create pre-declared device nodes */
1621  	of_i2c_register_devices(adap);
1622  	i2c_acpi_install_space_handler(adap);
1623  	i2c_acpi_register_devices(adap);
1624  
1625  	if (adap->nr < __i2c_first_dynamic_bus_num)
1626  		i2c_scan_static_board_info(adap);
1627  
1628  	/* Notify drivers */
1629  	mutex_lock(&core_lock);
1630  	bus_for_each_drv(&i2c_bus_type, NULL, adap, __process_new_adapter);
1631  	mutex_unlock(&core_lock);
1632  
1633  	return 0;
1634  
1635  out_reg:
1636  	debugfs_remove_recursive(adap->debugfs);
1637  	init_completion(&adap->dev_released);
1638  	device_unregister(&adap->dev);
1639  	wait_for_completion(&adap->dev_released);
1640  out_list:
1641  	mutex_lock(&core_lock);
1642  	idr_remove(&i2c_adapter_idr, adap->nr);
1643  	mutex_unlock(&core_lock);
1644  	return res;
1645  }
1646  
1647  /**
1648   * __i2c_add_numbered_adapter - i2c_add_numbered_adapter where nr is never -1
1649   * @adap: the adapter to register (with adap->nr initialized)
1650   * Context: can sleep
1651   *
1652   * See i2c_add_numbered_adapter() for details.
1653   */
__i2c_add_numbered_adapter(struct i2c_adapter * adap)1654  static int __i2c_add_numbered_adapter(struct i2c_adapter *adap)
1655  {
1656  	int id;
1657  
1658  	mutex_lock(&core_lock);
1659  	id = idr_alloc(&i2c_adapter_idr, adap, adap->nr, adap->nr + 1, GFP_KERNEL);
1660  	mutex_unlock(&core_lock);
1661  	if (WARN(id < 0, "couldn't get idr"))
1662  		return id == -ENOSPC ? -EBUSY : id;
1663  
1664  	return i2c_register_adapter(adap);
1665  }
1666  
1667  /**
1668   * i2c_add_adapter - declare i2c adapter, use dynamic bus number
1669   * @adapter: the adapter to add
1670   * Context: can sleep
1671   *
1672   * This routine is used to declare an I2C adapter when its bus number
1673   * doesn't matter or when its bus number is specified by an dt alias.
1674   * Examples of bases when the bus number doesn't matter: I2C adapters
1675   * dynamically added by USB links or PCI plugin cards.
1676   *
1677   * When this returns zero, a new bus number was allocated and stored
1678   * in adap->nr, and the specified adapter became available for clients.
1679   * Otherwise, a negative errno value is returned.
1680   */
i2c_add_adapter(struct i2c_adapter * adapter)1681  int i2c_add_adapter(struct i2c_adapter *adapter)
1682  {
1683  	struct device *dev = &adapter->dev;
1684  	int id;
1685  
1686  	if (dev->of_node) {
1687  		id = of_alias_get_id(dev->of_node, "i2c");
1688  		if (id >= 0) {
1689  			adapter->nr = id;
1690  			return __i2c_add_numbered_adapter(adapter);
1691  		}
1692  	}
1693  
1694  	mutex_lock(&core_lock);
1695  	id = idr_alloc(&i2c_adapter_idr, adapter,
1696  		       __i2c_first_dynamic_bus_num, 0, GFP_KERNEL);
1697  	mutex_unlock(&core_lock);
1698  	if (WARN(id < 0, "couldn't get idr"))
1699  		return id;
1700  
1701  	adapter->nr = id;
1702  
1703  	return i2c_register_adapter(adapter);
1704  }
1705  EXPORT_SYMBOL(i2c_add_adapter);
1706  
1707  /**
1708   * i2c_add_numbered_adapter - declare i2c adapter, use static bus number
1709   * @adap: the adapter to register (with adap->nr initialized)
1710   * Context: can sleep
1711   *
1712   * This routine is used to declare an I2C adapter when its bus number
1713   * matters.  For example, use it for I2C adapters from system-on-chip CPUs,
1714   * or otherwise built in to the system's mainboard, and where i2c_board_info
1715   * is used to properly configure I2C devices.
1716   *
1717   * If the requested bus number is set to -1, then this function will behave
1718   * identically to i2c_add_adapter, and will dynamically assign a bus number.
1719   *
1720   * If no devices have pre-been declared for this bus, then be sure to
1721   * register the adapter before any dynamically allocated ones.  Otherwise
1722   * the required bus ID may not be available.
1723   *
1724   * When this returns zero, the specified adapter became available for
1725   * clients using the bus number provided in adap->nr.  Also, the table
1726   * of I2C devices pre-declared using i2c_register_board_info() is scanned,
1727   * and the appropriate driver model device nodes are created.  Otherwise, a
1728   * negative errno value is returned.
1729   */
i2c_add_numbered_adapter(struct i2c_adapter * adap)1730  int i2c_add_numbered_adapter(struct i2c_adapter *adap)
1731  {
1732  	if (adap->nr == -1) /* -1 means dynamically assign bus id */
1733  		return i2c_add_adapter(adap);
1734  
1735  	return __i2c_add_numbered_adapter(adap);
1736  }
1737  EXPORT_SYMBOL_GPL(i2c_add_numbered_adapter);
1738  
i2c_do_del_adapter(struct i2c_driver * driver,struct i2c_adapter * adapter)1739  static void i2c_do_del_adapter(struct i2c_driver *driver,
1740  			      struct i2c_adapter *adapter)
1741  {
1742  	struct i2c_client *client, *_n;
1743  
1744  	/* Remove the devices we created ourselves as the result of hardware
1745  	 * probing (using a driver's detect method) */
1746  	list_for_each_entry_safe(client, _n, &driver->clients, detected) {
1747  		if (client->adapter == adapter) {
1748  			dev_dbg(&adapter->dev, "Removing %s at 0x%x\n",
1749  				client->name, client->addr);
1750  			list_del(&client->detected);
1751  			i2c_unregister_device(client);
1752  		}
1753  	}
1754  }
1755  
__unregister_client(struct device * dev,void * dummy)1756  static int __unregister_client(struct device *dev, void *dummy)
1757  {
1758  	struct i2c_client *client = i2c_verify_client(dev);
1759  	if (client && strcmp(client->name, "dummy"))
1760  		i2c_unregister_device(client);
1761  	return 0;
1762  }
1763  
__unregister_dummy(struct device * dev,void * dummy)1764  static int __unregister_dummy(struct device *dev, void *dummy)
1765  {
1766  	struct i2c_client *client = i2c_verify_client(dev);
1767  	i2c_unregister_device(client);
1768  	return 0;
1769  }
1770  
__process_removed_adapter(struct device_driver * d,void * data)1771  static int __process_removed_adapter(struct device_driver *d, void *data)
1772  {
1773  	i2c_do_del_adapter(to_i2c_driver(d), data);
1774  	return 0;
1775  }
1776  
1777  /**
1778   * i2c_del_adapter - unregister I2C adapter
1779   * @adap: the adapter being unregistered
1780   * Context: can sleep
1781   *
1782   * This unregisters an I2C adapter which was previously registered
1783   * by @i2c_add_adapter or @i2c_add_numbered_adapter.
1784   */
i2c_del_adapter(struct i2c_adapter * adap)1785  void i2c_del_adapter(struct i2c_adapter *adap)
1786  {
1787  	struct i2c_adapter *found;
1788  	struct i2c_client *client, *next;
1789  
1790  	/* First make sure that this adapter was ever added */
1791  	mutex_lock(&core_lock);
1792  	found = idr_find(&i2c_adapter_idr, adap->nr);
1793  	mutex_unlock(&core_lock);
1794  	if (found != adap) {
1795  		pr_debug("attempting to delete unregistered adapter [%s]\n", adap->name);
1796  		return;
1797  	}
1798  
1799  	i2c_acpi_remove_space_handler(adap);
1800  	/* Tell drivers about this removal */
1801  	mutex_lock(&core_lock);
1802  	bus_for_each_drv(&i2c_bus_type, NULL, adap,
1803  			       __process_removed_adapter);
1804  	mutex_unlock(&core_lock);
1805  
1806  	/* Remove devices instantiated from sysfs */
1807  	mutex_lock_nested(&adap->userspace_clients_lock,
1808  			  i2c_adapter_depth(adap));
1809  	list_for_each_entry_safe(client, next, &adap->userspace_clients,
1810  				 detected) {
1811  		dev_dbg(&adap->dev, "Removing %s at 0x%x\n", client->name,
1812  			client->addr);
1813  		list_del(&client->detected);
1814  		i2c_unregister_device(client);
1815  	}
1816  	mutex_unlock(&adap->userspace_clients_lock);
1817  
1818  	/* Detach any active clients. This can't fail, thus we do not
1819  	 * check the returned value. This is a two-pass process, because
1820  	 * we can't remove the dummy devices during the first pass: they
1821  	 * could have been instantiated by real devices wishing to clean
1822  	 * them up properly, so we give them a chance to do that first. */
1823  	device_for_each_child(&adap->dev, NULL, __unregister_client);
1824  	device_for_each_child(&adap->dev, NULL, __unregister_dummy);
1825  
1826  #ifdef CONFIG_I2C_COMPAT
1827  	class_compat_remove_link(i2c_adapter_compat_class, &adap->dev,
1828  				 adap->dev.parent);
1829  #endif
1830  
1831  	/* device name is gone after device_unregister */
1832  	dev_dbg(&adap->dev, "adapter [%s] unregistered\n", adap->name);
1833  
1834  	pm_runtime_disable(&adap->dev);
1835  
1836  	i2c_host_notify_irq_teardown(adap);
1837  
1838  	debugfs_remove_recursive(adap->debugfs);
1839  
1840  	/* wait until all references to the device are gone
1841  	 *
1842  	 * FIXME: This is old code and should ideally be replaced by an
1843  	 * alternative which results in decoupling the lifetime of the struct
1844  	 * device from the i2c_adapter, like spi or netdev do. Any solution
1845  	 * should be thoroughly tested with DEBUG_KOBJECT_RELEASE enabled!
1846  	 */
1847  	init_completion(&adap->dev_released);
1848  	device_unregister(&adap->dev);
1849  	wait_for_completion(&adap->dev_released);
1850  
1851  	/* free bus id */
1852  	mutex_lock(&core_lock);
1853  	idr_remove(&i2c_adapter_idr, adap->nr);
1854  	mutex_unlock(&core_lock);
1855  
1856  	/* Clear the device structure in case this adapter is ever going to be
1857  	   added again */
1858  	memset(&adap->dev, 0, sizeof(adap->dev));
1859  }
1860  EXPORT_SYMBOL(i2c_del_adapter);
1861  
devm_i2c_del_adapter(void * adapter)1862  static void devm_i2c_del_adapter(void *adapter)
1863  {
1864  	i2c_del_adapter(adapter);
1865  }
1866  
1867  /**
1868   * devm_i2c_add_adapter - device-managed variant of i2c_add_adapter()
1869   * @dev: managing device for adding this I2C adapter
1870   * @adapter: the adapter to add
1871   * Context: can sleep
1872   *
1873   * Add adapter with dynamic bus number, same with i2c_add_adapter()
1874   * but the adapter will be auto deleted on driver detach.
1875   */
devm_i2c_add_adapter(struct device * dev,struct i2c_adapter * adapter)1876  int devm_i2c_add_adapter(struct device *dev, struct i2c_adapter *adapter)
1877  {
1878  	int ret;
1879  
1880  	ret = i2c_add_adapter(adapter);
1881  	if (ret)
1882  		return ret;
1883  
1884  	return devm_add_action_or_reset(dev, devm_i2c_del_adapter, adapter);
1885  }
1886  EXPORT_SYMBOL_GPL(devm_i2c_add_adapter);
1887  
i2c_dev_or_parent_fwnode_match(struct device * dev,const void * data)1888  static int i2c_dev_or_parent_fwnode_match(struct device *dev, const void *data)
1889  {
1890  	if (dev_fwnode(dev) == data)
1891  		return 1;
1892  
1893  	if (dev->parent && dev_fwnode(dev->parent) == data)
1894  		return 1;
1895  
1896  	return 0;
1897  }
1898  
1899  /**
1900   * i2c_find_adapter_by_fwnode() - find an i2c_adapter for the fwnode
1901   * @fwnode: &struct fwnode_handle corresponding to the &struct i2c_adapter
1902   *
1903   * Look up and return the &struct i2c_adapter corresponding to the @fwnode.
1904   * If no adapter can be found, or @fwnode is NULL, this returns NULL.
1905   *
1906   * The user must call put_device(&adapter->dev) once done with the i2c adapter.
1907   */
i2c_find_adapter_by_fwnode(struct fwnode_handle * fwnode)1908  struct i2c_adapter *i2c_find_adapter_by_fwnode(struct fwnode_handle *fwnode)
1909  {
1910  	struct i2c_adapter *adapter;
1911  	struct device *dev;
1912  
1913  	if (!fwnode)
1914  		return NULL;
1915  
1916  	dev = bus_find_device(&i2c_bus_type, NULL, fwnode,
1917  			      i2c_dev_or_parent_fwnode_match);
1918  	if (!dev)
1919  		return NULL;
1920  
1921  	adapter = i2c_verify_adapter(dev);
1922  	if (!adapter)
1923  		put_device(dev);
1924  
1925  	return adapter;
1926  }
1927  EXPORT_SYMBOL(i2c_find_adapter_by_fwnode);
1928  
1929  /**
1930   * i2c_get_adapter_by_fwnode() - find an i2c_adapter for the fwnode
1931   * @fwnode: &struct fwnode_handle corresponding to the &struct i2c_adapter
1932   *
1933   * Look up and return the &struct i2c_adapter corresponding to the @fwnode,
1934   * and increment the adapter module's use count. If no adapter can be found,
1935   * or @fwnode is NULL, this returns NULL.
1936   *
1937   * The user must call i2c_put_adapter(adapter) once done with the i2c adapter.
1938   * Note that this is different from i2c_find_adapter_by_node().
1939   */
i2c_get_adapter_by_fwnode(struct fwnode_handle * fwnode)1940  struct i2c_adapter *i2c_get_adapter_by_fwnode(struct fwnode_handle *fwnode)
1941  {
1942  	struct i2c_adapter *adapter;
1943  
1944  	adapter = i2c_find_adapter_by_fwnode(fwnode);
1945  	if (!adapter)
1946  		return NULL;
1947  
1948  	if (!try_module_get(adapter->owner)) {
1949  		put_device(&adapter->dev);
1950  		adapter = NULL;
1951  	}
1952  
1953  	return adapter;
1954  }
1955  EXPORT_SYMBOL(i2c_get_adapter_by_fwnode);
1956  
i2c_parse_timing(struct device * dev,char * prop_name,u32 * cur_val_p,u32 def_val,bool use_def)1957  static void i2c_parse_timing(struct device *dev, char *prop_name, u32 *cur_val_p,
1958  			    u32 def_val, bool use_def)
1959  {
1960  	int ret;
1961  
1962  	ret = device_property_read_u32(dev, prop_name, cur_val_p);
1963  	if (ret && use_def)
1964  		*cur_val_p = def_val;
1965  
1966  	dev_dbg(dev, "%s: %u\n", prop_name, *cur_val_p);
1967  }
1968  
1969  /**
1970   * i2c_parse_fw_timings - get I2C related timing parameters from firmware
1971   * @dev: The device to scan for I2C timing properties
1972   * @t: the i2c_timings struct to be filled with values
1973   * @use_defaults: bool to use sane defaults derived from the I2C specification
1974   *		  when properties are not found, otherwise don't update
1975   *
1976   * Scan the device for the generic I2C properties describing timing parameters
1977   * for the signal and fill the given struct with the results. If a property was
1978   * not found and use_defaults was true, then maximum timings are assumed which
1979   * are derived from the I2C specification. If use_defaults is not used, the
1980   * results will be as before, so drivers can apply their own defaults before
1981   * calling this helper. The latter is mainly intended for avoiding regressions
1982   * of existing drivers which want to switch to this function. New drivers
1983   * almost always should use the defaults.
1984   */
i2c_parse_fw_timings(struct device * dev,struct i2c_timings * t,bool use_defaults)1985  void i2c_parse_fw_timings(struct device *dev, struct i2c_timings *t, bool use_defaults)
1986  {
1987  	bool u = use_defaults;
1988  	u32 d;
1989  
1990  	i2c_parse_timing(dev, "clock-frequency", &t->bus_freq_hz,
1991  			 I2C_MAX_STANDARD_MODE_FREQ, u);
1992  
1993  	d = t->bus_freq_hz <= I2C_MAX_STANDARD_MODE_FREQ ? 1000 :
1994  	    t->bus_freq_hz <= I2C_MAX_FAST_MODE_FREQ ? 300 : 120;
1995  	i2c_parse_timing(dev, "i2c-scl-rising-time-ns", &t->scl_rise_ns, d, u);
1996  
1997  	d = t->bus_freq_hz <= I2C_MAX_FAST_MODE_FREQ ? 300 : 120;
1998  	i2c_parse_timing(dev, "i2c-scl-falling-time-ns", &t->scl_fall_ns, d, u);
1999  
2000  	i2c_parse_timing(dev, "i2c-scl-internal-delay-ns",
2001  			 &t->scl_int_delay_ns, 0, u);
2002  	i2c_parse_timing(dev, "i2c-sda-falling-time-ns", &t->sda_fall_ns,
2003  			 t->scl_fall_ns, u);
2004  	i2c_parse_timing(dev, "i2c-sda-hold-time-ns", &t->sda_hold_ns, 0, u);
2005  	i2c_parse_timing(dev, "i2c-digital-filter-width-ns",
2006  			 &t->digital_filter_width_ns, 0, u);
2007  	i2c_parse_timing(dev, "i2c-analog-filter-cutoff-frequency",
2008  			 &t->analog_filter_cutoff_freq_hz, 0, u);
2009  }
2010  EXPORT_SYMBOL_GPL(i2c_parse_fw_timings);
2011  
2012  /* ------------------------------------------------------------------------- */
2013  
i2c_for_each_dev(void * data,int (* fn)(struct device * dev,void * data))2014  int i2c_for_each_dev(void *data, int (*fn)(struct device *dev, void *data))
2015  {
2016  	int res;
2017  
2018  	mutex_lock(&core_lock);
2019  	res = bus_for_each_dev(&i2c_bus_type, NULL, data, fn);
2020  	mutex_unlock(&core_lock);
2021  
2022  	return res;
2023  }
2024  EXPORT_SYMBOL_GPL(i2c_for_each_dev);
2025  
__process_new_driver(struct device * dev,void * data)2026  static int __process_new_driver(struct device *dev, void *data)
2027  {
2028  	if (dev->type != &i2c_adapter_type)
2029  		return 0;
2030  	return i2c_do_add_adapter(data, to_i2c_adapter(dev));
2031  }
2032  
2033  /*
2034   * An i2c_driver is used with one or more i2c_client (device) nodes to access
2035   * i2c slave chips, on a bus instance associated with some i2c_adapter.
2036   */
2037  
i2c_register_driver(struct module * owner,struct i2c_driver * driver)2038  int i2c_register_driver(struct module *owner, struct i2c_driver *driver)
2039  {
2040  	int res;
2041  
2042  	/* Can't register until after driver model init */
2043  	if (WARN_ON(!is_registered))
2044  		return -EAGAIN;
2045  
2046  	/* add the driver to the list of i2c drivers in the driver core */
2047  	driver->driver.owner = owner;
2048  	driver->driver.bus = &i2c_bus_type;
2049  	INIT_LIST_HEAD(&driver->clients);
2050  
2051  	/* When registration returns, the driver core
2052  	 * will have called probe() for all matching-but-unbound devices.
2053  	 */
2054  	res = driver_register(&driver->driver);
2055  	if (res)
2056  		return res;
2057  
2058  	pr_debug("driver [%s] registered\n", driver->driver.name);
2059  
2060  	/* Walk the adapters that are already present */
2061  	i2c_for_each_dev(driver, __process_new_driver);
2062  
2063  	return 0;
2064  }
2065  EXPORT_SYMBOL(i2c_register_driver);
2066  
__process_removed_driver(struct device * dev,void * data)2067  static int __process_removed_driver(struct device *dev, void *data)
2068  {
2069  	if (dev->type == &i2c_adapter_type)
2070  		i2c_do_del_adapter(data, to_i2c_adapter(dev));
2071  	return 0;
2072  }
2073  
2074  /**
2075   * i2c_del_driver - unregister I2C driver
2076   * @driver: the driver being unregistered
2077   * Context: can sleep
2078   */
i2c_del_driver(struct i2c_driver * driver)2079  void i2c_del_driver(struct i2c_driver *driver)
2080  {
2081  	i2c_for_each_dev(driver, __process_removed_driver);
2082  
2083  	driver_unregister(&driver->driver);
2084  	pr_debug("driver [%s] unregistered\n", driver->driver.name);
2085  }
2086  EXPORT_SYMBOL(i2c_del_driver);
2087  
2088  /* ------------------------------------------------------------------------- */
2089  
2090  struct i2c_cmd_arg {
2091  	unsigned	cmd;
2092  	void		*arg;
2093  };
2094  
i2c_cmd(struct device * dev,void * _arg)2095  static int i2c_cmd(struct device *dev, void *_arg)
2096  {
2097  	struct i2c_client	*client = i2c_verify_client(dev);
2098  	struct i2c_cmd_arg	*arg = _arg;
2099  	struct i2c_driver	*driver;
2100  
2101  	if (!client || !client->dev.driver)
2102  		return 0;
2103  
2104  	driver = to_i2c_driver(client->dev.driver);
2105  	if (driver->command)
2106  		driver->command(client, arg->cmd, arg->arg);
2107  	return 0;
2108  }
2109  
i2c_clients_command(struct i2c_adapter * adap,unsigned int cmd,void * arg)2110  void i2c_clients_command(struct i2c_adapter *adap, unsigned int cmd, void *arg)
2111  {
2112  	struct i2c_cmd_arg	cmd_arg;
2113  
2114  	cmd_arg.cmd = cmd;
2115  	cmd_arg.arg = arg;
2116  	device_for_each_child(&adap->dev, &cmd_arg, i2c_cmd);
2117  }
2118  EXPORT_SYMBOL(i2c_clients_command);
2119  
i2c_init(void)2120  static int __init i2c_init(void)
2121  {
2122  	int retval;
2123  
2124  	retval = of_alias_get_highest_id("i2c");
2125  
2126  	down_write(&__i2c_board_lock);
2127  	if (retval >= __i2c_first_dynamic_bus_num)
2128  		__i2c_first_dynamic_bus_num = retval + 1;
2129  	up_write(&__i2c_board_lock);
2130  
2131  	retval = bus_register(&i2c_bus_type);
2132  	if (retval)
2133  		return retval;
2134  
2135  	is_registered = true;
2136  
2137  	i2c_debugfs_root = debugfs_create_dir("i2c", NULL);
2138  
2139  #ifdef CONFIG_I2C_COMPAT
2140  	i2c_adapter_compat_class = class_compat_register("i2c-adapter");
2141  	if (!i2c_adapter_compat_class) {
2142  		retval = -ENOMEM;
2143  		goto bus_err;
2144  	}
2145  #endif
2146  	retval = i2c_add_driver(&dummy_driver);
2147  	if (retval)
2148  		goto class_err;
2149  
2150  	if (IS_ENABLED(CONFIG_OF_DYNAMIC))
2151  		WARN_ON(of_reconfig_notifier_register(&i2c_of_notifier));
2152  	if (IS_ENABLED(CONFIG_ACPI))
2153  		WARN_ON(acpi_reconfig_notifier_register(&i2c_acpi_notifier));
2154  
2155  	return 0;
2156  
2157  class_err:
2158  #ifdef CONFIG_I2C_COMPAT
2159  	class_compat_unregister(i2c_adapter_compat_class);
2160  bus_err:
2161  #endif
2162  	is_registered = false;
2163  	bus_unregister(&i2c_bus_type);
2164  	return retval;
2165  }
2166  
i2c_exit(void)2167  static void __exit i2c_exit(void)
2168  {
2169  	if (IS_ENABLED(CONFIG_ACPI))
2170  		WARN_ON(acpi_reconfig_notifier_unregister(&i2c_acpi_notifier));
2171  	if (IS_ENABLED(CONFIG_OF_DYNAMIC))
2172  		WARN_ON(of_reconfig_notifier_unregister(&i2c_of_notifier));
2173  	i2c_del_driver(&dummy_driver);
2174  #ifdef CONFIG_I2C_COMPAT
2175  	class_compat_unregister(i2c_adapter_compat_class);
2176  #endif
2177  	debugfs_remove_recursive(i2c_debugfs_root);
2178  	bus_unregister(&i2c_bus_type);
2179  	tracepoint_synchronize_unregister();
2180  }
2181  
2182  /* We must initialize early, because some subsystems register i2c drivers
2183   * in subsys_initcall() code, but are linked (and initialized) before i2c.
2184   */
2185  postcore_initcall(i2c_init);
2186  module_exit(i2c_exit);
2187  
2188  /* ----------------------------------------------------
2189   * the functional interface to the i2c busses.
2190   * ----------------------------------------------------
2191   */
2192  
2193  /* Check if val is exceeding the quirk IFF quirk is non 0 */
2194  #define i2c_quirk_exceeded(val, quirk) ((quirk) && ((val) > (quirk)))
2195  
i2c_quirk_error(struct i2c_adapter * adap,struct i2c_msg * msg,char * err_msg)2196  static int i2c_quirk_error(struct i2c_adapter *adap, struct i2c_msg *msg, char *err_msg)
2197  {
2198  	dev_err_ratelimited(&adap->dev, "adapter quirk: %s (addr 0x%04x, size %u, %s)\n",
2199  			    err_msg, msg->addr, msg->len,
2200  			    msg->flags & I2C_M_RD ? "read" : "write");
2201  	return -EOPNOTSUPP;
2202  }
2203  
i2c_check_for_quirks(struct i2c_adapter * adap,struct i2c_msg * msgs,int num)2204  static int i2c_check_for_quirks(struct i2c_adapter *adap, struct i2c_msg *msgs, int num)
2205  {
2206  	const struct i2c_adapter_quirks *q = adap->quirks;
2207  	int max_num = q->max_num_msgs, i;
2208  	bool do_len_check = true;
2209  
2210  	if (q->flags & I2C_AQ_COMB) {
2211  		max_num = 2;
2212  
2213  		/* special checks for combined messages */
2214  		if (num == 2) {
2215  			if (q->flags & I2C_AQ_COMB_WRITE_FIRST && msgs[0].flags & I2C_M_RD)
2216  				return i2c_quirk_error(adap, &msgs[0], "1st comb msg must be write");
2217  
2218  			if (q->flags & I2C_AQ_COMB_READ_SECOND && !(msgs[1].flags & I2C_M_RD))
2219  				return i2c_quirk_error(adap, &msgs[1], "2nd comb msg must be read");
2220  
2221  			if (q->flags & I2C_AQ_COMB_SAME_ADDR && msgs[0].addr != msgs[1].addr)
2222  				return i2c_quirk_error(adap, &msgs[0], "comb msg only to same addr");
2223  
2224  			if (i2c_quirk_exceeded(msgs[0].len, q->max_comb_1st_msg_len))
2225  				return i2c_quirk_error(adap, &msgs[0], "msg too long");
2226  
2227  			if (i2c_quirk_exceeded(msgs[1].len, q->max_comb_2nd_msg_len))
2228  				return i2c_quirk_error(adap, &msgs[1], "msg too long");
2229  
2230  			do_len_check = false;
2231  		}
2232  	}
2233  
2234  	if (i2c_quirk_exceeded(num, max_num))
2235  		return i2c_quirk_error(adap, &msgs[0], "too many messages");
2236  
2237  	for (i = 0; i < num; i++) {
2238  		u16 len = msgs[i].len;
2239  
2240  		if (msgs[i].flags & I2C_M_RD) {
2241  			if (do_len_check && i2c_quirk_exceeded(len, q->max_read_len))
2242  				return i2c_quirk_error(adap, &msgs[i], "msg too long");
2243  
2244  			if (q->flags & I2C_AQ_NO_ZERO_LEN_READ && len == 0)
2245  				return i2c_quirk_error(adap, &msgs[i], "no zero length");
2246  		} else {
2247  			if (do_len_check && i2c_quirk_exceeded(len, q->max_write_len))
2248  				return i2c_quirk_error(adap, &msgs[i], "msg too long");
2249  
2250  			if (q->flags & I2C_AQ_NO_ZERO_LEN_WRITE && len == 0)
2251  				return i2c_quirk_error(adap, &msgs[i], "no zero length");
2252  		}
2253  	}
2254  
2255  	return 0;
2256  }
2257  
2258  /**
2259   * __i2c_transfer - unlocked flavor of i2c_transfer
2260   * @adap: Handle to I2C bus
2261   * @msgs: One or more messages to execute before STOP is issued to
2262   *	terminate the operation; each message begins with a START.
2263   * @num: Number of messages to be executed.
2264   *
2265   * Returns negative errno, else the number of messages executed.
2266   *
2267   * Adapter lock must be held when calling this function. No debug logging
2268   * takes place.
2269   */
__i2c_transfer(struct i2c_adapter * adap,struct i2c_msg * msgs,int num)2270  int __i2c_transfer(struct i2c_adapter *adap, struct i2c_msg *msgs, int num)
2271  {
2272  	unsigned long orig_jiffies;
2273  	int ret, try;
2274  
2275  	if (!adap->algo->master_xfer) {
2276  		dev_dbg(&adap->dev, "I2C level transfers not supported\n");
2277  		return -EOPNOTSUPP;
2278  	}
2279  
2280  	if (WARN_ON(!msgs || num < 1))
2281  		return -EINVAL;
2282  
2283  	ret = __i2c_check_suspended(adap);
2284  	if (ret)
2285  		return ret;
2286  
2287  	if (adap->quirks && i2c_check_for_quirks(adap, msgs, num))
2288  		return -EOPNOTSUPP;
2289  
2290  	/*
2291  	 * i2c_trace_msg_key gets enabled when tracepoint i2c_transfer gets
2292  	 * enabled.  This is an efficient way of keeping the for-loop from
2293  	 * being executed when not needed.
2294  	 */
2295  	if (static_branch_unlikely(&i2c_trace_msg_key)) {
2296  		int i;
2297  		for (i = 0; i < num; i++)
2298  			if (msgs[i].flags & I2C_M_RD)
2299  				trace_i2c_read(adap, &msgs[i], i);
2300  			else
2301  				trace_i2c_write(adap, &msgs[i], i);
2302  	}
2303  
2304  	/* Retry automatically on arbitration loss */
2305  	orig_jiffies = jiffies;
2306  	for (ret = 0, try = 0; try <= adap->retries; try++) {
2307  		if (i2c_in_atomic_xfer_mode() && adap->algo->master_xfer_atomic)
2308  			ret = adap->algo->master_xfer_atomic(adap, msgs, num);
2309  		else
2310  			ret = adap->algo->master_xfer(adap, msgs, num);
2311  
2312  		if (ret != -EAGAIN)
2313  			break;
2314  		if (time_after(jiffies, orig_jiffies + adap->timeout))
2315  			break;
2316  	}
2317  
2318  	if (static_branch_unlikely(&i2c_trace_msg_key)) {
2319  		int i;
2320  		for (i = 0; i < ret; i++)
2321  			if (msgs[i].flags & I2C_M_RD)
2322  				trace_i2c_reply(adap, &msgs[i], i);
2323  		trace_i2c_result(adap, num, ret);
2324  	}
2325  
2326  	return ret;
2327  }
2328  EXPORT_SYMBOL(__i2c_transfer);
2329  
2330  /**
2331   * i2c_transfer - execute a single or combined I2C message
2332   * @adap: Handle to I2C bus
2333   * @msgs: One or more messages to execute before STOP is issued to
2334   *	terminate the operation; each message begins with a START.
2335   * @num: Number of messages to be executed.
2336   *
2337   * Returns negative errno, else the number of messages executed.
2338   *
2339   * Note that there is no requirement that each message be sent to
2340   * the same slave address, although that is the most common model.
2341   */
i2c_transfer(struct i2c_adapter * adap,struct i2c_msg * msgs,int num)2342  int i2c_transfer(struct i2c_adapter *adap, struct i2c_msg *msgs, int num)
2343  {
2344  	int ret;
2345  
2346  	/* REVISIT the fault reporting model here is weak:
2347  	 *
2348  	 *  - When we get an error after receiving N bytes from a slave,
2349  	 *    there is no way to report "N".
2350  	 *
2351  	 *  - When we get a NAK after transmitting N bytes to a slave,
2352  	 *    there is no way to report "N" ... or to let the master
2353  	 *    continue executing the rest of this combined message, if
2354  	 *    that's the appropriate response.
2355  	 *
2356  	 *  - When for example "num" is two and we successfully complete
2357  	 *    the first message but get an error part way through the
2358  	 *    second, it's unclear whether that should be reported as
2359  	 *    one (discarding status on the second message) or errno
2360  	 *    (discarding status on the first one).
2361  	 */
2362  	ret = __i2c_lock_bus_helper(adap);
2363  	if (ret)
2364  		return ret;
2365  
2366  	ret = __i2c_transfer(adap, msgs, num);
2367  	i2c_unlock_bus(adap, I2C_LOCK_SEGMENT);
2368  
2369  	return ret;
2370  }
2371  EXPORT_SYMBOL(i2c_transfer);
2372  
2373  /**
2374   * i2c_transfer_buffer_flags - issue a single I2C message transferring data
2375   *			       to/from a buffer
2376   * @client: Handle to slave device
2377   * @buf: Where the data is stored
2378   * @count: How many bytes to transfer, must be less than 64k since msg.len is u16
2379   * @flags: The flags to be used for the message, e.g. I2C_M_RD for reads
2380   *
2381   * Returns negative errno, or else the number of bytes transferred.
2382   */
i2c_transfer_buffer_flags(const struct i2c_client * client,char * buf,int count,u16 flags)2383  int i2c_transfer_buffer_flags(const struct i2c_client *client, char *buf,
2384  			      int count, u16 flags)
2385  {
2386  	int ret;
2387  	struct i2c_msg msg = {
2388  		.addr = client->addr,
2389  		.flags = flags | (client->flags & I2C_M_TEN),
2390  		.len = count,
2391  		.buf = buf,
2392  	};
2393  
2394  	ret = i2c_transfer(client->adapter, &msg, 1);
2395  
2396  	/*
2397  	 * If everything went ok (i.e. 1 msg transferred), return #bytes
2398  	 * transferred, else error code.
2399  	 */
2400  	return (ret == 1) ? count : ret;
2401  }
2402  EXPORT_SYMBOL(i2c_transfer_buffer_flags);
2403  
2404  /**
2405   * i2c_get_device_id - get manufacturer, part id and die revision of a device
2406   * @client: The device to query
2407   * @id: The queried information
2408   *
2409   * Returns negative errno on error, zero on success.
2410   */
i2c_get_device_id(const struct i2c_client * client,struct i2c_device_identity * id)2411  int i2c_get_device_id(const struct i2c_client *client,
2412  		      struct i2c_device_identity *id)
2413  {
2414  	struct i2c_adapter *adap = client->adapter;
2415  	union i2c_smbus_data raw_id;
2416  	int ret;
2417  
2418  	if (!i2c_check_functionality(adap, I2C_FUNC_SMBUS_READ_I2C_BLOCK))
2419  		return -EOPNOTSUPP;
2420  
2421  	raw_id.block[0] = 3;
2422  	ret = i2c_smbus_xfer(adap, I2C_ADDR_DEVICE_ID, 0,
2423  			     I2C_SMBUS_READ, client->addr << 1,
2424  			     I2C_SMBUS_I2C_BLOCK_DATA, &raw_id);
2425  	if (ret)
2426  		return ret;
2427  
2428  	id->manufacturer_id = (raw_id.block[1] << 4) | (raw_id.block[2] >> 4);
2429  	id->part_id = ((raw_id.block[2] & 0xf) << 5) | (raw_id.block[3] >> 3);
2430  	id->die_revision = raw_id.block[3] & 0x7;
2431  	return 0;
2432  }
2433  EXPORT_SYMBOL_GPL(i2c_get_device_id);
2434  
2435  /**
2436   * i2c_client_get_device_id - get the driver match table entry of a device
2437   * @client: the device to query. The device must be bound to a driver
2438   *
2439   * Returns a pointer to the matching entry if found, NULL otherwise.
2440   */
i2c_client_get_device_id(const struct i2c_client * client)2441  const struct i2c_device_id *i2c_client_get_device_id(const struct i2c_client *client)
2442  {
2443  	const struct i2c_driver *drv = to_i2c_driver(client->dev.driver);
2444  
2445  	return i2c_match_id(drv->id_table, client);
2446  }
2447  EXPORT_SYMBOL_GPL(i2c_client_get_device_id);
2448  
2449  /* ----------------------------------------------------
2450   * the i2c address scanning function
2451   * Will not work for 10-bit addresses!
2452   * ----------------------------------------------------
2453   */
2454  
2455  /*
2456   * Legacy default probe function, mostly relevant for SMBus. The default
2457   * probe method is a quick write, but it is known to corrupt the 24RF08
2458   * EEPROMs due to a state machine bug, and could also irreversibly
2459   * write-protect some EEPROMs, so for address ranges 0x30-0x37 and 0x50-0x5f,
2460   * we use a short byte read instead. Also, some bus drivers don't implement
2461   * quick write, so we fallback to a byte read in that case too.
2462   * On x86, there is another special case for FSC hardware monitoring chips,
2463   * which want regular byte reads (address 0x73.) Fortunately, these are the
2464   * only known chips using this I2C address on PC hardware.
2465   * Returns 1 if probe succeeded, 0 if not.
2466   */
i2c_default_probe(struct i2c_adapter * adap,unsigned short addr)2467  static int i2c_default_probe(struct i2c_adapter *adap, unsigned short addr)
2468  {
2469  	int err;
2470  	union i2c_smbus_data dummy;
2471  
2472  #ifdef CONFIG_X86
2473  	if (addr == 0x73 && (adap->class & I2C_CLASS_HWMON)
2474  	 && i2c_check_functionality(adap, I2C_FUNC_SMBUS_READ_BYTE_DATA))
2475  		err = i2c_smbus_xfer(adap, addr, 0, I2C_SMBUS_READ, 0,
2476  				     I2C_SMBUS_BYTE_DATA, &dummy);
2477  	else
2478  #endif
2479  	if (!((addr & ~0x07) == 0x30 || (addr & ~0x0f) == 0x50)
2480  	 && i2c_check_functionality(adap, I2C_FUNC_SMBUS_QUICK))
2481  		err = i2c_smbus_xfer(adap, addr, 0, I2C_SMBUS_WRITE, 0,
2482  				     I2C_SMBUS_QUICK, NULL);
2483  	else if (i2c_check_functionality(adap, I2C_FUNC_SMBUS_READ_BYTE))
2484  		err = i2c_smbus_xfer(adap, addr, 0, I2C_SMBUS_READ, 0,
2485  				     I2C_SMBUS_BYTE, &dummy);
2486  	else {
2487  		dev_warn(&adap->dev, "No suitable probing method supported for address 0x%02X\n",
2488  			 addr);
2489  		err = -EOPNOTSUPP;
2490  	}
2491  
2492  	return err >= 0;
2493  }
2494  
i2c_detect_address(struct i2c_client * temp_client,struct i2c_driver * driver)2495  static int i2c_detect_address(struct i2c_client *temp_client,
2496  			      struct i2c_driver *driver)
2497  {
2498  	struct i2c_board_info info;
2499  	struct i2c_adapter *adapter = temp_client->adapter;
2500  	int addr = temp_client->addr;
2501  	int err;
2502  
2503  	/* Make sure the address is valid */
2504  	err = i2c_check_7bit_addr_validity_strict(addr);
2505  	if (err) {
2506  		dev_warn(&adapter->dev, "Invalid probe address 0x%02x\n",
2507  			 addr);
2508  		return err;
2509  	}
2510  
2511  	/* Skip if already in use (7 bit, no need to encode flags) */
2512  	if (i2c_check_addr_busy(adapter, addr))
2513  		return 0;
2514  
2515  	/* Make sure there is something at this address */
2516  	if (!i2c_default_probe(adapter, addr))
2517  		return 0;
2518  
2519  	/* Finally call the custom detection function */
2520  	memset(&info, 0, sizeof(struct i2c_board_info));
2521  	info.addr = addr;
2522  	err = driver->detect(temp_client, &info);
2523  	if (err) {
2524  		/* -ENODEV is returned if the detection fails. We catch it
2525  		   here as this isn't an error. */
2526  		return err == -ENODEV ? 0 : err;
2527  	}
2528  
2529  	/* Consistency check */
2530  	if (info.type[0] == '\0') {
2531  		dev_err(&adapter->dev,
2532  			"%s detection function provided no name for 0x%x\n",
2533  			driver->driver.name, addr);
2534  	} else {
2535  		struct i2c_client *client;
2536  
2537  		/* Detection succeeded, instantiate the device */
2538  		if (adapter->class & I2C_CLASS_DEPRECATED)
2539  			dev_warn(&adapter->dev,
2540  				"This adapter will soon drop class based instantiation of devices. "
2541  				"Please make sure client 0x%02x gets instantiated by other means. "
2542  				"Check 'Documentation/i2c/instantiating-devices.rst' for details.\n",
2543  				info.addr);
2544  
2545  		dev_dbg(&adapter->dev, "Creating %s at 0x%02x\n",
2546  			info.type, info.addr);
2547  		client = i2c_new_client_device(adapter, &info);
2548  		if (!IS_ERR(client))
2549  			list_add_tail(&client->detected, &driver->clients);
2550  		else
2551  			dev_err(&adapter->dev, "Failed creating %s at 0x%02x\n",
2552  				info.type, info.addr);
2553  	}
2554  	return 0;
2555  }
2556  
i2c_detect(struct i2c_adapter * adapter,struct i2c_driver * driver)2557  static int i2c_detect(struct i2c_adapter *adapter, struct i2c_driver *driver)
2558  {
2559  	const unsigned short *address_list;
2560  	struct i2c_client *temp_client;
2561  	int i, err = 0;
2562  
2563  	address_list = driver->address_list;
2564  	if (!driver->detect || !address_list)
2565  		return 0;
2566  
2567  	/* Warn that the adapter lost class based instantiation */
2568  	if (adapter->class == I2C_CLASS_DEPRECATED) {
2569  		dev_dbg(&adapter->dev,
2570  			"This adapter dropped support for I2C classes and won't auto-detect %s devices anymore. "
2571  			"If you need it, check 'Documentation/i2c/instantiating-devices.rst' for alternatives.\n",
2572  			driver->driver.name);
2573  		return 0;
2574  	}
2575  
2576  	/* Stop here if the classes do not match */
2577  	if (!(adapter->class & driver->class))
2578  		return 0;
2579  
2580  	/* Set up a temporary client to help detect callback */
2581  	temp_client = kzalloc(sizeof(struct i2c_client), GFP_KERNEL);
2582  	if (!temp_client)
2583  		return -ENOMEM;
2584  	temp_client->adapter = adapter;
2585  
2586  	for (i = 0; address_list[i] != I2C_CLIENT_END; i += 1) {
2587  		dev_dbg(&adapter->dev,
2588  			"found normal entry for adapter %d, addr 0x%02x\n",
2589  			i2c_adapter_id(adapter), address_list[i]);
2590  		temp_client->addr = address_list[i];
2591  		err = i2c_detect_address(temp_client, driver);
2592  		if (unlikely(err))
2593  			break;
2594  	}
2595  
2596  	kfree(temp_client);
2597  	return err;
2598  }
2599  
i2c_probe_func_quick_read(struct i2c_adapter * adap,unsigned short addr)2600  int i2c_probe_func_quick_read(struct i2c_adapter *adap, unsigned short addr)
2601  {
2602  	return i2c_smbus_xfer(adap, addr, 0, I2C_SMBUS_READ, 0,
2603  			      I2C_SMBUS_QUICK, NULL) >= 0;
2604  }
2605  EXPORT_SYMBOL_GPL(i2c_probe_func_quick_read);
2606  
2607  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))2608  i2c_new_scanned_device(struct i2c_adapter *adap,
2609  		       struct i2c_board_info *info,
2610  		       unsigned short const *addr_list,
2611  		       int (*probe)(struct i2c_adapter *adap, unsigned short addr))
2612  {
2613  	int i;
2614  
2615  	if (!probe)
2616  		probe = i2c_default_probe;
2617  
2618  	for (i = 0; addr_list[i] != I2C_CLIENT_END; i++) {
2619  		/* Check address validity */
2620  		if (i2c_check_7bit_addr_validity_strict(addr_list[i]) < 0) {
2621  			dev_warn(&adap->dev, "Invalid 7-bit address 0x%02x\n",
2622  				 addr_list[i]);
2623  			continue;
2624  		}
2625  
2626  		/* Check address availability (7 bit, no need to encode flags) */
2627  		if (i2c_check_addr_busy(adap, addr_list[i])) {
2628  			dev_dbg(&adap->dev,
2629  				"Address 0x%02x already in use, not probing\n",
2630  				addr_list[i]);
2631  			continue;
2632  		}
2633  
2634  		/* Test address responsiveness */
2635  		if (probe(adap, addr_list[i]))
2636  			break;
2637  	}
2638  
2639  	if (addr_list[i] == I2C_CLIENT_END) {
2640  		dev_dbg(&adap->dev, "Probing failed, no device found\n");
2641  		return ERR_PTR(-ENODEV);
2642  	}
2643  
2644  	info->addr = addr_list[i];
2645  	return i2c_new_client_device(adap, info);
2646  }
2647  EXPORT_SYMBOL_GPL(i2c_new_scanned_device);
2648  
i2c_get_adapter(int nr)2649  struct i2c_adapter *i2c_get_adapter(int nr)
2650  {
2651  	struct i2c_adapter *adapter;
2652  
2653  	mutex_lock(&core_lock);
2654  	adapter = idr_find(&i2c_adapter_idr, nr);
2655  	if (!adapter)
2656  		goto exit;
2657  
2658  	if (try_module_get(adapter->owner))
2659  		get_device(&adapter->dev);
2660  	else
2661  		adapter = NULL;
2662  
2663   exit:
2664  	mutex_unlock(&core_lock);
2665  	return adapter;
2666  }
2667  EXPORT_SYMBOL(i2c_get_adapter);
2668  
i2c_put_adapter(struct i2c_adapter * adap)2669  void i2c_put_adapter(struct i2c_adapter *adap)
2670  {
2671  	if (!adap)
2672  		return;
2673  
2674  	module_put(adap->owner);
2675  	/* Should be last, otherwise we risk use-after-free with 'adap' */
2676  	put_device(&adap->dev);
2677  }
2678  EXPORT_SYMBOL(i2c_put_adapter);
2679  
2680  /**
2681   * i2c_get_dma_safe_msg_buf() - get a DMA safe buffer for the given i2c_msg
2682   * @msg: the message to be checked
2683   * @threshold: the minimum number of bytes for which using DMA makes sense.
2684   *	       Should at least be 1.
2685   *
2686   * Return: NULL if a DMA safe buffer was not obtained. Use msg->buf with PIO.
2687   *	   Or a valid pointer to be used with DMA. After use, release it by
2688   *	   calling i2c_put_dma_safe_msg_buf().
2689   *
2690   * This function must only be called from process context!
2691   */
i2c_get_dma_safe_msg_buf(struct i2c_msg * msg,unsigned int threshold)2692  u8 *i2c_get_dma_safe_msg_buf(struct i2c_msg *msg, unsigned int threshold)
2693  {
2694  	/* also skip 0-length msgs for bogus thresholds of 0 */
2695  	if (!threshold)
2696  		pr_debug("DMA buffer for addr=0x%02x with length 0 is bogus\n",
2697  			 msg->addr);
2698  	if (msg->len < threshold || msg->len == 0)
2699  		return NULL;
2700  
2701  	if (msg->flags & I2C_M_DMA_SAFE)
2702  		return msg->buf;
2703  
2704  	pr_debug("using bounce buffer for addr=0x%02x, len=%d\n",
2705  		 msg->addr, msg->len);
2706  
2707  	if (msg->flags & I2C_M_RD)
2708  		return kzalloc(msg->len, GFP_KERNEL);
2709  	else
2710  		return kmemdup(msg->buf, msg->len, GFP_KERNEL);
2711  }
2712  EXPORT_SYMBOL_GPL(i2c_get_dma_safe_msg_buf);
2713  
2714  /**
2715   * i2c_put_dma_safe_msg_buf - release DMA safe buffer and sync with i2c_msg
2716   * @buf: the buffer obtained from i2c_get_dma_safe_msg_buf(). May be NULL.
2717   * @msg: the message which the buffer corresponds to
2718   * @xferred: bool saying if the message was transferred
2719   */
i2c_put_dma_safe_msg_buf(u8 * buf,struct i2c_msg * msg,bool xferred)2720  void i2c_put_dma_safe_msg_buf(u8 *buf, struct i2c_msg *msg, bool xferred)
2721  {
2722  	if (!buf || buf == msg->buf)
2723  		return;
2724  
2725  	if (xferred && msg->flags & I2C_M_RD)
2726  		memcpy(msg->buf, buf, msg->len);
2727  
2728  	kfree(buf);
2729  }
2730  EXPORT_SYMBOL_GPL(i2c_put_dma_safe_msg_buf);
2731  
2732  MODULE_AUTHOR("Simon G. Vogl <simon@tk.uni-linz.ac.at>");
2733  MODULE_DESCRIPTION("I2C-Bus main module");
2734  MODULE_LICENSE("GPL");
2735