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