xref: /rk3399_rockchip-uboot/include/lcd_console.h (revision b87ca80b9b1825b44341aa4bcd28c26a7860fd18)
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 
9*604c7d4aSHannes Petermaier struct console_t {
10*604c7d4aSHannes Petermaier 	short curr_col, curr_row;
11*604c7d4aSHannes Petermaier 	short cols, rows;
12*604c7d4aSHannes Petermaier 	void *fbbase;
13*604c7d4aSHannes Petermaier 	u32 lcdsizex, lcdsizey, lcdrot;
14*604c7d4aSHannes Petermaier 	void (*fp_putc_xy)(struct console_t *pcons, ushort x, ushort y, char c);
15*604c7d4aSHannes Petermaier 	void (*fp_console_moverow)(struct console_t *pcons,
16*604c7d4aSHannes Petermaier 				   u32 rowdst, u32 rowsrc);
17*604c7d4aSHannes Petermaier 	void (*fp_console_setrow)(struct console_t *pcons, u32 row, int clr);
18*604c7d4aSHannes Petermaier };
19*604c7d4aSHannes Petermaier 
20*604c7d4aSHannes Petermaier /**
21*604c7d4aSHannes Petermaier  * console_calc_rowcol() - calculate available rows / columns wihtin a given
22*604c7d4aSHannes Petermaier  * screen-size based on used VIDEO_FONT.
23*604c7d4aSHannes Petermaier  *
24*604c7d4aSHannes Petermaier  * @pcons: Pointer to struct console_t
25*604c7d4aSHannes Petermaier  * @sizex: size X of the screen in pixel
26*604c7d4aSHannes Petermaier  * @sizey: size Y of the screen in pixel
27*604c7d4aSHannes Petermaier  */
28*604c7d4aSHannes Petermaier void console_calc_rowcol(struct console_t *pcons, u32 sizex, u32 sizey);
29904672eeSNikita Kiryanov /**
30904672eeSNikita Kiryanov  * lcd_init_console() - Initialize lcd console parameters
31904672eeSNikita Kiryanov  *
32904672eeSNikita Kiryanov  * Setup the address of console base, and the number of rows and columns the
33904672eeSNikita Kiryanov  * console has.
34904672eeSNikita Kiryanov  *
35904672eeSNikita Kiryanov  * @address: Console base address
36*604c7d4aSHannes Petermaier  * @vl_rows: Number of rows in the console
37*604c7d4aSHannes Petermaier  * @vl_cols: Number of columns in the console
38*604c7d4aSHannes Petermaier  * @vl_rot: Rotation of display in degree (0 - 90 - 180 - 270) counterlockwise
39904672eeSNikita Kiryanov  */
40*604c7d4aSHannes Petermaier void lcd_init_console(void *address, int vl_cols, int vl_rows, int vl_rot);
41904672eeSNikita Kiryanov /**
42904672eeSNikita Kiryanov  * lcd_set_col() - Set the number of the current lcd console column
43904672eeSNikita Kiryanov  *
44904672eeSNikita Kiryanov  * Set the number of the console column where the cursor is.
45904672eeSNikita Kiryanov  *
46904672eeSNikita Kiryanov  * @col: Column number
47904672eeSNikita Kiryanov  */
48904672eeSNikita Kiryanov void lcd_set_col(short col);
49904672eeSNikita Kiryanov 
50904672eeSNikita Kiryanov /**
51904672eeSNikita Kiryanov  * lcd_set_row() - Set the number of the current lcd console row
52904672eeSNikita Kiryanov  *
53904672eeSNikita Kiryanov  * Set the number of the console row where the cursor is.
54904672eeSNikita Kiryanov  *
55904672eeSNikita Kiryanov  * @row: Row number
56904672eeSNikita Kiryanov  */
57904672eeSNikita Kiryanov void lcd_set_row(short row);
58904672eeSNikita Kiryanov 
59904672eeSNikita Kiryanov /**
60904672eeSNikita Kiryanov  * lcd_position_cursor() - Position the cursor on the screen
61904672eeSNikita Kiryanov  *
62904672eeSNikita Kiryanov  * Position the cursor at the given coordinates on the screen.
63904672eeSNikita Kiryanov  *
64904672eeSNikita Kiryanov  * @col: Column number
65904672eeSNikita Kiryanov  * @row: Row number
66904672eeSNikita Kiryanov  */
67904672eeSNikita Kiryanov void lcd_position_cursor(unsigned col, unsigned row);
68904672eeSNikita Kiryanov 
69904672eeSNikita Kiryanov /**
70904672eeSNikita Kiryanov  * lcd_get_screen_rows() - Get the total number of screen rows
71904672eeSNikita Kiryanov  *
72904672eeSNikita Kiryanov  * @return: Number of screen rows
73904672eeSNikita Kiryanov  */
74904672eeSNikita Kiryanov int lcd_get_screen_rows(void);
75904672eeSNikita Kiryanov 
76904672eeSNikita Kiryanov /**
77904672eeSNikita Kiryanov  * lcd_get_screen_columns() - Get the total number of screen columns
78904672eeSNikita Kiryanov  *
79904672eeSNikita Kiryanov  * @return: Number of screen columns
80904672eeSNikita Kiryanov  */
81904672eeSNikita Kiryanov int lcd_get_screen_columns(void);
82904672eeSNikita Kiryanov 
83904672eeSNikita Kiryanov /**
84904672eeSNikita Kiryanov  * lcd_putc() - Print to screen a single character at the location of the cursor
85904672eeSNikita Kiryanov  *
86904672eeSNikita Kiryanov  * @c: The character to print
87904672eeSNikita Kiryanov  */
88904672eeSNikita Kiryanov void lcd_putc(const char c);
89904672eeSNikita Kiryanov 
90904672eeSNikita Kiryanov /**
91904672eeSNikita Kiryanov  * lcd_puts() - Print to screen a string at the location of the cursor
92904672eeSNikita Kiryanov  *
93904672eeSNikita Kiryanov  * @s: The string to print
94904672eeSNikita Kiryanov  */
95904672eeSNikita Kiryanov void lcd_puts(const char *s);
96904672eeSNikita Kiryanov 
97904672eeSNikita Kiryanov /**
98904672eeSNikita Kiryanov  * lcd_printf() - Print to screen a formatted string at location of the cursor
99904672eeSNikita Kiryanov  *
100904672eeSNikita Kiryanov  * @fmt: The formatted string to print
101904672eeSNikita Kiryanov  * @...: The arguments for the formatted string
102904672eeSNikita Kiryanov  */
103904672eeSNikita Kiryanov void lcd_printf(const char *fmt, ...);
104