Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c2e13037 authored by Uwe Kleine-König's avatar Uwe Kleine-König Committed by Greg Kroah-Hartman
Browse files

platform-drivers: move probe to .devinit.text in drivers/video



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: default avatarUwe Kleine-König <u.kleine-koenig@pengutronix.de>
Cc: Adrian Bunk <bunk@stusta.de>
Cc: Alberto Mardegan <mardy@users.sourceforge.net>
Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: Andriy Skulysh <askulysh@gmail.com>
Cc: Antonino Daplas <adaplas@gmail.com>
Cc: Anton Vorontsov <avorontsov@ru.mvista.com>
Cc: Ben Dooks <ben-linux@fluff.org>
Cc: Chandramouli Narayanan <mouli@linux.intel.com>
Cc: Christoph Hellwig <hch@lst.de>
Cc: Frans Pop <elendil@planet.nl>
Cc: Geert Uytterhoeven <Geert.Uytterhoeven@sonycom.com>
Cc: Greg Kroah-Hartman <gregkh@suse.de>
Cc: Helge Deller <deller@gmx.de>
Cc: Huang Ying <ying.huang@intel.com>
Cc: Ian Molton <spyro@f2s.com>
Cc: Joshua Kinard <kumba@gentoo.org>
Cc: Kaj-Michael Lang <milang@tal.org>
Cc: Krzysztof Helt <krzysztof.h1@poczta.fm>
Cc: linux-fbdev-devel@lists.sourceforge.net
Cc: Maciej W. Rozycki <macro@linux-mips.org>
Cc: Magnus Damm <damm@igel.co.jp>
Cc: Martin Michlmayr <tbm@cyrius.com>
Cc: Matthias Kaehlcke <matthias@kaehlcke.net>
Cc: Paul Mundt <lethal@linux-sh.org>
Cc: Pavel Machek <pavel@suse.cz>
Cc: Philipp Zabel <philipp.zabel@gmail.com>
Cc: Richard Purdie <rpurdie@rpsys.net>
Cc: Roel Kluin <roel.kluin@gmail.com>
Cc: Roland Stigge <stigge@antcom.de>
Cc: Russell King <rmk+kernel@arm.linux.org.uk>
Cc: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
Cc: Vincent Sanders <vince@simtec.co.uk>
Cc: Yoichi Yuasa <yoichi_yuasa@tripeaks.co.jp>
Acked-by: default avatarRalf Baechle <ralf@linux-mips.org>
Acked-by: default avatarArnaud Patard <arnaud.patard@rtp-net.org>
Acked-by: default avatarJames Simmons <jsimmons@infradead.org>
Acked-by: default avatarPeter Jones <pjones@redhat.com>
Acked-by: default avatarJaya Kumar <jayakumar.lkml@gmail.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
parent 1b07193b
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -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;
+1 −1
Original line number Diff line number Diff line
@@ -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;
+1 −1
Original line number Diff line number Diff line
@@ -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;
+1 −1
Original line number Diff line number Diff line
@@ -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;
+1 −1
Original line number Diff line number Diff line
@@ -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;
Loading