Hi Lucas, On Fri, Sep 28, 2012 at 7:51 AM, Lucas Stach <d...@lynxeye.de> wrote: > Am Donnerstag, den 27.09.2012, 17:44 -0700 schrieb Simon Glass: >> When the cursor position gets to the end of the LCD console we normally >> scroll by one line. This adds an option to increase that value. >> >> Console scrolling is often slow, and if a large amount of output is >> being sent, increasing this option to 10 or so will speed things up >> considerably. >> >> Signed-off-by: Simon Glass <s...@chromium.org> >> --- >> Changes in v3: >> - Fix tiny bug in mult-line lcd scrolling >> >> Changes in v4: >> - Use CONFIG_CONSOLE_SCROLL_LINES instead of CONSOLE_SCROLL_LINES >> - Put default CONFIG_CONSOLE_SCROLL_LINES at top of file >> >> README | 6 ++++++ >> common/lcd.c | 18 +++++++++++++++--- >> 2 files changed, 21 insertions(+), 3 deletions(-) >> >> diff --git a/README b/README >> index 1d0ce50..14b1f83 100644 >> --- a/README >> +++ b/README >> @@ -1449,6 +1449,12 @@ The following options need to be configured: >> here, since it is cheaper to change data cache settings on >> a per-section basis. >> >> + CONFIG_CONSOLE_SCROLL_LINES >> + >> + When the console need to be scrolled, this is the number of >> + lines to scroll by. It defaults to 1. Increasing this makes >> + the console jump but can help speed up operation when scrolling >> + is slow. >> >> - Splash Screen Support: CONFIG_SPLASH_SCREEN >> >> diff --git a/common/lcd.c b/common/lcd.c >> index 74fa3f9..460f0ca 100644 >> --- a/common/lcd.c >> +++ b/common/lcd.c >> @@ -76,6 +76,11 @@ >> #define CONFIG_LCD_ALIGNMENT PAGE_SIZE >> #endif >> >> +/* By default we scroll by a single line */ >> +#ifndef CONFIG_CONSOLE_SCROLL_LINES >> +#define CONFIG_CONSOLE_SCROLL_LINES 1 >> +#endif >> + >> DECLARE_GLOBAL_DATA_PTR; >> >> ulong lcd_setmem (ulong addr); >> @@ -131,12 +136,20 @@ void lcd_set_flush_dcache(int flush) >> >> static void console_scrollup(void) >> { >> + const int rows = CONFIG_CONSOLE_SCROLL_LINES; >> + >> /* Copy up rows ignoring the first one */ > Comment is inaccurate as you possibly ignore more than the first line. > >> - memcpy(CONSOLE_ROW_FIRST, CONSOLE_ROW_SECOND, CONSOLE_SCROLL_SIZE); >> + memcpy(CONSOLE_ROW_FIRST, >> + lcd_console_address + CONSOLE_ROW_SIZE * rows, >> + CONSOLE_SIZE - CONSOLE_ROW_SIZE * rows); >> >> /* Clear the last one */ > Same as above.
OK thanks, I will tidy these up. > >> - memset(CONSOLE_ROW_LAST, COLOR_MASK(lcd_color_bg), CONSOLE_ROW_SIZE); >> + memset(lcd_console_address + CONSOLE_SIZE - CONSOLE_ROW_SIZE * rows, >> + COLOR_MASK(lcd_color_bg), >> + CONSOLE_ROW_SIZE * rows); >> + >> lcd_sync(); >> + console_row -= rows; >> } >> >> /*----------------------------------------------------------------------*/ >> @@ -165,7 +178,6 @@ static inline void console_newline(void) >> if (console_row >= CONSOLE_ROWS) { >> /* Scroll everything up */ >> console_scrollup(); >> - --console_row; >> } else { >> lcd_sync(); >> } > > Regards, Simon _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot