Blame view
include/lcd.h
7.41 KB
fe8c2806c Initial revision |
1 |
/* |
8655b6f86 * Clean up tools/... |
2 |
* MPC823 and PXA LCD Controller |
fe8c2806c Initial revision |
3 4 5 6 7 8 9 |
* * Modeled after video interface by Paolo Scaffardi * * * (C) Copyright 2001 * Wolfgang Denk, DENX Software Engineering, wd@denx.de. * |
3765b3e7b Coding Style clea... |
10 |
* SPDX-License-Identifier: GPL-2.0+ |
fe8c2806c Initial revision |
11 12 13 14 |
*/ #ifndef _LCD_H_ #define _LCD_H_ |
904672ee4 lcd: refactor lcd... |
15 |
#include <lcd_console.h> |
c8d2febcc lcd: various clea... |
16 17 18 19 |
#if defined(CONFIG_CMD_BMP) || defined(CONFIG_SPLASH_SCREEN) #include <bmp_layout.h> #include <asm/byteorder.h> #endif |
fe8c2806c Initial revision |
20 |
|
6cbf5de70 dm: lcd: Avoid us... |
21 22 23 24 25 |
int bmp_display(ulong addr, int x, int y); struct bmp_image *gunzip_bmp(unsigned long addr, unsigned long *lenp, void **alloc_addr); #ifndef CONFIG_DM_VIDEO |
682011ff6 * Patches by Udi ... |
26 |
extern char lcd_is_enabled; |
8655b6f86 * Clean up tools/... |
27 |
extern int lcd_line_length; |
6111722a9 video: move exter... |
28 |
extern struct vidinfo panel_info; |
6b035141f common/lcd: cosme... |
29 30 |
void lcd_ctrl_init(void *lcdbase); void lcd_enable(void); |
6b035141f common/lcd: cosme... |
31 |
void lcd_setcolreg(ushort regno, ushort red, ushort green, ushort blue); |
21bf1c38b MLK-12425-2 video... |
32 |
void lcd_initcolregs (void); |
6111722a9 video: move exter... |
33 |
|
9a8efc460 lcd: Add support ... |
34 35 36 37 38 39 40 |
/** * Set whether we need to flush the dcache when changing the LCD image. This * defaults to off. * * @param flush non-zero to flush cache after update, 0 to skip */ void lcd_set_flush_dcache(int flush); |
5b8e76c35 powerpc, 8xx: rem... |
41 |
#if defined(CONFIG_CPU_PXA25X) || defined(CONFIG_CPU_PXA27X) || \ |
abc20aba1 PXA: Rename CONFI... |
42 |
defined CONFIG_CPU_MONAHANS |
baaa7dd70 lcd: move platfor... |
43 |
#include <pxa_lcd.h> |
f6b690e65 video: atmel/lcd:... |
44 |
#elif defined(CONFIG_ATMEL_LCD) || defined(CONFIG_ATMEL_HLCD) |
baaa7dd70 lcd: move platfor... |
45 |
#include <atmel_lcd.h> |
559a05cc3 LCD: add data str... |
46 |
#elif defined(CONFIG_EXYNOS_FB) |
baaa7dd70 lcd: move platfor... |
47 |
#include <exynos_lcd.h> |
21bf1c38b MLK-12425-2 video... |
48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 |
#elif defined(CONFIG_MXC_EPDC) struct waveform_modes { int mode_init; int mode_du; int mode_gc4; int mode_gc8; int mode_gc16; int mode_gc32; }; struct epdc_timing_params { int vscan_holdoff; int sdoed_width; int sdoed_delay; int sdoez_width; int sdoez_delay; int gdclk_hp_offs; int gdsp_offs; int gdoe_offs; int gdclk_offs; int num_ce; }; struct epdc_data_struct { /* EPDC buffer pointers */ u_long working_buf_addr; u_long waveform_buf_addr; /* Waveform mode definitions */ struct waveform_modes wv_modes; struct epdc_timing_params epdc_timings; }; typedef struct vidinfo { u_long vl_refresh; /* Refresh Rate Hz */ u_long vl_row; /* resolution in x */ u_long vl_col; /* resolution in y */ u_long vl_rot; u_long vl_pixclock; /* pixel clock in picoseconds */ u_long vl_left_margin; /* Horizontal back porch */ u_long vl_right_margin; /* Horizontal front porch */ u_long vl_upper_margin; /* Vertical back porch */ u_long vl_lower_margin; /* Vertical front porch */ u_long vl_hsync; /* Horizontal sync pulse length */ u_long vl_vsync; /* Vertical sync pulse length */ u_long vl_sync; /* Polarity on data enable */ u_long vl_mode; /* Video Mode */ u_long vl_flag; u_char vl_bpix; ushort *cmap; struct epdc_data_struct epdc_data; } vidinfo_t; static __maybe_unused ushort *configuration_get_cmap(void) { return panel_info.cmap; } |
b245e65ee LCD: support 8bpp... |
106 |
#else |
b245e65ee LCD: support 8bpp... |
107 108 109 |
typedef struct vidinfo { ushort vl_col; /* Number of columns (i.e. 160) */ ushort vl_row; /* Number of rows (i.e. 100) */ |
604c7d4a5 common/lcd_consol... |
110 |
ushort vl_rot; /* Rotation of Display (0, 1, 2, 3) */ |
b245e65ee LCD: support 8bpp... |
111 |
u_char vl_bpix; /* Bits per pixel, 0 = 1 */ |
b245e65ee LCD: support 8bpp... |
112 |
ushort *cmap; /* Pointer to the colormap */ |
b245e65ee LCD: support 8bpp... |
113 114 |
void *priv; /* Pointer to driver-specific data */ } vidinfo_t; |
38b550877 lcd: split config... |
115 116 117 118 119 |
static __maybe_unused ushort *configuration_get_cmap(void) { return panel_info.cmap; } |
baaa7dd70 lcd: move platfor... |
120 |
#endif |
8655b6f86 * Clean up tools/... |
121 |
|
38b550877 lcd: split config... |
122 |
ushort *configuration_get_cmap(void); |
60e974192 lcd.h: define ext... |
123 |
extern vidinfo_t panel_info; |
c8d2febcc lcd: various clea... |
124 125 126 127 128 |
void lcd_putc(const char c); void lcd_puts(const char *s); void lcd_printf(const char *fmt, ...); void lcd_clear(void); int lcd_display_bitmap(ulong bmp_image, int x, int y); |
fe8c2806c Initial revision |
129 |
|
395166cff lcd: Provide an A... |
130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 |
/** * Get the width of the LCD in pixels * * @return width of LCD in pixels */ int lcd_get_pixel_width(void); /** * Get the height of the LCD in pixels * * @return height of LCD in pixels */ int lcd_get_pixel_height(void); /** * Get the number of text lines/rows on the LCD * * @return number of rows */ int lcd_get_screen_rows(void); /** * Get the number of text columns on the LCD * * @return number of columns */ int lcd_get_screen_columns(void); /** |
4d03634e5 lcd: introduce ge... |
159 160 161 162 163 164 165 166 167 168 169 170 171 172 |
* Get the background color of the LCD * * @return background color value */ int lcd_getbgcolor(void); /** * Get the foreground color of the LCD * * @return foreground color value */ int lcd_getfgcolor(void); /** |
395166cff lcd: Provide an A... |
173 174 175 176 177 178 |
* Set the position of the text cursor * * @param col Column to place cursor (0 = left side) * @param row Row to place cursor (0 = top line) */ void lcd_position_cursor(unsigned col, unsigned row); |
6b59e03e0 lcd: Let the boar... |
179 180 |
/* Allow boards to customize the information displayed */ void lcd_show_board_info(void); |
8655b6f86 * Clean up tools/... |
181 |
|
676d319ef lcd: Add CONFIG_L... |
182 183 |
/* Return the size of the LCD frame buffer, and the line length */ int lcd_get_size(int *line_length); |
7d95f2a32 sandbox: Add LCD ... |
184 185 |
/* Update the LCD / flush the cache */ void lcd_sync(void); |
8655b6f86 * Clean up tools/... |
186 187 188 189 190 |
/* * Information about displays we are using. This is for configuring * the LCD controller and memory allocation. Someone has to know what * is connected, as we can't autodetect anything. */ |
6d0f6bcf3 rename CFG_ macro... |
191 |
#define CONFIG_SYS_HIGH 0 /* Pins are active high */ |
6b035141f common/lcd: cosme... |
192 |
#define CONFIG_SYS_LOW 1 /* Pins are active low */ |
8655b6f86 * Clean up tools/... |
193 194 195 196 197 198 |
#define LCD_MONOCHROME 0 #define LCD_COLOR2 1 #define LCD_COLOR4 2 #define LCD_COLOR8 3 #define LCD_COLOR16 4 |
57d76a89b Add support for 3... |
199 |
#define LCD_COLOR32 5 |
c8d2febcc lcd: various clea... |
200 |
|
88804d19e * Patch by Detlev... |
201 |
#if defined(CONFIG_LCD_INFO_BELOW_LOGO) |
c8d2febcc lcd: various clea... |
202 203 |
#define LCD_INFO_X 0 #define LCD_INFO_Y (BMP_LOGO_HEIGHT + VIDEO_FONT_HEIGHT) |
8655b6f86 * Clean up tools/... |
204 |
#elif defined(CONFIG_LCD_LOGO) |
c8d2febcc lcd: various clea... |
205 206 |
#define LCD_INFO_X (BMP_LOGO_WIDTH + 4 * VIDEO_FONT_WIDTH) #define LCD_INFO_Y VIDEO_FONT_HEIGHT |
8655b6f86 * Clean up tools/... |
207 |
#else |
c8d2febcc lcd: various clea... |
208 209 |
#define LCD_INFO_X VIDEO_FONT_WIDTH #define LCD_INFO_Y VIDEO_FONT_HEIGHT |
8655b6f86 * Clean up tools/... |
210 211 212 213 |
#endif /* Default to 8bpp if bit depth not specified */ #ifndef LCD_BPP |
c8d2febcc lcd: various clea... |
214 |
#define LCD_BPP LCD_COLOR8 |
8655b6f86 * Clean up tools/... |
215 |
#endif |
c8d2febcc lcd: various clea... |
216 |
|
21bf1c38b MLK-12425-2 video... |
217 218 219 220 221 222 223 224 225 |
#if LCD_BPP == LCD_MONOCHROME # define COLOR_MASK(c) ((c) | (c) << 1 | (c) << 2 | (c) << 3 | \ (c) << 4 | (c) << 5 | (c) << 6 | (c) << 7) #elif (LCD_BPP == LCD_COLOR8) || (LCD_BPP == LCD_COLOR16) || \ (LCD_BPP == LCD_COLOR32) # define COLOR_MASK(c) (c) #else #error Unsupported LCD BPP. #endif |
8655b6f86 * Clean up tools/... |
226 |
#ifndef LCD_DF |
c8d2febcc lcd: various clea... |
227 |
#define LCD_DF 1 |
8655b6f86 * Clean up tools/... |
228 229 230 231 232 |
#endif /* Calculate nr. of bits per pixel and nr. of colors */ #define NBITS(bit_code) (1 << (bit_code)) #define NCOLORS(bit_code) (1 << NBITS(bit_code)) |
21bf1c38b MLK-12425-2 video... |
233 234 235 236 237 238 239 240 |
#if LCD_BPP == LCD_MONOCHROME /* * Simple black/white definitions */ # define CONSOLE_COLOR_BLACK 0 # define CONSOLE_COLOR_WHITE 1 /* Must remain last / highest */ #elif LCD_BPP == LCD_COLOR8 |
8655b6f86 * Clean up tools/... |
241 242 243 244 245 246 247 248 |
# define CONSOLE_COLOR_BLACK 0 # define CONSOLE_COLOR_RED 1 # define CONSOLE_COLOR_GREEN 2 # define CONSOLE_COLOR_YELLOW 3 # define CONSOLE_COLOR_BLUE 4 # define CONSOLE_COLOR_MAGENTA 5 # define CONSOLE_COLOR_CYAN 6 # define CONSOLE_COLOR_GREY 14 |
c8d2febcc lcd: various clea... |
249 |
# define CONSOLE_COLOR_WHITE 15 /* Must remain last / highest */ |
57d76a89b Add support for 3... |
250 |
#elif LCD_BPP == LCD_COLOR32 |
c8d2febcc lcd: various clea... |
251 252 253 254 255 256 257 258 259 260 261 |
#define CONSOLE_COLOR_RED 0x00ff0000 #define CONSOLE_COLOR_GREEN 0x0000ff00 #define CONSOLE_COLOR_YELLOW 0x00ffff00 #define CONSOLE_COLOR_BLUE 0x000000ff #define CONSOLE_COLOR_MAGENTA 0x00ff00ff #define CONSOLE_COLOR_CYAN 0x0000ffff #define CONSOLE_COLOR_GREY 0x00aaaaaa #define CONSOLE_COLOR_BLACK 0x00000000 #define CONSOLE_COLOR_WHITE 0x00ffffff /* Must remain last / highest */ #define NBYTES(bit_code) (NBITS(bit_code) >> 3) #else /* 16bpp color definitions */ |
e32951b52 lcd: fix the colo... |
262 263 264 265 266 267 268 269 270 |
# define CONSOLE_COLOR_BLACK 0x0000 # define CONSOLE_COLOR_RED 0xF800 # define CONSOLE_COLOR_GREEN 0x07E0 # define CONSOLE_COLOR_YELLOW 0xFFE0 # define CONSOLE_COLOR_BLUE 0x001F # define CONSOLE_COLOR_MAGENTA 0xF81F # define CONSOLE_COLOR_CYAN 0x07FF # define CONSOLE_COLOR_GREY 0xC618 # define CONSOLE_COLOR_WHITE 0xffff /* Must remain last / highest */ |
8655b6f86 * Clean up tools/... |
271 |
#endif /* color definitions */ |
604c7d4a5 common/lcd_consol... |
272 273 274 275 276 277 278 |
#if LCD_BPP == LCD_COLOR16 #define fbptr_t ushort #elif LCD_BPP == LCD_COLOR32 #define fbptr_t u32 #else #define fbptr_t uchar #endif |
8655b6f86 * Clean up tools/... |
279 |
#ifndef PAGE_SIZE |
c8d2febcc lcd: various clea... |
280 |
#define PAGE_SIZE 4096 |
8655b6f86 * Clean up tools/... |
281 |
#endif |
6cbf5de70 dm: lcd: Avoid us... |
282 |
#endif /* !CONFIG_DM_VIDEO */ |
8655b6f86 * Clean up tools/... |
283 |
#endif /* _LCD_H_ */ |