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