|
@@ -78,13 +78,9 @@ struct fb_videomode {
|
|
unsigned int flag;
|
|
unsigned int flag;
|
|
};
|
|
};
|
|
|
|
|
|
-#define FB_SYNC_VERT_HIGH_ACT 2 /* vertical sync high active */
|
|
|
|
-#define FB_SYNC_COMP_HIGH_ACT 8 /* composite sync high active */
|
|
|
|
-#define FB_VMODE_NONINTERLACED 0 /* non interlaced */
|
|
|
|
-
|
|
|
|
/* This setting is used for the ifm pdm360ng with PRIMEVIEW PM070WL3 */
|
|
/* This setting is used for the ifm pdm360ng with PRIMEVIEW PM070WL3 */
|
|
-static struct fb_videomode fsl_diu_mode_800 = {
|
|
|
|
- .name = "800x600-60",
|
|
|
|
|
|
+static struct fb_videomode fsl_diu_mode_800_480 = {
|
|
|
|
+ .name = "800x480-60",
|
|
.refresh = 60,
|
|
.refresh = 60,
|
|
.xres = 800,
|
|
.xres = 800,
|
|
.yres = 480,
|
|
.yres = 480,
|
|
@@ -99,13 +95,30 @@ static struct fb_videomode fsl_diu_mode_800 = {
|
|
.vmode = FB_VMODE_NONINTERLACED
|
|
.vmode = FB_VMODE_NONINTERLACED
|
|
};
|
|
};
|
|
|
|
|
|
|
|
+/* For the SHARP LQ084S3LG01, used on the P1022DS board */
|
|
|
|
+static struct fb_videomode fsl_diu_mode_800_600 = {
|
|
|
|
+ .name = "800x600-60",
|
|
|
|
+ .refresh = 60,
|
|
|
|
+ .xres = 800,
|
|
|
|
+ .yres = 600,
|
|
|
|
+ .pixclock = 25000,
|
|
|
|
+ .left_margin = 88,
|
|
|
|
+ .right_margin = 40,
|
|
|
|
+ .upper_margin = 23,
|
|
|
|
+ .lower_margin = 1,
|
|
|
|
+ .hsync_len = 128,
|
|
|
|
+ .vsync_len = 4,
|
|
|
|
+ .sync = FB_SYNC_COMP_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT,
|
|
|
|
+ .vmode = FB_VMODE_NONINTERLACED
|
|
|
|
+};
|
|
|
|
+
|
|
/*
|
|
/*
|
|
* These parameters give default parameters
|
|
* These parameters give default parameters
|
|
* for video output 1024x768,
|
|
* for video output 1024x768,
|
|
* FIXME - change timing to proper amounts
|
|
* FIXME - change timing to proper amounts
|
|
* hsync 31.5kHz, vsync 60Hz
|
|
* hsync 31.5kHz, vsync 60Hz
|
|
*/
|
|
*/
|
|
-static struct fb_videomode fsl_diu_mode_1024 = {
|
|
|
|
|
|
+static struct fb_videomode fsl_diu_mode_1024_768 = {
|
|
.name = "1024x768-60",
|
|
.name = "1024x768-60",
|
|
.refresh = 60,
|
|
.refresh = 60,
|
|
.xres = 1024,
|
|
.xres = 1024,
|
|
@@ -121,7 +134,7 @@ static struct fb_videomode fsl_diu_mode_1024 = {
|
|
.vmode = FB_VMODE_NONINTERLACED
|
|
.vmode = FB_VMODE_NONINTERLACED
|
|
};
|
|
};
|
|
|
|
|
|
-static struct fb_videomode fsl_diu_mode_1280 = {
|
|
|
|
|
|
+static struct fb_videomode fsl_diu_mode_1280_1024 = {
|
|
.name = "1280x1024-60",
|
|
.name = "1280x1024-60",
|
|
.refresh = 60,
|
|
.refresh = 60,
|
|
.xres = 1280,
|
|
.xres = 1280,
|
|
@@ -263,7 +276,7 @@ static struct diu_ad *allocate_fb(unsigned int xres, unsigned int yres,
|
|
return ad;
|
|
return ad;
|
|
}
|
|
}
|
|
|
|
|
|
-int fsl_diu_init(int xres, u32 pixel_format, int gamma_fix)
|
|
|
|
|
|
+int fsl_diu_init(u16 xres, u16 yres, u32 pixel_format, int gamma_fix)
|
|
{
|
|
{
|
|
struct fb_videomode *fsl_diu_mode_db;
|
|
struct fb_videomode *fsl_diu_mode_db;
|
|
struct diu_ad *ad;
|
|
struct diu_ad *ad;
|
|
@@ -274,15 +287,23 @@ int fsl_diu_init(int xres, u32 pixel_format, int gamma_fix)
|
|
struct diu_addr gamma;
|
|
struct diu_addr gamma;
|
|
struct diu_addr cursor;
|
|
struct diu_addr cursor;
|
|
|
|
|
|
- switch (xres) {
|
|
|
|
- case 800:
|
|
|
|
- fsl_diu_mode_db = &fsl_diu_mode_800;
|
|
|
|
|
|
+/* Convert the X,Y resolution pair into a single number */
|
|
|
|
+#define RESOLUTION(x, y) (((u32)(x) << 16) | (y))
|
|
|
|
+
|
|
|
|
+ switch (RESOLUTION(xres, yres)) {
|
|
|
|
+ case RESOLUTION(800, 480):
|
|
|
|
+ fsl_diu_mode_db = &fsl_diu_mode_800_480;
|
|
break;
|
|
break;
|
|
- case 1280:
|
|
|
|
- fsl_diu_mode_db = &fsl_diu_mode_1280;
|
|
|
|
|
|
+ case RESOLUTION(800, 600):
|
|
|
|
+ fsl_diu_mode_db = &fsl_diu_mode_800_600;
|
|
|
|
+ case RESOLUTION(1024, 768):
|
|
|
|
+ fsl_diu_mode_db = &fsl_diu_mode_1024_768;
|
|
|
|
+ case RESOLUTION(1280, 1024):
|
|
|
|
+ fsl_diu_mode_db = &fsl_diu_mode_1280_1024;
|
|
break;
|
|
break;
|
|
default:
|
|
default:
|
|
- fsl_diu_mode_db = &fsl_diu_mode_1024;
|
|
|
|
|
|
+ printf("DIU: Unsupported resolution %ux%u\n", xres, yres);
|
|
|
|
+ return -1;
|
|
}
|
|
}
|
|
|
|
|
|
/* The AD struct for the dummy framebuffer and the FB itself */
|
|
/* The AD struct for the dummy framebuffer and the FB itself */
|