Merge tag 'rpmsg-v4.14' of git://github.com/andersson/remoteproc
[sfrench/cifs-2.6.git] / drivers / remoteproc / qcom_adsp_pil.c
index 42884ace324ce2dc8358d048330171a517f1620f..3f6af54dbc9656703d3cf2c2328c394a517bd83b 100644 (file)
@@ -38,6 +38,7 @@ struct adsp_data {
        const char *firmware_name;
        int pas_id;
        bool has_aggre2_clk;
+       const char *ssr_name;
 };
 
 struct qcom_adsp {
@@ -73,6 +74,7 @@ struct qcom_adsp {
 
        struct qcom_rproc_glink glink_subdev;
        struct qcom_rproc_subdev smd_subdev;
+       struct qcom_rproc_ssr ssr_subdev;
 };
 
 static int adsp_load(struct rproc *rproc, const struct firmware *fw)
@@ -267,10 +269,7 @@ static int adsp_init_regulator(struct qcom_adsp *adsp)
        regulator_set_load(adsp->cx_supply, 100000);
 
        adsp->px_supply = devm_regulator_get(adsp->dev, "px");
-       if (IS_ERR(adsp->px_supply))
-               return PTR_ERR(adsp->px_supply);
-
-       return 0;
+       return PTR_ERR_OR_ZERO(adsp->px_supply);
 }
 
 static int adsp_request_irq(struct qcom_adsp *adsp,
@@ -404,6 +403,7 @@ static int adsp_probe(struct platform_device *pdev)
 
        qcom_add_glink_subdev(rproc, &adsp->glink_subdev);
        qcom_add_smd_subdev(rproc, &adsp->smd_subdev);
+       qcom_add_ssr_subdev(rproc, &adsp->ssr_subdev, desc->ssr_name);
 
        ret = rproc_add(rproc);
        if (ret)
@@ -426,6 +426,7 @@ static int adsp_remove(struct platform_device *pdev)
 
        qcom_remove_glink_subdev(adsp->rproc, &adsp->glink_subdev);
        qcom_remove_smd_subdev(adsp->rproc, &adsp->smd_subdev);
+       qcom_remove_ssr_subdev(adsp->rproc, &adsp->ssr_subdev);
        rproc_free(adsp->rproc);
 
        return 0;
@@ -436,6 +437,7 @@ static const struct adsp_data adsp_resource_init = {
                .firmware_name = "adsp.mdt",
                .pas_id = 1,
                .has_aggre2_clk = false,
+               .ssr_name = "lpass",
 };
 
 static const struct adsp_data slpi_resource_init = {
@@ -443,6 +445,7 @@ static const struct adsp_data slpi_resource_init = {
                .firmware_name = "slpi.mdt",
                .pas_id = 12,
                .has_aggre2_clk = true,
+               .ssr_name = "dsps",
 };
 
 static const struct of_device_id adsp_of_match[] = {