xref: /openbmc/u-boot/include/lcd_console.h (revision 604c7d4a)
1904672eeSNikita Kiryanov /*
2904672eeSNikita Kiryanov  * Copyright (C) 2014, Compulab Ltd - http://compulab.co.il/
3904672eeSNikita Kiryanov  *
4904672eeSNikita Kiryanov  * SPDX-License-Identifier:	GPL-2.0+
5904672eeSNikita Kiryanov  */
6904672eeSNikita Kiryanov 
7904672eeSNikita Kiryanov /* By default we scroll by a single line */
8904672eeSNikita Kiryanov #ifndef CONFIG_CONSOLE_SCROLL_LINES
9904672eeSNikita Kiryanov #define CONFIG_CONSOLE_SCROLL_LINES 1
10904672eeSNikita Kiryanov #endif
11904672eeSNikita Kiryanov 
12*604c7d4aSHannes Petermaier struct console_t {
13*604c7d4aSHannes Petermaier 	short curr_col, curr_row;
14*604c7d4aSHannes Petermaier 	short cols, rows;
15*604c7d4aSHannes Petermaier 	void *fbbase;
16*604c7d4aSHannes Petermaier 	u32 lcdsizex, lcdsizey, lcdrot;
17*604c7d4aSHannes Petermaier 	void (*fp_putc_xy)(struct console_t *pcons, ushort x, ushort y, char c);
18*604c7d4aSHannes Petermaier 	void (*fp_console_moverow)(struct console_t *pcons,
19*604c7d4aSHannes Petermaier 				   u32 rowdst, u32 rowsrc);
20*604c7d4aSHannes Petermaier 	void (*fp_console_setrow)(struct console_t *pcons, u32 row, int clr);
21*604c7d4aSHannes Petermaier };
22*604c7d4aSHannes Petermaier 
23*604c7d4aSHannes Petermaier /**
24*604c7d4aSHannes Petermaier  * console_calc_rowcol() - calculate available rows / columns wihtin a given
25*604c7d4aSHannes Petermaier  * screen-size based on used VIDEO_FONT.
26*604c7d4aSHannes Petermaier  *
27*604c7d4aSHannes Petermaier  * @pcons: Pointer to struct console_t
28*604c7d4aSHannes Petermaier  * @sizex: size X of the screen in pixel
29*604c7d4aSHannes Petermaier  * @sizey: size Y of the screen in pixel
30*604c7d4aSHannes Petermaier  */
31*604c7d4aSHannes Petermaier void console_calc_rowcol(struct console_t *pcons, u32 sizex, u32 sizey);
32904672eeSNikita Kiryanov /**
33904672eeSNikita Kiryanov  * lcd_init_console() - Initialize lcd console parameters
34904672eeSNikita Kiryanov  *
35904672eeSNikita Kiryanov  * Setup the address of console base, and the number of rows and columns the
36904672eeSNikita Kiryanov  * console has.
37904672eeSNikita Kiryanov  *
38904672eeSNikita Kiryanov  * @address: Console base address
39*604c7d4aSHannes Petermaier  * @vl_rows: Number of rows in the console
40*604c7d4aSHannes Petermaier  * @vl_cols: Number of columns in the console
41*604c7d4aSHannes Petermaier  * @vl_rot: Rotation of display in degree (0 - 90 - 180 - 270) counterlockwise
42904672eeSNikita Kiryanov  */
43*604c7d4aSHannes Petermaier void lcd_init_console(void *address, int vl_cols, int vl_rows, int vl_rot);
44904672eeSNikita Kiryanov /**
45904672eeSNikita Kiryanov  * lcd_set_col() - Set the number of the current lcd console column
46904672eeSNikita Kiryanov  *
47904672eeSNikita Kiryanov  * Set the number of the console column where the cursor is.
48904672eeSNikita Kiryanov  *
49904672eeSNikita Kiryanov  * @col: Column number
50904672eeSNikita Kiryanov  */
51904672eeSNikita Kiryanov void lcd_set_col(short col);
52904672eeSNikita Kiryanov 
53904672eeSNikita Kiryanov /**
54904672eeSNikita Kiryanov  * lcd_set_row() - Set the number of the current lcd console row
55904672eeSNikita Kiryanov  *
56904672eeSNikita Kiryanov  * Set the number of the console row where the cursor is.
57904672eeSNikita Kiryanov  *
58904672eeSNikita Kiryanov  * @row: Row number
59904672eeSNikita Kiryanov  */
60904672eeSNikita Kiryanov void lcd_set_row(short row);
61904672eeSNikita Kiryanov 
62904672eeSNikita Kiryanov /**
63904672eeSNikita Kiryanov  * lcd_position_cursor() - Position the cursor on the screen
64904672eeSNikita Kiryanov  *
65904672eeSNikita Kiryanov  * Position the cursor at the given coordinates on the screen.
66904672eeSNikita Kiryanov  *
67904672eeSNikita Kiryanov  * @col: Column number
68904672eeSNikita Kiryanov  * @row: Row number
69904672eeSNikita Kiryanov  */
70904672eeSNikita Kiryanov void lcd_position_cursor(unsigned col, unsigned row);
71904672eeSNikita Kiryanov 
72904672eeSNikita Kiryanov /**
73904672eeSNikita Kiryanov  * lcd_get_screen_rows() - Get the total number of screen rows
74904672eeSNikita Kiryanov  *
75904672eeSNikita Kiryanov  * @return: Number of screen rows
76904672eeSNikita Kiryanov  */
77904672eeSNikita Kiryanov int lcd_get_screen_rows(void);
78904672eeSNikita Kiryanov 
79904672eeSNikita Kiryanov /**
80904672eeSNikita Kiryanov  * lcd_get_screen_columns() - Get the total number of screen columns
81904672eeSNikita Kiryanov  *
82904672eeSNikita Kiryanov  * @return: Number of screen columns
83904672eeSNikita Kiryanov  */
84904672eeSNikita Kiryanov int lcd_get_screen_columns(void);
85904672eeSNikita Kiryanov 
86904672eeSNikita Kiryanov /**
87904672eeSNikita Kiryanov  * lcd_putc() - Print to screen a single character at the location of the cursor
88904672eeSNikita Kiryanov  *
89904672eeSNikita Kiryanov  * @c: The character to print
90904672eeSNikita Kiryanov  */
91904672eeSNikita Kiryanov void lcd_putc(const char c);
92904672eeSNikita Kiryanov 
93904672eeSNikita Kiryanov /**
94904672eeSNikita Kiryanov  * lcd_puts() - Print to screen a string at the location of the cursor
95904672eeSNikita Kiryanov  *
96904672eeSNikita Kiryanov  * @s: The string to print
97904672eeSNikita Kiryanov  */
98904672eeSNikita Kiryanov void lcd_puts(const char *s);
99904672eeSNikita Kiryanov 
100904672eeSNikita Kiryanov /**
101904672eeSNikita Kiryanov  * lcd_printf() - Print to screen a formatted string at location of the cursor
102904672eeSNikita Kiryanov  *
103904672eeSNikita Kiryanov  * @fmt: The formatted string to print
104904672eeSNikita Kiryanov  * @...: The arguments for the formatted string
105904672eeSNikita Kiryanov  */
106904672eeSNikita Kiryanov void lcd_printf(const char *fmt, ...);
107