mirror of
https://github.com/lm-sensors/lm-sensors.git
synced 2026-11-12 16:50:15 +00:00
Merge from trunk (4303:4355) out to 3.0.0 branch.
git-svn-id: http://lm-sensors.org/svn/lm-sensors/branches/lm-sensors-3.0.0@4357 7894878c-1315-0410-8ee3-d5d059ff63e0
This commit is contained in:
1 parent
2bb6b1859a
commit
c5ffa7b635
50 files changed
+1024
-888
No files matched your search
+27
-29
@@ -326,35 +326,11 @@ static u32 ali1563_func(struct i2c_adapter * a)
|
||||
}
|
||||
|
||||
|
||||
static void ali1563_enable(struct pci_dev * dev)
|
||||
{
|
||||
u16 ctrl;
|
||||
|
||||
pci_read_config_word(dev,ALI1563_SMBBA,&ctrl);
|
||||
ctrl |= 0x7;
|
||||
pci_write_config_word(dev,ALI1563_SMBBA,ctrl);
|
||||
}
|
||||
|
||||
static int __devinit ali1563_setup(struct pci_dev * dev)
|
||||
{
|
||||
u16 ctrl;
|
||||
|
||||
pci_read_config_word(dev,ALI1563_SMBBA,&ctrl);
|
||||
printk(KERN_DEBUG "ali1563: SMBus control = %04x\n",ctrl);
|
||||
|
||||
/* Check if device is even enabled first */
|
||||
if (!(ctrl & ALI1563_SMB_IOEN)) {
|
||||
printk(KERN_WARNING "ali1563: I/O space not enabled, trying manually\n");
|
||||
ali1563_enable(dev);
|
||||
}
|
||||
if (!(ctrl & ALI1563_SMB_IOEN)) {
|
||||
printk(KERN_WARNING "ali1563: I/O space still not enabled, giving up\n");
|
||||
goto Err;
|
||||
}
|
||||
if (!(ctrl & ALI1563_SMB_HOSTEN)) {
|
||||
printk(KERN_WARNING "ali1563: Host Controller not enabled\n");
|
||||
goto Err;
|
||||
}
|
||||
|
||||
/* SMB I/O Base in high 12 bits and must be aligned with the
|
||||
* size of the I/O space. */
|
||||
@@ -363,11 +339,32 @@ static int __devinit ali1563_setup(struct pci_dev * dev)
|
||||
printk(KERN_WARNING "ali1563: ali1563_smba Uninitialized\n");
|
||||
goto Err;
|
||||
}
|
||||
if (!request_region(ali1563_smba, ALI1563_SMB_IOSIZE,
|
||||
ali1563_pci_driver.name)) {
|
||||
printk(KERN_WARNING "ali1563: Could not allocate I/O space");
|
||||
|
||||
/* Check if device is enabled */
|
||||
if (!(ctrl & ALI1563_SMB_HOSTEN)) {
|
||||
printk(KERN_WARNING "ali1563: Host Controller not enabled\n");
|
||||
goto Err;
|
||||
}
|
||||
if (!(ctrl & ALI1563_SMB_IOEN)) {
|
||||
printk(KERN_WARNING "I/O space not enabled, trying manually\n");
|
||||
pci_write_config_word(dev, ALI1563_SMBBA,
|
||||
ctrl | ALI1563_SMB_IOEN);
|
||||
pci_read_config_word(dev, ALI1563_SMBBA, &ctrl);
|
||||
if (!(ctrl & ALI1563_SMB_IOEN)) {
|
||||
printk(KERN_WARNING "I/O space still not enabled, "
|
||||
"giving up\n");
|
||||
goto Err;
|
||||
}
|
||||
}
|
||||
|
||||
if (!request_region(ali1563_smba, ALI1563_SMB_IOSIZE,
|
||||
ali1563_pci_driver.name)) {
|
||||
printk(KERN_WARNING "ali1563: Could not allocate I/O space "
|
||||
"at 0x%04x\n", ali1563_smba);
|
||||
goto Err;
|
||||
}
|
||||
printk(KERN_INFO "ali1563: Found ALi1563 SMBus at 0x%04x\n",
|
||||
ali1563_smba);
|
||||
|
||||
return 0;
|
||||
Err:
|
||||
@@ -411,14 +408,15 @@ static int __devinit ali1563_probe(struct pci_dev * dev,
|
||||
{
|
||||
int error;
|
||||
|
||||
if ((error = ali1563_setup(dev))){
|
||||
if ((error = ali1563_setup(dev))) {
|
||||
printk(KERN_WARNING "ali1563: ALi1563 SMBus probe failed "
|
||||
"(%d)\n", error);
|
||||
return error;
|
||||
}
|
||||
sprintf(ali1563_adapter.name,"SMBus ALi 1563 Adapter @ %04x",
|
||||
ali1563_smba);
|
||||
if ((error = i2c_add_adapter(&ali1563_adapter)))
|
||||
ali1563_shutdown(dev);
|
||||
printk(KERN_DEBUG "%s: Returning %d\n",__FUNCTION__,error);
|
||||
return error;
|
||||
}
|
||||
|
||||
|
||||
+13
-13
@@ -215,7 +215,7 @@ s32 amd8111_access(struct i2c_adapter * adap, u16 addr, unsigned short flags,
|
||||
case I2C_SMBUS_WORD_DATA:
|
||||
amd_ec_write(smbus, AMD_SMB_CMD, command);
|
||||
if (read_write == I2C_SMBUS_WRITE) {
|
||||
amd_ec_write(smbus, AMD_SMB_DATA, data->word);
|
||||
amd_ec_write(smbus, AMD_SMB_DATA, data->word & 0xff);
|
||||
amd_ec_write(smbus, AMD_SMB_DATA + 1, data->word >> 8);
|
||||
}
|
||||
protocol |= AMD_SMB_PRTCL_WORD_DATA | pec;
|
||||
@@ -224,7 +224,7 @@ s32 amd8111_access(struct i2c_adapter * adap, u16 addr, unsigned short flags,
|
||||
case I2C_SMBUS_BLOCK_DATA:
|
||||
amd_ec_write(smbus, AMD_SMB_CMD, command);
|
||||
if (read_write == I2C_SMBUS_WRITE) {
|
||||
len = min_t(u8, data->block[0], 32);
|
||||
len = min_t(u8, data->block[0], I2C_SMBUS_BLOCK_MAX);
|
||||
amd_ec_write(smbus, AMD_SMB_BCNT, len);
|
||||
for (i = 0; i < len; i++)
|
||||
amd_ec_write(smbus, AMD_SMB_DATA + i, data->block[i + 1]);
|
||||
@@ -233,7 +233,7 @@ s32 amd8111_access(struct i2c_adapter * adap, u16 addr, unsigned short flags,
|
||||
break;
|
||||
|
||||
case I2C_SMBUS_I2C_BLOCK_DATA:
|
||||
len = min_t(u8, data->block[0], 32);
|
||||
len = min_t(u8, data->block[0], I2C_SMBUS_BLOCK_MAX);
|
||||
amd_ec_write(smbus, AMD_SMB_CMD, command);
|
||||
amd_ec_write(smbus, AMD_SMB_BCNT, len);
|
||||
if (read_write == I2C_SMBUS_WRITE)
|
||||
@@ -244,14 +244,14 @@ s32 amd8111_access(struct i2c_adapter * adap, u16 addr, unsigned short flags,
|
||||
|
||||
case I2C_SMBUS_PROC_CALL:
|
||||
amd_ec_write(smbus, AMD_SMB_CMD, command);
|
||||
amd_ec_write(smbus, AMD_SMB_DATA, data->word);
|
||||
amd_ec_write(smbus, AMD_SMB_DATA, data->word & 0xff);
|
||||
amd_ec_write(smbus, AMD_SMB_DATA + 1, data->word >> 8);
|
||||
protocol = AMD_SMB_PRTCL_PROC_CALL | pec;
|
||||
read_write = I2C_SMBUS_READ;
|
||||
break;
|
||||
|
||||
case I2C_SMBUS_BLOCK_PROC_CALL:
|
||||
len = min_t(u8, data->block[0], 31);
|
||||
len = min_t(u8, data->block[0], I2C_SMBUS_BLOCK_MAX - 1);
|
||||
amd_ec_write(smbus, AMD_SMB_CMD, command);
|
||||
amd_ec_write(smbus, AMD_SMB_BCNT, len);
|
||||
for (i = 0; i < len; i++)
|
||||
@@ -303,7 +303,7 @@ s32 amd8111_access(struct i2c_adapter * adap, u16 addr, unsigned short flags,
|
||||
case I2C_SMBUS_BLOCK_DATA:
|
||||
case I2C_SMBUS_BLOCK_PROC_CALL:
|
||||
amd_ec_read(smbus, AMD_SMB_BCNT, &len);
|
||||
len = min_t(u8, len, 32);
|
||||
len = min_t(u8, len, I2C_SMBUS_BLOCK_MAX);
|
||||
case I2C_SMBUS_I2C_BLOCK_DATA:
|
||||
for (i = 0; i < len; i++)
|
||||
amd_ec_read(smbus, AMD_SMB_DATA + i, data->block + i + 1);
|
||||
@@ -354,11 +354,11 @@ static int __devinit amd8111_probe(struct pci_dev *dev, const struct pci_device_
|
||||
struct amd_smbus *smbus;
|
||||
int error;
|
||||
|
||||
if (~pci_resource_flags(dev, 0) & IORESOURCE_IO)
|
||||
return -1;
|
||||
if (!(pci_resource_flags(dev, 0) & IORESOURCE_IO))
|
||||
return -ENODEV;
|
||||
|
||||
if (!(smbus = kmalloc(sizeof(struct amd_smbus), GFP_KERNEL)))
|
||||
return -1;
|
||||
return -ENOMEM;
|
||||
memset(smbus, 0, sizeof(struct amd_smbus));
|
||||
|
||||
pci_set_drvdata(dev, smbus);
|
||||
@@ -368,7 +368,7 @@ static int __devinit amd8111_probe(struct pci_dev *dev, const struct pci_device_
|
||||
|
||||
if (!request_region(smbus->base, smbus->size, amd8111_driver.name)) {
|
||||
kfree(smbus);
|
||||
return -1;
|
||||
return -EBUSY;
|
||||
}
|
||||
|
||||
sprintf(smbus->adapter.name, "SMBus2 AMD8111 adapter at %04x", smbus->base);
|
||||
@@ -378,16 +378,16 @@ static int __devinit amd8111_probe(struct pci_dev *dev, const struct pci_device_
|
||||
smbus->adapter.inc_use = amd8111_inc;
|
||||
smbus->adapter.dec_use = amd8111_dec;
|
||||
|
||||
pci_write_config_dword(smbus->dev, AMD_PCI_MISC, 0);
|
||||
|
||||
error = i2c_add_adapter(&smbus->adapter);
|
||||
if (error) {
|
||||
printk(KERN_WARNING "i2c-amd8111.c: Failed to register adapter.\n");
|
||||
release_region(smbus->base, smbus->size);
|
||||
kfree(smbus);
|
||||
return -1;
|
||||
return error;
|
||||
}
|
||||
|
||||
pci_write_config_dword(smbus->dev, AMD_PCI_MISC, 0);
|
||||
|
||||
printk(KERN_INFO "i2c-amd8111.c: AMD8111 SMBus 2.0 adapter at %#x\n", smbus->base);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -82,7 +82,6 @@ MODULE_DESCRIPTION("nForce2 SMBus driver");
|
||||
|
||||
|
||||
struct nforce2_smbus {
|
||||
struct pci_dev *dev;
|
||||
struct i2c_adapter adapter;
|
||||
int base;
|
||||
int size;
|
||||
@@ -336,7 +335,6 @@ static int __devinit nforce2_probe_smb(struct pci_dev *dev, int bar,
|
||||
smbus->base = iobase & PCI_BASE_ADDRESS_IO_MASK;
|
||||
smbus->size = 8;
|
||||
}
|
||||
smbus->dev = dev;
|
||||
|
||||
if (!request_region(smbus->base, smbus->size, nforce2_driver.name)) {
|
||||
printk (KERN_ERR "i2c-nforce2.o: Error requesting region %02x .. %02X for %s\n", smbus->base, smbus->base+smbus->size-1, name);
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
Supports:
|
||||
Intel PIIX4, 440MX
|
||||
Serverworks OSB4, CSB5, CSB6, HT-1000
|
||||
ATI IXP200, IXP300, IXP400
|
||||
ATI IXP200, IXP300, IXP400, SB600
|
||||
SMSC Victory66
|
||||
|
||||
Note: we assume there can only be one device, with one SMBus interface.
|
||||
@@ -438,6 +438,7 @@ static struct i2c_adapter piix4_adapter = {
|
||||
#define PCI_DEVICE_ID_ATI_IXP200_SMBUS 0x4353
|
||||
#define PCI_DEVICE_ID_ATI_IXP300_SMBUS 0x4363
|
||||
#define PCI_DEVICE_ID_ATI_IXP400_SMBUS 0x4372
|
||||
#define PCI_DEVICE_ID_ATI_IXP600_SMBUS 0x4385
|
||||
|
||||
#ifndef PCI_DEVICE_ID_SERVERWORKS_CSB6
|
||||
#define PCI_DEVICE_ID_SERVERWORKS_CSB6 0x0203
|
||||
@@ -474,6 +475,13 @@ static struct pci_device_id piix4_ids[] __devinitdata = {
|
||||
.subdevice = PCI_ANY_ID,
|
||||
.driver_data = 0,
|
||||
},
|
||||
{
|
||||
.vendor = PCI_VENDOR_ID_ATI,
|
||||
.device = PCI_DEVICE_ID_ATI_IXP600_SMBUS,
|
||||
.subvendor = PCI_ANY_ID,
|
||||
.subdevice = PCI_ANY_ID,
|
||||
.driver_data = 0,
|
||||
},
|
||||
{
|
||||
.vendor = PCI_VENDOR_ID_SERVERWORKS,
|
||||
.device = PCI_DEVICE_ID_SERVERWORKS_OSB4,
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
Copyright (c) 1998 - 2002 Frodo Looijaard <frodol@dds.nl>,
|
||||
Philip Edelbrock <phil@netroedge.com>, Kyösti Mälkki <kmalkki@cc.hut.fi>,
|
||||
Mark D. Studebaker <mdsxyz123@yahoo.com>
|
||||
Copyright (C) 2005 Jean Delvare <khali@linux-fr.org>
|
||||
Copyright (C) 2005 - 2007 Jean Delvare <khali@linux-fr.org>
|
||||
|
||||
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
|
||||
@@ -36,6 +36,7 @@
|
||||
VT8237R 0x3227 yes
|
||||
VT8237A 0x3337 yes
|
||||
VT8251 0x3287 yes
|
||||
CX700 0x8324 yes
|
||||
|
||||
Note: we assume there can only be one device, with one SMBus interface.
|
||||
*/
|
||||
@@ -63,14 +64,18 @@
|
||||
#ifndef PCI_DEVICE_ID_VIA_8237
|
||||
#define PCI_DEVICE_ID_VIA_8237 0x3227
|
||||
#endif
|
||||
/* 8237A is undefined as for the kernel 2.4.33 */
|
||||
/* 8237A is undefined */
|
||||
#ifndef PCI_DEVICE_ID_VIA_8237A
|
||||
#define PCI_DEVICE_ID_VIA_8237A 0x3337
|
||||
#endif
|
||||
/* 8251 is undefined as for the kernel 2.4.33 */
|
||||
/* 8251 is undefined */
|
||||
#ifndef PCI_DEVICE_ID_VIA_8251
|
||||
#define PCI_DEVICE_ID_VIA_8251 0x3287
|
||||
#endif
|
||||
/* CX700 is undefined */
|
||||
#ifndef PCI_DEVICE_ID_VIA_CX700
|
||||
#define PCI_DEVICE_ID_VIA_CX700 0x8324
|
||||
#endif
|
||||
|
||||
#define SMBBA1 0x90
|
||||
#define SMBBA2 0x80
|
||||
@@ -418,6 +423,7 @@ found:
|
||||
dev_dbg(pdev, "VT596_smba = 0x%X\n", vt596_smba);
|
||||
|
||||
switch (id->device) {
|
||||
case PCI_DEVICE_ID_VIA_CX700:
|
||||
case PCI_DEVICE_ID_VIA_8251:
|
||||
case PCI_DEVICE_ID_VIA_8237:
|
||||
case PCI_DEVICE_ID_VIA_8237A:
|
||||
@@ -516,6 +522,13 @@ static struct pci_device_id vt596_ids[] __initdata = {
|
||||
.subdevice = PCI_ANY_ID,
|
||||
.driver_data = SMBBA3
|
||||
},
|
||||
{
|
||||
.vendor = PCI_VENDOR_ID_VIA,
|
||||
.device = PCI_DEVICE_ID_VIA_CX700,
|
||||
.subvendor = PCI_ANY_ID,
|
||||
.subdevice = PCI_ANY_ID,
|
||||
.driver_data = SMBBA3
|
||||
},
|
||||
{ 0, }
|
||||
};
|
||||
|
||||
|
||||
Reference in new issue
Block a user