Blame view

include/lcd.h 5.53 KB
83d290c56   Tom Rini   SPDX: Convert all...
1
  /* SPDX-License-Identifier: GPL-2.0+ */
fe8c2806c   wdenk   Initial revision
2
  /*
8655b6f86   wdenk   * Clean up tools/...
3
   * MPC823 and PXA LCD Controller
fe8c2806c   wdenk   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   wdenk   Initial revision
10
11
12
13
   */
  
  #ifndef _LCD_H_
  #define _LCD_H_
904672ee4   Nikita Kiryanov   lcd: refactor lcd...
14
  #include <lcd_console.h>
c8d2febcc   Nikita Kiryanov   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   wdenk   Initial revision
19

6cbf5de70   Simon Glass   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   wdenk   * Patches by Udi ...
25
  extern char lcd_is_enabled;
8655b6f86   wdenk   * Clean up tools/...
26
  extern int lcd_line_length;
6111722a9   Alessandro Rubini   video: move exter...
27
  extern struct vidinfo panel_info;
6b035141f   Jeroen Hofstee   common/lcd: cosme...
28
29
  void lcd_ctrl_init(void *lcdbase);
  void lcd_enable(void);
6b035141f   Jeroen Hofstee   common/lcd: cosme...
30
  void lcd_setcolreg(ushort regno, ushort red, ushort green, ushort blue);
3c1ecde40   Simon Glass   common: Move lcd_...
31
  ulong lcd_setmem(ulong addr);
6111722a9   Alessandro Rubini   video: move exter...
32

9a8efc460   Simon Glass   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   Heiko Schocher   powerpc, 8xx: rem...
40
  #if defined(CONFIG_CPU_PXA25X) || defined(CONFIG_CPU_PXA27X) || \
abc20aba1   Marek Vasut   PXA: Rename CONFI...
41
  	defined CONFIG_CPU_MONAHANS
baaa7dd70   Nikita Kiryanov   lcd: move platfor...
42
  #include <pxa_lcd.h>
f6b690e65   Bo Shen   video: atmel/lcd:...
43
  #elif defined(CONFIG_ATMEL_LCD) || defined(CONFIG_ATMEL_HLCD)
baaa7dd70   Nikita Kiryanov   lcd: move platfor...
44
  #include <atmel_lcd.h>
559a05cc3   Donghwa Lee   LCD: add data str...
45
  #elif defined(CONFIG_EXYNOS_FB)
baaa7dd70   Nikita Kiryanov   lcd: move platfor...
46
  #include <exynos_lcd.h>
b245e65ee   Guennadi Liakhovetski   LCD: support 8bpp...
47
  #else
b245e65ee   Guennadi Liakhovetski   LCD: support 8bpp...
48
49
50
  typedef struct vidinfo {
  	ushort	vl_col;		/* Number of columns (i.e. 160) */
  	ushort	vl_row;		/* Number of rows (i.e. 100) */
604c7d4a5   Hannes Petermaier   common/lcd_consol...
51
  	ushort	vl_rot;		/* Rotation of Display (0, 1, 2, 3) */
b245e65ee   Guennadi Liakhovetski   LCD: support 8bpp...
52
  	u_char	vl_bpix;	/* Bits per pixel, 0 = 1 */
b245e65ee   Guennadi Liakhovetski   LCD: support 8bpp...
53
  	ushort	*cmap;		/* Pointer to the colormap */
b245e65ee   Guennadi Liakhovetski   LCD: support 8bpp...
54
55
  	void	*priv;		/* Pointer to driver-specific data */
  } vidinfo_t;
38b550877   Nikita Kiryanov   lcd: split config...
56
57
58
59
60
  
  static __maybe_unused ushort *configuration_get_cmap(void)
  {
  	return panel_info.cmap;
  }
baaa7dd70   Nikita Kiryanov   lcd: move platfor...
61
  #endif
8655b6f86   wdenk   * Clean up tools/...
62

38b550877   Nikita Kiryanov   lcd: split config...
63
  ushort *configuration_get_cmap(void);
60e974192   Alessandro Rubini   lcd.h: define ext...
64
  extern vidinfo_t panel_info;
c8d2febcc   Nikita Kiryanov   lcd: various clea...
65
66
67
68
69
  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   wdenk   Initial revision
70

395166cff   Vadim Bendebury   lcd: Provide an A...
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
  /**
   * 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   Nikita Kiryanov   lcd: introduce ge...
100
101
102
103
104
105
106
107
108
109
110
111
112
113
   * 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   Vadim Bendebury   lcd: Provide an A...
114
115
116
117
118
119
   * 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   Haavard Skinnemoen   lcd: Let the boar...
120
121
  /* Allow boards to customize the information displayed */
  void lcd_show_board_info(void);
8655b6f86   wdenk   * Clean up tools/...
122

676d319ef   Simon Glass   lcd: Add CONFIG_L...
123
124
  /* Return the size of the LCD frame buffer, and the line length */
  int lcd_get_size(int *line_length);
7d95f2a32   Simon Glass   sandbox: Add LCD ...
125
126
  /* Update the LCD / flush the cache */
  void lcd_sync(void);
8655b6f86   wdenk   * Clean up tools/...
127
128
129
130
131
  /*
   *  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   Jean-Christophe PLAGNIOL-VILLARD   rename CFG_ macro...
132
  #define CONFIG_SYS_HIGH	0	/* Pins are active high			*/
6b035141f   Jeroen Hofstee   common/lcd: cosme...
133
  #define CONFIG_SYS_LOW	1	/* Pins are active low			*/
8655b6f86   wdenk   * Clean up tools/...
134
135
136
137
138
139
  
  #define LCD_MONOCHROME	0
  #define LCD_COLOR2	1
  #define LCD_COLOR4	2
  #define LCD_COLOR8	3
  #define LCD_COLOR16	4
57d76a89b   Hannes Petermaier   Add support for 3...
140
  #define LCD_COLOR32	5
c8d2febcc   Nikita Kiryanov   lcd: various clea...
141

88804d19e   wdenk   * Patch by Detlev...
142
  #if defined(CONFIG_LCD_INFO_BELOW_LOGO)
c8d2febcc   Nikita Kiryanov   lcd: various clea...
143
144
  #define LCD_INFO_X		0
  #define LCD_INFO_Y		(BMP_LOGO_HEIGHT + VIDEO_FONT_HEIGHT)
8655b6f86   wdenk   * Clean up tools/...
145
  #elif defined(CONFIG_LCD_LOGO)
c8d2febcc   Nikita Kiryanov   lcd: various clea...
146
147
  #define LCD_INFO_X		(BMP_LOGO_WIDTH + 4 * VIDEO_FONT_WIDTH)
  #define LCD_INFO_Y		VIDEO_FONT_HEIGHT
8655b6f86   wdenk   * Clean up tools/...
148
  #else
c8d2febcc   Nikita Kiryanov   lcd: various clea...
149
150
  #define LCD_INFO_X		VIDEO_FONT_WIDTH
  #define LCD_INFO_Y		VIDEO_FONT_HEIGHT
8655b6f86   wdenk   * Clean up tools/...
151
152
153
154
  #endif
  
  /* Default to 8bpp if bit depth not specified */
  #ifndef LCD_BPP
c8d2febcc   Nikita Kiryanov   lcd: various clea...
155
  #define LCD_BPP			LCD_COLOR8
8655b6f86   wdenk   * Clean up tools/...
156
  #endif
c8d2febcc   Nikita Kiryanov   lcd: various clea...
157

8655b6f86   wdenk   * Clean up tools/...
158
  #ifndef LCD_DF
c8d2febcc   Nikita Kiryanov   lcd: various clea...
159
  #define LCD_DF			1
8655b6f86   wdenk   * Clean up tools/...
160
161
162
163
164
  #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))
f4469f50b   Nikita Kiryanov   lcd: remove LCD_M...
165
  #if LCD_BPP == LCD_COLOR8
8655b6f86   wdenk   * Clean up tools/...
166
167
168
169
170
171
172
173
  # 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   Nikita Kiryanov   lcd: various clea...
174
  # define CONSOLE_COLOR_WHITE	15		/* Must remain last / highest */
57d76a89b   Hannes Petermaier   Add support for 3...
175
  #elif LCD_BPP == LCD_COLOR32
c8d2febcc   Nikita Kiryanov   lcd: various clea...
176
177
178
179
180
181
182
183
184
185
186
  #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   Andreas Neubacher   lcd: fix the colo...
187
188
189
190
191
192
193
194
195
  # 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   wdenk   * Clean up tools/...
196
  #endif /* color definitions */
604c7d4a5   Hannes Petermaier   common/lcd_consol...
197
198
199
200
201
202
203
  #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   wdenk   * Clean up tools/...
204
  #ifndef PAGE_SIZE
c8d2febcc   Nikita Kiryanov   lcd: various clea...
205
  #define PAGE_SIZE	4096
8655b6f86   wdenk   * Clean up tools/...
206
  #endif
6cbf5de70   Simon Glass   dm: lcd: Avoid us...
207
  #endif /* !CONFIG_DM_VIDEO */
8655b6f86   wdenk   * Clean up tools/...
208
  #endif	/* _LCD_H_ */