Merge tag 'hwlock-v5.11' of git://git.kernel.org/pub/scm/linux/kernel/git/andersson...
[linux-2.6-microblaze.git] / drivers / remoteproc / qcom_q6v5_adsp.c
index efb2c1a..e024502 100644 (file)
@@ -193,8 +193,10 @@ static int adsp_start(struct rproc *rproc)
 
        dev_pm_genpd_set_performance_state(adsp->dev, INT_MAX);
        ret = pm_runtime_get_sync(adsp->dev);
-       if (ret)
+       if (ret) {
+               pm_runtime_put_noidle(adsp->dev);
                goto disable_xo_clk;
+       }
 
        ret = clk_bulk_prepare_enable(adsp->num_clks, adsp->clks);
        if (ret) {
@@ -264,7 +266,7 @@ static int adsp_stop(struct rproc *rproc)
        int handover;
        int ret;
 
-       ret = qcom_q6v5_request_stop(&adsp->q6v5);
+       ret = qcom_q6v5_request_stop(&adsp->q6v5, adsp->sysmon);
        if (ret == -ETIMEDOUT)
                dev_err(adsp->dev, "timed out on wait\n");
 
@@ -362,15 +364,12 @@ static int adsp_init_mmio(struct qcom_adsp *adsp,
                                struct platform_device *pdev)
 {
        struct device_node *syscon;
-       struct resource *res;
        int ret;
 
-       res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
-       adsp->qdsp6ss_base = devm_ioremap(&pdev->dev, res->start,
-                       resource_size(res));
-       if (!adsp->qdsp6ss_base) {
+       adsp->qdsp6ss_base = devm_platform_ioremap_resource(pdev, 0);
+       if (IS_ERR(adsp->qdsp6ss_base)) {
                dev_err(adsp->dev, "failed to map QDSP6SS registers\n");
-               return -ENOMEM;
+               return PTR_ERR(adsp->qdsp6ss_base);
        }
 
        syscon = of_parse_phandle(pdev->dev.of_node, "qcom,halt-regs", 0);