Commit a2d1e1ed authored by Sudeep Holla's avatar Sudeep Holla Committed by Mauro Carvalho Chehab

[media] media: st-rc: remove misuse of IRQF_NO_SUSPEND flag

The device is set as wakeup capable using proper wakeup API but the
driver misuses IRQF_NO_SUSPEND to set the interrupt as wakeup source
which is incorrect.

This patch removes the use of IRQF_NO_SUSPEND flags replacing it with
enable_irq_wake instead.

Cc: Srinivas Kandagatla <srinivas.kandagatla@gmail.com>
Cc: Maxime Coquelin <maxime.coquelin@st.com>
Cc: Patrice Chotard <patrice.chotard@st.com>
Cc: linux-arm-kernel@lists.infradead.org
Cc: kernel@stlinux.com
Signed-off-by: default avatarSudeep Holla <sudeep.holla@arm.com>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@osg.samsung.com>
parent 203e942d
...@@ -16,6 +16,7 @@ ...@@ -16,6 +16,7 @@
#include <linux/reset.h> #include <linux/reset.h>
#include <media/rc-core.h> #include <media/rc-core.h>
#include <linux/pinctrl/consumer.h> #include <linux/pinctrl/consumer.h>
#include <linux/pm_wakeirq.h>
struct st_rc_device { struct st_rc_device {
struct device *dev; struct device *dev;
...@@ -190,6 +191,9 @@ static void st_rc_hardware_init(struct st_rc_device *dev) ...@@ -190,6 +191,9 @@ static void st_rc_hardware_init(struct st_rc_device *dev)
static int st_rc_remove(struct platform_device *pdev) static int st_rc_remove(struct platform_device *pdev)
{ {
struct st_rc_device *rc_dev = platform_get_drvdata(pdev); struct st_rc_device *rc_dev = platform_get_drvdata(pdev);
dev_pm_clear_wake_irq(&pdev->dev);
device_init_wakeup(&pdev->dev, false);
clk_disable_unprepare(rc_dev->sys_clock); clk_disable_unprepare(rc_dev->sys_clock);
rc_unregister_device(rc_dev->rdev); rc_unregister_device(rc_dev->rdev);
return 0; return 0;
...@@ -298,22 +302,22 @@ static int st_rc_probe(struct platform_device *pdev) ...@@ -298,22 +302,22 @@ static int st_rc_probe(struct platform_device *pdev)
rdev->map_name = RC_MAP_LIRC; rdev->map_name = RC_MAP_LIRC;
rdev->input_name = "ST Remote Control Receiver"; rdev->input_name = "ST Remote Control Receiver";
/* enable wake via this device */
device_set_wakeup_capable(dev, true);
device_set_wakeup_enable(dev, true);
ret = rc_register_device(rdev); ret = rc_register_device(rdev);
if (ret < 0) if (ret < 0)
goto clkerr; goto clkerr;
rc_dev->rdev = rdev; rc_dev->rdev = rdev;
if (devm_request_irq(dev, rc_dev->irq, st_rc_rx_interrupt, if (devm_request_irq(dev, rc_dev->irq, st_rc_rx_interrupt,
IRQF_NO_SUSPEND, IR_ST_NAME, rc_dev) < 0) { 0, IR_ST_NAME, rc_dev) < 0) {
dev_err(dev, "IRQ %d register failed\n", rc_dev->irq); dev_err(dev, "IRQ %d register failed\n", rc_dev->irq);
ret = -EINVAL; ret = -EINVAL;
goto rcerr; goto rcerr;
} }
/* enable wake via this device */
device_init_wakeup(dev, true);
dev_pm_set_wake_irq(dev, rc_dev->irq);
/** /**
* for LIRC_MODE_MODE2 or LIRC_MODE_PULSE or LIRC_MODE_RAW * for LIRC_MODE_MODE2 or LIRC_MODE_PULSE or LIRC_MODE_RAW
* lircd expects a long space first before a signal train to sync. * lircd expects a long space first before a signal train to sync.
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment