Blame view
include/lcd.h
7.41 KB
83d290c56 SPDX: Convert all... |
1 |
/* SPDX-License-Identifier: GPL-2.0+ */ |
fe8c2806c Initial revision |
2 |
/* |
8655b6f86 * Clean up tools/... |
3 |
* MPC823 and PXA LCD Controller |
fe8c2806c Initial revision |
4 5 6 7 8 9 |
* * Modeled after video interface by Paolo Scaffardi * * * (C) Copyright 2001 * Wolfgang Denk, DENX Software Engineering, wd@denx.de. |
fe8c2806c Initial revision |
10 11 12 13 |
*/ #ifndef _LCD_H_ #define _LCD_H_ |
904672ee4 lcd: refactor lcd... |
14 |
#include <lcd_console.h> |
c8d2febcc lcd: various clea... |
15 16 17 18 |
#if defined(CONFIG_CMD_BMP) || defined(CONFIG_SPLASH_SCREEN) #include <bmp_layout.h> #include <asm/byteorder.h> #endif |
fe8c2806c Initial revision |
19 |
|
6cbf5de70 dm: lcd: Avoid us... |
20 21 22 23 24 |
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 ... |
25 |
extern char lcd_is_enabled; |
8655b6f86 * Clean up tools/... |
26 |
extern int lcd_line_length; |
6111722a9 video: move exter... |
27 |
extern struct vidinfo panel_info; |
6b035141f common/lcd: cosme... |
28 29 |
void lcd_ctrl_init(void *lcdbase); void lcd_enable(void); |
6b035141f common/lcd: cosme... |
30 |
void lcd_setcolreg(ushort regno, ushort red, ushort green, ushort blue); |
237742f73 MLK-12425-2 video... |
31 |
void lcd_initcolregs (void); |
6111722a9 video: move exter... |
32 |
|
9a8efc460 lcd: Add support ... |
33 34 35 36 37 38 39 |
/** * 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... |
40 |
#if defined(CONFIG_CPU_PXA25X) || defined(CONFIG_CPU_PXA27X) || \ |
abc20aba1 PXA: Rename CONFI... |
41 |
defined CONFIG_CPU_MONAHANS |
baaa7dd70 lcd: move platfor... |
42 |
#include <pxa_lcd.h> |
f6b690e65 video: atmel/lcd:... |
43 |
#elif defined(CONFIG_ATMEL_LCD) || defined(CONFIG_ATMEL_HLCD) |
baaa7dd70 lcd: move platfor... |
44 |
#include <atmel_lcd.h> |
559a05cc3 LCD: add data str... |
45 |
#elif defined(CONFIG_EXYNOS_FB) |
baaa7dd70 lcd: move platfor... |
46 |
#include <exynos_lcd.h> |
237742f73 MLK-12425-2 video... |
47 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 |
#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... |
105 |
#else |
b245e65ee LCD: support 8bpp... |
106 107 108 |
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... |
109 |
ushort vl_rot; /* Rotation of Display (0, 1, 2, 3) */ |
b245e65ee LCD: support 8bpp... |
110 |
u_char vl_bpix; /* Bits per pixel, 0 = 1 */ |
b245e65ee LCD: support 8bpp... |
111 |
ushort *cmap; /* Pointer to the colormap */ |
b245e65ee LCD: support 8bpp... |
112 113 |
void *priv; /* Pointer to driver-specific data */ } vidinfo_t; |
38b550877 lcd: split config... |
114 115 116 117 118 |
static __maybe_unused ushort *configuration_get_cmap(void) { return panel_info.cmap; } |
baaa7dd70 lcd: move platfor... |
119 |
#endif |
8655b6f86 * Clean up tools/... |
120 |
|
38b550877 lcd: split config... |
121 |
ushort *configuration_get_cmap(void); |
60e974192 lcd.h: define ext... |
122 |
extern vidinfo_t panel_info; |
c8d2febcc lcd: various clea... |
123 124 125 126 127 |
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 |
128 |
|
395166cff lcd: Provide an A... |
129 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 |
/** * 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... |
158 159 160 161 162 163 164 165 166 167 168 169 170 171 |
* 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... |
172 173 174 175 176 177 |
* 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... |
178 179 |
/* Allow boards to customize the information displayed */ void lcd_show_board_info(void); |
8655b6f86 * Clean up tools/... |
180 |
|
676d319ef lcd: Add CONFIG_L... |
181 182 |
/* Return the size of the LCD frame buffer, and the line length */ int lcd_get_size(int *line_length); |
7d95f2a32 sandbox: Add LCD ... |
183 184 |
/* Update the LCD / flush the cache */ void lcd_sync(void); |
8655b6f86 * Clean up tools/... |
185 186 187 188 189 |
/* * 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... |
190 |
#define CONFIG_SYS_HIGH 0 /* Pins are active high */ |
6b035141f common/lcd: cosme... |
191 |
#define CONFIG_SYS_LOW 1 /* Pins are active low */ |
8655b6f86 * Clean up tools/... |
192 193 194 195 196 197 |
#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... |
198 |
#define LCD_COLOR32 5 |
c8d2febcc lcd: various clea... |
199 |
|
88804d19e * Patch by Detlev... |
200 |
#if defined(CONFIG_LCD_INFO_BELOW_LOGO) |
c8d2febcc lcd: various clea... |
201 202 |
#define LCD_INFO_X 0 #define LCD_INFO_Y (BMP_LOGO_HEIGHT + VIDEO_FONT_HEIGHT) |
8655b6f86 * Clean up tools/... |
203 |
#elif defined(CONFIG_LCD_LOGO) |
c8d2febcc lcd: various clea... |
204 205 |
#define LCD_INFO_X (BMP_LOGO_WIDTH + 4 * VIDEO_FONT_WIDTH) #define LCD_INFO_Y VIDEO_FONT_HEIGHT |
8655b6f86 * Clean up tools/... |
206 |
#else |
c8d2febcc lcd: various clea... |
207 208 |
#define LCD_INFO_X VIDEO_FONT_WIDTH #define LCD_INFO_Y VIDEO_FONT_HEIGHT |
8655b6f86 * Clean up tools/... |
209 210 211 212 |
#endif /* Default to 8bpp if bit depth not specified */ #ifndef LCD_BPP |
c8d2febcc lcd: various clea... |
213 |
#define LCD_BPP LCD_COLOR8 |
8655b6f86 * Clean up tools/... |
214 |
#endif |
c8d2febcc lcd: various clea... |
215 |
|
237742f73 MLK-12425-2 video... |
216 217 218 219 220 221 222 223 224 |
#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/... |
225 |
#ifndef LCD_DF |
c8d2febcc lcd: various clea... |
226 |
#define LCD_DF 1 |
8655b6f86 * Clean up tools/... |
227 228 229 230 231 |
#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)) |
237742f73 MLK-12425-2 video... |
232 233 234 235 236 237 238 239 |
#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/... |
240 241 242 243 244 245 246 247 |
# 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... |
248 |
# define CONSOLE_COLOR_WHITE 15 /* Must remain last / highest */ |
57d76a89b Add support for 3... |
249 |
#elif LCD_BPP == LCD_COLOR32 |
c8d2febcc lcd: various clea... |
250 251 252 253 254 255 256 257 258 259 260 |
#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... |
261 262 263 264 265 266 267 268 269 |
# 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/... |
270 |
#endif /* color definitions */ |
604c7d4a5 common/lcd_consol... |
271 272 273 274 275 276 277 |
#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/... |
278 |
#ifndef PAGE_SIZE |
c8d2febcc lcd: various clea... |
279 |
#define PAGE_SIZE 4096 |
8655b6f86 * Clean up tools/... |
280 |
#endif |
6cbf5de70 dm: lcd: Avoid us... |
281 |
#endif /* !CONFIG_DM_VIDEO */ |
8655b6f86 * Clean up tools/... |
282 |
#endif /* _LCD_H_ */ |