From nobody Mon Jun 29 12:38:58 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 7FF13C433F5 for ; Wed, 9 Feb 2022 16:33:14 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S237101AbiBIQdJ (ORCPT ); Wed, 9 Feb 2022 11:33:09 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:41678 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S237020AbiBIQdF (ORCPT ); Wed, 9 Feb 2022 11:33:05 -0500 Received: from ssl.serverraum.org (ssl.serverraum.org [IPv6:2a01:4f8:151:8464::1:2]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id BD626C061355 for ; Wed, 9 Feb 2022 08:33:08 -0800 (PST) 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 B6F28223EA; Wed, 9 Feb 2022 17:33:06 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=walle.cc; s=mail2016061301; t=1644424386; 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=cmcB32lZNLU8U2UJrhiSMThjgIDzKuhDycLLnDyMg7c=; b=flwCb0BUo/UOpJJlBDRJ2vAJRAbM7umeqF2fizu/hCOFfNvM81+7s3LeQZ7E0pc52uDVAo 9rGMtZrfgEKa5zKw6B5CeKbQOrU8rmIClAB+Bwr66CrjO03GhYuCeWUEBcK7b7jknyzMAz hOVyuJ0bUe5HZG13FoiXWS0v0DDXne8= From: Michael Walle To: linuxppc-dev@lists.ozlabs.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Cc: Li Yang , Ulf Hansson , Sudeep Holla , Arnd Bergmann , Dan Carpenter , Michael Walle Subject: [PATCH v2 1/7] soc: fsl: guts: machine variable might be unset Date: Wed, 9 Feb 2022 17:32:36 +0100 Message-Id: <20220209163242.430265-2-michael@walle.cc> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20220209163242.430265-1-michael@walle.cc> References: <20220209163242.430265-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 Mon Jun 29 12:38:58 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 AEEA7C433EF for ; Wed, 9 Feb 2022 16:33:17 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S237108AbiBIQdM (ORCPT ); Wed, 9 Feb 2022 11:33:12 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:41692 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S237070AbiBIQdH (ORCPT ); Wed, 9 Feb 2022 11:33:07 -0500 X-Greylist: delayed 28937 seconds by postgrey-1.37 at lindbergh.monkeyblade.net; Wed, 09 Feb 2022 08:33:10 PST Received: from ssl.serverraum.org (ssl.serverraum.org [176.9.125.105]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 554DBC0613C9 for ; Wed, 9 Feb 2022 08:33:08 -0800 (PST) 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 3BECC223ED; Wed, 9 Feb 2022 17:33:07 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=walle.cc; s=mail2016061301; t=1644424387; 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=JP6sEk8Ye9HSeLSodsUhxvuoScwCGtEWcY67WHVPIzw=; b=miePmVQ/1DdQbb6LxDr08xDl2eTqmNKTKv8vg+YXL/XIs/ZuIPJ4TeLT/BC2euibbnNFFj c+57hSU3d+ADUP6sPmKBwbXsXaI8P/ce+actiNXLio0Q3jkse33Hn2CIGHidIap2OrhOtH G2/8srJAysOt9tBm2WFQQboceihTHHs= From: Michael Walle To: linuxppc-dev@lists.ozlabs.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Cc: Li Yang , Ulf Hansson , Sudeep Holla , Arnd Bergmann , Dan Carpenter , Michael Walle Subject: [PATCH v2 2/7] soc: fsl: guts: remove module_exit() and fsl_guts_remove() Date: Wed, 9 Feb 2022 17:32:37 +0100 Message-Id: <20220209163242.430265-3-michael@walle.cc> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20220209163242.430265-1-michael@walle.cc> References: <20220209163242.430265-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 Mon Jun 29 12:38:58 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 4D21DC433F5 for ; Wed, 9 Feb 2022 16:33:22 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S237143AbiBIQdR (ORCPT ); Wed, 9 Feb 2022 11:33:17 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:41716 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S237082AbiBIQdH (ORCPT ); Wed, 9 Feb 2022 11:33:07 -0500 Received: from ssl.serverraum.org (ssl.serverraum.org [IPv6:2a01:4f8:151:8464::1:2]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 764C5C0612BE for ; Wed, 9 Feb 2022 08:33:09 -0800 (PST) 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 769BF223EF; Wed, 9 Feb 2022 17:33:07 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=walle.cc; s=mail2016061301; t=1644424387; 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=HN25io342QOR5mmEV6tf4MRIjAJRxY2Op5Ab+a0YmEg=; b=YHUChgd1d04ILxJbetmIN3AGxbhcgCDNGi8TMJX6336yOh3eVZNhmEIUAp3pH2A2hAQC5S w5VHLIr2tkAPcvc28BhIM2StcUdwJPI5tduTj2DrwlTxfGc2n8C5Tu7zc3J/zI1fN621P2 xQUgE60xvbpSwNsqKDb/D57h5LHoe50= From: Michael Walle To: linuxppc-dev@lists.ozlabs.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Cc: Li Yang , Ulf Hansson , Sudeep Holla , Arnd Bergmann , Dan Carpenter , Michael Walle Subject: [PATCH v2 3/7] soc: fsl: guts: embed fsl_guts_get_svr() in probe() Date: Wed, 9 Feb 2022 17:32:38 +0100 Message-Id: <20220209163242.430265-4-michael@walle.cc> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20220209163242.430265-1-michael@walle.cc> References: <20220209163242.430265-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 Mon Jun 29 12:38:58 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 3EACAC433EF for ; Wed, 9 Feb 2022 16:33:20 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S237130AbiBIQdP (ORCPT ); Wed, 9 Feb 2022 11:33:15 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:41710 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S237075AbiBIQdH (ORCPT ); Wed, 9 Feb 2022 11:33:07 -0500 Received: from ssl.serverraum.org (ssl.serverraum.org [176.9.125.105]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 763BEC061355 for ; Wed, 9 Feb 2022 08:33:09 -0800 (PST) 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 EC0A9223F0; Wed, 9 Feb 2022 17:33:07 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=walle.cc; s=mail2016061301; t=1644424388; 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=Gq99bFkcrEikiih4d3fvkzvS2Vsk7Jsn46I5OX6vVJ0=; b=O+SpsGrRpogNX69h5g8D7lKsEcmnLspbjNdlBji7ORx6z8L7v+V9B+JH42trKA5wL9fJwo CgIY1hiA1/fnU5AW/mAOb5K9yunxs/e5E/vWyuEM5KrBVXQzQSToZaG1usP14ga2A8iVgd DQHk42FclwwYvxY8zL4dn2yMgiiQjtg= From: Michael Walle To: linuxppc-dev@lists.ozlabs.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Cc: Li Yang , Ulf Hansson , Sudeep Holla , Arnd Bergmann , Dan Carpenter , Michael Walle Subject: [PATCH v2 4/7] soc: fsl: guts: allocate soc_dev_attr on the heap Date: Wed, 9 Feb 2022 17:32:39 +0100 Message-Id: <20220209163242.430265-5-michael@walle.cc> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20220209163242.430265-1-michael@walle.cc> References: <20220209163242.430265-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 | 36 +++++++++++++++++++----------------- 1 file changed, 19 insertions(+), 17 deletions(-) diff --git a/drivers/soc/fsl/guts.c b/drivers/soc/fsl/guts.c index 4e5675ab5f73..f992064a7f58 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, + soc_dev_attr->soc_id =3D devm_kasprintf(dev, GFP_KERNEL, "svr:0x%08x", svr); - if (!soc_dev_attr.soc_id) + if (!soc_dev_attr->soc_id) return -ENOMEM; - soc_dev_attr.revision =3D devm_kasprintf(dev, GFP_KERNEL, "%d.%d", + soc_dev_attr->revision =3D devm_kasprintf(dev, GFP_KERNEL, "%d.%d", (svr >> 4) & 0xf, svr & 0xf); - if (!soc_dev_attr.revision) + 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 Mon Jun 29 12:38:58 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 86C8FC433F5 for ; Wed, 9 Feb 2022 16:33:26 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S237189AbiBIQdU (ORCPT ); Wed, 9 Feb 2022 11:33:20 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:41720 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S237083AbiBIQdH (ORCPT ); Wed, 9 Feb 2022 11:33:07 -0500 Received: from ssl.serverraum.org (ssl.serverraum.org [176.9.125.105]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 0BF66C05CB87 for ; Wed, 9 Feb 2022 08:33:10 -0800 (PST) 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 4249A223F6; Wed, 9 Feb 2022 17:33:08 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=walle.cc; s=mail2016061301; t=1644424388; 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=iYb0ENCyRXUgcKmTLP8nEQL4yL3Qe7lBbJ2Pb+Opzlo=; b=prVn7lvZnIJqGf5WBUK86fnd8CVzCXHIitZvO1IDYALHUaPnm72yZkT8etQ4e+s27bg8wI 5mm5cG5YnsZ3BPeL3cBjaMoSdBM2P2i+SKl0Vo5/SK3h6zHMBqviOFM/O2m8z+mFj81EqU 0Sl1rwvZmyVUTv1YaQYq/L6N/BJunLA= From: Michael Walle To: linuxppc-dev@lists.ozlabs.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Cc: Li Yang , Ulf Hansson , Sudeep Holla , Arnd Bergmann , Dan Carpenter , Michael Walle Subject: [PATCH v2 5/7] soc: fsl: guts: use of_root instead of own reference Date: Wed, 9 Feb 2022 17:32:40 +0100 Message-Id: <20220209163242.430265-6-michael@walle.cc> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20220209163242.430265-1-michael@walle.cc> References: <20220209163242.430265-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 f992064a7f58..13d07cc19f45 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 Mon Jun 29 12:38:58 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 ABB63C433F5 for ; Wed, 9 Feb 2022 16:33:30 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S237198AbiBIQdY (ORCPT ); Wed, 9 Feb 2022 11:33:24 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:41722 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S237092AbiBIQdI (ORCPT ); Wed, 9 Feb 2022 11:33:08 -0500 Received: from ssl.serverraum.org (ssl.serverraum.org [176.9.125.105]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 0BD4AC05CB82 for ; Wed, 9 Feb 2022 08:33:10 -0800 (PST) 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 90B4F223F7; Wed, 9 Feb 2022 17:33:08 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=walle.cc; s=mail2016061301; t=1644424388; 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=oWIl78GqYSzWlRAKxA/9nteEF71Uw8hQ3rTS+tBIPlE=; b=dVOhokUYMqLfVeJ/hfbDGAB4ZMMGKSFbdkIKc7kM6ZFNm8T5yfb2mvuSKDkcabvm7HjLtJ RF97V036OLZGnfOOq9mFjUCuASle2BfQWYkg9vCsr9cJSQtQZ2bw4To513RjkoB0qRn//U K6IwaOvICq1+EREdsJvpYg347EadHa8= From: Michael Walle To: linuxppc-dev@lists.ozlabs.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Cc: Li Yang , Ulf Hansson , Sudeep Holla , Arnd Bergmann , Dan Carpenter , Michael Walle Subject: [PATCH v2 6/7] soc: fsl: guts: drop platform driver Date: Wed, 9 Feb 2022 17:32:41 +0100 Message-Id: <20220209163242.430265-7-michael@walle.cc> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20220209163242.430265-1-michael@walle.cc> References: <20220209163242.430265-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 13d07cc19f45..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 Mon Jun 29 12:38:58 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 0BAE2C433FE for ; Wed, 9 Feb 2022 16:33:24 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S237148AbiBIQdT (ORCPT ); Wed, 9 Feb 2022 11:33:19 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:41718 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S237087AbiBIQdH (ORCPT ); Wed, 9 Feb 2022 11:33:07 -0500 Received: from ssl.serverraum.org (ssl.serverraum.org [176.9.125.105]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 0BEACC05CB86 for ; Wed, 9 Feb 2022 08:33:10 -0800 (PST) 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 D29DB2241C; Wed, 9 Feb 2022 17:33:08 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=walle.cc; s=mail2016061301; t=1644424388; 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=+5nnbdOPpETNIr5p6dezuRxgMxXvvVq1MMIlzKxyUqM=; b=SIaIv/ur79bx1MUjMrs9fs0EsIUaBlcBf7HG6aj72FJGZbS+9p5rFhI34Qhx5qo+ddCtfl fIlgBt9vD++zo99rYCTBea3M2I9RGN34yGe1IEz03AqMqL9zOBZVMJ18B/A2+ofE6p3Q0h cGI3ESKo3dtSsOeedxNykwBM7SJSVZc= From: Michael Walle To: linuxppc-dev@lists.ozlabs.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Cc: Li Yang , Ulf Hansson , Sudeep Holla , Arnd Bergmann , Dan Carpenter , Michael Walle Subject: [PATCH v2 7/7] soc: fsl: guts: add serial_number support Date: Wed, 9 Feb 2022 17:32:42 +0100 Message-Id: <20220209163242.430265-8-michael@walle.cc> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20220209163242.430265-1-michael@walle.cc> References: <20220209163242.430265-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