From: David Woodhouse <dwmw2-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org>
To: Jean Delvare <khali-PUYAD+kWke1g9hUCZPvPmw@public.gmane.org>
Cc: linux-i2c-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
Subject: Re: [PATCH 1/2] i2c-i801: Handle multiple instances instead of keeping global state
Date: Sat, 30 Oct 2010 19:34:23 -0400 [thread overview]
Message-ID: <1288481663.4570.19.camel@macbook.infradead.org> (raw)
In-Reply-To: <20101030182458.0849f295-R0o5gVi9kd7kN2dkZ6Wm7A@public.gmane.org>
On Sat, 2010-10-30 at 18:24 +0200, Jean Delvare wrote:
> An explanation why this change is needed would be nice.
Um, does it really need explaining? It's really poor form to keep driver
state in global variables rather than per-instance, even if you *don't*
actually have more than one device.
> Note that the patch got corrupted on the way: all leading spaces have
> been doubled. I had to fix it.
Sorry about that. Was sending from my phone, as I said before.
> > + Copyright © 2010 Intel Corporation
> > + David Woodhouse <dwmw2-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org>
>
> I'd rather stick to (C). Using non-ASCII characters is asking for
> trouble, and this doesn't add value.
It really isn't trouble. We're well into the 21st century now — even
akpm can cope with UTF-8 :)
> > @@ -429,22 +439,23 @@ static int i801_block_transaction(union i2c_smbus_data *data, char read_write,
> > /* Experience has shown that the block buffer can only be used for
> > SMBus (not I2C) block transactions, even though the datasheet
> > doesn't mention this limitation. */
> > - if ((i801_features & FEATURE_BLOCK_BUFFER)
> > - && command != I2C_SMBUS_I2C_BLOCK_DATA
> > - && i801_set_block_buffer_mode() == 0)
> > - result = i801_block_transaction_by_block(data, read_write,
> > - hwpec);
> > + if ((priv->features & FEATURE_BLOCK_BUFFER)
> > + && command != I2C_SMBUS_I2C_BLOCK_DATA
> > + && i801_set_block_buffer_mode(priv) == 0)
>
> Gratuitous reindentation of code.
The two continuation lines? I just fixed them to conform to the normal
kernel indentation, while I was modifying the lines before and after.
That's entirely normal practice, and not particularly gratuitous,
surely?
> > @@ -457,81 +468,83 @@ static s32 i801_access(struct i2c_adapter *adap, u16 addr,
> > int hwpec;
> > int block = 0;
> > int ret, xact = 0;
> > + struct i801_priv *priv = (void *)adap;
>
> This is horrible and only works by accident (or misdesign if you
> prefer). Please don't do this. I'm glad I insisted to review this
> patch...
>
> We have i2c_set/get_adapdata() for this. If you really care about the
> extra cost, please use the proper container_of() construct. But I don't
> think the cost is problematic.
It wasn't the cost I was thinking of; it was the simplicity. One
allocation, one failure case, one error path. That's why this method is
fairly common within the kernel.
However, I have no particular objection to doing separate allocations,
even though it's not what I'd normally do. I'll send another version.
> > switch (xact & 0x7f) {
> > case I801_BYTE: /* Result put in SMBHSTDAT0 */
> > case I801_BYTE_DATA:
> > - data->byte = inb_p(SMBHSTDAT0);
> > + data->byte = inb_p(SMBHSTDAT0(priv));
> > break;
> > case I801_WORD_DATA:
> > - data->word = inb_p(SMBHSTDAT0) + (inb_p(SMBHSTDAT1) << 8);
> > + data->word = inb_p(SMBHSTDAT0(priv)) +
> > + (inb_p(SMBHSTDAT1(priv)) << 8);
>
> Please align.
Yeah, I remember wondering why emacs put it there, but figured I'd trust
it :)
> > + priv->features = 0;
>
> You just kzalloc'd the structure, so features are already 0.
True.
> > @@ -801,27 +821,32 @@ static int __devinit i801_probe(struct pci_dev *dev,
> > memset(&info, 0, sizeof(struct i2c_board_info));
> > info.addr = apanel_addr;
> > strlcpy(info.type, "fujitsu_apanel", I2C_NAME_SIZE);
> > - i2c_new_device(&i801_adapter, &info);
> > + i2c_new_device(&priv->adapter, &info);
> > }
> > #endif
> > #if defined CONFIG_SENSORS_FSCHMD || defined CONFIG_SENSORS_FSCHMD_MODULE
> > if (dmi_name_in_vendors("FUJITSU"))
> > - dmi_walk(dmi_check_onboard_devices, &i801_adapter);
> > + dmi_walk(dmi_check_onboard_devices, &priv->adapter);
> > #endif
> > -
>
> Please leave this blank line in place.
Um, OK.
> Patch tested OK on ICH10.
Cool, thanks. I'll send an updated patch; hopefully later this evening.
--
David Woodhouse Open Source Technology Centre
David.Woodhouse-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org Intel Corporation
next prev parent reply other threads:[~2010-10-30 23:34 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-10-30 13:47 [PATCH 1/2] i2c-i801: Handle multiple instances instead of keeping global state David Woodhouse
[not found] ` <alpine.LFD.2.00.1010301445490.7306-NkH8fLdbH5SKw1fGA2nhu27IUlhRatedral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
2010-10-30 13:49 ` [PATCH 2/2] i2c-i801: Add PCI idents for Sandy Bridge SMBus controllers David Woodhouse
[not found] ` <alpine.LFD.2.00.1010301448240.7306-NkH8fLdbH5SKw1fGA2nhu27IUlhRatedral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
2010-10-30 16:36 ` Jean Delvare
[not found] ` <20101030183635.4899246f-R0o5gVi9kd7kN2dkZ6Wm7A@public.gmane.org>
2010-10-30 23:15 ` David Woodhouse
[not found] ` <1288480550.4570.5.camel-uXGAPMMVk8bAQYKIod7YupZV94DADvEd@public.gmane.org>
2010-10-31 10:20 ` Jean Delvare
2010-10-30 16:24 ` [PATCH 1/2] i2c-i801: Handle multiple instances instead of keeping global state Jean Delvare
[not found] ` <20101030182458.0849f295-R0o5gVi9kd7kN2dkZ6Wm7A@public.gmane.org>
2010-10-30 23:00 ` Ben Dooks
[not found] ` <20101030230052.GP21564-SMNkleLxa3Z6Wcw2j4pizdi2O/JbrIOy@public.gmane.org>
2010-10-30 23:12 ` David Woodhouse
[not found] ` <1288480327.4570.2.camel-uXGAPMMVk8bAQYKIod7YupZV94DADvEd@public.gmane.org>
2010-10-31 9:56 ` Jean Delvare
[not found] ` <20101031105629.109dd2e2-R0o5gVi9kd7kN2dkZ6Wm7A@public.gmane.org>
2010-10-31 14:28 ` David Woodhouse
2010-10-30 23:34 ` David Woodhouse [this message]
[not found] ` <1288481663.4570.19.camel-uXGAPMMVk8bAQYKIod7YupZV94DADvEd@public.gmane.org>
2010-10-30 23:39 ` Ben Dooks
[not found] ` <20101030233930.GQ21564-SMNkleLxa3Z6Wcw2j4pizdi2O/JbrIOy@public.gmane.org>
2010-10-30 23:47 ` David Woodhouse
[not found] ` <1288482478.4570.23.camel-uXGAPMMVk8bAQYKIod7YupZV94DADvEd@public.gmane.org>
2010-10-31 9:19 ` Jean Delvare
[not found] ` <20101031101953.45b3dabf-R0o5gVi9kd7kN2dkZ6Wm7A@public.gmane.org>
2010-10-31 14:11 ` David Woodhouse
2010-10-31 10:01 ` Jean Delvare
[not found] ` <20101031110158.1ff0f03c-R0o5gVi9kd7kN2dkZ6Wm7A@public.gmane.org>
2010-10-31 14:15 ` David Woodhouse
2010-10-31 10:33 ` 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=1288481663.4570.19.camel@macbook.infradead.org \
--to=dwmw2-wegcikhe2lqwvfeawa7xhq@public.gmane.org \
--cc=khali-PUYAD+kWke1g9hUCZPvPmw@public.gmane.org \
--cc=linux-i2c-u79uwXL29TY76Z2rM5mHXA@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.