aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorroot <root@ps-pc.(none)>2014-07-02 15:05:12 +0300
committerroot <root@ps-pc.(none)>2014-07-02 15:05:12 +0300
commit5c421b09f72c679e2052a65a58fa4314b8acf9d0 (patch)
tree7daee369a46e1d104c84f229a0d0f5ca27d15457 /drivers
parenta3993c80e0f2cbb11813ce29613af5f3bc0070fa (diff)
downloaduGFX-5c421b09f72c679e2052a65a58fa4314b8acf9d0.tar.gz
uGFX-5c421b09f72c679e2052a65a58fa4314b8acf9d0.tar.bz2
uGFX-5c421b09f72c679e2052a65a58fa4314b8acf9d0.zip
edit
Diffstat (limited to 'drivers')
-rw-r--r--drivers/gdisp/PCF8812/gdisp_lld_PCF8812.c29
1 files changed, 15 insertions, 14 deletions
diff --git a/drivers/gdisp/PCF8812/gdisp_lld_PCF8812.c b/drivers/gdisp/PCF8812/gdisp_lld_PCF8812.c
index 88fc2aea..d280fd21 100644
--- a/drivers/gdisp/PCF8812/gdisp_lld_PCF8812.c
+++ b/drivers/gdisp/PCF8812/gdisp_lld_PCF8812.c
@@ -43,8 +43,6 @@
// Some common routines and macros
#define RAM(g) ((uint8_t *)g->priv)
-unsigned char RAM[(GDISP_SCREEN_WIDTH * GDISP_SCREEN_HEIGHT / 8)];
-
#define xyaddr(x, y) ((x) + ((y) >> 3) * GDISP_SCREEN_WIDTH)
#define xybit(y) (1 << ((y) & 7))
@@ -61,7 +59,7 @@ unsigned char RAM[(GDISP_SCREEN_WIDTH * GDISP_SCREEN_HEIGHT / 8)];
LLDSPEC bool_t gdisp_lld_init(GDisplay *g) {
// The private area is the display surface.
- g->priv = gfxAlloc((GDISP_SCREEN_WIDTH * GDISP_SCREEN_HEIGHT / 8));
+ g->priv = gfxAlloc((GDISP_SCREEN_WIDTH * (GDISP_SCREEN_HEIGHT / 8)));
// Initialise the board interface
init_board(g);
@@ -85,13 +83,14 @@ LLDSPEC bool_t gdisp_lld_init(GDisplay *g) {
unsigned int i;
- for (i = 0; i < (GDISP_SCREEN_WIDTH * GDISP_SCREEN_HEIGHT / 8); i++)
+ for (i = 0; i < (GDISP_SCREEN_WIDTH * (GDISP_SCREEN_HEIGHT / 8)); i++)
{
- write_data(g, (uint8_t*)0x00, 1);
+ RAM(g)[i] = 0x00;
+ write_data(g, 0x00, 1);
}
- // Finish Init
- post_init_board(g);
+ // Finish Init
+ post_init_board(g);
// Release the bus
release_bus(g);
@@ -114,15 +113,17 @@ LLDSPEC bool_t gdisp_lld_init(GDisplay *g) {
if (!(g->flags & GDISP_FLG_NEEDFLUSH))
return;
- unsigned int i;
-
acquire_bus(g);
- //write_cmd(g, PCF8812_SET_X);
- //write_cmd(g, PCF8812_SET_Y);
+ write_cmd(g, PCF8812_SET_X);
+ write_cmd(g, PCF8812_SET_Y);
+
+ unsigned char x, y;
- for (i = 0; i < 9; i++) {
- write_data(g, RAM(g) + (i * GDISP_SCREEN_WIDTH), GDISP_SCREEN_WIDTH);
+ for (y = 0; y < (GDISP_SCREEN_HEIGHT / 8); y++) {
+ for(x = 0; x < GDISP_SCREEN_WIDTH; x++) {
+ write_data(g, RAM(g) + xyaddr(x, y), 1);
+ }
}
release_bus(g);
}
@@ -151,7 +152,7 @@ LLDSPEC bool_t gdisp_lld_init(GDisplay *g) {
y = g->p.x;
break;
}
- if (gdispColor2Native(g->p.color) != Black)
+ if (gdispColor2Native(g->p.color) == Black)
RAM(g)[xyaddr(x, y)] |= xybit(y);
else
RAM(g)[xyaddr(x, y)] &= ~xybit(y);