Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 47de94af authored by Akash Asthana's avatar Akash Asthana
Browse files

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: default avatarAkash Asthana <akashast@codeaurora.org>
parent 98a140af
Loading
Loading
Loading
Loading
+6 −6
Original line number Diff line number Diff line
@@ -3190,7 +3190,7 @@ static int msm_geni_serial_runtime_resume(struct device *dev)
	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 = {