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
next prev parent 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).