提交 814ac8fb 编写于 作者: qiuyiuestc's avatar qiuyiuestc

fix lcd update issue

git-svn-id: https://rt-thread.googlecode.com/svn/trunk@898 bbd45198-f89e-11dd-88c7-29a3b14d5316
上级 7659f790
...@@ -172,20 +172,12 @@ void LcdBkLtSet(rt_uint32_t HiRatio) ...@@ -172,20 +172,12 @@ void LcdBkLtSet(rt_uint32_t HiRatio)
void rt_hw_lcd_update(rtgui_rect_t *rect) void rt_hw_lcd_update(rtgui_rect_t *rect)
{ {
volatile rt_uint16_t *src_ptr, *dst_ptr; volatile rt_uint16_t *src_ptr, *dst_ptr;
rt_uint32_t pitch, index; rt_uint32_t i, j;
pitch = 2 * (rect->x2 - rect->x1); for (i = rect->y1; i < rect->y2; i ++)
/* copy from framebuffer to physical framebuffer */
src_ptr = &_rt_framebuffer[rect->y1][rect->x1];
dst_ptr = &_rt_hw_framebuffer[rect->y1][rect->x1];
for (index = rect->y1; index < rect->y2; index ++)
{ {
memcpy((void*)dst_ptr, (void*)src_ptr, pitch); for(j = rect->x1; j < rect->x2; j++)
_rt_hw_framebuffer[i][j] = _rt_framebuffer[i][j];
src_ptr += (rect->x2 - rect->x1);
dst_ptr += (rect->x2 - rect->x1);
} }
} }
......
...@@ -172,20 +172,12 @@ void LcdBkLtSet(rt_uint32_t HiRatio) ...@@ -172,20 +172,12 @@ void LcdBkLtSet(rt_uint32_t HiRatio)
void rt_hw_lcd_update(rtgui_rect_t *rect) void rt_hw_lcd_update(rtgui_rect_t *rect)
{ {
volatile rt_uint16_t *src_ptr, *dst_ptr; volatile rt_uint16_t *src_ptr, *dst_ptr;
rt_uint32_t pitch, index; rt_uint32_t i, j;
pitch = 2 * (rect->x2 - rect->x1); for (i = rect->y1; i < rect->y2; i ++)
/* copy from framebuffer to physical framebuffer */
src_ptr = &_rt_framebuffer[rect->y1][rect->x1];
dst_ptr = &_rt_hw_framebuffer[rect->y1][rect->x1];
for (index = rect->y1; index < rect->y2; index ++)
{ {
memcpy((void*)dst_ptr, (void*)src_ptr, pitch); for(j = rect->x1; j < rect->x2; j++)
_rt_hw_framebuffer[i][j] = _rt_framebuffer[i][j];
src_ptr += (rect->x2 - rect->x1);
dst_ptr += (rect->x2 - rect->x1);
} }
} }
......
...@@ -173,20 +173,12 @@ void LcdBkLtSet(rt_uint32_t HiRatio) ...@@ -173,20 +173,12 @@ void LcdBkLtSet(rt_uint32_t HiRatio)
void rt_hw_lcd_update(rtgui_rect_t *rect) void rt_hw_lcd_update(rtgui_rect_t *rect)
{ {
volatile rt_uint16_t *src_ptr, *dst_ptr; volatile rt_uint16_t *src_ptr, *dst_ptr;
rt_uint32_t pitch, index; rt_uint32_t i, j;
pitch = 2 * (rect->x2 - rect->x1); for (i = rect->y1; i < rect->y2; i ++)
/* copy from framebuffer to physical framebuffer */
src_ptr = &_rt_framebuffer[rect->y1][rect->x1];
dst_ptr = &_rt_hw_framebuffer[rect->y1][rect->x1];
for (index = rect->y1; index < rect->y2; index ++)
{ {
memcpy((void*)dst_ptr, (void*)src_ptr, pitch); for(j = rect->x1; j < rect->x2; j++)
_rt_hw_framebuffer[i][j] = _rt_framebuffer[i][j];
src_ptr += (rect->x2 - rect->x1);
dst_ptr += (rect->x2 - rect->x1);
} }
} }
...@@ -229,7 +221,7 @@ void rt_hw_lcd_draw_hline(rtgui_color_t *c, rt_base_t x1, rt_base_t x2, rt_base_ ...@@ -229,7 +221,7 @@ void rt_hw_lcd_draw_hline(rtgui_color_t *c, rt_base_t x1, rt_base_t x2, rt_base_
void rt_hw_lcd_draw_vline(rtgui_color_t *c, rt_base_t x, rt_base_t y1, rt_base_t y2) void rt_hw_lcd_draw_vline(rtgui_color_t *c, rt_base_t x, rt_base_t y1, rt_base_t y2)
{ {
rt_uint32_t idy; rt_uint32_t idy;
rt_uint16_t color; rt_uint16_t color;
/* get color pixel */ /* get color pixel */
...@@ -243,7 +235,7 @@ void rt_hw_lcd_draw_vline(rtgui_color_t *c, rt_base_t x, rt_base_t y1, rt_base_t ...@@ -243,7 +235,7 @@ void rt_hw_lcd_draw_vline(rtgui_color_t *c, rt_base_t x, rt_base_t y1, rt_base_t
void rt_hw_lcd_draw_raw_hline(rt_uint8_t *pixels, rt_base_t x1, rt_base_t x2, rt_base_t y) void rt_hw_lcd_draw_raw_hline(rt_uint8_t *pixels, rt_base_t x1, rt_base_t x2, rt_base_t y)
{ {
rt_memcpy((void*)&_rt_framebuffer[y][x1], pixels, (x2 - x1) * 2); rt_memcpy((void*)&_rt_framebuffer[y][x1], pixels, (x2 - x1) * 2);
} }
struct rtgui_graphic_driver _rtgui_lcd_driver = struct rtgui_graphic_driver _rtgui_lcd_driver =
...@@ -304,14 +296,15 @@ void rt_hw_lcd_init() ...@@ -304,14 +296,15 @@ void rt_hw_lcd_init()
LCDCON2 = (LCD_UPPER_MARGIN << 24) | ((LCD_HEIGHT - 1) << 14) | (LCD_LOWER_MARGIN << 6) | (LCD_VSYNC_LEN << 0); LCDCON2 = (LCD_UPPER_MARGIN << 24) | ((LCD_HEIGHT - 1) << 14) | (LCD_LOWER_MARGIN << 6) | (LCD_VSYNC_LEN << 0);
LCDCON3 = (LCD_RIGHT_MARGIN << 19) | ((LCD_WIDTH - 1) << 8) | (LCD_LEFT_MARGIN << 0); LCDCON3 = (LCD_RIGHT_MARGIN << 19) | ((LCD_WIDTH - 1) << 8) | (LCD_LEFT_MARGIN << 0);
LCDCON4 = (13 << 8) | (LCD_HSYNC_LEN << 0); LCDCON4 = (13 << 8) | (LCD_HSYNC_LEN << 0);
#if !defined(LCD_CON5) #if !defined(LCD_CON5)
#define LCD_CON5 ((1<<11) | (1 << 9) | (1 << 8) | (1 << 3) | (1 << 0)) #define LCD_CON5 ((1<<11) | (1 << 9) | (1 << 8) | (1 << 3) | (1 << 0))
#endif #endif
LCDCON5 = LCD_CON5; LCDCON5 = LCD_CON5;
LCDSADDR1 = ((LCD_ADDR >> 22) << 21) | ((M5D(LCD_ADDR >> 1)) << 0); LCDSADDR1 = ((LCD_ADDR >> 22) << 21) | ((M5D(LCD_ADDR >> 1)) << 0);
LCDSADDR2 = M5D((LCD_ADDR + LCD_WIDTH * LCD_HEIGHT * 2) >> 1); LCDSADDR2 = M5D((LCD_ADDR + LCD_WIDTH * LCD_HEIGHT * 2) >> 1);
LCDSADDR3 = LCD_WIDTH; LCDSADDR3 = LCD_WIDTH;
LCDINTMSK |= (3); LCDINTMSK |= (3);
LPCSEL &= (~7) ; LPCSEL &= (~7) ;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册