]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
Revert "soc: qcom: smd-rpm: Match rpmsg channel instead of compatible"
authorDmitry Baryshkov <dmitry.baryshkov@linaro.org>
Mon, 29 Jul 2024 19:52:14 +0000 (22:52 +0300)
committerBjorn Andersson <andersson@kernel.org>
Thu, 15 Aug 2024 03:14:42 +0000 (22:14 -0500)
The rpm_requests device nodes have the compatible node. As such the
rpmsg core uses OF modalias instead of a native rpmsg modalias. Thus if
smd-rpm is built as a module, it doesn't get autoloaded for the device.

Revert the commit bcabe1e09135 ("soc: qcom: smd-rpm: Match rpmsg channel
instead of compatible")

Fixes: bcabe1e09135 ("soc: qcom: smd-rpm: Match rpmsg channel instead of compatible")
Cc: stable@vger.kernel.org
Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Link: https://lore.kernel.org/r/20240729-fix-smd-rpm-v2-1-0776408a94c5@linaro.org
Signed-off-by: Bjorn Andersson <andersson@kernel.org>
drivers/soc/qcom/smd-rpm.c

index b7056aed4c7d10ae766f8e72310cf0d684f746c1..9d64283d2125493acf063b7bcb0edc3d13886112 100644 (file)
@@ -196,9 +196,6 @@ static int qcom_smd_rpm_probe(struct rpmsg_device *rpdev)
 {
        struct qcom_smd_rpm *rpm;
 
-       if (!rpdev->dev.of_node)
-               return -EINVAL;
-
        rpm = devm_kzalloc(&rpdev->dev, sizeof(*rpm), GFP_KERNEL);
        if (!rpm)
                return -ENOMEM;
@@ -218,18 +215,38 @@ static void qcom_smd_rpm_remove(struct rpmsg_device *rpdev)
        of_platform_depopulate(&rpdev->dev);
 }
 
-static const struct rpmsg_device_id qcom_smd_rpm_id_table[] = {
-       { .name = "rpm_requests", },
-       { /* sentinel */ }
+static const struct of_device_id qcom_smd_rpm_of_match[] = {
+       { .compatible = "qcom,rpm-apq8084" },
+       { .compatible = "qcom,rpm-ipq6018" },
+       { .compatible = "qcom,rpm-ipq9574" },
+       { .compatible = "qcom,rpm-msm8226" },
+       { .compatible = "qcom,rpm-msm8909" },
+       { .compatible = "qcom,rpm-msm8916" },
+       { .compatible = "qcom,rpm-msm8936" },
+       { .compatible = "qcom,rpm-msm8953" },
+       { .compatible = "qcom,rpm-msm8974" },
+       { .compatible = "qcom,rpm-msm8976" },
+       { .compatible = "qcom,rpm-msm8994" },
+       { .compatible = "qcom,rpm-msm8996" },
+       { .compatible = "qcom,rpm-msm8998" },
+       { .compatible = "qcom,rpm-sdm660" },
+       { .compatible = "qcom,rpm-sm6115" },
+       { .compatible = "qcom,rpm-sm6125" },
+       { .compatible = "qcom,rpm-sm6375" },
+       { .compatible = "qcom,rpm-qcm2290" },
+       { .compatible = "qcom,rpm-qcs404" },
+       {}
 };
-MODULE_DEVICE_TABLE(rpmsg, qcom_smd_rpm_id_table);
+MODULE_DEVICE_TABLE(of, qcom_smd_rpm_of_match);
 
 static struct rpmsg_driver qcom_smd_rpm_driver = {
        .probe = qcom_smd_rpm_probe,
        .remove = qcom_smd_rpm_remove,
        .callback = qcom_smd_rpm_callback,
-       .id_table = qcom_smd_rpm_id_table,
-       .drv.name = "qcom_smd_rpm",
+       .drv  = {
+               .name  = "qcom_smd_rpm",
+               .of_match_table = qcom_smd_rpm_of_match,
+       },
 };
 
 static int __init qcom_smd_rpm_init(void)