From nobody Fri Jun 19 13:36:25 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id B1940C433F5 for ; Mon, 4 Apr 2022 09:57:39 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1355390AbiDDJ7d (ORCPT ); Mon, 4 Apr 2022 05:59:33 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:53156 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S239305AbiDDJ7V (ORCPT ); Mon, 4 Apr 2022 05:59:21 -0400 Received: from ssl.serverraum.org (ssl.serverraum.org [176.9.125.105]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 99E723BFB7 for ; Mon, 4 Apr 2022 02:57:25 -0700 (PDT) Received: from mwalle01.kontron.local. (unknown [213.135.10.150]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (P-384) server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by ssl.serverraum.org (Postfix) with ESMTPSA id 28F2D22247; Mon, 4 Apr 2022 11:57:23 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=walle.cc; s=mail2016061301; t=1649066243; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=iX2fFx8/rq7F3Adog43qeOMbLlUuhbcJulHHCOYHYsg=; b=NNkJqr8+5zPdPhCam/JqBEDXjHgmuDyTC4HQuzE8W1AFUWCkpHKmXvPT5CrDnlCAiRJlLz lKmkzJsGVRQbhbivf/bArfrBeax3BmkJDf7FdMBGNh0nEzRukk32OAfTxo3fL0FSTzVM8y 8ROz2rfs3NU6TZo2Z9EcRzwh9KMQKwY= From: Michael Walle To: linuxppc-dev@lists.ozlabs.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Cc: Shawn Guo , Li Yang , Ulf Hansson , Sudeep Holla , Arnd Bergmann , Dan Carpenter , Michael Walle Subject: [PATCH RESEND v2 1/7] soc: fsl: guts: machine variable might be unset Date: Mon, 4 Apr 2022 11:56:03 +0200 Message-Id: <20220404095609.3932782-2-michael@walle.cc> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20220404095609.3932782-1-michael@walle.cc> References: <20220404095609.3932782-1-michael@walle.cc> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" If both the model and the compatible properties are missing, then machine will not be set. Initialize it with NULL. Fixes: 34c1c21e94ac ("soc: fsl: fix section mismatch build warnings") Signed-off-by: Michael Walle Acked-by: Arnd Bergmann --- drivers/soc/fsl/guts.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/soc/fsl/guts.c b/drivers/soc/fsl/guts.c index 5ed2fc1c53a0..be18d46c7b0f 100644 --- a/drivers/soc/fsl/guts.c +++ b/drivers/soc/fsl/guts.c @@ -140,7 +140,7 @@ static int fsl_guts_probe(struct platform_device *pdev) struct device_node *root, *np =3D pdev->dev.of_node; struct device *dev =3D &pdev->dev; const struct fsl_soc_die_attr *soc_die; - const char *machine; + const char *machine =3D NULL; u32 svr; =20 /* Initialize guts */ --=20 2.30.2 From nobody Fri Jun 19 13:36:25 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 15C30C433EF for ; Mon, 4 Apr 2022 09:57:54 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1355613AbiDDJ7q (ORCPT ); Mon, 4 Apr 2022 05:59:46 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:53162 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1354905AbiDDJ7V (ORCPT ); Mon, 4 Apr 2022 05:59:21 -0400 Received: from ssl.serverraum.org (ssl.serverraum.org [176.9.125.105]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 3233C3BFB9 for ; Mon, 4 Apr 2022 02:57:26 -0700 (PDT) Received: from mwalle01.kontron.local. (unknown [213.135.10.150]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (P-384) server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by ssl.serverraum.org (Postfix) with ESMTPSA id 356A722249; Mon, 4 Apr 2022 11:57:24 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=walle.cc; s=mail2016061301; t=1649066244; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=8H9WDff2V0whcBx4OOXlWzd8HqNMxJRqX9n6bDccO1g=; b=nvHqe8IEY4ITtcVoDHNFdJ8SV5LqTxDgclRU5ap8Vj3p94k4fA789MeXeJkoDwBJZPY3wb 5or2MDkzUCpYeqms9j2ZCqwGuqupHH54JZGfwVSXb6kTnKth0wUDJEGPPUjVJ0b7q2BIPo uLvJs2vK/WCGe09fD+hGe9rnR5MQjWc= From: Michael Walle To: linuxppc-dev@lists.ozlabs.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Cc: Shawn Guo , Li Yang , Ulf Hansson , Sudeep Holla , Arnd Bergmann , Dan Carpenter , Michael Walle Subject: [PATCH RESEND v2 2/7] soc: fsl: guts: remove module_exit() and fsl_guts_remove() Date: Mon, 4 Apr 2022 11:56:04 +0200 Message-Id: <20220404095609.3932782-3-michael@walle.cc> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20220404095609.3932782-1-michael@walle.cc> References: <20220404095609.3932782-1-michael@walle.cc> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" This driver will never be unloaded. Firstly, it is not available as a module, but more importantly, other drivers will depend on this one to apply possible chip errata. Signed-off-by: Michael Walle Acked-by: Arnd Bergmann --- drivers/soc/fsl/guts.c | 15 +-------------- 1 file changed, 1 insertion(+), 14 deletions(-) diff --git a/drivers/soc/fsl/guts.c b/drivers/soc/fsl/guts.c index be18d46c7b0f..0bea43770d51 100644 --- a/drivers/soc/fsl/guts.c +++ b/drivers/soc/fsl/guts.c @@ -27,7 +27,6 @@ struct fsl_soc_die_attr { =20 static struct guts *guts; static struct soc_device_attribute soc_dev_attr; -static struct soc_device *soc_dev; =20 =20 /* SoC die attribute definition for QorIQ platform */ @@ -138,6 +137,7 @@ static u32 fsl_guts_get_svr(void) static int fsl_guts_probe(struct platform_device *pdev) { struct device_node *root, *np =3D pdev->dev.of_node; + static struct soc_device *soc_dev; struct device *dev =3D &pdev->dev; const struct fsl_soc_die_attr *soc_die; const char *machine =3D NULL; @@ -197,12 +197,6 @@ static int fsl_guts_probe(struct platform_device *pdev) return 0; } =20 -static int fsl_guts_remove(struct platform_device *dev) -{ - soc_device_unregister(soc_dev); - return 0; -} - /* * Table for matching compatible strings, for device tree * guts node, for Freescale QorIQ SOCs. @@ -242,7 +236,6 @@ static struct platform_driver fsl_guts_driver =3D { .of_match_table =3D fsl_guts_of_match, }, .probe =3D fsl_guts_probe, - .remove =3D fsl_guts_remove, }; =20 static int __init fsl_guts_init(void) @@ -250,9 +243,3 @@ static int __init fsl_guts_init(void) return platform_driver_register(&fsl_guts_driver); } core_initcall(fsl_guts_init); - -static void __exit fsl_guts_exit(void) -{ - platform_driver_unregister(&fsl_guts_driver); -} -module_exit(fsl_guts_exit); --=20 2.30.2 From nobody Fri Jun 19 13:36:25 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id EB0AAC433EF for ; Mon, 4 Apr 2022 09:57:43 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1355438AbiDDJ7h (ORCPT ); Mon, 4 Apr 2022 05:59:37 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:53164 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1355007AbiDDJ7X (ORCPT ); Mon, 4 Apr 2022 05:59:23 -0400 Received: from ssl.serverraum.org (ssl.serverraum.org [176.9.125.105]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 9848E3BFBC for ; Mon, 4 Apr 2022 02:57:26 -0700 (PDT) Received: from mwalle01.kontron.local. (unknown [213.135.10.150]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (P-384) server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by ssl.serverraum.org (Postfix) with ESMTPSA id 7E0282224D; Mon, 4 Apr 2022 11:57:24 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=walle.cc; s=mail2016061301; t=1649066244; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=nCHNYot625EnAVBK5VOhUP+5vbgUYJ9BdY/54uVs0mY=; b=ts+JPCiGtXb2+nvWTf7wPUYySMiTz4tdow6DFbPbVlFy/GT7hVythTAc0Tzs4I461Ae3EC oSF+/K/mkb1twTOhH5W+SmtxZtfi+DHemFShOxfDAmBrXYqz+bSjj9dllkv0f6mDTO606D k5vTJbwIoCdWl0CztRlWBylerNLtBTs= From: Michael Walle To: linuxppc-dev@lists.ozlabs.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Cc: Shawn Guo , Li Yang , Ulf Hansson , Sudeep Holla , Arnd Bergmann , Dan Carpenter , Michael Walle Subject: [PATCH RESEND v2 3/7] soc: fsl: guts: embed fsl_guts_get_svr() in probe() Date: Mon, 4 Apr 2022 11:56:05 +0200 Message-Id: <20220404095609.3932782-4-michael@walle.cc> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20220404095609.3932782-1-michael@walle.cc> References: <20220404095609.3932782-1-michael@walle.cc> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" Move the reading of the SVR into the probe function as fsl_guts_get_svr() is the only user of the static guts variable and this lets us drop that as well as the malloc() for this variable. Also, we can unmap the memory region after we accessed it, which will simplify error handling later. Signed-off-by: Michael Walle Acked-by: Arnd Bergmann --- drivers/soc/fsl/guts.c | 42 +++++++++++------------------------------- 1 file changed, 11 insertions(+), 31 deletions(-) diff --git a/drivers/soc/fsl/guts.c b/drivers/soc/fsl/guts.c index 0bea43770d51..4e5675ab5f73 100644 --- a/drivers/soc/fsl/guts.c +++ b/drivers/soc/fsl/guts.c @@ -14,18 +14,12 @@ #include #include =20 -struct guts { - struct ccsr_guts __iomem *regs; - bool little_endian; -}; - struct fsl_soc_die_attr { char *die; u32 svr; u32 mask; }; =20 -static struct guts *guts; static struct soc_device_attribute soc_dev_attr; =20 =20 @@ -119,40 +113,27 @@ static const struct fsl_soc_die_attr *fsl_soc_die_mat= ch( return NULL; } =20 -static u32 fsl_guts_get_svr(void) -{ - u32 svr =3D 0; - - if (!guts || !guts->regs) - return svr; - - if (guts->little_endian) - svr =3D ioread32(&guts->regs->svr); - else - svr =3D ioread32be(&guts->regs->svr); - - return svr; -} - static int fsl_guts_probe(struct platform_device *pdev) { struct device_node *root, *np =3D pdev->dev.of_node; static struct soc_device *soc_dev; struct device *dev =3D &pdev->dev; const struct fsl_soc_die_attr *soc_die; + struct ccsr_guts __iomem *regs; const char *machine =3D NULL; + bool little_endian; u32 svr; =20 - /* Initialize guts */ - guts =3D devm_kzalloc(dev, sizeof(*guts), GFP_KERNEL); - if (!guts) - return -ENOMEM; - - guts->little_endian =3D of_property_read_bool(np, "little-endian"); + regs =3D of_iomap(np, 0); + if (IS_ERR(regs)) + return PTR_ERR(regs); =20 - guts->regs =3D devm_platform_ioremap_resource(pdev, 0); - if (IS_ERR(guts->regs)) - return PTR_ERR(guts->regs); + little_endian =3D of_property_read_bool(np, "little-endian"); + if (little_endian) + svr =3D ioread32(®s->svr); + else + svr =3D ioread32be(®s->svr); + iounmap(regs); =20 /* Register soc device */ root =3D of_find_node_by_path("/"); @@ -167,7 +148,6 @@ static int fsl_guts_probe(struct platform_device *pdev) } of_node_put(root); =20 - svr =3D fsl_guts_get_svr(); soc_die =3D fsl_soc_die_match(svr, fsl_soc_die); if (soc_die) { soc_dev_attr.family =3D devm_kasprintf(dev, GFP_KERNEL, --=20 2.30.2 From nobody Fri Jun 19 13:36:25 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 674CBC433F5 for ; Mon, 4 Apr 2022 09:57:49 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1355581AbiDDJ7n (ORCPT ); Mon, 4 Apr 2022 05:59:43 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:53188 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1355033AbiDDJ7X (ORCPT ); Mon, 4 Apr 2022 05:59:23 -0400 Received: from ssl.serverraum.org (ssl.serverraum.org [IPv6:2a01:4f8:151:8464::1:2]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 609CD3BFBE for ; Mon, 4 Apr 2022 02:57:27 -0700 (PDT) Received: from mwalle01.kontron.local. (unknown [213.135.10.150]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (P-384) server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by ssl.serverraum.org (Postfix) with ESMTPSA id 2D7E32224E; Mon, 4 Apr 2022 11:57:25 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=walle.cc; s=mail2016061301; t=1649066245; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=6OyNeZS+QG1hA8GYAjcgVvsD0Y3gZ/R3mypb4i3MxqE=; b=dqX6rxz52L2kLkfD4q33e9A2jU23arfKYKfLcnfS1KnKRue1l/FWG9godj347kUe702IaX +eWNQPL2ChnQqET8pteLa1Q3WJtesB1oteA4SpwhzrM8zsXv0369buTj+LRlga3DVGSasC zcdL/4aNgMi3sL6UBTKUZCG3BDcrbSc= From: Michael Walle To: linuxppc-dev@lists.ozlabs.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Cc: Shawn Guo , Li Yang , Ulf Hansson , Sudeep Holla , Arnd Bergmann , Dan Carpenter , Michael Walle Subject: [PATCH RESEND v2 4/7] soc: fsl: guts: allocate soc_dev_attr on the heap Date: Mon, 4 Apr 2022 11:56:06 +0200 Message-Id: <20220404095609.3932782-5-michael@walle.cc> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20220404095609.3932782-1-michael@walle.cc> References: <20220404095609.3932782-1-michael@walle.cc> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" This is the last global static variable. Drop it and allocate the memory on the heap instead. Signed-off-by: Michael Walle Acked-by: Arnd Bergmann --- drivers/soc/fsl/guts.c | 40 +++++++++++++++++++++------------------- 1 file changed, 21 insertions(+), 19 deletions(-) diff --git a/drivers/soc/fsl/guts.c b/drivers/soc/fsl/guts.c index 4e5675ab5f73..44e7a9bf6392 100644 --- a/drivers/soc/fsl/guts.c +++ b/drivers/soc/fsl/guts.c @@ -20,9 +20,6 @@ struct fsl_soc_die_attr { u32 mask; }; =20 -static struct soc_device_attribute soc_dev_attr; - - /* SoC die attribute definition for QorIQ platform */ static const struct fsl_soc_die_attr fsl_soc_die[] =3D { /* @@ -116,6 +113,7 @@ static const struct fsl_soc_die_attr *fsl_soc_die_match( static int fsl_guts_probe(struct platform_device *pdev) { struct device_node *root, *np =3D pdev->dev.of_node; + struct soc_device_attribute *soc_dev_attr; static struct soc_device *soc_dev; struct device *dev =3D &pdev->dev; const struct fsl_soc_die_attr *soc_die; @@ -136,12 +134,16 @@ static int fsl_guts_probe(struct platform_device *pde= v) iounmap(regs); =20 /* Register soc device */ + soc_dev_attr =3D devm_kzalloc(dev, sizeof(*soc_dev_attr), GFP_KERNEL); + if (!soc_dev_attr) + return -ENOMEM; + root =3D of_find_node_by_path("/"); if (of_property_read_string(root, "model", &machine)) of_property_read_string_index(root, "compatible", 0, &machine); if (machine) { - soc_dev_attr.machine =3D devm_kstrdup(dev, machine, GFP_KERNEL); - if (!soc_dev_attr.machine) { + soc_dev_attr->machine =3D devm_kstrdup(dev, machine, GFP_KERNEL); + if (!soc_dev_attr->machine) { of_node_put(root); return -ENOMEM; } @@ -150,30 +152,30 @@ static int fsl_guts_probe(struct platform_device *pde= v) =20 soc_die =3D fsl_soc_die_match(svr, fsl_soc_die); if (soc_die) { - soc_dev_attr.family =3D devm_kasprintf(dev, GFP_KERNEL, - "QorIQ %s", soc_die->die); + soc_dev_attr->family =3D devm_kasprintf(dev, GFP_KERNEL, + "QorIQ %s", soc_die->die); } else { - soc_dev_attr.family =3D devm_kasprintf(dev, GFP_KERNEL, "QorIQ"); + soc_dev_attr->family =3D devm_kasprintf(dev, GFP_KERNEL, "QorIQ"); } - if (!soc_dev_attr.family) + if (!soc_dev_attr->family) return -ENOMEM; - soc_dev_attr.soc_id =3D devm_kasprintf(dev, GFP_KERNEL, - "svr:0x%08x", svr); - if (!soc_dev_attr.soc_id) + soc_dev_attr->soc_id =3D devm_kasprintf(dev, GFP_KERNEL, + "svr:0x%08x", svr); + if (!soc_dev_attr->soc_id) return -ENOMEM; - soc_dev_attr.revision =3D devm_kasprintf(dev, GFP_KERNEL, "%d.%d", - (svr >> 4) & 0xf, svr & 0xf); - if (!soc_dev_attr.revision) + soc_dev_attr->revision =3D devm_kasprintf(dev, GFP_KERNEL, "%d.%d", + (svr >> 4) & 0xf, svr & 0xf); + if (!soc_dev_attr->revision) return -ENOMEM; =20 - soc_dev =3D soc_device_register(&soc_dev_attr); + soc_dev =3D soc_device_register(soc_dev_attr); if (IS_ERR(soc_dev)) return PTR_ERR(soc_dev); =20 - pr_info("Machine: %s\n", soc_dev_attr.machine); - pr_info("SoC family: %s\n", soc_dev_attr.family); + 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); + soc_dev_attr->soc_id, soc_dev_attr->revision); return 0; } =20 --=20 2.30.2 From nobody Fri Jun 19 13:36:25 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id E3CF6C433EF for ; Mon, 4 Apr 2022 09:57:46 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1355552AbiDDJ7l (ORCPT ); Mon, 4 Apr 2022 05:59:41 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:53192 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1355064AbiDDJ7X (ORCPT ); Mon, 4 Apr 2022 05:59:23 -0400 Received: from ssl.serverraum.org (ssl.serverraum.org [176.9.125.105]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id DE1DC3C48A for ; Mon, 4 Apr 2022 02:57:27 -0700 (PDT) Received: from mwalle01.kontron.local. (unknown [213.135.10.150]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (P-384) server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by ssl.serverraum.org (Postfix) with ESMTPSA id 76ED72224F; Mon, 4 Apr 2022 11:57:25 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=walle.cc; s=mail2016061301; t=1649066245; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=JnHccvJSwDHKIeM+KqZd1CR0E/ptqx04WpY+j5SqzI0=; b=RIWIC/8MFZvPuth+ebs52ym33tr+V1nZ8MKXpuiRD2eBIzJLBHLwEwDjbSwzl6xjGLvdI4 17W9loR0aWN2rCExu9XpS+bcZ4UmkeuBV5+57xjxAIJcidq+v4S284h1KOgdRGdIh8XyqW kvrUAvnowJHu04z4wA1Kcz1ajVb/GGY= From: Michael Walle To: linuxppc-dev@lists.ozlabs.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Cc: Shawn Guo , Li Yang , Ulf Hansson , Sudeep Holla , Arnd Bergmann , Dan Carpenter , Michael Walle Subject: [PATCH RESEND v2 5/7] soc: fsl: guts: use of_root instead of own reference Date: Mon, 4 Apr 2022 11:56:07 +0200 Message-Id: <20220404095609.3932782-6-michael@walle.cc> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20220404095609.3932782-1-michael@walle.cc> References: <20220404095609.3932782-1-michael@walle.cc> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" There is already a global of_root reference. Use that instead of getting one on our own. We don't need to care about the reference count either this way. Signed-off-by: Michael Walle Acked-by: Arnd Bergmann --- drivers/soc/fsl/guts.c | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/drivers/soc/fsl/guts.c b/drivers/soc/fsl/guts.c index 44e7a9bf6392..585cbd9d8224 100644 --- a/drivers/soc/fsl/guts.c +++ b/drivers/soc/fsl/guts.c @@ -112,7 +112,7 @@ static const struct fsl_soc_die_attr *fsl_soc_die_match( =20 static int fsl_guts_probe(struct platform_device *pdev) { - struct device_node *root, *np =3D pdev->dev.of_node; + struct device_node *np =3D pdev->dev.of_node; struct soc_device_attribute *soc_dev_attr; static struct soc_device *soc_dev; struct device *dev =3D &pdev->dev; @@ -138,17 +138,13 @@ static int fsl_guts_probe(struct platform_device *pde= v) if (!soc_dev_attr) return -ENOMEM; =20 - root =3D of_find_node_by_path("/"); - if (of_property_read_string(root, "model", &machine)) - of_property_read_string_index(root, "compatible", 0, &machine); + 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 =3D devm_kstrdup(dev, machine, GFP_KERNEL); - if (!soc_dev_attr->machine) { - of_node_put(root); + if (!soc_dev_attr->machine) return -ENOMEM; - } } - of_node_put(root); =20 soc_die =3D fsl_soc_die_match(svr, fsl_soc_die); if (soc_die) { --=20 2.30.2 From nobody Fri Jun 19 13:36:25 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id A163EC433F5 for ; Mon, 4 Apr 2022 09:58:00 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1355765AbiDDJ7x (ORCPT ); Mon, 4 Apr 2022 05:59:53 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:53194 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1355204AbiDDJ7Y (ORCPT ); Mon, 4 Apr 2022 05:59:24 -0400 Received: from ssl.serverraum.org (ssl.serverraum.org [176.9.125.105]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id DD09C3C486 for ; Mon, 4 Apr 2022 02:57:27 -0700 (PDT) Received: from mwalle01.kontron.local. (unknown [213.135.10.150]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (P-384) server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by ssl.serverraum.org (Postfix) with ESMTPSA id D502822253; Mon, 4 Apr 2022 11:57:25 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=walle.cc; s=mail2016061301; t=1649066246; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=v4ovPMtZKYrSYvnne++2NCiqISTem+2ORO/rEGf1fnU=; b=FypPdnh/aC2DXD/HlOitMRUQ3uYoaroPYDYv3JWgzbYoHd+HF3NaueOHbLAJx22YGkPSM6 8wAtBaM7n8kCMqx7O2YV2Wa5NmuGCJ8hnrzF+uGUEJVn6b7B4xhEsPGqKl1ywh9YbT6Vn2 UQhM1uoD6iMuG+38xeZK/MADI5BhQfo= From: Michael Walle To: linuxppc-dev@lists.ozlabs.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Cc: Shawn Guo , Li Yang , Ulf Hansson , Sudeep Holla , Arnd Bergmann , Dan Carpenter , Michael Walle Subject: [PATCH RESEND v2 6/7] soc: fsl: guts: drop platform driver Date: Mon, 4 Apr 2022 11:56:08 +0200 Message-Id: <20220404095609.3932782-7-michael@walle.cc> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20220404095609.3932782-1-michael@walle.cc> References: <20220404095609.3932782-1-michael@walle.cc> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" 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 Acked-by: Arnd Bergmann --- drivers/soc/fsl/guts.c | 134 ++++++++++++++++++++++------------------- 1 file changed, 71 insertions(+), 63 deletions(-) diff --git a/drivers/soc/fsl/guts.c b/drivers/soc/fsl/guts.c index 585cbd9d8224..370be923aa0f 100644 --- a/drivers/soc/fsl/guts.c +++ b/drivers/soc/fsl/guts.c @@ -110,21 +110,59 @@ static const struct fsl_soc_die_attr *fsl_soc_die_mat= ch( return NULL; } =20 -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[] =3D { + { .compatible =3D "fsl,qoriq-device-config-1.0", }, + { .compatible =3D "fsl,qoriq-device-config-2.0", }, + { .compatible =3D "fsl,p1010-guts", }, + { .compatible =3D "fsl,p1020-guts", }, + { .compatible =3D "fsl,p1021-guts", }, + { .compatible =3D "fsl,p1022-guts", }, + { .compatible =3D "fsl,p1023-guts", }, + { .compatible =3D "fsl,p2020-guts", }, + { .compatible =3D "fsl,bsc9131-guts", }, + { .compatible =3D "fsl,bsc9132-guts", }, + { .compatible =3D "fsl,mpc8536-guts", }, + { .compatible =3D "fsl,mpc8544-guts", }, + { .compatible =3D "fsl,mpc8548-guts", }, + { .compatible =3D "fsl,mpc8568-guts", }, + { .compatible =3D "fsl,mpc8569-guts", }, + { .compatible =3D "fsl,mpc8572-guts", }, + { .compatible =3D "fsl,ls1021a-dcfg", }, + { .compatible =3D "fsl,ls1043a-dcfg", }, + { .compatible =3D "fsl,ls2080a-dcfg", }, + { .compatible =3D "fsl,ls1088a-dcfg", }, + { .compatible =3D "fsl,ls1012a-dcfg", }, + { .compatible =3D "fsl,ls1046a-dcfg", }, + { .compatible =3D "fsl,lx2160a-dcfg", }, + { .compatible =3D "fsl,ls1028a-dcfg", }, + {} +}; + +static int __init fsl_guts_init(void) { - struct device_node *np =3D pdev->dev.of_node; struct soc_device_attribute *soc_dev_attr; static struct soc_device *soc_dev; - struct device *dev =3D &pdev->dev; const struct fsl_soc_die_attr *soc_die; struct ccsr_guts __iomem *regs; const char *machine =3D NULL; + struct device_node *np; bool little_endian; u32 svr; + int ret; + + np =3D of_find_matching_node_and_match(NULL, fsl_guts_of_match, NULL); + if (!np) + return 0; =20 regs =3D of_iomap(np, 0); - if (IS_ERR(regs)) + if (IS_ERR(regs)) { + of_node_put(np); return PTR_ERR(regs); + } =20 little_endian =3D of_property_read_bool(np, "little-endian"); if (little_endian) @@ -132,92 +170,62 @@ static int fsl_guts_probe(struct platform_device *pde= v) else svr =3D ioread32be(®s->svr); iounmap(regs); + of_node_put(np); =20 /* Register soc device */ - soc_dev_attr =3D devm_kzalloc(dev, sizeof(*soc_dev_attr), GFP_KERNEL); + soc_dev_attr =3D kzalloc(sizeof(*soc_dev_attr), GFP_KERNEL); if (!soc_dev_attr) return -ENOMEM; =20 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 =3D devm_kstrdup(dev, machine, GFP_KERNEL); + soc_dev_attr->machine =3D kstrdup(machine, GFP_KERNEL); if (!soc_dev_attr->machine) - return -ENOMEM; + goto err_nomem; } =20 soc_die =3D fsl_soc_die_match(svr, fsl_soc_die); if (soc_die) { - soc_dev_attr->family =3D devm_kasprintf(dev, GFP_KERNEL, - "QorIQ %s", soc_die->die); + soc_dev_attr->family =3D kasprintf(GFP_KERNEL, "QorIQ %s", + soc_die->die); } else { - soc_dev_attr->family =3D devm_kasprintf(dev, GFP_KERNEL, "QorIQ"); + soc_dev_attr->family =3D kasprintf(GFP_KERNEL, "QorIQ"); } if (!soc_dev_attr->family) - return -ENOMEM; - soc_dev_attr->soc_id =3D devm_kasprintf(dev, GFP_KERNEL, - "svr:0x%08x", svr); + goto err_nomem; + + soc_dev_attr->soc_id =3D kasprintf(GFP_KERNEL, "svr:0x%08x", svr); if (!soc_dev_attr->soc_id) - return -ENOMEM; - soc_dev_attr->revision =3D devm_kasprintf(dev, GFP_KERNEL, "%d.%d", - (svr >> 4) & 0xf, svr & 0xf); + goto err_nomem; + + soc_dev_attr->revision =3D kasprintf(GFP_KERNEL, "%d.%d", + (svr >> 4) & 0xf, svr & 0xf); if (!soc_dev_attr->revision) - return -ENOMEM; + goto err_nomem; =20 soc_dev =3D soc_device_register(soc_dev_attr); - if (IS_ERR(soc_dev)) - return PTR_ERR(soc_dev); + if (IS_ERR(soc_dev)) { + ret =3D PTR_ERR(soc_dev); + goto err; + } =20 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; -} =20 -/* - * Table for matching compatible strings, for device tree - * guts node, for Freescale QorIQ SOCs. - */ -static const struct of_device_id fsl_guts_of_match[] =3D { - { .compatible =3D "fsl,qoriq-device-config-1.0", }, - { .compatible =3D "fsl,qoriq-device-config-2.0", }, - { .compatible =3D "fsl,p1010-guts", }, - { .compatible =3D "fsl,p1020-guts", }, - { .compatible =3D "fsl,p1021-guts", }, - { .compatible =3D "fsl,p1022-guts", }, - { .compatible =3D "fsl,p1023-guts", }, - { .compatible =3D "fsl,p2020-guts", }, - { .compatible =3D "fsl,bsc9131-guts", }, - { .compatible =3D "fsl,bsc9132-guts", }, - { .compatible =3D "fsl,mpc8536-guts", }, - { .compatible =3D "fsl,mpc8544-guts", }, - { .compatible =3D "fsl,mpc8548-guts", }, - { .compatible =3D "fsl,mpc8568-guts", }, - { .compatible =3D "fsl,mpc8569-guts", }, - { .compatible =3D "fsl,mpc8572-guts", }, - { .compatible =3D "fsl,ls1021a-dcfg", }, - { .compatible =3D "fsl,ls1043a-dcfg", }, - { .compatible =3D "fsl,ls2080a-dcfg", }, - { .compatible =3D "fsl,ls1088a-dcfg", }, - { .compatible =3D "fsl,ls1012a-dcfg", }, - { .compatible =3D "fsl,ls1046a-dcfg", }, - { .compatible =3D "fsl,lx2160a-dcfg", }, - { .compatible =3D "fsl,ls1028a-dcfg", }, - {} -}; -MODULE_DEVICE_TABLE(of, fsl_guts_of_match); + return 0; =20 -static struct platform_driver fsl_guts_driver =3D { - .driver =3D { - .name =3D "fsl-guts", - .of_match_table =3D fsl_guts_of_match, - }, - .probe =3D fsl_guts_probe, -}; +err_nomem: + ret =3D -ENOMEM; +err: + kfree(soc_dev_attr->machine); + kfree(soc_dev_attr->family); + kfree(soc_dev_attr->soc_id); + kfree(soc_dev_attr->revision); + kfree(soc_dev_attr); =20 -static int __init fsl_guts_init(void) -{ - return platform_driver_register(&fsl_guts_driver); + return ret; } core_initcall(fsl_guts_init); --=20 2.30.2 From nobody Fri Jun 19 13:36:25 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id C17C8C433F5 for ; Mon, 4 Apr 2022 09:57:56 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1355680AbiDDJ7u (ORCPT ); Mon, 4 Apr 2022 05:59:50 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:53196 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1355176AbiDDJ7Y (ORCPT ); Mon, 4 Apr 2022 05:59:24 -0400 Received: from ssl.serverraum.org (ssl.serverraum.org [IPv6:2a01:4f8:151:8464::1:2]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 1E4083C48D for ; Mon, 4 Apr 2022 02:57:28 -0700 (PDT) Received: from mwalle01.kontron.local. (unknown [213.135.10.150]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (P-384) server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by ssl.serverraum.org (Postfix) with ESMTPSA id 2EEA222255; Mon, 4 Apr 2022 11:57:26 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=walle.cc; s=mail2016061301; t=1649066246; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=j904Obz7z0f9BMGRXiWX07Usnwp/ORQFPcf7fLFab5g=; b=jrxnZimPuYcg7vhCzupFLMjC648tABQHXkZGvNzwa9loh5/w38AxSF79HG4Oc8Ogf6hU3U dJtO2LIPEYkNJ1Nwb2tWOkFO3syJ+71ODjRcprZBHmb2kiA37cD2+gfK2XKWtsDeImW+Oy vBx8aq5h60V3C9WpviDFdaEEDY4MBE4= From: Michael Walle To: linuxppc-dev@lists.ozlabs.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Cc: Shawn Guo , Li Yang , Ulf Hansson , Sudeep Holla , Arnd Bergmann , Dan Carpenter , Michael Walle Subject: [PATCH RESEND v2 7/7] soc: fsl: guts: add serial_number support Date: Mon, 4 Apr 2022 11:56:09 +0200 Message-Id: <20220404095609.3932782-8-michael@walle.cc> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20220404095609.3932782-1-michael@walle.cc> References: <20220404095609.3932782-1-michael@walle.cc> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" Most layerscapes provide a security fuse processor where the vendor will store a unique id per part. Unfortunately, we cannot use the corresponding efuse driver because this driver needs to be ready early during the boot phase. To get the unique identifier, we just need to access two registers. Thus we just search the device tree for the corresponding device, map its memory to read the id and then unmap it again. Because it is likely that the offset within the fuses is dependent on the SoC, we need a per SoC data. Also, the compatible string is different among the SoCs. For now, this add support for the LS1028A SoC. Signed-off-by: Michael Walle Acked-by: Arnd Bergmann --- drivers/soc/fsl/guts.c | 48 ++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 46 insertions(+), 2 deletions(-) diff --git a/drivers/soc/fsl/guts.c b/drivers/soc/fsl/guts.c index 370be923aa0f..27035de062f8 100644 --- a/drivers/soc/fsl/guts.c +++ b/drivers/soc/fsl/guts.c @@ -20,6 +20,11 @@ struct fsl_soc_die_attr { u32 mask; }; =20 +struct fsl_soc_data { + const char *sfp_compat; + u32 uid_offset; +}; + /* SoC die attribute definition for QorIQ platform */ static const struct fsl_soc_die_attr fsl_soc_die[] =3D { /* @@ -110,6 +115,33 @@ static const struct fsl_soc_die_attr *fsl_soc_die_matc= h( return NULL; } =20 +static u64 fsl_guts_get_soc_uid(const char *compat, unsigned int offset) +{ + struct device_node *np; + void __iomem *sfp_base; + u64 uid; + + np =3D of_find_compatible_node(NULL, NULL, compat); + if (!np) + return 0; + + sfp_base =3D of_iomap(np, 0); + + uid =3D ioread32(sfp_base + offset); + uid <<=3D 32; + uid |=3D ioread32(sfp_base + offset + 4); + + iounmap(sfp_base); + of_node_put(np); + + return uid; +} + +static const struct fsl_soc_data ls1028a_data =3D { + .sfp_compat =3D "fsl,ls1028a-sfp", + .uid_offset =3D 0x21c, +}; + /* * Table for matching compatible strings, for device tree * guts node, for Freescale QorIQ SOCs. @@ -138,7 +170,7 @@ static const struct of_device_id fsl_guts_of_match[] = =3D { { .compatible =3D "fsl,ls1012a-dcfg", }, { .compatible =3D "fsl,ls1046a-dcfg", }, { .compatible =3D "fsl,lx2160a-dcfg", }, - { .compatible =3D "fsl,ls1028a-dcfg", }, + { .compatible =3D "fsl,ls1028a-dcfg", .data =3D &ls1028a_data}, {} }; =20 @@ -147,16 +179,20 @@ static int __init fsl_guts_init(void) struct soc_device_attribute *soc_dev_attr; static struct soc_device *soc_dev; const struct fsl_soc_die_attr *soc_die; + const struct fsl_soc_data *soc_data; + const struct of_device_id *match; struct ccsr_guts __iomem *regs; const char *machine =3D NULL; struct device_node *np; bool little_endian; + u64 soc_uid =3D 0; u32 svr; int ret; =20 - np =3D of_find_matching_node_and_match(NULL, fsl_guts_of_match, NULL); + np =3D of_find_matching_node_and_match(NULL, fsl_guts_of_match, &match); if (!np) return 0; + soc_data =3D match->data; =20 regs =3D of_iomap(np, 0); if (IS_ERR(regs)) { @@ -204,6 +240,13 @@ static int __init fsl_guts_init(void) if (!soc_dev_attr->revision) goto err_nomem; =20 + if (soc_data) + soc_uid =3D fsl_guts_get_soc_uid(soc_data->sfp_compat, + soc_data->uid_offset); + if (soc_uid) + soc_dev_attr->serial_number =3D kasprintf(GFP_KERNEL, "%016llX", + soc_uid); + soc_dev =3D soc_device_register(soc_dev_attr); if (IS_ERR(soc_dev)) { ret =3D PTR_ERR(soc_dev); @@ -224,6 +267,7 @@ static int __init fsl_guts_init(void) kfree(soc_dev_attr->family); kfree(soc_dev_attr->soc_id); kfree(soc_dev_attr->revision); + kfree(soc_dev_attr->serial_number); kfree(soc_dev_attr); =20 return ret; --=20 2.30.2