linux-omap.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Tony Lindgren <tony@atomide.com>
To: Timo Kokkonen <timo.t.kokkonen@iki.fi>, Kevin Hilman <khilman@ti.com>
Cc: linux-omap@vger.kernel.org, linux-media@vger.kernel.org
Subject: Re: [PATCHv2 7/8] ir-rx51: Convert latency constraints to PM QoS API
Date: Fri, 24 Aug 2012 13:39:58 -0700	[thread overview]
Message-ID: <20120824203957.GC1303@atomide.com> (raw)
In-Reply-To: <1345820986-4597-8-git-send-email-timo.t.kokkonen@iki.fi>

* Timo Kokkonen <timo.t.kokkonen@iki.fi> [120824 08:11]:
> Convert the driver from the obsolete omap_pm_set_max_mpu_wakeup_lat
> API to the new PM QoS API. This allows the callback to be removed from
> the platform data structure.
> 
> The latency requirements are also adjusted to prevent the MPU from
> going into sleep mode. This is needed as the GP timers have no means
> to wake up the MPU once it has gone into sleep. The "side effect" is
> that from now on the driver actually works even if there is no
> background load keeping the MPU awake.
> 
> Signed-off-by: Timo Kokkonen <timo.t.kokkonen@iki.fi>

This should get acked by Kevin ideally. Other than that:

Acked-by: Tony Lindgren <tony@atomide.com>

> ---
>  arch/arm/mach-omap2/board-rx51-peripherals.c |  2 --
>  drivers/media/rc/ir-rx51.c                   | 15 ++++++++++-----
>  include/media/ir-rx51.h                      |  2 --
>  3 files changed, 10 insertions(+), 9 deletions(-)
> 
> diff --git a/arch/arm/mach-omap2/board-rx51-peripherals.c b/arch/arm/mach-omap2/board-rx51-peripherals.c
> index ca07264..e0750cb 100644
> --- a/arch/arm/mach-omap2/board-rx51-peripherals.c
> +++ b/arch/arm/mach-omap2/board-rx51-peripherals.c
> @@ -34,7 +34,6 @@
>  #include <plat/gpmc.h>
>  #include <plat/onenand.h>
>  #include <plat/gpmc-smc91x.h>
> -#include <plat/omap-pm.h>
>  
>  #include <mach/board-rx51.h>
>  
> @@ -1227,7 +1226,6 @@ static void __init rx51_init_tsc2005(void)
>  
>  #if defined(CONFIG_IR_RX51) || defined(CONFIG_IR_RX51_MODULE)
>  static struct lirc_rx51_platform_data rx51_lirc_data = {
> -	.set_max_mpu_wakeup_lat = omap_pm_set_max_mpu_wakeup_lat,
>  	.pwm_timer = 9, /* Use GPT 9 for CIR */
>  };
>  
> diff --git a/drivers/media/rc/ir-rx51.c b/drivers/media/rc/ir-rx51.c
> index 6e1ffa6..008cdab 100644
> --- a/drivers/media/rc/ir-rx51.c
> +++ b/drivers/media/rc/ir-rx51.c
> @@ -25,6 +25,7 @@
>  #include <linux/platform_device.h>
>  #include <linux/sched.h>
>  #include <linux/wait.h>
> +#include <linux/pm_qos.h>
>  
>  #include <plat/dmtimer.h>
>  #include <plat/clock.h>
> @@ -49,6 +50,7 @@ struct lirc_rx51 {
>  	struct omap_dm_timer *pulse_timer;
>  	struct device	     *dev;
>  	struct lirc_rx51_platform_data *pdata;
> +	struct pm_qos_request	pm_qos_request;
>  	wait_queue_head_t     wqueue;
>  
>  	unsigned long	fclk_khz;
> @@ -268,10 +270,14 @@ static ssize_t lirc_rx51_write(struct file *file, const char *buf,
>  		lirc_rx51->wbuf[count] = -1; /* Insert termination mark */
>  
>  	/*
> -	 * Adjust latency requirements so the device doesn't go in too
> -	 * deep sleep states
> +	 * If the MPU is going into too deep sleep state while we are
> +	 * transmitting the IR code, timers will not be able to wake
> +	 * up the MPU. Thus, we need to set a strict enough latency
> +	 * requirement in order to ensure the interrupts come though
> +	 * properly.
>  	 */
> -	lirc_rx51->pdata->set_max_mpu_wakeup_lat(lirc_rx51->dev, 50);
> +	pm_qos_add_request(&lirc_rx51->pm_qos_request,
> +			PM_QOS_CPU_DMA_LATENCY,	10);
>  
>  	lirc_rx51_on(lirc_rx51);
>  	lirc_rx51->wbuf_index = 1;
> @@ -292,8 +298,7 @@ static ssize_t lirc_rx51_write(struct file *file, const char *buf,
>  	 */
>  	lirc_rx51_stop_tx(lirc_rx51);
>  
> -	/* We can sleep again */
> -	lirc_rx51->pdata->set_max_mpu_wakeup_lat(lirc_rx51->dev, -1);
> +	pm_qos_remove_request(&lirc_rx51->pm_qos_request);
>  
>  	return n;
>  }
> diff --git a/include/media/ir-rx51.h b/include/media/ir-rx51.h
> index 104aa89..57523f2 100644
> --- a/include/media/ir-rx51.h
> +++ b/include/media/ir-rx51.h
> @@ -3,8 +3,6 @@
>  
>  struct lirc_rx51_platform_data {
>  	int pwm_timer;
> -
> -	int(*set_max_mpu_wakeup_lat)(struct device *dev, long t);
>  };
>  
>  #endif
> -- 
> 1.7.12
> 
> --
> To unsubscribe from this list: send the line "unsubscribe linux-omap" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html

  reply	other threads:[~2012-08-24 20:40 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-08-24 15:09 [PATCHv2 0/8] ir-rx51: Fixes in response to review comments Timo Kokkonen
2012-08-24 15:09 ` [PATCHv2 1/8] ir-rx51: Adjust dependencies Timo Kokkonen
2012-08-24 15:09 ` [PATCHv2 2/8] ir-rx51: Handle signals properly Timo Kokkonen
2012-08-24 15:09 ` [PATCHv2 3/8] ir-rx51: Trivial fixes Timo Kokkonen
2012-08-24 15:09 ` [PATCHv2 4/8] ir-rx51: Clean up timer initialization code Timo Kokkonen
2012-08-24 15:09 ` [PATCHv2 5/8] ir-rx51: Move platform data checking into probe function Timo Kokkonen
2012-08-24 15:09 ` [PATCHv2 6/8] ir-rx51: Replace module_{init,exit} macros with module_platform_driver Timo Kokkonen
2012-08-24 15:09 ` [PATCHv2 7/8] ir-rx51: Convert latency constraints to PM QoS API Timo Kokkonen
2012-08-24 20:39   ` Tony Lindgren [this message]
2012-08-27  9:25     ` Jean Pihet
2012-08-27 11:11       ` Timo Kokkonen
2012-08-24 15:09 ` [PATCHv2 8/8] ir-rx51: Remove useless variable from struct lirc_rx51 Timo Kokkonen

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=20120824203957.GC1303@atomide.com \
    --to=tony@atomide.com \
    --cc=khilman@ti.com \
    --cc=linux-media@vger.kernel.org \
    --cc=linux-omap@vger.kernel.org \
    --cc=timo.t.kokkonen@iki.fi \
    /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;
as well as URLs for NNTP newsgroup(s).