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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).