From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1758287AbcAKGKO (ORCPT ); Mon, 11 Jan 2016 01:10:14 -0500 Received: from mail-wm0-f51.google.com ([74.125.82.51]:37451 "EHLO mail-wm0-f51.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751086AbcAKGKM (ORCPT ); Mon, 11 Jan 2016 01:10:12 -0500 Date: Mon, 11 Jan 2016 06:10:08 +0000 From: Lee Jones To: Thierry Reding Cc: linux-kernel@vger.kernel.org Subject: Re: [PATCH] mfd: sta2x11: Use platform_register/unregister_drivers() Message-ID: <20160111061008.GN3331@x1> References: <1449073691-12238-1-git-send-email-thierry.reding@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <1449073691-12238-1-git-send-email-thierry.reding@gmail.com> User-Agent: Mutt/1.5.21 (2010-09-15) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Wed, 02 Dec 2015, Thierry Reding wrote: > From: Thierry Reding > > These new helpers simplify implementing multi-driver modules and > properly handle failure to register one driver by unregistering all > previously registered drivers. > > Signed-off-by: Thierry Reding > --- > drivers/mfd/sta2x11-mfd.c | 36 ++++++++++-------------------------- > 1 file changed, 10 insertions(+), 26 deletions(-) Looks nice. Applied, thanks. > diff --git a/drivers/mfd/sta2x11-mfd.c b/drivers/mfd/sta2x11-mfd.c > index b3e5c6f45105..9292202039ee 100644 > --- a/drivers/mfd/sta2x11-mfd.c > +++ b/drivers/mfd/sta2x11-mfd.c > @@ -372,12 +372,6 @@ static struct platform_driver sta2x11_sctl_platform_driver = { > .probe = sta2x11_sctl_probe, > }; > > -static int __init sta2x11_sctl_init(void) > -{ > - pr_info("%s\n", __func__); > - return platform_driver_register(&sta2x11_sctl_platform_driver); > -} > - > static struct platform_driver sta2x11_platform_driver = { > .driver = { > .name = STA2X11_MFD_APBREG_NAME, > @@ -385,12 +379,6 @@ static struct platform_driver sta2x11_platform_driver = { > .probe = sta2x11_apbreg_probe, > }; > > -static int __init sta2x11_apbreg_init(void) > -{ > - pr_info("%s\n", __func__); > - return platform_driver_register(&sta2x11_platform_driver); > -} > - > static struct platform_driver sta2x11_apb_soc_regs_platform_driver = { > .driver = { > .name = STA2X11_MFD_APB_SOC_REGS_NAME, > @@ -398,12 +386,6 @@ static struct platform_driver sta2x11_apb_soc_regs_platform_driver = { > .probe = sta2x11_apb_soc_regs_probe, > }; > > -static int __init sta2x11_apb_soc_regs_init(void) > -{ > - pr_info("%s\n", __func__); > - return platform_driver_register(&sta2x11_apb_soc_regs_platform_driver); > -} > - > static struct platform_driver sta2x11_scr_platform_driver = { > .driver = { > .name = STA2X11_MFD_SCR_NAME, > @@ -411,13 +393,18 @@ static struct platform_driver sta2x11_scr_platform_driver = { > .probe = sta2x11_scr_probe, > }; > > -static int __init sta2x11_scr_init(void) > +static struct platform_driver * const drivers[] = { > + &sta2x11_platform_driver, > + &sta2x11_sctl_platform_driver, > + &sta2x11_apb_soc_regs_platform_driver, > + &sta2x11_scr_platform_driver, > +}; > + > +static int __init sta2x11_drivers_init(void) > { > - pr_info("%s\n", __func__); > - return platform_driver_register(&sta2x11_scr_platform_driver); > + return platform_register_drivers(drivers, ARRAY_SIZE(drivers)); > } > > - > /* > * What follows are the PCI devices that host the above pdevs. > * Each logic block is 4kB and they are all consecutive: we use this info. > @@ -664,10 +651,7 @@ static int __init sta2x11_mfd_init(void) > * prepares platform drivers very early and probe the PCI device later, > * but before other PCI devices. > */ > -subsys_initcall(sta2x11_apbreg_init); > -subsys_initcall(sta2x11_sctl_init); > -subsys_initcall(sta2x11_apb_soc_regs_init); > -subsys_initcall(sta2x11_scr_init); > +subsys_initcall(sta2x11_drivers_init); > rootfs_initcall(sta2x11_mfd_init); > > MODULE_LICENSE("GPL v2"); -- Lee Jones Linaro STMicroelectronics Landing Team Lead Linaro.org │ Open source software for ARM SoCs Follow Linaro: Facebook | Twitter | Blog