diff options
author | William Wilgus <me.theuser@yahoo.com> | 2017-12-14 06:22:04 +0100 |
---|---|---|
committer | William Wilgus <me.theuser@yahoo.com> | 2018-07-26 04:23:28 +0200 |
commit | dcd71e66bd5f0b521c9f98ebe83ff1f7abb62918 (patch) | |
tree | 418633d02677aa6f81e6fafa524a181554c823d4 /firmware/target/arm/as3525/lcd-clip.h | |
parent | 056d4b0ec044aedd14bd657f4b6a6f8e96c127e3 (diff) | |
download | rockbox-dcd71e66bd5f0b521c9f98ebe83ff1f7abb62918.tar.gz rockbox-dcd71e66bd5f0b521c9f98ebe83ff1f7abb62918.zip |
Optimize lcd-ssd1303 driver (clip series)
Saves 100+ bytes (50 of it in iram), saves a bit of power
Internal LCD clock decreased but with added efficiency of drawing routines
loses only around 2 Hz on the scanrate (~75Hz) while fps is slightly increased
Column offsets are now calculated outside the loops saving a few instructions
Passing a LCD_NOP command after lcd_update turns off Data/Cmd# gpio
saving a bit more power
Added a function lcd_write_cmd_triple() that allows 3 commands to be sent at once
when enabled with LCD_USE_FIFO_FOR_COMMANDS it sends them back to back without
checking FIFO status in between or sending to thhe D/C# Gpio.
Makes an assumption about the FIFO being large enough to
accept 3 commands after being emptied which should be the case on the
clipv1, clipv2, clipplus. I have only enabled it for the clip plus
as thats the only device I have to test it on.
On clip+ the SSP clock is now turned off when screen is off
Change-Id: Ib5fd24697bfe4ac8b8ee017361e789e4a7910d21
Diffstat (limited to 'firmware/target/arm/as3525/lcd-clip.h')
-rw-r--r-- | firmware/target/arm/as3525/lcd-clip.h | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/firmware/target/arm/as3525/lcd-clip.h b/firmware/target/arm/as3525/lcd-clip.h index eb76401bc0..3bde92430c 100644 --- a/firmware/target/arm/as3525/lcd-clip.h +++ b/firmware/target/arm/as3525/lcd-clip.h | |||
@@ -18,12 +18,22 @@ | |||
18 | * KIND, either express or implied. | 18 | * KIND, either express or implied. |
19 | * | 19 | * |
20 | ****************************************************************************/ | 20 | ****************************************************************************/ |
21 | #ifndef __LCDCLIP_H__ | ||
22 | #define __LCDCLIP_H__ | ||
21 | 23 | ||
22 | #include "config.h" | 24 | #include "config.h" |
23 | 25 | ||
26 | #if !defined(BOOTLOADER) && defined(SANSA_CLIPPLUS) /* only tested for clipplus */ | ||
27 | /* Ensure empty FIFO for lcd commands is at least 3 deep */ | ||
28 | #define LCD_USE_FIFO_FOR_COMMANDS | ||
29 | #endif | ||
30 | |||
31 | void lcd_write_cmd_triplet(int cmd1, int cmd2, int cmd3); | ||
32 | |||
24 | /* return variant number: 0 = clipv1, clipv2, old clip+, 1 = newer clip+ */ | 33 | /* return variant number: 0 = clipv1, clipv2, old clip+, 1 = newer clip+ */ |
25 | int lcd_hw_init(void) INIT_ATTR; | 34 | int lcd_hw_init(void) INIT_ATTR; |
26 | 35 | ||
27 | /* target-specific power enable */ | 36 | /* target-specific power enable */ |
28 | void lcd_enable_power(bool onoff); | 37 | void lcd_enable_power(bool onoff); |
29 | 38 | ||
39 | #endif /*__LCDCLIP_H__*/ | ||