From 47de94afafcf3d7a0011adb6444c72e53c7e36f0 Mon Sep 17 00:00:00 2001 From: Akash Asthana Date: Thu, 3 Sep 2020 13:44:16 +0530 Subject: [PATCH] serial: msm_geni_serial: Register normal suspend instead of suspend_noirq While executing suspend_noirq callbacks non-wakeup interrupts are disabled, wake-up interrupts are enabled but their handling is deferred till the completion of suspend_noirq stage. UART console vote/unvote the resources in suspend_noirq/resume_noirq stages. There is no issue wrt managing clk and pinctrl resources at noirq stage however ICC BW voting can't be done at noirq stage. ICC requests are converted to ack based requested for RPM driver, the ack here is nothing but interrupt from IPCC driver and it can't be processed at noirq stage, hence flow is indefinitely stuck in UART suspend_noirq callback. Change-Id: Ie279580795d3c85db4dc42766b0b2d9a8adb3f00 Signed-off-by: Akash Asthana --- drivers/tty/serial/msm_geni_serial.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/drivers/tty/serial/msm_geni_serial.c b/drivers/tty/serial/msm_geni_serial.c index 52189f71899b..b321ebe38873 100644 --- a/drivers/tty/serial/msm_geni_serial.c +++ b/drivers/tty/serial/msm_geni_serial.c @@ -3190,7 +3190,7 @@ exit_runtime_resume: return ret; } -static int msm_geni_serial_sys_suspend_noirq(struct device *dev) +static int msm_geni_serial_sys_suspend(struct device *dev) { struct platform_device *pdev = to_platform_device(dev); struct msm_geni_serial_port *port = platform_get_drvdata(pdev); @@ -3219,7 +3219,7 @@ static int msm_geni_serial_sys_suspend_noirq(struct device *dev) return 0; } -static int msm_geni_serial_sys_resume_noirq(struct device *dev) +static int msm_geni_serial_sys_resume(struct device *dev) { struct platform_device *pdev = to_platform_device(dev); struct msm_geni_serial_port *port = platform_get_drvdata(pdev); @@ -3243,12 +3243,12 @@ static int msm_geni_serial_runtime_resume(struct device *dev) return 0; } -static int msm_geni_serial_sys_suspend_noirq(struct device *dev) +static int msm_geni_serial_sys_suspend(struct device *dev) { return 0; } -static int msm_geni_serial_sys_resume_noirq(struct device *dev) +static int msm_geni_serial_sys_resume(struct device *dev) { return 0; } @@ -3257,8 +3257,8 @@ static int msm_geni_serial_sys_resume_noirq(struct device *dev) static const struct dev_pm_ops msm_geni_serial_pm_ops = { .runtime_suspend = msm_geni_serial_runtime_suspend, .runtime_resume = msm_geni_serial_runtime_resume, - .suspend_noirq = msm_geni_serial_sys_suspend_noirq, - .resume_noirq = msm_geni_serial_sys_resume_noirq, + .suspend = msm_geni_serial_sys_suspend, + .resume = msm_geni_serial_sys_resume, }; static struct platform_driver msm_geni_serial_platform_driver = {