diff options
Diffstat (limited to 'drivers/video')
-rw-r--r-- | drivers/video/sa1100fb.c | 21 | ||||
-rw-r--r-- | drivers/video/sa1100fb.h | 22 |
2 files changed, 24 insertions, 19 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); |
diff --git a/drivers/video/sa1100fb.h b/drivers/video/sa1100fb.h index b1d5b089ee4a..77239b766e56 100644 --- a/drivers/video/sa1100fb.h +++ b/drivers/video/sa1100fb.h | |||
@@ -10,10 +10,12 @@ | |||
10 | * for more details. | 10 | * for more details. |
11 | */ | 11 | */ |
12 | 12 | ||
13 | /* | 13 | #define RGB_4 0 |
14 | * These are the bitfields for each | 14 | #define RGB_8 1 |
15 | * display depth that we support. | 15 | #define RGB_16 2 |
16 | */ | 16 | #define NR_RGB 3 |
17 | |||
18 | /* These are the bitfields for each display depth that we support. */ | ||
17 | struct sa1100fb_rgb { | 19 | struct sa1100fb_rgb { |
18 | struct fb_bitfield red; | 20 | struct fb_bitfield red; |
19 | struct fb_bitfield green; | 21 | struct fb_bitfield green; |
@@ -21,9 +23,7 @@ struct sa1100fb_rgb { | |||
21 | struct fb_bitfield transp; | 23 | struct fb_bitfield transp; |
22 | }; | 24 | }; |
23 | 25 | ||
24 | /* | 26 | /* This structure describes the machine which we are running on. */ |
25 | * This structure describes the machine which we are running on. | ||
26 | */ | ||
27 | struct sa1100fb_mach_info { | 27 | struct sa1100fb_mach_info { |
28 | u_long pixclock; | 28 | u_long pixclock; |
29 | 29 | ||
@@ -47,6 +47,9 @@ struct sa1100fb_mach_info { | |||
47 | 47 | ||
48 | u_int lccr0; | 48 | u_int lccr0; |
49 | u_int lccr3; | 49 | u_int lccr3; |
50 | |||
51 | /* Overrides for the default RGB maps */ | ||
52 | const struct sa1100fb_rgb *rgb[NR_RGB]; | ||
50 | }; | 53 | }; |
51 | 54 | ||
52 | /* Shadows for LCD controller registers */ | 55 | /* Shadows for LCD controller registers */ |
@@ -57,11 +60,6 @@ struct sa1100fb_lcd_reg { | |||
57 | unsigned long lccr3; | 60 | unsigned long lccr3; |
58 | }; | 61 | }; |
59 | 62 | ||
60 | #define RGB_4 (0) | ||
61 | #define RGB_8 (1) | ||
62 | #define RGB_16 (2) | ||
63 | #define NR_RGB 3 | ||
64 | |||
65 | struct sa1100fb_info { | 63 | struct sa1100fb_info { |
66 | struct fb_info fb; | 64 | struct fb_info fb; |
67 | struct device *dev; | 65 | struct device *dev; |