提交 969780f8 编写于 作者: L Linus Torvalds

Merge master.kernel.org:/pub/scm/linux/kernel/git/gregkh/i2c-2.6

...@@ -7,12 +7,10 @@ Supported adapters: ...@@ -7,12 +7,10 @@ Supported adapters:
* VIA Technologies, Inc. VT82C686A/B * VIA Technologies, Inc. VT82C686A/B
Datasheet: Sometimes available at the VIA website Datasheet: Sometimes available at the VIA website
* VIA Technologies, Inc. VT8231, VT8233, VT8233A, VT8235, VT8237 * VIA Technologies, Inc. VT8231, VT8233, VT8233A, VT8235, VT8237R
Datasheet: available on request from Via Datasheet: available on request from VIA
Authors: Authors:
Frodo Looijaard <frodol@dds.nl>,
Philip Edelbrock <phil@netroedge.com>,
Kysti Mlkki <kmalkki@cc.hut.fi>, Kysti Mlkki <kmalkki@cc.hut.fi>,
Mark D. Studebaker <mdsxyz123@yahoo.com>, Mark D. Studebaker <mdsxyz123@yahoo.com>,
Jean Delvare <khali@linux-fr.org> Jean Delvare <khali@linux-fr.org>
......
...@@ -412,7 +412,7 @@ For now, you can ignore the `flags' parameter. It is there for future use. ...@@ -412,7 +412,7 @@ For now, you can ignore the `flags' parameter. It is there for future use.
release_region(address,FOO_EXTENT); release_region(address,FOO_EXTENT);
/* SENSORS ONLY END */ /* SENSORS ONLY END */
ERROR1: ERROR1:
kfree(new_client); kfree(data);
ERROR0: ERROR0:
return err; return err;
} }
...@@ -443,7 +443,7 @@ much simpler than the attachment code, fortunately! ...@@ -443,7 +443,7 @@ much simpler than the attachment code, fortunately!
release_region(client->addr,LM78_EXTENT); release_region(client->addr,LM78_EXTENT);
/* HYBRID SENSORS CHIP ONLY END */ /* HYBRID SENSORS CHIP ONLY END */
kfree(data); kfree(i2c_get_clientdata(client));
return 0; return 0;
} }
......
...@@ -180,11 +180,10 @@ superio_exit(void) ...@@ -180,11 +180,10 @@ superio_exit(void)
#define W83781D_REG_BANK 0x4E #define W83781D_REG_BANK 0x4E
#define W83781D_REG_CONFIG 0x40 #define W83781D_REG_CONFIG 0x40
#define W83781D_REG_ALARM1 0x41 #define W83781D_REG_ALARM1 0x459
#define W83781D_REG_ALARM2 0x42 #define W83781D_REG_ALARM2 0x45A
#define W83781D_REG_ALARM3 0x450 #define W83781D_REG_ALARM3 0x45B
#define W83781D_REG_IRQ 0x4C
#define W83781D_REG_BEEP_CONFIG 0x4D #define W83781D_REG_BEEP_CONFIG 0x4D
#define W83781D_REG_BEEP_INTS1 0x56 #define W83781D_REG_BEEP_INTS1 0x56
#define W83781D_REG_BEEP_INTS2 0x57 #define W83781D_REG_BEEP_INTS2 0x57
...@@ -1370,13 +1369,6 @@ static void w83627hf_init_client(struct i2c_client *client) ...@@ -1370,13 +1369,6 @@ static void w83627hf_init_client(struct i2c_client *client)
W83781D_REG_TEMP3_CONFIG, tmp & 0xfe); W83781D_REG_TEMP3_CONFIG, tmp & 0xfe);
} }
} }
/* enable comparator mode for temp2 and temp3 so
alarm indication will work correctly */
i = w83627hf_read_value(client, W83781D_REG_IRQ);
if (!(i & 0x40))
w83627hf_write_value(client, W83781D_REG_IRQ,
i | 0x40);
} }
/* Start monitoring */ /* Start monitoring */
...@@ -1400,7 +1392,7 @@ static struct w83627hf_data *w83627hf_update_device(struct device *dev) ...@@ -1400,7 +1392,7 @@ static struct w83627hf_data *w83627hf_update_device(struct device *dev)
/* skip missing sensors */ /* skip missing sensors */
if (((data->type == w83697hf) && (i == 1)) || if (((data->type == w83697hf) && (i == 1)) ||
((data->type == w83627thf || data->type == w83637hf) ((data->type == w83627thf || data->type == w83637hf)
&& (i == 4 || i == 5))) && (i == 5 || i == 6)))
continue; continue;
data->in[i] = data->in[i] =
w83627hf_read_value(client, W83781D_REG_IN(i)); w83627hf_read_value(client, W83781D_REG_IN(i));
......
...@@ -142,19 +142,18 @@ static int vt596_transaction(u8 size) ...@@ -142,19 +142,18 @@ static int vt596_transaction(u8 size)
/* Make sure the SMBus host is ready to start transmitting */ /* Make sure the SMBus host is ready to start transmitting */
if ((temp = inb_p(SMBHSTSTS)) & 0x1F) { if ((temp = inb_p(SMBHSTSTS)) & 0x1F) {
dev_dbg(&vt596_adapter.dev, "SMBus busy (0x%02x). " dev_dbg(&vt596_adapter.dev, "SMBus busy (0x%02x). "
"Resetting... ", temp); "Resetting...\n", temp);
outb_p(temp, SMBHSTSTS); outb_p(temp, SMBHSTSTS);
if ((temp = inb_p(SMBHSTSTS)) & 0x1F) { if ((temp = inb_p(SMBHSTSTS)) & 0x1F) {
printk("Failed! (0x%02x)\n", temp); dev_err(&vt596_adapter.dev, "SMBus reset failed! "
"(0x%02x)\n", temp);
return -1; return -1;
} else {
printk("Successful!\n");
} }
} }
/* Start the transaction by setting bit 6 */ /* Start the transaction by setting bit 6 */
outb_p(0x40 | (size & 0x3C), SMBHSTCNT); outb_p(0x40 | size, SMBHSTCNT);
/* We will always wait for a fraction of a second */ /* We will always wait for a fraction of a second */
do { do {
...@@ -171,7 +170,7 @@ static int vt596_transaction(u8 size) ...@@ -171,7 +170,7 @@ static int vt596_transaction(u8 size)
if (temp & 0x10) { if (temp & 0x10) {
result = -1; result = -1;
dev_err(&vt596_adapter.dev, "Transaction failed (0x%02x)\n", dev_err(&vt596_adapter.dev, "Transaction failed (0x%02x)\n",
inb_p(SMBHSTCNT) & 0x3C); size);
} }
if (temp & 0x08) { if (temp & 0x08) {
...@@ -180,11 +179,13 @@ static int vt596_transaction(u8 size) ...@@ -180,11 +179,13 @@ static int vt596_transaction(u8 size)
} }
if (temp & 0x04) { if (temp & 0x04) {
int read = inb_p(SMBHSTADD) & 0x01;
result = -1; result = -1;
/* Quick commands are used to probe for chips, so /* The quick and receive byte commands are used to probe
errors are expected, and we don't want to frighten the for chips, so errors are expected, and we don't want
user. */ to frighten the user. */
if ((inb_p(SMBHSTCNT) & 0x3C) != VT596_QUICK) if (!((size == VT596_QUICK && !read) ||
(size == VT596_BYTE && read)))
dev_err(&vt596_adapter.dev, "Transaction error!\n"); dev_err(&vt596_adapter.dev, "Transaction error!\n");
} }
...@@ -462,9 +463,9 @@ static void __exit i2c_vt596_exit(void) ...@@ -462,9 +463,9 @@ static void __exit i2c_vt596_exit(void)
} }
} }
MODULE_AUTHOR( MODULE_AUTHOR("Kyosti Malkki <kmalkki@cc.hut.fi>, "
"Frodo Looijaard <frodol@dds.nl> and " "Mark D. Studebaker <mdsxyz123@yahoo.com> and "
"Philip Edelbrock <phil@netroedge.com>"); "Jean Delvare <khali@linux-fr.org>");
MODULE_DESCRIPTION("vt82c596 SMBus driver"); MODULE_DESCRIPTION("vt82c596 SMBus driver");
MODULE_LICENSE("GPL"); MODULE_LICENSE("GPL");
......
...@@ -164,9 +164,9 @@ static int ds1337_set_datetime(struct i2c_client *client, struct rtc_time *dt) ...@@ -164,9 +164,9 @@ static int ds1337_set_datetime(struct i2c_client *client, struct rtc_time *dt)
buf[1] = BIN2BCD(dt->tm_sec); buf[1] = BIN2BCD(dt->tm_sec);
buf[2] = BIN2BCD(dt->tm_min); buf[2] = BIN2BCD(dt->tm_min);
buf[3] = BIN2BCD(dt->tm_hour); buf[3] = BIN2BCD(dt->tm_hour);
buf[4] = BIN2BCD(dt->tm_wday) + 1; buf[4] = BIN2BCD(dt->tm_wday + 1);
buf[5] = BIN2BCD(dt->tm_mday); buf[5] = BIN2BCD(dt->tm_mday);
buf[6] = BIN2BCD(dt->tm_mon) + 1; buf[6] = BIN2BCD(dt->tm_mon + 1);
val = dt->tm_year; val = dt->tm_year;
if (val >= 100) { if (val >= 100) {
val -= 100; val -= 100;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册