Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 3f4a1221 authored by Linus Torvalds's avatar Linus Torvalds
Browse files
* 'i2c-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jdelvare/staging:
  i2c: Allow i2c_add_numbered_adapter() to assign a bus id
  i2c-ali1535: Fix style issues
parents 8ded371f 488bf314
Loading
Loading
Loading
Loading
+30 −31
Original line number Diff line number Diff line
/*
    Copyright (c) 2000  Frodo Looijaard <frodol@dds.nl>, 
                        Philip Edelbrock <phil@netroedge.com>, 
                        Mark D. Studebaker <mdsxyz123@yahoo.com>,
                        Dan Eaton <dan.eaton@rocketlogix.com> and 
                        Stephen Rousset<stephen.rousset@rocketlogix.com> 

    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation; either version 2 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 * Copyright (c) 2000  Frodo Looijaard <frodol@dds.nl>,
 *                      Philip Edelbrock <phil@netroedge.com>,
 *                      Mark D. Studebaker <mdsxyz123@yahoo.com>,
 *                      Dan Eaton <dan.eaton@rocketlogix.com> and
 *                      Stephen Rousset <stephen.rousset@rocketlogix.com>
 *
 *  This program is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License as published by
 *  the Free Software Foundation; either version 2 of the License, or
 *  (at your option) any later version.
 *
 *  This program is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with this program; if not, write to the Free Software
 *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/

/*
@@ -254,8 +254,8 @@ static int ali1535_transaction(struct i2c_adapter *adap)
	if (temp & (ALI1535_STS_ERR | ALI1535_STS_BUSY)) {
		/* do a clear-on-write */
		outb_p(0xFF, SMBHSTSTS);
		if ((temp = inb_p(SMBHSTSTS)) &
		    (ALI1535_STS_ERR | ALI1535_STS_BUSY)) {
		temp = inb_p(SMBHSTSTS);
		if (temp & (ALI1535_STS_ERR | ALI1535_STS_BUSY)) {
			/* This is probably going to be correctable only by a
			 * power reset as one of the bits now appears to be
			 * stuck */
@@ -267,10 +267,9 @@ static int ali1535_transaction(struct i2c_adapter *adap)
		}
	} else {
		/* check and clear done bit */
		if (temp & ALI1535_STS_DONE) {
		if (temp & ALI1535_STS_DONE)
			outb_p(temp, SMBHSTSTS);
	}
	}

	/* start the transaction by writing anything to the start register */
	outb_p(0xFF, SMBHSTPORT);
@@ -278,7 +277,7 @@ static int ali1535_transaction(struct i2c_adapter *adap)
	/* We will always wait for a fraction of a second! */
	timeout = 0;
	do {
		msleep(1);
		usleep_range(1000, 2000);
		temp = inb_p(SMBHSTSTS);
	} while (((temp & ALI1535_STS_BUSY) && !(temp & ALI1535_STS_IDLE))
		 && (timeout++ < MAX_TIMEOUT));
@@ -351,7 +350,7 @@ static s32 ali1535_access(struct i2c_adapter *adap, u16 addr,
	for (timeout = 0;
	     (timeout < MAX_TIMEOUT) && !(temp & ALI1535_STS_IDLE);
	     timeout++) {
		msleep(1);
		usleep_range(1000, 2000);
		temp = inb_p(SMBHSTSTS);
	}
	if (timeout >= MAX_TIMEOUT)
@@ -480,7 +479,7 @@ static struct i2c_adapter ali1535_adapter = {
	.algo		= &smbus_algorithm,
};

static const struct pci_device_id ali1535_ids[] = {
static DEFINE_PCI_DEVICE_TABLE(ali1535_ids) = {
	{ PCI_DEVICE(PCI_VENDOR_ID_AL, PCI_DEVICE_ID_AL_M7101) },
	{ },
};
+2 −5
Original line number Diff line number Diff line
@@ -662,11 +662,8 @@ static int __devinit cpm_i2c_probe(struct platform_device *ofdev)
	/* register new adapter to i2c module... */

	data = of_get_property(ofdev->dev.of_node, "linux,i2c-index", &len);
	if (data && len == 4) {
		cpm->adap.nr = *data;
	cpm->adap.nr = (data && len == 4) ? be32_to_cpup(data) : -1;
	result = i2c_add_numbered_adapter(&cpm->adap);
	} else
		result = i2c_add_adapter(&cpm->adap);

	if (result < 0) {
		dev_err(&ofdev->dev, "Unable to register with I2C\n");
+2 −5
Original line number Diff line number Diff line
@@ -1079,7 +1079,7 @@ static int i2c_pxa_probe(struct platform_device *dev)
	 * The reason to do so is to avoid sysfs names that only make
	 * sense when there are multiple adapters.
	 */
	i2c->adap.nr = dev->id != -1 ? dev->id : 0;
	i2c->adap.nr = dev->id;
	snprintf(i2c->adap.name, sizeof(i2c->adap.name), "pxa_i2c-i2c.%u",
		 i2c->adap.nr);

@@ -1142,9 +1142,6 @@ static int i2c_pxa_probe(struct platform_device *dev)
	i2c->adap.dev.of_node = dev->dev.of_node;
#endif

	if (i2c_type == REGS_CE4100)
		ret = i2c_add_adapter(&i2c->adap);
	else
	ret = i2c_add_numbered_adapter(&i2c->adap);
	if (ret < 0) {
		printk(KERN_INFO "I2C: Failed to add bus\n");
+1 −4
Original line number Diff line number Diff line
@@ -341,9 +341,6 @@ static int __devinit s6i2c_probe(struct platform_device *dev)
	i2c_wr16(iface, S6_I2C_TXTL, 0);

	platform_set_drvdata(dev, iface);
	if (bus_num < 0)
		rc = i2c_add_adapter(p_adap);
	else
	rc = i2c_add_numbered_adapter(p_adap);
	if (rc)
		goto err_irq_free;
+5 −0
Original line number Diff line number Diff line
@@ -925,6 +925,9 @@ EXPORT_SYMBOL(i2c_add_adapter);
 * or otherwise built in to the system's mainboard, and where i2c_board_info
 * is used to properly configure I2C devices.
 *
 * If the requested bus number is set to -1, then this function will behave
 * identically to i2c_add_adapter, and will dynamically assign a bus number.
 *
 * If no devices have pre-been declared for this bus, then be sure to
 * register the adapter before any dynamically allocated ones.  Otherwise
 * the required bus ID may not be available.
@@ -940,6 +943,8 @@ int i2c_add_numbered_adapter(struct i2c_adapter *adap)
	int	id;
	int	status;

	if (adap->nr == -1) /* -1 means dynamically assign bus id */
		return i2c_add_adapter(adap);
	if (adap->nr & ~MAX_ID_MASK)
		return -EINVAL;