+++ /dev/null
-From 8985167ecf57f97061599a155bb9652c84ea4913 Mon Sep 17 00:00:00 2001
-From: Krzysztof Kozlowski <krzk@kernel.org>
-Date: Wed, 29 Aug 2018 21:20:10 +0200
-Subject: clk: s2mps11: Fix matching when built as module and DT node contains compatible
-
-From: Krzysztof Kozlowski <krzk@kernel.org>
-
-commit 8985167ecf57f97061599a155bb9652c84ea4913 upstream.
-
-When driver is built as module and DT node contains clocks compatible
-(e.g. "samsung,s2mps11-clk"), the module will not be autoloaded because
-module aliases won't match.
-
-The modalias from uevent: of:NclocksT<NULL>Csamsung,s2mps11-clk
-The modalias from driver: platform:s2mps11-clk
-
-The devices are instantiated by parent's MFD. However both Device Tree
-bindings and parent define the compatible for clocks devices. In case
-of module matching this DT compatible will be used.
-
-The issue will not happen if this is a built-in (no need for module
-matching) or when clocks DT node does not contain compatible (not
-correct from bindings perspective but working for driver).
-
-Note when backporting to stable kernels: adjust the list of device ID
-entries.
-
-Cc: <stable@vger.kernel.org>
-Fixes: 53c31b3437a6 ("mfd: sec-core: Add of_compatible strings for clock MFD cells")
-Signed-off-by: Krzysztof Kozlowski <krzk@kernel.org>
-Acked-by: Stephen Boyd <sboyd@kernel.org>
-Signed-off-by: Stephen Boyd <sboyd@kernel.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-
----
- drivers/clk/clk-s2mps11.c | 30 ++++++++++++++++++++++++++++++
- 1 file changed, 30 insertions(+)
-
---- a/drivers/clk/clk-s2mps11.c
-+++ b/drivers/clk/clk-s2mps11.c
-@@ -285,6 +285,36 @@ static const struct platform_device_id s
- };
- MODULE_DEVICE_TABLE(platform, s2mps11_clk_id);
-
-+#ifdef CONFIG_OF
-+/*
-+ * Device is instantiated through parent MFD device and device matching is done
-+ * through platform_device_id.
-+ *
-+ * However if device's DT node contains proper clock compatible and driver is
-+ * built as a module, then the *module* matching will be done trough DT aliases.
-+ * This requires of_device_id table. In the same time this will not change the
-+ * actual *device* matching so do not add .of_match_table.
-+ */
-+static const struct of_device_id s2mps11_dt_match[] = {
-+ {
-+ .compatible = "samsung,s2mps11-clk",
-+ .data = (void *)S2MPS11X,
-+ }, {
-+ .compatible = "samsung,s2mps13-clk",
-+ .data = (void *)S2MPS13X,
-+ }, {
-+ .compatible = "samsung,s2mps14-clk",
-+ .data = (void *)S2MPS14X,
-+ }, {
-+ .compatible = "samsung,s5m8767-clk",
-+ .data = (void *)S5M8767X,
-+ }, {
-+ /* Sentinel */
-+ },
-+};
-+MODULE_DEVICE_TABLE(of, s2mps11_dt_match);
-+#endif
-+
- static struct platform_driver s2mps11_clk_driver = {
- .driver = {
- .name = "s2mps11-clk",