From: Andres Salomon A couple things were wrong here: - a struct in lxfb should've been static. - 'const' and '__initdata' don't mix, so the consts have been dropped - get_modedb() in both drivers should've been marked w/ __init Signed-off-by: Andres Salomon Cc: Jordan Crouse Cc: "Antonino A. Daplas" Signed-off-by: Andrew Morton --- drivers/video/geode/gxfb_core.c | 8 ++++---- drivers/video/geode/lxfb_core.c | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff -puN drivers/video/geode/gxfb_core.c~olpc-gxfb-lxfb-add-dcon-panel-modes-to-framebuffer-drivers-section-fix drivers/video/geode/gxfb_core.c --- a/drivers/video/geode/gxfb_core.c~olpc-gxfb-lxfb-add-dcon-panel-modes-to-framebuffer-drivers-section-fix +++ a/drivers/video/geode/gxfb_core.c @@ -41,7 +41,7 @@ static int vram; static int vt_switch; /* Modes relevant to the GX (taken from modedb.c) */ -static const struct fb_videomode gx_modedb[] __initdata = { +static struct fb_videomode gx_modedb[] __initdata = { /* 640x480-60 VESA */ { NULL, 60, 640, 480, 39682, 48, 16, 33, 10, 96, 2, 0, FB_VMODE_NONINTERLACED, FB_MODE_IS_VESA }, @@ -111,14 +111,14 @@ static const struct fb_videomode gx_mode #ifdef CONFIG_OLPC #include -static const struct fb_videomode gx_dcon_modedb[] __initdata = { +static struct fb_videomode gx_dcon_modedb[] __initdata = { /* 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 get_modedb(struct fb_videomode **modedb, unsigned int *size) +static void __init get_modedb(struct fb_videomode **modedb, unsigned int *size) { if (olpc_has_dcon()) { *modedb = (struct fb_videomode *) gx_dcon_modedb; @@ -130,7 +130,7 @@ static void get_modedb(struct fb_videomo } #else -static void get_modedb(struct fb_videomode **modedb, unsigned int *size) +static void __init get_modedb(struct fb_videomode **modedb, unsigned int *size) { *modedb = (struct fb_videomode *) gx_modedb; *size = ARRAY_SIZE(gx_modedb); diff -puN drivers/video/geode/lxfb_core.c~olpc-gxfb-lxfb-add-dcon-panel-modes-to-framebuffer-drivers-section-fix drivers/video/geode/lxfb_core.c --- a/drivers/video/geode/lxfb_core.c~olpc-gxfb-lxfb-add-dcon-panel-modes-to-framebuffer-drivers-section-fix +++ a/drivers/video/geode/lxfb_core.c @@ -36,7 +36,7 @@ static int vt_switch; * we try to make it something sane - 640x480-60 is sane */ -static const struct fb_videomode geode_modedb[] __initdata = { +static struct fb_videomode geode_modedb[] __initdata = { /* 640x480-60 */ { NULL, 60, 640, 480, 39682, 48, 8, 25, 2, 88, 2, FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT, @@ -220,14 +220,14 @@ static const struct fb_videomode geode_m #ifdef CONFIG_OLPC #include -const struct fb_videomode olpc_dcon_modedb[] __initdata = { +static struct fb_videomode olpc_dcon_modedb[] __initdata = { /* 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 get_modedb(struct fb_videomode **modedb, unsigned int *size) +static void __init get_modedb(struct fb_videomode **modedb, unsigned int *size) { if (olpc_has_dcon()) { *modedb = (struct fb_videomode *) olpc_dcon_modedb; @@ -239,7 +239,7 @@ static void get_modedb(struct fb_videomo } #else -static void get_modedb(struct fb_videomode **modedb, unsigned int *size) +static void __init get_modedb(struct fb_videomode **modedb, unsigned int *size) { *modedb = (struct fb_videomode *) geode_modedb; *size = ARRAY_SIZE(geode_modedb); _