summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--firmware/drivers/lcd-recorder.c22
1 files changed, 22 insertions, 0 deletions
diff --git a/firmware/drivers/lcd-recorder.c b/firmware/drivers/lcd-recorder.c
index fcb7d306b8..00b4ed78b2 100644
--- a/firmware/drivers/lcd-recorder.c
+++ b/firmware/drivers/lcd-recorder.c
@@ -44,12 +44,16 @@
44#define LCD_SET_ENTIRE_DISPLAY_ON ((char)0xA5) 44#define LCD_SET_ENTIRE_DISPLAY_ON ((char)0xA5)
45#define LCD_SET_NORMAL_DISPLAY ((char)0xA6) 45#define LCD_SET_NORMAL_DISPLAY ((char)0xA6)
46#define LCD_SET_REVERSE_DISPLAY ((char)0xA7) 46#define LCD_SET_REVERSE_DISPLAY ((char)0xA7)
47#define LCD_SET_MULTIPLEX_RATIO ((char)0xA8)
48#define LCD_SET_BIAS_TC_OSC ((char)0xA9)
49#define LCD_SET_1OVER4_BIAS_RATIO ((char)0xAA)
47#define LCD_SET_INDICATOR_OFF ((char)0xAC) 50#define LCD_SET_INDICATOR_OFF ((char)0xAC)
48#define LCD_SET_INDICATOR_ON ((char)0xAD) 51#define LCD_SET_INDICATOR_ON ((char)0xAD)
49#define LCD_SET_DISPLAY_OFF ((char)0xAE) 52#define LCD_SET_DISPLAY_OFF ((char)0xAE)
50#define LCD_SET_DISPLAY_ON ((char)0xAF) 53#define LCD_SET_DISPLAY_ON ((char)0xAF)
51#define LCD_SET_PAGE_ADDRESS ((char)0xB0) 54#define LCD_SET_PAGE_ADDRESS ((char)0xB0)
52#define LCD_SET_COM_OUTPUT_SCAN_DIRECTION ((char)0xC0) 55#define LCD_SET_COM_OUTPUT_SCAN_DIRECTION ((char)0xC0)
56#define LCD_SET_TOTAL_FRAME_PHASES ((char)0xD2)
53#define LCD_SET_DISPLAY_OFFSET ((char)0xD3) 57#define LCD_SET_DISPLAY_OFFSET ((char)0xD3)
54#define LCD_SET_READ_MODIFY_WRITE_MODE ((char)0xE0) 58#define LCD_SET_READ_MODIFY_WRITE_MODE ((char)0xE0)
55#define LCD_SOFTWARE_RESET ((char)0xE2) 59#define LCD_SOFTWARE_RESET ((char)0xE2)
@@ -128,6 +132,24 @@ void lcd_init (void)
128 PBCR2 &= 0xff00; /* MD = 00 */ 132 PBCR2 &= 0xff00; /* MD = 00 */
129 PBIOR |= 0x000f; /* IOR = 1 */ 133 PBIOR |= 0x000f; /* IOR = 1 */
130 134
135 /* inits like the original firmware */
136 lcd_write(true, LCD_SOFTWARE_RESET);
137 lcd_write(true, LCD_SET_INTERNAL_REGULATOR_RESISTOR_RATIO + 4);
138 lcd_write(true, LCD_SET_1OVER4_BIAS_RATIO + 0); /* force 1/4 bias: 0 */
139 lcd_write(true, LCD_SET_POWER_CONTROL_REGISTER + 7); /* power control register: op-amp=1, regulator=1, booster=1 */
140 lcd_write(true, LCD_SET_DISPLAY_ON);
141 lcd_write(true, LCD_SET_NORMAL_DISPLAY);
142 lcd_write(true, LCD_SET_SEGMENT_REMAP + 1); /* mirror horizontal: 1 */
143 lcd_write(true, LCD_SET_COM_OUTPUT_SCAN_DIRECTION + 8); /* mirror vertical: 1 */
144 lcd_write(true, LCD_SET_DISPLAY_START_LINE + 0);
145#if 0 /* done later, depending on h/w mask bit and settings */
146 lcd_write(true, LCD_SET_CONTRAST_CONTROL_REGISTER);
147 lcd_write(true, 0xF1); /* contrast set to 49/64 */
148#endif
149 lcd_write(true, LCD_SET_PAGE_ADDRESS);
150 lcd_write(true, LCD_SET_LOWER_COLUMN_ADDRESS + 0);
151 lcd_write(true, LCD_SET_HIGHER_COLUMN_ADDRESS + 0);
152
131 lcd_clear_display(); 153 lcd_clear_display();
132 lcd_update(); 154 lcd_update();
133 create_thread(scroll_thread, scroll_stack, 155 create_thread(scroll_thread, scroll_stack,