All of lore.kernel.org
 help / color / mirror / Atom feed
From: Alexander Holler <holler@ahsoftware.de>
To: linux-kernel@vger.kernel.org
Cc: linux-i2c@vger.kernel.org, Till Harbaum <till@harbaum.org>,
	Alexander Holler <holler@ahsoftware.de>
Subject: [PATCH] i2c: i2c-tiny-usb: Add parameter for optional i2c-devices.
Date: Tue, 13 Nov 2012 21:52:20 +0100	[thread overview]
Message-ID: <1352839940-7559-1-git-send-email-holler@ahsoftware.de> (raw)
In-Reply-To: <50A2AC28.7050304@ahsoftware.de>

Make it possible to define i2c-devices at the kernel command line
or as a module parameter.

Format is devname1@addr1,devname2@addr2,...

Example for the kernel command line:

   i2c-tiny-usb.devices=ds1307@0x68,pcf8563@0x51

The devices will be probed using the standard probe mechanism,
the definition of up to 8 devices is allowed.

Cc: Till Harbaum <till@harbaum.org>
Signed-off-by: Alexander Holler <holler@ahsoftware.de>
---
 drivers/i2c/busses/i2c-tiny-usb.c | 40 +++++++++++++++++++++++++++++++++++++++
 1 file changed, 40 insertions(+)

diff --git a/drivers/i2c/busses/i2c-tiny-usb.c b/drivers/i2c/busses/i2c-tiny-usb.c
index 0510636..2096092 100644
--- a/drivers/i2c/busses/i2c-tiny-usb.c
+++ b/drivers/i2c/busses/i2c-tiny-usb.c
@@ -40,6 +40,11 @@ module_param(delay, ushort, 0);
 MODULE_PARM_DESC(delay, "bit delay in microseconds "
 		 "(default is 10us for 100kHz max)");
 
+#define MAX_OPTIONAL_I2C_DEVICES 8
+static char *opt_devices[MAX_OPTIONAL_I2C_DEVICES];
+module_param_array_named(devices, opt_devices, charp, NULL, 0);
+MODULE_PARM_DESC(devices, "devname1@adr1,devname2@adr2,... (e.g. ds1307@0x68)");
+
 static int usb_read(struct i2c_adapter *adapter, int cmd,
 		    int value, int index, void *data, int len);
 
@@ -190,6 +195,11 @@ static int i2c_tiny_usb_probe(struct usb_interface *interface,
 	struct i2c_tiny_usb *dev;
 	int retval = -ENOMEM;
 	u16 version;
+	unsigned i;
+	struct i2c_board_info i2c_info;
+	uint addr;
+	unsigned short i2c_addr[] = { 0, I2C_CLIENT_END };
+	char *at;
 
 	dev_dbg(&interface->dev, "probing usb device\n");
 
@@ -236,6 +246,36 @@ static int i2c_tiny_usb_probe(struct usb_interface *interface,
 	/* inform user about successful attachment to i2c layer */
 	dev_info(&dev->adapter.dev, "connected i2c-tiny-usb device\n");
 
+	for (i = 0; opt_devices[i]; ++i) {
+		at = strchr(opt_devices[i], '@');
+		if (at == NULL) {
+			dev_warn(&dev->adapter.dev,
+				"address needed in device definition '%s'\n",
+				opt_devices[i]);
+			continue;
+		}
+		*at++ = 0;
+		if (kstrtouint(at, 0, &addr) || addr >= I2C_CLIENT_END) {
+			*--at = '@';
+			dev_warn(&dev->adapter.dev,
+				"wrong address in slave definition '%s'\n",
+				opt_devices[i]);
+			continue;
+		}
+		memset(&i2c_info, 0, sizeof(struct i2c_board_info));
+		strlcpy(i2c_info.type, opt_devices[i], I2C_NAME_SIZE);
+		i2c_addr[0] = addr;
+		if (i2c_new_probed_device(&dev->adapter, &i2c_info, i2c_addr,
+			NULL))
+			dev_info(&dev->adapter.dev,
+				"device %s at address 0x%02x registered\n",
+				i2c_info.type, addr);
+		else
+			dev_warn(&dev->adapter.dev,
+				"device %s at address 0x%02x not found\n",
+				i2c_info.type, addr);
+	}
+
 	return 0;
 
  error:
-- 
1.7.11.7

  reply	other threads:[~2012-11-13 20:52 UTC|newest]

Thread overview: 36+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-11-13 18:06 [PATCH 1/2] i2c: Add possibility for user-defined (i2c-)devices for bus-drivers Alexander Holler
2012-11-13 18:06 ` Alexander Holler
2012-11-13 18:06 ` [PATCH 2/2] i2c: i2c-tiny-usb: Add parameter for optional user-defined devices Alexander Holler
     [not found] ` <1352829968-4908-1-git-send-email-holler-SXC+2es9fhnfWeYVQQPykw@public.gmane.org>
2012-11-13 18:55   ` [PATCH 1/2] i2c: Add possibility for user-defined (i2c-)devices for bus-drivers Jean Delvare
2012-11-13 18:55     ` Jean Delvare
     [not found]     ` <20121113195533.6db71716-R0o5gVi9kd7kN2dkZ6Wm7A@public.gmane.org>
2012-11-13 20:23       ` Alexander Holler
2012-11-13 20:23         ` Alexander Holler
2012-11-13 20:52         ` Alexander Holler [this message]
     [not found]           ` <1352839940-7559-1-git-send-email-holler-SXC+2es9fhnfWeYVQQPykw@public.gmane.org>
2012-11-13 22:42             ` [PATCH] i2c: i2c-tiny-usb: Add parameter for optional i2c-devices Alan Cox
2012-11-13 22:42               ` Alan Cox
     [not found]               ` <20121113224251.20b52f34-38n7/U1jhRXW96NNrWNlrekiAK3p4hvP@public.gmane.org>
2012-11-13 23:41                 ` Alexander Holler
2012-11-13 23:41                   ` Alexander Holler
     [not found]         ` <50A2AC28.7050304-SXC+2es9fhnfWeYVQQPykw@public.gmane.org>
2012-11-13 21:08           ` [PATCH 1/2] i2c: Add possibility for user-defined (i2c-)devices for bus-drivers Jean Delvare
2012-11-13 21:08             ` Jean Delvare
     [not found]             ` <20121113220835.111a178a-R0o5gVi9kd7kN2dkZ6Wm7A@public.gmane.org>
2012-11-13 21:24               ` Alexander Holler
2012-11-13 21:24                 ` Alexander Holler
     [not found]                 ` <50A2BAA2.6090009-SXC+2es9fhnfWeYVQQPykw@public.gmane.org>
2012-11-13 21:42                   ` Jean Delvare
2012-11-13 21:42                     ` Jean Delvare
2012-11-13 23:38                     ` Alexander Holler
     [not found]                       ` <50A2DA0C.3090507-SXC+2es9fhnfWeYVQQPykw@public.gmane.org>
2012-11-14  9:40                         ` Jean Delvare
2012-11-14  9:40                           ` Jean Delvare
     [not found]                           ` <20121114104050.79df8cd9-R0o5gVi9kd7kN2dkZ6Wm7A@public.gmane.org>
2012-11-14 12:38                             ` Alexander Holler
2012-11-14 12:38                               ` Alexander Holler
     [not found]                               ` <50A390CC.9000208-SXC+2es9fhnfWeYVQQPykw@public.gmane.org>
2012-11-14 19:22                                 ` till-RcHadlBFbzVAfugRpC6u6w
2012-11-14 19:22                                   ` till
2012-11-14 23:34                                   ` Alexander Holler
2012-11-14 23:34                                     ` Alexander Holler
     [not found]                                     ` <1639554.ZUOmHr6Yka@lxtiha>
2012-11-15 11:44                                       ` Alexander Holler
2012-11-15 11:44                                         ` Alexander Holler
2012-11-19 13:38                                   ` Alexander Holler
2012-11-19 13:38                                     ` Alexander Holler
2012-11-23 14:35                             ` Alexander Holler
2012-11-23 14:35                               ` Alexander Holler
2012-11-14  2:47                     ` Alexander Holler
     [not found]                       ` <50A30652.1020208-SXC+2es9fhnfWeYVQQPykw@public.gmane.org>
2012-11-14  9:08                         ` Alexander Holler
2012-11-14  9:08                           ` Alexander Holler

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=1352839940-7559-1-git-send-email-holler@ahsoftware.de \
    --to=holler@ahsoftware.de \
    --cc=linux-i2c@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=till@harbaum.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 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.