summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarcin Bukat <marcin.bukat@gmail.com>2010-12-11 23:55:14 +0000
committerMarcin Bukat <marcin.bukat@gmail.com>2010-12-11 23:55:14 +0000
commit8e1021bd4c048f793ae5593a08d81e0994b5aba1 (patch)
treed7dd70738d5b363569070c05dc82660c6b8181e7
parent08bcbd08d2b8229c6ea54c02d0805376bc75757d (diff)
downloadrockbox-8e1021bd4c048f793ae5593a08d81e0994b5aba1.tar.gz
rockbox-8e1021bd4c048f793ae5593a08d81e0994b5aba1.zip
HD300 - further speedup of lcd_update() by utilizing DMA transfer when unboosted. The gain is 438 -> 728 fps @ 45MHz.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@28799 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r--firmware/target/coldfire/mpio/hd300/lcd-hd300.c18
1 files changed, 16 insertions, 2 deletions
diff --git a/firmware/target/coldfire/mpio/hd300/lcd-hd300.c b/firmware/target/coldfire/mpio/hd300/lcd-hd300.c
index 31087a5d43..d66210db22 100644
--- a/firmware/target/coldfire/mpio/hd300/lcd-hd300.c
+++ b/firmware/target/coldfire/mpio/hd300/lcd-hd300.c
@@ -210,8 +210,22 @@ void lcd_update(void)
210 lcd_write_command_ex(LCD_CNTL_COLUMN, 0, -1); 210 lcd_write_command_ex(LCD_CNTL_COLUMN, 0, -1);
211 lcd_write_command(LCD_CNTL_DATA_WRITE); 211 lcd_write_command(LCD_CNTL_DATA_WRITE);
212 212
213 /* Copy display bitmap to hardware */ 213 /* lcd can't handle the speed of DMA transfer when boosted */
214 lcd_write_data (&lcd_framebuffer[0][0], LCD_WIDTH*LCD_FBHEIGHT); 214 if ( cpu_frequency > 60000000 )
215 {
216 /* Copy display bitmap to hardware */
217 lcd_write_data (&lcd_framebuffer[0][0], LCD_WIDTH*LCD_FBHEIGHT);
218 }
219 else
220 {
221 /* Copy display bitmap to hardware using DMA */
222 DSR3 = 1;
223 DAR3 = 0xf0000002;
224 SAR3 = (unsigned long)lcd_framebuffer;
225 BCR3 = LCD_WIDTH*LCD_FBHEIGHT;
226 DCR3 = DMA_BWC(1) | DMA_SINC | DMA_SSIZE(DMA_SIZE_BYTE) |
227 DMA_DSIZE(DMA_SIZE_BYTE) | DMA_START;
228 }
215} 229}
216 230
217/* Update a fraction of the display. */ 231/* Update a fraction of the display. */