Re: [PATCH 01/16] ARM: OMAP2+: Drop unused pm-noop

From: Mauro Carvalho Chehab
Date: Mon Apr 30 2018 - 14:57:44 EST


Em Mon, 23 Apr 2018 10:45:34 -0700
Tony Lindgren <tony@xxxxxxxxxxx> escreveu:

> Looks like these functions don't do anything in the mainline kernel so
> we can just drop it.
>
> Note that we must now also remove ir-rx51 pdata as it relies on the dummy
> platform data that does not do anything. And ir-rx51 is calling a pdata
> callback that doesn't do anything without checking if it exists first.
>
> For configuring device specific minimal latencies, the interface to use
> is pm_qos_add_request(). For an example, see what was done in commit
> 9834ffd1ecc3 ("ASoC: omap-mcbsp: Add PM QoS support for McBSP to prevent
> glitches"). I've added some comments to ir-rx51 so people using it can
> add pm_qos support and test it.
>
> Cc: Ivaylo Dimitrov <ivo.g.dimitrov.75@xxxxxxxxx>
> Cc: Kevin Hilman <khilman@xxxxxxxxxx>
> Cc: Laurent Pinchart <laurent.pinchart@xxxxxxxxxxxxxxxx>
> Cc: Mauro Carvalho Chehab <mchehab@xxxxxxxxxx>

Acked-by: Mauro Carvalho Chehab <mchehab+samsung@xxxxxxxxxx>

> Cc: Tomi Valkeinen <tomi.valkeinen@xxxxxx>
> Signed-off-by: Tony Lindgren <tony@xxxxxxxxxxx>
> ---
> arch/arm/mach-omap2/Makefile | 1 -
> arch/arm/mach-omap2/display.c | 7 -
> arch/arm/mach-omap2/hsmmc.c | 1 -
> arch/arm/mach-omap2/i2c.c | 1 -
> arch/arm/mach-omap2/io.c | 3 -
> arch/arm/mach-omap2/omap-pm-noop.c | 176 --------------------
> arch/arm/mach-omap2/omap-pm.h | 161 ------------------
> arch/arm/mach-omap2/pdata-quirks.c | 15 --
> arch/arm/mach-omap2/pm-debug.c | 5 -
> arch/arm/mach-omap2/pm.c | 10 +-
> arch/arm/mach-omap2/timer.c | 1 -
> arch/arm/plat-omap/Kconfig | 10 --
> drivers/media/rc/ir-rx51.c | 17 +-
> include/linux/platform_data/media/ir-rx51.h | 9 -
> 14 files changed, 4 insertions(+), 413 deletions(-)
> delete mode 100644 arch/arm/mach-omap2/omap-pm-noop.c
> delete mode 100644 arch/arm/mach-omap2/omap-pm.h
> delete mode 100644 include/linux/platform_data/media/ir-rx51.h
>
> diff --git a/arch/arm/mach-omap2/Makefile b/arch/arm/mach-omap2/Makefile
> --- a/arch/arm/mach-omap2/Makefile
> +++ b/arch/arm/mach-omap2/Makefile
> @@ -78,7 +78,6 @@ endif
> omap-4-5-pm-common = omap-mpuss-lowpower.o
> obj-$(CONFIG_ARCH_OMAP4) += $(omap-4-5-pm-common)
> obj-$(CONFIG_SOC_OMAP5) += $(omap-4-5-pm-common)
> -obj-$(CONFIG_OMAP_PM_NOOP) += omap-pm-noop.o
>
> ifeq ($(CONFIG_PM),y)
> obj-$(CONFIG_ARCH_OMAP2) += pm24xx.o
> diff --git a/arch/arm/mach-omap2/display.c b/arch/arm/mach-omap2/display.c
> --- a/arch/arm/mach-omap2/display.c
> +++ b/arch/arm/mach-omap2/display.c
> @@ -32,7 +32,6 @@
> #include <linux/platform_data/omapdss.h>
> #include "omap_hwmod.h"
> #include "omap_device.h"
> -#include "omap-pm.h"
> #include "common.h"
>
> #include "soc.h"
> @@ -126,11 +125,6 @@ static void omap_dsi_disable_pads(int dsi_id, unsigned lane_mask)
> omap4_dsi_mux_pads(dsi_id, 0);
> }
>
> -static int omap_dss_set_min_bus_tput(struct device *dev, unsigned long tput)
> -{
> - return omap_pm_set_min_bus_tput(dev, OCP_INITIATOR_AGENT, tput);
> -}
> -
> static enum omapdss_version __init omap_display_get_version(void)
> {
> if (cpu_is_omap24xx())
> @@ -169,7 +163,6 @@ static int __init omapdss_init_fbdev(void)
> static struct omap_dss_board_info board_data = {
> .dsi_enable_pads = omap_dsi_enable_pads,
> .dsi_disable_pads = omap_dsi_disable_pads,
> - .set_min_bus_tput = omap_dss_set_min_bus_tput,
> };
> struct device_node *node;
> int r;
> diff --git a/arch/arm/mach-omap2/hsmmc.c b/arch/arm/mach-omap2/hsmmc.c
> --- a/arch/arm/mach-omap2/hsmmc.c
> +++ b/arch/arm/mach-omap2/hsmmc.c
> @@ -18,7 +18,6 @@
>
> #include "soc.h"
> #include "omap_device.h"
> -#include "omap-pm.h"
>
> #include "hsmmc.h"
> #include "control.h"
> diff --git a/arch/arm/mach-omap2/i2c.c b/arch/arm/mach-omap2/i2c.c
> --- a/arch/arm/mach-omap2/i2c.c
> +++ b/arch/arm/mach-omap2/i2c.c
> @@ -22,7 +22,6 @@
> #include "soc.h"
> #include "omap_hwmod.h"
> #include "omap_device.h"
> -#include "omap-pm.h"
>
> #include "prm.h"
> #include "common.h"
> diff --git a/arch/arm/mach-omap2/io.c b/arch/arm/mach-omap2/io.c
> --- a/arch/arm/mach-omap2/io.c
> +++ b/arch/arm/mach-omap2/io.c
> @@ -37,7 +37,6 @@
> #include "clock.h"
> #include "clock2xxx.h"
> #include "clock3xxx.h"
> -#include "omap-pm.h"
> #include "sdrc.h"
> #include "control.h"
> #include "serial.h"
> @@ -421,8 +420,6 @@ static void __init __maybe_unused omap_hwmod_init_postsetup(void)
> postsetup_state = _HWMOD_STATE_ENABLED;
> #endif
> omap_hwmod_for_each(_set_hwmod_postsetup_state, &postsetup_state);
> -
> - omap_pm_if_early_init();
> }
>
> static void __init __maybe_unused omap_common_late_init(void)
> diff --git a/arch/arm/mach-omap2/omap-pm-noop.c b/arch/arm/mach-omap2/omap-pm-noop.c
> deleted file mode 100644
> --- a/arch/arm/mach-omap2/omap-pm-noop.c
> +++ /dev/null
> @@ -1,176 +0,0 @@
> -// SPDX-License-Identifier: GPL-2.0
> -/*
> - * omap-pm-noop.c - OMAP power management interface - dummy version
> - *
> - * This code implements the OMAP power management interface to
> - * drivers, CPUIdle, CPUFreq, and DSP Bridge. It is strictly for
> - * debug/demonstration use, as it does nothing but printk() whenever a
> - * function is called (when DEBUG is defined, below)
> - *
> - * Copyright (C) 2008-2009 Texas Instruments, Inc.
> - * Copyright (C) 2008-2009 Nokia Corporation
> - * Paul Walmsley
> - *
> - * Interface developed by (in alphabetical order):
> - * Karthik Dasu, Tony Lindgren, Rajendra Nayak, Sakari Poussa, Veeramanikandan
> - * Raju, Anand Sawant, Igor Stoppa, Paul Walmsley, Richard Woodruff
> - */
> -
> -#undef DEBUG
> -
> -#include <linux/init.h>
> -#include <linux/cpufreq.h>
> -#include <linux/device.h>
> -#include <linux/platform_device.h>
> -
> -#include "omap_device.h"
> -#include "omap-pm.h"
> -
> -static bool off_mode_enabled;
> -static int dummy_context_loss_counter;
> -
> -/*
> - * Device-driver-originated constraints (via board-*.c files)
> - */
> -
> -int omap_pm_set_max_mpu_wakeup_lat(struct device *dev, long t)
> -{
> - if (!dev || t < -1) {
> - WARN(1, "OMAP PM: %s: invalid parameter(s)", __func__);
> - return -EINVAL;
> - }
> -
> - if (t == -1)
> - pr_debug("OMAP PM: remove max MPU wakeup latency constraint: dev %s\n",
> - dev_name(dev));
> - else
> - pr_debug("OMAP PM: add max MPU wakeup latency constraint: dev %s, t = %ld usec\n",
> - dev_name(dev), t);
> -
> - /*
> - * For current Linux, this needs to map the MPU to a
> - * powerdomain, then go through the list of current max lat
> - * constraints on the MPU and find the smallest. If
> - * the latency constraint has changed, the code should
> - * recompute the state to enter for the next powerdomain
> - * state.
> - *
> - * TI CDP code can call constraint_set here.
> - */
> -
> - return 0;
> -}
> -
> -int omap_pm_set_min_bus_tput(struct device *dev, u8 agent_id, unsigned long r)
> -{
> - if (!dev || (agent_id != OCP_INITIATOR_AGENT &&
> - agent_id != OCP_TARGET_AGENT)) {
> - WARN(1, "OMAP PM: %s: invalid parameter(s)", __func__);
> - return -EINVAL;
> - }
> -
> - if (r == 0)
> - pr_debug("OMAP PM: remove min bus tput constraint: dev %s for agent_id %d\n",
> - dev_name(dev), agent_id);
> - else
> - pr_debug("OMAP PM: add min bus tput constraint: dev %s for agent_id %d: rate %ld KiB\n",
> - dev_name(dev), agent_id, r);
> -
> - /*
> - * This code should model the interconnect and compute the
> - * required clock frequency, convert that to a VDD2 OPP ID, then
> - * set the VDD2 OPP appropriately.
> - *
> - * TI CDP code can call constraint_set here on the VDD2 OPP.
> - */
> -
> - return 0;
> -}
> -
> -/*
> - * DSP Bridge-specific constraints
> - */
> -
> -
> -/**
> - * omap_pm_enable_off_mode - notify OMAP PM that off-mode is enabled
> - *
> - * Intended for use only by OMAP PM core code to notify this layer
> - * that off mode has been enabled.
> - */
> -void omap_pm_enable_off_mode(void)
> -{
> - off_mode_enabled = true;
> -}
> -
> -/**
> - * omap_pm_disable_off_mode - notify OMAP PM that off-mode is disabled
> - *
> - * Intended for use only by OMAP PM core code to notify this layer
> - * that off mode has been disabled.
> - */
> -void omap_pm_disable_off_mode(void)
> -{
> - off_mode_enabled = false;
> -}
> -
> -/*
> - * Device context loss tracking
> - */
> -
> -#ifdef CONFIG_ARCH_OMAP2PLUS
> -
> -int omap_pm_get_dev_context_loss_count(struct device *dev)
> -{
> - struct platform_device *pdev = to_platform_device(dev);
> - int count;
> -
> - if (WARN_ON(!dev))
> - return -ENODEV;
> -
> - if (dev->pm_domain == &omap_device_pm_domain) {
> - count = omap_device_get_context_loss_count(pdev);
> - } else {
> - WARN_ONCE(off_mode_enabled, "omap_pm: using dummy context loss counter; device %s should be converted to omap_device",
> - dev_name(dev));
> -
> - count = dummy_context_loss_counter;
> -
> - if (off_mode_enabled) {
> - count++;
> - /*
> - * Context loss count has to be a non-negative value.
> - * Clear the sign bit to get a value range from 0 to
> - * INT_MAX.
> - */
> - count &= INT_MAX;
> - dummy_context_loss_counter = count;
> - }
> - }
> -
> - pr_debug("OMAP PM: context loss count for dev %s = %d\n",
> - dev_name(dev), count);
> -
> - return count;
> -}
> -
> -#else
> -
> -int omap_pm_get_dev_context_loss_count(struct device *dev)
> -{
> - return dummy_context_loss_counter;
> -}
> -
> -#endif
> -
> -/* Should be called before clk framework init */
> -int __init omap_pm_if_early_init(void)
> -{
> - return 0;
> -}
> -
> -/* Must be called after clock framework is initialized */
> -int __init omap_pm_if_init(void)
> -{
> - return 0;
> -}
> diff --git a/arch/arm/mach-omap2/omap-pm.h b/arch/arm/mach-omap2/omap-pm.h
> deleted file mode 100644
> --- a/arch/arm/mach-omap2/omap-pm.h
> +++ /dev/null
> @@ -1,161 +0,0 @@
> -/* SPDX-License-Identifier: GPL-2.0 */
> -/*
> - * omap-pm.h - OMAP power management interface
> - *
> - * Copyright (C) 2008-2010 Texas Instruments, Inc.
> - * Copyright (C) 2008-2010 Nokia Corporation
> - * Paul Walmsley
> - *
> - * Interface developed by (in alphabetical order): Karthik Dasu, Jouni
> - * HÃgander, Tony Lindgren, Rajendra Nayak, Sakari Poussa,
> - * Veeramanikandan Raju, Anand Sawant, Igor Stoppa, Paul Walmsley,
> - * Richard Woodruff
> - */
> -
> -#ifndef ASM_ARM_ARCH_OMAP_OMAP_PM_H
> -#define ASM_ARM_ARCH_OMAP_OMAP_PM_H
> -
> -#include <linux/device.h>
> -#include <linux/cpufreq.h>
> -#include <linux/clk.h>
> -#include <linux/pm_opp.h>
> -
> -/*
> - * agent_id values for use with omap_pm_set_min_bus_tput():
> - *
> - * OCP_INITIATOR_AGENT is only valid for devices that can act as
> - * initiators -- it represents the device's L3 interconnect
> - * connection. OCP_TARGET_AGENT represents the device's L4
> - * interconnect connection.
> - */
> -#define OCP_TARGET_AGENT 1
> -#define OCP_INITIATOR_AGENT 2
> -
> -/**
> - * omap_pm_if_early_init - OMAP PM init code called before clock fw init
> - * @mpu_opp_table: array ptr to struct omap_opp for MPU
> - * @dsp_opp_table: array ptr to struct omap_opp for DSP
> - * @l3_opp_table : array ptr to struct omap_opp for CORE
> - *
> - * Initialize anything that must be configured before the clock
> - * framework starts. The "_if_" is to avoid name collisions with the
> - * PM idle-loop code.
> - */
> -int __init omap_pm_if_early_init(void);
> -
> -/**
> - * omap_pm_if_init - OMAP PM init code called after clock fw init
> - *
> - * The main initialization code. OPP tables are passed in here. The
> - * "_if_" is to avoid name collisions with the PM idle-loop code.
> - */
> -int __init omap_pm_if_init(void);
> -
> -/*
> - * Device-driver-originated constraints (via board-*.c files, platform_data)
> - */
> -
> -
> -/**
> - * omap_pm_set_max_mpu_wakeup_lat - set the maximum MPU wakeup latency
> - * @dev: struct device * requesting the constraint
> - * @t: maximum MPU wakeup latency in microseconds
> - *
> - * Request that the maximum interrupt latency for the MPU to be no
> - * greater than @t microseconds. "Interrupt latency" in this case is
> - * defined as the elapsed time from the occurrence of a hardware or
> - * timer interrupt to the time when the device driver's interrupt
> - * service routine has been entered by the MPU.
> - *
> - * It is intended that underlying PM code will use this information to
> - * determine what power state to put the MPU powerdomain into, and
> - * possibly the CORE powerdomain as well, since interrupt handling
> - * code currently runs from SDRAM. Advanced PM or board*.c code may
> - * also configure interrupt controller priorities, OCP bus priorities,
> - * CPU speed(s), etc.
> - *
> - * This function will not affect device wakeup latency, e.g., time
> - * elapsed from when a device driver enables a hardware device with
> - * clk_enable(), to when the device is ready for register access or
> - * other use. To control this device wakeup latency, use
> - * omap_pm_set_max_dev_wakeup_lat()
> - *
> - * Multiple calls to omap_pm_set_max_mpu_wakeup_lat() will replace the
> - * previous t value. To remove the latency target for the MPU, call
> - * with t = -1.
> - *
> - * XXX This constraint will be deprecated soon in favor of the more
> - * general omap_pm_set_max_dev_wakeup_lat()
> - *
> - * Returns -EINVAL for an invalid argument, -ERANGE if the constraint
> - * is not satisfiable, or 0 upon success.
> - */
> -int omap_pm_set_max_mpu_wakeup_lat(struct device *dev, long t);
> -
> -
> -/**
> - * omap_pm_set_min_bus_tput - set minimum bus throughput needed by device
> - * @dev: struct device * requesting the constraint
> - * @tbus_id: interconnect to operate on (OCP_{INITIATOR,TARGET}_AGENT)
> - * @r: minimum throughput (in KiB/s)
> - *
> - * Request that the minimum data throughput on the OCP interconnect
> - * attached to device @dev interconnect agent @tbus_id be no less
> - * than @r KiB/s.
> - *
> - * It is expected that the OMAP PM or bus code will use this
> - * information to set the interconnect clock to run at the lowest
> - * possible speed that satisfies all current system users. The PM or
> - * bus code will adjust the estimate based on its model of the bus, so
> - * device driver authors should attempt to specify an accurate
> - * quantity for their device use case, and let the PM or bus code
> - * overestimate the numbers as necessary to handle request/response
> - * latency, other competing users on the system, etc. On OMAP2/3, if
> - * a driver requests a minimum L4 interconnect speed constraint, the
> - * code will also need to add an minimum L3 interconnect speed
> - * constraint,
> - *
> - * Multiple calls to omap_pm_set_min_bus_tput() will replace the
> - * previous rate value for this device. To remove the interconnect
> - * throughput restriction for this device, call with r = 0.
> - *
> - * Returns -EINVAL for an invalid argument, -ERANGE if the constraint
> - * is not satisfiable, or 0 upon success.
> - */
> -int omap_pm_set_min_bus_tput(struct device *dev, u8 agent_id, unsigned long r);
> -
> -
> -/*
> - * CPUFreq-originated constraint
> - *
> - * In the future, this should be handled by custom OPP clocktype
> - * functions.
> - */
> -
> -
> -/*
> - * Device context loss tracking
> - */
> -
> -/**
> - * omap_pm_get_dev_context_loss_count - return count of times dev has lost ctx
> - * @dev: struct device *
> - *
> - * This function returns the number of times that the device @dev has
> - * lost its internal context. This generally occurs on a powerdomain
> - * transition to OFF. Drivers use this as an optimization to avoid restoring
> - * context if the device hasn't lost it. To use, drivers should initially
> - * call this in their context save functions and store the result. Early in
> - * the driver's context restore function, the driver should call this function
> - * again, and compare the result to the stored counter. If they differ, the
> - * driver must restore device context. If the number of context losses
> - * exceeds the maximum positive integer, the function will wrap to 0 and
> - * continue counting. Returns the number of context losses for this device,
> - * or negative value upon error.
> - */
> -int omap_pm_get_dev_context_loss_count(struct device *dev);
> -
> -void omap_pm_enable_off_mode(void);
> -void omap_pm_disable_off_mode(void);
> -
> -#endif
> diff --git a/arch/arm/mach-omap2/pdata-quirks.c b/arch/arm/mach-omap2/pdata-quirks.c
> --- a/arch/arm/mach-omap2/pdata-quirks.c
> +++ b/arch/arm/mach-omap2/pdata-quirks.c
> @@ -26,14 +26,12 @@
> #include <linux/platform_data/iommu-omap.h>
> #include <linux/platform_data/ti-sysc.h>
> #include <linux/platform_data/wkup_m3.h>
> -#include <linux/platform_data/media/ir-rx51.h>
> #include <linux/platform_data/asoc-ti-mcbsp.h>
>
> #include "common.h"
> #include "common-board-devices.h"
> #include "control.h"
> #include "omap_device.h"
> -#include "omap-pm.h"
> #include "omap-secure.h"
> #include "soc.h"
> #include "hsmmc.h"
> @@ -514,18 +512,6 @@ void omap_auxdata_legacy_init(struct device *dev)
> dev->platform_data = &twl_gpio_auxdata;
> }
>
> -static struct ir_rx51_platform_data __maybe_unused rx51_ir_data = {
> - .set_max_mpu_wakeup_lat = omap_pm_set_max_mpu_wakeup_lat,
> -};
> -
> -static struct platform_device __maybe_unused rx51_ir_device = {
> - .name = "ir_rx51",
> - .id = -1,
> - .dev = {
> - .platform_data = &rx51_ir_data,
> - },
> -};
> -
> #if IS_ENABLED(CONFIG_SND_OMAP_SOC_MCBSP)
> static struct omap_mcbsp_platform_data mcbsp_pdata;
> static void __init omap3_mcbsp_init(void)
> @@ -569,7 +555,6 @@ static struct of_dev_auxdata omap_auxdata_lookup[] = {
> "480c9000.smartreflex", &omap_sr_pdata[OMAP_SR_MPU]),
> OF_DEV_AUXDATA("ti,omap3-hsmmc", 0x4809c000, "4809c000.mmc", &mmc_pdata[0]),
> OF_DEV_AUXDATA("ti,omap3-hsmmc", 0x480b4000, "480b4000.mmc", &mmc_pdata[1]),
> - OF_DEV_AUXDATA("nokia,n900-ir", 0, "n900-ir", &rx51_ir_data),
> /* Only on am3517 */
> OF_DEV_AUXDATA("ti,davinci_mdio", 0x5c030000, "davinci_mdio.0", NULL),
> OF_DEV_AUXDATA("ti,am3517-emac", 0x5c000000, "davinci_emac.0",
> diff --git a/arch/arm/mach-omap2/pm-debug.c b/arch/arm/mach-omap2/pm-debug.c
> --- a/arch/arm/mach-omap2/pm-debug.c
> +++ b/arch/arm/mach-omap2/pm-debug.c
> @@ -31,7 +31,6 @@
> #include "clock.h"
> #include "powerdomain.h"
> #include "clockdomain.h"
> -#include "omap-pm.h"
>
> #include "soc.h"
> #include "cm2xxx_3xxx.h"
> @@ -240,10 +239,6 @@ static int option_set(void *data, u64 val)
> *option = val;
>
> if (option == &enable_off_mode) {
> - if (val)
> - omap_pm_enable_off_mode();
> - else
> - omap_pm_disable_off_mode();
> if (cpu_is_omap34xx())
> omap3_pm_off_mode_enable(val);
> }
> diff --git a/arch/arm/mach-omap2/pm.c b/arch/arm/mach-omap2/pm.c
> --- a/arch/arm/mach-omap2/pm.c
> +++ b/arch/arm/mach-omap2/pm.c
> @@ -16,11 +16,11 @@
> #include <linux/pm_opp.h>
> #include <linux/export.h>
> #include <linux/suspend.h>
> +#include <linux/clk.h>
> #include <linux/cpu.h>
>
> #include <asm/system_misc.h>
>
> -#include "omap-pm.h"
> #include "omap_device.h"
> #include "common.h"
>
> @@ -230,14 +230,6 @@ static void __init omap4_init_voltages(void)
> omap2_set_init_voltage("iva", "dpll_iva_m5x2_ck", "iva");
> }
>
> -static int __init omap2_common_pm_init(void)
> -{
> - omap_pm_if_init();
> -
> - return 0;
> -}
> -omap_postcore_initcall(omap2_common_pm_init);
> -
> int __init omap2_common_pm_late_init(void)
> {
> /* Init the voltage layer */
> diff --git a/arch/arm/mach-omap2/timer.c b/arch/arm/mach-omap2/timer.c
> --- a/arch/arm/mach-omap2/timer.c
> +++ b/arch/arm/mach-omap2/timer.c
> @@ -50,7 +50,6 @@
> #include "omap_device.h"
> #include <plat/counter-32k.h>
> #include <clocksource/timer-ti-dm.h>
> -#include "omap-pm.h"
>
> #include "soc.h"
> #include "common.h"
> diff --git a/arch/arm/plat-omap/Kconfig b/arch/arm/plat-omap/Kconfig
> --- a/arch/arm/plat-omap/Kconfig
> +++ b/arch/arm/plat-omap/Kconfig
> @@ -115,16 +115,6 @@ config OMAP_SERIAL_WAKE
> to data on the serial RX line. This allows you to wake the
> system from serial console.
>
> -choice
> - prompt "OMAP PM layer selection"
> - depends on ARCH_OMAP
> - default OMAP_PM_NOOP
> -
> -config OMAP_PM_NOOP
> - bool "No-op/debug PM layer"
> -
> -endchoice
> -
> endmenu
>
> endif
> diff --git a/drivers/media/rc/ir-rx51.c b/drivers/media/rc/ir-rx51.c
> --- a/drivers/media/rc/ir-rx51.c
> +++ b/drivers/media/rc/ir-rx51.c
> @@ -22,7 +22,6 @@
> #include <linux/hrtimer.h>
>
> #include <media/rc-core.h>
> -#include <linux/platform_data/media/ir-rx51.h>
>
> #define WBUF_LEN 256
>
> @@ -31,7 +30,6 @@ struct ir_rx51 {
> struct pwm_device *pwm;
> struct hrtimer timer;
> struct device *dev;
> - struct ir_rx51_platform_data *pdata;
> wait_queue_head_t wqueue;
>
> unsigned int freq; /* carrier frequency */
> @@ -130,10 +128,9 @@ static int ir_rx51_tx(struct rc_dev *dev, unsigned int *buffer,
> ir_rx51->wbuf[count] = -1; /* Insert termination mark */
>
> /*
> - * Adjust latency requirements so the device doesn't go in too
> - * deep sleep states
> + * REVISIT: Adjust latency requirements so the device doesn't go in too
> + * deep sleep states with pm_qos_add_request().
> */
> - ir_rx51->pdata->set_max_mpu_wakeup_lat(ir_rx51->dev, 50);
>
> ir_rx51_on(ir_rx51);
> ir_rx51->wbuf_index = 1;
> @@ -146,8 +143,7 @@ static int ir_rx51_tx(struct rc_dev *dev, unsigned int *buffer,
> */
> wait_event_interruptible(ir_rx51->wqueue, ir_rx51->wbuf_index < 0);
>
> - /* We can sleep again */
> - ir_rx51->pdata->set_max_mpu_wakeup_lat(ir_rx51->dev, -1);
> + /* REVISIT: Remove pm_qos constraint, we can sleep again */
>
> return count;
> }
> @@ -244,13 +240,6 @@ static int ir_rx51_probe(struct platform_device *dev)
> struct pwm_device *pwm;
> struct rc_dev *rcdev;
>
> - ir_rx51.pdata = dev->dev.platform_data;
> -
> - if (!ir_rx51.pdata) {
> - dev_err(&dev->dev, "Platform Data is missing\n");
> - return -ENXIO;
> - }
> -
> pwm = pwm_get(&dev->dev, NULL);
> if (IS_ERR(pwm)) {
> int err = PTR_ERR(pwm);
> diff --git a/include/linux/platform_data/media/ir-rx51.h b/include/linux/platform_data/media/ir-rx51.h
> deleted file mode 100644
> --- a/include/linux/platform_data/media/ir-rx51.h
> +++ /dev/null
> @@ -1,9 +0,0 @@
> -/* SPDX-License-Identifier: GPL-2.0 */
> -#ifndef _IR_RX51_H
> -#define _IR_RX51_H
> -
> -struct ir_rx51_platform_data {
> - int(*set_max_mpu_wakeup_lat)(struct device *dev, long t);
> -};
> -
> -#endif



Thanks,
Mauro