[U-Boot] [PATCH 1/2] lcd: allow to not draw the logo when clearing the screen

Jean-Christophe PLAGNIOL-VILLARD plagnioj at jcrosoft.com
Sun Jul 5 00:27:46 CEST 2009


On 00:17 Sun 05 Jul     , Wolfgang Denk wrote:
> Dear Jean-Christophe PLAGNIOL-VILLARD,
> 
> In message <1245613942-10693-1-git-send-email-plagnioj at jcrosoft.com> you wrote:
> > Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj at jcrosoft.com>
> > ---
> >  common/lcd.c |   23 ++++++++++++++++-------
> >  1 files changed, 16 insertions(+), 7 deletions(-)
> > 
> > diff --git a/common/lcd.c b/common/lcd.c
> > index 74a5c77..b5e81f1 100644
> > --- a/common/lcd.c
> > +++ b/common/lcd.c
> > @@ -78,7 +78,7 @@ static inline void lcd_putc_xy (ushort x, ushort y, uchar  c);
> >  
> >  static int lcd_init (void *lcdbase);
> >  
> > -static int lcd_clear (cmd_tbl_t * cmdtp, int flag, int argc, char *argv[]);
> > +static int lcd_clear (int draw_logo);
> >  extern void lcd_ctrl_init (void *lcdbase);
> >  extern void lcd_enable (void);
> >  static void *lcd_logo (void);
> > @@ -379,7 +379,12 @@ int drv_lcd_init (void)
> >  }
> >  
> >  /*----------------------------------------------------------------------*/
> > -static int lcd_clear (cmd_tbl_t * cmdtp, int flag, int argc, char *argv[])
> > +static int do_lcd_clear (cmd_tbl_t * cmdtp, int flag, int argc, char *argv[])
> > +{
> > +	return lcd_clear(1);
> > +}
> 
> Given the fact that we have exactly one place only where we call 
> lcd_clear() [in lcd_init()], this just adds complexity and memory
> footprint without adding benefits. Please omit this part.
use the patch 2/2 for the ainsi support
> 
> > +static int lcd_clear(int draw_logo)
> >  {
> >  #if LCD_BPP == LCD_MONOCHROME
> >  	/* Setting the palette */
> > @@ -414,9 +419,13 @@ static int lcd_clear (cmd_tbl_t * cmdtp, int flag, int argc, char *argv[])
> >  		COLOR_MASK(lcd_getbgcolor()),
> >  		lcd_line_length*panel_info.vl_row);
> >  #endif
> > -	/* Paint the logo and retrieve LCD base address */
> > -	debug ("[LCD] Drawing the logo...\n");
> > -	lcd_console_address = lcd_logo ();
> > +	if (draw_logo) {
> > +		/* Paint the logo and retrieve LCD base address */
> > +		debug ("[LCD] Drawing the logo...\n");
> > +		lcd_console_address = lcd_logo ();
> > +	} else {
> > +		lcd_console_address = lcd_base;
> > +	}
> 
> I wonder if there is any user out there who expects  that  the  "cls"
> command  will  also  draw  the  logo  - I am pretty sure that this is
> actually a bug introduced when the  lcd_clear()  code  was  extracted
> from lcd_init() in commit 8655b6f8 nearly 5 years ago.
> 
> To me the current implementation makes no sense. I suggest to  rather
> fix  the  origona bug, i. e. move the lcd_logo() call into lcd_init()
> so it gets done only once,  and  not  when  running  the  lcd_clear()
> function using the "cls" commandline interface.
so I prefer to remove the cls command and introduce the clear command which
will be availlable for all output serial & lcd

Best Regards,
J.


More information about the U-Boot mailing list