Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 8750197f authored by Jean Delvare's avatar Jean Delvare Committed by Greg Kroah-Hartman
Browse files

[PATCH] i2c-viapro: Some adjustments



The big i2c-viapro SMBus driver update which went into 2.6.14-git1
introduced a few minor issues. Nothing critical, but I would like a
few adjustments to be merged in to fix the following problems:

* VIA should not be spelled Via.
* Frodo Looijaard and Philip Edelbrock did not write the i2c-viapro
  driver.
* When debugging is disabled, half of messages would be logged.
* Drop an unneeded masking.
* Some port reads can be avoided now that the transaction size is
  passed as a parameter to vt596_transaction().
* SMBus Receive Byte transactions are used for probing too (for
  EEPROMs), so hide errors on these too.

Signed-off-by: default avatarJean Delvare <khali@linux-fr.org>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
parent 4a1c4447
Loading
Loading
Loading
Loading
+2 −4
Original line number Diff line number Diff line
@@ -7,12 +7,10 @@ Supported adapters:
  * VIA Technologies, Inc. VT82C686A/B
    Datasheet: Sometimes available at the VIA website

  * VIA Technologies, Inc. VT8231, VT8233, VT8233A, VT8235, VT8237
    Datasheet: available on request from Via
  * VIA Technologies, Inc. VT8231, VT8233, VT8233A, VT8235, VT8237R
    Datasheet: available on request from VIA

Authors:
	Frodo Looijaard <frodol@dds.nl>,
	Philip Edelbrock <phil@netroedge.com>,
	Kysti Mlkki <kmalkki@cc.hut.fi>,
	Mark D. Studebaker <mdsxyz123@yahoo.com>,
	Jean Delvare <khali@linux-fr.org>
+14 −13
Original line number Diff line number Diff line
@@ -142,19 +142,18 @@ static int vt596_transaction(u8 size)
	/* Make sure the SMBus host is ready to start transmitting */
	if ((temp = inb_p(SMBHSTSTS)) & 0x1F) {
		dev_dbg(&vt596_adapter.dev, "SMBus busy (0x%02x). "
			"Resetting... ", temp);
			"Resetting...\n", temp);

		outb_p(temp, SMBHSTSTS);
		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;
		} else {
			printk("Successful!\n");
		}
	}

	/* 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 */
	do {
@@ -171,7 +170,7 @@ static int vt596_transaction(u8 size)
	if (temp & 0x10) {
		result = -1;
		dev_err(&vt596_adapter.dev, "Transaction failed (0x%02x)\n",
			inb_p(SMBHSTCNT) & 0x3C);
			size);
	}

	if (temp & 0x08) {
@@ -180,11 +179,13 @@ static int vt596_transaction(u8 size)
	}

	if (temp & 0x04) {
		int read = inb_p(SMBHSTADD) & 0x01;
		result = -1;
		/* Quick commands are used to probe for chips, so
		   errors are expected, and we don't want to frighten the
		   user. */
		if ((inb_p(SMBHSTCNT) & 0x3C) != VT596_QUICK)
		/* The quick and receive byte commands are used to probe
		   for chips, so errors are expected, and we don't want
		   to frighten the user. */
		if (!((size == VT596_QUICK && !read) ||
		      (size == VT596_BYTE && read)))
			dev_err(&vt596_adapter.dev, "Transaction error!\n");
	}

@@ -462,9 +463,9 @@ static void __exit i2c_vt596_exit(void)
	}
}

MODULE_AUTHOR(
    "Frodo Looijaard <frodol@dds.nl> and "
    "Philip Edelbrock <phil@netroedge.com>");
MODULE_AUTHOR("Kyosti Malkki <kmalkki@cc.hut.fi>, "
	      "Mark D. Studebaker <mdsxyz123@yahoo.com> and "
	      "Jean Delvare <khali@linux-fr.org>");
MODULE_DESCRIPTION("vt82c596 SMBus driver");
MODULE_LICENSE("GPL");