All of lore.kernel.org
 help / color / mirror / Atom feed
From: Samuel Ortiz <sameo@linux.intel.com>
To: Rabin VINCENT <rabin.vincent@stericsson.com>
Cc: "linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	STEricsson_nomadik_linux <STEricsson_nomadik_linux@list.st.com>,
	Linus WALLEIJ <linus.walleij@stericsson.com>,
	"l.fu@pengutronix.de" <l.fu@pengutronix.de>
Subject: Re: [PATCHv2 1/3] mfd: add STMPE I/O Expander support
Date: Tue, 29 Jun 2010 17:33:27 +0200	[thread overview]
Message-ID: <20100629153326.GA4752@sortiz-mobl> (raw)
In-Reply-To: <20100629031324.GA6430@bnru02.bnr.st.com>

Hi Rabin,

On Tue, Jun 29, 2010 at 08:43:26AM +0530, Rabin VINCENT wrote:
> Hi Samuel,
> 
> On Mon, Jun 28, 2010 at 01:55:16 +0200, Samuel Ortiz wrote:
> > On Tue, Jun 22, 2010 at 07:25:27PM +0530, Rabin Vincent wrote:
> > > +int stmpe_reg_read(struct stmpe *stmpe, u8 reg)
> > > +{
> > > +	int ret;
> > > +
> > > +	ret = i2c_smbus_read_byte_data(stmpe->i2c, reg);
> > > +	if (ret < 0)
> > > +		dev_err(stmpe->dev, "failed to read reg %#x: %d\n",
> > > +			reg, ret);
> > > +
> > > +	dev_vdbg(stmpe->dev, "rd: reg %#x => data %#x\n", reg, ret);
> > > +
> > > +	return ret;
> > > +}
> > > +EXPORT_SYMBOL(stmpe_reg_read);
> > I think your locking is broken here.
> > If your exporting this routine (and the next ones below), you'd better make
> > sure you're under stmpe->lock for the stmpe register concurrent access.
> 
> stmpe_reg_read() and stmpe_reg_write() are just a call to one
> i2c_smbus_* function, and the I2C core takes a bus_lock internally
> preventing concurrent accesses.
> 
> The only place where the I2C core locking is not sufficient is the
> read/modify/write sequence, and we provide stmpe_set_bits() for that,
> which takes a lock.  If someone uses reg_read()/reg_write() sequences on
> registers where they should be using set_bits(), adding extra locking in
> reg_read()/reg_write() will not provide any additional safeguard.
> 
> The same scheme is used by adp5520.
> 
> Could you please explain why more locking is needed?
Without the extra locking, there's nothing preventing me from writing to a
register while you're in the middle of a stmpe_set_bits() call.

> > > +/**
> > > + * stmpe_block_write() - write multiple stmpe registers
> > > + * @stmpe:	device to write to
> > > + * @reg:	first register
> > > + * @length:	number of registers
> > > + * @values:	values to write
> > > + */
> > > +int stmpe_block_write(struct stmpe *stmpe, u8 reg, u8 length,
> > > +			const u8 *values)
> > > +{
> > > +	int ret;
> > > +
> > > +	dev_vdbg(stmpe->dev, "wr: regs %#x (%d)\n", reg, length);
> > > +#ifdef VERBOSE_DEBUG
> > > +	print_hex_dump_bytes("stmpe wr: ", dump_prefix_offset, values, length);
> > > +#endif
> > I don't really enjoy this part for 2 reasons:
> > - You should use a less generic ifdef switch, prefixed with STMPE_ for
> > example.
> 
> The dev_vdbg() in the previous line is activated via VERBOSE_DEBUG, so
> the idea was to have this dump use the same config.  
Ah, I didnt realize VERBOSE_DEBUG was defined from device.h. Should have
grepped for it in your patch, sorry.
I would still like it to be part of your header file though.

> I'll fix it as your recommended, though.  Will fix your other comments too.
Thanks in advance.

Cheers,
Samuel.


> Rabin

-- 
Intel Open Source Technology Centre
http://oss.intel.com/

  reply	other threads:[~2010-06-29 15:33 UTC|newest]

Thread overview: 61+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-05-31 12:17 [PATCH 1/3] mfd: add STMPExxxx I/O Expander support Rabin Vincent
2010-05-31 12:17 ` [PATCH 2/3] gpio: add STMPExxxx GPIO driver Rabin Vincent
2010-05-31 12:17 ` [PATCH 3/3] input: add STMPExxxx keypad driver Rabin Vincent
2010-05-31 12:17   ` Rabin Vincent
2010-06-01 22:16   ` Dmitry Torokhov
2010-06-02 13:56     ` Rabin VINCENT
2010-06-02 16:05       ` Dmitry Torokhov
2010-06-18 23:42 ` [PATCH 1/3] mfd: add STMPExxxx I/O Expander support Samuel Ortiz
2010-06-19 13:50   ` Luotao Fu
2010-06-21 13:33   ` Rabin VINCENT
2010-06-21 15:45     ` Luotao Fu
2010-06-22 13:55       ` [PATCHv2 1/3] mfd: add STMPE " Rabin Vincent
2010-06-27 23:55         ` Samuel Ortiz
2010-06-29  3:13           ` Rabin VINCENT
2010-06-29 15:33             ` Samuel Ortiz [this message]
2010-07-01 12:00           ` [PATCHv3 " Rabin Vincent
2010-07-01 12:34             ` Luotao Fu
2010-07-02 11:22               ` [PATCHv4 " Rabin Vincent
2010-07-02 15:31                 ` Samuel Ortiz
2010-07-02 11:22               ` [PATCHv4 2/3] gpio: add STMPE GPIO driver Rabin Vincent
2010-07-02 11:22               ` [PATCHv4 3/3] input: add STMPE keypad driver Rabin Vincent
2010-07-02 12:10               ` [RESEND] [PATCH V8] input: STMPE touch controller support Luotao Fu
2010-07-05 14:53                 ` Samuel Ortiz
2010-07-01 12:00           ` [PATCHv3 2/3] gpio: add STMPE GPIO driver Rabin Vincent
2010-07-01 12:29             ` Luotao Fu
2010-07-01 12:00           ` [PATCHv3 3/3] input: add STMPE keypad driver Rabin Vincent
2010-06-22 13:55       ` [PATCHv2 2/3] gpio: add STMPE GPIO driver Rabin Vincent
2010-06-22 13:55       ` [PATCHv2 3/3] input: add STMPE keypad driver Rabin Vincent
2010-06-22 13:56       ` [PATCH 1/3] mfd: add STMPExxxx I/O Expander support Rabin VINCENT
2010-06-24 11:13         ` mfd: STMPExxxx fixes and touch screen support Luotao Fu
2010-06-24 11:13         ` [PATCH 1/6] gpio/stmpe-gpio: set GPIO alternate function while requesting Luotao Fu
2010-06-24 12:43           ` Rabin VINCENT
2010-06-24 11:13         ` [PATCH 2/6] gpio/stmpe-gpio: fix set direction input Luotao Fu
2010-06-24 12:03           ` Rabin VINCENT
2010-06-24 11:13         ` [PATCH 3/6] mfd/stmpexxx: add touchscreen platform data Luotao Fu
2010-06-24 11:13         ` [PATCH 4/6] mfd/stmpexxx: change touchscreen irq Luotao Fu
2010-06-24 13:09           ` Rabin VINCENT
2010-06-24 13:17             ` Luotao Fu
2010-06-24 11:13         ` [PATCH 5/6] mfd/stmpexxx: fix stmpe811 enable hook Luotao Fu
2010-06-24 12:11           ` Rabin VINCENT
2010-06-24 12:32             ` Luotao Fu
2010-06-24 12:47               ` [PATCH 5/6 V3] " Luotao Fu
2010-06-24 13:05                 ` Rabin VINCENT
2010-06-24 11:13         ` [PATCH 6/6 V4] input: STMPE touch controller support Luotao Fu
2010-06-24 12:27           ` [PATCH 5/6 V2] mfd/stmpexxx: fix stmpe811 enable hook Luotao Fu
2010-06-24 12:35             ` Rabin VINCENT
2010-06-24 12:46               ` Luotao Fu
2010-06-24 12:28           ` [PATCH 6/6 V5] input: STMPE touch controller support Luotao Fu
2010-06-24 14:26             ` [PATCH 5/5] " Luotao Fu
2010-06-24 16:24               ` Dmitry Torokhov
2010-06-24 16:57                 ` Luotao Fu
2010-06-25  8:37                 ` [PATCH 5/5 V7] " Luotao Fu
2010-06-25  9:11                   ` Dmitry Torokhov
2010-06-25  9:32                     ` Luotao Fu
2010-06-27 21:24                     ` Samuel Ortiz
2010-06-25  9:34                   ` [PATCH 5/5 V8] " Luotao Fu
2010-06-24 12:31           ` [PATCH 6/6 V4] " Rabin VINCENT
2010-06-24 12:42             ` Luotao Fu
2010-06-24 13:01               ` Rabin VINCENT
2010-06-24 13:01               ` Rabin VINCENT
2010-06-24 13:11                 ` Luotao Fu

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=20100629153326.GA4752@sortiz-mobl \
    --to=sameo@linux.intel.com \
    --cc=STEricsson_nomadik_linux@list.st.com \
    --cc=l.fu@pengutronix.de \
    --cc=linus.walleij@stericsson.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=rabin.vincent@stericsson.com \
    /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.