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