xref: /rk3399_rockchip-uboot/api/api_display.c (revision fbd239bea7d0847495da57dcf03248c13040c763)
1a2a5729fSChe-Liang Chiou /*
2a2a5729fSChe-Liang Chiou  * Copyright (c) 2011 The Chromium OS Authors.
3a2a5729fSChe-Liang Chiou  * See file CREDITS for list of people who contributed to this
4a2a5729fSChe-Liang Chiou  * project.
5a2a5729fSChe-Liang Chiou  *
6a2a5729fSChe-Liang Chiou  * This program is free software; you can redistribute it and/or
7a2a5729fSChe-Liang Chiou  * modify it under the terms of the GNU General Public License as
8a2a5729fSChe-Liang Chiou  * published by the Free Software Foundation; either version 2 of
9a2a5729fSChe-Liang Chiou  * the License, or (at your option) any later version.
10a2a5729fSChe-Liang Chiou  *
11a2a5729fSChe-Liang Chiou  * This program is distributed in the hope that it will be useful,
12a2a5729fSChe-Liang Chiou  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13a2a5729fSChe-Liang Chiou  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14a2a5729fSChe-Liang Chiou  * GNU General Public License for more details.
15a2a5729fSChe-Liang Chiou  *
16a2a5729fSChe-Liang Chiou  * You should have received a copy of the GNU General Public License
17a2a5729fSChe-Liang Chiou  * along with this program; if not, write to the Free Software
18a2a5729fSChe-Liang Chiou  * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
19a2a5729fSChe-Liang Chiou  * MA 02111-1307 USA
20a2a5729fSChe-Liang Chiou  */
21a2a5729fSChe-Liang Chiou 
22a2a5729fSChe-Liang Chiou #include <common.h>
23a2a5729fSChe-Liang Chiou #include <api_public.h>
24a2a5729fSChe-Liang Chiou #include <lcd.h>
25a2a5729fSChe-Liang Chiou #include <video_font.h> /* Get font width and height */
26a2a5729fSChe-Liang Chiou 
27a2a5729fSChe-Liang Chiou /* lcd.h needs BMP_LOGO_HEIGHT to calculate CONSOLE_ROWS */
28a2a5729fSChe-Liang Chiou #if defined(CONFIG_LCD_LOGO) && !defined(CONFIG_LCD_INFO_BELOW_LOGO)
29a2a5729fSChe-Liang Chiou #include <bmp_logo.h>
30a2a5729fSChe-Liang Chiou #endif
31a2a5729fSChe-Liang Chiou 
32a2a5729fSChe-Liang Chiou /* TODO(clchiou): add support of video device */
33a2a5729fSChe-Liang Chiou 
34a2a5729fSChe-Liang Chiou int display_get_info(int type, struct display_info *di)
35a2a5729fSChe-Liang Chiou {
36a2a5729fSChe-Liang Chiou 	if (!di)
37a2a5729fSChe-Liang Chiou 		return API_EINVAL;
38a2a5729fSChe-Liang Chiou 
39a2a5729fSChe-Liang Chiou 	switch (type) {
40a2a5729fSChe-Liang Chiou 	default:
41a2a5729fSChe-Liang Chiou 		debug("%s: unsupport display device type: %d\n",
42a2a5729fSChe-Liang Chiou 				__FILE__, type);
43a2a5729fSChe-Liang Chiou 		return API_ENODEV;
44a2a5729fSChe-Liang Chiou #ifdef CONFIG_LCD
45a2a5729fSChe-Liang Chiou 	case DISPLAY_TYPE_LCD:
46a2a5729fSChe-Liang Chiou 		di->pixel_width  = panel_info.vl_col;
47a2a5729fSChe-Liang Chiou 		di->pixel_height = panel_info.vl_row;
48*fbd239beSJeroen Hofstee 		di->screen_rows = lcd_get_screen_rows();
49*fbd239beSJeroen Hofstee 		di->screen_cols = lcd_get_screen_columns();
50a2a5729fSChe-Liang Chiou 		break;
51a2a5729fSChe-Liang Chiou #endif
52a2a5729fSChe-Liang Chiou 	}
53a2a5729fSChe-Liang Chiou 
54a2a5729fSChe-Liang Chiou 	di->type = type;
55a2a5729fSChe-Liang Chiou 	return 0;
56a2a5729fSChe-Liang Chiou }
57a2a5729fSChe-Liang Chiou 
58a2a5729fSChe-Liang Chiou int display_draw_bitmap(ulong bitmap, int x, int y)
59a2a5729fSChe-Liang Chiou {
60a2a5729fSChe-Liang Chiou 	if (!bitmap)
61a2a5729fSChe-Liang Chiou 		return API_EINVAL;
62a2a5729fSChe-Liang Chiou #ifdef CONFIG_LCD
63a2a5729fSChe-Liang Chiou 	return lcd_display_bitmap(bitmap, x, y);
64a2a5729fSChe-Liang Chiou #else
65a2a5729fSChe-Liang Chiou 	return API_ENODEV;
66a2a5729fSChe-Liang Chiou #endif
67a2a5729fSChe-Liang Chiou }
68a2a5729fSChe-Liang Chiou 
69a2a5729fSChe-Liang Chiou void display_clear(void)
70a2a5729fSChe-Liang Chiou {
71a2a5729fSChe-Liang Chiou #ifdef CONFIG_LCD
72a2a5729fSChe-Liang Chiou 	lcd_clear();
73a2a5729fSChe-Liang Chiou #endif
74a2a5729fSChe-Liang Chiou }
75