diff options
| -rw-r--r-- | Documentation/i2c/busses/i2c-viapro | 6 | ||||
| -rw-r--r-- | drivers/i2c/busses/i2c-viapro.c | 27 |
2 files changed, 16 insertions, 17 deletions
diff --git a/Documentation/i2c/busses/i2c-viapro b/Documentation/i2c/busses/i2c-viapro index 9363b8bd6109..16775663b9f5 100644 --- a/Documentation/i2c/busses/i2c-viapro +++ b/Documentation/i2c/busses/i2c-viapro | |||
| @@ -7,12 +7,10 @@ Supported adapters: | |||
| 7 | * VIA Technologies, Inc. VT82C686A/B | 7 | * VIA Technologies, Inc. VT82C686A/B |
| 8 | Datasheet: Sometimes available at the VIA website | 8 | Datasheet: Sometimes available at the VIA website |
| 9 | 9 | ||
| 10 | * VIA Technologies, Inc. VT8231, VT8233, VT8233A, VT8235, VT8237 | 10 | * VIA Technologies, Inc. VT8231, VT8233, VT8233A, VT8235, VT8237R |
| 11 | Datasheet: available on request from Via | 11 | Datasheet: available on request from VIA |
| 12 | 12 | ||
| 13 | Authors: | 13 | Authors: |
| 14 | Frodo Looijaard <frodol@dds.nl>, | ||
| 15 | Philip Edelbrock <phil@netroedge.com>, | ||
| 16 | Kyösti Mälkki <kmalkki@cc.hut.fi>, | 14 | Kyösti Mälkki <kmalkki@cc.hut.fi>, |
| 17 | Mark D. Studebaker <mdsxyz123@yahoo.com>, | 15 | Mark D. Studebaker <mdsxyz123@yahoo.com>, |
| 18 | Jean Delvare <khali@linux-fr.org> | 16 | Jean Delvare <khali@linux-fr.org> |
diff --git a/drivers/i2c/busses/i2c-viapro.c b/drivers/i2c/busses/i2c-viapro.c index c9366b504833..a2237d4b2cf2 100644 --- a/drivers/i2c/busses/i2c-viapro.c +++ b/drivers/i2c/busses/i2c-viapro.c | |||
| @@ -142,19 +142,18 @@ static int vt596_transaction(u8 size) | |||
| 142 | /* Make sure the SMBus host is ready to start transmitting */ | 142 | /* Make sure the SMBus host is ready to start transmitting */ |
| 143 | if ((temp = inb_p(SMBHSTSTS)) & 0x1F) { | 143 | if ((temp = inb_p(SMBHSTSTS)) & 0x1F) { |
| 144 | dev_dbg(&vt596_adapter.dev, "SMBus busy (0x%02x). " | 144 | dev_dbg(&vt596_adapter.dev, "SMBus busy (0x%02x). " |
| 145 | "Resetting... ", temp); | 145 | "Resetting...\n", temp); |
| 146 | 146 | ||
| 147 | outb_p(temp, SMBHSTSTS); | 147 | outb_p(temp, SMBHSTSTS); |
| 148 | if ((temp = inb_p(SMBHSTSTS)) & 0x1F) { | 148 | if ((temp = inb_p(SMBHSTSTS)) & 0x1F) { |
| 149 | printk("Failed! (0x%02x)\n", temp); | 149 | dev_err(&vt596_adapter.dev, "SMBus reset failed! " |
| 150 | "(0x%02x)\n", temp); | ||
| 150 | return -1; | 151 | return -1; |
| 151 | } else { | ||
| 152 | printk("Successful!\n"); | ||
| 153 | } | 152 | } |
| 154 | } | 153 | } |
| 155 | 154 | ||
| 156 | /* Start the transaction by setting bit 6 */ | 155 | /* Start the transaction by setting bit 6 */ |
| 157 | outb_p(0x40 | (size & 0x3C), SMBHSTCNT); | 156 | outb_p(0x40 | size, SMBHSTCNT); |
| 158 | 157 | ||
| 159 | /* We will always wait for a fraction of a second */ | 158 | /* We will always wait for a fraction of a second */ |
| 160 | do { | 159 | do { |
| @@ -171,7 +170,7 @@ static int vt596_transaction(u8 size) | |||
| 171 | if (temp & 0x10) { | 170 | if (temp & 0x10) { |
| 172 | result = -1; | 171 | result = -1; |
| 173 | dev_err(&vt596_adapter.dev, "Transaction failed (0x%02x)\n", | 172 | dev_err(&vt596_adapter.dev, "Transaction failed (0x%02x)\n", |
| 174 | inb_p(SMBHSTCNT) & 0x3C); | 173 | size); |
| 175 | } | 174 | } |
| 176 | 175 | ||
| 177 | if (temp & 0x08) { | 176 | if (temp & 0x08) { |
| @@ -180,11 +179,13 @@ static int vt596_transaction(u8 size) | |||
| 180 | } | 179 | } |
| 181 | 180 | ||
| 182 | if (temp & 0x04) { | 181 | if (temp & 0x04) { |
| 182 | int read = inb_p(SMBHSTADD) & 0x01; | ||
| 183 | result = -1; | 183 | result = -1; |
| 184 | /* Quick commands are used to probe for chips, so | 184 | /* The quick and receive byte commands are used to probe |
| 185 | errors are expected, and we don't want to frighten the | 185 | for chips, so errors are expected, and we don't want |
| 186 | user. */ | 186 | to frighten the user. */ |
| 187 | if ((inb_p(SMBHSTCNT) & 0x3C) != VT596_QUICK) | 187 | if (!((size == VT596_QUICK && !read) || |
| 188 | (size == VT596_BYTE && read))) | ||
| 188 | dev_err(&vt596_adapter.dev, "Transaction error!\n"); | 189 | dev_err(&vt596_adapter.dev, "Transaction error!\n"); |
| 189 | } | 190 | } |
| 190 | 191 | ||
| @@ -462,9 +463,9 @@ static void __exit i2c_vt596_exit(void) | |||
| 462 | } | 463 | } |
| 463 | } | 464 | } |
| 464 | 465 | ||
| 465 | MODULE_AUTHOR( | 466 | MODULE_AUTHOR("Kyosti Malkki <kmalkki@cc.hut.fi>, " |
| 466 | "Frodo Looijaard <frodol@dds.nl> and " | 467 | "Mark D. Studebaker <mdsxyz123@yahoo.com> and " |
| 467 | "Philip Edelbrock <phil@netroedge.com>"); | 468 | "Jean Delvare <khali@linux-fr.org>"); |
| 468 | MODULE_DESCRIPTION("vt82c596 SMBus driver"); | 469 | MODULE_DESCRIPTION("vt82c596 SMBus driver"); |
| 469 | MODULE_LICENSE("GPL"); | 470 | MODULE_LICENSE("GPL"); |
| 470 | 471 | ||
