From: Jonathan Cameron <jic23-KWPb1pKIrIJaa/9Udqfwiw@public.gmane.org>
To: Samu Onkalo <samu.p.onkalo-xNZwKgViW5gAvxtiuMwx3w@public.gmane.org>
Cc: eric.piel-VkQ1JFuSMpfAbQlEx87xDw@public.gmane.org,
khali-PUYAD+kWke1g9hUCZPvPmw@public.gmane.org,
guenter.roeck-IzeFyvvaP7pWk0Htik3J/w@public.gmane.org,
kuninori.morimoto.gx-zM6kxYcvzFBBDgjK7y7TUQ@public.gmane.org,
linux-i2c-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
lm-sensors-GZX6beZjE8VD60Wz+7aTrA@public.gmane.org
Subject: Re: [lm-sensors] [RFC PATCH 6/9] hwmon: lis3: New parameters to platform data
Date: Mon, 04 Oct 2010 12:37:40 +0100 [thread overview]
Message-ID: <4CA9BC84.1090403@cam.ac.uk> (raw)
In-Reply-To: <1285933616-16044-7-git-send-email-samu.p.onkalo-xNZwKgViW5gAvxtiuMwx3w@public.gmane.org>
On 10/01/10 12:46, Samu Onkalo wrote:
> Added control for duration via platform data.
> Added possibility to configure interrupts to trig on
> both rising and falling edge. The lis3 WU unit can be
> configured quite many ways and with some configurations it
> is quite handy to get coordinate refresh when some
> event trigs and when it reason goes away.
There are probably cleaner ways of doing this.
For example rather than creating your own data types, why not just
have platform data eleemnts that are exactly the irq_flags you
want? Or perhaps use resource structures instead? Looks like there
is some irq type support in ioport.h and a few users in tree...
Still, patch is sound except for the random last addition that
has nothing to do with this. I'd like to seem some explanatory
documentation in the platform data talking about why you would
want to do this though... (actual examples please)
>
> Signed-off-by: Samu Onkalo <samu.p.onkalo-xNZwKgViW5gAvxtiuMwx3w@public.gmane.org>
> ---
> drivers/hwmon/lis3lv02d.c | 21 ++++++++++++++-------
> include/linux/lis3lv02d.h | 7 ++++++-
> 2 files changed, 20 insertions(+), 8 deletions(-)
>
> diff --git a/drivers/hwmon/lis3lv02d.c b/drivers/hwmon/lis3lv02d.c
> index 81e2313..0a46a0e 100644
> --- a/drivers/hwmon/lis3lv02d.c
> +++ b/drivers/hwmon/lis3lv02d.c
> @@ -681,6 +681,7 @@ static void lis3lv02d_8b_configure(struct lis3lv02d *dev,
> {
> int err;
> int ctrl2 = p->hipass_ctrl;
> + int irq_flags = IRQF_TRIGGER_RISING | IRQF_ONESHOT;
>
> if (p->click_flags) {
> dev->write(dev, CLICK_CFG, p->click_flags);
> @@ -703,27 +704,29 @@ static void lis3lv02d_8b_configure(struct lis3lv02d *dev,
> if (p->wakeup_flags) {
> dev->write(dev, FF_WU_CFG_1, p->wakeup_flags);
> dev->write(dev, FF_WU_THS_1, p->wakeup_thresh & 0x7f);
> - /* default to 2.5ms for now */
> - dev->write(dev, FF_WU_DURATION_1, 1);
> + /* pdata value + 1 to keep this backward compatible*/
> + dev->write(dev, FF_WU_DURATION_1, p->duration1 + 1);
> ctrl2 ^= HP_FF_WU1; /* Xor to keep compatible with old pdata*/
> }
>
> if (p->wakeup_flags2) {
> dev->write(dev, FF_WU_CFG_2, p->wakeup_flags2);
> dev->write(dev, FF_WU_THS_2, p->wakeup_thresh2 & 0x7f);
> - /* default to 2.5ms for now */
> - dev->write(dev, FF_WU_DURATION_2, 1);
> + /* pdata value + 1 to keep this backward compatible*/
> + dev->write(dev, FF_WU_DURATION_2, p->duration2 + 1);
> ctrl2 ^= HP_FF_WU2; /* Xor to keep compatible with old pdata*/
> }
> /* Configure hipass filters */
> dev->write(dev, CTRL_REG2, ctrl2);
>
> + if (p->irq_flags & LIS3_IRQ2_USE_BOTH_EDGES)
> + irq_flags |= IRQF_TRIGGER_FALLING;
> +
> if (p->irq2) {
> err = request_threaded_irq(p->irq2,
> NULL,
> lis302dl_interrupt_thread2_8b,
> - IRQF_TRIGGER_RISING |
> - IRQF_ONESHOT,
> + irq_flags,
> DRIVER_NAME, &lis3_dev);
> if (err < 0)
> printk(KERN_ERR DRIVER_NAME
> @@ -739,6 +742,7 @@ int lis3lv02d_init_device(struct lis3lv02d *dev)
> {
> int err;
> irq_handler_t thread_fn;
> + int irq_flags = IRQF_TRIGGER_RISING | IRQF_ONESHOT;
>
> dev->whoami = lis3lv02d_read_8(dev, WHO_AM_I);
>
> @@ -799,6 +803,9 @@ int lis3lv02d_init_device(struct lis3lv02d *dev)
> if (dev->whoami == WAI_8B)
> lis3lv02d_8b_configure(dev, p);
>
> + if (dev->pdata->irq_flags & LIS3_IRQ1_USE_BOTH_EDGES)
> + irq_flags |= IRQF_TRIGGER_FALLING;
> +
> dev->irq_cfg = p->irq_cfg;
> if (p->irq_cfg)
> dev->write(dev, CTRL_REG3, p->irq_cfg);
> @@ -829,7 +836,7 @@ int lis3lv02d_init_device(struct lis3lv02d *dev)
>
> err = request_threaded_irq(dev->irq, lis302dl_interrupt,
> thread_fn,
> - IRQF_TRIGGER_RISING | IRQF_ONESHOT,
> + irq_flags,
> DRIVER_NAME, &lis3_dev);
>
> if (err < 0) {
> diff --git a/include/linux/lis3lv02d.h b/include/linux/lis3lv02d.h
> index 0e8a346..167f947 100644
> --- a/include/linux/lis3lv02d.h
> +++ b/include/linux/lis3lv02d.h
> @@ -36,13 +36,18 @@ struct lis3lv02d_platform_data {
> #define LIS3_IRQ_OPEN_DRAIN (1 << 6)
> #define LIS3_IRQ_ACTIVE_LOW (1 << 7)
> unsigned char irq_cfg;
> -
> +#define LIS3_IRQ1_USE_BOTH_EDGES 1
> +#define LIS3_IRQ2_USE_BOTH_EDGES 2
> + unsigned char irq_flags;
> + unsigned char duration1;
> + unsigned char duration2;
> #define LIS3_WAKEUP_X_LO (1 << 0)
> #define LIS3_WAKEUP_X_HI (1 << 1)
> #define LIS3_WAKEUP_Y_LO (1 << 2)
> #define LIS3_WAKEUP_Y_HI (1 << 3)
> #define LIS3_WAKEUP_Z_LO (1 << 4)
> #define LIS3_WAKEUP_Z_HI (1 << 5)
> +#define LIS3_WAKEUP_AOI (1 << 7) /* 'AND' combination of interrupts */
This change has nothing to do with the patch so shouldn't be here.
> unsigned char wakeup_flags;
> unsigned char wakeup_thresh;
> unsigned char wakeup_flags2;
prev parent reply other threads:[~2010-10-04 11:37 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-10-01 11:46 [RFC PATCH 0/9] lis3 accelerator feature update Samu Onkalo
[not found] ` <1285933616-16044-1-git-send-email-samu.p.onkalo-xNZwKgViW5gAvxtiuMwx3w@public.gmane.org>
2010-10-01 11:46 ` [RFC PATCH 1/9] hwmon: lis3: pm_runtime support Samu Onkalo
[not found] ` <1285933616-16044-2-git-send-email-samu.p.onkalo-xNZwKgViW5gAvxtiuMwx3w@public.gmane.org>
2010-10-02 17:14 ` [lm-sensors] " Jonathan Cameron
[not found] ` <4CA76875.1040508-KWPb1pKIrIJaa/9Udqfwiw@public.gmane.org>
2010-10-03 5:03 ` Onkalo Samu
[not found] ` <1286082228.2064.14.camel-Vo7XL3ix0D0UEupzmRo7jhl4MBrZKKet0E9HWUfgJXw@public.gmane.org>
2010-10-03 11:18 ` Jonathan Cameron
2010-10-01 11:46 ` [RFC PATCH 2/9] hwmon: lis3: regulator control Samu Onkalo
[not found] ` <1285933616-16044-3-git-send-email-samu.p.onkalo-xNZwKgViW5gAvxtiuMwx3w@public.gmane.org>
2010-10-02 17:33 ` [lm-sensors] " Jonathan Cameron
[not found] ` <4CA76CDA.4040803-KWPb1pKIrIJaa/9Udqfwiw@public.gmane.org>
2010-10-03 5:25 ` Onkalo Samu
[not found] ` <1286083558.2064.35.camel-Vo7XL3ix0D0UEupzmRo7jhl4MBrZKKet0E9HWUfgJXw@public.gmane.org>
2010-10-03 11:21 ` Jonathan Cameron
2010-10-03 11:53 ` David Lutolf
2010-10-01 11:46 ` [RFC PATCH 3/9] hwmon: lis3: Cleanup interrupt handling Samu Onkalo
2010-10-01 11:46 ` [RFC PATCH 4/9] hwmon: lis3: Update coordinates at polled device open Samu Onkalo
2010-10-01 11:46 ` [RFC PATCH 5/9] hwmon: lis3: Power on corrections Samu Onkalo
[not found] ` <1285933616-16044-6-git-send-email-samu.p.onkalo-xNZwKgViW5gAvxtiuMwx3w@public.gmane.org>
2010-10-02 17:43 ` [lm-sensors] " Jonathan Cameron
2010-10-01 11:46 ` [RFC PATCH 7/9] hwmon: lis3: Adjust fuzziness for 8 bit device Samu Onkalo
2010-10-01 11:46 ` [RFC PATCH 8/9] hwmon: lis3: use block read to access data registers Samu Onkalo
[not found] ` <1285933616-16044-9-git-send-email-samu.p.onkalo-xNZwKgViW5gAvxtiuMwx3w@public.gmane.org>
2010-10-04 11:41 ` [lm-sensors] " Jonathan Cameron
[not found] ` <4CA9BD6E.6040002-KWPb1pKIrIJaa/9Udqfwiw@public.gmane.org>
2010-10-04 13:29 ` Guenter Roeck
2010-10-01 11:46 ` [RFC PATCH 9/9] hwmon: lis3: Enhance lis3 selftest with IRQ line test Samu Onkalo
2010-10-02 2:53 ` [RFC PATCH 0/9] lis3 accelerator feature update Guenter Roeck
[not found] ` <20101002025311.GA25875-IzeFyvvaP7pWk0Htik3J/w@public.gmane.org>
2010-10-02 8:25 ` Jean Delvare
[not found] ` <20101002102528.2955d95a-R0o5gVi9kd7kN2dkZ6Wm7A@public.gmane.org>
2010-10-02 12:27 ` [lm-sensors] " Jonathan Cameron
[not found] ` <4CA72519.1070600-KWPb1pKIrIJaa/9Udqfwiw@public.gmane.org>
2010-10-02 13:16 ` Guenter Roeck
2010-10-01 11:46 ` [RFC PATCH 6/9] hwmon: lis3: New parameters to platform data Samu Onkalo
[not found] ` <1285933616-16044-7-git-send-email-samu.p.onkalo-xNZwKgViW5gAvxtiuMwx3w@public.gmane.org>
2010-10-04 11:37 ` Jonathan Cameron [this message]
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=4CA9BC84.1090403@cam.ac.uk \
--to=jic23-kwpb1pkirijaa/9udqfwiw@public.gmane.org \
--cc=eric.piel-VkQ1JFuSMpfAbQlEx87xDw@public.gmane.org \
--cc=guenter.roeck-IzeFyvvaP7pWk0Htik3J/w@public.gmane.org \
--cc=khali-PUYAD+kWke1g9hUCZPvPmw@public.gmane.org \
--cc=kuninori.morimoto.gx-zM6kxYcvzFBBDgjK7y7TUQ@public.gmane.org \
--cc=linux-i2c-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=lm-sensors-GZX6beZjE8VD60Wz+7aTrA@public.gmane.org \
--cc=samu.p.onkalo-xNZwKgViW5gAvxtiuMwx3w@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