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>
This commit is contained in:
parent
7988929668
commit
531060fc19
|
@ -252,6 +252,13 @@ static struct sa1100fb_mach_info pal_info __devinitdata = {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef CONFIG_SA1100_H3600
|
#ifdef CONFIG_SA1100_H3600
|
||||||
|
static const struct sa1100fb_rgb h3600_rgb_16 = {
|
||||||
|
.red = { .offset = 12, .length = 4, },
|
||||||
|
.green = { .offset = 7, .length = 4, },
|
||||||
|
.blue = { .offset = 1, .length = 4, },
|
||||||
|
.transp = { .offset = 0, .length = 0, },
|
||||||
|
};
|
||||||
|
|
||||||
static struct sa1100fb_mach_info h3600_info __devinitdata = {
|
static struct sa1100fb_mach_info h3600_info __devinitdata = {
|
||||||
.pixclock = 174757, .bpp = 16,
|
.pixclock = 174757, .bpp = 16,
|
||||||
.xres = 320, .yres = 240,
|
.xres = 320, .yres = 240,
|
||||||
|
@ -264,13 +271,8 @@ static struct sa1100fb_mach_info h3600_info __devinitdata = {
|
||||||
|
|
||||||
.lccr0 = LCCR0_Color | LCCR0_Sngl | LCCR0_Act,
|
.lccr0 = LCCR0_Color | LCCR0_Sngl | LCCR0_Act,
|
||||||
.lccr3 = LCCR3_OutEnH | LCCR3_PixRsEdg | LCCR3_ACBsDiv(2),
|
.lccr3 = LCCR3_OutEnH | LCCR3_PixRsEdg | LCCR3_ACBsDiv(2),
|
||||||
};
|
|
||||||
|
|
||||||
static const struct sa1100fb_rgb h3600_rgb_16 = {
|
.rgb[RGB_16] = &h3600_rgb_16,
|
||||||
.red = { .offset = 12, .length = 4, },
|
|
||||||
.green = { .offset = 7, .length = 4, },
|
|
||||||
.blue = { .offset = 1, .length = 4, },
|
|
||||||
.transp = { .offset = 0, .length = 0, },
|
|
||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -413,7 +415,6 @@ sa1100fb_get_machine_info(struct sa1100fb_info *fbi)
|
||||||
#ifdef CONFIG_SA1100_H3600
|
#ifdef CONFIG_SA1100_H3600
|
||||||
if (machine_is_h3600()) {
|
if (machine_is_h3600()) {
|
||||||
inf = &h3600_info;
|
inf = &h3600_info;
|
||||||
fbi->rgb[RGB_16] = &h3600_rgb_16;
|
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
#ifdef CONFIG_SA1100_COLLIE
|
#ifdef CONFIG_SA1100_COLLIE
|
||||||
|
@ -1352,6 +1353,7 @@ static struct sa1100fb_info * __devinit sa1100fb_init_fbinfo(struct device *dev)
|
||||||
{
|
{
|
||||||
struct sa1100fb_mach_info *inf;
|
struct sa1100fb_mach_info *inf;
|
||||||
struct sa1100fb_info *fbi;
|
struct sa1100fb_info *fbi;
|
||||||
|
unsigned i;
|
||||||
|
|
||||||
fbi = kmalloc(sizeof(struct sa1100fb_info) + sizeof(u32) * 16,
|
fbi = kmalloc(sizeof(struct sa1100fb_info) + sizeof(u32) * 16,
|
||||||
GFP_KERNEL);
|
GFP_KERNEL);
|
||||||
|
@ -1424,6 +1426,11 @@ static struct sa1100fb_info * __devinit sa1100fb_init_fbinfo(struct device *dev)
|
||||||
fbi->fb.fix.smem_len = fbi->max_xres * fbi->max_yres *
|
fbi->fb.fix.smem_len = fbi->max_xres * fbi->max_yres *
|
||||||
fbi->max_bpp / 8;
|
fbi->max_bpp / 8;
|
||||||
|
|
||||||
|
/* Copy the RGB bitfield overrides */
|
||||||
|
for (i = 0; i < NR_RGB; i++)
|
||||||
|
if (inf->rgb[i])
|
||||||
|
fbi->rgb[i] = inf->rgb[i];
|
||||||
|
|
||||||
init_waitqueue_head(&fbi->ctrlr_wait);
|
init_waitqueue_head(&fbi->ctrlr_wait);
|
||||||
INIT_WORK(&fbi->task, sa1100fb_task);
|
INIT_WORK(&fbi->task, sa1100fb_task);
|
||||||
mutex_init(&fbi->ctrlr_lock);
|
mutex_init(&fbi->ctrlr_lock);
|
||||||
|
|
|
@ -10,10 +10,12 @@
|
||||||
* for more details.
|
* for more details.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*
|
#define RGB_4 0
|
||||||
* These are the bitfields for each
|
#define RGB_8 1
|
||||||
* display depth that we support.
|
#define RGB_16 2
|
||||||
*/
|
#define NR_RGB 3
|
||||||
|
|
||||||
|
/* These are the bitfields for each display depth that we support. */
|
||||||
struct sa1100fb_rgb {
|
struct sa1100fb_rgb {
|
||||||
struct fb_bitfield red;
|
struct fb_bitfield red;
|
||||||
struct fb_bitfield green;
|
struct fb_bitfield green;
|
||||||
|
@ -21,9 +23,7 @@ struct sa1100fb_rgb {
|
||||||
struct fb_bitfield transp;
|
struct fb_bitfield transp;
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
/* This structure describes the machine which we are running on. */
|
||||||
* This structure describes the machine which we are running on.
|
|
||||||
*/
|
|
||||||
struct sa1100fb_mach_info {
|
struct sa1100fb_mach_info {
|
||||||
u_long pixclock;
|
u_long pixclock;
|
||||||
|
|
||||||
|
@ -47,6 +47,9 @@ struct sa1100fb_mach_info {
|
||||||
|
|
||||||
u_int lccr0;
|
u_int lccr0;
|
||||||
u_int lccr3;
|
u_int lccr3;
|
||||||
|
|
||||||
|
/* Overrides for the default RGB maps */
|
||||||
|
const struct sa1100fb_rgb *rgb[NR_RGB];
|
||||||
};
|
};
|
||||||
|
|
||||||
/* Shadows for LCD controller registers */
|
/* Shadows for LCD controller registers */
|
||||||
|
@ -57,11 +60,6 @@ struct sa1100fb_lcd_reg {
|
||||||
unsigned long lccr3;
|
unsigned long lccr3;
|
||||||
};
|
};
|
||||||
|
|
||||||
#define RGB_4 (0)
|
|
||||||
#define RGB_8 (1)
|
|
||||||
#define RGB_16 (2)
|
|
||||||
#define NR_RGB 3
|
|
||||||
|
|
||||||
struct sa1100fb_info {
|
struct sa1100fb_info {
|
||||||
struct fb_info fb;
|
struct fb_info fb;
|
||||||
struct device *dev;
|
struct device *dev;
|
||||||
|
|
Loading…
Reference in a new issue