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