From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-1.0 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 826D2C48BD6 for ; Tue, 25 Jun 2019 22:35:15 +0000 (UTC) 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 mail.kernel.org (Postfix) with ESMTPS id 55823205ED for ; Tue, 25 Jun 2019 22:35:15 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="E7LIJYsI"; dkim=fail reason="signature verification failed" (1024-bit key) header.d=kernel.org header.i=@kernel.org header.b="TJcRicsu" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 55823205ED Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=kernel.org Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+infradead-linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20170209; h=Sender: Content-Transfer-Encoding:Content-Type:Cc:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:Message-Id:Date:Subject:From:To: References:In-Reply-To:MIME-Version:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=mdK6a/bzelfFTk+Oz0cBgqmljg1hxMihAWCUZbZaqRc=; b=E7LIJYsI7ax57J yoICNLa7QD1zSTQonMXZXg/JXWLyxJyYDtC1lRgtcUrdYWIG5m6ff85e1ay0GAFUheqOm3HMULrfq DH9HqmFSSeyp8cruNnPh15sOoepgFvWnE+V20fmEv9rZN5CpITcDrYmR6UCXphtjaSPzVShmF73vS KLh/dLxCo6K2x6qEQ/J8ZVdaZJc7GUOVtE8AbA1WoaOsDg6ERng7CmZvkJJ2hP50mV1s+SshX4eDp hyN3EXJEUc0NDwcVosgVocKZVVzpOJr0BJD12bTTfAdW6M6Xb+1uC6235XATfgVnmWRvM3d6pPFgZ VXCJCYC3+7Z3jUeN/zqA==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.92 #3 (Red Hat Linux)) id 1hfu1r-0002WU-6M; Tue, 25 Jun 2019 22:35:07 +0000 Received: from mail.kernel.org ([198.145.29.99]) by bombadil.infradead.org with esmtps (Exim 4.92 #3 (Red Hat Linux)) id 1hfu1h-0002U7-Gp for linux-arm-kernel@lists.infradead.org; Tue, 25 Jun 2019 22:34:59 +0000 Received: from kernel.org (unknown [104.132.0.74]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 1FCBF205ED; Tue, 25 Jun 2019 22:34:57 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1561502097; bh=/kwIgl7T7RUB6O8AVjTRLgNL7U9K6Zhd50WUYjJcszk=; h=In-Reply-To:References:To:From:Subject:Cc:Date:From; b=TJcRicsuQdvPQg9FeTYbsi/IhN1JdT58h299gkXyrGdyEDhz+ZXUCdRDp0ABWeF67 mfNgTTWW7vB2AB93S1BledWN7Ici0mXVLEkXdh1PtPnaCLdWvIrJvmKCZN0+p9w5ew eHnOpg3F3NLVVen8lN7NjAb6z6kZ0nPHR1rtx0d4= MIME-Version: 1.0 In-Reply-To: References: <20190604015928.23157-1-Anson.Huang@nxp.com> <20190604015928.23157-3-Anson.Huang@nxp.com> <20190606162543.EFFB820645@mail.kernel.org> <20190607180039.611C7208C0@mail.kernel.org> <20190610151425.D8139207E0@mail.kernel.org> To: "bjorn.andersson@linaro.org" , "catalin.marinas@arm.com" , "devicetree@vger.kernel.org" , "dinguyen@kernel.org" , "enric.balletbo@collabora.com" , "festevam@gmail.com" , "horms+renesas@verge.net.au" , "jagan@amarulasolutions.com" , "kernel@pengutronix.de" , "l.stach@pengutronix.de" , "linux-arm-kernel@lists.infradead.org" , "linux-clk@vger.kernel.org" , "linux-kernel@vger.kernel.org" , "mark.rutland@arm.com" , "maxime.ripard@bootlin.com" , "mturquette@baylibre.com" , "olof@lixom.net" , "robh+dt@kernel.org" , "s.hauer@pengutronix .de" , "shawnguo@kernel.org" , "will.deacon@arm.com" , Abel Vesa , Aisheng Dong , Anson Huang , Jacky Bai , Leonard Crestez From: Stephen Boyd Subject: RE: [PATCH V3 3/4] clk: imx: Add support for i.MX8MN clock driver User-Agent: alot/0.8.1 Date: Tue, 25 Jun 2019 15:34:56 -0700 Message-Id: <20190625223457.1FCBF205ED@mail.kernel.org> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20190625_153457_723155_0F022957 X-CRM114-Status: GOOD ( 17.64 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: dl-linux-imx Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+infradead-linux-arm-kernel=archiver.kernel.org@lists.infradead.org Quoting Anson Huang (2019-06-10 19:06:22) > > > > > > Sorry, I am still a little confused, all the clock > > > register(clk_register()) are via each different clock types like > > > imx_clk_gate4/imx_clk_pll14xx, if using clk_hw_register, means we need > > > to re-write the clock driver using different clk register method, that > > > will make the driver completely different from i.mx8mq/i.mx8mm, they > > > are actually same series of SoC as i.mx8mn, it will introduce many > > confusion, is my understanding correct? And is it OK to just keep what it is > > and make them all aligned? > > > > > > > Ok, the problem I'm trying to point out is that clk registrations need to be > > undone, i.e. clk_unregister() needs to be called, when the driver fails to > > probe. devm_*() is one way to do this, but if you have other ways of > > removing all the registered clks then that works too. Makes sense? > > Yes, it makes sense. Do you think it is OK to add an imx_unregister_clocks() API, then > call it in every place of returning failure in .probe function? If yes, I will add it and also > fix it in i.MX8MQ driver which uses platform driver model but does NOT handle this case. > > base = devm_platform_ioremap_resource(pdev, 0); > - if (WARN_ON(IS_ERR(base))) > - return PTR_ERR(base); > + if (WARN_ON(IS_ERR(base))) { > + ret = PTR_ERR(base); > + goto unregister_clks; > + } > > pr_err("failed to register clks for i.MX8MN\n"); > - return -EINVAL; > + goto unregister_clks; > } > > return 0; > + > +unregister_clks: > + imx_unregister_clocks(clks, ARRAY_SIZE(clks)); > + > + return ret; > > +void imx_unregister_clocks(struct clk *clks[], unsigned int count) > +{ > + unsigned i; > + > + for (i = 0; i < count; i++) > + clk_unregister(clks[i]); > +} > + > Yes, looks better. _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel