From: cminyard@mvista.com (Corey Minyard)
To: Greg KH <greg@kroah.com>, lkml <linux-kernel@vger.kernel.org>,
Sensors <sensors@stimpy.netroedge.com>
Subject: [PATCH] I2C Part 1 - Remove some redundancy from the i2c-core.c file
Date: Thu, 19 May 2005 06:25:45 +0000 [thread overview]
Message-ID: <42418B36.5030407@mvista.com> (raw)
This is a series of patches to add a non-blocking interface to the I2C
driver. Hopefully it is broken into small enough functional changes.
I'm not posting the whole series right now, just the first few.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: i2c_remove_redundant_check.diff
Type: text/x-patch
Size: 3065 bytes
Desc: not available
Url : http://lists.lm-sensors.org/pipermail/lm-sensors/attachments/20050323/a15af38d/i2c_remove_redundant_check.bin
WARNING: multiple messages have this Message-ID (diff)
From: Corey Minyard <cminyard@mvista.com>
To: Greg KH <greg@kroah.com>, lkml <linux-kernel@vger.kernel.org>,
Sensors <sensors@stimpy.netroedge.com>
Subject: [PATCH] I2C Part 1 - Remove some redundancy from the i2c-core.c file
Date: Wed, 23 Mar 2005 09:28:54 -0600 [thread overview]
Message-ID: <42418B36.5030407@mvista.com> (raw)
[-- Attachment #1: Type: text/plain, Size: 208 bytes --]
This is a series of patches to add a non-blocking interface to the I2C
driver. Hopefully it is broken into small enough functional changes.
I'm not posting the whole series right now, just the first few.
[-- Attachment #2: i2c_remove_redundant_check.diff --]
[-- Type: text/x-patch, Size: 3065 bytes --]
Call i2c_transfer() from i2c_master_send() and i2c_master_recv()
to avoid the redundant code that was in all three functions.
This is important for the non-blocking interfaces because they
will have to handle a non-blocking interface in this area. Having
it in one place greatly simplifies the changes.
Signed-off-by: Corey Minyard <minyard@acm.org>
Index: linux-2.6.11-rc4/drivers/i2c/i2c-core.c
===================================================================
--- linux-2.6.11-rc4.orig/drivers/i2c/i2c-core.c
+++ linux-2.6.11-rc4/drivers/i2c/i2c-core.c
@@ -606,27 +606,20 @@
struct i2c_adapter *adap=client->adapter;
struct i2c_msg msg;
- if (client->adapter->algo->master_xfer) {
- msg.addr = client->addr;
- msg.flags = client->flags & I2C_M_TEN;
- msg.len = count;
- msg.buf = (char *)buf;
+ msg.addr = client->addr;
+ msg.flags = client->flags & I2C_M_TEN;
+ msg.len = count;
+ msg.buf = (char *)buf;
- dev_dbg(&client->adapter->dev, "master_send: writing %d bytes.\n",
- count);
-
- down(&adap->bus_lock);
- ret = adap->algo->master_xfer(adap,&msg,1);
- up(&adap->bus_lock);
+ dev_dbg(&client->adapter->dev, "master_send: writing %d bytes.\n",
+ count);
- /* if everything went ok (i.e. 1 msg transmitted), return #bytes
- * transmitted, else error code.
- */
- return (ret == 1 )? count : ret;
- } else {
- dev_err(&client->adapter->dev, "I2C level transfers not supported\n");
- return -ENOSYS;
- }
+ ret = i2c_transfer(adap, &msg, 1);
+
+ /* if everything went ok (i.e. 1 msg transmitted), return #bytes
+ * transmitted, else error code.
+ */
+ return (ret == 1 )? count : ret;
}
int i2c_master_recv(struct i2c_client *client, char *buf ,int count)
@@ -634,31 +627,25 @@
struct i2c_adapter *adap=client->adapter;
struct i2c_msg msg;
int ret;
- if (client->adapter->algo->master_xfer) {
- msg.addr = client->addr;
- msg.flags = client->flags & I2C_M_TEN;
- msg.flags |= I2C_M_RD;
- msg.len = count;
- msg.buf = buf;
- dev_dbg(&client->adapter->dev, "master_recv: reading %d bytes.\n",
- count);
-
- down(&adap->bus_lock);
- ret = adap->algo->master_xfer(adap,&msg,1);
- up(&adap->bus_lock);
+ msg.addr = client->addr;
+ msg.flags = client->flags & I2C_M_TEN;
+ msg.flags |= I2C_M_RD;
+ msg.len = count;
+ msg.buf = buf;
+
+ dev_dbg(&client->adapter->dev, "master_recv: reading %d bytes.\n",
+ count);
- dev_dbg(&client->adapter->dev, "master_recv: return:%d (count:%d, addr:0x%02x)\n",
- ret, count, client->addr);
+ ret = i2c_transfer(adap, &msg, 1);
+
+ dev_dbg(&client->adapter->dev, "master_recv: return:%d (count:%d, addr:0x%02x)\n",
+ ret, count, client->addr);
- /* if everything went ok (i.e. 1 msg transmitted), return #bytes
- * transmitted, else error code.
- */
- return (ret == 1 )? count : ret;
- } else {
- dev_err(&client->adapter->dev, "I2C level transfers not supported\n");
- return -ENOSYS;
- }
+ /* if everything went ok (i.e. 1 msg transmitted), return #bytes
+ * transmitted, else error code.
+ */
+ return (ret == 1 )? count : ret;
}
next reply other threads:[~2005-05-19 6:25 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-03-23 15:28 Corey Minyard [this message]
2005-05-19 6:25 ` [PATCH] I2C Part 1 - Remove some redundancy from the i2c-core.c file Corey Minyard
2005-03-23 21:44 ` Jean Delvare
2005-05-19 6:25 ` [PATCH] I2C Part 1 - Remove some redundancy from the i2c-core.c Jean Delvare
2005-03-31 22:03 ` [PATCH] I2C Part 1 - Remove some redundancy from the i2c-core.c file Corey Minyard
2005-05-19 6:25 ` [PATCH] I2C Part 1 - Remove some redundancy from the i2c-core.c Corey Minyard
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=42418B36.5030407@mvista.com \
--to=cminyard@mvista.com \
--cc=greg@kroah.com \
--cc=linux-kernel@vger.kernel.org \
--cc=sensors@stimpy.netroedge.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.