Linux Audio

Check our new training course

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