* Timo Kokkonen <timo.t.kokko...@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.kokko...@iki.fi>

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

Acked-by: Tony Lindgren <t...@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 majord...@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to