diff options
author | Jens Arnold <amiconn@rockbox.org> | 2007-09-23 19:15:01 +0000 |
---|---|---|
committer | Jens Arnold <amiconn@rockbox.org> | 2007-09-23 19:15:01 +0000 |
commit | bf169ed7db624c18947849dee8a26df64d5065da (patch) | |
tree | 2b5a08e17277540b4f7c7cf28b0eb789031cad81 /firmware/target/arm/sandisk/sansa-c200/lcd-c200.c | |
parent | a33fc5dbbef5c6743003e4339374ad2b9e67b886 (diff) | |
download | rockbox-bf169ed7db624c18947849dee8a26df64d5065da.tar.gz rockbox-bf169ed7db624c18947849dee8a26df64d5065da.zip |
Speed up C200 lcd_update() by ~7%.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@14834 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'firmware/target/arm/sandisk/sansa-c200/lcd-c200.c')
-rw-r--r-- | firmware/target/arm/sandisk/sansa-c200/lcd-c200.c | 17 |
1 files changed, 3 insertions, 14 deletions
diff --git a/firmware/target/arm/sandisk/sansa-c200/lcd-c200.c b/firmware/target/arm/sandisk/sansa-c200/lcd-c200.c index 6626ea4e6d..511456bf47 100644 --- a/firmware/target/arm/sandisk/sansa-c200/lcd-c200.c +++ b/firmware/target/arm/sandisk/sansa-c200/lcd-c200.c | |||
@@ -28,28 +28,17 @@ | |||
28 | 28 | ||
29 | #define LCD_BUSY 0x8000 | 29 | #define LCD_BUSY 0x8000 |
30 | 30 | ||
31 | /* check if number of useconds has past */ | 31 | /* wait for LCD */ |
32 | static inline bool timer_check(int clock_start, int usecs) | ||
33 | { | ||
34 | return ((int)(USEC_TIMER - clock_start)) >= usecs; | ||
35 | } | ||
36 | |||
37 | /* wait for LCD with timeout */ | ||
38 | static inline void lcd_wait_write(void) | 32 | static inline void lcd_wait_write(void) |
39 | { | 33 | { |
40 | int start = USEC_TIMER; | 34 | while (LCD_BASE & LCD_BUSY); |
41 | |||
42 | do { | ||
43 | if ((LCD_BASE & LCD_BUSY) == 0) | ||
44 | break; | ||
45 | } while (timer_check(start, 1000) == 0); | ||
46 | } | 35 | } |
47 | 36 | ||
48 | /* send LCD data */ | 37 | /* send LCD data */ |
49 | static void lcd_send_data(unsigned data) | 38 | static void lcd_send_data(unsigned data) |
50 | { | 39 | { |
51 | lcd_wait_write(); | 40 | lcd_wait_write(); |
52 | LCD_DATA = (data >> 8) & 0xff; | 41 | LCD_DATA = data >> 8; |
53 | 42 | ||
54 | lcd_wait_write(); | 43 | lcd_wait_write(); |
55 | LCD_DATA = data & 0xff; | 44 | LCD_DATA = data & 0xff; |