From patchwork Fri Aug 11 13:03:47 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Adrian Hunter X-Patchwork-Id: 13350878 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 bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 175B8C001DB for ; Fri, 11 Aug 2023 13:07:05 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:Cc:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-Id:Date:Subject:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=ttng+E7imHwr9Z+I3mJV3+5jSrhwDUey73XlnvZYmnw=; b=D2hhaDFBAolb8D kYoIkFI8y7oqPd6PIqy0a1Za8IvnQ4YzbSwsK7lVQp6MhI5zlFeOV/5sOwREre/yJ+hcDibhR8zc9 NGZOeRYHWnrhFxvQg1zcq+JKHu2Hbyq6cEiLT35R4gVwfTQJYDqbYIu01pJEp+bA8018CPTE0jFpC 0ulheWolGHg3kE21wHgr1Dsp4EWLZ1IeRAMLfi6FEfSSp7YTxWJxH2N2EmNHObEagn06dlNEsRuj0 vRhE5YfhURMNBQZAQv1pHfVTHA1hD0FgoCiCxbguKMWDdJghsZhFIrKwEb29FCWbvRQRfWg/C9pOX idV8o0muL9+pFnqnNcUg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1qURqj-00Afz4-1X; Fri, 11 Aug 2023 13:06:41 +0000 Received: from mgamail.intel.com ([134.134.136.20]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1qURqg-00AfyL-2H for linux-arm-kernel@lists.infradead.org; Fri, 11 Aug 2023 13:06:40 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1691759198; x=1723295198; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=cLITUlXAKi/BwJx9Dy+d4fQ//8DCwhp6Xa5EddapwMg=; b=cZsCpTyKlE3PJXBj8N9/a/cLsRragn38kOBSBmlNr0UAT9VmbSF72Me0 hIjbMJbQeKJhdm+G91lqWRYAN+ryCxCs6vX8O2TYZI+MEpoKaoDOgirRd PAFLjBsSBNDZy49eElv0KHJh1SDW7iyPL1RlJ/FoPZY/1kFBQCnH7NTxU FW7mF3Rwo3lvxgC2xtHoRH09hlF9I4KGUmH7Fta4SUbbltB2kxhm+VehG gl/TWMxSWEdQbcO+DioKFTNlBN+7uZ8MqQdhz+GPjmaeRuYfa9w4UnLHA YM4c4WjdgXma+5PK9ER+S8FomK5VFfKhKPwDEFNgQCxUqgP441QuUSfIs Q==; X-IronPort-AV: E=McAfee;i="6600,9927,10798"; a="361812685" X-IronPort-AV: E=Sophos;i="6.01,165,1684825200"; d="scan'208";a="361812685" Received: from orsmga006.jf.intel.com ([10.7.209.51]) by orsmga101.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 11 Aug 2023 06:05:57 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10798"; a="709535288" X-IronPort-AV: E=Sophos;i="6.01,165,1684825200"; d="scan'208";a="709535288" Received: from ahunter6-mobl1.ger.corp.intel.com (HELO ahunter-VirtualBox.home\044ger.corp.intel.com) ([10.252.51.13]) by orsmga006-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 11 Aug 2023 06:05:48 -0700 From: Adrian Hunter To: Ulf Hansson , Andy Shevchenko , =?utf-8?q?Uwe_Kleine-K?= =?utf-8?q?=C3=B6nig?= , Yangtao Li Subject: [PATCH 12/16] mmc: sdhci-of-sparx5: Use sdhci_pltfm_remove() Date: Fri, 11 Aug 2023 16:03:47 +0300 Message-Id: <20230811130351.7038-13-adrian.hunter@intel.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230811130351.7038-1-adrian.hunter@intel.com> References: <20230811130351.7038-1-adrian.hunter@intel.com> MIME-Version: 1.0 Organization: Intel Finland Oy, Registered Address: PL 281, 00181 Helsinki, Business Identity Code: 0357606 - 4, Domiciled in Helsinki X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230811_060638_819102_8E425567 X-CRM114-Status: GOOD ( 17.52 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Alexandre Belloni , Kunihiko Hayashi , Al Cooper , Li Zetao , Brad Larson , Swati Agarwal , linux-kernel@vger.kernel.org, Sai Krishna Potthuri , Jiapeng Chong , Florian Fainelli , Steen Hegelund , Brian Norris , Broadcom internal kernel review list , linux-arm-kernel@lists.infradead.org, Ye Xingchen , Patrice Chotard , Kamal Dasu , Doug Brown , Daniel Machon , Ray Jui , Eugen Hristev , Jassi Brar , Christophe JAILLET , Georgii Kruglov , Michal Simek , Lars Povlsen , Andy Tang , Scott Branden , linux-mmc@vger.kernel.org, UNGLinuxDriver@microchip.com, Claudiu Beznea Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org Use sdhci_pltfm_remove() instead of sdhci_pltfm_unregister() so that devm_clk_get_enabled() can be used for pltfm_host->clk. This has the side effect that the order of operations on the error path and remove path is not the same as it was before, but should be safe nevertheless. Signed-off-by: Adrian Hunter --- drivers/mmc/host/sdhci-of-sparx5.c | 17 ++++++----------- 1 file changed, 6 insertions(+), 11 deletions(-) diff --git a/drivers/mmc/host/sdhci-of-sparx5.c b/drivers/mmc/host/sdhci-of-sparx5.c index 653480dbe6bb..64b77e7d14cd 100644 --- a/drivers/mmc/host/sdhci-of-sparx5.c +++ b/drivers/mmc/host/sdhci-of-sparx5.c @@ -184,15 +184,12 @@ static int sdhci_sparx5_probe(struct platform_device *pdev) sdhci_sparx5 = sdhci_pltfm_priv(pltfm_host); sdhci_sparx5->host = host; - pltfm_host->clk = devm_clk_get(&pdev->dev, "core"); + pltfm_host->clk = devm_clk_get_enabled(&pdev->dev, "core"); if (IS_ERR(pltfm_host->clk)) { ret = PTR_ERR(pltfm_host->clk); - dev_err(&pdev->dev, "failed to get core clk: %d\n", ret); + dev_err(&pdev->dev, "failed to get and enable core clk: %d\n", ret); goto free_pltfm; } - ret = clk_prepare_enable(pltfm_host->clk); - if (ret) - goto free_pltfm; if (!of_property_read_u32(np, "microchip,clock-delay", &value) && (value > 0 && value <= MSHC_DLY_CC_MAX)) @@ -202,13 +199,13 @@ static int sdhci_sparx5_probe(struct platform_device *pdev) ret = mmc_of_parse(host->mmc); if (ret) - goto err_clk; + goto free_pltfm; sdhci_sparx5->cpu_ctrl = syscon_regmap_lookup_by_compatible(syscon); if (IS_ERR(sdhci_sparx5->cpu_ctrl)) { dev_err(&pdev->dev, "No CPU syscon regmap !\n"); ret = PTR_ERR(sdhci_sparx5->cpu_ctrl); - goto err_clk; + goto free_pltfm; } if (sdhci_sparx5->delay_clock >= 0) @@ -225,7 +222,7 @@ static int sdhci_sparx5_probe(struct platform_device *pdev) ret = sdhci_add_host(host); if (ret) - goto err_clk; + goto free_pltfm; /* Set AXI bus master to use un-cached access (for DMA) */ if (host->flags & (SDHCI_USE_SDMA | SDHCI_USE_ADMA) && @@ -239,8 +236,6 @@ static int sdhci_sparx5_probe(struct platform_device *pdev) return ret; -err_clk: - clk_disable_unprepare(pltfm_host->clk); free_pltfm: sdhci_pltfm_free(pdev); return ret; @@ -260,7 +255,7 @@ static struct platform_driver sdhci_sparx5_driver = { .pm = &sdhci_pltfm_pmops, }, .probe = sdhci_sparx5_probe, - .remove_new = sdhci_pltfm_unregister, + .remove_new = sdhci_pltfm_remove, }; module_platform_driver(sdhci_sparx5_driver);