Received: by 2002:a05:6a10:af89:0:0:0:0 with SMTP id iu9csp430633pxb; Fri, 28 Jan 2022 02:18:02 -0800 (PST) X-Google-Smtp-Source: ABdhPJxsy0tWfVZdLnh0Qa6f+XfWFcGdP+AZhRIO2vhXNlj3yABI+J5m7mh4jcGqs6a0/rCnfREr X-Received: by 2002:aa7:8a05:: with SMTP id m5mr7373134pfa.40.1643365082334; Fri, 28 Jan 2022 02:18:02 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1643365082; cv=none; d=google.com; s=arc-20160816; b=HbE2Xa+CgovHgCPYe6NYGsk6BVj2QtoHPbdkczPV47cg4zbtn7cZ5mILgutrd6yvyi C5GRB+sA4tqLFSN6jA/ZRHqt4CX2tjHIfqOWivghenkEZ80sWpm6eybvRlytRTTuSaPa f5Bx1XrsYkTaS/kovJ0iblEc+K/b7ASFPdeXjQnzQrS7DIcIihuw41UhZqzRib7o5SRB aJsxQSx9X1Pjs3Sj0ygT+OUpy8gVP0lRivZrIMvgqFB7NekKZByDm8MCxOrUr3Iyqm9/ Fh1YPTNQcrfLAVnQpcWptQrC939tnWgO198wYN45DY8MziUQBLbgUuht6FqSWOZbcoNn WWxw== 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=t+OnNgeK+rVH8xs/1ISiBYCo+CfY2rbiof36ukWZZ40=; b=Wud/SedXUIQcsdGRwDSoimBzqYpCLjz+MXtsjLRo3iU628iffh9/lM+PZ5Z5tAaiB4 ymPBaONA+VkP9VwkjnAq674YuvQ3karhrwXW0Xi2di2OGBf93yQPOPGYvwc3jtjoMHi3 vp6x6nMo1BH/hw8VoedlVIaVEK1am13e5eLYGspH+bxXRwGqrbjSvCGGx1jvsVT5I+2C 3o7tgVSm60Qwjw/1S/CNGk6WmUwq/+Bb2KhH8eZZDV/xxhrJw0DCNwBOvG9+LYsa05zX 9ATihf3cTQ61v+WYP4bObx71D6gpqJD4qokLagmYxBTsv/J57PDbfwluPtvyhZQo1mm/ BJ0Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@walle.cc header.s=mail2016061301 header.b=uxBfDXV2; 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 j12si4644297pfu.247.2022.01.28.02.17.50; Fri, 28 Jan 2022 02:18:02 -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=uxBfDXV2; 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 S244028AbiA0Qly (ORCPT + 99 others); Thu, 27 Jan 2022 11:41:54 -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: 8bit 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 | 127 +++++++++++++++++++++-------------------- 1 file changed, 65 insertions(+), 62 deletions(-) diff --git a/drivers/soc/fsl/guts.c b/drivers/soc/fsl/guts.c index 04c3eb6a6e17..be961a9193f4 100644 --- a/drivers/soc/fsl/guts.c +++ b/drivers/soc/fsl/guts.c @@ -110,19 +110,55 @@ static const struct fsl_soc_die_attr *fsl_soc_die_match( return NULL; } -static int fsl_guts_probe(struct platform_device *pdev) +/* + * Table for matching compatible strings, for device tree + * guts node, for Freescale QorIQ SOCs. + */ +static const struct of_device_id fsl_guts_of_match[] = { + { .compatible = "fsl,qoriq-device-config-1.0", }, + { .compatible = "fsl,qoriq-device-config-2.0", }, + { .compatible = "fsl,p1010-guts", }, + { .compatible = "fsl,p1020-guts", }, + { .compatible = "fsl,p1021-guts", }, + { .compatible = "fsl,p1022-guts", }, + { .compatible = "fsl,p1023-guts", }, + { .compatible = "fsl,p2020-guts", }, + { .compatible = "fsl,bsc9131-guts", }, + { .compatible = "fsl,bsc9132-guts", }, + { .compatible = "fsl,mpc8536-guts", }, + { .compatible = "fsl,mpc8544-guts", }, + { .compatible = "fsl,mpc8548-guts", }, + { .compatible = "fsl,mpc8568-guts", }, + { .compatible = "fsl,mpc8569-guts", }, + { .compatible = "fsl,mpc8572-guts", }, + { .compatible = "fsl,ls1021a-dcfg", }, + { .compatible = "fsl,ls1043a-dcfg", }, + { .compatible = "fsl,ls2080a-dcfg", }, + { .compatible = "fsl,ls1088a-dcfg", }, + { .compatible = "fsl,ls1012a-dcfg", }, + { .compatible = "fsl,ls1046a-dcfg", }, + { .compatible = "fsl,lx2160a-dcfg", }, + { .compatible = "fsl,ls1028a-dcfg", }, + {} +}; + +static int __init fsl_guts_init(void) { - struct device_node *np = pdev->dev.of_node; struct soc_device_attribute *soc_dev_attr; static struct soc_device *soc_dev; - struct device *dev = &pdev->dev; const struct fsl_soc_die_attr *soc_die; struct ccsr_guts __iomem *regs; const char *machine = NULL; + struct device_node *np; bool little_endian; u32 svr; + int ret; - soc_dev_attr = devm_kzalloc(dev, sizeof(*soc_dev_attr), GFP_KERNEL); + np = of_find_matching_node_and_match(NULL, fsl_guts_of_match, NULL); + if (!np) + return 0; + + soc_dev_attr = kzalloc(sizeof(*soc_dev_attr), GFP_KERNEL); if (!soc_dev_attr) return -ENOMEM; @@ -138,87 +174,54 @@ static int fsl_guts_probe(struct platform_device *pdev) svr = ioread32be(®s->svr); iounmap(regs); - /* Register soc device */ if (of_property_read_string(of_root, "model", &machine)) of_property_read_string_index(of_root, "compatible", 0, &machine); if (machine) { - soc_dev_attr->machine = devm_kstrdup(dev, machine, GFP_KERNEL); + soc_dev_attr->machine = kstrdup(machine, GFP_KERNEL); if (!soc_dev_attr->machine) return -ENOMEM; } soc_die = fsl_soc_die_match(svr, fsl_soc_die); if (soc_die) { - soc_dev_attr->family = devm_kasprintf(dev, GFP_KERNEL, - "QorIQ %s", soc_die->die); + soc_dev_attr->family = kasprintf(GFP_KERNEL, "QorIQ %s", + soc_die->die); } else { - soc_dev_attr->family = devm_kasprintf(dev, GFP_KERNEL, "QorIQ"); + soc_dev_attr->family = kasprintf(GFP_KERNEL, "QorIQ"); } if (!soc_dev_attr->family) - return -ENOMEM; - soc_dev_attr->soc_id = devm_kasprintf(dev, GFP_KERNEL, - "svr:0x%08x", svr); + goto err_nomem; + + soc_dev_attr->soc_id = kasprintf(GFP_KERNEL, "svr:0x%08x", svr); if (!soc_dev_attr->soc_id) - return -ENOMEM; - soc_dev_attr->revision = devm_kasprintf(dev, GFP_KERNEL, "%d.%d", - (svr >> 4) & 0xf, svr & 0xf); + goto err_nomem; + + soc_dev_attr->revision = kasprintf(GFP_KERNEL, "%d.%d", + (svr >> 4) & 0xf, svr & 0xf); if (!soc_dev_attr->revision) - return -ENOMEM; + goto err_nomem; soc_dev = soc_device_register(soc_dev_attr); - if (IS_ERR(soc_dev)) - return PTR_ERR(soc_dev); + if (IS_ERR(soc_dev)) { + ret = PTR_ERR(soc_dev); + goto err; + } pr_info("Machine: %s\n", soc_dev_attr->machine); pr_info("SoC family: %s\n", soc_dev_attr->family); pr_info("SoC ID: %s, Revision: %s\n", soc_dev_attr->soc_id, soc_dev_attr->revision); - return 0; -} -/* - * Table for matching compatible strings, for device tree - * guts node, for Freescale QorIQ SOCs. - */ -static const struct of_device_id fsl_guts_of_match[] = { - { .compatible = "fsl,qoriq-device-config-1.0", }, - { .compatible = "fsl,qoriq-device-config-2.0", }, - { .compatible = "fsl,p1010-guts", }, - { .compatible = "fsl,p1020-guts", }, - { .compatible = "fsl,p1021-guts", }, - { .compatible = "fsl,p1022-guts", }, - { .compatible = "fsl,p1023-guts", }, - { .compatible = "fsl,p2020-guts", }, - { .compatible = "fsl,bsc9131-guts", }, - { .compatible = "fsl,bsc9132-guts", }, - { .compatible = "fsl,mpc8536-guts", }, - { .compatible = "fsl,mpc8544-guts", }, - { .compatible = "fsl,mpc8548-guts", }, - { .compatible = "fsl,mpc8568-guts", }, - { .compatible = "fsl,mpc8569-guts", }, - { .compatible = "fsl,mpc8572-guts", }, - { .compatible = "fsl,ls1021a-dcfg", }, - { .compatible = "fsl,ls1043a-dcfg", }, - { .compatible = "fsl,ls2080a-dcfg", }, - { .compatible = "fsl,ls1088a-dcfg", }, - { .compatible = "fsl,ls1012a-dcfg", }, - { .compatible = "fsl,ls1046a-dcfg", }, - { .compatible = "fsl,lx2160a-dcfg", }, - { .compatible = "fsl,ls1028a-dcfg", }, - {} -}; -MODULE_DEVICE_TABLE(of, fsl_guts_of_match); + return 0; -static struct platform_driver fsl_guts_driver = { - .driver = { - .name = "fsl-guts", - .of_match_table = fsl_guts_of_match, - }, - .probe = fsl_guts_probe, -}; +err_nomem: + ret = -ENOMEM; +err: + kfree(soc_dev_attr->machine); + kfree(soc_dev_attr->family); + kfree(soc_dev_attr->soc_id); + kfree(soc_dev_attr->revision); -static int __init fsl_guts_init(void) -{ - return platform_driver_register(&fsl_guts_driver); + return ret; } core_initcall(fsl_guts_init); -- 2.30.2