Linux Audio

Check our new training course

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