From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jean Delvare Subject: Re: [PATCH] i2c: add irq_flags to board info Date: Mon, 18 Oct 2010 10:36:10 +0200 Message-ID: <20101018103610.77b7e605@endymion.delvare> References: <1287359019-1476-1-git-send-email-vapier@gentoo.org> Mime-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: <1287359019-1476-1-git-send-email-vapier-aBrp7R+bbdUdnm+yROfE0A@public.gmane.org> Sender: linux-i2c-owner-u79uwXL29TY76Z2rM5mHXA@public.gmane.org To: Mike Frysinger Cc: linux-i2c-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, uclinux-dist-devel-ZG0+EudsQA8dtHy/vicBwGD2FQJk+8+b@public.gmane.org, device-drivers-devel-ZG0+EudsQA8dtHy/vicBwGD2FQJk+8+b@public.gmane.org, Michael Hennerich List-Id: linux-i2c@vger.kernel.org Hi Mike, On Sun, 17 Oct 2010 19:43:39 -0400, Mike Frysinger wrote: > From: Michael Hennerich > > These flags can be optionally defined - slave drivers may use them as > flags argument for request_irq(). In case they are left uninitialized > they will default to zero, and therefore shouldn't cause problems. > > This allows us to avoid having to add dedicated platform init code just > to call set_irq_type() Do you have examples of this? Can we see a preview of the amount of cleanups this patch would allow? > -- which doesn't work very well when coupled with > module drivers. I don't quite get what you mean here. > It also matches behavior of some other frameworks like > IDE and UIO. This is certainly a good point. > > Signed-off-by: Michael Hennerich > Signed-off-by: Mike Frysinger > --- > drivers/i2c/i2c-core.c | 1 + > include/linux/i2c.h | 4 ++++ > 2 files changed, 5 insertions(+), 0 deletions(-) > > diff --git a/drivers/i2c/i2c-core.c b/drivers/i2c/i2c-core.c > index bea4c50..830528f 100644 > --- a/drivers/i2c/i2c-core.c > +++ b/drivers/i2c/i2c-core.c > @@ -540,6 +540,7 @@ i2c_new_device(struct i2c_adapter *adap, struct i2c_board_info const *info) > client->flags = info->flags; > client->addr = info->addr; > client->irq = info->irq; > + client->irq_flags = info->irq_flags; > > strlcpy(client->name, info->type, sizeof(client->name)); > > diff --git a/include/linux/i2c.h b/include/linux/i2c.h > index 4bae0b7..e6248c1 100644 > --- a/include/linux/i2c.h > +++ b/include/linux/i2c.h > @@ -189,6 +189,7 @@ struct i2c_driver { > * @driver: device's driver, hence pointer to access routines > * @dev: Driver model device node for the slave. > * @irq: indicates the IRQ generated by this device (if any) > + * @irq_flags: The flags passed to request_irq() > * @detected: member of an i2c_driver.clients list or i2c-core's > * userspace_devices list > * > @@ -206,6 +207,7 @@ struct i2c_client { > struct i2c_driver *driver; /* and our access routines */ > struct device dev; /* the device structure */ > int irq; /* irq issued by device */ > + unsigned long irq_flags; /* flags used by the irq */ > struct list_head detected; > }; > #define to_i2c_client(d) container_of(d, struct i2c_client, dev) > @@ -237,6 +239,7 @@ static inline void i2c_set_clientdata(struct i2c_client *dev, void *data) > * @archdata: copied into i2c_client.dev.archdata > * @of_node: pointer to OpenFirmware device node > * @irq: stored in i2c_client.irq > + * @irq_flags: The flags passed to request_irq() for i2c_client.irq > * > * I2C doesn't actually support hardware probing, although controllers and > * devices may be able to use I2C_SMBUS_QUICK to tell whether or not there's > @@ -259,6 +262,7 @@ struct i2c_board_info { > struct device_node *of_node; > #endif > int irq; > + unsigned long irq_flags; > }; > > /** -- Jean Delvare