xref: /openbmc/u-boot/include/lcd_console.h (revision e8f80a5a)
1*83d290c5STom Rini /* SPDX-License-Identifier: GPL-2.0+ */
2904672eeSNikita Kiryanov /*
3904672eeSNikita Kiryanov  * Copyright (C) 2014, Compulab Ltd - http://compulab.co.il/
4904672eeSNikita Kiryanov  */
5904672eeSNikita Kiryanov 
6904672eeSNikita Kiryanov /* By default we scroll by a single line */
7904672eeSNikita Kiryanov 
8604c7d4aSHannes Petermaier struct console_t {
9604c7d4aSHannes Petermaier 	short curr_col, curr_row;
10604c7d4aSHannes Petermaier 	short cols, rows;
11604c7d4aSHannes Petermaier 	void *fbbase;
12604c7d4aSHannes Petermaier 	u32 lcdsizex, lcdsizey, lcdrot;
13604c7d4aSHannes Petermaier 	void (*fp_putc_xy)(struct console_t *pcons, ushort x, ushort y, char c);
14604c7d4aSHannes Petermaier 	void (*fp_console_moverow)(struct console_t *pcons,
15604c7d4aSHannes Petermaier 				   u32 rowdst, u32 rowsrc);
16604c7d4aSHannes Petermaier 	void (*fp_console_setrow)(struct console_t *pcons, u32 row, int clr);
17604c7d4aSHannes Petermaier };
18604c7d4aSHannes Petermaier 
19604c7d4aSHannes Petermaier /**
20604c7d4aSHannes Petermaier  * console_calc_rowcol() - calculate available rows / columns wihtin a given
21604c7d4aSHannes Petermaier  * screen-size based on used VIDEO_FONT.
22604c7d4aSHannes Petermaier  *
23604c7d4aSHannes Petermaier  * @pcons: Pointer to struct console_t
24604c7d4aSHannes Petermaier  * @sizex: size X of the screen in pixel
25604c7d4aSHannes Petermaier  * @sizey: size Y of the screen in pixel
26604c7d4aSHannes Petermaier  */
27604c7d4aSHannes Petermaier void console_calc_rowcol(struct console_t *pcons, u32 sizex, u32 sizey);
28904672eeSNikita Kiryanov /**
29904672eeSNikita Kiryanov  * lcd_init_console() - Initialize lcd console parameters
30904672eeSNikita Kiryanov  *
31904672eeSNikita Kiryanov  * Setup the address of console base, and the number of rows and columns the
32904672eeSNikita Kiryanov  * console has.
33904672eeSNikita Kiryanov  *
34904672eeSNikita Kiryanov  * @address: Console base address
35604c7d4aSHannes Petermaier  * @vl_rows: Number of rows in the console
36604c7d4aSHannes Petermaier  * @vl_cols: Number of columns in the console
37604c7d4aSHannes Petermaier  * @vl_rot: Rotation of display in degree (0 - 90 - 180 - 270) counterlockwise
38904672eeSNikita Kiryanov  */
39604c7d4aSHannes Petermaier void lcd_init_console(void *address, int vl_cols, int vl_rows, int vl_rot);
40904672eeSNikita Kiryanov /**
41904672eeSNikita Kiryanov  * lcd_set_col() - Set the number of the current lcd console column
42904672eeSNikita Kiryanov  *
43904672eeSNikita Kiryanov  * Set the number of the console column where the cursor is.
44904672eeSNikita Kiryanov  *
45904672eeSNikita Kiryanov  * @col: Column number
46904672eeSNikita Kiryanov  */
47904672eeSNikita Kiryanov void lcd_set_col(short col);
48904672eeSNikita Kiryanov 
49904672eeSNikita Kiryanov /**
50904672eeSNikita Kiryanov  * lcd_set_row() - Set the number of the current lcd console row
51904672eeSNikita Kiryanov  *
52904672eeSNikita Kiryanov  * Set the number of the console row where the cursor is.
53904672eeSNikita Kiryanov  *
54904672eeSNikita Kiryanov  * @row: Row number
55904672eeSNikita Kiryanov  */
56904672eeSNikita Kiryanov void lcd_set_row(short row);
57904672eeSNikita Kiryanov 
58904672eeSNikita Kiryanov /**
59904672eeSNikita Kiryanov  * lcd_position_cursor() - Position the cursor on the screen
60904672eeSNikita Kiryanov  *
61904672eeSNikita Kiryanov  * Position the cursor at the given coordinates on the screen.
62904672eeSNikita Kiryanov  *
63904672eeSNikita Kiryanov  * @col: Column number
64904672eeSNikita Kiryanov  * @row: Row number
65904672eeSNikita Kiryanov  */
66904672eeSNikita Kiryanov void lcd_position_cursor(unsigned col, unsigned row);
67904672eeSNikita Kiryanov 
68904672eeSNikita Kiryanov /**
69904672eeSNikita Kiryanov  * lcd_get_screen_rows() - Get the total number of screen rows
70904672eeSNikita Kiryanov  *
71904672eeSNikita Kiryanov  * @return: Number of screen rows
72904672eeSNikita Kiryanov  */
73904672eeSNikita Kiryanov int lcd_get_screen_rows(void);
74904672eeSNikita Kiryanov 
75904672eeSNikita Kiryanov /**
76904672eeSNikita Kiryanov  * lcd_get_screen_columns() - Get the total number of screen columns
77904672eeSNikita Kiryanov  *
78904672eeSNikita Kiryanov  * @return: Number of screen columns
79904672eeSNikita Kiryanov  */
80904672eeSNikita Kiryanov int lcd_get_screen_columns(void);
81904672eeSNikita Kiryanov 
82904672eeSNikita Kiryanov /**
83904672eeSNikita Kiryanov  * lcd_putc() - Print to screen a single character at the location of the cursor
84904672eeSNikita Kiryanov  *
85904672eeSNikita Kiryanov  * @c: The character to print
86904672eeSNikita Kiryanov  */
87904672eeSNikita Kiryanov void lcd_putc(const char c);
88904672eeSNikita Kiryanov 
89904672eeSNikita Kiryanov /**
90904672eeSNikita Kiryanov  * lcd_puts() - Print to screen a string at the location of the cursor
91904672eeSNikita Kiryanov  *
92904672eeSNikita Kiryanov  * @s: The string to print
93904672eeSNikita Kiryanov  */
94904672eeSNikita Kiryanov void lcd_puts(const char *s);
95904672eeSNikita Kiryanov 
96904672eeSNikita Kiryanov /**
97904672eeSNikita Kiryanov  * lcd_printf() - Print to screen a formatted string at location of the cursor
98904672eeSNikita Kiryanov  *
99904672eeSNikita Kiryanov  * @fmt: The formatted string to print
100904672eeSNikita Kiryanov  * @...: The arguments for the formatted string
101904672eeSNikita Kiryanov  */
102904672eeSNikita Kiryanov void lcd_printf(const char *fmt, ...);
103