From: Michael Walle <michael@walle.cc>
To: linuxppc-dev@lists.ozlabs.org,
linux-arm-kernel@lists.infradead.org,
linux-kernel@vger.kernel.org
Cc: Li Yang <leoyang.li@nxp.com>,
Ulf Hansson <ulf.hansson@linaro.org>,
Sudeep Holla <Sudeep.Holla@arm.com>,
Arnd Bergmann <arnd@arndb.de>, Michael Walle <michael@walle.cc>
Subject: [PATCH v1 6/7] soc: fsl: guts: drop platform driver
Date: Thu, 27 Jan 2022 17:41:24 +0100 [thread overview]
Message-ID: <20220127164125.3651285-7-michael@walle.cc> (raw)
In-Reply-To: <20220127164125.3651285-1-michael@walle.cc>
This driver cannot be unloaded and it will be needed very early in the
boot process because other driver (weakly) depend on it (eg. for chip
errata handling). Drop all the platform driver and devres stuff and
simply make it a core_initcall.
Signed-off-by: Michael Walle <michael@walle.cc>
---
drivers/soc/fsl/guts.c | 127 +++++++++++++++++++++--------------------
1 file changed, 65 insertions(+), 62 deletions(-)
diff --git a/drivers/soc/fsl/guts.c b/drivers/soc/fsl/guts.c
index 04c3eb6a6e17..be961a9193f4 100644
--- a/drivers/soc/fsl/guts.c
+++ b/drivers/soc/fsl/guts.c
@@ -110,19 +110,55 @@ static const struct fsl_soc_die_attr *fsl_soc_die_match(
return NULL;
}
-static int fsl_guts_probe(struct platform_device *pdev)
+/*
+ * Table for matching compatible strings, for device tree
+ * guts node, for Freescale QorIQ SOCs.
+ */
+static const struct of_device_id fsl_guts_of_match[] = {
+ { .compatible = "fsl,qoriq-device-config-1.0", },
+ { .compatible = "fsl,qoriq-device-config-2.0", },
+ { .compatible = "fsl,p1010-guts", },
+ { .compatible = "fsl,p1020-guts", },
+ { .compatible = "fsl,p1021-guts", },
+ { .compatible = "fsl,p1022-guts", },
+ { .compatible = "fsl,p1023-guts", },
+ { .compatible = "fsl,p2020-guts", },
+ { .compatible = "fsl,bsc9131-guts", },
+ { .compatible = "fsl,bsc9132-guts", },
+ { .compatible = "fsl,mpc8536-guts", },
+ { .compatible = "fsl,mpc8544-guts", },
+ { .compatible = "fsl,mpc8548-guts", },
+ { .compatible = "fsl,mpc8568-guts", },
+ { .compatible = "fsl,mpc8569-guts", },
+ { .compatible = "fsl,mpc8572-guts", },
+ { .compatible = "fsl,ls1021a-dcfg", },
+ { .compatible = "fsl,ls1043a-dcfg", },
+ { .compatible = "fsl,ls2080a-dcfg", },
+ { .compatible = "fsl,ls1088a-dcfg", },
+ { .compatible = "fsl,ls1012a-dcfg", },
+ { .compatible = "fsl,ls1046a-dcfg", },
+ { .compatible = "fsl,lx2160a-dcfg", },
+ { .compatible = "fsl,ls1028a-dcfg", },
+ {}
+};
+
+static int __init fsl_guts_init(void)
{
- struct device_node *np = pdev->dev.of_node;
struct soc_device_attribute *soc_dev_attr;
static struct soc_device *soc_dev;
- struct device *dev = &pdev->dev;
const struct fsl_soc_die_attr *soc_die;
struct ccsr_guts __iomem *regs;
const char *machine = NULL;
+ struct device_node *np;
bool little_endian;
u32 svr;
+ int ret;
- soc_dev_attr = devm_kzalloc(dev, sizeof(*soc_dev_attr), GFP_KERNEL);
+ np = of_find_matching_node_and_match(NULL, fsl_guts_of_match, NULL);
+ if (!np)
+ return 0;
+
+ soc_dev_attr = kzalloc(sizeof(*soc_dev_attr), GFP_KERNEL);
if (!soc_dev_attr)
return -ENOMEM;
@@ -138,87 +174,54 @@ static int fsl_guts_probe(struct platform_device *pdev)
svr = ioread32be(®s->svr);
iounmap(regs);
- /* Register soc device */
if (of_property_read_string(of_root, "model", &machine))
of_property_read_string_index(of_root, "compatible", 0, &machine);
if (machine) {
- soc_dev_attr->machine = devm_kstrdup(dev, machine, GFP_KERNEL);
+ soc_dev_attr->machine = kstrdup(machine, GFP_KERNEL);
if (!soc_dev_attr->machine)
return -ENOMEM;
}
soc_die = fsl_soc_die_match(svr, fsl_soc_die);
if (soc_die) {
- soc_dev_attr->family = devm_kasprintf(dev, GFP_KERNEL,
- "QorIQ %s", soc_die->die);
+ soc_dev_attr->family = kasprintf(GFP_KERNEL, "QorIQ %s",
+ soc_die->die);
} else {
- soc_dev_attr->family = devm_kasprintf(dev, GFP_KERNEL, "QorIQ");
+ soc_dev_attr->family = kasprintf(GFP_KERNEL, "QorIQ");
}
if (!soc_dev_attr->family)
- return -ENOMEM;
- soc_dev_attr->soc_id = devm_kasprintf(dev, GFP_KERNEL,
- "svr:0x%08x", svr);
+ goto err_nomem;
+
+ soc_dev_attr->soc_id = kasprintf(GFP_KERNEL, "svr:0x%08x", svr);
if (!soc_dev_attr->soc_id)
- return -ENOMEM;
- soc_dev_attr->revision = devm_kasprintf(dev, GFP_KERNEL, "%d.%d",
- (svr >> 4) & 0xf, svr & 0xf);
+ goto err_nomem;
+
+ soc_dev_attr->revision = kasprintf(GFP_KERNEL, "%d.%d",
+ (svr >> 4) & 0xf, svr & 0xf);
if (!soc_dev_attr->revision)
- return -ENOMEM;
+ goto err_nomem;
soc_dev = soc_device_register(soc_dev_attr);
- if (IS_ERR(soc_dev))
- return PTR_ERR(soc_dev);
+ if (IS_ERR(soc_dev)) {
+ ret = PTR_ERR(soc_dev);
+ goto err;
+ }
pr_info("Machine: %s\n", soc_dev_attr->machine);
pr_info("SoC family: %s\n", soc_dev_attr->family);
pr_info("SoC ID: %s, Revision: %s\n",
soc_dev_attr->soc_id, soc_dev_attr->revision);
- return 0;
-}
-/*
- * Table for matching compatible strings, for device tree
- * guts node, for Freescale QorIQ SOCs.
- */
-static const struct of_device_id fsl_guts_of_match[] = {
- { .compatible = "fsl,qoriq-device-config-1.0", },
- { .compatible = "fsl,qoriq-device-config-2.0", },
- { .compatible = "fsl,p1010-guts", },
- { .compatible = "fsl,p1020-guts", },
- { .compatible = "fsl,p1021-guts", },
- { .compatible = "fsl,p1022-guts", },
- { .compatible = "fsl,p1023-guts", },
- { .compatible = "fsl,p2020-guts", },
- { .compatible = "fsl,bsc9131-guts", },
- { .compatible = "fsl,bsc9132-guts", },
- { .compatible = "fsl,mpc8536-guts", },
- { .compatible = "fsl,mpc8544-guts", },
- { .compatible = "fsl,mpc8548-guts", },
- { .compatible = "fsl,mpc8568-guts", },
- { .compatible = "fsl,mpc8569-guts", },
- { .compatible = "fsl,mpc8572-guts", },
- { .compatible = "fsl,ls1021a-dcfg", },
- { .compatible = "fsl,ls1043a-dcfg", },
- { .compatible = "fsl,ls2080a-dcfg", },
- { .compatible = "fsl,ls1088a-dcfg", },
- { .compatible = "fsl,ls1012a-dcfg", },
- { .compatible = "fsl,ls1046a-dcfg", },
- { .compatible = "fsl,lx2160a-dcfg", },
- { .compatible = "fsl,ls1028a-dcfg", },
- {}
-};
-MODULE_DEVICE_TABLE(of, fsl_guts_of_match);
+ return 0;
-static struct platform_driver fsl_guts_driver = {
- .driver = {
- .name = "fsl-guts",
- .of_match_table = fsl_guts_of_match,
- },
- .probe = fsl_guts_probe,
-};
+err_nomem:
+ ret = -ENOMEM;
+err:
+ kfree(soc_dev_attr->machine);
+ kfree(soc_dev_attr->family);
+ kfree(soc_dev_attr->soc_id);
+ kfree(soc_dev_attr->revision);
-static int __init fsl_guts_init(void)
-{
- return platform_driver_register(&fsl_guts_driver);
+ return ret;
}
core_initcall(fsl_guts_init);
--
2.30.2
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
next prev parent reply other threads:[~2022-01-27 16:46 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-01-27 16:41 [PATCH v1 0/7] soc: fsl: guts: cleanups and serial_number support Michael Walle
2022-01-27 16:41 ` [PATCH v1 1/7] soc: fsl: guts: machine variable might be unset Michael Walle
2022-01-27 16:41 ` [PATCH v1 2/7] soc: fsl: guts: remove module_exit() and fsl_guts_remove() Michael Walle
2022-01-27 16:41 ` [PATCH v1 3/7] soc: fsl: guts: embed fsl_guts_get_svr() in probe() Michael Walle
2022-01-27 16:41 ` [PATCH v1 4/7] soc: fsl: guts: allocate soc_dev_attr on the heap Michael Walle
2022-01-27 16:41 ` [PATCH v1 5/7] soc: fsl: guts: use of_root instead of own reference Michael Walle
2022-01-27 16:41 ` Michael Walle [this message]
2022-01-27 16:41 ` [RFC PATCH v1 7/7] soc: fsl: guts: add serial_number support Michael Walle
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20220127164125.3651285-7-michael@walle.cc \
--to=michael@walle.cc \
--cc=Sudeep.Holla@arm.com \
--cc=arnd@arndb.de \
--cc=leoyang.li@nxp.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linuxppc-dev@lists.ozlabs.org \
--cc=ulf.hansson@linaro.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).