Linux Audio

Check our new training course

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