FreeCalypso > hg > fc-tourmaline
diff src/cs/drivers/drv_app/r2d/lcds/ColorBoard/r2d_task_i.c @ 0:4e78acac3d88
src/{condat,cs,gpf,nucleus}: import from Selenite
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Fri, 16 Oct 2020 06:23:26 +0000 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/cs/drivers/drv_app/r2d/lcds/ColorBoard/r2d_task_i.c Fri Oct 16 06:23:26 2020 +0000 @@ -0,0 +1,86 @@ +#define MASTER_CMD(data) *(volatile unsigned char*)0x2000005 = (data) +#define MASTER_DATA(data) *(volatile unsigned char*)0x2000004 = (data) +#define SLAVE_CMD(data) *(volatile unsigned char*)0x2000003 = (data) +#define SLAVE_DATA(data) *(volatile unsigned char*)0x2000002 = (data) + +void r2d_lcd_power_on(void) +{ +} + +void r2d_lcd_power_off(void) +{ +} + +void r2d_refresh(void) +{ + INT16 x,y; + + UINT32 v; + + UINT32 *mp,*sp; + UINT32 mtmp,stmp; + + + +#ifndef _WINDOWS + MASTER_CMD(0xF0); // RE register set + MASTER_CMD(0xA3); // Auto incremnent + MASTER_CMD(0x00); // X Address set (lower) + MASTER_CMD(0x10); // X Address set (upper) + MASTER_CMD(0x20); // Y Address set (lower) + MASTER_CMD(0x30); // Y Address set (upper) + MASTER_CMD(0x97); // Display control + + //position slave + SLAVE_CMD(0xF0); // RE register set + SLAVE_CMD(0xA3); // Auto incremnent + SLAVE_CMD(0x00); // X Address set (lower) + SLAVE_CMD(0x10); // X Address set (upper) + SLAVE_CMD(0x20); // Y Address set (lower) + SLAVE_CMD(0x30); // Y Address set (upper) + SLAVE_CMD(0x96); // Display control +#endif + + // rvf_send_trace("R2D REFRESH",strlen("R2D REFRESH"), NULL_PARAM, + // RV_TRACE_LEVEL_DEBUG_HIGH, TRACE_XXX ); + + mp=r2d_g_framebuffer->p_memory_words; + + // One word added by computation of R2D_MWWIDTH + // so 49 used instead of 48 + sp=mp+(64*49); + + + + + for (y=0;y<64;y++) + { + for (x=0; x<48;x++) + { + + mtmp=~(*mp++); + stmp=~(*sp++); + + MASTER_DATA(mtmp&0xFF); + SLAVE_DATA(stmp&0xFF); +#ifndef _WINDOWS + mtmp>>=16; + stmp>>=16; + MASTER_DATA(mtmp&0xFF); + SLAVE_DATA(stmp&0xFF); + +#endif + } + // R2D_MWWIDTH is one word larger than the real LCD size + // so when refreshing that must be taken into account + *mp++; + *sp++; + } + + // Finish sending datas to LCD + + r2d_reinit_update_region(); +#ifdef _WINDOWS + lcd_refresh(); +#endif +} \ No newline at end of file