Hi all,
I am trying to backport Michael's patch to add PROBE and REMOVE ioctls
to 2.6.21
http://article.gmane.org/gmane.linux.drivers.i2c/3339/match=ioctls+probe
I have been able to add the IOCTLS and re-compile the kernel module, but
am confused as to what function to call in the old device model. I
believe that I should use i2c_attach_client() from i2c-core.c. Is this
correct?
This is what I have so far:
I2c-dev.c:
static int i2cdev_ioctl(struct inode *inode, struct file *file,
unsigned int cmd, unsigned long arg)
{
char *colon, request[I2C_NAME_SIZE + 5];
char probeTemp[I2C_NAME_SIZE];
int addr;
...
case I2C_PROBE:
res = copy_from_user(request, (char *)arg,
sizeof(request));
if (res)
return res;
colon = strchr(request, ',');
if((!colon) || (colon - request > I2C_NAME_SIZE - 1))
return -EINVAL;
memset (probeTemp,0,sizeof(probeTemp)); // set the whole
buffer to 0 so that when the string is added it is automatically null
terminated.
strncpy(probeTemp, request, colon - request);
addr = simple_strtoul(colon + 1, NULL, 0);
printk (KERN_ERR "got %s and %d\n",probeTemp,addr);
printk (KERN_ERR "client info name: %s\n",
client->name);
printk (KERN_ERR "client's adapter's name: %s\n",
client->adapter->name); // this is what probe wants
/* Check for address business */
if (i2c_check_addr(client->adapter, client->addr))
return -EBUSY;
??? What call to put here to probe the actual chip ???
return 0;
Thanks!
Chuck
--
To unsubscribe from this list: send the line "unsubscribe linux-i2c" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html