X-Git-Url: https://codewiz.org/gitweb?a=blobdiff_plain;f=drv%2Flcd_gfx.c;h=3a5135c69a170a26ef0a111dea5e52095feda473;hb=5f3952176a4e9a00ca8dd5ec4a6b994958f89e0a;hp=9a25cf094bb41cb315abe06fae814a689a6df901;hpb=9411f259330967f9ad4e0cccd98ef37e811ba257;p=bertos.git diff --git a/drv/lcd_gfx.c b/drv/lcd_gfx.c old mode 100755 new mode 100644 index 9a25cf09..3a5135c6 --- a/drv/lcd_gfx.c +++ b/drv/lcd_gfx.c @@ -16,6 +16,18 @@ /*#* *#* $Log$ + *#* Revision 1.5 2006/07/19 12:56:25 bernie + *#* Convert to new Doxygen style. + *#* + *#* Revision 1.4 2006/04/27 05:40:11 bernie + *#* Naming convention fixes; Partial merge from project_grl. + *#* + *#* Revision 1.3 2006/02/10 12:35:31 bernie + *#* Enforce CONFIG_* definitions. + *#* + *#* Revision 1.2 2006/01/23 23:11:27 bernie + *#* Use RASTER_SIZE() to compute... err... the raster size. + *#* *#* Revision 1.1 2006/01/16 03:50:57 bernie *#* Import into DevLib. *#* @@ -34,20 +46,29 @@ #include #include -#ifdef CONFIG_LCD_SOFTINT_REFRESH +/* Configuration sanity checks */ +#if !defined(CONFIG_LCD_SOFTINT_REFRESH) || (CONFIG_LCD_SOFTINT_REFRESH != 0 && CONFIG_LCD_SOFTINT_REFRESH != 1) + #error CONFIG_LCD_SOFTINT_REFRESH must be defined to either 0 or 1 +#endif +#if !defined(CONFIG_LCD_SOFTINT_REFRESH) || (CONFIG_LCD_SOFTINT_REFRESH != 0 && CONFIG_LCD_SOFTINT_REFRESH != 1) + #error CONFIG_LCD_SOFTINT_REFRESH must be defined to either 0 or 1 +#endif + + +#if CONFIG_LCD_SOFTINT_REFRESH - /*! Interval between softint driven lcd refresh */ + /** Interval between softint driven lcd refresh */ # define LCD_REFRESH_INTERVAL 20 /* 20ms -> 50fps */ #endif /* CONFIG_LCD_SOFTINT_REFRESH */ -/*! Number of LCD pages */ +/** Number of LCD pages */ #define LCD_PAGES 4 -/*! Width of an LCD page */ +/** Width of an LCD page */ #define LCD_PAGESIZE (LCD_WIDTH / 2) -/*! +/** * \name LCD I/O pins/ports * @{ */ @@ -65,7 +86,7 @@ #define LCD_PE_E2 PE6 /*@}*/ -/*! +/** * \name DB high nibble (DB[4-7]) * @{ */ @@ -76,7 +97,7 @@ #define LCD_DATA_HI_MASK 0xF0 /*@}*/ -/*! +/** * \name DB low nibble (DB[0-3]) * @{ */ @@ -87,7 +108,7 @@ #define LCD_DATA_LO_MASK 0xF0 /*@}*/ -/*! +/** * \name LCD bus control macros * @{ */ @@ -103,7 +124,7 @@ #define LCD_CLR_E(x) (PORTE &= ~(x)) /*@}*/ -/*! +/** * \name Chip select bits for LCD_SET_E() * @{ */ @@ -111,41 +132,41 @@ #define LCDF_E2 (BV(LCD_PE_E2)) /*@}*/ -/*! Read from the LCD data bus (DB[0-7]) */ +/** Read from the LCD data bus (DB[0-7]) */ #define LCD_READ ( \ ((LCD_DATA_LO_PIN & LCD_DATA_LO_MASK) >> LCD_DATA_LO_SHIFT) | \ ((LCD_DATA_HI_PIN & LCD_DATA_HI_MASK) >> LCD_DATA_HI_SHIFT) \ ) -/*! Write to the LCD data bus (DB[0-7]) */ +/** Write to the LCD data bus (DB[0-7]) */ #define LCD_WRITE(d) \ do { \ LCD_DATA_LO_PORT = (LCD_DATA_LO_PORT & ~LCD_DATA_LO_MASK) | (((d)<= LCD_MIN_PWM); ASSERT(duty <= LCD_MAX_PWM); @@ -372,7 +396,7 @@ static void lcd_clear(void) } -static void lcd_writeraster(const uint8_t *raster) +static void lcd_writeRaster(const uint8_t *raster) { uint8_t page, rows; const uint8_t *right_raster; @@ -398,16 +422,19 @@ static void lcd_writeraster(const uint8_t *raster) } } - -void lcd_blit_bitmap(Bitmap *bm) +/** + * Update the LCD display with data from the provided bitmap. + */ +void lcd_blitBitmap(Bitmap *bm) { - lcd_writeraster(bm->raster); + MOD_CHECK(lcd); + lcd_writeRaster(bm->raster); } -#ifdef CONFIG_LCD_SOFTINT_REFRESH +#if CONFIG_LCD_SOFTINT_REFRESH -static void lcd_refresh_softint(void) +static void lcd_refreshSoftint(void) { lcd_blit_bitmap(&lcd_bitmap); timer_add(lcd_refresh_timer); @@ -416,7 +443,7 @@ static void lcd_refresh_softint(void) #endif /* CONFIG_LCD_SOFTINT_REFRESH */ -/*! +/** * Initialize LCD subsystem. * * \note The PWM used for LCD contrast is initialized in drv/pwm.c @@ -424,6 +451,8 @@ static void lcd_refresh_softint(void) */ void lcd_init(void) { + MOD_CHECK(timer); + // FIXME: interrupts are already disabled when we get here?!? cpuflags_t flags; IRQ_SAVE_DISABLE(flags); @@ -471,7 +500,7 @@ void lcd_init(void) gfx_bitmapInit(&lcd_bitmap, lcd_raster, LCD_WIDTH, LCD_HEIGHT); gfx_bitmapClear(&lcd_bitmap); -#ifdef CONFIG_LCD_SOFTINT_REFRESH +#if CONFIG_LCD_SOFTINT_REFRESH /* Init IRQ driven LCD refresh */ lcd_refresh_timer = timer_new(); @@ -481,4 +510,6 @@ void lcd_init(void) timer_add(lcd_refresh_timer); #endif /* CONFIG_LCD_SOFTINT_REFRESH */ + + MOD_INIT(lcd); }