FreeCalypso > hg > fc-tourmaline
changeset 47:502a0a3f6a49
C139 LCD support reinstated in the new way
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Sun, 18 Oct 2020 02:03:10 +0000 |
parents | 09cdd5bf04e4 |
children | 06a52f3fcec9 |
files | src/cs/drivers/drv_app/r2d/lcds/c139/colors.h src/cs/drivers/drv_app/r2d/lcds/c139/r2d_task_i.c src/cs/drivers/drv_app/r2d/lcds/c139/r2d_task_init_i.c src/cs/drivers/drv_app/r2d/r2d_inits.c src/cs/drivers/drv_app/r2d/r2d_refresh.c |
diffstat | 5 files changed, 35 insertions(+), 40 deletions(-) [+] |
line wrap: on
line diff
--- a/src/cs/drivers/drv_app/r2d/lcds/c139/colors.h Sat Oct 17 22:50:15 2020 +0000 +++ b/src/cs/drivers/drv_app/r2d/lcds/c139/colors.h Sun Oct 18 02:03:10 2020 +0000 @@ -4,13 +4,7 @@ * present configuration we are telling TI's code that we have a mono display. * But the real LCD on the C139 is 16-bit color. Here we define the physical * color values to which TI's black and white will be mapped. - * - * We are also pretending to be the 84x48 pix LCD on TI's C-Sample, hence we - * are displaying a 84x48 pix UI on a physical 96x64 pix LCD. We center the - * virtual display in the physical one, and the border color is defined here - * as well. */ #define LCD16_COLOR_BLACK 0x0000 #define LCD16_COLOR_WHITE 0xFFFF -#define LCD16_COLOR_BORDER 0x5555
--- a/src/cs/drivers/drv_app/r2d/lcds/c139/r2d_task_i.c Sat Oct 17 22:50:15 2020 +0000 +++ b/src/cs/drivers/drv_app/r2d/lcds/c139/r2d_task_i.c Sun Oct 18 02:03:10 2020 +0000 @@ -39,42 +39,39 @@ { } -static int get_pix_from_sw_fb(UINT32 *fb, UINT16 x, UINT16 y) -{ - UINT32 *p, mask; - UINT16 yword, ybit; - - /* mirroring */ - x = R2D_WIDTH - 1 - x; - y = R2D_HEIGHT - 1 - y; - yword = y >> 5; - ybit = y & 31; - p = fb + x * R2D_MWHEIGHT + yword; - mask = 1 << ybit; - if (*p & mask) - return(1); - else - return(0); -} - void r2d_refresh(void) { - UINT16 x, y; - UINT32 *fb; + UINT16 i, j, k; + UINT32 v; + UINT32 *p; + INT16 y1, y2; - fb = r2d_g_framebuffer->p_memory_words; + p=r2d_g_framebuffer->p_memory_words; + + y1=r2d_update_ul_y; //0 + y2=r2d_update_br_y; //63 + + /* set window area */ + c139_set_lcd_addr_region(0, 95, y1, y2); + + p=p+y1*R2D_MWWIDTH; - /* set the LCD up to refresh the 84x48 area */ - c139_set_lcd_addr_region(6, 89, 8, 55); - /* send the pixels */ - for (y = 0; y < R2D_HEIGHT; y++) { - for (x = 0; x < R2D_WIDTH; x++) { - if (get_pix_from_sw_fb(fb, x, y)) - c139_lcd_send_pix(LCD16_COLOR_BLACK); - else - c139_lcd_send_pix(LCD16_COLOR_WHITE); - } - } + for (i=y1;i<=y2;i++) + { + for (j = 0; j < R2D_MWWIDTH-1; j++) + { + v=*p++; + for (k=0;k<32;k++) + { + if (v&1) + c139_lcd_send_pix(LCD16_COLOR_BLACK); + else + c139_lcd_send_pix(LCD16_COLOR_WHITE); + v=v>>1; + } + } + p++; + } r2d_reinit_update_region(); }
--- a/src/cs/drivers/drv_app/r2d/lcds/c139/r2d_task_init_i.c Sat Oct 17 22:50:15 2020 +0000 +++ b/src/cs/drivers/drv_app/r2d/lcds/c139/r2d_task_init_i.c Sun Oct 18 02:03:10 2020 +0000 @@ -1,6 +1,6 @@ #include "r2d/lcds/c139/colors.h" -#define R2D_MB_PRIM_SIZE 2000 +#define R2D_MB_PRIM_SIZE 4000 extern void c139_lcd_ctrl_cmd(UINT8 cmd, UINT8 param); extern void c139_set_lcd_addr_region(UINT8 xstart, UINT8 xend, @@ -34,7 +34,7 @@ /* initial hw framebuffer clearing */ c139_set_lcd_addr_region(0, 95, 0, 63); for (i = 0; i < 96 * 64; i++) - c139_lcd_send_pix(LCD16_COLOR_BORDER); + c139_lcd_send_pix(LCD16_COLOR_WHITE); } static void r2d_refresh_task_kill(void)
--- a/src/cs/drivers/drv_app/r2d/r2d_inits.c Sat Oct 17 22:50:15 2020 +0000 +++ b/src/cs/drivers/drv_app/r2d/r2d_inits.c Sun Oct 18 02:03:10 2020 +0000 @@ -92,6 +92,8 @@ #ifdef CONFIG_TARGET_LUNA #include "r2d/lcds/luna/r2d_task_init_i.c" +#elif defined(CONFIG_TARGET_C139) + #include "r2d/lcds/c139/r2d_task_init_i.c" #else #error "R2D hw init selection: unsupported target" #endif
--- a/src/cs/drivers/drv_app/r2d/r2d_refresh.c Sat Oct 17 22:50:15 2020 +0000 +++ b/src/cs/drivers/drv_app/r2d/r2d_refresh.c Sun Oct 18 02:03:10 2020 +0000 @@ -73,6 +73,8 @@ #include "lcds/luna/r2d_task_i_bw.c" #elif defined(CONFIG_TARGET_LUNA) && (R2D_EMBEDDED_LCD == R2D_FB_96x64_BW) #include "lcds/luna/r2d_task_i_96x64.c" +#elif defined(CONFIG_TARGET_C139) && (R2D_EMBEDDED_LCD == R2D_FB_96x64_BW) + #include "lcds/c139/r2d_task_i.c" #else #error "R2D refresh selection: unsupported combination" #endif