Fuze+: Fix misplaced rectangle when lcd_flip set

Change-Id: Ic5197d8dffd66cfefdb42242869b48b33aa4d042
This commit is contained in:
Moshe Piekarski 2020-10-28 15:48:33 -04:00 committed by William Wilgus
parent 9fcdb44e55
commit c4254d10fc

View file

@ -545,7 +545,7 @@ void lcd_set_invert_display(bool yesno)
#ifdef HAVE_LCD_FLIP #ifdef HAVE_LCD_FLIP
void lcd_set_flip(bool yesno) void lcd_set_flip(bool yesno)
{ {
lcd_reg_3_val = yesno ? 0x1000 : 0x1030; lcd_reg_3_val = yesno ? 0x1080 : 0x1030;
#ifdef HAVE_LCD_ENABLE #ifdef HAVE_LCD_ENABLE
if(!lcd_on) if(!lcd_on)
return; return;
@ -587,13 +587,36 @@ void lcd_update_rect(int x, int y, int w, int h)
if (h <= 0) if (h <= 0)
return; /* nothing left to do */ return; /* nothing left to do */
imx233_lcdif_wait_ready(); imx233_lcdif_wait_ready();
lcd_write_reg(0x50, x); #ifdef HAVE_LCD_FLIP
lcd_write_reg(0x51, x + w - 1); if(!(lcd_reg_3_val&0x10))
lcd_write_reg(0x52, y); {
lcd_write_reg(0x53, y + h - 1); int xr = LCD_WIDTH - x;
lcd_write_reg(0x20, x); lcd_write_reg(0x50, xr-w);
lcd_write_reg(0x21, y); lcd_write_reg(0x51, xr-1);
lcd_write_reg(0x20, xr-w);
}else
#endif
{
lcd_write_reg(0x50, x);
lcd_write_reg(0x51, x + w - 1);
lcd_write_reg(0x20, x);
}
#ifdef HAVE_LCD_FLIP
if(!(lcd_reg_3_val&0x20))
{
int yr = LCD_HEIGHT - y;
lcd_write_reg(0x52, yr-h);
lcd_write_reg(0x53, yr-1);
lcd_write_reg(0x21, yr-h);
}else
#endif
{
lcd_write_reg(0x52, y);
lcd_write_reg(0x53, y + h - 1);
lcd_write_reg(0x21, y);
}
lcd_write_reg(0x22, 0); lcd_write_reg(0x22, 0);
imx233_lcdif_wait_ready(); imx233_lcdif_wait_ready();
imx233_lcdif_set_word_length(16); imx233_lcdif_set_word_length(16);