Reimplement ser_clearstatus as a macro.
[bertos.git] / drv / lcd_hd44.c
index ecfea365aa3b6df26bbbffbb28b4dd0df5f961bd..0bd7b3440e115640727afe24f48ef52f7fd6c7b8 100755 (executable)
@@ -1,4 +1,4 @@
-/*!
+/**
  * \file
  * <!--
  * Copyright 2005 Develer S.r.l. (http://www.develer.com/)
 
 /*#*
  *#* $Log$
+ *#* Revision 1.3  2006/09/20 19:55:01  marco
+ *#* Added CONFIG_LCD_4BIT.
+ *#*
+ *#* Revision 1.2  2006/07/19 12:56:25  bernie
+ *#* Convert to new Doxygen style.
+ *#*
  *#* Revision 1.1  2005/11/04 18:00:42  bernie
  *#* Import into DevLib.
  *#*
  *#*/
 
 #include "lcd_hd44.h"
-#include "lcd_bus_pz.h"
-#include <arch_config.h>
+#include "hw_lcd.h"
+#include <cfg/arch_config.h>
 #include <drv/timer.h>
 
-#if defined(LCD_READ_H) && defined(LCD_READ_L) && defined(LCD_WRITE_H) && defined(LCD_WRITE_L)
-       #define CONFIG_LCD_4BIT 1
-#elif defined(LCD_READ) && defined(LCD_WRITE)
-       #define CONFIG_LCD_4BIT 0
-#else
-       #error Incomplete or missing LCD_READ/LCD_WRITE macros
-#endif
-
-/*! Flag di stato del display */
+/** Flag di stato del display */
 #define LCDF_BUSY  BV(7)
 
-/*!
+/**
  * Addresses of LCD display character positions, expanded
  * for faster access (DB7 = 1).
  */
@@ -97,7 +95,7 @@ static const uint8_t lcd_address[] =
 
 STATIC_ASSERT(countof(lcd_address) == LCD_ROWS * LCD_COLS);
 
-/*!
+/**
  * Current display position. We remember this to optimize
  * LCD output by avoiding to set the address every time.
  */
@@ -181,7 +179,7 @@ INLINE uint8_t lcd_dataRead(void)
        /* Read data */
        LCD_SET_E;
        LCD_DELAY_READ;
-       data |= LCD_READ;
+       data = LCD_READ;
        LCD_CLR_E;
        LCD_DELAY_READ;
 
@@ -260,7 +258,7 @@ extern uint8_t Emul_LCDReadData(void);
 #endif /* ARCH_EMUL */
 
 
-/*!
+/**
  * Wait until the LCD busy flag clears.
  */
 void lcd_waitBusy(void)
@@ -274,7 +272,7 @@ void lcd_waitBusy(void)
 }
 
 
-/*!
+/**
  * Move the cursor to \a addr, only if not already there.
  */
 void lcd_moveTo(uint8_t addr)
@@ -288,7 +286,7 @@ void lcd_moveTo(uint8_t addr)
 }
 
 
-/*!
+/**
  * Write a value in LCD data register, waiting for the busy flag.
  */
 void lcd_setReg(uint8_t val)
@@ -298,7 +296,7 @@ void lcd_setReg(uint8_t val)
 }
 
 #include <cfg/debug.h>
-/*!
+/**
  * Write the character \a c on display address \a addr.
  *
  * NOTE: argh, the HD44 lcd type is a bad beast: our
@@ -324,7 +322,7 @@ void lcd_putc(uint8_t addr, uint8_t c)
 }
 
 
-/*!
+/**
  * Remap the glyph of a character.
  *
  * glyph - bitmap of 8x8 bits.
@@ -388,8 +386,9 @@ void lcd_hw_init(void)
        lcd_regWrite(LCD_CMD_CLEAR);
        timer_delay(2);
 
-       //lcd_regWrite(LCD_CMD_RESET_DDRAM); 4 bit mode doesn't allow char reprogramming
-
+#if !CONFIG_LCD_4BIT
+       lcd_regWrite(LCD_CMD_RESET_DDRAM); // 4 bit mode doesn't allow char reprogramming
+#endif
        lcd_regWrite(LCD_CMD_DISPLAYMODE);
        timer_delay(2);
 }