public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: stefan.eletzhofer@eletztrick.de
To: Linux Kernel Mailing List <linux-kernel@vger.kernel.org>
Cc: Greg KH <greg@kroah.com>, Andrew Morton <akpm@osdl.org>
Subject: [PATCH] 2.6 I2C re-add i2c_get_client()
Date: Thu, 29 Apr 2004 16:06:57 +0200	[thread overview]
Message-ID: <20040429140657.GC23468@gonzo.local> (raw)

[-- Attachment #1: Type: text/plain, Size: 749 bytes --]

Hi,
here's a patch which re-adds i2c_get_client() back to i2c_core.c.
That call was removed in 2003 because there were no users of that
function at that time.

I think this call is needed for I2C chip drivers which provide functionality to
be used by other driver modules, for example RTC chips or EEPROMs. These chip
drivers tend to encapsulate raw i2c chip access and provide function calls
for other modulesi, for example via the i2c_driver->command() method.

I tried to get the locking right, so please comment. The patch is
against 2.6.6-rc3 and works quite fine with my i2c rtc chip.

Thanks,
	Stefan E.

-- 
Eletztrick Computing - Customized Linux Development
Stefan Eletzhofer, Marktstrasse 43, DE-88214 Ravensburg
http://www.eletztrick.de

[-- Attachment #2: i2c-get-client.patch --]
[-- Type: text/plain, Size: 1851 bytes --]

Add back missing i2c_get_client() call.

#
# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher
#

--- linux-ra_alpha-update/drivers/i2c/i2c-core.c~i2c-get-client
+++ linux-ra_alpha-update/drivers/i2c/i2c-core.c
@@ -412,6 +412,57 @@
 	return res;
 }
 
+struct i2c_client *i2c_get_client(int driver_id, int adapter_id, 
+					struct i2c_client *prev)
+{
+	struct list_head *adap_list;
+	struct list_head *item, *_n;
+	struct i2c_adapter *adap;
+	struct i2c_client *client;
+	int found;
+
+	down(&core_lists);
+
+	adap_list = &adapters;
+	if ( prev ) {
+		/* we start searching at the previous clients adapter */
+		adap_list = &prev->adapter->list;
+	}
+
+	found = 0;
+	client = NULL;
+	list_for_each_entry(adap, adap_list, list) {
+		dev_dbg(&adap->dev, "examining adapter id=%08x\n", adap->id);
+		
+		if ( adapter_id && adap->id != adapter_id )
+			continue; /* not the adapter id we want */
+		
+		list_for_each_safe(item, _n, &adap->clients) {
+			client = list_entry(item, struct i2c_client, list);
+			dev_dbg(&client->dev, "examining client\n");
+			dev_dbg(&client->dev, "driver id=%08x\n", client->driver->id);
+
+			if ( prev && prev == client ) {
+				prev = NULL;
+				continue;
+			}
+			
+			if (client->driver->id != driver_id)
+				continue; /* not the driver id we want */
+
+			if ( client->flags & I2C_CLIENT_ALLOW_USE ) {
+				dev_dbg(&client->dev, "found client\n");
+				found = 1;
+				goto out_unlock;
+			}
+		}
+	}
+
+out_unlock:
+	up(&core_lists);
+	return found?client:NULL;
+}
+
 static int i2c_inc_use_client(struct i2c_client *client)
 {
 
@@ -1261,6 +1312,7 @@
 EXPORT_SYMBOL(i2c_del_driver);
 EXPORT_SYMBOL(i2c_attach_client);
 EXPORT_SYMBOL(i2c_detach_client);
+EXPORT_SYMBOL(i2c_get_client);
 EXPORT_SYMBOL(i2c_use_client);
 EXPORT_SYMBOL(i2c_release_client);
 EXPORT_SYMBOL(i2c_clients_command);

             reply	other threads:[~2004-04-29 14:07 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2004-04-29 14:06 stefan.eletzhofer [this message]
2004-05-02  6:01 ` [PATCH] 2.6 I2C re-add i2c_get_client() Greg KH
2004-05-02 15:08   ` stefan.eletzhofer
2004-05-07 22:30     ` Greg KH

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=20040429140657.GC23468@gonzo.local \
    --to=stefan.eletzhofer@eletztrick.de \
    --cc=akpm@osdl.org \
    --cc=greg@kroah.com \
    --cc=linux-kernel@vger.kernel.org \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox