diff options
author | Guennadi Liakhovetski <lg@denx.de> | 2008-05-05 10:31:44 -0400 |
---|---|---|
committer | Russell King <rmk+kernel@arm.linux.org.uk> | 2008-05-07 16:47:37 -0400 |
commit | ebdf982aaeb0005d5093b10872adce17ea12f5ba (patch) | |
tree | bc0409178641757878fa62aa69b2dee921e58af2 | |
parent | bdd0f5f06e7647b545bec3ead2fa2a5fcdf0f0f9 (diff) |
[ARM] 5028/1: pxafb: fix broken "backward compatibility way" in framebuffer
configuration
Commit 84f43c308b73a6a12128288721a1007ba4f1a8da "pxafb: introduce register
independent LCD connection type for pxafb" implements compatibility mode
for old style pxafb_mach_info initialization data wrongly, causing the
system to Oops repeatedly - first during probe, then when drawing. Fix it
and make pxafb_decode_mach_info void.
Signed-off-by: Guennadi Liakhovetski <g.liakhovetski@gmx.de>
Acked-by: Eric Miao <eric.miao@marvell.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
-rw-r--r-- | drivers/video/pxafb.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/drivers/video/pxafb.c b/drivers/video/pxafb.c index 3ab6e3d973a1..48aea39c35a5 100644 --- a/drivers/video/pxafb.c +++ b/drivers/video/pxafb.c | |||
@@ -1301,8 +1301,8 @@ static void pxafb_decode_mode_info(struct pxafb_info *fbi, | |||
1301 | } | 1301 | } |
1302 | } | 1302 | } |
1303 | 1303 | ||
1304 | static int pxafb_decode_mach_info(struct pxafb_info *fbi, | 1304 | static void pxafb_decode_mach_info(struct pxafb_info *fbi, |
1305 | struct pxafb_mach_info *inf) | 1305 | struct pxafb_mach_info *inf) |
1306 | { | 1306 | { |
1307 | unsigned int lcd_conn = inf->lcd_conn; | 1307 | unsigned int lcd_conn = inf->lcd_conn; |
1308 | 1308 | ||
@@ -1333,7 +1333,7 @@ static int pxafb_decode_mach_info(struct pxafb_info *fbi, | |||
1333 | fbi->lccr0 = inf->lccr0; | 1333 | fbi->lccr0 = inf->lccr0; |
1334 | fbi->lccr3 = inf->lccr3; | 1334 | fbi->lccr3 = inf->lccr3; |
1335 | fbi->lccr4 = inf->lccr4; | 1335 | fbi->lccr4 = inf->lccr4; |
1336 | return -EINVAL; | 1336 | goto decode_mode; |
1337 | } | 1337 | } |
1338 | 1338 | ||
1339 | if (lcd_conn == LCD_MONO_STN_8BPP) | 1339 | if (lcd_conn == LCD_MONO_STN_8BPP) |
@@ -1343,8 +1343,8 @@ static int pxafb_decode_mach_info(struct pxafb_info *fbi, | |||
1343 | fbi->lccr3 |= (lcd_conn & LCD_BIAS_ACTIVE_LOW) ? LCCR3_OEP : 0; | 1343 | fbi->lccr3 |= (lcd_conn & LCD_BIAS_ACTIVE_LOW) ? LCCR3_OEP : 0; |
1344 | fbi->lccr3 |= (lcd_conn & LCD_PCLK_EDGE_FALL) ? LCCR3_PCP : 0; | 1344 | fbi->lccr3 |= (lcd_conn & LCD_PCLK_EDGE_FALL) ? LCCR3_PCP : 0; |
1345 | 1345 | ||
1346 | decode_mode: | ||
1346 | pxafb_decode_mode_info(fbi, inf->modes, inf->num_modes); | 1347 | pxafb_decode_mode_info(fbi, inf->modes, inf->num_modes); |
1347 | return 0; | ||
1348 | } | 1348 | } |
1349 | 1349 | ||
1350 | static struct pxafb_info * __init pxafb_init_fbinfo(struct device *dev) | 1350 | static struct pxafb_info * __init pxafb_init_fbinfo(struct device *dev) |