From: David Brownell <david-b-yBeKhBN/0LDR7s880joybQ@public.gmane.org>
To: Jean Delvare <khali-PUYAD+kWke1g9hUCZPvPmw@public.gmane.org>
Cc: Linux I2C <linux-i2c-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
Trent Piepho <tpiepho-KZfg59tc24xl57MIdRCFDg@public.gmane.org>
Subject: Re: [PATCH 1/5] i2c: Add SMBus alert support
Date: Sat, 13 Feb 2010 18:06:07 -0800 [thread overview]
Message-ID: <201002131806.07359.david-b@pacbell.net> (raw)
In-Reply-To: <20100213230656.341ec091-ig7AzVSIIG7kN2dkZ6Wm7A@public.gmane.org>
On Saturday 13 February 2010, Jean Delvare wrote:
> The benefit of this approach is a zero cost for I2C bus segments which
> do not need SMBus alert support. Where David's implementation
> increased the size of struct i2c_adapter by 7% (40 bytes on i386),
> mine doesn't touch it. Where David's implementation added over 150
> lines of code to i2c-core (+10%), mine doesn't touch it. The only
> change that touches all the users of the i2c subsystem is a new
> callback in struct i2c_driver (common to both implementations.) I seem
> to remember Trent was worried about the footprint of David'd
> implementation, hopefully mine addresses the issue.
I'm not sure I could justify making I2C and SMBus differ in *ONLY* this
particular way, since otherwise they're treated identically. I certainly
wouldn't worry about 40 bytes in a Linux kernel ... that's noise. (If
this were inside a microcontroller that only had a few KB of SRAM, then
I'd certainly worry!)
But that doesn't much matter. If SMBALERT# support is now going to exist,
that's enough for me.
> + *
> + * Copyright (C) 2010 Jean Delvare <khali-PUYAD+kWke1g9hUCZPvPmw@public.gmane.org>
> + *
> + * SMBus alert support based on earlier work by David Brownell (2008).
> + *
That should be "Copyright (C) 2008 David Brownell" ... not
just "based on", since significant chunks are the same code.
> + struct i2c_client *ara;
Worth spelling out what "ARA" means; it shouldn't be
just another mysterious TLA.
> +struct alert_data {
> + unsigned short addr;
> + u8 flag:1;
> +};
> +
Better to make "flag" be "bool" ... there's no space saving
in the struct to have it be a one bit field, and in terms of
code generation it *costs more* than using a "bool".
> +/* If this is the alerting device, notify its driver */
> +static int smbus_do_alert(struct device *dev, void *addrp)
> +{
> + struct i2c_client *client = i2c_verify_client(dev);
> + struct alert_data *data = addrp;
Surely the callback should take a "struct alert_data *" then??
> +static irqreturn_t smbalert_irq(int irq, void *d)
> +{
> + struct i2c_smbus_alert *data = d;
> +
> + /* Disable level-triggered IRQs until we handle them */
> + if (!data->alert_edge_triggered)
> + disable_irq_nosync(irq);
> +
> + schedule_work(&data->alert);
> + return IRQ_HANDLED;
> +}
> +
Now that genirq handles threaded IRQs, should this code be updated
to use that infrastructure instead of a work struct? There are
several mechanisms to kick in here. It'd be fair to have a way for
IRQ threads to issue i2c_handle_smbus_alert() -- or maybe some
sibling method -- especially if i2c_setup_smbus_alert() causes
this code to provide the hardirq handler.
By the way ... you probably know that the I2C/SMBus controller
in most of Intel's Southbridge chips (like ICH8) supports
the SMBALERT# mechanism. Testing may be awkward, but it'd be
good to verify this incarnation of SMBALERT# support can work
with those controllers. (Where "alert" is just another cause
for an IRQ from i2c-i801.c or whatever, not a dedicated IRQ
from a GPIO or from the parport.)
- Dave
p.s. for the record ... I'd try testing this, but the board I
have which needs that support doesn't have current-enough
Linux to do so.
next prev parent reply other threads:[~2010-02-14 2:06 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-02-13 22:04 [PATCH 0/5] i2c: Add SMBus alert support Jean Delvare
[not found] ` <20100213230438.31fd0fd7-ig7AzVSIIG7kN2dkZ6Wm7A@public.gmane.org>
2010-02-13 22:06 ` [PATCH 1/5] " Jean Delvare
[not found] ` <20100213230656.341ec091-ig7AzVSIIG7kN2dkZ6Wm7A@public.gmane.org>
2010-02-14 2:06 ` David Brownell [this message]
[not found] ` <201002131806.07359.david-b-yBeKhBN/0LDR7s880joybQ@public.gmane.org>
2010-02-14 14:40 ` Jean Delvare
[not found] ` <20100214154034.2c92a8b7-ig7AzVSIIG7kN2dkZ6Wm7A@public.gmane.org>
2010-02-14 18:05 ` David Brownell
[not found] ` <201002141005.53934.david-b-yBeKhBN/0LDR7s880joybQ@public.gmane.org>
2010-02-14 19:18 ` Jean Delvare
2010-02-15 18:26 ` Jonathan Cameron
[not found] ` <4B7991CC.3020904-KWPb1pKIrIJaa/9Udqfwiw@public.gmane.org>
2010-02-16 9:56 ` Jean Delvare
[not found] ` <20100216105606.003b01dd-ig7AzVSIIG7kN2dkZ6Wm7A@public.gmane.org>
2010-02-16 13:39 ` Mark Brown
2010-02-13 22:07 ` [PATCH 2/5] i2c: Separate Kconfig option for i2c-smbus Jean Delvare
2010-02-13 22:08 ` [PATCH 3/5] i2c-parport: Add SMBus alert support Jean Delvare
2010-02-13 22:09 ` [PATCH 4/5] i2c-parport-light: " Jean Delvare
2010-02-13 22:11 ` [PATCH 5/5] hwmon: (lm90) " Jean Delvare
[not found] ` <20100213231116.1d3ad806-ig7AzVSIIG7kN2dkZ6Wm7A@public.gmane.org>
2010-02-14 2:11 ` David Brownell
2010-02-14 8:33 ` Trent Piepho
[not found] ` <Pine.LNX.4.64.1002140000220.2366-3bmvVOk6DZ+DGx/iekXGtrjh7zpefjiS@public.gmane.org>
2010-02-14 13:28 ` Jean Delvare
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=201002131806.07359.david-b@pacbell.net \
--to=david-b-ybekhbn/0ldr7s880joybq@public.gmane.org \
--cc=khali-PUYAD+kWke1g9hUCZPvPmw@public.gmane.org \
--cc=linux-i2c-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=tpiepho-KZfg59tc24xl57MIdRCFDg@public.gmane.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.