From: Samuel Ortiz <sameo@linux.intel.com>
To: Rabin Vincent <rabin.vincent@stericsson.com>
Cc: linux-kernel@vger.kernel.org,
STEricsson_nomadik_linux@list.st.com,
linus.walleij@stericsson.com, l.fu@pengutronix.de
Subject: Re: [PATCHv2 1/3] mfd: add STMPE I/O Expander support
Date: Mon, 28 Jun 2010 01:55:16 +0200 [thread overview]
Message-ID: <20100627235515.GB9264@sortiz-mobl> (raw)
In-Reply-To: <1277214929-32240-1-git-send-email-rabin.vincent@stericsson.com>
Hi Rabin,
On Tue, Jun 22, 2010 at 07:25:27PM +0530, Rabin Vincent wrote:
> add support for the stmpe family of i/o expanders from
> stmicroelectronics. these devices include upto 24 gpios and a varying
> selection of blocks, including pwm, keypad, and touchscreen controllers.
> this patch adds the mfd core.
Thanks for re-spinning this patchset. I have some comments though:
> diff --git a/drivers/mfd/kconfig b/drivers/mfd/kconfig
> index 9da0e50..63dce71 100644
> --- a/drivers/mfd/kconfig
> +++ b/drivers/mfd/kconfig
> @@ -177,6 +177,18 @@ config twl4030_codec
> select mfd_core
> default n
>
> +config mfd_stmpe
> + bool "support stmicroelectronics stmpe"
> + depends on i2c=y && generic_hardirqs
> + select mfd_core
> + help
> + support for the stmpe family of i/o expanders from
> + stmicroelectronics.
Please be more verbose here in saying which chipsets are supported. Also,
describing the kind of sub devices they provide won't hurt.
> diff --git a/drivers/mfd/stmpe-devices.c b/drivers/mfd/stmpe-devices.c
> new file mode 100644
> index 0000000..fa6934d
> --- /dev/null
> +++ b/drivers/mfd/stmpe-devices.c
I like the smtpe_variant design, but I'd rather see those definitions being
part of smtpe.c directly.
> +/**
> + * stmpe_reg_read() - read a single stmpe register
> + * @stmpe: device to read from
> + * @reg: register to read
> + */
> +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.
What I suggest is that you'd have the exported routines taking your stmpe
lock, and then have an internal version (e.g. named with a __stmpe prefix)
without lock taken for your core code. In your case, you could probably call
the i2c I/O routines directly, that's up to you.
> +/**
> + * stmpe_set_bits() - set the value of a bitfield in a stmpe register
> + * @stmpe: device to write to
> + * @reg: register to write
> + * @mask: mask of bits to set
> + * @val: value to set
> + */
> +int stmpe_set_bits(struct stmpe *stmpe, u8 reg, u8 mask, u8 val)
> +{
> + int ret;
> +
> + mutex_lock(&stmpe->lock);
> +
> + ret = stmpe_reg_read(stmpe, reg);
That one for example would be __stmpe_read().
> +/**
> + * 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.
- I'd rather see a
#ifdef STMPE_VERBOSE_DEBUG
#define stmpe_hex_xump() print_hex_dump_bytes()
#else
#define stmpe_hex_xump()
#endif
defined in your stmpe.h.
The rest looks fine to me.
Cheers,
Samuel.
--
intel open source technology centre
http://oss.intel.com/
next prev parent reply other threads:[~2010-06-27 23:55 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 [this message]
2010-06-29 3:13 ` Rabin VINCENT
2010-06-29 15:33 ` Samuel Ortiz
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=20100627235515.GB9264@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.