mirror of
https://github.com/torvalds/linux.git
synced 2024-10-27 07:16:27 +00:00
Merge branch 'i2c-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jdelvare/staging
* '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
This commit is contained in:
commit
3f4a122107
|
@ -1,23 +1,23 @@
|
||||||
/*
|
/*
|
||||||
Copyright (c) 2000 Frodo Looijaard <frodol@dds.nl>,
|
* Copyright (c) 2000 Frodo Looijaard <frodol@dds.nl>,
|
||||||
Philip Edelbrock <phil@netroedge.com>,
|
* Philip Edelbrock <phil@netroedge.com>,
|
||||||
Mark D. Studebaker <mdsxyz123@yahoo.com>,
|
* Mark D. Studebaker <mdsxyz123@yahoo.com>,
|
||||||
Dan Eaton <dan.eaton@rocketlogix.com> and
|
* Dan Eaton <dan.eaton@rocketlogix.com> and
|
||||||
Stephen Rousset<stephen.rousset@rocketlogix.com>
|
* Stephen Rousset <stephen.rousset@rocketlogix.com>
|
||||||
|
*
|
||||||
This program is free software; you can redistribute it and/or modify
|
* 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
|
* it under the terms of the GNU General Public License as published by
|
||||||
the Free Software Foundation; either version 2 of the License, or
|
* the Free Software Foundation; either version 2 of the License, or
|
||||||
(at your option) any later version.
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
This program is distributed in the hope that it will be useful,
|
* This program is distributed in the hope that it will be useful,
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
GNU General Public License for more details.
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
You should have received a copy of the GNU General Public License
|
* You should have received a copy of the GNU General Public License
|
||||||
along with this program; if not, write to the Free Software
|
* along with this program; if not, write to the Free Software
|
||||||
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
* 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)) {
|
if (temp & (ALI1535_STS_ERR | ALI1535_STS_BUSY)) {
|
||||||
/* do a clear-on-write */
|
/* do a clear-on-write */
|
||||||
outb_p(0xFF, SMBHSTSTS);
|
outb_p(0xFF, SMBHSTSTS);
|
||||||
if ((temp = inb_p(SMBHSTSTS)) &
|
temp = inb_p(SMBHSTSTS);
|
||||||
(ALI1535_STS_ERR | ALI1535_STS_BUSY)) {
|
if (temp & (ALI1535_STS_ERR | ALI1535_STS_BUSY)) {
|
||||||
/* This is probably going to be correctable only by a
|
/* This is probably going to be correctable only by a
|
||||||
* power reset as one of the bits now appears to be
|
* power reset as one of the bits now appears to be
|
||||||
* stuck */
|
* stuck */
|
||||||
|
@ -267,9 +267,8 @@ static int ali1535_transaction(struct i2c_adapter *adap)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
/* check and clear done bit */
|
/* check and clear done bit */
|
||||||
if (temp & ALI1535_STS_DONE) {
|
if (temp & ALI1535_STS_DONE)
|
||||||
outb_p(temp, SMBHSTSTS);
|
outb_p(temp, SMBHSTSTS);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* start the transaction by writing anything to the start register */
|
/* start the transaction by writing anything to the start register */
|
||||||
|
@ -278,7 +277,7 @@ static int ali1535_transaction(struct i2c_adapter *adap)
|
||||||
/* We will always wait for a fraction of a second! */
|
/* We will always wait for a fraction of a second! */
|
||||||
timeout = 0;
|
timeout = 0;
|
||||||
do {
|
do {
|
||||||
msleep(1);
|
usleep_range(1000, 2000);
|
||||||
temp = inb_p(SMBHSTSTS);
|
temp = inb_p(SMBHSTSTS);
|
||||||
} while (((temp & ALI1535_STS_BUSY) && !(temp & ALI1535_STS_IDLE))
|
} while (((temp & ALI1535_STS_BUSY) && !(temp & ALI1535_STS_IDLE))
|
||||||
&& (timeout++ < MAX_TIMEOUT));
|
&& (timeout++ < MAX_TIMEOUT));
|
||||||
|
@ -325,12 +324,12 @@ static int ali1535_transaction(struct i2c_adapter *adap)
|
||||||
/* take consequent actions for error conditions */
|
/* take consequent actions for error conditions */
|
||||||
if (!(temp & ALI1535_STS_DONE)) {
|
if (!(temp & ALI1535_STS_DONE)) {
|
||||||
/* issue "kill" to reset host controller */
|
/* issue "kill" to reset host controller */
|
||||||
outb_p(ALI1535_KILL,SMBHSTTYP);
|
outb_p(ALI1535_KILL, SMBHSTTYP);
|
||||||
outb_p(0xFF,SMBHSTSTS);
|
outb_p(0xFF, SMBHSTSTS);
|
||||||
} else if (temp & ALI1535_STS_ERR) {
|
} else if (temp & ALI1535_STS_ERR) {
|
||||||
/* issue "timeout" to reset all devices on bus */
|
/* issue "timeout" to reset all devices on bus */
|
||||||
outb_p(ALI1535_T_OUT,SMBHSTTYP);
|
outb_p(ALI1535_T_OUT, SMBHSTTYP);
|
||||||
outb_p(0xFF,SMBHSTSTS);
|
outb_p(0xFF, SMBHSTSTS);
|
||||||
}
|
}
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
|
@ -351,7 +350,7 @@ static s32 ali1535_access(struct i2c_adapter *adap, u16 addr,
|
||||||
for (timeout = 0;
|
for (timeout = 0;
|
||||||
(timeout < MAX_TIMEOUT) && !(temp & ALI1535_STS_IDLE);
|
(timeout < MAX_TIMEOUT) && !(temp & ALI1535_STS_IDLE);
|
||||||
timeout++) {
|
timeout++) {
|
||||||
msleep(1);
|
usleep_range(1000, 2000);
|
||||||
temp = inb_p(SMBHSTSTS);
|
temp = inb_p(SMBHSTSTS);
|
||||||
}
|
}
|
||||||
if (timeout >= MAX_TIMEOUT)
|
if (timeout >= MAX_TIMEOUT)
|
||||||
|
@ -480,12 +479,12 @@ static struct i2c_adapter ali1535_adapter = {
|
||||||
.algo = &smbus_algorithm,
|
.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) },
|
{ PCI_DEVICE(PCI_VENDOR_ID_AL, PCI_DEVICE_ID_AL_M7101) },
|
||||||
{ },
|
{ },
|
||||||
};
|
};
|
||||||
|
|
||||||
MODULE_DEVICE_TABLE (pci, ali1535_ids);
|
MODULE_DEVICE_TABLE(pci, ali1535_ids);
|
||||||
|
|
||||||
static int __devinit ali1535_probe(struct pci_dev *dev, const struct pci_device_id *id)
|
static int __devinit ali1535_probe(struct pci_dev *dev, const struct pci_device_id *id)
|
||||||
{
|
{
|
||||||
|
|
|
@ -662,11 +662,8 @@ static int __devinit cpm_i2c_probe(struct platform_device *ofdev)
|
||||||
/* register new adapter to i2c module... */
|
/* register new adapter to i2c module... */
|
||||||
|
|
||||||
data = of_get_property(ofdev->dev.of_node, "linux,i2c-index", &len);
|
data = of_get_property(ofdev->dev.of_node, "linux,i2c-index", &len);
|
||||||
if (data && len == 4) {
|
cpm->adap.nr = (data && len == 4) ? be32_to_cpup(data) : -1;
|
||||||
cpm->adap.nr = *data;
|
result = i2c_add_numbered_adapter(&cpm->adap);
|
||||||
result = i2c_add_numbered_adapter(&cpm->adap);
|
|
||||||
} else
|
|
||||||
result = i2c_add_adapter(&cpm->adap);
|
|
||||||
|
|
||||||
if (result < 0) {
|
if (result < 0) {
|
||||||
dev_err(&ofdev->dev, "Unable to register with I2C\n");
|
dev_err(&ofdev->dev, "Unable to register with I2C\n");
|
||||||
|
|
|
@ -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
|
* The reason to do so is to avoid sysfs names that only make
|
||||||
* sense when there are multiple adapters.
|
* 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",
|
snprintf(i2c->adap.name, sizeof(i2c->adap.name), "pxa_i2c-i2c.%u",
|
||||||
i2c->adap.nr);
|
i2c->adap.nr);
|
||||||
|
|
||||||
|
@ -1142,10 +1142,7 @@ static int i2c_pxa_probe(struct platform_device *dev)
|
||||||
i2c->adap.dev.of_node = dev->dev.of_node;
|
i2c->adap.dev.of_node = dev->dev.of_node;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (i2c_type == REGS_CE4100)
|
ret = i2c_add_numbered_adapter(&i2c->adap);
|
||||||
ret = i2c_add_adapter(&i2c->adap);
|
|
||||||
else
|
|
||||||
ret = i2c_add_numbered_adapter(&i2c->adap);
|
|
||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
printk(KERN_INFO "I2C: Failed to add bus\n");
|
printk(KERN_INFO "I2C: Failed to add bus\n");
|
||||||
goto eadapt;
|
goto eadapt;
|
||||||
|
|
|
@ -341,10 +341,7 @@ static int __devinit s6i2c_probe(struct platform_device *dev)
|
||||||
i2c_wr16(iface, S6_I2C_TXTL, 0);
|
i2c_wr16(iface, S6_I2C_TXTL, 0);
|
||||||
|
|
||||||
platform_set_drvdata(dev, iface);
|
platform_set_drvdata(dev, iface);
|
||||||
if (bus_num < 0)
|
rc = i2c_add_numbered_adapter(p_adap);
|
||||||
rc = i2c_add_adapter(p_adap);
|
|
||||||
else
|
|
||||||
rc = i2c_add_numbered_adapter(p_adap);
|
|
||||||
if (rc)
|
if (rc)
|
||||||
goto err_irq_free;
|
goto err_irq_free;
|
||||||
return 0;
|
return 0;
|
||||||
|
|
|
@ -925,6 +925,9 @@ EXPORT_SYMBOL(i2c_add_adapter);
|
||||||
* or otherwise built in to the system's mainboard, and where i2c_board_info
|
* or otherwise built in to the system's mainboard, and where i2c_board_info
|
||||||
* is used to properly configure I2C devices.
|
* 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
|
* If no devices have pre-been declared for this bus, then be sure to
|
||||||
* register the adapter before any dynamically allocated ones. Otherwise
|
* register the adapter before any dynamically allocated ones. Otherwise
|
||||||
* the required bus ID may not be available.
|
* the required bus ID may not be available.
|
||||||
|
@ -940,6 +943,8 @@ int i2c_add_numbered_adapter(struct i2c_adapter *adap)
|
||||||
int id;
|
int id;
|
||||||
int status;
|
int status;
|
||||||
|
|
||||||
|
if (adap->nr == -1) /* -1 means dynamically assign bus id */
|
||||||
|
return i2c_add_adapter(adap);
|
||||||
if (adap->nr & ~MAX_ID_MASK)
|
if (adap->nr & ~MAX_ID_MASK)
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user