From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jonathan Cameron Subject: Re: [PATCH 4/4] iio: auxadc: mediatek: change to subsys_initcall Date: Sat, 18 May 2019 11:36:43 +0100 Message-ID: <20190518113643.53a42976@archlinux> References: <1557994247-16739-1-git-send-email-chun-hung.wu@mediatek.com> <1557994247-16739-5-git-send-email-chun-hung.wu@mediatek.com> Mime-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: <1557994247-16739-5-git-send-email-chun-hung.wu@mediatek.com> Sender: linux-kernel-owner@vger.kernel.org To: Chun-Hung Wu Cc: Hartmut Knaack , Lars-Peter Clausen , Peter Meerwald-Stadler , Rob Herring , Mark Rutland , Matthias Brugger , linux-iio@vger.kernel.org, devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-mediatek@lists.infradead.org, linux-kernel@vger.kernel.org, wsd_upstream@mediatek.com, peter.wang@mediatek.com, kuohong.wang@mediatek.com, jg_poxu@mediatek.com List-Id: linux-mediatek@lists.infradead.org On Thu, 16 May 2019 16:10:47 +0800 Chun-Hung Wu wrote: > Move auxadc platform_driver_register() from module_init > to subsys_initcall because auxadc user drivers > are all moudle drivers, need to gurantee > auxadc driver ready before module_init. > Is it not possible to make them use deferred handling to come back later if this isn't yet available? subsys_initcall often ends up being a more fragile approach. Thanks, Jonathan > Signed-off-by: Chun-Hung Wu > --- > drivers/iio/adc/mt6577_auxadc.c | 14 +++++++++++++- > 1 file changed, 13 insertions(+), 1 deletion(-) > > diff --git a/drivers/iio/adc/mt6577_auxadc.c b/drivers/iio/adc/mt6577_auxadc.c > index 58d7cb2..cb8e3dd 100644 > --- a/drivers/iio/adc/mt6577_auxadc.c > +++ b/drivers/iio/adc/mt6577_auxadc.c > @@ -350,7 +350,19 @@ static int mt6577_auxadc_remove(struct platform_device *pdev) > .probe = mt6577_auxadc_probe, > .remove = mt6577_auxadc_remove, > }; > -module_platform_driver(mt6577_auxadc_driver); > + > +static int __init mt6577_auxadc_init(void) > +{ > + return platform_driver_register(&mt6577_auxadc_driver); > +} > + > +static void __exit mt6577_auxadc_exit(void) > +{ > + platform_driver_unregister(&mt6577_auxadc_driver); > +} > + > +subsys_initcall(mt6577_auxadc_init); > +module_exit(mt6577_auxadc_exit); > > MODULE_AUTHOR("Zhiyong Tao "); > MODULE_DESCRIPTION("MTK AUXADC Device Driver");