public inbox for linux-i2c@vger.kernel.org
 help / color / mirror / Atom feed
From: "Éric Piel" <eric.piel@tremplin-utc.net>
To: Samu Onkalo <samu.p.onkalo@nokia.com>
Cc: linux-kernel@vger.kernel.org, lm-sensors@lm-sensors.org,
	linux-i2c@vger.kernel.org
Subject: Re: [PATCH 03/12] hwmon: lis3: Cleanup interrupt handling
Date: Sun, 24 Oct 2010 16:18:29 +0200	[thread overview]
Message-ID: <4CC44035.5070303@tremplin-utc.net> (raw)
In-Reply-To: <1287748654-2626-4-git-send-email-samu.p.onkalo@nokia.com>

Op 22-10-10 13:57, Samu Onkalo schreef:
> Irqcfg moved to chip data instead of platform data.
> This simplifies access in interrupt handler little bit.
>
> Input device open and close functions set status for
> interrupt threaded handler once.
>
> Unnecessary check for interrupt source removed since
> it is enough that active interrupt line indicates that
> there was an interrupt.
>
> Signed-off-by: Samu Onkalo<samu.p.onkalo@nokia.com>
Acked-by: Eric Piel <eric.piel@tremplin-utc.net>
> ---
>   drivers/hwmon/lis3lv02d.c |   33 +++++++++++----------------------
>   drivers/hwmon/lis3lv02d.h |    2 ++
>   2 files changed, 13 insertions(+), 22 deletions(-)
>
> diff --git a/drivers/hwmon/lis3lv02d.c b/drivers/hwmon/lis3lv02d.c
> index ade6f3a..fe97390 100644
> --- a/drivers/hwmon/lis3lv02d.c
> +++ b/drivers/hwmon/lis3lv02d.c
> @@ -309,10 +309,14 @@ static void lis3lv02d_joystick_open(struct input_polled_dev *pidev)
>   {
>   	if (lis3_dev.pm_dev)
>   		pm_runtime_get_sync(lis3_dev.pm_dev);
> +
> +	if (lis3_dev.pdata&&  lis3_dev.whoami == WAI_8B&&  lis3_dev.idev)
> +		atomic_set(&lis3_dev.wake_thread, 1);
>   }
>
>   static void lis3lv02d_joystick_close(struct input_polled_dev *pidev)
>   {
> +	atomic_set(&lis3_dev.wake_thread, 0);
>   	if (lis3_dev.pm_dev)
>   		pm_runtime_put(lis3_dev.pm_dev);
>   }
> @@ -332,8 +336,7 @@ static irqreturn_t lis302dl_interrupt(int irq, void *dummy)
>   	wake_up_interruptible(&lis3_dev.misc_wait);
>   	kill_fasync(&lis3_dev.async_queue, SIGIO, POLL_IN);
>   out:
> -	if (lis3_dev.pdata&&  lis3_dev.whoami == WAI_8B&&  lis3_dev.idev&&
> -	    lis3_dev.idev->input->users)
> +	if (atomic_read(&lis3_dev.wake_thread))
>   		return IRQ_WAKE_THREAD;
>   	return IRQ_HANDLED;
>   }
> @@ -364,31 +367,15 @@ static void lis302dl_interrupt_handle_click(struct lis3lv02d *lis3)
>   	mutex_unlock(&lis3->mutex);
>   }
>
> -static void lis302dl_interrupt_handle_ff_wu(struct lis3lv02d *lis3)
> -{
> -	u8 wu1_src;
> -	u8 wu2_src;
> -
> -	lis3->read(lis3, FF_WU_SRC_1,&wu1_src);
> -	lis3->read(lis3, FF_WU_SRC_2,&wu2_src);
> -
> -	wu1_src = wu1_src&  FF_WU_SRC_IA ? wu1_src : 0;
> -	wu2_src = wu2_src&  FF_WU_SRC_IA ? wu2_src : 0;
> -
> -	/* joystick poll is internally protected by the lis3->mutex. */
> -	if (wu1_src || wu2_src)
> -		lis3lv02d_joystick_poll(lis3_dev.idev);
> -}
> -
>   static irqreturn_t lis302dl_interrupt_thread1_8b(int irq, void *data)
>   {
>
>   	struct lis3lv02d *lis3 = data;
>
> -	if ((lis3->pdata->irq_cfg&  LIS3_IRQ1_MASK) == LIS3_IRQ1_CLICK)
> +	if ((lis3->irq_cfg&  LIS3_IRQ1_MASK) == LIS3_IRQ1_CLICK)
>   		lis302dl_interrupt_handle_click(lis3);
>   	else
> -		lis302dl_interrupt_handle_ff_wu(lis3);
> +		lis3lv02d_joystick_poll(lis3->idev);
>
>   	return IRQ_HANDLED;
>   }
> @@ -398,10 +385,10 @@ static irqreturn_t lis302dl_interrupt_thread2_8b(int irq, void *data)
>
>   	struct lis3lv02d *lis3 = data;
>
> -	if ((lis3->pdata->irq_cfg&  LIS3_IRQ2_MASK) == LIS3_IRQ2_CLICK)
> +	if ((lis3->irq_cfg&  LIS3_IRQ2_MASK) == LIS3_IRQ2_CLICK)
>   		lis302dl_interrupt_handle_click(lis3);
>   	else
> -		lis302dl_interrupt_handle_ff_wu(lis3);
> +		lis3lv02d_joystick_poll(lis3->idev);
>
>   	return IRQ_HANDLED;
>   }
> @@ -788,6 +775,7 @@ int lis3lv02d_init_device(struct lis3lv02d *dev)
>   	}
>
>   	mutex_init(&dev->mutex);
> +	atomic_set(&dev->wake_thread, 0);
>
>   	lis3lv02d_add_fs(dev);
>   	lis3lv02d_poweron(dev);
> @@ -808,6 +796,7 @@ int lis3lv02d_init_device(struct lis3lv02d *dev)
>   		if (dev->whoami == WAI_8B)
>   			lis3lv02d_8b_configure(dev, p);
>
> +		dev->irq_cfg = p->irq_cfg;
>   		if (p->irq_cfg)
>   			dev->write(dev, CTRL_REG3, p->irq_cfg);
>   	}
> diff --git a/drivers/hwmon/lis3lv02d.h b/drivers/hwmon/lis3lv02d.h
> index 7661e59..66e37b1 100644
> --- a/drivers/hwmon/lis3lv02d.h
> +++ b/drivers/hwmon/lis3lv02d.h
> @@ -252,6 +252,8 @@ struct lis3lv02d {
>   	struct fasync_struct	*async_queue; /* queue for the misc device */
>   	wait_queue_head_t	misc_wait; /* Wait queue for the misc device */
>   	unsigned long		misc_opened; /* bit0: whether the device is open */
> +	atomic_t                wake_thread;
> +	unsigned char           irq_cfg;
>
>   	struct lis3lv02d_platform_data *pdata;	/* for passing board config */
>   	struct mutex		mutex;     /* Serialize poll and selftest */


_______________________________________________
lm-sensors mailing list
lm-sensors@lm-sensors.org
http://lists.lm-sensors.org/mailman/listinfo/lm-sensors

  reply	other threads:[~2010-10-24 14:18 UTC|newest]

Thread overview: 39+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-10-22 11:57 [PATCH 00/12] lis3 accelerator feature update Samu Onkalo
2010-10-22 11:57 ` [PATCH 03/12] hwmon: lis3: Cleanup interrupt handling Samu Onkalo
2010-10-24 14:18   ` Éric Piel [this message]
2010-10-22 11:57 ` [PATCH 04/12] hwmon: lis3: Update coordinates at polled device open Samu Onkalo
2010-10-24 14:19   ` Éric Piel
2010-10-22 11:57 ` [PATCH 05/12] hwmon: lis3: Power on corrections Samu Onkalo
2010-10-24 14:22   ` Éric Piel
2010-10-22 11:57 ` [PATCH 07/12] hwmon: lis3: New parameters to platform data Samu Onkalo
     [not found]   ` <1287748654-2626-8-git-send-email-samu.p.onkalo-xNZwKgViW5gAvxtiuMwx3w@public.gmane.org>
2010-10-22 16:17     ` Jonathan Cameron
2010-10-24 14:27   ` Éric Piel
2010-10-22 11:57 ` [PATCH 08/12] hwmon: lis3: Adjust fuzziness for 8 bit device Samu Onkalo
2010-10-24 14:33   ` Éric Piel
2010-10-22 11:57 ` [PATCH 09/12] hwmon: lis3: use block read to access data registers Samu Onkalo
2010-10-22 16:20   ` Jonathan Cameron
2010-10-24 14:53   ` Éric Piel
2010-10-22 11:57 ` [PATCH 10/12] hwmon: lis3: Enhance lis3 selftest with IRQ line test Samu Onkalo
     [not found]   ` <1287748654-2626-11-git-send-email-samu.p.onkalo-xNZwKgViW5gAvxtiuMwx3w@public.gmane.org>
2010-10-24 14:58     ` Éric Piel
2010-10-22 11:57 ` [PATCH 12/12] hwmon: lis3: Release resources is case of failure Samu Onkalo
     [not found]   ` <1287748654-2626-13-git-send-email-samu.p.onkalo-xNZwKgViW5gAvxtiuMwx3w@public.gmane.org>
2010-10-24 14:59     ` Éric Piel
     [not found] ` <1287748654-2626-1-git-send-email-samu.p.onkalo-xNZwKgViW5gAvxtiuMwx3w@public.gmane.org>
2010-10-22 11:57   ` [PATCH 01/12] hwmon: lis3: pm_runtime support Samu Onkalo
     [not found]     ` <1287748654-2626-2-git-send-email-samu.p.onkalo-xNZwKgViW5gAvxtiuMwx3w@public.gmane.org>
2010-10-22 16:13       ` Jonathan Cameron
2010-10-24 14:03     ` Éric Piel
2010-10-22 11:57   ` [PATCH 02/12] hwmon: lis3: regulator control Samu Onkalo
     [not found]     ` <1287748654-2626-3-git-send-email-samu.p.onkalo-xNZwKgViW5gAvxtiuMwx3w@public.gmane.org>
2010-10-22 16:11       ` Jonathan Cameron
2010-10-24 14:59     ` Éric Piel
2010-10-22 11:57   ` [PATCH 06/12] hwmon: lis3: restore axis enabled bits Samu Onkalo
2010-10-24 14:24     ` Éric Piel
2010-10-22 11:57   ` [PATCH 11/12] hwmon: lis3: Short explanations of platform data fields Samu Onkalo
     [not found]     ` <1287748654-2626-12-git-send-email-samu.p.onkalo-xNZwKgViW5gAvxtiuMwx3w@public.gmane.org>
2010-10-22 16:25       ` Jonathan Cameron
     [not found]         ` <4CC1BAEE.3030708-KWPb1pKIrIJaa/9Udqfwiw@public.gmane.org>
2010-10-23 13:39           ` [PATCHv2] " Samu Onkalo
     [not found]             ` <1287841184-4871-1-git-send-email-samu.p.onkalo-xNZwKgViW5gAvxtiuMwx3w@public.gmane.org>
2010-10-24 14:59               ` Éric Piel
2010-10-22 20:08   ` [PATCH 00/12] lis3 accelerator feature update Guenter Roeck
2010-10-22 23:44     ` Éric Piel
     [not found]       ` <4CC221F0.5040608-VkQ1JFuSMpfAbQlEx87xDw@public.gmane.org>
2010-10-23  1:05         ` Guenter Roeck
2010-10-24 15:05   ` Éric Piel
     [not found]     ` <4CC44B3D.5030404-VkQ1JFuSMpfAbQlEx87xDw@public.gmane.org>
2010-10-24 15:35       ` Guenter Roeck
     [not found]         ` <20101024153548.GA14303-IzeFyvvaP7pWk0Htik3J/w@public.gmane.org>
2010-10-24 16:35           ` [lm-sensors] " Guenter Roeck
     [not found]             ` <20101024163529.GA14650-IzeFyvvaP7pWk0Htik3J/w@public.gmane.org>
2010-10-24 17:01               ` Guenter Roeck
2010-10-25  6:10       ` samu.p.onkalo-xNZwKgViW5gAvxtiuMwx3w

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=4CC44035.5070303@tremplin-utc.net \
    --to=eric.piel@tremplin-utc.net \
    --cc=linux-i2c@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=lm-sensors@lm-sensors.org \
    --cc=samu.p.onkalo@nokia.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox