1 // SPDX-License-Identifier: GPL-2.0-or-later
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>
10 * Copyright (C) 2013-2017 Wolfram Sang <wsa@kernel.org>
13 #define pr_fmt(fmt) "i2c-core: " fmt
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>
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>
48 #define CREATE_TRACE_POINTS
49 #include <trace/events/i2c.h>
51 #define I2C_ADDR_OFFSET_TEN_BIT 0xa000
52 #define I2C_ADDR_OFFSET_SLAVE 0x1000
54 #define I2C_ADDR_7BITS_MAX 0x77
55 #define I2C_ADDR_7BITS_COUNT (I2C_ADDR_7BITS_MAX + 1)
57 #define I2C_ADDR_DEVICE_ID 0x7c
60 * core_lock protects i2c_adapter_idr, and guarantees that device detection,
61 * deletion of detected devices are serialized
63 static DEFINE_MUTEX(core_lock
);
64 static DEFINE_IDR(i2c_adapter_idr
);
66 static int i2c_detect(struct i2c_adapter
*adapter
, struct i2c_driver
*driver
);
68 static DEFINE_STATIC_KEY_FALSE(i2c_trace_msg_key
);
69 static bool is_registered
;
71 static struct dentry
*i2c_debugfs_root
;
73 int i2c_transfer_trace_reg(void)
75 static_branch_inc(&i2c_trace_msg_key
);
79 void i2c_transfer_trace_unreg(void)
81 static_branch_dec(&i2c_trace_msg_key
);
84 const char *i2c_freq_mode_string(u32 bus_freq_hz
)
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)";
100 return "Unknown Mode";
103 EXPORT_SYMBOL_GPL(i2c_freq_mode_string
);
105 const struct i2c_device_id
*i2c_match_id(const struct i2c_device_id
*id
,
106 const struct i2c_client
*client
)
111 while (id
->name
[0]) {
112 if (strcmp(client
->name
, id
->name
) == 0)
118 EXPORT_SYMBOL_GPL(i2c_match_id
);
120 const void *i2c_get_match_data(const struct i2c_client
*client
)
122 struct i2c_driver
*driver
= to_i2c_driver(client
->dev
.driver
);
123 const struct i2c_device_id
*match
;
126 data
= device_get_match_data(&client
->dev
);
128 match
= i2c_match_id(driver
->id_table
, client
);
132 data
= (const void *)match
->driver_data
;
137 EXPORT_SYMBOL(i2c_get_match_data
);
139 static int i2c_device_match(struct device
*dev
, const struct device_driver
*drv
)
141 struct i2c_client
*client
= i2c_verify_client(dev
);
142 const struct i2c_driver
*driver
;
145 /* Attempt an OF style match */
146 if (i2c_of_match_device(drv
->of_match_table
, client
))
149 /* Then ACPI style match */
150 if (acpi_driver_match_device(dev
, drv
))
153 driver
= to_i2c_driver(drv
);
155 /* Finally an I2C match */
156 if (i2c_match_id(driver
->id_table
, client
))
162 static int i2c_device_uevent(const struct device
*dev
, struct kobj_uevent_env
*env
)
164 const struct i2c_client
*client
= to_i2c_client(dev
);
167 rc
= of_device_uevent_modalias(dev
, env
);
171 rc
= acpi_device_uevent_modalias(dev
, env
);
175 return add_uevent_var(env
, "MODALIAS=%s%s", I2C_MODULE_PREFIX
, client
->name
);
178 /* i2c bus recovery routines */
179 static int get_scl_gpio_value(struct i2c_adapter
*adap
)
181 return gpiod_get_value_cansleep(adap
->bus_recovery_info
->scl_gpiod
);
184 static void set_scl_gpio_value(struct i2c_adapter
*adap
, int val
)
186 gpiod_set_value_cansleep(adap
->bus_recovery_info
->scl_gpiod
, val
);
189 static int get_sda_gpio_value(struct i2c_adapter
*adap
)
191 return gpiod_get_value_cansleep(adap
->bus_recovery_info
->sda_gpiod
);
194 static void set_sda_gpio_value(struct i2c_adapter
*adap
, int val
)
196 gpiod_set_value_cansleep(adap
->bus_recovery_info
->sda_gpiod
, val
);
199 static int i2c_generic_bus_free(struct i2c_adapter
*adap
)
201 struct i2c_bus_recovery_info
*bri
= adap
->bus_recovery_info
;
202 int ret
= -EOPNOTSUPP
;
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
);
212 return ret
? 0 : -EBUSY
;
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
220 #define RECOVERY_NDELAY 5000
221 #define RECOVERY_CLK_CNT 9
223 int i2c_generic_scl_recovery(struct i2c_adapter
*adap
)
225 struct i2c_bus_recovery_info
*bri
= adap
->bus_recovery_info
;
226 int i
= 0, scl
= 1, ret
= 0;
228 if (bri
->prepare_recovery
)
229 bri
->prepare_recovery(adap
);
231 pinctrl_select_state(bri
->pinctrl
, bri
->pins_gpio
);
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.
240 bri
->set_scl(adap
, scl
);
241 ndelay(RECOVERY_NDELAY
);
243 bri
->set_sda(adap
, scl
);
244 ndelay(RECOVERY_NDELAY
/ 2);
247 * By this time SCL is high, as we need to give 9 falling-rising edges
249 while (i
++ < RECOVERY_CLK_CNT
* 2) {
251 /* SCL shouldn't be low here */
252 if (!bri
->get_scl(adap
)) {
254 "SCL is stuck low, exit recovery\n");
261 bri
->set_scl(adap
, scl
);
262 /* Creating STOP again, see above */
264 /* Honour minimum tsu:sto */
265 ndelay(RECOVERY_NDELAY
);
267 /* Honour minimum tf and thd:dat */
268 ndelay(RECOVERY_NDELAY
/ 2);
271 bri
->set_sda(adap
, scl
);
272 ndelay(RECOVERY_NDELAY
/ 2);
275 ret
= i2c_generic_bus_free(adap
);
281 /* If we can't check bus status, assume recovery worked */
282 if (ret
== -EOPNOTSUPP
)
285 if (bri
->unprepare_recovery
)
286 bri
->unprepare_recovery(adap
);
288 pinctrl_select_state(bri
->pinctrl
, bri
->pins_default
);
292 EXPORT_SYMBOL_GPL(i2c_generic_scl_recovery
);
294 int i2c_recover_bus(struct i2c_adapter
*adap
)
296 if (!adap
->bus_recovery_info
)
299 dev_dbg(&adap
->dev
, "Trying i2c bus recovery\n");
300 return adap
->bus_recovery_info
->recover_bus(adap
);
302 EXPORT_SYMBOL_GPL(i2c_recover_bus
);
304 static void i2c_gpio_init_pinctrl_recovery(struct i2c_adapter
*adap
)
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
);
313 * we can't change states without pinctrl, so remove the states if
317 bri
->pins_default
= NULL
;
318 bri
->pins_gpio
= NULL
;
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
;
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");
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
;
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");
346 bri
->pins_default
= NULL
;
347 bri
->pins_gpio
= NULL
;
351 static int i2c_gpio_init_generic_recovery(struct i2c_adapter
*adap
)
353 struct i2c_bus_recovery_info
*bri
= adap
->bus_recovery_info
;
354 struct device
*dev
= &adap
->dev
;
355 struct gpio_desc
*gpiod
;
359 * don't touch the recovery information if the driver is not using
360 * generic SCL recovery
362 if (bri
->recover_bus
&& bri
->recover_bus
!= i2c_generic_scl_recovery
)
366 * pins might be taken as GPIO, so we should inform pinctrl about
367 * this and move the state to GPIO
370 pinctrl_select_state(bri
->pinctrl
, bri
->pins_gpio
);
373 * if there is incomplete or no recovery information, see if generic
374 * GPIO recovery is available
376 if (!bri
->scl_gpiod
) {
377 gpiod
= devm_gpiod_get(dev
, "scl", GPIOD_OUT_HIGH_OPEN_DRAIN
);
378 if (PTR_ERR(gpiod
) == -EPROBE_DEFER
) {
380 goto cleanup_pinctrl_state
;
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");
389 /* SDA GPIOD line is optional, so we care about DEFER only */
390 if (!bri
->sda_gpiod
) {
392 * We have SCL. Pull SCL low and wait a bit so that SDA glitches
395 gpiod_direction_output(bri
->scl_gpiod
, 0);
397 gpiod
= devm_gpiod_get(dev
, "sda", GPIOD_IN
);
399 /* Wait a bit in case of a SDA glitch, and then release SCL. */
401 gpiod_direction_output(bri
->scl_gpiod
, 1);
403 if (PTR_ERR(gpiod
) == -EPROBE_DEFER
) {
405 goto cleanup_pinctrl_state
;
408 bri
->sda_gpiod
= gpiod
;
411 cleanup_pinctrl_state
:
412 /* change the state of the pins back to their default state */
414 pinctrl_select_state(bri
->pinctrl
, bri
->pins_default
);
419 static int i2c_gpio_init_recovery(struct i2c_adapter
*adap
)
421 i2c_gpio_init_pinctrl_recovery(adap
);
422 return i2c_gpio_init_generic_recovery(adap
);
425 static int i2c_init_recovery(struct i2c_adapter
*adap
)
427 struct i2c_bus_recovery_info
*bri
= adap
->bus_recovery_info
;
428 bool is_error_level
= true;
434 if (i2c_gpio_init_recovery(adap
) == -EPROBE_DEFER
)
435 return -EPROBE_DEFER
;
437 if (!bri
->recover_bus
) {
438 err_str
= "no suitable method provided";
439 is_error_level
= false;
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
;
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";
458 if (!bri
->set_sda
&& !bri
->get_sda
) {
459 err_str
= "either get_sda() or set_sda() needed";
467 dev_err(&adap
->dev
, "Not using recovery: %s\n", err_str
);
469 dev_dbg(&adap
->dev
, "Not using recovery: %s\n", err_str
);
470 adap
->bus_recovery_info
= NULL
;
475 static int i2c_smbus_host_notify_to_irq(const struct i2c_client
*client
)
477 struct i2c_adapter
*adap
= client
->adapter
;
480 if (!adap
->host_notify_domain
)
483 if (client
->flags
& I2C_CLIENT_TEN
)
486 irq
= irq_create_mapping(adap
->host_notify_domain
, client
->addr
);
488 return irq
> 0 ? irq
: -ENXIO
;
491 static int i2c_device_probe(struct device
*dev
)
493 struct i2c_client
*client
= i2c_verify_client(dev
);
494 struct i2c_driver
*driver
;
501 client
->irq
= client
->init_irq
;
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
)) {
518 irq
= i2c_acpi_get_irq(client
, &wake_capable
);
519 if (irq
> 0 && wake_capable
)
520 client
->flags
|= I2C_CLIENT_WAKE
;
522 if (irq
== -EPROBE_DEFER
) {
524 goto put_sync_adapter
;
533 driver
= to_i2c_driver(dev
->driver
);
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.
539 if (!driver
->id_table
&&
540 !acpi_driver_match_device(dev
, dev
->driver
) &&
541 !i2c_of_match_device(dev
->driver
->of_match_table
, client
)) {
543 goto put_sync_adapter
;
546 if (client
->flags
& I2C_CLIENT_WAKE
) {
549 wakeirq
= of_irq_get_byname(dev
->of_node
, "wakeup");
550 if (wakeirq
== -EPROBE_DEFER
) {
552 goto put_sync_adapter
;
555 device_init_wakeup(&client
->dev
, true);
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
);
565 dev_warn(&client
->dev
, "failed to set up wakeup irq\n");
568 dev_dbg(dev
, "probe\n");
570 status
= of_clk_set_defaults(dev
->of_node
, false);
572 goto err_clear_wakeup_irq
;
574 do_power_on
= !i2c_acpi_waive_d0_probe(dev
);
575 status
= dev_pm_domain_attach(&client
->dev
, do_power_on
);
577 goto err_clear_wakeup_irq
;
579 client
->devres_group_id
= devres_open_group(&client
->dev
, NULL
,
581 if (!client
->devres_group_id
) {
583 goto err_detach_pm_domain
;
587 status
= driver
->probe(client
);
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.
600 goto err_release_driver_resources
;
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);
612 if (client
->flags
& I2C_CLIENT_HOST_NOTIFY
)
613 pm_runtime_put_sync(&client
->adapter
->dev
);
618 static void i2c_device_remove(struct device
*dev
)
620 struct i2c_client
*client
= to_i2c_client(dev
);
621 struct i2c_driver
*driver
;
623 driver
= to_i2c_driver(dev
->driver
);
624 if (driver
->remove
) {
625 dev_dbg(dev
, "remove\n");
627 driver
->remove(client
);
630 devres_release_group(&client
->dev
, client
->devres_group_id
);
632 dev_pm_domain_detach(&client
->dev
, true);
634 dev_pm_clear_wake_irq(&client
->dev
);
635 device_init_wakeup(&client
->dev
, false);
638 if (client
->flags
& I2C_CLIENT_HOST_NOTIFY
)
639 pm_runtime_put(&client
->adapter
->dev
);
642 static void i2c_device_shutdown(struct device
*dev
)
644 struct i2c_client
*client
= i2c_verify_client(dev
);
645 struct i2c_driver
*driver
;
647 if (!client
|| !dev
->driver
)
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
);
656 static void i2c_client_dev_release(struct device
*dev
)
658 kfree(to_i2c_client(dev
));
662 name_show(struct device
*dev
, struct device_attribute
*attr
, char *buf
)
664 return sprintf(buf
, "%s\n", dev
->type
== &i2c_client_type
?
665 to_i2c_client(dev
)->name
: to_i2c_adapter(dev
)->name
);
667 static DEVICE_ATTR_RO(name
);
670 modalias_show(struct device
*dev
, struct device_attribute
*attr
, char *buf
)
672 struct i2c_client
*client
= to_i2c_client(dev
);
675 len
= of_device_modalias(dev
, buf
, PAGE_SIZE
);
679 len
= acpi_device_modalias(dev
, buf
, PAGE_SIZE
- 1);
683 return sprintf(buf
, "%s%s\n", I2C_MODULE_PREFIX
, client
->name
);
685 static DEVICE_ATTR_RO(modalias
);
687 static struct attribute
*i2c_dev_attrs
[] = {
689 /* modalias helps coldplug: modprobe $(cat .../modalias) */
690 &dev_attr_modalias
.attr
,
693 ATTRIBUTE_GROUPS(i2c_dev
);
695 const struct bus_type i2c_bus_type
= {
697 .match
= i2c_device_match
,
698 .probe
= i2c_device_probe
,
699 .remove
= i2c_device_remove
,
700 .shutdown
= i2c_device_shutdown
,
702 EXPORT_SYMBOL_GPL(i2c_bus_type
);
704 const struct device_type i2c_client_type
= {
705 .groups
= i2c_dev_groups
,
706 .uevent
= i2c_device_uevent
,
707 .release
= i2c_client_dev_release
,
709 EXPORT_SYMBOL_GPL(i2c_client_type
);
713 * i2c_verify_client - return parameter as i2c_client, or NULL
714 * @dev: device, probably from some driver model iterator
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.
721 struct i2c_client
*i2c_verify_client(struct device
*dev
)
723 return (dev
->type
== &i2c_client_type
)
727 EXPORT_SYMBOL(i2c_verify_client
);
730 /* Return a unique address which takes the flags of the client into account */
731 static unsigned short i2c_encode_flags_to_addr(struct i2c_client
*client
)
733 unsigned short addr
= client
->addr
;
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
;
739 if (client
->flags
& I2C_CLIENT_SLAVE
)
740 addr
|= I2C_ADDR_OFFSET_SLAVE
;
745 /* This is a permissive address validity check, I2C address map constraints
746 * are purposely not enforced, except for the general call address. */
747 static int i2c_check_addr_validity(unsigned int addr
, unsigned short flags
)
749 if (flags
& I2C_CLIENT_TEN
) {
750 /* 10-bit address, all values are valid */
754 /* 7-bit address, reject the general call address */
755 if (addr
== 0x00 || addr
> 0x7f)
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. */
765 int i2c_check_7bit_addr_validity_strict(unsigned short addr
)
768 * Reserved addresses per I2C specification:
769 * 0x00 General call address / START byte
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
777 if (addr
< 0x08 || addr
> 0x77)
782 static int __i2c_check_addr_busy(struct device
*dev
, void *addrp
)
784 struct i2c_client
*client
= i2c_verify_client(dev
);
785 int addr
= *(int *)addrp
;
787 if (client
&& i2c_encode_flags_to_addr(client
) == addr
)
792 /* walk up mux tree */
793 static int i2c_check_mux_parents(struct i2c_adapter
*adapter
, int addr
)
795 struct i2c_adapter
*parent
= i2c_parent_is_i2c_adapter(adapter
);
798 result
= device_for_each_child(&adapter
->dev
, &addr
,
799 __i2c_check_addr_busy
);
801 if (!result
&& parent
)
802 result
= i2c_check_mux_parents(parent
, addr
);
807 /* recurse down mux tree */
808 static int i2c_check_mux_children(struct device
*dev
, void *addrp
)
812 if (dev
->type
== &i2c_adapter_type
)
813 result
= device_for_each_child(dev
, addrp
,
814 i2c_check_mux_children
);
816 result
= __i2c_check_addr_busy(dev
, addrp
);
821 static int i2c_check_addr_busy(struct i2c_adapter
*adapter
, int addr
)
823 struct i2c_adapter
*parent
= i2c_parent_is_i2c_adapter(adapter
);
827 result
= i2c_check_mux_parents(parent
, addr
);
830 result
= device_for_each_child(&adapter
->dev
, &addr
,
831 i2c_check_mux_children
);
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
842 static void i2c_adapter_lock_bus(struct i2c_adapter
*adapter
,
845 rt_mutex_lock_nested(&adapter
->bus_lock
, i2c_adapter_depth(adapter
));
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
854 static int i2c_adapter_trylock_bus(struct i2c_adapter
*adapter
,
857 return rt_mutex_trylock(&adapter
->bus_lock
);
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
866 static void i2c_adapter_unlock_bus(struct i2c_adapter
*adapter
,
869 rt_mutex_unlock(&adapter
->bus_lock
);
872 static void i2c_dev_set_name(struct i2c_adapter
*adap
,
873 struct i2c_client
*client
,
874 struct i2c_board_info
const *info
)
876 struct acpi_device
*adev
= ACPI_COMPANION(&client
->dev
);
878 if (info
&& info
->dev_name
) {
879 dev_set_name(&client
->dev
, "i2c-%s", info
->dev_name
);
884 dev_set_name(&client
->dev
, "i2c-%s", acpi_dev_name(adev
));
888 dev_set_name(&client
->dev
, "%d-%04x", i2c_adapter_id(adap
),
889 i2c_encode_flags_to_addr(client
));
892 int i2c_dev_irq_from_resources(const struct resource
*resources
,
893 unsigned int num_resources
)
895 struct irq_data
*irqd
;
898 for (i
= 0; i
< num_resources
; i
++) {
899 const struct resource
*r
= &resources
[i
];
901 if (resource_type(r
) != IORESOURCE_IRQ
)
904 if (r
->flags
& IORESOURCE_BITS
) {
905 irqd
= irq_get_irq_data(r
->start
);
909 irqd_set_trigger_type(irqd
, r
->flags
& IORESOURCE_BITS
);
919 * Serialize device instantiation in case it can be instantiated explicitly
920 * and by auto-detection
922 static int i2c_lock_addr(struct i2c_adapter
*adap
, unsigned short addr
,
923 unsigned short flags
)
925 if (!(flags
& I2C_CLIENT_TEN
) &&
926 test_and_set_bit(addr
, adap
->addrs_in_instantiation
))
932 static void i2c_unlock_addr(struct i2c_adapter
*adap
, unsigned short addr
,
933 unsigned short flags
)
935 if (!(flags
& I2C_CLIENT_TEN
))
936 clear_bit(addr
, adap
->addrs_in_instantiation
);
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
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.
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.
956 i2c_new_client_device(struct i2c_adapter
*adap
, struct i2c_board_info
const *info
)
958 struct i2c_client
*client
;
959 bool need_put
= false;
962 client
= kzalloc(sizeof *client
, GFP_KERNEL
);
964 return ERR_PTR(-ENOMEM
);
966 client
->adapter
= adap
;
968 client
->dev
.platform_data
= info
->platform_data
;
969 client
->flags
= info
->flags
;
970 client
->addr
= info
->addr
;
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
);
977 strscpy(client
->name
, info
->type
, sizeof(client
->name
));
979 status
= i2c_check_addr_validity(client
->addr
, client
->flags
);
981 dev_err(&adap
->dev
, "Invalid %d-bit I2C address 0x%02hx\n",
982 client
->flags
& I2C_CLIENT_TEN
? 10 : 7, client
->addr
);
986 status
= i2c_lock_addr(adap
, client
->addr
, client
->flags
);
990 /* Check for address business */
991 status
= i2c_check_addr_busy(adap
, i2c_encode_flags_to_addr(client
));
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
;
1001 device_enable_async_suspend(&client
->dev
);
1004 status
= device_add_software_node(&client
->dev
, info
->swnode
);
1007 "Failed to add software node to client %s: %d\n",
1008 client
->name
, status
);
1009 goto out_err_put_of_node
;
1013 i2c_dev_set_name(adap
, client
, info
);
1014 status
= device_register(&client
->dev
);
1016 goto out_remove_swnode
;
1018 dev_dbg(&adap
->dev
, "client [%s] registered with bus id %s\n",
1019 client
->name
, dev_name(&client
->dev
));
1021 i2c_unlock_addr(adap
, client
->addr
, client
->flags
);
1026 device_remove_software_node(&client
->dev
);
1028 out_err_put_of_node
:
1029 of_node_put(info
->of_node
);
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
);
1037 put_device(&client
->dev
);
1040 return ERR_PTR(status
);
1042 EXPORT_SYMBOL_GPL(i2c_new_client_device
);
1045 * i2c_unregister_device - reverse effect of i2c_new_*_device()
1046 * @client: value returned from i2c_new_*_device()
1047 * Context: can sleep
1049 void i2c_unregister_device(struct i2c_client
*client
)
1051 if (IS_ERR_OR_NULL(client
))
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
);
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
);
1064 EXPORT_SYMBOL_GPL(i2c_unregister_device
);
1067 * i2c_find_device_by_fwnode() - find an i2c_client for the fwnode
1068 * @fwnode: &struct fwnode_handle corresponding to the &struct i2c_client
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.
1073 * The user must call put_device(&client->dev) once done with the i2c client.
1075 struct i2c_client
*i2c_find_device_by_fwnode(struct fwnode_handle
*fwnode
)
1077 struct i2c_client
*client
;
1083 dev
= bus_find_device_by_fwnode(&i2c_bus_type
, fwnode
);
1087 client
= i2c_verify_client(dev
);
1093 EXPORT_SYMBOL(i2c_find_device_by_fwnode
);
1096 static const struct i2c_device_id dummy_id
[] = {
1098 { "smbus_host_notify", },
1102 static int dummy_probe(struct i2c_client
*client
)
1107 static struct i2c_driver dummy_driver
= {
1108 .driver
.name
= "dummy",
1109 .probe
= dummy_probe
,
1110 .id_table
= dummy_id
,
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
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).
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
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.
1131 struct i2c_client
*i2c_new_dummy_device(struct i2c_adapter
*adapter
, u16 address
)
1133 struct i2c_board_info info
= {
1134 I2C_BOARD_INFO("dummy", address
),
1137 return i2c_new_client_device(adapter
, &info
);
1139 EXPORT_SYMBOL_GPL(i2c_new_dummy_device
);
1141 static void devm_i2c_release_dummy(void *client
)
1143 i2c_unregister_device(client
);
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
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.
1156 struct i2c_client
*devm_i2c_new_dummy_device(struct device
*dev
,
1157 struct i2c_adapter
*adapter
,
1160 struct i2c_client
*client
;
1163 client
= i2c_new_dummy_device(adapter
, address
);
1167 ret
= devm_add_action_or_reset(dev
, devm_i2c_release_dummy
, client
);
1169 return ERR_PTR(ret
);
1173 EXPORT_SYMBOL_GPL(devm_i2c_new_dummy_device
);
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
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.
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.
1191 * On DT-based platforms the address is retrieved from the "reg" property entry
1192 * cell whose "reg-names" value matches the slave name.
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.
1197 struct i2c_client
*i2c_new_ancillary_device(struct i2c_client
*client
,
1201 struct device_node
*np
= client
->dev
.of_node
;
1202 u32 addr
= default_addr
;
1206 i
= of_property_match_string(np
, "reg-names", name
);
1208 of_property_read_u32_index(np
, "reg", i
, &addr
);
1211 dev_dbg(&client
->adapter
->dev
, "Address for %s : 0x%x\n", name
, addr
);
1212 return i2c_new_dummy_device(client
->adapter
, addr
);
1214 EXPORT_SYMBOL_GPL(i2c_new_ancillary_device
);
1216 /* ------------------------------------------------------------------------- */
1218 /* I2C bus adapters -- one roots each I2C or SMBUS segment */
1220 static void i2c_adapter_dev_release(struct device
*dev
)
1222 struct i2c_adapter
*adap
= to_i2c_adapter(dev
);
1223 complete(&adap
->dev_released
);
1226 unsigned int i2c_adapter_depth(struct i2c_adapter
*adapter
)
1228 unsigned int depth
= 0;
1229 struct device
*parent
;
1231 for (parent
= adapter
->dev
.parent
; parent
; parent
= parent
->parent
)
1232 if (parent
->type
== &i2c_adapter_type
)
1235 WARN_ONCE(depth
>= MAX_LOCKDEP_SUBCLASSES
,
1236 "adapter depth exceeds lockdep subclass limit\n");
1240 EXPORT_SYMBOL_GPL(i2c_adapter_depth
);
1243 * Let users instantiate I2C devices through sysfs. This can be used when
1244 * platform initialization code doesn't contain the proper data for
1245 * whatever reason. Also useful for drivers that do device detection and
1246 * detection fails, either because the device uses an unexpected address,
1247 * or this is a compatible device with different ID register values.
1249 * Parameter checking may look overzealous, but we really don't want
1250 * the user to provide incorrect parameters.
1253 new_device_store(struct device
*dev
, struct device_attribute
*attr
,
1254 const char *buf
, size_t count
)
1256 struct i2c_adapter
*adap
= to_i2c_adapter(dev
);
1257 struct i2c_board_info info
;
1258 struct i2c_client
*client
;
1262 memset(&info
, 0, sizeof(struct i2c_board_info
));
1264 blank
= strchr(buf
, ' ');
1266 dev_err(dev
, "%s: Missing parameters\n", "new_device");
1269 if (blank
- buf
> I2C_NAME_SIZE
- 1) {
1270 dev_err(dev
, "%s: Invalid device name\n", "new_device");
1273 memcpy(info
.type
, buf
, blank
- buf
);
1275 /* Parse remaining parameters, reject extra parameters */
1276 res
= sscanf(++blank
, "%hi%c", &info
.addr
, &end
);
1278 dev_err(dev
, "%s: Can't parse I2C address\n", "new_device");
1281 if (res
> 1 && end
!= '\n') {
1282 dev_err(dev
, "%s: Extra parameters\n", "new_device");
1286 if ((info
.addr
& I2C_ADDR_OFFSET_TEN_BIT
) == I2C_ADDR_OFFSET_TEN_BIT
) {
1287 info
.addr
&= ~I2C_ADDR_OFFSET_TEN_BIT
;
1288 info
.flags
|= I2C_CLIENT_TEN
;
1291 if (info
.addr
& I2C_ADDR_OFFSET_SLAVE
) {
1292 info
.addr
&= ~I2C_ADDR_OFFSET_SLAVE
;
1293 info
.flags
|= I2C_CLIENT_SLAVE
;
1296 client
= i2c_new_client_device(adap
, &info
);
1298 return PTR_ERR(client
);
1300 /* Keep track of the added device */
1301 mutex_lock(&adap
->userspace_clients_lock
);
1302 list_add_tail(&client
->detected
, &adap
->userspace_clients
);
1303 mutex_unlock(&adap
->userspace_clients_lock
);
1304 dev_info(dev
, "%s: Instantiated device %s at 0x%02hx\n", "new_device",
1305 info
.type
, info
.addr
);
1309 static DEVICE_ATTR_WO(new_device
);
1312 * And of course let the users delete the devices they instantiated, if
1313 * they got it wrong. This interface can only be used to delete devices
1314 * instantiated by i2c_sysfs_new_device above. This guarantees that we
1315 * don't delete devices to which some kernel code still has references.
1317 * Parameter checking may look overzealous, but we really don't want
1318 * the user to delete the wrong device.
1321 delete_device_store(struct device
*dev
, struct device_attribute
*attr
,
1322 const char *buf
, size_t count
)
1324 struct i2c_adapter
*adap
= to_i2c_adapter(dev
);
1325 struct i2c_client
*client
, *next
;
1326 unsigned short addr
;
1330 /* Parse parameters, reject extra parameters */
1331 res
= sscanf(buf
, "%hi%c", &addr
, &end
);
1333 dev_err(dev
, "%s: Can't parse I2C address\n", "delete_device");
1336 if (res
> 1 && end
!= '\n') {
1337 dev_err(dev
, "%s: Extra parameters\n", "delete_device");
1341 /* Make sure the device was added through sysfs */
1343 mutex_lock_nested(&adap
->userspace_clients_lock
,
1344 i2c_adapter_depth(adap
));
1345 list_for_each_entry_safe(client
, next
, &adap
->userspace_clients
,
1347 if (i2c_encode_flags_to_addr(client
) == addr
) {
1348 dev_info(dev
, "%s: Deleting device %s at 0x%02hx\n",
1349 "delete_device", client
->name
, client
->addr
);
1351 list_del(&client
->detected
);
1352 i2c_unregister_device(client
);
1357 mutex_unlock(&adap
->userspace_clients_lock
);
1360 dev_err(dev
, "%s: Can't find device in list\n",
1364 static DEVICE_ATTR_IGNORE_LOCKDEP(delete_device
, S_IWUSR
, NULL
,
1365 delete_device_store
);
1367 static struct attribute
*i2c_adapter_attrs
[] = {
1368 &dev_attr_name
.attr
,
1369 &dev_attr_new_device
.attr
,
1370 &dev_attr_delete_device
.attr
,
1373 ATTRIBUTE_GROUPS(i2c_adapter
);
1375 const struct device_type i2c_adapter_type
= {
1376 .groups
= i2c_adapter_groups
,
1377 .release
= i2c_adapter_dev_release
,
1379 EXPORT_SYMBOL_GPL(i2c_adapter_type
);
1382 * i2c_verify_adapter - return parameter as i2c_adapter or NULL
1383 * @dev: device, probably from some driver model iterator
1385 * When traversing the driver model tree, perhaps using driver model
1386 * iterators like @device_for_each_child(), you can't assume very much
1387 * about the nodes you find. Use this function to avoid oopses caused
1388 * by wrongly treating some non-I2C device as an i2c_adapter.
1390 struct i2c_adapter
*i2c_verify_adapter(struct device
*dev
)
1392 return (dev
->type
== &i2c_adapter_type
)
1393 ? to_i2c_adapter(dev
)
1396 EXPORT_SYMBOL(i2c_verify_adapter
);
1398 static void i2c_scan_static_board_info(struct i2c_adapter
*adapter
)
1400 struct i2c_devinfo
*devinfo
;
1402 down_read(&__i2c_board_lock
);
1403 list_for_each_entry(devinfo
, &__i2c_board_list
, list
) {
1404 if (devinfo
->busnum
== adapter
->nr
&&
1405 IS_ERR(i2c_new_client_device(adapter
, &devinfo
->board_info
)))
1406 dev_err(&adapter
->dev
,
1407 "Can't create device at 0x%02x\n",
1408 devinfo
->board_info
.addr
);
1410 up_read(&__i2c_board_lock
);
1413 static int i2c_do_add_adapter(struct i2c_driver
*driver
,
1414 struct i2c_adapter
*adap
)
1416 /* Detect supported devices on that bus, and instantiate them */
1417 i2c_detect(adap
, driver
);
1422 static int __process_new_adapter(struct device_driver
*d
, void *data
)
1424 return i2c_do_add_adapter(to_i2c_driver(d
), data
);
1427 static const struct i2c_lock_operations i2c_adapter_lock_ops
= {
1428 .lock_bus
= i2c_adapter_lock_bus
,
1429 .trylock_bus
= i2c_adapter_trylock_bus
,
1430 .unlock_bus
= i2c_adapter_unlock_bus
,
1433 static void i2c_host_notify_irq_teardown(struct i2c_adapter
*adap
)
1435 struct irq_domain
*domain
= adap
->host_notify_domain
;
1436 irq_hw_number_t hwirq
;
1441 for (hwirq
= 0 ; hwirq
< I2C_ADDR_7BITS_COUNT
; hwirq
++)
1442 irq_dispose_mapping(irq_find_mapping(domain
, hwirq
));
1444 irq_domain_remove(domain
);
1445 adap
->host_notify_domain
= NULL
;
1448 static int i2c_host_notify_irq_map(struct irq_domain
*h
,
1450 irq_hw_number_t hw_irq_num
)
1452 irq_set_chip_and_handler(virq
, &dummy_irq_chip
, handle_simple_irq
);
1457 static const struct irq_domain_ops i2c_host_notify_irq_ops
= {
1458 .map
= i2c_host_notify_irq_map
,
1461 static int i2c_setup_host_notify_irq_domain(struct i2c_adapter
*adap
)
1463 struct irq_domain
*domain
;
1465 if (!i2c_check_functionality(adap
, I2C_FUNC_SMBUS_HOST_NOTIFY
))
1468 domain
= irq_domain_create_linear(adap
->dev
.parent
->fwnode
,
1469 I2C_ADDR_7BITS_COUNT
,
1470 &i2c_host_notify_irq_ops
, adap
);
1474 adap
->host_notify_domain
= domain
;
1480 * i2c_handle_smbus_host_notify - Forward a Host Notify event to the correct
1482 * @adap: the adapter
1483 * @addr: the I2C address of the notifying device
1484 * Context: can't sleep
1486 * Helper function to be called from an I2C bus driver's interrupt
1487 * handler. It will schedule the Host Notify IRQ.
1489 int i2c_handle_smbus_host_notify(struct i2c_adapter
*adap
, unsigned short addr
)
1496 dev_dbg(&adap
->dev
, "Detected HostNotify from address 0x%02x", addr
);
1498 irq
= irq_find_mapping(adap
->host_notify_domain
, addr
);
1502 generic_handle_irq_safe(irq
);
1506 EXPORT_SYMBOL_GPL(i2c_handle_smbus_host_notify
);
1508 static int i2c_register_adapter(struct i2c_adapter
*adap
)
1512 /* Can't register until after driver model init */
1513 if (WARN_ON(!is_registered
)) {
1519 if (WARN(!adap
->name
[0], "i2c adapter has no name"))
1523 pr_err("adapter '%s': no algo supplied!\n", adap
->name
);
1527 if (!adap
->lock_ops
)
1528 adap
->lock_ops
= &i2c_adapter_lock_ops
;
1530 adap
->locked_flags
= 0;
1531 rt_mutex_init(&adap
->bus_lock
);
1532 rt_mutex_init(&adap
->mux_lock
);
1533 mutex_init(&adap
->userspace_clients_lock
);
1534 INIT_LIST_HEAD(&adap
->userspace_clients
);
1536 /* Set default timeout to 1 second if not already set */
1537 if (adap
->timeout
== 0)
1540 /* register soft irqs for Host Notify */
1541 res
= i2c_setup_host_notify_irq_domain(adap
);
1543 pr_err("adapter '%s': can't create Host Notify IRQs (%d)\n",
1548 dev_set_name(&adap
->dev
, "i2c-%d", adap
->nr
);
1549 adap
->dev
.bus
= &i2c_bus_type
;
1550 adap
->dev
.type
= &i2c_adapter_type
;
1551 device_initialize(&adap
->dev
);
1554 * This adapter can be used as a parent immediately after device_add(),
1555 * setup runtime-pm (especially ignore-children) before hand.
1557 device_enable_async_suspend(&adap
->dev
);
1558 pm_runtime_no_callbacks(&adap
->dev
);
1559 pm_suspend_ignore_children(&adap
->dev
, true);
1560 pm_runtime_enable(&adap
->dev
);
1562 res
= device_add(&adap
->dev
);
1564 pr_err("adapter '%s': can't register device (%d)\n", adap
->name
, res
);
1568 adap
->debugfs
= debugfs_create_dir(dev_name(&adap
->dev
), i2c_debugfs_root
);
1570 res
= i2c_setup_smbus_alert(adap
);
1574 res
= i2c_init_recovery(adap
);
1575 if (res
== -EPROBE_DEFER
)
1578 dev_dbg(&adap
->dev
, "adapter [%s] registered\n", adap
->name
);
1580 /* create pre-declared device nodes */
1581 of_i2c_register_devices(adap
);
1582 i2c_acpi_install_space_handler(adap
);
1583 i2c_acpi_register_devices(adap
);
1585 if (adap
->nr
< __i2c_first_dynamic_bus_num
)
1586 i2c_scan_static_board_info(adap
);
1588 /* Notify drivers */
1589 mutex_lock(&core_lock
);
1590 bus_for_each_drv(&i2c_bus_type
, NULL
, adap
, __process_new_adapter
);
1591 mutex_unlock(&core_lock
);
1596 debugfs_remove_recursive(adap
->debugfs
);
1597 init_completion(&adap
->dev_released
);
1598 device_unregister(&adap
->dev
);
1599 wait_for_completion(&adap
->dev_released
);
1601 mutex_lock(&core_lock
);
1602 idr_remove(&i2c_adapter_idr
, adap
->nr
);
1603 mutex_unlock(&core_lock
);
1608 * __i2c_add_numbered_adapter - i2c_add_numbered_adapter where nr is never -1
1609 * @adap: the adapter to register (with adap->nr initialized)
1610 * Context: can sleep
1612 * See i2c_add_numbered_adapter() for details.
1614 static int __i2c_add_numbered_adapter(struct i2c_adapter
*adap
)
1618 mutex_lock(&core_lock
);
1619 id
= idr_alloc(&i2c_adapter_idr
, adap
, adap
->nr
, adap
->nr
+ 1, GFP_KERNEL
);
1620 mutex_unlock(&core_lock
);
1621 if (WARN(id
< 0, "couldn't get idr"))
1622 return id
== -ENOSPC
? -EBUSY
: id
;
1624 return i2c_register_adapter(adap
);
1628 * i2c_add_adapter - declare i2c adapter, use dynamic bus number
1629 * @adapter: the adapter to add
1630 * Context: can sleep
1632 * This routine is used to declare an I2C adapter when its bus number
1633 * doesn't matter or when its bus number is specified by an dt alias.
1634 * Examples of bases when the bus number doesn't matter: I2C adapters
1635 * dynamically added by USB links or PCI plugin cards.
1637 * When this returns zero, a new bus number was allocated and stored
1638 * in adap->nr, and the specified adapter became available for clients.
1639 * Otherwise, a negative errno value is returned.
1641 int i2c_add_adapter(struct i2c_adapter
*adapter
)
1643 struct device
*dev
= &adapter
->dev
;
1647 id
= of_alias_get_id(dev
->of_node
, "i2c");
1650 return __i2c_add_numbered_adapter(adapter
);
1654 mutex_lock(&core_lock
);
1655 id
= idr_alloc(&i2c_adapter_idr
, adapter
,
1656 __i2c_first_dynamic_bus_num
, 0, GFP_KERNEL
);
1657 mutex_unlock(&core_lock
);
1658 if (WARN(id
< 0, "couldn't get idr"))
1663 return i2c_register_adapter(adapter
);
1665 EXPORT_SYMBOL(i2c_add_adapter
);
1668 * i2c_add_numbered_adapter - declare i2c adapter, use static bus number
1669 * @adap: the adapter to register (with adap->nr initialized)
1670 * Context: can sleep
1672 * This routine is used to declare an I2C adapter when its bus number
1673 * matters. For example, use it for I2C adapters from system-on-chip CPUs,
1674 * or otherwise built in to the system's mainboard, and where i2c_board_info
1675 * is used to properly configure I2C devices.
1677 * If the requested bus number is set to -1, then this function will behave
1678 * identically to i2c_add_adapter, and will dynamically assign a bus number.
1680 * If no devices have pre-been declared for this bus, then be sure to
1681 * register the adapter before any dynamically allocated ones. Otherwise
1682 * the required bus ID may not be available.
1684 * When this returns zero, the specified adapter became available for
1685 * clients using the bus number provided in adap->nr. Also, the table
1686 * of I2C devices pre-declared using i2c_register_board_info() is scanned,
1687 * and the appropriate driver model device nodes are created. Otherwise, a
1688 * negative errno value is returned.
1690 int i2c_add_numbered_adapter(struct i2c_adapter
*adap
)
1692 if (adap
->nr
== -1) /* -1 means dynamically assign bus id */
1693 return i2c_add_adapter(adap
);
1695 return __i2c_add_numbered_adapter(adap
);
1697 EXPORT_SYMBOL_GPL(i2c_add_numbered_adapter
);
1699 static void i2c_do_del_adapter(struct i2c_driver
*driver
,
1700 struct i2c_adapter
*adapter
)
1702 struct i2c_client
*client
, *_n
;
1704 /* Remove the devices we created ourselves as the result of hardware
1705 * probing (using a driver's detect method) */
1706 list_for_each_entry_safe(client
, _n
, &driver
->clients
, detected
) {
1707 if (client
->adapter
== adapter
) {
1708 dev_dbg(&adapter
->dev
, "Removing %s at 0x%x\n",
1709 client
->name
, client
->addr
);
1710 list_del(&client
->detected
);
1711 i2c_unregister_device(client
);
1716 static int __unregister_client(struct device
*dev
, void *dummy
)
1718 struct i2c_client
*client
= i2c_verify_client(dev
);
1719 if (client
&& strcmp(client
->name
, "dummy"))
1720 i2c_unregister_device(client
);
1724 static int __unregister_dummy(struct device
*dev
, void *dummy
)
1726 struct i2c_client
*client
= i2c_verify_client(dev
);
1727 i2c_unregister_device(client
);
1731 static int __process_removed_adapter(struct device_driver
*d
, void *data
)
1733 i2c_do_del_adapter(to_i2c_driver(d
), data
);
1738 * i2c_del_adapter - unregister I2C adapter
1739 * @adap: the adapter being unregistered
1740 * Context: can sleep
1742 * This unregisters an I2C adapter which was previously registered
1743 * by @i2c_add_adapter or @i2c_add_numbered_adapter.
1745 void i2c_del_adapter(struct i2c_adapter
*adap
)
1747 struct i2c_adapter
*found
;
1748 struct i2c_client
*client
, *next
;
1750 /* First make sure that this adapter was ever added */
1751 mutex_lock(&core_lock
);
1752 found
= idr_find(&i2c_adapter_idr
, adap
->nr
);
1753 mutex_unlock(&core_lock
);
1754 if (found
!= adap
) {
1755 pr_debug("attempting to delete unregistered adapter [%s]\n", adap
->name
);
1759 i2c_acpi_remove_space_handler(adap
);
1760 /* Tell drivers about this removal */
1761 mutex_lock(&core_lock
);
1762 bus_for_each_drv(&i2c_bus_type
, NULL
, adap
,
1763 __process_removed_adapter
);
1764 mutex_unlock(&core_lock
);
1766 /* Remove devices instantiated from sysfs */
1767 mutex_lock_nested(&adap
->userspace_clients_lock
,
1768 i2c_adapter_depth(adap
));
1769 list_for_each_entry_safe(client
, next
, &adap
->userspace_clients
,
1771 dev_dbg(&adap
->dev
, "Removing %s at 0x%x\n", client
->name
,
1773 list_del(&client
->detected
);
1774 i2c_unregister_device(client
);
1776 mutex_unlock(&adap
->userspace_clients_lock
);
1778 /* Detach any active clients. This can't fail, thus we do not
1779 * check the returned value. This is a two-pass process, because
1780 * we can't remove the dummy devices during the first pass: they
1781 * could have been instantiated by real devices wishing to clean
1782 * them up properly, so we give them a chance to do that first. */
1783 device_for_each_child(&adap
->dev
, NULL
, __unregister_client
);
1784 device_for_each_child(&adap
->dev
, NULL
, __unregister_dummy
);
1786 /* device name is gone after device_unregister */
1787 dev_dbg(&adap
->dev
, "adapter [%s] unregistered\n", adap
->name
);
1789 pm_runtime_disable(&adap
->dev
);
1791 i2c_host_notify_irq_teardown(adap
);
1793 debugfs_remove_recursive(adap
->debugfs
);
1795 /* wait until all references to the device are gone
1797 * FIXME: This is old code and should ideally be replaced by an
1798 * alternative which results in decoupling the lifetime of the struct
1799 * device from the i2c_adapter, like spi or netdev do. Any solution
1800 * should be thoroughly tested with DEBUG_KOBJECT_RELEASE enabled!
1802 init_completion(&adap
->dev_released
);
1803 device_unregister(&adap
->dev
);
1804 wait_for_completion(&adap
->dev_released
);
1807 mutex_lock(&core_lock
);
1808 idr_remove(&i2c_adapter_idr
, adap
->nr
);
1809 mutex_unlock(&core_lock
);
1811 /* Clear the device structure in case this adapter is ever going to be
1813 memset(&adap
->dev
, 0, sizeof(adap
->dev
));
1815 EXPORT_SYMBOL(i2c_del_adapter
);
1817 static void devm_i2c_del_adapter(void *adapter
)
1819 i2c_del_adapter(adapter
);
1823 * devm_i2c_add_adapter - device-managed variant of i2c_add_adapter()
1824 * @dev: managing device for adding this I2C adapter
1825 * @adapter: the adapter to add
1826 * Context: can sleep
1828 * Add adapter with dynamic bus number, same with i2c_add_adapter()
1829 * but the adapter will be auto deleted on driver detach.
1831 int devm_i2c_add_adapter(struct device
*dev
, struct i2c_adapter
*adapter
)
1835 ret
= i2c_add_adapter(adapter
);
1839 return devm_add_action_or_reset(dev
, devm_i2c_del_adapter
, adapter
);
1841 EXPORT_SYMBOL_GPL(devm_i2c_add_adapter
);
1843 static int i2c_dev_or_parent_fwnode_match(struct device
*dev
, const void *data
)
1845 if (dev_fwnode(dev
) == data
)
1848 if (dev
->parent
&& dev_fwnode(dev
->parent
) == data
)
1855 * i2c_find_adapter_by_fwnode() - find an i2c_adapter for the fwnode
1856 * @fwnode: &struct fwnode_handle corresponding to the &struct i2c_adapter
1858 * Look up and return the &struct i2c_adapter corresponding to the @fwnode.
1859 * If no adapter can be found, or @fwnode is NULL, this returns NULL.
1861 * The user must call put_device(&adapter->dev) once done with the i2c adapter.
1863 struct i2c_adapter
*i2c_find_adapter_by_fwnode(struct fwnode_handle
*fwnode
)
1865 struct i2c_adapter
*adapter
;
1871 dev
= bus_find_device(&i2c_bus_type
, NULL
, fwnode
,
1872 i2c_dev_or_parent_fwnode_match
);
1876 adapter
= i2c_verify_adapter(dev
);
1882 EXPORT_SYMBOL(i2c_find_adapter_by_fwnode
);
1885 * i2c_get_adapter_by_fwnode() - find an i2c_adapter for the fwnode
1886 * @fwnode: &struct fwnode_handle corresponding to the &struct i2c_adapter
1888 * Look up and return the &struct i2c_adapter corresponding to the @fwnode,
1889 * and increment the adapter module's use count. If no adapter can be found,
1890 * or @fwnode is NULL, this returns NULL.
1892 * The user must call i2c_put_adapter(adapter) once done with the i2c adapter.
1893 * Note that this is different from i2c_find_adapter_by_node().
1895 struct i2c_adapter
*i2c_get_adapter_by_fwnode(struct fwnode_handle
*fwnode
)
1897 struct i2c_adapter
*adapter
;
1899 adapter
= i2c_find_adapter_by_fwnode(fwnode
);
1903 if (!try_module_get(adapter
->owner
)) {
1904 put_device(&adapter
->dev
);
1910 EXPORT_SYMBOL(i2c_get_adapter_by_fwnode
);
1912 static void i2c_parse_timing(struct device
*dev
, char *prop_name
, u32
*cur_val_p
,
1913 u32 def_val
, bool use_def
)
1917 ret
= device_property_read_u32(dev
, prop_name
, cur_val_p
);
1919 *cur_val_p
= def_val
;
1921 dev_dbg(dev
, "%s: %u\n", prop_name
, *cur_val_p
);
1925 * i2c_parse_fw_timings - get I2C related timing parameters from firmware
1926 * @dev: The device to scan for I2C timing properties
1927 * @t: the i2c_timings struct to be filled with values
1928 * @use_defaults: bool to use sane defaults derived from the I2C specification
1929 * when properties are not found, otherwise don't update
1931 * Scan the device for the generic I2C properties describing timing parameters
1932 * for the signal and fill the given struct with the results. If a property was
1933 * not found and use_defaults was true, then maximum timings are assumed which
1934 * are derived from the I2C specification. If use_defaults is not used, the
1935 * results will be as before, so drivers can apply their own defaults before
1936 * calling this helper. The latter is mainly intended for avoiding regressions
1937 * of existing drivers which want to switch to this function. New drivers
1938 * almost always should use the defaults.
1940 void i2c_parse_fw_timings(struct device
*dev
, struct i2c_timings
*t
, bool use_defaults
)
1942 bool u
= use_defaults
;
1945 i2c_parse_timing(dev
, "clock-frequency", &t
->bus_freq_hz
,
1946 I2C_MAX_STANDARD_MODE_FREQ
, u
);
1948 d
= t
->bus_freq_hz
<= I2C_MAX_STANDARD_MODE_FREQ
? 1000 :
1949 t
->bus_freq_hz
<= I2C_MAX_FAST_MODE_FREQ
? 300 : 120;
1950 i2c_parse_timing(dev
, "i2c-scl-rising-time-ns", &t
->scl_rise_ns
, d
, u
);
1952 d
= t
->bus_freq_hz
<= I2C_MAX_FAST_MODE_FREQ
? 300 : 120;
1953 i2c_parse_timing(dev
, "i2c-scl-falling-time-ns", &t
->scl_fall_ns
, d
, u
);
1955 i2c_parse_timing(dev
, "i2c-scl-internal-delay-ns",
1956 &t
->scl_int_delay_ns
, 0, u
);
1957 i2c_parse_timing(dev
, "i2c-sda-falling-time-ns", &t
->sda_fall_ns
,
1959 i2c_parse_timing(dev
, "i2c-sda-hold-time-ns", &t
->sda_hold_ns
, 0, u
);
1960 i2c_parse_timing(dev
, "i2c-digital-filter-width-ns",
1961 &t
->digital_filter_width_ns
, 0, u
);
1962 i2c_parse_timing(dev
, "i2c-analog-filter-cutoff-frequency",
1963 &t
->analog_filter_cutoff_freq_hz
, 0, u
);
1965 EXPORT_SYMBOL_GPL(i2c_parse_fw_timings
);
1967 /* ------------------------------------------------------------------------- */
1969 int i2c_for_each_dev(void *data
, int (*fn
)(struct device
*dev
, void *data
))
1973 mutex_lock(&core_lock
);
1974 res
= bus_for_each_dev(&i2c_bus_type
, NULL
, data
, fn
);
1975 mutex_unlock(&core_lock
);
1979 EXPORT_SYMBOL_GPL(i2c_for_each_dev
);
1981 static int __process_new_driver(struct device
*dev
, void *data
)
1983 if (dev
->type
!= &i2c_adapter_type
)
1985 return i2c_do_add_adapter(data
, to_i2c_adapter(dev
));
1989 * An i2c_driver is used with one or more i2c_client (device) nodes to access
1990 * i2c slave chips, on a bus instance associated with some i2c_adapter.
1993 int i2c_register_driver(struct module
*owner
, struct i2c_driver
*driver
)
1997 /* Can't register until after driver model init */
1998 if (WARN_ON(!is_registered
))
2001 /* add the driver to the list of i2c drivers in the driver core */
2002 driver
->driver
.owner
= owner
;
2003 driver
->driver
.bus
= &i2c_bus_type
;
2004 INIT_LIST_HEAD(&driver
->clients
);
2006 /* When registration returns, the driver core
2007 * will have called probe() for all matching-but-unbound devices.
2009 res
= driver_register(&driver
->driver
);
2013 pr_debug("driver [%s] registered\n", driver
->driver
.name
);
2015 /* Walk the adapters that are already present */
2016 i2c_for_each_dev(driver
, __process_new_driver
);
2020 EXPORT_SYMBOL(i2c_register_driver
);
2022 static int __process_removed_driver(struct device
*dev
, void *data
)
2024 if (dev
->type
== &i2c_adapter_type
)
2025 i2c_do_del_adapter(data
, to_i2c_adapter(dev
));
2030 * i2c_del_driver - unregister I2C driver
2031 * @driver: the driver being unregistered
2032 * Context: can sleep
2034 void i2c_del_driver(struct i2c_driver
*driver
)
2036 i2c_for_each_dev(driver
, __process_removed_driver
);
2038 driver_unregister(&driver
->driver
);
2039 pr_debug("driver [%s] unregistered\n", driver
->driver
.name
);
2041 EXPORT_SYMBOL(i2c_del_driver
);
2043 /* ------------------------------------------------------------------------- */
2045 struct i2c_cmd_arg
{
2050 static int i2c_cmd(struct device
*dev
, void *_arg
)
2052 struct i2c_client
*client
= i2c_verify_client(dev
);
2053 struct i2c_cmd_arg
*arg
= _arg
;
2054 struct i2c_driver
*driver
;
2056 if (!client
|| !client
->dev
.driver
)
2059 driver
= to_i2c_driver(client
->dev
.driver
);
2060 if (driver
->command
)
2061 driver
->command(client
, arg
->cmd
, arg
->arg
);
2065 void i2c_clients_command(struct i2c_adapter
*adap
, unsigned int cmd
, void *arg
)
2067 struct i2c_cmd_arg cmd_arg
;
2071 device_for_each_child(&adap
->dev
, &cmd_arg
, i2c_cmd
);
2073 EXPORT_SYMBOL(i2c_clients_command
);
2075 static int __init
i2c_init(void)
2079 retval
= of_alias_get_highest_id("i2c");
2081 down_write(&__i2c_board_lock
);
2082 if (retval
>= __i2c_first_dynamic_bus_num
)
2083 __i2c_first_dynamic_bus_num
= retval
+ 1;
2084 up_write(&__i2c_board_lock
);
2086 retval
= bus_register(&i2c_bus_type
);
2090 is_registered
= true;
2092 i2c_debugfs_root
= debugfs_create_dir("i2c", NULL
);
2094 retval
= i2c_add_driver(&dummy_driver
);
2098 if (IS_ENABLED(CONFIG_OF_DYNAMIC
))
2099 WARN_ON(of_reconfig_notifier_register(&i2c_of_notifier
));
2100 if (IS_ENABLED(CONFIG_ACPI
))
2101 WARN_ON(acpi_reconfig_notifier_register(&i2c_acpi_notifier
));
2106 is_registered
= false;
2107 bus_unregister(&i2c_bus_type
);
2111 static void __exit
i2c_exit(void)
2113 if (IS_ENABLED(CONFIG_ACPI
))
2114 WARN_ON(acpi_reconfig_notifier_unregister(&i2c_acpi_notifier
));
2115 if (IS_ENABLED(CONFIG_OF_DYNAMIC
))
2116 WARN_ON(of_reconfig_notifier_unregister(&i2c_of_notifier
));
2117 i2c_del_driver(&dummy_driver
);
2118 debugfs_remove_recursive(i2c_debugfs_root
);
2119 bus_unregister(&i2c_bus_type
);
2120 tracepoint_synchronize_unregister();
2123 /* We must initialize early, because some subsystems register i2c drivers
2124 * in subsys_initcall() code, but are linked (and initialized) before i2c.
2126 postcore_initcall(i2c_init
);
2127 module_exit(i2c_exit
);
2129 /* ----------------------------------------------------
2130 * the functional interface to the i2c busses.
2131 * ----------------------------------------------------
2134 /* Check if val is exceeding the quirk IFF quirk is non 0 */
2135 #define i2c_quirk_exceeded(val, quirk) ((quirk) && ((val) > (quirk)))
2137 static int i2c_quirk_error(struct i2c_adapter
*adap
, struct i2c_msg
*msg
, char *err_msg
)
2139 dev_err_ratelimited(&adap
->dev
, "adapter quirk: %s (addr 0x%04x, size %u, %s)\n",
2140 err_msg
, msg
->addr
, msg
->len
,
2141 msg
->flags
& I2C_M_RD
? "read" : "write");
2145 static int i2c_check_for_quirks(struct i2c_adapter
*adap
, struct i2c_msg
*msgs
, int num
)
2147 const struct i2c_adapter_quirks
*q
= adap
->quirks
;
2148 int max_num
= q
->max_num_msgs
, i
;
2149 bool do_len_check
= true;
2151 if (q
->flags
& I2C_AQ_COMB
) {
2154 /* special checks for combined messages */
2156 if (q
->flags
& I2C_AQ_COMB_WRITE_FIRST
&& msgs
[0].flags
& I2C_M_RD
)
2157 return i2c_quirk_error(adap
, &msgs
[0], "1st comb msg must be write");
2159 if (q
->flags
& I2C_AQ_COMB_READ_SECOND
&& !(msgs
[1].flags
& I2C_M_RD
))
2160 return i2c_quirk_error(adap
, &msgs
[1], "2nd comb msg must be read");
2162 if (q
->flags
& I2C_AQ_COMB_SAME_ADDR
&& msgs
[0].addr
!= msgs
[1].addr
)
2163 return i2c_quirk_error(adap
, &msgs
[0], "comb msg only to same addr");
2165 if (i2c_quirk_exceeded(msgs
[0].len
, q
->max_comb_1st_msg_len
))
2166 return i2c_quirk_error(adap
, &msgs
[0], "msg too long");
2168 if (i2c_quirk_exceeded(msgs
[1].len
, q
->max_comb_2nd_msg_len
))
2169 return i2c_quirk_error(adap
, &msgs
[1], "msg too long");
2171 do_len_check
= false;
2175 if (i2c_quirk_exceeded(num
, max_num
))
2176 return i2c_quirk_error(adap
, &msgs
[0], "too many messages");
2178 for (i
= 0; i
< num
; i
++) {
2179 u16 len
= msgs
[i
].len
;
2181 if (msgs
[i
].flags
& I2C_M_RD
) {
2182 if (do_len_check
&& i2c_quirk_exceeded(len
, q
->max_read_len
))
2183 return i2c_quirk_error(adap
, &msgs
[i
], "msg too long");
2185 if (q
->flags
& I2C_AQ_NO_ZERO_LEN_READ
&& len
== 0)
2186 return i2c_quirk_error(adap
, &msgs
[i
], "no zero length");
2188 if (do_len_check
&& i2c_quirk_exceeded(len
, q
->max_write_len
))
2189 return i2c_quirk_error(adap
, &msgs
[i
], "msg too long");
2191 if (q
->flags
& I2C_AQ_NO_ZERO_LEN_WRITE
&& len
== 0)
2192 return i2c_quirk_error(adap
, &msgs
[i
], "no zero length");
2200 * __i2c_transfer - unlocked flavor of i2c_transfer
2201 * @adap: Handle to I2C bus
2202 * @msgs: One or more messages to execute before STOP is issued to
2203 * terminate the operation; each message begins with a START.
2204 * @num: Number of messages to be executed.
2206 * Returns negative errno, else the number of messages executed.
2208 * Adapter lock must be held when calling this function. No debug logging
2211 int __i2c_transfer(struct i2c_adapter
*adap
, struct i2c_msg
*msgs
, int num
)
2213 unsigned long orig_jiffies
;
2216 if (!adap
->algo
->master_xfer
) {
2217 dev_dbg(&adap
->dev
, "I2C level transfers not supported\n");
2221 if (WARN_ON(!msgs
|| num
< 1))
2224 ret
= __i2c_check_suspended(adap
);
2228 if (adap
->quirks
&& i2c_check_for_quirks(adap
, msgs
, num
))
2232 * i2c_trace_msg_key gets enabled when tracepoint i2c_transfer gets
2233 * enabled. This is an efficient way of keeping the for-loop from
2234 * being executed when not needed.
2236 if (static_branch_unlikely(&i2c_trace_msg_key
)) {
2238 for (i
= 0; i
< num
; i
++)
2239 if (msgs
[i
].flags
& I2C_M_RD
)
2240 trace_i2c_read(adap
, &msgs
[i
], i
);
2242 trace_i2c_write(adap
, &msgs
[i
], i
);
2245 /* Retry automatically on arbitration loss */
2246 orig_jiffies
= jiffies
;
2247 for (ret
= 0, try = 0; try <= adap
->retries
; try++) {
2248 if (i2c_in_atomic_xfer_mode() && adap
->algo
->master_xfer_atomic
)
2249 ret
= adap
->algo
->master_xfer_atomic(adap
, msgs
, num
);
2251 ret
= adap
->algo
->master_xfer(adap
, msgs
, num
);
2255 if (time_after(jiffies
, orig_jiffies
+ adap
->timeout
))
2259 if (static_branch_unlikely(&i2c_trace_msg_key
)) {
2261 for (i
= 0; i
< ret
; i
++)
2262 if (msgs
[i
].flags
& I2C_M_RD
)
2263 trace_i2c_reply(adap
, &msgs
[i
], i
);
2264 trace_i2c_result(adap
, num
, ret
);
2269 EXPORT_SYMBOL(__i2c_transfer
);
2272 * i2c_transfer - execute a single or combined I2C message
2273 * @adap: Handle to I2C bus
2274 * @msgs: One or more messages to execute before STOP is issued to
2275 * terminate the operation; each message begins with a START.
2276 * @num: Number of messages to be executed.
2278 * Returns negative errno, else the number of messages executed.
2280 * Note that there is no requirement that each message be sent to
2281 * the same slave address, although that is the most common model.
2283 int i2c_transfer(struct i2c_adapter
*adap
, struct i2c_msg
*msgs
, int num
)
2287 /* REVISIT the fault reporting model here is weak:
2289 * - When we get an error after receiving N bytes from a slave,
2290 * there is no way to report "N".
2292 * - When we get a NAK after transmitting N bytes to a slave,
2293 * there is no way to report "N" ... or to let the master
2294 * continue executing the rest of this combined message, if
2295 * that's the appropriate response.
2297 * - When for example "num" is two and we successfully complete
2298 * the first message but get an error part way through the
2299 * second, it's unclear whether that should be reported as
2300 * one (discarding status on the second message) or errno
2301 * (discarding status on the first one).
2303 ret
= __i2c_lock_bus_helper(adap
);
2307 ret
= __i2c_transfer(adap
, msgs
, num
);
2308 i2c_unlock_bus(adap
, I2C_LOCK_SEGMENT
);
2312 EXPORT_SYMBOL(i2c_transfer
);
2315 * i2c_transfer_buffer_flags - issue a single I2C message transferring data
2317 * @client: Handle to slave device
2318 * @buf: Where the data is stored
2319 * @count: How many bytes to transfer, must be less than 64k since msg.len is u16
2320 * @flags: The flags to be used for the message, e.g. I2C_M_RD for reads
2322 * Returns negative errno, or else the number of bytes transferred.
2324 int i2c_transfer_buffer_flags(const struct i2c_client
*client
, char *buf
,
2325 int count
, u16 flags
)
2328 struct i2c_msg msg
= {
2329 .addr
= client
->addr
,
2330 .flags
= flags
| (client
->flags
& I2C_M_TEN
),
2335 ret
= i2c_transfer(client
->adapter
, &msg
, 1);
2338 * If everything went ok (i.e. 1 msg transferred), return #bytes
2339 * transferred, else error code.
2341 return (ret
== 1) ? count
: ret
;
2343 EXPORT_SYMBOL(i2c_transfer_buffer_flags
);
2346 * i2c_get_device_id - get manufacturer, part id and die revision of a device
2347 * @client: The device to query
2348 * @id: The queried information
2350 * Returns negative errno on error, zero on success.
2352 int i2c_get_device_id(const struct i2c_client
*client
,
2353 struct i2c_device_identity
*id
)
2355 struct i2c_adapter
*adap
= client
->adapter
;
2356 union i2c_smbus_data raw_id
;
2359 if (!i2c_check_functionality(adap
, I2C_FUNC_SMBUS_READ_I2C_BLOCK
))
2362 raw_id
.block
[0] = 3;
2363 ret
= i2c_smbus_xfer(adap
, I2C_ADDR_DEVICE_ID
, 0,
2364 I2C_SMBUS_READ
, client
->addr
<< 1,
2365 I2C_SMBUS_I2C_BLOCK_DATA
, &raw_id
);
2369 id
->manufacturer_id
= (raw_id
.block
[1] << 4) | (raw_id
.block
[2] >> 4);
2370 id
->part_id
= ((raw_id
.block
[2] & 0xf) << 5) | (raw_id
.block
[3] >> 3);
2371 id
->die_revision
= raw_id
.block
[3] & 0x7;
2374 EXPORT_SYMBOL_GPL(i2c_get_device_id
);
2377 * i2c_client_get_device_id - get the driver match table entry of a device
2378 * @client: the device to query. The device must be bound to a driver
2380 * Returns a pointer to the matching entry if found, NULL otherwise.
2382 const struct i2c_device_id
*i2c_client_get_device_id(const struct i2c_client
*client
)
2384 const struct i2c_driver
*drv
= to_i2c_driver(client
->dev
.driver
);
2386 return i2c_match_id(drv
->id_table
, client
);
2388 EXPORT_SYMBOL_GPL(i2c_client_get_device_id
);
2390 /* ----------------------------------------------------
2391 * the i2c address scanning function
2392 * Will not work for 10-bit addresses!
2393 * ----------------------------------------------------
2397 * Legacy default probe function, mostly relevant for SMBus. The default
2398 * probe method is a quick write, but it is known to corrupt the 24RF08
2399 * EEPROMs due to a state machine bug, and could also irreversibly
2400 * write-protect some EEPROMs, so for address ranges 0x30-0x37 and 0x50-0x5f,
2401 * we use a short byte read instead. Also, some bus drivers don't implement
2402 * quick write, so we fallback to a byte read in that case too.
2403 * On x86, there is another special case for FSC hardware monitoring chips,
2404 * which want regular byte reads (address 0x73.) Fortunately, these are the
2405 * only known chips using this I2C address on PC hardware.
2406 * Returns 1 if probe succeeded, 0 if not.
2408 static int i2c_default_probe(struct i2c_adapter
*adap
, unsigned short addr
)
2411 union i2c_smbus_data dummy
;
2414 if (addr
== 0x73 && (adap
->class & I2C_CLASS_HWMON
)
2415 && i2c_check_functionality(adap
, I2C_FUNC_SMBUS_READ_BYTE_DATA
))
2416 err
= i2c_smbus_xfer(adap
, addr
, 0, I2C_SMBUS_READ
, 0,
2417 I2C_SMBUS_BYTE_DATA
, &dummy
);
2420 if (!((addr
& ~0x07) == 0x30 || (addr
& ~0x0f) == 0x50)
2421 && i2c_check_functionality(adap
, I2C_FUNC_SMBUS_QUICK
))
2422 err
= i2c_smbus_xfer(adap
, addr
, 0, I2C_SMBUS_WRITE
, 0,
2423 I2C_SMBUS_QUICK
, NULL
);
2424 else if (i2c_check_functionality(adap
, I2C_FUNC_SMBUS_READ_BYTE
))
2425 err
= i2c_smbus_xfer(adap
, addr
, 0, I2C_SMBUS_READ
, 0,
2426 I2C_SMBUS_BYTE
, &dummy
);
2428 dev_warn(&adap
->dev
, "No suitable probing method supported for address 0x%02X\n",
2436 static int i2c_detect_address(struct i2c_client
*temp_client
,
2437 struct i2c_driver
*driver
)
2439 struct i2c_board_info info
;
2440 struct i2c_adapter
*adapter
= temp_client
->adapter
;
2441 int addr
= temp_client
->addr
;
2444 /* Make sure the address is valid */
2445 err
= i2c_check_7bit_addr_validity_strict(addr
);
2447 dev_warn(&adapter
->dev
, "Invalid probe address 0x%02x\n",
2452 /* Skip if already in use (7 bit, no need to encode flags) */
2453 if (i2c_check_addr_busy(adapter
, addr
))
2456 /* Make sure there is something at this address */
2457 if (!i2c_default_probe(adapter
, addr
))
2460 /* Finally call the custom detection function */
2461 memset(&info
, 0, sizeof(struct i2c_board_info
));
2463 err
= driver
->detect(temp_client
, &info
);
2465 /* -ENODEV is returned if the detection fails. We catch it
2466 here as this isn't an error. */
2467 return err
== -ENODEV
? 0 : err
;
2470 /* Consistency check */
2471 if (info
.type
[0] == '\0') {
2472 dev_err(&adapter
->dev
,
2473 "%s detection function provided no name for 0x%x\n",
2474 driver
->driver
.name
, addr
);
2476 struct i2c_client
*client
;
2478 /* Detection succeeded, instantiate the device */
2479 if (adapter
->class & I2C_CLASS_DEPRECATED
)
2480 dev_warn(&adapter
->dev
,
2481 "This adapter will soon drop class based instantiation of devices. "
2482 "Please make sure client 0x%02x gets instantiated by other means. "
2483 "Check 'Documentation/i2c/instantiating-devices.rst' for details.\n",
2486 dev_dbg(&adapter
->dev
, "Creating %s at 0x%02x\n",
2487 info
.type
, info
.addr
);
2488 client
= i2c_new_client_device(adapter
, &info
);
2489 if (!IS_ERR(client
))
2490 list_add_tail(&client
->detected
, &driver
->clients
);
2492 dev_err(&adapter
->dev
, "Failed creating %s at 0x%02x\n",
2493 info
.type
, info
.addr
);
2498 static int i2c_detect(struct i2c_adapter
*adapter
, struct i2c_driver
*driver
)
2500 const unsigned short *address_list
;
2501 struct i2c_client
*temp_client
;
2504 address_list
= driver
->address_list
;
2505 if (!driver
->detect
|| !address_list
)
2508 /* Warn that the adapter lost class based instantiation */
2509 if (adapter
->class == I2C_CLASS_DEPRECATED
) {
2510 dev_dbg(&adapter
->dev
,
2511 "This adapter dropped support for I2C classes and won't auto-detect %s devices anymore. "
2512 "If you need it, check 'Documentation/i2c/instantiating-devices.rst' for alternatives.\n",
2513 driver
->driver
.name
);
2517 /* Stop here if the classes do not match */
2518 if (!(adapter
->class & driver
->class))
2521 /* Set up a temporary client to help detect callback */
2522 temp_client
= kzalloc(sizeof(struct i2c_client
), GFP_KERNEL
);
2525 temp_client
->adapter
= adapter
;
2527 for (i
= 0; address_list
[i
] != I2C_CLIENT_END
; i
+= 1) {
2528 dev_dbg(&adapter
->dev
,
2529 "found normal entry for adapter %d, addr 0x%02x\n",
2530 i2c_adapter_id(adapter
), address_list
[i
]);
2531 temp_client
->addr
= address_list
[i
];
2532 err
= i2c_detect_address(temp_client
, driver
);
2541 int i2c_probe_func_quick_read(struct i2c_adapter
*adap
, unsigned short addr
)
2543 return i2c_smbus_xfer(adap
, addr
, 0, I2C_SMBUS_READ
, 0,
2544 I2C_SMBUS_QUICK
, NULL
) >= 0;
2546 EXPORT_SYMBOL_GPL(i2c_probe_func_quick_read
);
2549 i2c_new_scanned_device(struct i2c_adapter
*adap
,
2550 struct i2c_board_info
*info
,
2551 unsigned short const *addr_list
,
2552 int (*probe
)(struct i2c_adapter
*adap
, unsigned short addr
))
2557 probe
= i2c_default_probe
;
2559 for (i
= 0; addr_list
[i
] != I2C_CLIENT_END
; i
++) {
2560 /* Check address validity */
2561 if (i2c_check_7bit_addr_validity_strict(addr_list
[i
]) < 0) {
2562 dev_warn(&adap
->dev
, "Invalid 7-bit address 0x%02x\n",
2567 /* Check address availability (7 bit, no need to encode flags) */
2568 if (i2c_check_addr_busy(adap
, addr_list
[i
])) {
2570 "Address 0x%02x already in use, not probing\n",
2575 /* Test address responsiveness */
2576 if (probe(adap
, addr_list
[i
]))
2580 if (addr_list
[i
] == I2C_CLIENT_END
) {
2581 dev_dbg(&adap
->dev
, "Probing failed, no device found\n");
2582 return ERR_PTR(-ENODEV
);
2585 info
->addr
= addr_list
[i
];
2586 return i2c_new_client_device(adap
, info
);
2588 EXPORT_SYMBOL_GPL(i2c_new_scanned_device
);
2590 struct i2c_adapter
*i2c_get_adapter(int nr
)
2592 struct i2c_adapter
*adapter
;
2594 mutex_lock(&core_lock
);
2595 adapter
= idr_find(&i2c_adapter_idr
, nr
);
2599 if (try_module_get(adapter
->owner
))
2600 get_device(&adapter
->dev
);
2605 mutex_unlock(&core_lock
);
2608 EXPORT_SYMBOL(i2c_get_adapter
);
2610 void i2c_put_adapter(struct i2c_adapter
*adap
)
2615 module_put(adap
->owner
);
2616 /* Should be last, otherwise we risk use-after-free with 'adap' */
2617 put_device(&adap
->dev
);
2619 EXPORT_SYMBOL(i2c_put_adapter
);
2622 * i2c_get_dma_safe_msg_buf() - get a DMA safe buffer for the given i2c_msg
2623 * @msg: the message to be checked
2624 * @threshold: the minimum number of bytes for which using DMA makes sense.
2625 * Should at least be 1.
2627 * Return: NULL if a DMA safe buffer was not obtained. Use msg->buf with PIO.
2628 * Or a valid pointer to be used with DMA. After use, release it by
2629 * calling i2c_put_dma_safe_msg_buf().
2631 * This function must only be called from process context!
2633 u8
*i2c_get_dma_safe_msg_buf(struct i2c_msg
*msg
, unsigned int threshold
)
2635 /* also skip 0-length msgs for bogus thresholds of 0 */
2637 pr_debug("DMA buffer for addr=0x%02x with length 0 is bogus\n",
2639 if (msg
->len
< threshold
|| msg
->len
== 0)
2642 if (msg
->flags
& I2C_M_DMA_SAFE
)
2645 pr_debug("using bounce buffer for addr=0x%02x, len=%d\n",
2646 msg
->addr
, msg
->len
);
2648 if (msg
->flags
& I2C_M_RD
)
2649 return kzalloc(msg
->len
, GFP_KERNEL
);
2651 return kmemdup(msg
->buf
, msg
->len
, GFP_KERNEL
);
2653 EXPORT_SYMBOL_GPL(i2c_get_dma_safe_msg_buf
);
2656 * i2c_put_dma_safe_msg_buf - release DMA safe buffer and sync with i2c_msg
2657 * @buf: the buffer obtained from i2c_get_dma_safe_msg_buf(). May be NULL.
2658 * @msg: the message which the buffer corresponds to
2659 * @xferred: bool saying if the message was transferred
2661 void i2c_put_dma_safe_msg_buf(u8
*buf
, struct i2c_msg
*msg
, bool xferred
)
2663 if (!buf
|| buf
== msg
->buf
)
2666 if (xferred
&& msg
->flags
& I2C_M_RD
)
2667 memcpy(msg
->buf
, buf
, msg
->len
);
2671 EXPORT_SYMBOL_GPL(i2c_put_dma_safe_msg_buf
);
2673 MODULE_AUTHOR("Simon G. Vogl <simon@tk.uni-linz.ac.at>");
2674 MODULE_DESCRIPTION("I2C-Bus main module");
2675 MODULE_LICENSE("GPL");