diff mbox

soc: mediatek: SCPSYS: use module_platform_driver

Message ID 1450188966-2921-1-git-send-email-s.hauer@pengutronix.de (mailing list archive)
State New, archived
Headers show

Commit Message

Sascha Hauer Dec. 15, 2015, 2:16 p.m. UTC
With regulator support to the scpsys driver needs to be able to defer
probe. Probe deferral is incompatible with module_platform_driver_probe,
so use -module_platform_driver.

Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
---
 drivers/soc/mediatek/mtk-scpsys.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

Comments

Arnd Bergmann Dec. 15, 2015, 2:30 p.m. UTC | #1
On Tuesday 15 December 2015 15:16:06 Sascha Hauer wrote:
> @@ -542,6 +542,7 @@ static const struct of_device_id of_scpsys_match_tbl[] = {
>  };
>  
>  static struct platform_driver scpsys_drv = {
> +       .probe = scpsys_probe,
>         .driver = {
>                 .name = "mtk-scpsys",
>                 .owner = THIS_MODULE,
> @@ -549,4 +550,4 @@ static struct platform_driver scpsys_drv = {
>         },
>  };
>  
> -module_platform_driver_probe(scpsys_drv, scpsys_probe);
> +module_platform_driver(scpsys_drv);
> 

Good idea, but I wonder why there is no remove function in the
driver. Do we also need to make the module non-removable and
set .suppress_bind_attrs, or is all of the probe function
reversible through devm_* helpers?

	Arnd
Sascha Hauer Dec. 15, 2015, 3:42 p.m. UTC | #2
On Tue, Dec 15, 2015 at 03:30:01PM +0100, Arnd Bergmann wrote:
> On Tuesday 15 December 2015 15:16:06 Sascha Hauer wrote:
> > @@ -542,6 +542,7 @@ static const struct of_device_id of_scpsys_match_tbl[] = {
> >  };
> >  
> >  static struct platform_driver scpsys_drv = {
> > +       .probe = scpsys_probe,
> >         .driver = {
> >                 .name = "mtk-scpsys",
> >                 .owner = THIS_MODULE,
> > @@ -549,4 +550,4 @@ static struct platform_driver scpsys_drv = {
> >         },
> >  };
> >  
> > -module_platform_driver_probe(scpsys_drv, scpsys_probe);
> > +module_platform_driver(scpsys_drv);
> > 
> 
> Good idea, but I wonder why there is no remove function in the
> driver. Do we also need to make the module non-removable and
> set .suppress_bind_attrs, or is all of the probe function
> reversible through devm_* helpers?

pm domains currently can't be unregistered, removal of this driver is
not supported. The driver can't be compiled as a module.

Sascha
Arnd Bergmann Dec. 15, 2015, 3:45 p.m. UTC | #3
On Tuesday 15 December 2015 16:42:03 Sascha Hauer wrote:
> On Tue, Dec 15, 2015 at 03:30:01PM +0100, Arnd Bergmann wrote:
> > On Tuesday 15 December 2015 15:16:06 Sascha Hauer wrote:
> > > @@ -542,6 +542,7 @@ static const struct of_device_id of_scpsys_match_tbl[] = {
> > >  };
> > >  
> > >  static struct platform_driver scpsys_drv = {
> > > +       .probe = scpsys_probe,
> > >         .driver = {
> > >                 .name = "mtk-scpsys",
> > >                 .owner = THIS_MODULE,
> > > @@ -549,4 +550,4 @@ static struct platform_driver scpsys_drv = {
> > >         },
> > >  };
> > >  
> > > -module_platform_driver_probe(scpsys_drv, scpsys_probe);
> > > +module_platform_driver(scpsys_drv);
> > > 
> > 
> > Good idea, but I wonder why there is no remove function in the
> > driver. Do we also need to make the module non-removable and
> > set .suppress_bind_attrs, or is all of the probe function
> > reversible through devm_* helpers?
> 
> pm domains currently can't be unregistered, removal of this driver is
> not supported. The driver can't be compiled as a module.

Ok, then you need the suppress_bind_attrs flag to ensure that users
cannot unbind and rebind the device through sysfs. The module_exit()
function will be dropped implicitly for built-in drivers, so the
module_platform_driver() is ok.

	Arnd
diff mbox

Patch

diff --git a/drivers/soc/mediatek/mtk-scpsys.c b/drivers/soc/mediatek/mtk-scpsys.c
index e425619..e6752749 100644
--- a/drivers/soc/mediatek/mtk-scpsys.c
+++ b/drivers/soc/mediatek/mtk-scpsys.c
@@ -542,6 +542,7 @@  static const struct of_device_id of_scpsys_match_tbl[] = {
 };
 
 static struct platform_driver scpsys_drv = {
+	.probe = scpsys_probe,
 	.driver = {
 		.name = "mtk-scpsys",
 		.owner = THIS_MODULE,
@@ -549,4 +550,4 @@  static struct platform_driver scpsys_drv = {
 	},
 };
 
-module_platform_driver_probe(scpsys_drv, scpsys_probe);
+module_platform_driver(scpsys_drv);