diff options
author | Robin Gong <yibin.gong@nxp.com> | 2017-01-05 14:15:17 +0800 |
---|---|---|
committer | Leonard Crestez <leonard.crestez@nxp.com> | 2018-08-24 12:41:33 +0300 |
commit | 96193c101afd6f99b8f47430666316510254bbb3 (patch) | |
tree | f33e9338bc41bb42d0a784223c55aa6416b2251b /drivers/regulator | |
parent | 9b9a89d8be65915851cb93319b36b97979cab8b9 (diff) |
MLK-13720-4: regulator: pf1550-regulator-rpmsg: fix "rpmsg_send timeout"
Sometimes rpmsg callback triggered quickly before reinit_completion, then
cause "rpmsg_send timeout!". Move reinit_completion to the place before
rpmsg_send to make sure the completion is ready before callback triggered.
Signed-off-by: Robin Gong <yibin.gong@nxp.com>
(cherry picked from commit 8e44277d3f27e5f46232bd705ee9ef594db42575)
Diffstat (limited to 'drivers/regulator')
-rw-r--r-- | drivers/regulator/pf1550-regulator-rpmsg.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/drivers/regulator/pf1550-regulator-rpmsg.c b/drivers/regulator/pf1550-regulator-rpmsg.c index fd0f69dbff56..13f4484aa34a 100644 --- a/drivers/regulator/pf1550-regulator-rpmsg.c +++ b/drivers/regulator/pf1550-regulator-rpmsg.c @@ -101,6 +101,9 @@ static int pf1550_send_message(struct pf1550_regulator_rpmsg *msg, pm_qos_add_request(&info->pm_qos_req, PM_QOS_CPU_DMA_LATENCY, 0); + /* wait response from rpmsg */ + reinit_completion(&info->cmd_complete); + err = rpmsg_send(info->rpdev->ept, (void *)msg, sizeof(struct pf1550_regulator_rpmsg)); @@ -110,8 +113,6 @@ static int pf1550_send_message(struct pf1550_regulator_rpmsg *msg, dev_err(&info->rpdev->dev, "rpmsg_send failed: %d\n", err); return err; } - /* wait response from rpmsg */ - reinit_completion(&info->cmd_complete); err = wait_for_completion_timeout(&info->cmd_complete, msecs_to_jiffies(RPMSG_TIMEOUT)); if (!err) { |