aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/video/sa1100fb.c
diff options
context:
space:
mode:
authorRussell King <rmk+kernel@arm.linux.org.uk>2012-01-14 05:49:44 -0500
committerRussell King <rmk+kernel@arm.linux.org.uk>2012-02-21 06:56:19 -0500
commit531060fc1989a438fbc2c3198f5057c40121ff50 (patch)
tree9de13ddf44c42ef3137dacfc1b24d0dd746e6f66 /drivers/video/sa1100fb.c
parent798892966871077b8c867abf3d491227037dc2eb (diff)
FB: sa1100: combine RGB bitfield overrides into sa1100fb_mach_info
Allow the sa1100fb_mach_info structure to carry the RGB bitfield overrides, rather than requiring them to be separately initialized in sa1100fb_get_machine_info(). Acked-by: Florian Tobias Schandinat <FlorianSchandinat@gmx.de> Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Diffstat (limited to 'drivers/video/sa1100fb.c')
-rw-r--r--drivers/video/sa1100fb.c21
1 files changed, 14 insertions, 7 deletions
diff --git a/drivers/video/sa1100fb.c b/drivers/video/sa1100fb.c
index ecd7cd4ce412..a905e20404fd 100644
--- a/drivers/video/sa1100fb.c
+++ b/drivers/video/sa1100fb.c
@@ -252,6 +252,13 @@ static struct sa1100fb_mach_info pal_info __devinitdata = {
252#endif 252#endif
253 253
254#ifdef CONFIG_SA1100_H3600 254#ifdef CONFIG_SA1100_H3600
255static const struct sa1100fb_rgb h3600_rgb_16 = {
256 .red = { .offset = 12, .length = 4, },
257 .green = { .offset = 7, .length = 4, },
258 .blue = { .offset = 1, .length = 4, },
259 .transp = { .offset = 0, .length = 0, },
260};
261
255static struct sa1100fb_mach_info h3600_info __devinitdata = { 262static struct sa1100fb_mach_info h3600_info __devinitdata = {
256 .pixclock = 174757, .bpp = 16, 263 .pixclock = 174757, .bpp = 16,
257 .xres = 320, .yres = 240, 264 .xres = 320, .yres = 240,
@@ -264,13 +271,8 @@ static struct sa1100fb_mach_info h3600_info __devinitdata = {
264 271
265 .lccr0 = LCCR0_Color | LCCR0_Sngl | LCCR0_Act, 272 .lccr0 = LCCR0_Color | LCCR0_Sngl | LCCR0_Act,
266 .lccr3 = LCCR3_OutEnH | LCCR3_PixRsEdg | LCCR3_ACBsDiv(2), 273 .lccr3 = LCCR3_OutEnH | LCCR3_PixRsEdg | LCCR3_ACBsDiv(2),
267};
268 274
269static const struct sa1100fb_rgb h3600_rgb_16 = { 275 .rgb[RGB_16] = &h3600_rgb_16,
270 .red = { .offset = 12, .length = 4, },
271 .green = { .offset = 7, .length = 4, },
272 .blue = { .offset = 1, .length = 4, },
273 .transp = { .offset = 0, .length = 0, },
274}; 276};
275#endif 277#endif
276 278
@@ -413,7 +415,6 @@ sa1100fb_get_machine_info(struct sa1100fb_info *fbi)
413#ifdef CONFIG_SA1100_H3600 415#ifdef CONFIG_SA1100_H3600
414 if (machine_is_h3600()) { 416 if (machine_is_h3600()) {
415 inf = &h3600_info; 417 inf = &h3600_info;
416 fbi->rgb[RGB_16] = &h3600_rgb_16;
417 } 418 }
418#endif 419#endif
419#ifdef CONFIG_SA1100_COLLIE 420#ifdef CONFIG_SA1100_COLLIE
@@ -1352,6 +1353,7 @@ static struct sa1100fb_info * __devinit sa1100fb_init_fbinfo(struct device *dev)
1352{ 1353{
1353 struct sa1100fb_mach_info *inf; 1354 struct sa1100fb_mach_info *inf;
1354 struct sa1100fb_info *fbi; 1355 struct sa1100fb_info *fbi;
1356 unsigned i;
1355 1357
1356 fbi = kmalloc(sizeof(struct sa1100fb_info) + sizeof(u32) * 16, 1358 fbi = kmalloc(sizeof(struct sa1100fb_info) + sizeof(u32) * 16,
1357 GFP_KERNEL); 1359 GFP_KERNEL);
@@ -1424,6 +1426,11 @@ static struct sa1100fb_info * __devinit sa1100fb_init_fbinfo(struct device *dev)
1424 fbi->fb.fix.smem_len = fbi->max_xres * fbi->max_yres * 1426 fbi->fb.fix.smem_len = fbi->max_xres * fbi->max_yres *
1425 fbi->max_bpp / 8; 1427 fbi->max_bpp / 8;
1426 1428
1429 /* Copy the RGB bitfield overrides */
1430 for (i = 0; i < NR_RGB; i++)
1431 if (inf->rgb[i])
1432 fbi->rgb[i] = inf->rgb[i];
1433
1427 init_waitqueue_head(&fbi->ctrlr_wait); 1434 init_waitqueue_head(&fbi->ctrlr_wait);
1428 INIT_WORK(&fbi->task, sa1100fb_task); 1435 INIT_WORK(&fbi->task, sa1100fb_task);
1429 mutex_init(&fbi->ctrlr_lock); 1436 mutex_init(&fbi->ctrlr_lock);