2013-03-14 13:11:45

by Fabio Porcedda

[permalink] [raw]
Subject: [PATCH 00/10] Use module_platform_driver_probe() part 2

Hi all,
this patch set is the second part for the conversion to use
new module_platform_driver_probe() macro.

I will send a part 3 for the remaining drivers.

Fabio Porcedda (10):
drivers: media: use module_platform_driver_probe()
drivers: ata: use module_platform_driver_probe()
drivers: char: use module_platform_driver_probe()
drivers: hwmon: use module_platform_driver_probe()
drivers: ide: use module_platform_driver_probe()
drivers: input: use module_platform_driver_probe()
drivers: memory: use module_platform_driver_probe()
drivers: mfd: use module_platform_driver_probe()
drivers: video: use module_platform_driver_probe()
drivers: misc: use module_platform_driver_probe()

drivers/ata/pata_at32.c | 13 +------------
drivers/ata/pata_samsung_cf.c | 13 +------------
drivers/char/hw_random/mxc-rnga.c | 13 +------------
drivers/char/hw_random/tx4939-rng.c | 13 +------------
drivers/hwmon/mc13783-adc.c | 13 +------------
drivers/ide/gayle.c | 15 +--------------
drivers/ide/tx4938ide.c | 13 +------------
drivers/ide/tx4939ide.c | 13 +------------
drivers/input/keyboard/amikbd.c | 14 +-------------
drivers/input/keyboard/davinci_keyscan.c | 12 +-----------
drivers/input/keyboard/nomadik-ske-keypad.c | 12 +-----------
drivers/input/misc/twl4030-pwrbutton.c | 13 +------------
drivers/input/mouse/amimouse.c | 14 +-------------
drivers/input/serio/at32psif.c | 13 +------------
drivers/input/serio/q40kbd.c | 13 +------------
drivers/input/touchscreen/atmel-wm97xx.c | 12 +-----------
drivers/input/touchscreen/mc13783_ts.c | 12 +-----------
drivers/media/platform/sh_vou.c | 13 +------------
drivers/media/platform/soc_camera/atmel-isi.c | 12 +-----------
drivers/media/platform/soc_camera/mx1_camera.c | 13 +------------
drivers/memory/emif.c | 12 +-----------
drivers/mfd/davinci_voicecodec.c | 12 +-----------
drivers/mfd/htc-pasic3.c | 13 +------------
drivers/misc/atmel_pwm.c | 12 +-----------
drivers/misc/ep93xx_pwm.c | 13 +------------
drivers/video/backlight/atmel-pwm-bl.c | 12 +-----------
drivers/video/sh_mipi_dsi.c | 12 +-----------
drivers/video/sh_mobile_hdmi.c | 12 +-----------
28 files changed, 28 insertions(+), 329 deletions(-)

--
1.8.1.5


2013-03-14 13:11:47

by Fabio Porcedda

[permalink] [raw]
Subject: [PATCH 01/10] drivers: media: use module_platform_driver_probe()

This patch converts the drivers to use the
module_platform_driver_probe() macro which makes the code smaller and
a bit simpler.

Signed-off-by: Fabio Porcedda <[email protected]>
Cc: Greg Kroah-Hartman <[email protected]>
Cc: Mauro Carvalho Chehab <[email protected]>
Cc: Josh Wu <[email protected]>
Cc: Guennadi Liakhovetski <[email protected]>
Cc: Hans Verkuil <[email protected]>
Cc: [email protected]
---
drivers/media/platform/sh_vou.c | 13 +------------
drivers/media/platform/soc_camera/atmel-isi.c | 12 +-----------
drivers/media/platform/soc_camera/mx1_camera.c | 13 +------------
3 files changed, 3 insertions(+), 35 deletions(-)

diff --git a/drivers/media/platform/sh_vou.c b/drivers/media/platform/sh_vou.c
index 66c8da1..d853162 100644
--- a/drivers/media/platform/sh_vou.c
+++ b/drivers/media/platform/sh_vou.c
@@ -1485,18 +1485,7 @@ static struct platform_driver __refdata sh_vou = {
},
};

-static int __init sh_vou_init(void)
-{
- return platform_driver_probe(&sh_vou, sh_vou_probe);
-}
-
-static void __exit sh_vou_exit(void)
-{
- platform_driver_unregister(&sh_vou);
-}
-
-module_init(sh_vou_init);
-module_exit(sh_vou_exit);
+module_platform_driver_probe(sh_vou, sh_vou_probe);

MODULE_DESCRIPTION("SuperH VOU driver");
MODULE_AUTHOR("Guennadi Liakhovetski <[email protected]>");
diff --git a/drivers/media/platform/soc_camera/atmel-isi.c b/drivers/media/platform/soc_camera/atmel-isi.c
index 82dbf99..12ba31d 100644
--- a/drivers/media/platform/soc_camera/atmel-isi.c
+++ b/drivers/media/platform/soc_camera/atmel-isi.c
@@ -1081,17 +1081,7 @@ static struct platform_driver atmel_isi_driver = {
},
};

-static int __init atmel_isi_init_module(void)
-{
- return platform_driver_probe(&atmel_isi_driver, &atmel_isi_probe);
-}
-
-static void __exit atmel_isi_exit(void)
-{
- platform_driver_unregister(&atmel_isi_driver);
-}
-module_init(atmel_isi_init_module);
-module_exit(atmel_isi_exit);
+module_platform_driver_probe(atmel_isi_driver, atmel_isi_probe);

MODULE_AUTHOR("Josh Wu <[email protected]>");
MODULE_DESCRIPTION("The V4L2 driver for Atmel Linux");
diff --git a/drivers/media/platform/soc_camera/mx1_camera.c b/drivers/media/platform/soc_camera/mx1_camera.c
index 25b2a28..4389f43 100644
--- a/drivers/media/platform/soc_camera/mx1_camera.c
+++ b/drivers/media/platform/soc_camera/mx1_camera.c
@@ -859,18 +859,7 @@ static struct platform_driver mx1_camera_driver = {
.remove = __exit_p(mx1_camera_remove),
};

-static int __init mx1_camera_init(void)
-{
- return platform_driver_probe(&mx1_camera_driver, mx1_camera_probe);
-}
-
-static void __exit mx1_camera_exit(void)
-{
- return platform_driver_unregister(&mx1_camera_driver);
-}
-
-module_init(mx1_camera_init);
-module_exit(mx1_camera_exit);
+module_platform_driver_probe(mx1_camera_driver, mx1_camera_probe);

MODULE_DESCRIPTION("i.MX1/i.MXL SoC Camera Host driver");
MODULE_AUTHOR("Paulius Zaleckas <[email protected]>");
--
1.8.1.5

2013-03-14 13:11:56

by Fabio Porcedda

[permalink] [raw]
Subject: [PATCH 04/10] drivers: hwmon: use module_platform_driver_probe()

This patch converts the drivers to use the
module_platform_driver_probe() macro which makes the code smaller and
a bit simpler.

Signed-off-by: Fabio Porcedda <[email protected]>
Cc: Greg Kroah-Hartman <[email protected]>
Cc: Jean Delvare <[email protected]>
Cc: Guenter Roeck <[email protected]>
Cc: [email protected]
---
drivers/hwmon/mc13783-adc.c | 13 +------------
1 file changed, 1 insertion(+), 12 deletions(-)

diff --git a/drivers/hwmon/mc13783-adc.c b/drivers/hwmon/mc13783-adc.c
index 2a7f331..982d862 100644
--- a/drivers/hwmon/mc13783-adc.c
+++ b/drivers/hwmon/mc13783-adc.c
@@ -273,18 +273,7 @@ static struct platform_driver mc13783_adc_driver = {
.id_table = mc13783_adc_idtable,
};

-static int __init mc13783_adc_init(void)
-{
- return platform_driver_probe(&mc13783_adc_driver, mc13783_adc_probe);
-}
-
-static void __exit mc13783_adc_exit(void)
-{
- platform_driver_unregister(&mc13783_adc_driver);
-}
-
-module_init(mc13783_adc_init);
-module_exit(mc13783_adc_exit);
+module_platform_driver_probe(mc13783_adc_driver, mc13783_adc_probe);

MODULE_DESCRIPTION("MC13783 ADC driver");
MODULE_AUTHOR("Luotao Fu <[email protected]>");
--
1.8.1.5

2013-03-14 13:12:20

by Fabio Porcedda

[permalink] [raw]
Subject: [PATCH 10/10] drivers: misc: use module_platform_driver_probe()

This patch converts the drivers to use the
module_platform_driver_probe() macro which makes the code smaller and
a bit simpler.

Signed-off-by: Fabio Porcedda <[email protected]>
Cc: Greg Kroah-Hartman <[email protected]>
Cc: Arnd Bergmann <[email protected]>
---
drivers/misc/atmel_pwm.c | 12 +-----------
drivers/misc/ep93xx_pwm.c | 13 +------------
2 files changed, 2 insertions(+), 23 deletions(-)

diff --git a/drivers/misc/atmel_pwm.c b/drivers/misc/atmel_pwm.c
index 28f5aaa..494d050 100644
--- a/drivers/misc/atmel_pwm.c
+++ b/drivers/misc/atmel_pwm.c
@@ -393,17 +393,7 @@ static struct platform_driver atmel_pwm_driver = {
*/
};

-static int __init pwm_init(void)
-{
- return platform_driver_probe(&atmel_pwm_driver, pwm_probe);
-}
-module_init(pwm_init);
-
-static void __exit pwm_exit(void)
-{
- platform_driver_unregister(&atmel_pwm_driver);
-}
-module_exit(pwm_exit);
+module_platform_driver_probe(atmel_pwm_driver, pwm_probe);

MODULE_DESCRIPTION("Driver for AT32/AT91 PWM module");
MODULE_LICENSE("GPL");
diff --git a/drivers/misc/ep93xx_pwm.c b/drivers/misc/ep93xx_pwm.c
index 16d7179..96787ec 100644
--- a/drivers/misc/ep93xx_pwm.c
+++ b/drivers/misc/ep93xx_pwm.c
@@ -365,18 +365,7 @@ static struct platform_driver ep93xx_pwm_driver = {
.remove = __exit_p(ep93xx_pwm_remove),
};

-static int __init ep93xx_pwm_init(void)
-{
- return platform_driver_probe(&ep93xx_pwm_driver, ep93xx_pwm_probe);
-}
-
-static void __exit ep93xx_pwm_exit(void)
-{
- platform_driver_unregister(&ep93xx_pwm_driver);
-}
-
-module_init(ep93xx_pwm_init);
-module_exit(ep93xx_pwm_exit);
+module_platform_driver_probe(ep93xx_pwm_driver, ep93xx_pwm_probe);

MODULE_AUTHOR("Matthieu Crapet <[email protected]>, "
"H Hartley Sweeten <[email protected]>");
--
1.8.1.5

2013-03-14 13:12:16

by Fabio Porcedda

[permalink] [raw]
Subject: [PATCH 05/10] drivers: ide: use module_platform_driver_probe()

This patch converts the drivers to use the
module_platform_driver_probe() macro which makes the code smaller and
a bit simpler.

Signed-off-by: Fabio Porcedda <[email protected]>
Cc: Greg Kroah-Hartman <[email protected]>
Cc: "David S. Miller" <[email protected]>
Cc: [email protected]
---
drivers/ide/gayle.c | 15 +--------------
drivers/ide/tx4938ide.c | 13 +------------
drivers/ide/tx4939ide.c | 13 +------------
3 files changed, 3 insertions(+), 38 deletions(-)

diff --git a/drivers/ide/gayle.c b/drivers/ide/gayle.c
index 51beb85..0a8440a 100644
--- a/drivers/ide/gayle.c
+++ b/drivers/ide/gayle.c
@@ -183,20 +183,7 @@ static struct platform_driver amiga_gayle_ide_driver = {
},
};

-static int __init amiga_gayle_ide_init(void)
-{
- return platform_driver_probe(&amiga_gayle_ide_driver,
- amiga_gayle_ide_probe);
-}
-
-module_init(amiga_gayle_ide_init);
-
-static void __exit amiga_gayle_ide_exit(void)
-{
- platform_driver_unregister(&amiga_gayle_ide_driver);
-}
-
-module_exit(amiga_gayle_ide_exit);
+module_platform_driver_probe(amiga_gayle_ide_driver, amiga_gayle_ide_probe);

MODULE_LICENSE("GPL");
MODULE_ALIAS("platform:amiga-gayle-ide");
diff --git a/drivers/ide/tx4938ide.c b/drivers/ide/tx4938ide.c
index 91d49dd..ede8575 100644
--- a/drivers/ide/tx4938ide.c
+++ b/drivers/ide/tx4938ide.c
@@ -203,18 +203,7 @@ static struct platform_driver tx4938ide_driver = {
.remove = __exit_p(tx4938ide_remove),
};

-static int __init tx4938ide_init(void)
-{
- return platform_driver_probe(&tx4938ide_driver, tx4938ide_probe);
-}
-
-static void __exit tx4938ide_exit(void)
-{
- platform_driver_unregister(&tx4938ide_driver);
-}
-
-module_init(tx4938ide_init);
-module_exit(tx4938ide_exit);
+module_platform_driver_probe(tx4938ide_driver, tx4938ide_probe);

MODULE_DESCRIPTION("TX4938 internal IDE driver");
MODULE_LICENSE("GPL");
diff --git a/drivers/ide/tx4939ide.c b/drivers/ide/tx4939ide.c
index c0ab800..4ecdee5 100644
--- a/drivers/ide/tx4939ide.c
+++ b/drivers/ide/tx4939ide.c
@@ -624,18 +624,7 @@ static struct platform_driver tx4939ide_driver = {
.resume = tx4939ide_resume,
};

-static int __init tx4939ide_init(void)
-{
- return platform_driver_probe(&tx4939ide_driver, tx4939ide_probe);
-}
-
-static void __exit tx4939ide_exit(void)
-{
- platform_driver_unregister(&tx4939ide_driver);
-}
-
-module_init(tx4939ide_init);
-module_exit(tx4939ide_exit);
+module_platform_driver_probe(tx4939ide_driver, tx4939ide_probe);

MODULE_DESCRIPTION("TX4939 internal IDE driver");
MODULE_LICENSE("GPL");
--
1.8.1.5

2013-03-14 13:12:53

by Fabio Porcedda

[permalink] [raw]
Subject: [PATCH 09/10] drivers: video: use module_platform_driver_probe()

This patch converts the drivers to use the
module_platform_driver_probe() macro which makes the code smaller and
a bit simpler.

Signed-off-by: Fabio Porcedda <[email protected]>
Cc: Greg Kroah-Hartman <[email protected]>
Cc: Richard Purdie <[email protected]>
Cc: Florian Tobias Schandinat <[email protected]>
Cc: [email protected]
---
drivers/video/backlight/atmel-pwm-bl.c | 12 +-----------
drivers/video/sh_mipi_dsi.c | 12 +-----------
drivers/video/sh_mobile_hdmi.c | 12 +-----------
3 files changed, 3 insertions(+), 33 deletions(-)

diff --git a/drivers/video/backlight/atmel-pwm-bl.c b/drivers/video/backlight/atmel-pwm-bl.c
index de5e5e7..20b330d 100644
--- a/drivers/video/backlight/atmel-pwm-bl.c
+++ b/drivers/video/backlight/atmel-pwm-bl.c
@@ -225,17 +225,7 @@ static struct platform_driver atmel_pwm_bl_driver = {
.remove = __exit_p(atmel_pwm_bl_remove),
};

-static int __init atmel_pwm_bl_init(void)
-{
- return platform_driver_probe(&atmel_pwm_bl_driver, atmel_pwm_bl_probe);
-}
-module_init(atmel_pwm_bl_init);
-
-static void __exit atmel_pwm_bl_exit(void)
-{
- platform_driver_unregister(&atmel_pwm_bl_driver);
-}
-module_exit(atmel_pwm_bl_exit);
+module_platform_driver_probe(atmel_pwm_bl_driver, atmel_pwm_bl_probe);

MODULE_AUTHOR("Hans-Christian egtvedt <[email protected]>");
MODULE_DESCRIPTION("Atmel PWM backlight driver");
diff --git a/drivers/video/sh_mipi_dsi.c b/drivers/video/sh_mipi_dsi.c
index 701b461..6cad530 100644
--- a/drivers/video/sh_mipi_dsi.c
+++ b/drivers/video/sh_mipi_dsi.c
@@ -581,17 +581,7 @@ static struct platform_driver sh_mipi_driver = {
},
};

-static int __init sh_mipi_init(void)
-{
- return platform_driver_probe(&sh_mipi_driver, sh_mipi_probe);
-}
-module_init(sh_mipi_init);
-
-static void __exit sh_mipi_exit(void)
-{
- platform_driver_unregister(&sh_mipi_driver);
-}
-module_exit(sh_mipi_exit);
+module_platform_driver_probe(sh_mipi_driver, sh_mipi_probe);

MODULE_AUTHOR("Guennadi Liakhovetski <[email protected]>");
MODULE_DESCRIPTION("SuperH / ARM-shmobile MIPI DSI driver");
diff --git a/drivers/video/sh_mobile_hdmi.c b/drivers/video/sh_mobile_hdmi.c
index 930e550..bfe4728 100644
--- a/drivers/video/sh_mobile_hdmi.c
+++ b/drivers/video/sh_mobile_hdmi.c
@@ -1445,17 +1445,7 @@ static struct platform_driver sh_hdmi_driver = {
},
};

-static int __init sh_hdmi_init(void)
-{
- return platform_driver_probe(&sh_hdmi_driver, sh_hdmi_probe);
-}
-module_init(sh_hdmi_init);
-
-static void __exit sh_hdmi_exit(void)
-{
- platform_driver_unregister(&sh_hdmi_driver);
-}
-module_exit(sh_hdmi_exit);
+module_platform_driver_probe(sh_hdmi_driver, sh_hdmi_probe);

MODULE_AUTHOR("Guennadi Liakhovetski <[email protected]>");
MODULE_DESCRIPTION("SuperH / ARM-shmobile HDMI driver");
--
1.8.1.5

2013-03-14 13:12:14

by Fabio Porcedda

[permalink] [raw]
Subject: [PATCH 06/10] drivers: input: use module_platform_driver_probe()

This patch converts the drivers to use the
module_platform_driver_probe() macro which makes the code smaller and
a bit simpler.

Signed-off-by: Fabio Porcedda <[email protected]>
Cc: Greg Kroah-Hartman <[email protected]>
Cc: Dmitry Torokhov <[email protected]>
Cc: Mark Brown <[email protected]>
Cc: Liam Girdwood <[email protected]>
Cc: Bill Pemberton <[email protected]>
Cc: Linus Walleij <[email protected]>
Cc: David Howells <[email protected]>
Cc: [email protected]
---
drivers/input/keyboard/amikbd.c | 14 +-------------
drivers/input/keyboard/davinci_keyscan.c | 12 +-----------
drivers/input/keyboard/nomadik-ske-keypad.c | 12 +-----------
drivers/input/misc/twl4030-pwrbutton.c | 13 +------------
drivers/input/mouse/amimouse.c | 14 +-------------
drivers/input/serio/at32psif.c | 13 +------------
drivers/input/serio/q40kbd.c | 13 +------------
drivers/input/touchscreen/atmel-wm97xx.c | 12 +-----------
drivers/input/touchscreen/mc13783_ts.c | 12 +-----------
9 files changed, 9 insertions(+), 106 deletions(-)

diff --git a/drivers/input/keyboard/amikbd.c b/drivers/input/keyboard/amikbd.c
index 79172af..ba0b36f 100644
--- a/drivers/input/keyboard/amikbd.c
+++ b/drivers/input/keyboard/amikbd.c
@@ -260,18 +260,6 @@ static struct platform_driver amikbd_driver = {
},
};

-static int __init amikbd_init(void)
-{
- return platform_driver_probe(&amikbd_driver, amikbd_probe);
-}
-
-module_init(amikbd_init);
-
-static void __exit amikbd_exit(void)
-{
- platform_driver_unregister(&amikbd_driver);
-}
-
-module_exit(amikbd_exit);
+module_platform_driver_probe(amikbd_driver, amikbd_probe);

MODULE_ALIAS("platform:amiga-keyboard");
diff --git a/drivers/input/keyboard/davinci_keyscan.c b/drivers/input/keyboard/davinci_keyscan.c
index 4e4e453..8297537 100644
--- a/drivers/input/keyboard/davinci_keyscan.c
+++ b/drivers/input/keyboard/davinci_keyscan.c
@@ -329,17 +329,7 @@ static struct platform_driver davinci_ks_driver = {
.remove = davinci_ks_remove,
};

-static int __init davinci_ks_init(void)
-{
- return platform_driver_probe(&davinci_ks_driver, davinci_ks_probe);
-}
-module_init(davinci_ks_init);
-
-static void __exit davinci_ks_exit(void)
-{
- platform_driver_unregister(&davinci_ks_driver);
-}
-module_exit(davinci_ks_exit);
+module_platform_driver_probe(davinci_ks_driver, davinci_ks_probe);

MODULE_AUTHOR("Miguel Aguilar");
MODULE_DESCRIPTION("Texas Instruments DaVinci Key Scan Driver");
diff --git a/drivers/input/keyboard/nomadik-ske-keypad.c b/drivers/input/keyboard/nomadik-ske-keypad.c
index 0e6a815..c7d505c 100644
--- a/drivers/input/keyboard/nomadik-ske-keypad.c
+++ b/drivers/input/keyboard/nomadik-ske-keypad.c
@@ -430,17 +430,7 @@ static struct platform_driver ske_keypad_driver = {
.remove = ske_keypad_remove,
};

-static int __init ske_keypad_init(void)
-{
- return platform_driver_probe(&ske_keypad_driver, ske_keypad_probe);
-}
-module_init(ske_keypad_init);
-
-static void __exit ske_keypad_exit(void)
-{
- platform_driver_unregister(&ske_keypad_driver);
-}
-module_exit(ske_keypad_exit);
+module_platform_driver_probe(ske_keypad_driver, ske_keypad_probe);

MODULE_LICENSE("GPL v2");
MODULE_AUTHOR("Naveen Kumar <[email protected]> / Sundar Iyer <[email protected]>");
diff --git a/drivers/input/misc/twl4030-pwrbutton.c b/drivers/input/misc/twl4030-pwrbutton.c
index 27c2bc8..1700947 100644
--- a/drivers/input/misc/twl4030-pwrbutton.c
+++ b/drivers/input/misc/twl4030-pwrbutton.c
@@ -114,18 +114,7 @@ static struct platform_driver twl4030_pwrbutton_driver = {
},
};

-static int __init twl4030_pwrbutton_init(void)
-{
- return platform_driver_probe(&twl4030_pwrbutton_driver,
- twl4030_pwrbutton_probe);
-}
-module_init(twl4030_pwrbutton_init);
-
-static void __exit twl4030_pwrbutton_exit(void)
-{
- platform_driver_unregister(&twl4030_pwrbutton_driver);
-}
-module_exit(twl4030_pwrbutton_exit);
+module_platform_driver_probe(twl4030_pwrbutton_driver, twl4030_pwrbutton_probe);

MODULE_ALIAS("platform:twl4030_pwrbutton");
MODULE_DESCRIPTION("Triton2 Power Button");
diff --git a/drivers/input/mouse/amimouse.c b/drivers/input/mouse/amimouse.c
index 5fa9934..b55d5af 100644
--- a/drivers/input/mouse/amimouse.c
+++ b/drivers/input/mouse/amimouse.c
@@ -146,18 +146,6 @@ static struct platform_driver amimouse_driver = {
},
};

-static int __init amimouse_init(void)
-{
- return platform_driver_probe(&amimouse_driver, amimouse_probe);
-}
-
-module_init(amimouse_init);
-
-static void __exit amimouse_exit(void)
-{
- platform_driver_unregister(&amimouse_driver);
-}
-
-module_exit(amimouse_exit);
+module_platform_driver_probe(amimouse_driver, amimouse_probe);

MODULE_ALIAS("platform:amiga-mouse");
diff --git a/drivers/input/serio/at32psif.c b/drivers/input/serio/at32psif.c
index 36e799c..190ce35 100644
--- a/drivers/input/serio/at32psif.c
+++ b/drivers/input/serio/at32psif.c
@@ -359,18 +359,7 @@ static struct platform_driver psif_driver = {
},
};

-static int __init psif_init(void)
-{
- return platform_driver_probe(&psif_driver, psif_probe);
-}
-
-static void __exit psif_exit(void)
-{
- platform_driver_unregister(&psif_driver);
-}
-
-module_init(psif_init);
-module_exit(psif_exit);
+module_platform_driver_probe(psif_driver, psif_probe);

MODULE_AUTHOR("Hans-Christian Egtvedt <[email protected]>");
MODULE_DESCRIPTION("Atmel AVR32 PSIF PS/2 driver");
diff --git a/drivers/input/serio/q40kbd.c b/drivers/input/serio/q40kbd.c
index 70fe542..436a343 100644
--- a/drivers/input/serio/q40kbd.c
+++ b/drivers/input/serio/q40kbd.c
@@ -193,15 +193,4 @@ static struct platform_driver q40kbd_driver = {
.remove = q40kbd_remove,
};

-static int __init q40kbd_init(void)
-{
- return platform_driver_probe(&q40kbd_driver, q40kbd_probe);
-}
-
-static void __exit q40kbd_exit(void)
-{
- platform_driver_unregister(&q40kbd_driver);
-}
-
-module_init(q40kbd_init);
-module_exit(q40kbd_exit);
+module_platform_driver_probe(q40kbd_driver, q40kbd_probe);
diff --git a/drivers/input/touchscreen/atmel-wm97xx.c b/drivers/input/touchscreen/atmel-wm97xx.c
index c5c2dbb..2c1e46b 100644
--- a/drivers/input/touchscreen/atmel-wm97xx.c
+++ b/drivers/input/touchscreen/atmel-wm97xx.c
@@ -432,17 +432,7 @@ static struct platform_driver atmel_wm97xx_driver = {
},
};

-static int __init atmel_wm97xx_init(void)
-{
- return platform_driver_probe(&atmel_wm97xx_driver, atmel_wm97xx_probe);
-}
-module_init(atmel_wm97xx_init);
-
-static void __exit atmel_wm97xx_exit(void)
-{
- platform_driver_unregister(&atmel_wm97xx_driver);
-}
-module_exit(atmel_wm97xx_exit);
+module_platform_driver_probe(atmel_wm97xx_driver, atmel_wm97xx_probe);

MODULE_AUTHOR("Hans-Christian Egtvedt <[email protected]>");
MODULE_DESCRIPTION("wm97xx continuous touch driver for Atmel AT91 and AVR32");
diff --git a/drivers/input/touchscreen/mc13783_ts.c b/drivers/input/touchscreen/mc13783_ts.c
index 02103b6..89308fe 100644
--- a/drivers/input/touchscreen/mc13783_ts.c
+++ b/drivers/input/touchscreen/mc13783_ts.c
@@ -250,17 +250,7 @@ static struct platform_driver mc13783_ts_driver = {
},
};

-static int __init mc13783_ts_init(void)
-{
- return platform_driver_probe(&mc13783_ts_driver, &mc13783_ts_probe);
-}
-module_init(mc13783_ts_init);
-
-static void __exit mc13783_ts_exit(void)
-{
- platform_driver_unregister(&mc13783_ts_driver);
-}
-module_exit(mc13783_ts_exit);
+module_platform_driver_probe(mc13783_ts_driver, mc13783_ts_probe);

MODULE_DESCRIPTION("MC13783 input touchscreen driver");
MODULE_AUTHOR("Sascha Hauer <[email protected]>");
--
1.8.1.5

2013-03-14 13:13:46

by Fabio Porcedda

[permalink] [raw]
Subject: [PATCH 08/10] drivers: mfd: use module_platform_driver_probe()

This patch converts the drivers to use the
module_platform_driver_probe() macro which makes the code smaller and
a bit simpler.

Signed-off-by: Fabio Porcedda <[email protected]>
Cc: Greg Kroah-Hartman <[email protected]>
Cc: Linus Walleij <[email protected]>
Cc: Samuel Ortiz <[email protected]>
Cc: [email protected]
---
drivers/mfd/davinci_voicecodec.c | 12 +-----------
drivers/mfd/htc-pasic3.c | 13 +------------
2 files changed, 2 insertions(+), 23 deletions(-)

diff --git a/drivers/mfd/davinci_voicecodec.c b/drivers/mfd/davinci_voicecodec.c
index c0bcc87..c60ab0c 100644
--- a/drivers/mfd/davinci_voicecodec.c
+++ b/drivers/mfd/davinci_voicecodec.c
@@ -177,17 +177,7 @@ static struct platform_driver davinci_vc_driver = {
.remove = davinci_vc_remove,
};

-static int __init davinci_vc_init(void)
-{
- return platform_driver_probe(&davinci_vc_driver, davinci_vc_probe);
-}
-module_init(davinci_vc_init);
-
-static void __exit davinci_vc_exit(void)
-{
- platform_driver_unregister(&davinci_vc_driver);
-}
-module_exit(davinci_vc_exit);
+module_platform_driver_probe(davinci_vc_driver, davinci_vc_probe);

MODULE_AUTHOR("Miguel Aguilar");
MODULE_DESCRIPTION("Texas Instruments DaVinci Voice Codec Core Interface");
diff --git a/drivers/mfd/htc-pasic3.c b/drivers/mfd/htc-pasic3.c
index 9e5453d..0285fce 100644
--- a/drivers/mfd/htc-pasic3.c
+++ b/drivers/mfd/htc-pasic3.c
@@ -208,18 +208,7 @@ static struct platform_driver pasic3_driver = {
.remove = pasic3_remove,
};

-static int __init pasic3_base_init(void)
-{
- return platform_driver_probe(&pasic3_driver, pasic3_probe);
-}
-
-static void __exit pasic3_base_exit(void)
-{
- platform_driver_unregister(&pasic3_driver);
-}
-
-module_init(pasic3_base_init);
-module_exit(pasic3_base_exit);
+module_platform_driver_probe(pasic3_driver, pasic3_probe);

MODULE_AUTHOR("Philipp Zabel <[email protected]>");
MODULE_DESCRIPTION("Core driver for HTC PASIC3");
--
1.8.1.5

2013-03-14 13:14:20

by Fabio Porcedda

[permalink] [raw]
Subject: [PATCH 07/10] drivers: memory: use module_platform_driver_probe()

This patch converts the drivers to use the
module_platform_driver_probe() macro which makes the code smaller and
a bit simpler.

Signed-off-by: Fabio Porcedda <[email protected]>
Cc: Greg Kroah-Hartman <[email protected]>
Cc: Benoit Cousson <[email protected]>
Cc: Aneesh V <[email protected]>
---
drivers/memory/emif.c | 12 +-----------
1 file changed, 1 insertion(+), 11 deletions(-)

diff --git a/drivers/memory/emif.c b/drivers/memory/emif.c
index df08736..ecbc1a9 100644
--- a/drivers/memory/emif.c
+++ b/drivers/memory/emif.c
@@ -1841,18 +1841,8 @@ static struct platform_driver emif_driver = {
},
};

-static int __init_or_module emif_register(void)
-{
- return platform_driver_probe(&emif_driver, emif_probe);
-}
-
-static void __exit emif_unregister(void)
-{
- platform_driver_unregister(&emif_driver);
-}
+module_platform_driver_probe(emif_driver, emif_probe);

-module_init(emif_register);
-module_exit(emif_unregister);
MODULE_DESCRIPTION("TI EMIF SDRAM Controller Driver");
MODULE_LICENSE("GPL");
MODULE_ALIAS("platform:emif");
--
1.8.1.5

2013-03-14 13:11:52

by Fabio Porcedda

[permalink] [raw]
Subject: [PATCH 02/10] drivers: ata: use module_platform_driver_probe()

This patch converts the drivers to use the
module_platform_driver_probe() macro which makes the code smaller and
a bit simpler.

Signed-off-by: Fabio Porcedda <[email protected]>
Cc: Greg Kroah-Hartman <[email protected]>
Cc: Jeff Garzik <[email protected]>
Cc: [email protected]
---
drivers/ata/pata_at32.c | 13 +------------
drivers/ata/pata_samsung_cf.c | 13 +------------
2 files changed, 2 insertions(+), 24 deletions(-)

diff --git a/drivers/ata/pata_at32.c b/drivers/ata/pata_at32.c
index 36f189c..8d493b4 100644
--- a/drivers/ata/pata_at32.c
+++ b/drivers/ata/pata_at32.c
@@ -393,18 +393,7 @@ static struct platform_driver pata_at32_driver = {
},
};

-static int __init pata_at32_init(void)
-{
- return platform_driver_probe(&pata_at32_driver, pata_at32_probe);
-}
-
-static void __exit pata_at32_exit(void)
-{
- platform_driver_unregister(&pata_at32_driver);
-}
-
-module_init(pata_at32_init);
-module_exit(pata_at32_exit);
+module_platform_driver_probe(pata_at32_driver, pata_at32_probe);

MODULE_LICENSE("GPL");
MODULE_DESCRIPTION("AVR32 SMC/CFC PATA Driver");
diff --git a/drivers/ata/pata_samsung_cf.c b/drivers/ata/pata_samsung_cf.c
index 70b0e01..6ef27e9 100644
--- a/drivers/ata/pata_samsung_cf.c
+++ b/drivers/ata/pata_samsung_cf.c
@@ -661,18 +661,7 @@ static struct platform_driver pata_s3c_driver = {
},
};

-static int __init pata_s3c_init(void)
-{
- return platform_driver_probe(&pata_s3c_driver, pata_s3c_probe);
-}
-
-static void __exit pata_s3c_exit(void)
-{
- platform_driver_unregister(&pata_s3c_driver);
-}
-
-module_init(pata_s3c_init);
-module_exit(pata_s3c_exit);
+module_platform_driver_probe(pata_s3c_driver, pata_s3c_probe);

MODULE_AUTHOR("Abhilash Kesavan, <[email protected]>");
MODULE_DESCRIPTION("low-level driver for Samsung PATA controller");
--
1.8.1.5

2013-03-14 13:14:59

by Fabio Porcedda

[permalink] [raw]
Subject: [PATCH 03/10] drivers: char: use module_platform_driver_probe()

This patch converts the drivers to use the
module_platform_driver_probe() macro which makes the code smaller and
a bit simpler.

Signed-off-by: Fabio Porcedda <[email protected]>
Cc: Greg Kroah-Hartman <[email protected]>
Cc: Matt Mackall <[email protected]>
Cc: Herbert Xu <[email protected]>
Cc: Fabio Estevam <[email protected]>
Cc: Sascha Hauer <[email protected]>
---
drivers/char/hw_random/mxc-rnga.c | 13 +------------
drivers/char/hw_random/tx4939-rng.c | 13 +------------
2 files changed, 2 insertions(+), 24 deletions(-)

diff --git a/drivers/char/hw_random/mxc-rnga.c b/drivers/char/hw_random/mxc-rnga.c
index f05d857..895d0b8 100644
--- a/drivers/char/hw_random/mxc-rnga.c
+++ b/drivers/char/hw_random/mxc-rnga.c
@@ -228,18 +228,7 @@ static struct platform_driver mxc_rnga_driver = {
.remove = __exit_p(mxc_rnga_remove),
};

-static int __init mod_init(void)
-{
- return platform_driver_probe(&mxc_rnga_driver, mxc_rnga_probe);
-}
-
-static void __exit mod_exit(void)
-{
- platform_driver_unregister(&mxc_rnga_driver);
-}
-
-module_init(mod_init);
-module_exit(mod_exit);
+module_platform_driver_probe(mxc_rnga_driver, mxc_rnga_probe);

MODULE_AUTHOR("Freescale Semiconductor, Inc.");
MODULE_DESCRIPTION("H/W RNGA driver for i.MX");
diff --git a/drivers/char/hw_random/tx4939-rng.c b/drivers/char/hw_random/tx4939-rng.c
index 3099198..d34a24a 100644
--- a/drivers/char/hw_random/tx4939-rng.c
+++ b/drivers/char/hw_random/tx4939-rng.c
@@ -166,18 +166,7 @@ static struct platform_driver tx4939_rng_driver = {
.remove = tx4939_rng_remove,
};

-static int __init tx4939rng_init(void)
-{
- return platform_driver_probe(&tx4939_rng_driver, tx4939_rng_probe);
-}
-
-static void __exit tx4939rng_exit(void)
-{
- platform_driver_unregister(&tx4939_rng_driver);
-}
-
-module_init(tx4939rng_init);
-module_exit(tx4939rng_exit);
+module_platform_driver_probe(tx4939_rng_driver, tx4939_rng_probe);

MODULE_DESCRIPTION("H/W Random Number Generator (RNG) driver for TX4939");
MODULE_LICENSE("GPL");
--
1.8.1.5

2013-03-14 13:15:43

by Fabio Porcedda

[permalink] [raw]
Subject: [PATCH] drivers: misc: use module_platform_driver_probe()

This patch converts the drivers to use the
module_platform_driver_probe() macro which makes the code smaller and
a bit simpler.

Signed-off-by: Fabio Porcedda <[email protected]>
Cc: Greg Kroah-Hartman <[email protected]>
Cc: Arnd Bergmann <[email protected]>
---
drivers/misc/arm-charlcd.c | 13 +------------
drivers/misc/atmel_pwm.c | 12 +-----------
drivers/misc/ep93xx_pwm.c | 13 +------------
3 files changed, 3 insertions(+), 35 deletions(-)

diff --git a/drivers/misc/arm-charlcd.c b/drivers/misc/arm-charlcd.c
index fe8616a..48651ef 100644
--- a/drivers/misc/arm-charlcd.c
+++ b/drivers/misc/arm-charlcd.c
@@ -378,18 +378,7 @@ static struct platform_driver charlcd_driver = {
.remove = __exit_p(charlcd_remove),
};

-static int __init charlcd_init(void)
-{
- return platform_driver_probe(&charlcd_driver, charlcd_probe);
-}
-
-static void __exit charlcd_exit(void)
-{
- platform_driver_unregister(&charlcd_driver);
-}
-
-module_init(charlcd_init);
-module_exit(charlcd_exit);
+module_platform_driver_probe(charlcd_driver, charlcd_probe);

MODULE_AUTHOR("Linus Walleij <[email protected]>");
MODULE_DESCRIPTION("ARM Character LCD Driver");
diff --git a/drivers/misc/atmel_pwm.c b/drivers/misc/atmel_pwm.c
index 28f5aaa..494d050 100644
--- a/drivers/misc/atmel_pwm.c
+++ b/drivers/misc/atmel_pwm.c
@@ -393,17 +393,7 @@ static struct platform_driver atmel_pwm_driver = {
*/
};

-static int __init pwm_init(void)
-{
- return platform_driver_probe(&atmel_pwm_driver, pwm_probe);
-}
-module_init(pwm_init);
-
-static void __exit pwm_exit(void)
-{
- platform_driver_unregister(&atmel_pwm_driver);
-}
-module_exit(pwm_exit);
+module_platform_driver_probe(atmel_pwm_driver, pwm_probe);

MODULE_DESCRIPTION("Driver for AT32/AT91 PWM module");
MODULE_LICENSE("GPL");
diff --git a/drivers/misc/ep93xx_pwm.c b/drivers/misc/ep93xx_pwm.c
index 16d7179..96787ec 100644
--- a/drivers/misc/ep93xx_pwm.c
+++ b/drivers/misc/ep93xx_pwm.c
@@ -365,18 +365,7 @@ static struct platform_driver ep93xx_pwm_driver = {
.remove = __exit_p(ep93xx_pwm_remove),
};

-static int __init ep93xx_pwm_init(void)
-{
- return platform_driver_probe(&ep93xx_pwm_driver, ep93xx_pwm_probe);
-}
-
-static void __exit ep93xx_pwm_exit(void)
-{
- platform_driver_unregister(&ep93xx_pwm_driver);
-}
-
-module_init(ep93xx_pwm_init);
-module_exit(ep93xx_pwm_exit);
+module_platform_driver_probe(ep93xx_pwm_driver, ep93xx_pwm_probe);

MODULE_AUTHOR("Matthieu Crapet <[email protected]>, "
"H Hartley Sweeten <[email protected]>");
--
1.8.1.5

2013-03-14 13:27:09

by Guennadi Liakhovetski

[permalink] [raw]
Subject: Re: [PATCH 01/10] drivers: media: use module_platform_driver_probe()

Hi Fabio

On Thu, 14 Mar 2013, Fabio Porcedda wrote:

> This patch converts the drivers to use the
> module_platform_driver_probe() macro which makes the code smaller and
> a bit simpler.
>
> Signed-off-by: Fabio Porcedda <[email protected]>
> Cc: Greg Kroah-Hartman <[email protected]>
> Cc: Mauro Carvalho Chehab <[email protected]>
> Cc: Josh Wu <[email protected]>
> Cc: Guennadi Liakhovetski <[email protected]>
> Cc: Hans Verkuil <[email protected]>
> Cc: [email protected]

Thanks for the patch. Subtracting this series
http://thread.gmane.org/gmane.linux.drivers.video-input-infrastructure/61403
you only need to convert atmel-isi.c. Please, respin.

Thanks
Guennadi

> ---
> drivers/media/platform/sh_vou.c | 13 +------------
> drivers/media/platform/soc_camera/atmel-isi.c | 12 +-----------
> drivers/media/platform/soc_camera/mx1_camera.c | 13 +------------
> 3 files changed, 3 insertions(+), 35 deletions(-)
>
> diff --git a/drivers/media/platform/sh_vou.c b/drivers/media/platform/sh_vou.c
> index 66c8da1..d853162 100644
> --- a/drivers/media/platform/sh_vou.c
> +++ b/drivers/media/platform/sh_vou.c
> @@ -1485,18 +1485,7 @@ static struct platform_driver __refdata sh_vou = {
> },
> };
>
> -static int __init sh_vou_init(void)
> -{
> - return platform_driver_probe(&sh_vou, sh_vou_probe);
> -}
> -
> -static void __exit sh_vou_exit(void)
> -{
> - platform_driver_unregister(&sh_vou);
> -}
> -
> -module_init(sh_vou_init);
> -module_exit(sh_vou_exit);
> +module_platform_driver_probe(sh_vou, sh_vou_probe);
>
> MODULE_DESCRIPTION("SuperH VOU driver");
> MODULE_AUTHOR("Guennadi Liakhovetski <[email protected]>");
> diff --git a/drivers/media/platform/soc_camera/atmel-isi.c b/drivers/media/platform/soc_camera/atmel-isi.c
> index 82dbf99..12ba31d 100644
> --- a/drivers/media/platform/soc_camera/atmel-isi.c
> +++ b/drivers/media/platform/soc_camera/atmel-isi.c
> @@ -1081,17 +1081,7 @@ static struct platform_driver atmel_isi_driver = {
> },
> };
>
> -static int __init atmel_isi_init_module(void)
> -{
> - return platform_driver_probe(&atmel_isi_driver, &atmel_isi_probe);
> -}
> -
> -static void __exit atmel_isi_exit(void)
> -{
> - platform_driver_unregister(&atmel_isi_driver);
> -}
> -module_init(atmel_isi_init_module);
> -module_exit(atmel_isi_exit);
> +module_platform_driver_probe(atmel_isi_driver, atmel_isi_probe);
>
> MODULE_AUTHOR("Josh Wu <[email protected]>");
> MODULE_DESCRIPTION("The V4L2 driver for Atmel Linux");
> diff --git a/drivers/media/platform/soc_camera/mx1_camera.c b/drivers/media/platform/soc_camera/mx1_camera.c
> index 25b2a28..4389f43 100644
> --- a/drivers/media/platform/soc_camera/mx1_camera.c
> +++ b/drivers/media/platform/soc_camera/mx1_camera.c
> @@ -859,18 +859,7 @@ static struct platform_driver mx1_camera_driver = {
> .remove = __exit_p(mx1_camera_remove),
> };
>
> -static int __init mx1_camera_init(void)
> -{
> - return platform_driver_probe(&mx1_camera_driver, mx1_camera_probe);
> -}
> -
> -static void __exit mx1_camera_exit(void)
> -{
> - return platform_driver_unregister(&mx1_camera_driver);
> -}
> -
> -module_init(mx1_camera_init);
> -module_exit(mx1_camera_exit);
> +module_platform_driver_probe(mx1_camera_driver, mx1_camera_probe);
>
> MODULE_DESCRIPTION("i.MX1/i.MXL SoC Camera Host driver");
> MODULE_AUTHOR("Paulius Zaleckas <[email protected]>");
> --
> 1.8.1.5
>

---
Guennadi Liakhovetski, Ph.D.
Freelance Open-Source Software Developer
http://www.open-technology.de/

2013-03-14 13:58:29

by Arnd Bergmann

[permalink] [raw]
Subject: Re: [PATCH 10/10] drivers: misc: use module_platform_driver_probe()

On Thursday 14 March 2013, Fabio Porcedda wrote:
> This patch converts the drivers to use the
> module_platform_driver_probe() macro which makes the code smaller and
> a bit simpler.
>
> Signed-off-by: Fabio Porcedda <[email protected]>
> Cc: Greg Kroah-Hartman <[email protected]>
> Cc: Arnd Bergmann <[email protected]>
> ---
> drivers/misc/atmel_pwm.c | 12 +-----------
> drivers/misc/ep93xx_pwm.c | 13 +------------
> 2 files changed, 2 insertions(+), 23 deletions(-)

The patch itself seems fine, but there are two issues around it:

* The PWM drivers should really get moved to drivers/pwm and converted to the new
PWM subsystem. I don't know if Hartley or Hans-Christian have plans to do
that already.

* Regarding the use of module_platform_driver_probe, I'm a little worried about
the interactions with deferred probing. I don't think there are any regressions,
but we should probably make people aware that one cannot return -EPROBE_DEFER
from a platform_driver_probe function.

Arnd

2013-03-14 14:01:32

by Guenter Roeck

[permalink] [raw]
Subject: Re: [PATCH 04/10] drivers: hwmon: use module_platform_driver_probe()

On Thu, Mar 14, 2013 at 02:11:25PM +0100, Fabio Porcedda wrote:
> This patch converts the drivers to use the
> module_platform_driver_probe() macro which makes the code smaller and
> a bit simpler.
>
> Signed-off-by: Fabio Porcedda <[email protected]>
> Cc: Greg Kroah-Hartman <[email protected]>
> Cc: Jean Delvare <[email protected]>
> Cc: Guenter Roeck <[email protected]>
> Cc: [email protected]
> ---
> drivers/hwmon/mc13783-adc.c | 13 +------------
> 1 file changed, 1 insertion(+), 12 deletions(-)
>
I have that one already queued for -next, submitted by Jingoo Han.

Thanks,
Guenter

2013-03-14 14:06:50

by Sascha Hauer

[permalink] [raw]
Subject: Re: [PATCH 10/10] drivers: misc: use module_platform_driver_probe()

On Thu, Mar 14, 2013 at 01:58:05PM +0000, Arnd Bergmann wrote:
> On Thursday 14 March 2013, Fabio Porcedda wrote:
> > This patch converts the drivers to use the
> > module_platform_driver_probe() macro which makes the code smaller and
> > a bit simpler.
> >
> > Signed-off-by: Fabio Porcedda <[email protected]>
> > Cc: Greg Kroah-Hartman <[email protected]>
> > Cc: Arnd Bergmann <[email protected]>
> > ---
> > drivers/misc/atmel_pwm.c | 12 +-----------
> > drivers/misc/ep93xx_pwm.c | 13 +------------
> > 2 files changed, 2 insertions(+), 23 deletions(-)
>
> The patch itself seems fine, but there are two issues around it:
>
> * The PWM drivers should really get moved to drivers/pwm and converted to the new
> PWM subsystem. I don't know if Hartley or Hans-Christian have plans to do
> that already.
>
> * Regarding the use of module_platform_driver_probe, I'm a little worried about
> the interactions with deferred probing. I don't think there are any regressions,
> but we should probably make people aware that one cannot return -EPROBE_DEFER
> from a platform_driver_probe function.

I'm worried about this aswell. I think platform_driver_probe shouldn't
be used anymore. Even if a driver does not explicitly make use of
-EPROBE_DEFER, it leaks in very quickly if a driver for example uses a
regulator and just returns the error value from regulator_get.

Sascha

--
Pengutronix e.K. | |
Industrial Linux Solutions | http://www.pengutronix.de/ |
Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0 |
Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 |

2013-03-14 16:41:22

by Fabio Porcedda

[permalink] [raw]
Subject: Re: [PATCH 01/10] drivers: media: use module_platform_driver_probe()

On Thu, Mar 14, 2013 at 2:25 PM, Guennadi Liakhovetski
<[email protected]> wrote:
> Hi Fabio
>
> On Thu, 14 Mar 2013, Fabio Porcedda wrote:
>
>> This patch converts the drivers to use the
>> module_platform_driver_probe() macro which makes the code smaller and
>> a bit simpler.
>>
>> Signed-off-by: Fabio Porcedda <[email protected]>
>> Cc: Greg Kroah-Hartman <[email protected]>
>> Cc: Mauro Carvalho Chehab <[email protected]>
>> Cc: Josh Wu <[email protected]>
>> Cc: Guennadi Liakhovetski <[email protected]>
>> Cc: Hans Verkuil <[email protected]>
>> Cc: [email protected]
>
> Thanks for the patch. Subtracting this series
> http://thread.gmane.org/gmane.linux.drivers.video-input-infrastructure/61403
> you only need to convert atmel-isi.c. Please, respin.

Ok, I'll send a updated one.

Thanks for the reviewing the patch.

Best regards
Fabio Porcedda

> Thanks
> Guennadi
>
>> ---
>> drivers/media/platform/sh_vou.c | 13 +------------
>> drivers/media/platform/soc_camera/atmel-isi.c | 12 +-----------
>> drivers/media/platform/soc_camera/mx1_camera.c | 13 +------------
>> 3 files changed, 3 insertions(+), 35 deletions(-)
>>
>> diff --git a/drivers/media/platform/sh_vou.c b/drivers/media/platform/sh_vou.c
>> index 66c8da1..d853162 100644
>> --- a/drivers/media/platform/sh_vou.c
>> +++ b/drivers/media/platform/sh_vou.c
>> @@ -1485,18 +1485,7 @@ static struct platform_driver __refdata sh_vou = {
>> },
>> };
>>
>> -static int __init sh_vou_init(void)
>> -{
>> - return platform_driver_probe(&sh_vou, sh_vou_probe);
>> -}
>> -
>> -static void __exit sh_vou_exit(void)
>> -{
>> - platform_driver_unregister(&sh_vou);
>> -}
>> -
>> -module_init(sh_vou_init);
>> -module_exit(sh_vou_exit);
>> +module_platform_driver_probe(sh_vou, sh_vou_probe);
>>
>> MODULE_DESCRIPTION("SuperH VOU driver");
>> MODULE_AUTHOR("Guennadi Liakhovetski <[email protected]>");
>> diff --git a/drivers/media/platform/soc_camera/atmel-isi.c b/drivers/media/platform/soc_camera/atmel-isi.c
>> index 82dbf99..12ba31d 100644
>> --- a/drivers/media/platform/soc_camera/atmel-isi.c
>> +++ b/drivers/media/platform/soc_camera/atmel-isi.c
>> @@ -1081,17 +1081,7 @@ static struct platform_driver atmel_isi_driver = {
>> },
>> };
>>
>> -static int __init atmel_isi_init_module(void)
>> -{
>> - return platform_driver_probe(&atmel_isi_driver, &atmel_isi_probe);
>> -}
>> -
>> -static void __exit atmel_isi_exit(void)
>> -{
>> - platform_driver_unregister(&atmel_isi_driver);
>> -}
>> -module_init(atmel_isi_init_module);
>> -module_exit(atmel_isi_exit);
>> +module_platform_driver_probe(atmel_isi_driver, atmel_isi_probe);
>>
>> MODULE_AUTHOR("Josh Wu <[email protected]>");
>> MODULE_DESCRIPTION("The V4L2 driver for Atmel Linux");
>> diff --git a/drivers/media/platform/soc_camera/mx1_camera.c b/drivers/media/platform/soc_camera/mx1_camera.c
>> index 25b2a28..4389f43 100644
>> --- a/drivers/media/platform/soc_camera/mx1_camera.c
>> +++ b/drivers/media/platform/soc_camera/mx1_camera.c
>> @@ -859,18 +859,7 @@ static struct platform_driver mx1_camera_driver = {
>> .remove = __exit_p(mx1_camera_remove),
>> };
>>
>> -static int __init mx1_camera_init(void)
>> -{
>> - return platform_driver_probe(&mx1_camera_driver, mx1_camera_probe);
>> -}
>> -
>> -static void __exit mx1_camera_exit(void)
>> -{
>> - return platform_driver_unregister(&mx1_camera_driver);
>> -}
>> -
>> -module_init(mx1_camera_init);
>> -module_exit(mx1_camera_exit);
>> +module_platform_driver_probe(mx1_camera_driver, mx1_camera_probe);
>>
>> MODULE_DESCRIPTION("i.MX1/i.MXL SoC Camera Host driver");
>> MODULE_AUTHOR("Paulius Zaleckas <[email protected]>");
>> --
>> 1.8.1.5
>>
>
> ---
> Guennadi Liakhovetski, Ph.D.
> Freelance Open-Source Software Developer
> http://www.open-technology.de/



--
Fabio Porcedda

2013-03-14 16:43:08

by Fabio Porcedda

[permalink] [raw]
Subject: Re: [PATCH 04/10] drivers: hwmon: use module_platform_driver_probe()

On Thu, Mar 14, 2013 at 3:01 PM, Guenter Roeck <[email protected]> wrote:
> On Thu, Mar 14, 2013 at 02:11:25PM +0100, Fabio Porcedda wrote:
>> This patch converts the drivers to use the
>> module_platform_driver_probe() macro which makes the code smaller and
>> a bit simpler.
>>
>> Signed-off-by: Fabio Porcedda <[email protected]>
>> Cc: Greg Kroah-Hartman <[email protected]>
>> Cc: Jean Delvare <[email protected]>
>> Cc: Guenter Roeck <[email protected]>
>> Cc: [email protected]
>> ---
>> drivers/hwmon/mc13783-adc.c | 13 +------------
>> 1 file changed, 1 insertion(+), 12 deletions(-)
>>
> I have that one already queued for -next, submitted by Jingoo Han.

Ok i will drop this patch.

Best regards
Fabio Porcedda

> Thanks,
> Guenter

2013-03-15 11:19:17

by Fabio Porcedda

[permalink] [raw]
Subject: Re: [PATCH 10/10] drivers: misc: use module_platform_driver_probe()

On Thu, Mar 14, 2013 at 3:06 PM, Sascha Hauer <[email protected]> wrote:
> On Thu, Mar 14, 2013 at 01:58:05PM +0000, Arnd Bergmann wrote:
>> On Thursday 14 March 2013, Fabio Porcedda wrote:
>> > This patch converts the drivers to use the
>> > module_platform_driver_probe() macro which makes the code smaller and
>> > a bit simpler.
>> >
>> > Signed-off-by: Fabio Porcedda <[email protected]>
>> > Cc: Greg Kroah-Hartman <[email protected]>
>> > Cc: Arnd Bergmann <[email protected]>
>> > ---
>> > drivers/misc/atmel_pwm.c | 12 +-----------
>> > drivers/misc/ep93xx_pwm.c | 13 +------------
>> > 2 files changed, 2 insertions(+), 23 deletions(-)
>>
>> The patch itself seems fine, but there are two issues around it:
>>
>> * The PWM drivers should really get moved to drivers/pwm and converted to the new
>> PWM subsystem. I don't know if Hartley or Hans-Christian have plans to do
>> that already.
>>
>> * Regarding the use of module_platform_driver_probe, I'm a little worried about
>> the interactions with deferred probing. I don't think there are any regressions,
>> but we should probably make people aware that one cannot return -EPROBE_DEFER
>> from a platform_driver_probe function.

The use of module_platform_driver_probe() doesn't change anything about that,
it's exactly the same thing as using "return platform_driver_probe()".
I'm right or I'm missing something? Maybe are you just speaking about
the misuse of "platform_driver_probe"?

Best regards
Fabio Porcedda

>
> I'm worried about this aswell. I think platform_driver_probe shouldn't
> be used anymore. Even if a driver does not explicitly make use of
> -EPROBE_DEFER, it leaks in very quickly if a driver for example uses a
> regulator and just returns the error value from regulator_get.

> Sascha
>
> --
> Pengutronix e.K. | |
> Industrial Linux Solutions | http://www.pengutronix.de/ |
> Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0 |
> Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 |

2013-03-15 11:29:40

by Arnd Bergmann

[permalink] [raw]
Subject: Re: [PATCH 10/10] drivers: misc: use module_platform_driver_probe()

On Friday 15 March 2013, Fabio Porcedda wrote:
> >> * Regarding the use of module_platform_driver_probe, I'm a little worried about
> >> the interactions with deferred probing. I don't think there are any regressions,
> >> but we should probably make people aware that one cannot return -EPROBE_DEFER
> >> from a platform_driver_probe function.
>
> The use of module_platform_driver_probe() doesn't change anything about that,
> it's exactly the same thing as using "return platform_driver_probe()".
> I'm right or I'm missing something? Maybe are you just speaking about
> the misuse of "platform_driver_probe"?

Yes, that was what I meant. The point is that if we need to review or remove
all uses of platform_driver_probe, it would be better not to introduce a
module_platform_driver_probe() interface to make it easier to use.

Arnd

2013-03-15 17:44:09

by Hartley Sweeten

[permalink] [raw]
Subject: RE: [PATCH 10/10] drivers: misc: use module_platform_driver_probe()

On Thursday, March 14, 2013 6:58 AM, Arnd Bergmann wrote:
> On Thursday 14 March 2013, Fabio Porcedda wrote:
>> This patch converts the drivers to use the
>> module_platform_driver_probe() macro which makes the code smaller and
>> a bit simpler.
>>
>> Signed-off-by: Fabio Porcedda <[email protected]>
>> Cc: Greg Kroah-Hartman <[email protected]>
>> Cc: Arnd Bergmann <[email protected]>
>> ---
>> drivers/misc/atmel_pwm.c | 12 +-----------
>> drivers/misc/ep93xx_pwm.c | 13 +------------
>> 2 files changed, 2 insertions(+), 23 deletions(-)
>
> The patch itself seems fine, but there are two issues around it:
>
> * The PWM drivers should really get moved to drivers/pwm and converted to the new
> PWM subsystem. I don't know if Hartley or Hans-Christian have plans to do
> that already.

Arnd,

Ill look at converting the ep93xx pwm driver to the PWM subsystem. The only issue is
the current driver exposes a sysfs interface that I think is not available in that subsystem.

>* Regarding the use of module_platform_driver_probe, I'm a little worried about
> the interactions with deferred probing. I don't think there are any regressions,
> but we should probably make people aware that one cannot return -EPROBE_DEFER
> from a platform_driver_probe function.

The ep93xx pwm driver does not need to use platform_driver_probe(). It can be changed
to use module_platform_driver() by just moving the .probe to the platform_driver. This
driver was added before module_platform_driver() was available and I used the
platform_driver_probe() thinking it would save a couple lines of code.

I'll change this in a bit. Right now I'm trying to work out why kernel 3.8 is not booting
on the ep93xx. I had 3.6.6 on my development board and 3.7 works fine but 3.8 hangs
without uncompressing the kernel.

Regards,
Hartley


2013-03-15 18:09:43

by Fabio Porcedda

[permalink] [raw]
Subject: Re: [PATCH 10/10] drivers: misc: use module_platform_driver_probe()

On Fri, Mar 15, 2013 at 12:28 PM, Arnd Bergmann <[email protected]> wrote:
> On Friday 15 March 2013, Fabio Porcedda wrote:
>> >> * Regarding the use of module_platform_driver_probe, I'm a little worried about
>> >> the interactions with deferred probing. I don't think there are any regressions,
>> >> but we should probably make people aware that one cannot return -EPROBE_DEFER
>> >> from a platform_driver_probe function.
>>
>> The use of module_platform_driver_probe() doesn't change anything about that,
>> it's exactly the same thing as using "return platform_driver_probe()".
>> I'm right or I'm missing something? Maybe are you just speaking about
>> the misuse of "platform_driver_probe"?
>
> Yes, that was what I meant. The point is that if we need to review or remove
> all uses of platform_driver_probe, it would be better not to introduce a
> module_platform_driver_probe() interface to make it easier to use.

Just to let you know, the module_platform_driver_probe() macro is
already in v3.9-rc1 and is already used by some drivers.
In linux-next there are already many patches that use that macro.

Best regards
--
Fabio Porcedda

2013-03-15 20:19:03

by Arnd Bergmann

[permalink] [raw]
Subject: Re: [PATCH 10/10] drivers: misc: use module_platform_driver_probe()

On Friday 15 March 2013, H Hartley Sweeten wrote:
> Arnd,
>
> Ill look at converting the ep93xx pwm driver to the PWM subsystem. The only issue is
> the current driver exposes a sysfs interface that I think is not available in that subsystem.

You can probably keep providing that interface if you have active users.

> >* Regarding the use of module_platform_driver_probe, I'm a little worried about
> > the interactions with deferred probing. I don't think there are any regressions,
> > but we should probably make people aware that one cannot return -EPROBE_DEFER
> > from a platform_driver_probe function.
>
> The ep93xx pwm driver does not need to use platform_driver_probe(). It can be changed
> to use module_platform_driver() by just moving the .probe to the platform_driver. This
> driver was added before module_platform_driver() was available and I used the
> platform_driver_probe() thinking it would save a couple lines of code.
>
> I'll change this in a bit. Right now I'm trying to work out why kernel 3.8 is not booting
> on the ep93xx. I had 3.6.6 on my development board and 3.7 works fine but 3.8 hangs
> without uncompressing the kernel.

Ok, thanks!

Arnd

2013-03-18 10:03:42

by Fabio Porcedda

[permalink] [raw]
Subject: Re: [PATCH 10/10] drivers: misc: use module_platform_driver_probe()

On Fri, Mar 15, 2013 at 9:18 PM, Arnd Bergmann <[email protected]> wrote:
> On Friday 15 March 2013, H Hartley Sweeten wrote:
>> Arnd,
>>
>> Ill look at converting the ep93xx pwm driver to the PWM subsystem. The only issue is
>> the current driver exposes a sysfs interface that I think is not available in that subsystem.
>
> You can probably keep providing that interface if you have active users.
>
>> >* Regarding the use of module_platform_driver_probe, I'm a little worried about
>> > the interactions with deferred probing. I don't think there are any regressions,
>> > but we should probably make people aware that one cannot return -EPROBE_DEFER
>> > from a platform_driver_probe function.
>>
>> The ep93xx pwm driver does not need to use platform_driver_probe(). It can be changed
>> to use module_platform_driver() by just moving the .probe to the platform_driver. This
>> driver was added before module_platform_driver() was available and I used the
>> platform_driver_probe() thinking it would save a couple lines of code.

Since by using platform_driver_probe() the function
ep93xx_pwm_probe() is freed after initialization,
is better to use module_platform_drive_probe().
IMHO i don't see any good reason to use module_platform_driver() for
this driver.

Best regards
Fabio Porcedda

>> I'll change this in a bit. Right now I'm trying to work out why kernel 3.8 is not booting
>> on the ep93xx. I had 3.6.6 on my development board and 3.7 works fine but 3.8 hangs
>> without uncompressing the kernel.
>
> Ok, thanks!
>
> Arnd

2013-03-18 11:00:03

by Arnd Bergmann

[permalink] [raw]
Subject: Re: [PATCH 10/10] drivers: misc: use module_platform_driver_probe()

On Monday 18 March 2013, Fabio Porcedda wrote:
> Since by using platform_driver_probe() the function
> ep93xx_pwm_probe() is freed after initialization,
> is better to use module_platform_drive_probe().
> IMHO i don't see any good reason to use module_platform_driver() for
> this driver.

As I commented earlier, the platform_driver_probe() and
module_platform_drive_probe() interfaces are rather dangerous in combination
with deferred probing, I would much prefer Harley's patch.

Arnd

2013-03-18 11:20:31

by Fabio Porcedda

[permalink] [raw]
Subject: Re: [PATCH 10/10] drivers: misc: use module_platform_driver_probe()

On Mon, Mar 18, 2013 at 11:58 AM, Arnd Bergmann <[email protected]> wrote:
> On Monday 18 March 2013, Fabio Porcedda wrote:
>> Since by using platform_driver_probe() the function
>> ep93xx_pwm_probe() is freed after initialization,
>> is better to use module_platform_drive_probe().
>> IMHO i don't see any good reason to use module_platform_driver() for
>> this driver.
>
> As I commented earlier, the platform_driver_probe() and
> module_platform_drive_probe() interfaces are rather dangerous in combination
> with deferred probing, I would much prefer Harley's patch.

Since those drivers don't use -EPROBE_DEFER i was thinking that they don't use
deferred probing.
I'm missing something?

Best regards
Fabio Porcedda

> Arnd

2013-03-18 11:29:03

by Arnd Bergmann

[permalink] [raw]
Subject: Re: [PATCH 10/10] drivers: misc: use module_platform_driver_probe()

On Monday 18 March 2013, Fabio Porcedda wrote:
>
> On Mon, Mar 18, 2013 at 11:58 AM, Arnd Bergmann <[email protected]> wrote:
> > On Monday 18 March 2013, Fabio Porcedda wrote:
> >> Since by using platform_driver_probe() the function
> >> ep93xx_pwm_probe() is freed after initialization,
> >> is better to use module_platform_drive_probe().
> >> IMHO i don't see any good reason to use module_platform_driver() for
> >> this driver.
> >
> > As I commented earlier, the platform_driver_probe() and
> > module_platform_drive_probe() interfaces are rather dangerous in combination
> > with deferred probing, I would much prefer Harley's patch.
>
> Since those drivers don't use -EPROBE_DEFER i was thinking that they don't use
> deferred probing.
> I'm missing something?

clk_get() may return -EPROBE_DEFER after ep93xx is converted to use the
common clk API. We currently return the value of clk_get from the probe()
function, which will automatically do the right thing as long as the probe
function remains reachable.

Arnd

2013-03-19 08:55:41

by Fabio Porcedda

[permalink] [raw]
Subject: Re: [PATCH 10/10] drivers: misc: use module_platform_driver_probe()

On Mon, Mar 18, 2013 at 12:28 PM, Arnd Bergmann <[email protected]> wrote:
> On Monday 18 March 2013, Fabio Porcedda wrote:
>>
>> On Mon, Mar 18, 2013 at 11:58 AM, Arnd Bergmann <[email protected]> wrote:
>> > On Monday 18 March 2013, Fabio Porcedda wrote:
>> >> Since by using platform_driver_probe() the function
>> >> ep93xx_pwm_probe() is freed after initialization,
>> >> is better to use module_platform_drive_probe().
>> >> IMHO i don't see any good reason to use module_platform_driver() for
>> >> this driver.
>> >
>> > As I commented earlier, the platform_driver_probe() and
>> > module_platform_drive_probe() interfaces are rather dangerous in combination
>> > with deferred probing, I would much prefer Harley's patch.
>>
>> Since those drivers don't use -EPROBE_DEFER i was thinking that they don't use
>> deferred probing.
>> I'm missing something?
>
> clk_get() may return -EPROBE_DEFER after ep93xx is converted to use the
> common clk API. We currently return the value of clk_get from the probe()
> function, which will automatically do the right thing as long as the probe
> function remains reachable.

Thanks for the explanation.

Regards
Fabio Porcedda

> Arnd

2013-03-19 09:04:36

by Geert Uytterhoeven

[permalink] [raw]
Subject: Re: [PATCH 10/10] drivers: misc: use module_platform_driver_probe()

On Tue, Mar 19, 2013 at 9:55 AM, Fabio Porcedda
<[email protected]> wrote:
> On Mon, Mar 18, 2013 at 12:28 PM, Arnd Bergmann <[email protected]> wrote:
>> On Monday 18 March 2013, Fabio Porcedda wrote:
>>> On Mon, Mar 18, 2013 at 11:58 AM, Arnd Bergmann <[email protected]> wrote:
>>> > On Monday 18 March 2013, Fabio Porcedda wrote:
>>> >> Since by using platform_driver_probe() the function
>>> >> ep93xx_pwm_probe() is freed after initialization,
>>> >> is better to use module_platform_drive_probe().
>>> >> IMHO i don't see any good reason to use module_platform_driver() for
>>> >> this driver.
>>> >
>>> > As I commented earlier, the platform_driver_probe() and
>>> > module_platform_drive_probe() interfaces are rather dangerous in combination
>>> > with deferred probing, I would much prefer Harley's patch.
>>>
>>> Since those drivers don't use -EPROBE_DEFER i was thinking that they don't use
>>> deferred probing.
>>> I'm missing something?
>>
>> clk_get() may return -EPROBE_DEFER after ep93xx is converted to use the
>> common clk API. We currently return the value of clk_get from the probe()
>> function, which will automatically do the right thing as long as the probe
>> function remains reachable.
>
> Thanks for the explanation.

Hmm, so we may have drivers that (now) work perfectly fine with
module_platform_driver_probe()/platform_driver_probe(), but will start
failing suddenly in the future?

I guess we need a big fat WARN_ON(-EPROBE_DEFER) in
platform_driver_probe() to catch these?

Gr{oetje,eeting}s,

Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- [email protected]

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds

2013-03-19 16:48:44

by Arnd Bergmann

[permalink] [raw]
Subject: Re: [PATCH 10/10] drivers: misc: use module_platform_driver_probe()

On Tuesday 19 March 2013, Geert Uytterhoeven wrote:
> Hmm, so we may have drivers that (now) work perfectly fine with
> module_platform_driver_probe()/platform_driver_probe(), but will start
> failing suddenly in the future?

They will fail if someone changes the initialization order. That would
already break drivers before deferred probing support (and was the reason
we added feature in the first place), but now we can be much more liberal
with the order in which drivers are initialized, except when they are
using platform_driver_probe()

> I guess we need a big fat WARN_ON(-EPROBE_DEFER) in
> platform_driver_probe() to catch these?

Yes, very good idea.

Arnd

2013-03-19 17:11:36

by Fabio Porcedda

[permalink] [raw]
Subject: Re: [PATCH 10/10] drivers: misc: use module_platform_driver_probe()

On Tue, Mar 19, 2013 at 5:48 PM, Arnd Bergmann <[email protected]> wrote:
> On Tuesday 19 March 2013, Geert Uytterhoeven wrote:
>> Hmm, so we may have drivers that (now) work perfectly fine with
>> module_platform_driver_probe()/platform_driver_probe(), but will start
>> failing suddenly in the future?
>
> They will fail if someone changes the initialization order. That would
> already break drivers before deferred probing support (and was the reason
> we added feature in the first place), but now we can be much more liberal
> with the order in which drivers are initialized, except when they are
> using platform_driver_probe()
>
>> I guess we need a big fat WARN_ON(-EPROBE_DEFER) in
>> platform_driver_probe() to catch these?
>
> Yes, very good idea.
>
> Arnd

If it's fine, I'll send a patch for that.

Regards
--
Fabio Porcedda

2013-03-19 18:00:18

by Arnd Bergmann

[permalink] [raw]
Subject: Re: [PATCH 10/10] drivers: misc: use module_platform_driver_probe()

On Tuesday 19 March 2013, Fabio Porcedda wrote:
> On Tue, Mar 19, 2013 at 5:48 PM, Arnd Bergmann <[email protected]> wrote:
> > On Tuesday 19 March 2013, Geert Uytterhoeven wrote:
> >> Hmm, so we may have drivers that (now) work perfectly fine with
> >> module_platform_driver_probe()/platform_driver_probe(), but will start
> >> failing suddenly in the future?
> >
> > They will fail if someone changes the initialization order. That would
> > already break drivers before deferred probing support (and was the reason
> > we added feature in the first place), but now we can be much more liberal
> > with the order in which drivers are initialized, except when they are
> > using platform_driver_probe()
> >
> >> I guess we need a big fat WARN_ON(-EPROBE_DEFER) in
> >> platform_driver_probe() to catch these?
> >
> > Yes, very good idea.
>
> If it's fine, I'll send a patch for that.

That would be cool, yes. I looked at it earlier (after sending my email above)
and couldn't find an easy way to do it though, because platform_drv_probe
does not know whether it is called from platform_driver_probe or not.

Maybe using something other than platform_driver_register would work here.

Arnd

2013-03-20 09:02:48

by Fabio Porcedda

[permalink] [raw]
Subject: Re: [PATCH 10/10] drivers: misc: use module_platform_driver_probe()

On Tue, Mar 19, 2013 at 6:59 PM, Arnd Bergmann <[email protected]> wrote:
> On Tuesday 19 March 2013, Fabio Porcedda wrote:
>> On Tue, Mar 19, 2013 at 5:48 PM, Arnd Bergmann <[email protected]> wrote:
>> > On Tuesday 19 March 2013, Geert Uytterhoeven wrote:
>> >> Hmm, so we may have drivers that (now) work perfectly fine with
>> >> module_platform_driver_probe()/platform_driver_probe(), but will start
>> >> failing suddenly in the future?
>> >
>> > They will fail if someone changes the initialization order. That would
>> > already break drivers before deferred probing support (and was the reason
>> > we added feature in the first place), but now we can be much more liberal
>> > with the order in which drivers are initialized, except when they are
>> > using platform_driver_probe()
>> >
>> >> I guess we need a big fat WARN_ON(-EPROBE_DEFER) in
>> >> platform_driver_probe() to catch these?
>> >
>> > Yes, very good idea.
>>
>> If it's fine, I'll send a patch for that.
>
> That would be cool, yes. I looked at it earlier (after sending my email above)
> and couldn't find an easy way to do it though, because platform_drv_probe
> does not know whether it is called from platform_driver_probe or not.
>
> Maybe using something other than platform_driver_register would work here.
>
> Arnd

I think we can check inside the deferred_probe_work_func()
if the dev->probe function pointer is equal to platform_drv_probe_fail().

Regards
--
Fabio Porcedda

2013-03-20 10:20:34

by Arnd Bergmann

[permalink] [raw]
Subject: Re: [PATCH 10/10] drivers: misc: use module_platform_driver_probe()

On Wednesday 20 March 2013, Fabio Porcedda wrote:
> I think we can check inside the deferred_probe_work_func()
> if the dev->probe function pointer is equal to platform_drv_probe_fail().

I think it's too late by then, because that would only warn if we try to probe
it again, but when platform_driver_probe() does not succeed immediately, it
unregisters the driver again, so we never get there.

Arnd

2013-03-20 10:40:02

by Fabio Porcedda

[permalink] [raw]
Subject: Re: [PATCH 10/10] drivers: misc: use module_platform_driver_probe()

On Wed, Mar 20, 2013 at 11:20 AM, Arnd Bergmann <[email protected]> wrote:
> On Wednesday 20 March 2013, Fabio Porcedda wrote:
>> I think we can check inside the deferred_probe_work_func()
>> if the dev->probe function pointer is equal to platform_drv_probe_fail().
>
> I think it's too late by then, because that would only warn if we try to probe
> it again, but when platform_driver_probe() does not succeed immediately, it

Maybe you mean "does succeed immediately" ?

> unregisters the driver again, so we never get there.

--
Fabio Porcedda

2013-03-20 11:46:48

by Arnd Bergmann

[permalink] [raw]
Subject: Re: [PATCH 10/10] drivers: misc: use module_platform_driver_probe()

On Wednesday 20 March 2013, Fabio Porcedda wrote:
>
> On Wed, Mar 20, 2013 at 11:20 AM, Arnd Bergmann <[email protected]> wrote:
> > On Wednesday 20 March 2013, Fabio Porcedda wrote:
> >> I think we can check inside the deferred_probe_work_func()
> >> if the dev->probe function pointer is equal to platform_drv_probe_fail().
> >
> > I think it's too late by then, because that would only warn if we try to probe
> > it again, but when platform_driver_probe() does not succeed immediately, it
>
> Maybe you mean "does succeed immediately" ?

I mean in this code (simplified for the sake of discussion)

int __init_or_module platform_driver_probe(struct platform_driver *drv,
int (*probe)(struct platform_device *))
{
int retval, code;

drv->probe = probe;
retval = code = platform_driver_register(drv);

drv->probe = NULL;
if (code == 0 && list_empty(&drv->driver.p->klist_devices.k_list))
retval = -ENODEV;
drv->driver.probe = platform_drv_probe_fail;

if (code != retval)
platform_driver_unregister(drv);
return retval;
}

we assume that all devices are bound to drivers during the call to
platform_driver_register, and if the device list is empty afterwards,
we unregister the driver and will never get to the deferred probing
stage.

Arnd

2013-03-21 13:10:40

by Fabio Porcedda

[permalink] [raw]
Subject: Re: [PATCH 10/10] drivers: misc: use module_platform_driver_probe()

On Wed, Mar 20, 2013 at 12:46 PM, Arnd Bergmann <[email protected]> wrote:
> On Wednesday 20 March 2013, Fabio Porcedda wrote:
>>
>> On Wed, Mar 20, 2013 at 11:20 AM, Arnd Bergmann <[email protected]> wrote:
>> > On Wednesday 20 March 2013, Fabio Porcedda wrote:
>> >> I think we can check inside the deferred_probe_work_func()
>> >> if the dev->probe function pointer is equal to platform_drv_probe_fail().
>> >
>> > I think it's too late by then, because that would only warn if we try to probe
>> > it again, but when platform_driver_probe() does not succeed immediately, it
>>
>> Maybe you mean "does succeed immediately" ?
>
> I mean in this code (simplified for the sake of discussion)
>
> int __init_or_module platform_driver_probe(struct platform_driver *drv,
> int (*probe)(struct platform_device *))
> {
> int retval, code;
>
> drv->probe = probe;
> retval = code = platform_driver_register(drv);
>
> drv->probe = NULL;
> if (code == 0 && list_empty(&drv->driver.p->klist_devices.k_list))
> retval = -ENODEV;
> drv->driver.probe = platform_drv_probe_fail;
>
> if (code != retval)
> platform_driver_unregister(drv);
> return retval;
> }
>
> we assume that all devices are bound to drivers during the call to
> platform_driver_register, and if the device list is empty afterwards,
> we unregister the driver and will never get to the deferred probing
> stage.

Thanks for the explanation, I understand now that is not that simple.

I was hoping it was easier.

Regards
--
Fabio Porcedda

2013-04-09 08:07:09

by Samuel Ortiz

[permalink] [raw]
Subject: Re: [PATCH 08/10] drivers: mfd: use module_platform_driver_probe()

Hi Fabio,

On Thu, Mar 14, 2013 at 02:11:29PM +0100, Fabio Porcedda wrote:
> This patch converts the drivers to use the
> module_platform_driver_probe() macro which makes the code smaller and
> a bit simpler.
>
> Signed-off-by: Fabio Porcedda <[email protected]>
> Cc: Greg Kroah-Hartman <[email protected]>
> Cc: Linus Walleij <[email protected]>
> Cc: Samuel Ortiz <[email protected]>
> Cc: [email protected]
> ---
> drivers/mfd/davinci_voicecodec.c | 12 +-----------
> drivers/mfd/htc-pasic3.c | 13 +------------
> 2 files changed, 2 insertions(+), 23 deletions(-)
Jingoo Han sent a larger patchset to convert many MFD drivers to
module_platform_driver_probe(), including htc-pasic3 and davinci_voicecodec.

See my mfd-next tree for more details.

Cheers,
Samuel.

--
Intel Open Source Technology Centre
http://oss.intel.com/

2013-04-09 09:23:47

by Fabio Porcedda

[permalink] [raw]
Subject: Re: [PATCH 08/10] drivers: mfd: use module_platform_driver_probe()

On Tue, Apr 9, 2013 at 10:06 AM, Samuel Ortiz <[email protected]> wrote:
> Hi Fabio,
>
> On Thu, Mar 14, 2013 at 02:11:29PM +0100, Fabio Porcedda wrote:
>> This patch converts the drivers to use the
>> module_platform_driver_probe() macro which makes the code smaller and
>> a bit simpler.
>>
>> Signed-off-by: Fabio Porcedda <[email protected]>
>> Cc: Greg Kroah-Hartman <[email protected]>
>> Cc: Linus Walleij <[email protected]>
>> Cc: Samuel Ortiz <[email protected]>
>> Cc: [email protected]
>> ---
>> drivers/mfd/davinci_voicecodec.c | 12 +-----------
>> drivers/mfd/htc-pasic3.c | 13 +------------
>> 2 files changed, 2 insertions(+), 23 deletions(-)
> Jingoo Han sent a larger patchset to convert many MFD drivers to
> module_platform_driver_probe(), including htc-pasic3 and davinci_voicecodec.
>
> See my mfd-next tree for more details.

I understand, thanks for letting me know.

It's my fault for having waited too long to send this patch set.

Best regards
--
Fabio Porcedda

> Cheers,
> Samuel.
>
> --
> Intel Open Source Technology Centre
> http://oss.intel.com/