From nobody Tue Jun 30 01:43:53 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 304A2C433EF for ; Thu, 27 Jan 2022 16:41:47 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S243968AbiA0Qlq (ORCPT ); Thu, 27 Jan 2022 11:41:46 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:52566 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S243890AbiA0Qll (ORCPT ); Thu, 27 Jan 2022 11:41:41 -0500 Received: from ssl.serverraum.org (ssl.serverraum.org [IPv6:2a01:4f8:151:8464::1:2]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 0245AC061714 for ; Thu, 27 Jan 2022 08:41:41 -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 3A5AC223EA; Thu, 27 Jan 2022 17:41:39 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=walle.cc; s=mail2016061301; t=1643301699; 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=Hj28wdCxF0vZgsjKzdionFrUFzJyrw8fIZkK4K2w2bRf+1LOOvuz9NXFaATAfous6xXqwd EE+tujNwm658TZ+2Zp/CBHTH1/QHqzmZTat/sdWSqA72fDkN7V0y6mQQ+YDS8F7/7ckq9o +dImi0lP8LPxI+Kb99Gmtr5Ts+Z31og= 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 , Michael Walle Subject: [PATCH v1 1/7] soc: fsl: guts: machine variable might be unset Date: Thu, 27 Jan 2022 17:41:19 +0100 Message-Id: <20220127164125.3651285-2-michael@walle.cc> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20220127164125.3651285-1-michael@walle.cc> References: <20220127164125.3651285-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 --- 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 Tue Jun 30 01:43:53 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 D098AC433F5 for ; Thu, 27 Jan 2022 16:41:45 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S243943AbiA0Qlo (ORCPT ); Thu, 27 Jan 2022 11:41:44 -0500 Received: from ssl.serverraum.org ([176.9.125.105]:40533 "EHLO ssl.serverraum.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S243892AbiA0Qlk (ORCPT ); Thu, 27 Jan 2022 11:41:40 -0500 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 96E26223ED; Thu, 27 Jan 2022 17:41:39 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=walle.cc; s=mail2016061301; t=1643301699; 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=gg/AYMITFtXTOXwGMvplrT62MpkMZs69bIJf3dH+WEkvj0OZ3DJMitBXVeXcwUXpTGl00j R7fVoWsFOPymql+9H/OE0Isea4jtgm1ILO3ua7NeQxHnKk85R6SP5S18LnUEUGZuib1lI2 I+NbFBdTwgqtudtW7nycjijAg20Cb+Y= 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 , Michael Walle Subject: [PATCH v1 2/7] soc: fsl: guts: remove module_exit() and fsl_guts_remove() Date: Thu, 27 Jan 2022 17:41:20 +0100 Message-Id: <20220127164125.3651285-3-michael@walle.cc> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20220127164125.3651285-1-michael@walle.cc> References: <20220127164125.3651285-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 --- 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 Tue Jun 30 01:43:53 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 58353C433EF for ; Thu, 27 Jan 2022 16:41:49 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S243993AbiA0Qls (ORCPT ); Thu, 27 Jan 2022 11:41:48 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:52578 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S243935AbiA0Qln (ORCPT ); Thu, 27 Jan 2022 11:41:43 -0500 Received: from ssl.serverraum.org (ssl.serverraum.org [IPv6:2a01:4f8:151:8464::1:2]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 9581AC061747 for ; Thu, 27 Jan 2022 08:41:43 -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 EF3F7223EF; Thu, 27 Jan 2022 17:41:39 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=walle.cc; s=mail2016061301; t=1643301700; 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=dQTEDWQ6RIfy9o8kck9NRnhKASlbYsvOAuvfyda4Dbk=; b=j2CFrtteb7RlK1NVCouApJ3i42knoDyzSgub6t4Rf+8bnIDvlrm5EC1PiHr+As3PeNR6/U fjs6yXq9WlFlEYlcaTpqsy+pqXce1RJ6Cw27+FbLuOYjzBrr+84kfWow4gTat0dm3DG1/x fObvanLb2C4B+ZC7369DmTzO+oH16kw= 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 , Michael Walle Subject: [PATCH v1 3/7] soc: fsl: guts: embed fsl_guts_get_svr() in probe() Date: Thu, 27 Jan 2022 17:41:21 +0100 Message-Id: <20220127164125.3651285-4-michael@walle.cc> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20220127164125.3651285-1-michael@walle.cc> References: <20220127164125.3651285-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 --- drivers/soc/fsl/guts.c | 41 +++++++++++------------------------------ 1 file changed, 11 insertions(+), 30 deletions(-) diff --git a/drivers/soc/fsl/guts.c b/drivers/soc/fsl/guts.c index 0bea43770d51..536377988fb4 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,28 @@ 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; + little_endian =3D of_property_read_bool(np, "little-endian"); =20 - 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); + 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 +149,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 Tue Jun 30 01:43:53 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 2EECCC433FE for ; Thu, 27 Jan 2022 16:41:48 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S244000AbiA0Qlr (ORCPT ); Thu, 27 Jan 2022 11:41:47 -0500 Received: from ssl.serverraum.org ([176.9.125.105]:52881 "EHLO ssl.serverraum.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S243916AbiA0Qln (ORCPT ); Thu, 27 Jan 2022 11:41:43 -0500 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 4B9B6223F0; Thu, 27 Jan 2022 17:41:42 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=walle.cc; s=mail2016061301; t=1643301702; 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=1LihC01snsz2jvGOnd10qw1QpXW5+8EkOXvBdUPwZNg=; b=B8c6IRQOCX9H308G07Q1+3M4mhhAkQFmCE+d1jyryGET+1xW8CFT/DYIb57c2ZUMJ7YZOt D2mEi2j7/wRW7bqFFblhKJung1+aEzMTARc6zZTFDQb2VJzKxW4kxeoNKLNkD4GfllpIRz ZnitdI8mblVQp4kkWu7a6cJOhaVJ9wI= 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 , Michael Walle Subject: [PATCH v1 4/7] soc: fsl: guts: allocate soc_dev_attr on the heap Date: Thu, 27 Jan 2022 17:41:22 +0100 Message-Id: <20220127164125.3651285-5-michael@walle.cc> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20220127164125.3651285-1-michael@walle.cc> References: <20220127164125.3651285-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 --- 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 536377988fb4..383b35a4ed58 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; @@ -124,6 +122,10 @@ static int fsl_guts_probe(struct platform_device *pdev) bool little_endian; u32 svr; =20 + soc_dev_attr =3D devm_kzalloc(dev, sizeof(*soc_dev_attr), GFP_KERNEL); + if (!soc_dev_attr) + return -ENOMEM; + little_endian =3D of_property_read_bool(np, "little-endian"); =20 regs =3D of_iomap(np, 0); @@ -141,8 +143,8 @@ static int fsl_guts_probe(struct platform_device *pdev) 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; } @@ -151,30 +153,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 Tue Jun 30 01:43:53 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 84D5BC433EF for ; Thu, 27 Jan 2022 16:41:54 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S244011AbiA0Qlx (ORCPT ); Thu, 27 Jan 2022 11:41:53 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:52584 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S243939AbiA0Qlo (ORCPT ); Thu, 27 Jan 2022 11:41:44 -0500 Received: from ssl.serverraum.org (ssl.serverraum.org [IPv6:2a01:4f8:151:8464::1:2]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 28C0BC061714 for ; Thu, 27 Jan 2022 08:41:44 -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 9276A223F6; Thu, 27 Jan 2022 17:41:42 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=walle.cc; s=mail2016061301; t=1643301702; 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=AHaJAinHemm5iRDWpfuIj9kw7+KTQm29ecIVsTXxKjs=; b=F7yKqrGZDCDek0hxXpXT3UcQKugR1pGyW00yqOitChlarkF3IgCXxFeQx2dQ/QLW6Aucae 32PLsWjj7TaXC6KsqDkEaoZmjR9oEnOzYhv1d2Btlcja4halKLqu0x+CIsp7SZen2tz1TE i2NyIouSHPer/hRaIDFam021ONxDRqA= 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 , Michael Walle Subject: [PATCH v1 5/7] soc: fsl: guts: use of_root instead of own reference Date: Thu, 27 Jan 2022 17:41:23 +0100 Message-Id: <20220127164125.3651285-6-michael@walle.cc> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20220127164125.3651285-1-michael@walle.cc> References: <20220127164125.3651285-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 --- 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 383b35a4ed58..04c3eb6a6e17 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; @@ -139,17 +139,13 @@ static int fsl_guts_probe(struct platform_device *pde= v) iounmap(regs); =20 /* Register soc device */ - 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 Tue Jun 30 01:43:53 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 21940C433F5 for ; Thu, 27 Jan 2022 16:41:56 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S244060AbiA0Qlz (ORCPT ); Thu, 27 Jan 2022 11:41:55 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:52578 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S243924AbiA0Qlo (ORCPT ); Thu, 27 Jan 2022 11:41:44 -0500 Received: from ssl.serverraum.org (ssl.serverraum.org [IPv6:2a01:4f8:151:8464::1:2]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 78C1FC06173B for ; Thu, 27 Jan 2022 08:41:44 -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 CEE05223F7; Thu, 27 Jan 2022 17:41:42 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=walle.cc; s=mail2016061301; t=1643301702; 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=t+OnNgeK+rVH8xs/1ISiBYCo+CfY2rbiof36ukWZZ40=; b=uxBfDXV26Ep7vtF+pq7UItlkQEwAHK9zFK6BMAzWu16ONFvKMKw79t+uLSjtLPdWW4pQts +NZNWFoLPUndmMhxfHh40At6hKDBB9koFjdVfc2DaZ+lRg67KDDAwh151tTWSb+1/nyFz2 NuEX9T6YWCyPbj/5NlK4uCmFjR3MmoU= 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 , Michael Walle Subject: [PATCH v1 6/7] soc: fsl: guts: drop platform driver Date: Thu, 27 Jan 2022 17:41:24 +0100 Message-Id: <20220127164125.3651285-7-michael@walle.cc> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20220127164125.3651285-1-michael@walle.cc> References: <20220127164125.3651285-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 --- 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_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; =20 - soc_dev_attr =3D devm_kzalloc(dev, sizeof(*soc_dev_attr), GFP_KERNEL); + np =3D of_find_matching_node_and_match(NULL, fsl_guts_of_match, NULL); + if (!np) + return 0; + + soc_dev_attr =3D kzalloc(sizeof(*soc_dev_attr), GFP_KERNEL); if (!soc_dev_attr) return -ENOMEM; =20 @@ -138,87 +174,54 @@ static int fsl_guts_probe(struct platform_device *pde= v) svr =3D ioread32be(®s->svr); iounmap(regs); =20 - /* 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 =3D devm_kstrdup(dev, machine, GFP_KERNEL); + soc_dev_attr->machine =3D kstrdup(machine, GFP_KERNEL); if (!soc_dev_attr->machine) return -ENOMEM; } =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); =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 Tue Jun 30 01:43:53 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 5CD32C433F5 for ; Thu, 27 Jan 2022 16:41:52 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S244035AbiA0Qlv (ORCPT ); Thu, 27 Jan 2022 11:41:51 -0500 Received: from ssl.serverraum.org ([176.9.125.105]:54287 "EHLO ssl.serverraum.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S243937AbiA0Qlo (ORCPT ); Thu, 27 Jan 2022 11:41:44 -0500 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 2090E2241C; Thu, 27 Jan 2022 17:41:43 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=walle.cc; s=mail2016061301; t=1643301703; 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=XOy1hFtQHlx1/0vgkKqg2eHd76kTqiC0EUCydWlDtHA=; b=d7VrOqHRQZcH1m/5ekwnc3UZg1MLbjQ0Fw54SYqlUl6YrIyaL/LU43vIos3zfVKJ5dPCuj 3NCJNgs1oYIO9ltOugkUxKH7d7PML7Vf630bcM5pz1SJO1nC2+EeT12QXEV+DpCoCWwL5T 1ST1IDzMbKuh9vE+V7ZfkZeJE33L2OM= 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 , Michael Walle Subject: [RFC PATCH v1 7/7] soc: fsl: guts: add serial_number support Date: Thu, 27 Jan 2022 17:41:25 +0100 Message-Id: <20220127164125.3651285-8-michael@walle.cc> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20220127164125.3651285-1-michael@walle.cc> References: <20220127164125.3651285-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 --- RFC because SFP binding is still pending and needs Rob's ack: https://lore.kernel.org/linux-devicetree/20220127163728.3650648-2-michael@w= alle.cc/ 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 be961a9193f4..2d20a344f3c9 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 soc_dev_attr =3D kzalloc(sizeof(*soc_dev_attr), GFP_KERNEL); if (!soc_dev_attr) @@ -201,6 +237,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); @@ -221,6 +264,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); =20 return ret; } --=20 2.30.2