Received: by 2002:a05:6a10:1a4d:0:0:0:0 with SMTP id nk13csp2027147pxb; Wed, 9 Feb 2022 09:21:19 -0800 (PST) X-Google-Smtp-Source: ABdhPJwt8qd6V0CBowCZpSBK2oqXH2zUVhtrSvmrWGz8Vt1guCcXugexZbWyPhzeFJbbo1U0WZmt X-Received: by 2002:a17:90b:1c8d:: with SMTP id oo13mr4483836pjb.201.1644427279347; Wed, 09 Feb 2022 09:21:19 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1644427279; cv=none; d=google.com; s=arc-20160816; b=SI9Ig22VG6p3fwoOvLqTjOl8l7y1CXysHOXQOpibAq/w0W7iAxkvIxp1o8LwS6REvJ MsyoSsdTF7L46GYvhUgEBPo+vknrO1u7xjjZCnVIi+fY1F9VAGf61fSHjawToEZsBf36 fQoIay5omUPoz3mzPfwe7iIxp/gmnphzDX7RmJ4qGUjsIwIBMLlFClpe1fBZ6mkOfGDO HyBxfpC5t23RV48rZ5ZAdJFpQX6KmUqNL2d+5FlW8qnmuu+rB7aSVKjH3klRvV1edGrB MG5aWmglkOK6d2BXQcQKsm55q9IkrNwHTmipDkNmok5dMV3pXKou6Oxlat5WRN9+xp5s pLaQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=oWIl78GqYSzWlRAKxA/9nteEF71Uw8hQ3rTS+tBIPlE=; b=Ru4sq08Sg18XhZ7D0LvbLBk645yAxjwzmaYwHorQIkJgKbU2Y9m3hPrYZNmpeOo4aK QIq8gH9098QeI/drKUWTXXDh/yI2svKQi/Rk5+wtkERFBKSYGJLD1sHY3+S2FNslmCXU Kq0PC4uf0N+08KHo8ToKXV5LFNQEcYAQuJpkCkMa7jDNNZjhrkc4mY3OkliTGB0oezDW 5CGs3gExoWxB1l3fuSxpSFGr9fxCc95tKKxBAAAufM8GnT7U5dswMPxpimIQOIX/TlAt OtVEAWMYlaF5gFg2rCKCBBORRSYMA6vtgJR5DKlS6e/EMHjpFDz3P6qQ7BkvwkHLA0nG sP6g== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@walle.cc header.s=mail2016061301 header.b=dVOhokUY; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id a11si16206618pgi.308.2022.02.09.09.21.04; Wed, 09 Feb 2022 09:21:19 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@walle.cc header.s=mail2016061301 header.b=dVOhokUY; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S237196AbiBIQdW (ORCPT + 99 others); Wed, 9 Feb 2022 11:33:22 -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: 8bit X-Spam-Status: No, score=-4.4 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_MED,SPF_HELO_NONE, SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 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 | 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_match( return NULL; } -static int fsl_guts_probe(struct platform_device *pdev) +/* + * Table for matching compatible strings, for device tree + * guts node, for Freescale QorIQ SOCs. + */ +static const struct of_device_id fsl_guts_of_match[] = { + { .compatible = "fsl,qoriq-device-config-1.0", }, + { .compatible = "fsl,qoriq-device-config-2.0", }, + { .compatible = "fsl,p1010-guts", }, + { .compatible = "fsl,p1020-guts", }, + { .compatible = "fsl,p1021-guts", }, + { .compatible = "fsl,p1022-guts", }, + { .compatible = "fsl,p1023-guts", }, + { .compatible = "fsl,p2020-guts", }, + { .compatible = "fsl,bsc9131-guts", }, + { .compatible = "fsl,bsc9132-guts", }, + { .compatible = "fsl,mpc8536-guts", }, + { .compatible = "fsl,mpc8544-guts", }, + { .compatible = "fsl,mpc8548-guts", }, + { .compatible = "fsl,mpc8568-guts", }, + { .compatible = "fsl,mpc8569-guts", }, + { .compatible = "fsl,mpc8572-guts", }, + { .compatible = "fsl,ls1021a-dcfg", }, + { .compatible = "fsl,ls1043a-dcfg", }, + { .compatible = "fsl,ls2080a-dcfg", }, + { .compatible = "fsl,ls1088a-dcfg", }, + { .compatible = "fsl,ls1012a-dcfg", }, + { .compatible = "fsl,ls1046a-dcfg", }, + { .compatible = "fsl,lx2160a-dcfg", }, + { .compatible = "fsl,ls1028a-dcfg", }, + {} +}; + +static int __init fsl_guts_init(void) { - struct device_node *np = pdev->dev.of_node; struct soc_device_attribute *soc_dev_attr; static struct soc_device *soc_dev; - struct device *dev = &pdev->dev; const struct fsl_soc_die_attr *soc_die; struct ccsr_guts __iomem *regs; const char *machine = NULL; + struct device_node *np; bool little_endian; u32 svr; + int ret; + + np = of_find_matching_node_and_match(NULL, fsl_guts_of_match, NULL); + if (!np) + return 0; regs = of_iomap(np, 0); - if (IS_ERR(regs)) + if (IS_ERR(regs)) { + of_node_put(np); return PTR_ERR(regs); + } little_endian = of_property_read_bool(np, "little-endian"); if (little_endian) @@ -132,92 +170,62 @@ static int fsl_guts_probe(struct platform_device *pdev) else svr = ioread32be(®s->svr); iounmap(regs); + of_node_put(np); /* Register soc device */ - soc_dev_attr = devm_kzalloc(dev, sizeof(*soc_dev_attr), GFP_KERNEL); + soc_dev_attr = kzalloc(sizeof(*soc_dev_attr), GFP_KERNEL); if (!soc_dev_attr) return -ENOMEM; if (of_property_read_string(of_root, "model", &machine)) of_property_read_string_index(of_root, "compatible", 0, &machine); if (machine) { - soc_dev_attr->machine = devm_kstrdup(dev, machine, GFP_KERNEL); + soc_dev_attr->machine = kstrdup(machine, GFP_KERNEL); if (!soc_dev_attr->machine) - return -ENOMEM; + goto err_nomem; } soc_die = fsl_soc_die_match(svr, fsl_soc_die); if (soc_die) { - soc_dev_attr->family = devm_kasprintf(dev, GFP_KERNEL, - "QorIQ %s", soc_die->die); + soc_dev_attr->family = kasprintf(GFP_KERNEL, "QorIQ %s", + soc_die->die); } else { - soc_dev_attr->family = devm_kasprintf(dev, GFP_KERNEL, "QorIQ"); + soc_dev_attr->family = kasprintf(GFP_KERNEL, "QorIQ"); } if (!soc_dev_attr->family) - return -ENOMEM; - soc_dev_attr->soc_id = devm_kasprintf(dev, GFP_KERNEL, - "svr:0x%08x", svr); + goto err_nomem; + + soc_dev_attr->soc_id = kasprintf(GFP_KERNEL, "svr:0x%08x", svr); if (!soc_dev_attr->soc_id) - return -ENOMEM; - soc_dev_attr->revision = devm_kasprintf(dev, GFP_KERNEL, "%d.%d", - (svr >> 4) & 0xf, svr & 0xf); + goto err_nomem; + + soc_dev_attr->revision = kasprintf(GFP_KERNEL, "%d.%d", + (svr >> 4) & 0xf, svr & 0xf); if (!soc_dev_attr->revision) - return -ENOMEM; + goto err_nomem; soc_dev = soc_device_register(soc_dev_attr); - if (IS_ERR(soc_dev)) - return PTR_ERR(soc_dev); + if (IS_ERR(soc_dev)) { + ret = PTR_ERR(soc_dev); + goto err; + } pr_info("Machine: %s\n", soc_dev_attr->machine); pr_info("SoC family: %s\n", soc_dev_attr->family); pr_info("SoC ID: %s, Revision: %s\n", soc_dev_attr->soc_id, soc_dev_attr->revision); - return 0; -} -/* - * Table for matching compatible strings, for device tree - * guts node, for Freescale QorIQ SOCs. - */ -static const struct of_device_id fsl_guts_of_match[] = { - { .compatible = "fsl,qoriq-device-config-1.0", }, - { .compatible = "fsl,qoriq-device-config-2.0", }, - { .compatible = "fsl,p1010-guts", }, - { .compatible = "fsl,p1020-guts", }, - { .compatible = "fsl,p1021-guts", }, - { .compatible = "fsl,p1022-guts", }, - { .compatible = "fsl,p1023-guts", }, - { .compatible = "fsl,p2020-guts", }, - { .compatible = "fsl,bsc9131-guts", }, - { .compatible = "fsl,bsc9132-guts", }, - { .compatible = "fsl,mpc8536-guts", }, - { .compatible = "fsl,mpc8544-guts", }, - { .compatible = "fsl,mpc8548-guts", }, - { .compatible = "fsl,mpc8568-guts", }, - { .compatible = "fsl,mpc8569-guts", }, - { .compatible = "fsl,mpc8572-guts", }, - { .compatible = "fsl,ls1021a-dcfg", }, - { .compatible = "fsl,ls1043a-dcfg", }, - { .compatible = "fsl,ls2080a-dcfg", }, - { .compatible = "fsl,ls1088a-dcfg", }, - { .compatible = "fsl,ls1012a-dcfg", }, - { .compatible = "fsl,ls1046a-dcfg", }, - { .compatible = "fsl,lx2160a-dcfg", }, - { .compatible = "fsl,ls1028a-dcfg", }, - {} -}; -MODULE_DEVICE_TABLE(of, fsl_guts_of_match); + return 0; -static struct platform_driver fsl_guts_driver = { - .driver = { - .name = "fsl-guts", - .of_match_table = fsl_guts_of_match, - }, - .probe = fsl_guts_probe, -}; +err_nomem: + ret = -ENOMEM; +err: + kfree(soc_dev_attr->machine); + kfree(soc_dev_attr->family); + kfree(soc_dev_attr->soc_id); + kfree(soc_dev_attr->revision); + kfree(soc_dev_attr); -static int __init fsl_guts_init(void) -{ - return platform_driver_register(&fsl_guts_driver); + return ret; } core_initcall(fsl_guts_init); -- 2.30.2