Skip to content

Commit

Permalink
platform-drivers: move probe to .devinit.text in drivers/video
Browse files Browse the repository at this point in the history
A pointer to a probe callback is passed to the core via
platform_driver_register and so the function must not disappear when the
.init sections are discarded.  Otherwise (if also having HOTPLUG=y)
unbinding and binding a device to the driver via sysfs will result in an
oops as does a device being registered late.

An alternative to this patch is using platform_driver_probe instead of
platform_driver_register plus removing the pointer to the probe function
from the struct platform_driver.

Signed-off-by: Uwe Kleine-König <[email protected]>
Cc: Adrian Bunk <[email protected]>
Cc: Alberto Mardegan <[email protected]>
Cc: Andrew Morton <[email protected]>
Cc: Andriy Skulysh <[email protected]>
Cc: Antonino Daplas <[email protected]>
Cc: Anton Vorontsov <[email protected]>
Cc: Ben Dooks <[email protected]>
Cc: Chandramouli Narayanan <[email protected]>
Cc: Christoph Hellwig <[email protected]>
Cc: Frans Pop <[email protected]>
Cc: Geert Uytterhoeven <[email protected]>
Cc: Greg Kroah-Hartman <[email protected]>
Cc: Helge Deller <[email protected]>
Cc: Huang Ying <[email protected]>
Cc: Ian Molton <[email protected]>
Cc: Joshua Kinard <[email protected]>
Cc: Kaj-Michael Lang <[email protected]>
Cc: Krzysztof Helt <[email protected]>
Cc: [email protected]
Cc: Maciej W. Rozycki <[email protected]>
Cc: Magnus Damm <[email protected]>
Cc: Martin Michlmayr <[email protected]>
Cc: Matthias Kaehlcke <[email protected]>
Cc: Paul Mundt <[email protected]>
Cc: Pavel Machek <[email protected]>
Cc: Philipp Zabel <[email protected]>
Cc: Richard Purdie <[email protected]>
Cc: Roel Kluin <[email protected]>
Cc: Roland Stigge <[email protected]>
Cc: Russell King <[email protected]>
Cc: Thomas Bogendoerfer <[email protected]>
Cc: Vincent Sanders <[email protected]>
Cc: Yoichi Yuasa <[email protected]>
Acked-by: Ralf Baechle <[email protected]>
Acked-by: Arnaud Patard <[email protected]>
Acked-by: James Simmons <[email protected]>
Acked-by: Peter Jones <[email protected]>
Acked-by: Jaya Kumar <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>
  • Loading branch information
Uwe Kleine-König authored and gregkh committed Mar 8, 2010
1 parent 1b07193 commit c2e1303
Show file tree
Hide file tree
Showing 17 changed files with 18 additions and 18 deletions.
2 changes: 1 addition & 1 deletion drivers/video/acornfb.c
Original file line number Diff line number Diff line change
Expand Up @@ -1221,7 +1221,7 @@ free_unused_pages(unsigned int virtual_start, unsigned int virtual_end)
printk("acornfb: freed %dK memory\n", mb_freed);
}

static int __init acornfb_probe(struct platform_device *dev)
static int __devinit acornfb_probe(struct platform_device *dev)
{
unsigned long size;
u_int h_sync, v_sync;
Expand Down
2 changes: 1 addition & 1 deletion drivers/video/arcfb.c
Original file line number Diff line number Diff line change
Expand Up @@ -504,7 +504,7 @@ static struct fb_ops arcfb_ops = {
.fb_ioctl = arcfb_ioctl,
};

static int __init arcfb_probe(struct platform_device *dev)
static int __devinit arcfb_probe(struct platform_device *dev)
{
struct fb_info *info;
int retval = -ENOMEM;
Expand Down
2 changes: 1 addition & 1 deletion drivers/video/cobalt_lcdfb.c
Original file line number Diff line number Diff line change
Expand Up @@ -287,7 +287,7 @@ static struct fb_ops cobalt_lcd_fbops = {
.fb_cursor = cobalt_lcdfb_cursor,
};

static int __init cobalt_lcdfb_probe(struct platform_device *dev)
static int __devinit cobalt_lcdfb_probe(struct platform_device *dev)
{
struct fb_info *info;
struct resource *res;
Expand Down
2 changes: 1 addition & 1 deletion drivers/video/efifb.c
Original file line number Diff line number Diff line change
Expand Up @@ -210,7 +210,7 @@ static int __init efifb_setup(char *options)
return 0;
}

static int __init efifb_probe(struct platform_device *dev)
static int __devinit efifb_probe(struct platform_device *dev)
{
struct fb_info *info;
int err;
Expand Down
2 changes: 1 addition & 1 deletion drivers/video/epson1355fb.c
Original file line number Diff line number Diff line change
Expand Up @@ -602,7 +602,7 @@ static int epson1355fb_remove(struct platform_device *dev)
return 0;
}

int __init epson1355fb_probe(struct platform_device *dev)
int __devinit epson1355fb_probe(struct platform_device *dev)
{
struct epson1355_par *default_par;
struct fb_info *info;
Expand Down
2 changes: 1 addition & 1 deletion drivers/video/gbefb.c
Original file line number Diff line number Diff line change
Expand Up @@ -1128,7 +1128,7 @@ static int __init gbefb_setup(char *options)
return 0;
}

static int __init gbefb_probe(struct platform_device *p_dev)
static int __devinit gbefb_probe(struct platform_device *p_dev)
{
int i, ret = 0;
struct fb_info *info;
Expand Down
2 changes: 1 addition & 1 deletion drivers/video/hgafb.c
Original file line number Diff line number Diff line change
Expand Up @@ -551,7 +551,7 @@ static struct fb_ops hgafb_ops = {
* Initialization
*/

static int __init hgafb_probe(struct platform_device *pdev)
static int __devinit hgafb_probe(struct platform_device *pdev)
{
struct fb_info *info;

Expand Down
2 changes: 1 addition & 1 deletion drivers/video/hitfb.c
Original file line number Diff line number Diff line change
Expand Up @@ -325,7 +325,7 @@ static struct fb_ops hitfb_ops = {
.fb_imageblit = cfb_imageblit,
};

static int __init hitfb_probe(struct platform_device *dev)
static int __devinit hitfb_probe(struct platform_device *dev)
{
unsigned short lcdclor, ldr3, ldvndr;
struct fb_info *info;
Expand Down
2 changes: 1 addition & 1 deletion drivers/video/q40fb.c
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,7 @@ static struct fb_ops q40fb_ops = {
.fb_imageblit = cfb_imageblit,
};

static int __init q40fb_probe(struct platform_device *dev)
static int __devinit q40fb_probe(struct platform_device *dev)
{
struct fb_info *info;

Expand Down
4 changes: 2 additions & 2 deletions drivers/video/s3c2410fb.c
Original file line number Diff line number Diff line change
Expand Up @@ -1004,12 +1004,12 @@ static int __init s3c24xxfb_probe(struct platform_device *pdev,
return ret;
}

static int __init s3c2410fb_probe(struct platform_device *pdev)
static int __devinit s3c2410fb_probe(struct platform_device *pdev)
{
return s3c24xxfb_probe(pdev, DRV_S3C2410);
}

static int __init s3c2412fb_probe(struct platform_device *pdev)
static int __devinit s3c2412fb_probe(struct platform_device *pdev)
{
return s3c24xxfb_probe(pdev, DRV_S3C2412);
}
Expand Down
2 changes: 1 addition & 1 deletion drivers/video/sa1100fb.c
Original file line number Diff line number Diff line change
Expand Up @@ -1435,7 +1435,7 @@ static struct sa1100fb_info * __init sa1100fb_init_fbinfo(struct device *dev)
return fbi;
}

static int __init sa1100fb_probe(struct platform_device *pdev)
static int __devinit sa1100fb_probe(struct platform_device *pdev)
{
struct sa1100fb_info *fbi;
int ret, irq;
Expand Down
2 changes: 1 addition & 1 deletion drivers/video/sgivwfb.c
Original file line number Diff line number Diff line change
Expand Up @@ -745,7 +745,7 @@ int __init sgivwfb_setup(char *options)
/*
* Initialisation
*/
static int __init sgivwfb_probe(struct platform_device *dev)
static int __devinit sgivwfb_probe(struct platform_device *dev)
{
struct sgivw_par *par;
struct fb_info *info;
Expand Down
2 changes: 1 addition & 1 deletion drivers/video/sh_mobile_lcdcfb.c
Original file line number Diff line number Diff line change
Expand Up @@ -943,7 +943,7 @@ static const struct dev_pm_ops sh_mobile_lcdc_dev_pm_ops = {

static int sh_mobile_lcdc_remove(struct platform_device *pdev);

static int __init sh_mobile_lcdc_probe(struct platform_device *pdev)
static int __devinit sh_mobile_lcdc_probe(struct platform_device *pdev)
{
struct fb_info *info;
struct sh_mobile_lcdc_priv *priv;
Expand Down
2 changes: 1 addition & 1 deletion drivers/video/vesafb.c
Original file line number Diff line number Diff line change
Expand Up @@ -226,7 +226,7 @@ static int __init vesafb_setup(char *options)
return 0;
}

static int __init vesafb_probe(struct platform_device *dev)
static int __devinit vesafb_probe(struct platform_device *dev)
{
struct fb_info *info;
int i, err;
Expand Down
2 changes: 1 addition & 1 deletion drivers/video/vfb.c
Original file line number Diff line number Diff line change
Expand Up @@ -479,7 +479,7 @@ static int __init vfb_setup(char *options)
* Initialisation
*/

static int __init vfb_probe(struct platform_device *dev)
static int __devinit vfb_probe(struct platform_device *dev)
{
struct fb_info *info;
int retval = -ENOMEM;
Expand Down
2 changes: 1 addition & 1 deletion drivers/video/vga16fb.c
Original file line number Diff line number Diff line change
Expand Up @@ -1293,7 +1293,7 @@ static int vga16fb_setup(char *options)
}
#endif

static int __init vga16fb_probe(struct platform_device *dev)
static int __devinit vga16fb_probe(struct platform_device *dev)
{
struct fb_info *info;
struct vga16fb_par *par;
Expand Down
2 changes: 1 addition & 1 deletion drivers/video/w100fb.c
Original file line number Diff line number Diff line change
Expand Up @@ -628,7 +628,7 @@ static int w100fb_resume(struct platform_device *dev)
#endif


int __init w100fb_probe(struct platform_device *pdev)
int __devinit w100fb_probe(struct platform_device *pdev)
{
int err = -EIO;
struct w100fb_mach_info *inf;
Expand Down

0 comments on commit c2e1303

Please sign in to comment.