diff options
Diffstat (limited to 'drivers/video/sa1100fb.c')
-rw-r--r-- | drivers/video/sa1100fb.c | 21 |
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 |
255 | static 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 | |||
255 | static struct sa1100fb_mach_info h3600_info __devinitdata = { | 262 | static 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 | ||
269 | static 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); |