Dear Pali Rohár, > * console_cursor_fix - fix cursor position (check for out of screen) > * console_cursor_up, console_cursor_down, console_cursor_left, > console_cursor_right, console_cursor_set_position for change cursor > position * console_newline - added param to specify count of creating new > lines * console_previewsline - opposite of console_newline
How/where do you use these? Documentation entry is missing and there're no comments in the code. > Signed-off-by: Pali Rohár <pali.ro...@gmail.com> > --- > Changes since original version: > - Fixed commit message > > drivers/video/cfb_console.c | 64 > +++++++++++++++++++++++++++++++++++++++---- 1 file changed, 58 > insertions(+), 6 deletions(-) > > diff --git a/drivers/video/cfb_console.c b/drivers/video/cfb_console.c > index 0d1e6b2..43eb994 100644 > --- a/drivers/video/cfb_console.c > +++ b/drivers/video/cfb_console.c > @@ -771,9 +771,54 @@ static void console_back(void) > } > } > > -static void console_newline(void) > +static void console_cursor_fix(void) > { > - console_row++; > + if (console_row < 0) > + console_row = 0; > + if (console_row >= CONSOLE_ROWS) > + console_row = CONSOLE_ROWS-1; > + if (console_col < 0) > + console_col = 0; > + if (console_col >= CONSOLE_COLS) > + console_col = CONSOLE_COLS-1; > +} > + > +static void console_cursor_up(int n) > +{ > + console_row -= n; > + console_cursor_fix(); > +} > + > +static void console_cursor_down(int n) > +{ > + console_row += n; > + console_cursor_fix(); > +} > + > +static void console_cursor_left(int n) > +{ > + console_col -= n; > + console_cursor_fix(); > +} > + > +static void console_cursor_right(int n) > +{ > + console_col += n; > + console_cursor_fix(); > +} > + > +static void console_cursor_set_position(int row, int col) > +{ > + if (console_row != -1) > + console_row = row; > + if (console_col != -1) > + console_col = col; > + console_cursor_fix(); > +} > + > +static void console_newline(int n) > +{ > + console_row += n; > console_col = 0; > > /* Check if we need to scroll the terminal */ > @@ -782,10 +827,17 @@ static void console_newline(void) > console_scrollup(); > > /* Decrement row number */ > - console_row--; > + console_row = CONSOLE_ROWS-1; > } > } > > +static void console_previewsline(int n) > +{ > + /* FIXME: also scroll terminal ? */ > + console_row -= n; > + console_cursor_fix(); > +} > + > static void console_cr(void) > { > console_col = 0; > @@ -804,7 +856,7 @@ void video_putc(const char c) > > case '\n': /* next line */ > if (console_col || (!console_col && nl)) > - console_newline(); > + console_newline(1); > nl = 1; > break; > > @@ -813,7 +865,7 @@ void video_putc(const char c) > console_col &= ~0x0007; > > if (console_col >= CONSOLE_COLS) > - console_newline(); > + console_newline(1); > break; > > case 8: /* backspace */ > @@ -827,7 +879,7 @@ void video_putc(const char c) > > /* check for newline */ > if (console_col >= CONSOLE_COLS) { > - console_newline(); > + console_newline(1); > nl = 0; > } > } _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot