diff options
Diffstat (limited to 'firmware/drivers/lcd-recorder.c')
-rw-r--r-- | firmware/drivers/lcd-recorder.c | 22 |
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, |