Commit bef87257 authored by Greg Kroah-Hartman's avatar Greg Kroah-Hartman

Merge kroah.com:/home/greg/linux/BK/bleed-2.5

into kroah.com:/home/greg/linux/BK/i2c-2.6
parents 01477f1c ed5b010d
......@@ -92,10 +92,7 @@ Technical changes:
i2c_get_clientdata(client) instead.
* [Interface] Init function should not print anything. Make sure
there is a MODULE_LICENSE() line. MODULE_PARM() is replaced
by module_param(). Note that module_param has a third parameter,
that you should set to 0 by default. See include/linux/moduleparam.h
for details.
there is a MODULE_LICENSE() line.
Coding policy:
......
......@@ -67,12 +67,13 @@ static struct adapter_parm adapter_parm[] = {
.getsda = { 0x40, STAT, 1 },
.getscl = { 0x08, STAT, 1 },
},
/* type 4: ADM 1032 evaluation board */
/* type 4: ADM1025 and ADM1032 evaluation boards */
{
.setsda = { 0x02, DATA, 1 },
.setscl = { 0x01, DATA, 1 },
.getsda = { 0x10, STAT, 1 },
.init = { 0xf0, DATA, 0 },
.init = { 0xf0, DATA, 0 }, /* ADM1025 doesn't need this,
but it doesn't hurt */
},
};
......@@ -84,4 +85,4 @@ MODULE_PARM_DESC(type,
" 1 = home brew teletext adapter\n"
" 2 = Velleman K8000 adapter\n"
" 3 = ELV adapter\n"
" 4 = ADM 1032 evalulation board\n");
" 4 = ADM1025 and ADM1032 evaluation boards\n");
......@@ -184,8 +184,8 @@ static void i2c_parport_attach (struct parport *port)
return;
}
/* reset hardware to sane state */
bit_lp_setsda(port, 1);
bit_lp_setscl(port, 1);
adapter->bit_lp_data.setsda(port, 1);
adapter->bit_lp_data.setscl(port, 1);
parport_release(adapter->pdev);
if (i2c_bit_add_bus(&adapter->adapter) < 0) {
......
......@@ -68,6 +68,9 @@ struct sd {
#define SMBSLVEVT (0xA + piix4_smba)
#define SMBSLVDAT (0xC + piix4_smba)
/* count for request_region */
#define SMBIOSIZE 8
/* PCI Address Constants */
#define SMBBA 0x090
#define SMBHSTCFG 0x0D2
......@@ -112,14 +115,13 @@ MODULE_PARM_DESC(fix_hstcfg,
static int piix4_transaction(void);
static unsigned short piix4_smba = 0;
static struct i2c_adapter piix4_adapter;
/*
* Get DMI information.
*/
static int ibm_dmi_probe(void)
static int __devinit ibm_dmi_probe(void)
{
#ifdef CONFIG_X86
extern int is_unsafe_smbus;
......@@ -129,9 +131,9 @@ static int ibm_dmi_probe(void)
#endif
}
static int piix4_setup(struct pci_dev *PIIX4_dev, const struct pci_device_id *id)
static int __devinit piix4_setup(struct pci_dev *PIIX4_dev,
const struct pci_device_id *id)
{
int error_return = 0;
unsigned char temp;
/* match up the function */
......@@ -144,8 +146,7 @@ static int piix4_setup(struct pci_dev *PIIX4_dev, const struct pci_device_id *id
dev_err(&PIIX4_dev->dev, "IBM Laptop detected; this module "
"may corrupt your serial eeprom! Refusing to load "
"module!\n");
error_return = -EPERM;
goto END;
return -EPERM;
}
/* Determine the address of the SMBus areas */
......@@ -163,11 +164,10 @@ static int piix4_setup(struct pci_dev *PIIX4_dev, const struct pci_device_id *id
}
}
if (!request_region(piix4_smba, 8, "piix4-smbus")) {
if (!request_region(piix4_smba, SMBIOSIZE, "piix4-smbus")) {
dev_err(&PIIX4_dev->dev, "SMB region 0x%x already in use!\n",
piix4_smba);
error_return = -ENODEV;
goto END;
return -ENODEV;
}
pci_read_config_byte(PIIX4_dev, SMBHSTCFG, &temp);
......@@ -214,8 +214,9 @@ static int piix4_setup(struct pci_dev *PIIX4_dev, const struct pci_device_id *id
} else {
dev_err(&PIIX4_dev->dev,
"Host SMBus controller not enabled!\n");
error_return = -ENODEV;
goto END;
release_region(piix4_smba, SMBIOSIZE);
piix4_smba = 0;
return -ENODEV;
}
}
......@@ -231,8 +232,7 @@ static int piix4_setup(struct pci_dev *PIIX4_dev, const struct pci_device_id *id
dev_dbg(&PIIX4_dev->dev, "SMBREV = 0x%X\n", temp);
dev_dbg(&PIIX4_dev->dev, "SMBA = 0x%X\n", piix4_smba);
END:
return error_return;
return 0;
}
/* Another internally used function */
......@@ -465,7 +465,8 @@ static struct pci_device_id piix4_ids[] = {
{ 0, }
};
static int __devinit piix4_probe(struct pci_dev *dev, const struct pci_device_id *id)
static int __devinit piix4_probe(struct pci_dev *dev,
const struct pci_device_id *id)
{
int retval;
......@@ -479,17 +480,24 @@ static int __devinit piix4_probe(struct pci_dev *dev, const struct pci_device_id
snprintf(piix4_adapter.name, I2C_NAME_SIZE,
"SMBus PIIX4 adapter at %04x", piix4_smba);
retval = i2c_add_adapter(&piix4_adapter);
if ((retval = i2c_add_adapter(&piix4_adapter))) {
dev_err(&dev->dev, "Couldn't register adapter!\n");
release_region(piix4_smba, SMBIOSIZE);
piix4_smba = 0;
}
return retval;
}
static void __devexit piix4_remove(struct pci_dev *dev)
{
if (piix4_smba) {
i2c_del_adapter(&piix4_adapter);
release_region(piix4_smba, SMBIOSIZE);
piix4_smba = 0;
}
}
static struct pci_driver piix4_driver = {
.name = "piix4-smbus",
.id_table = piix4_ids,
......@@ -502,15 +510,13 @@ static int __init i2c_piix4_init(void)
return pci_module_init(&piix4_driver);
}
static void __exit i2c_piix4_exit(void)
{
pci_unregister_driver(&piix4_driver);
release_region(piix4_smba, 8);
}
MODULE_AUTHOR
("Frodo Looijaard <frodol@dds.nl> and Philip Edelbrock <phil@netroedge.com>");
MODULE_AUTHOR("Frodo Looijaard <frodol@dds.nl> and "
"Philip Edelbrock <phil@netroedge.com>");
MODULE_DESCRIPTION("PIIX4 SMBus driver");
MODULE_LICENSE("GPL");
......
......@@ -104,9 +104,9 @@ static ssize_t set_##value(struct device *dev, const char *buf, size_t count) \
set(temp_max, LM75_REG_TEMP_OS);
set(temp_hyst, LM75_REG_TEMP_HYST);
static DEVICE_ATTR(temp_max, S_IWUSR | S_IRUGO, show_temp_max, set_temp_max);
static DEVICE_ATTR(temp_hyst, S_IWUSR | S_IRUGO, show_temp_hyst, set_temp_hyst);
static DEVICE_ATTR(temp_input, S_IRUGO, show_temp_input, NULL);
static DEVICE_ATTR(temp_max1, S_IWUSR | S_IRUGO, show_temp_max, set_temp_max);
static DEVICE_ATTR(temp_hyst1, S_IWUSR | S_IRUGO, show_temp_hyst, set_temp_hyst);
static DEVICE_ATTR(temp_input1, S_IRUGO, show_temp_input, NULL);
static int lm75_attach_adapter(struct i2c_adapter *adapter)
{
......@@ -197,9 +197,9 @@ static int lm75_detect(struct i2c_adapter *adapter, int address, int kind)
lm75_init_client(new_client);
/* Register sysfs hooks */
device_create_file(&new_client->dev, &dev_attr_temp_max);
device_create_file(&new_client->dev, &dev_attr_temp_hyst);
device_create_file(&new_client->dev, &dev_attr_temp_input);
device_create_file(&new_client->dev, &dev_attr_temp_max1);
device_create_file(&new_client->dev, &dev_attr_temp_hyst1);
device_create_file(&new_client->dev, &dev_attr_temp_input1);
return 0;
......
......@@ -369,10 +369,10 @@ static ssize_t set_temp_hyst(struct device *dev, const char *buf, size_t count)
return count;
}
static DEVICE_ATTR(temp_input, S_IRUGO, show_temp, NULL)
static DEVICE_ATTR(temp_max, S_IRUGO | S_IWUSR,
static DEVICE_ATTR(temp_input1, S_IRUGO, show_temp, NULL)
static DEVICE_ATTR(temp_max1, S_IRUGO | S_IWUSR,
show_temp_over, set_temp_over)
static DEVICE_ATTR(temp_hyst, S_IRUGO | S_IWUSR,
static DEVICE_ATTR(temp_hyst1, S_IRUGO | S_IWUSR,
show_temp_hyst, set_temp_hyst)
/* 3 Fans */
......@@ -678,9 +678,9 @@ int lm78_detect(struct i2c_adapter *adapter, int address, int kind)
device_create_file(&new_client->dev, &dev_attr_in_input6);
device_create_file(&new_client->dev, &dev_attr_in_min6);
device_create_file(&new_client->dev, &dev_attr_in_max6);
device_create_file(&new_client->dev, &dev_attr_temp_input);
device_create_file(&new_client->dev, &dev_attr_temp_max);
device_create_file(&new_client->dev, &dev_attr_temp_hyst);
device_create_file(&new_client->dev, &dev_attr_temp_input1);
device_create_file(&new_client->dev, &dev_attr_temp_max1);
device_create_file(&new_client->dev, &dev_attr_temp_hyst1);
device_create_file(&new_client->dev, &dev_attr_fan_input1);
device_create_file(&new_client->dev, &dev_attr_fan_min1);
device_create_file(&new_client->dev, &dev_attr_fan_div1);
......
......@@ -48,9 +48,6 @@ static unsigned int normal_isa_range[] = { I2C_CLIENT_ISA_END };
/* Insmod parameters */
SENSORS_INSMOD_4(lm85b, lm85c, adm1027, adt7463);
/* Enable debug if true */
static int lm85debug = 0;
/* The LM85 registers */
#define LM85_REG_IN(nr) (0x20 + (nr))
......@@ -802,19 +799,15 @@ int lm85_detect(struct i2c_adapter *adapter, int address,
company = lm85_read_value(new_client, LM85_REG_COMPANY);
verstep = lm85_read_value(new_client, LM85_REG_VERSTEP);
if (lm85debug) {
printk("lm85: Detecting device at %d,0x%02x with"
dev_dbg(&adapter->dev, "Detecting device at %d,0x%02x with"
" COMPANY: 0x%02x and VERSTEP: 0x%02x\n",
i2c_adapter_id(new_client->adapter), new_client->addr,
company, verstep);
}
/* If auto-detecting, Determine the chip type. */
if (kind <= 0) {
if (lm85debug) {
printk("lm85: Autodetecting device at %d,0x%02x ...\n",
dev_dbg(&adapter->dev, "Autodetecting device at %d,0x%02x ...\n",
i2c_adapter_id(adapter), address );
}
if( company == LM85_COMPANY_NATIONAL
&& verstep == LM85_VERSTEP_LM85C ) {
kind = lm85c ;
......@@ -823,8 +816,8 @@ int lm85_detect(struct i2c_adapter *adapter, int address,
kind = lm85b ;
} else if( company == LM85_COMPANY_NATIONAL
&& (verstep & 0xf0) == LM85_VERSTEP_GENERIC ) {
printk("lm85: Unrecgonized version/stepping 0x%02x"
" Defaulting to LM85.\n", verstep );
dev_err(&adapter->dev, "Unrecgonized version/stepping 0x%02x"
" Defaulting to LM85.\n", verstep);
kind = any_chip ;
} else if( company == LM85_COMPANY_ANALOG_DEV
&& verstep == LM85_VERSTEP_ADM1027 ) {
......@@ -834,19 +827,17 @@ int lm85_detect(struct i2c_adapter *adapter, int address,
kind = adt7463 ;
} else if( company == LM85_COMPANY_ANALOG_DEV
&& (verstep & 0xf0) == LM85_VERSTEP_GENERIC ) {
printk("lm85: Unrecgonized version/stepping 0x%02x"
" Defaulting to ADM1027.\n", verstep );
dev_err(&adapter->dev, "Unrecgonized version/stepping 0x%02x"
" Defaulting to ADM1027.\n", verstep);
kind = adm1027 ;
} else if( kind == 0 && (verstep & 0xf0) == 0x60) {
printk("lm85: Generic LM85 Version 6 detected\n");
dev_err(&adapter->dev, "Generic LM85 Version 6 detected\n");
/* Leave kind as "any_chip" */
} else {
if (lm85debug) {
printk("lm85: Autodetection failed\n");
}
dev_dbg(&adapter->dev, "Autodetection failed\n");
/* Not an LM85 ... */
if( kind == 0 ) { /* User used force=x,y */
printk("lm85: Generic LM85 Version 6 not"
dev_err(&adapter->dev, "Generic LM85 Version 6 not"
" found at %d,0x%02x. Try force_lm85c.\n",
i2c_adapter_id(adapter), address );
}
......@@ -879,12 +870,10 @@ int lm85_detect(struct i2c_adapter *adapter, int address,
data->valid = 0;
init_MUTEX(&data->update_lock);
if (lm85debug) {
printk("lm85: Assigning ID %d to %s at %d,0x%02x\n",
dev_dbg(&adapter->dev, "Assigning ID %d to %s at %d,0x%02x\n",
new_client->id, new_client->name,
i2c_adapter_id(new_client->adapter),
new_client->addr);
}
/* Tell the I2C layer a new client has arrived */
if ((err = i2c_attach_client(new_client)))
......@@ -1021,31 +1010,24 @@ void lm85_init_client(struct i2c_client *client)
int value;
struct lm85_data *data = i2c_get_clientdata(client);
if (lm85debug) {
printk("lm85(%d): Initializing device\n", client->id);
}
dev_dbg(&client->dev, "Initializing device\n");
/* Warn if part was not "READY" */
value = lm85_read_value(client, LM85_REG_CONFIG);
if (lm85debug) {
printk("lm85(%d): LM85_REG_CONFIG is: 0x%02x\n", client->id, value );
}
dev_dbg(&client->dev, "LM85_REG_CONFIG is: 0x%02x\n", value);
if( value & 0x02 ) {
printk("lm85(%d): Client (%d,0x%02x) config is locked.\n",
client->id,
dev_err(&client->dev, "Client (%d,0x%02x) config is locked.\n",
i2c_adapter_id(client->adapter), client->addr );
};
if( ! (value & 0x04) ) {
printk("lm85(%d): Client (%d,0x%02x) is not ready.\n",
client->id,
dev_err(&client->dev, "Client (%d,0x%02x) is not ready.\n",
i2c_adapter_id(client->adapter), client->addr );
};
if( value & 0x10
&& ( data->type == adm1027
|| data->type == adt7463 ) ) {
printk("lm85(%d): Client (%d,0x%02x) VxI mode is set. "
dev_err(&client->dev, "Client (%d,0x%02x) VxI mode is set. "
"Please report this to the lm85 maintainer.\n",
client->id,
i2c_adapter_id(client->adapter), client->addr );
};
......@@ -1061,11 +1043,8 @@ void lm85_init_client(struct i2c_client *client)
value = lm85_read_value(client, LM85_REG_CONFIG);
/* Try to clear LOCK, Set START, save everything else */
value = (value & ~ 0x02) | 0x01 ;
if (lm85debug) {
printk("lm85(%d): Setting CONFIG to: 0x%02x\n", client->id, value );
}
dev_dbg(&client->dev, "Setting CONFIG to: 0x%02x\n", value);
lm85_write_value(client, LM85_REG_CONFIG, value);
}
void lm85_update_client(struct i2c_client *client)
......@@ -1078,10 +1057,8 @@ void lm85_update_client(struct i2c_client *client)
if ( !data->valid ||
(jiffies - data->last_reading > LM85_DATA_INTERVAL ) ) {
/* Things that change quickly */
dev_dbg(&client->dev, "Reading sensor values\n");
if (lm85debug) {
printk("lm85(%d): Reading sensor values\n", client->id);
}
/* Have to read extended bits first to "freeze" the
* more significant bits that are read later.
*/
......@@ -1125,10 +1102,8 @@ void lm85_update_client(struct i2c_client *client)
if ( !data->valid ||
(jiffies - data->last_config > LM85_CONFIG_INTERVAL) ) {
/* Things that don't change often */
dev_dbg(&client->dev, "Reading config values\n");
if (lm85debug) {
printk("lm85(%d): Reading config values\n", client->id);
}
for (i = 0; i <= 4; ++i) {
data->in_min[i] =
lm85_read_value(client, LM85_REG_IN_MIN(i));
......@@ -1234,8 +1209,6 @@ static void __exit sm_lm85_exit(void)
MODULE_LICENSE("GPL");
MODULE_AUTHOR("Philip Pokorny <ppokorny@penguincomputing.com>, Margit Schubert-While <margitsw@t-online.de>");
MODULE_DESCRIPTION("LM85-B, LM85-C driver");
MODULE_PARM(lm85debug, "i");
MODULE_PARM_DESC(lm85debug, "Enable debugging statements");
module_init(sm_lm85_init);
module_exit(sm_lm85_exit);
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment