Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

soc: qcom: rpmpd: Allow RPMPD driver to be loaded as a module

This patch allow the rpmpd driver to be loaded as a permenent
module. Meaning it can be loaded from a module, but then cannot
be unloaded.

Ideally, it would include a remove hook and related logic, but
apparently the genpd code isn't able to track usage and cleaning
things up? (See: https://lkml.org/lkml/2019/1/24/38)

So making it a permenent module at least improves things slightly
over requiring it to be a built in driver.

Cc: Todd Kjos <tkjos@google.com>
Cc: Saravana Kannan <saravanak@google.com>
Cc: Andy Gross <agross@kernel.org>
Cc: Bjorn Andersson <bjorn.andersson@linaro.org>
Cc: Rajendra Nayak <rnayak@codeaurora.org>
Cc: linux-arm-msm@vger.kernel.org
Acked-by: Saravana Kannan <saravanak@google.com>
Tested-by: Bjorn Andersson <bjorn.andersson@linaro.org>
Reviewed-by: Bjorn Andersson <bjorn.andersson@linaro.org>
Signed-off-by: John Stultz <john.stultz@linaro.org>
Link: https://lore.kernel.org/r/20200326224459.105170-2-john.stultz@linaro.org
Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>

authored by

John Stultz and committed by
Bjorn Andersson
f29808b2 d4889ec1

+7 -2
+2 -2
drivers/soc/qcom/Kconfig
··· 126 126 for the voltage rail. 127 127 128 128 config QCOM_RPMPD 129 - bool "Qualcomm RPM Power domain driver" 130 - depends on QCOM_SMD_RPM=y 129 + tristate "Qualcomm RPM Power domain driver" 130 + depends on QCOM_SMD_RPM 131 131 help 132 132 QCOM RPM Power domain driver to support power-domains with 133 133 performance states. The driver communicates a performance state
+5
drivers/soc/qcom/rpmpd.c
··· 4 4 #include <linux/err.h> 5 5 #include <linux/init.h> 6 6 #include <linux/kernel.h> 7 + #include <linux/module.h> 7 8 #include <linux/mutex.h> 8 9 #include <linux/pm_domain.h> 9 10 #include <linux/of.h> ··· 227 226 { .compatible = "qcom,qcs404-rpmpd", .data = &qcs404_desc }, 228 227 { } 229 228 }; 229 + MODULE_DEVICE_TABLE(of, rpmpd_match_table); 230 230 231 231 static int rpmpd_send_enable(struct rpmpd *pd, bool enable) 232 232 { ··· 424 422 return platform_driver_register(&rpmpd_driver); 425 423 } 426 424 core_initcall(rpmpd_init); 425 + 426 + MODULE_DESCRIPTION("Qualcomm Technologies, Inc. RPM Power Domain Driver"); 427 + MODULE_LICENSE("GPL v2");