1 /* SPDX-License-Identifier: GPL-2.0+ */
2 /*
3  * Copyright (C) 2014, Compulab Ltd - http://compulab.co.il/
4  */
5 
6 /* By default we scroll by a single line */
7 
8 struct console_t {
9 	short curr_col, curr_row;
10 	short cols, rows;
11 	void *fbbase;
12 	u32 lcdsizex, lcdsizey, lcdrot;
13 	void (*fp_putc_xy)(struct console_t *pcons, ushort x, ushort y, char c);
14 	void (*fp_console_moverow)(struct console_t *pcons,
15 				   u32 rowdst, u32 rowsrc);
16 	void (*fp_console_setrow)(struct console_t *pcons, u32 row, int clr);
17 };
18 
19 /**
20  * console_calc_rowcol() - calculate available rows / columns wihtin a given
21  * screen-size based on used VIDEO_FONT.
22  *
23  * @pcons: Pointer to struct console_t
24  * @sizex: size X of the screen in pixel
25  * @sizey: size Y of the screen in pixel
26  */
27 void console_calc_rowcol(struct console_t *pcons, u32 sizex, u32 sizey);
28 /**
29  * lcd_init_console() - Initialize lcd console parameters
30  *
31  * Setup the address of console base, and the number of rows and columns the
32  * console has.
33  *
34  * @address: Console base address
35  * @vl_rows: Number of rows in the console
36  * @vl_cols: Number of columns in the console
37  * @vl_rot: Rotation of display in degree (0 - 90 - 180 - 270) counterlockwise
38  */
39 void lcd_init_console(void *address, int vl_cols, int vl_rows, int vl_rot);
40 /**
41  * lcd_set_col() - Set the number of the current lcd console column
42  *
43  * Set the number of the console column where the cursor is.
44  *
45  * @col: Column number
46  */
47 void lcd_set_col(short col);
48 
49 /**
50  * lcd_set_row() - Set the number of the current lcd console row
51  *
52  * Set the number of the console row where the cursor is.
53  *
54  * @row: Row number
55  */
56 void lcd_set_row(short row);
57 
58 /**
59  * lcd_position_cursor() - Position the cursor on the screen
60  *
61  * Position the cursor at the given coordinates on the screen.
62  *
63  * @col: Column number
64  * @row: Row number
65  */
66 void lcd_position_cursor(unsigned col, unsigned row);
67 
68 /**
69  * lcd_get_screen_rows() - Get the total number of screen rows
70  *
71  * @return: Number of screen rows
72  */
73 int lcd_get_screen_rows(void);
74 
75 /**
76  * lcd_get_screen_columns() - Get the total number of screen columns
77  *
78  * @return: Number of screen columns
79  */
80 int lcd_get_screen_columns(void);
81 
82 /**
83  * lcd_putc() - Print to screen a single character at the location of the cursor
84  *
85  * @c: The character to print
86  */
87 void lcd_putc(const char c);
88 
89 /**
90  * lcd_puts() - Print to screen a string at the location of the cursor
91  *
92  * @s: The string to print
93  */
94 void lcd_puts(const char *s);
95 
96 /**
97  * lcd_printf() - Print to screen a formatted string at location of the cursor
98  *
99  * @fmt: The formatted string to print
100  * @...: The arguments for the formatted string
101  */
102 void lcd_printf(const char *fmt, ...);
103