gxfb: fix incorrect __init annotation
PATCH 3/4 gxfb: fix incorrect __init annotation
WARNING: vmlinux.o(.data+0x195d8): Section mismatch in reference from the variable gxfb_driver to the function .init.text:gxfb_probe() The variable gxfb_driver references
the function __init gxfb_probe()
This changes gxfb_probe and friends to use __devinit, and also adds __devexit to gxfb_remove.
Signed-off-by Andres Salomon <[email protected]>
--- drivers/video/geode/gxfb_core.c | 20 ++++++++++++-------- 1 files changed, 12 insertions(+), 8 deletions(-)
drivers/video/geode/gxfb_core.c +12 -8
@@ -40,7 +40,7 @@ static int vram;static int vt_switch;/* Modes relevant to the GX (taken from modedb.c) */ -static struct fb_videomode gx_modedb[]__initdata = { +static struct fb_videomode gx_modedb[]__devinitdata = {/* 640x480-60 VESA */ {NULL ,60 ,640 ,480 ,39682 ,48 ,16 ,33 ,10 ,96 ,2 ,0 ,FB_VMODE_NONINTERLACED ,FB_MODE_IS_VESA },
@@ -110,14 +110,15 @@ static struct fb_videomode gx_modedb[] __initdata = {#ifdef CONFIG_OLPC #include <asm/olpc.h> -static struct fb_videomode gx_dcon_modedb[]__initdata = { +static struct fb_videomode gx_dcon_modedb[]__devinitdata = {/* The only mode the DCON has is 1200x900 */ {NULL ,50 ,1200 ,900 ,17460 ,24 ,8 ,4 ,5 ,8 ,3 ,FB_SYNC_HOR_HIGH_ACT |FB_SYNC_VERT_HIGH_ACT ,FB_VMODE_NONINTERLACED ,0 } }; -static void __init get_modedb (struct fb_videomode **modedb,unsigned int *size) +static void __devinit get_modedb (struct fb_videomode **modedb, +unsigned int *size) {if (olpc_has_dcon ()) { *modedb = (struct fb_videomode *) gx_dcon_modedb;
@@ -129,7 +130,8 @@ static void __init get_modedb(struct fb_videomode **modedb, unsigned int *size) }#else -static void __init get_modedb (struct fb_videomode **modedb,unsigned int *size) +static void __devinit get_modedb (struct fb_videomode **modedb, +unsigned int *size) { *modedb = (struct fb_videomode *) gx_modedb; *size =ARRAY_SIZE (gx_modedb);
@@ -226,7 +228,8 @@ static int gxfb_blank(int blank_mode, struct fb_info *info)return gx_blank_display (info, blank_mode); } -static int __init gxfb_map_video_memory (struct fb_info *info,struct pci_dev *dev) +static int __devinit gxfb_map_video_memory (struct fb_info *info, +struct pci_dev *dev) {struct gxfb_par *par = info->par;int ret;
@@ -290,7 +293,7 @@ static struct fb_ops gxfb_ops = { .fb_imageblit = cfb_imageblit, }; -static struct fb_info *__init gxfb_init_fbinfo (struct device *dev) +static struct fb_info *__devinit gxfb_init_fbinfo (struct device *dev) {struct gxfb_par *par;struct fb_info *info;
@@ -371,7 +374,8 @@ static int gxfb_resume(struct pci_dev *pdev) }#endif -static int __init gxfb_probe (struct pci_dev *pdev,const struct pci_device_id *id) +static int __devinit gxfb_probe (struct pci_dev *pdev, +const struct pci_device_id *id) {struct gxfb_par *par;struct fb_info *info;
@@ -451,7 +455,7 @@ static int __init gxfb_probe(struct pci_dev *pdev, const struct pci_device_id *ireturn ret; } -static void gxfb_remove (struct pci_dev *pdev) +static void __devexit gxfb_remove(struct pci_dev *pdev) {struct fb_info *info =pci_get_drvdata (pdev);struct gxfb_par *par = info->par;
Signature · 1 line
1.5.6.5