
Hi,
On Tue, 18 Oct 2011 17:15:38 +0800 Che-Liang Chiou clchiou@chromium.org wrote: ...
+int display_get_info(int type, struct display_info *di) +{ +#if defined(CONFIG_VIDEO) || defined(CONFIG_CFB_CONSOLE)
- GraphicDevice *gdev;
+#endif
- switch (type) {
- default:
debug("%s: unsupport display device type: %d\n",
__FILE__, type);
return API_ENODEV;
+#ifdef CONFIG_LCD
- case DISPLAY_TYPE_LCD:
di->pixel_width = panel_info.vl_col;
di->pixel_height = panel_info.vl_row;
di->screen_rows = CONSOLE_ROWS;
di->screen_cols = CONSOLE_COLS;
break;
+#endif
+#if defined(CONFIG_VIDEO) || defined(CONFIG_CFB_CONSOLE)
- case DISPLAY_TYPE_VIDEO:
gdev = video_devinfo();
di->pixel_width = gdev->winSizeX;
di->pixel_height = gdev->winSizeY;
di->screen_rows = CONSOLE_ROWS;
di->screen_cols = CONSOLE_COLS;
the return value of video_devinfo() should be checked before dereferencing gdev pointer (it could be NULL).
Another issue is that CONSOLE_ROWS and CONSOLE_COLS macros expand to 'panel_info' structure usage here which is only okay for CONFIG_LCD case. For CONFIG_VIDEO case these macros are defined in cfb_console.c file and thus can not be used here as you currently do (compile breakage again).
...
+void display_clear(void) +{ +#ifdef CONFIG_LCD
- lcd_clear();
+#endif +#if defined(CONFIG_VIDEO) || defined(CONFIG_CFB_CONSOLE)
- video_clear();
video_clear() is used here but it is not defined. Below is a small patch included. It shows how video_clear() could look like (but this was not tested yet).
Anatolij
diff --git a/drivers/video/cfb_console.c b/drivers/video/cfb_console.c index 4e653b8..5336937 100644 --- a/drivers/video/cfb_console.c +++ b/drivers/video/cfb_console.c @@ -1753,6 +1753,23 @@ static int video_init(void) return 0; }
+void video_clear(void) +{ +#ifdef VIDEO_HW_RECTFILL + video_hw_rectfill(VIDEO_PIXEL_SIZE, /* bytes per pixel */ + 0, /* dest pos x */ + 0, /* dest pos y */ + VIDEO_VISIBLE_COLS, /* frame width */ + VIDEO_VISIBLE_ROWS, /* frame height */ + CONSOLE_BG_COL /* fill color */ + ); +#else + memsetl(CONSOLE_ROW_FIRST, CONSOLE_SIZE >> 2, CONSOLE_BG_COL); +#endif + console_col = 0; + console_row = 0; +} + /* * Implement a weak default function for boards that optionally * need to skip the video initialization.