summaryrefslogtreecommitdiffstats
path: root/firmware/target
diff options
context:
space:
mode:
authorJens Arnold <amiconn@rockbox.org>2008-05-29 21:41:47 +0000
committerJens Arnold <amiconn@rockbox.org>2008-05-29 21:41:47 +0000
commitd52bea8a90a4888efae8a8716d0025d3f4238733 (patch)
tree9068db38feca238abc038e8e39126cda0135f2ad /firmware/target
parentc541e046325f97307f34b2e51ca7994126dd1969 (diff)
downloadrockbox-d52bea8a90a4888efae8a8716d0025d3f4238733.tar.gz
rockbox-d52bea8a90a4888efae8a8716d0025d3f4238733.tar.bz2
rockbox-d52bea8a90a4888efae8a8716d0025d3f4238733.zip
Fix FS #8840 for irivers by slowing down the driver some more. Signal quality is obviously varying a lot among the iriver remotes. Speed is now around halfway between pre-r16832 and r17006 when boosted.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@17657 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'firmware/target')
-rw-r--r--firmware/target/coldfire/iriver/lcd-remote-as-iriver.S28
-rw-r--r--firmware/target/coldfire/iriver/lcd-remote-iriver.c4
2 files changed, 24 insertions, 8 deletions
diff --git a/firmware/target/coldfire/iriver/lcd-remote-as-iriver.S b/firmware/target/coldfire/iriver/lcd-remote-as-iriver.S
index 0325e5176c..df7447a03a 100644
--- a/firmware/target/coldfire/iriver/lcd-remote-as-iriver.S
+++ b/firmware/target/coldfire/iriver/lcd-remote-as-iriver.S
@@ -81,31 +81,47 @@
eor.l %d6, %d0 /* invert data bit */
move.l %d0, (%a1) /* output data bit7 */
nop
+ nop
1:
.macro bit_out
+ move.l %d2, (%a0) /* Bit7: set CLK = 1 */
+ nop
lsl.l #1, %d4 /* Invert data line for bit6 ? */
bcc.s 1f /* no: skip */
eor.l %d6, %d0 /* Invert data bit */
- move.l %d2, (%a0) /* Bit7: set CLK = 1 */
move.l %d1, (%a0) /* set CLK = 0 */
move.l %d0, (%a1) /* Output data bit6 */
- bra.s 2f /* slower than trapf.l - required here */
-1: /* else */
- move.l %d2, (%a0) /* Bit7: set CLK = 1 */
+ .word 0x51fa /* trapf.w - shadow next insn */
+1:
move.l %d1, (%a0) /* set CLK = 0 */
-2:
.endm
+
bit_out
+ nop
+ nop
bit_out
+ nop
+ nop
bit_out
+ nop
+ nop
bit_out
+ nop
+ nop
bit_out
+ nop
+ nop
bit_out
+ nop
+ nop
bit_out
+ nop
+ nop
- nop /* Let data line settle */
move.l %d2, (%a0) /* Bit0: Set CLK = 1 */
+ nop
+ nop
move.l %d1, (%a0) /* Set CLK = 0 */
move.w %d3, %sr /* Restore interrupt level */
diff --git a/firmware/target/coldfire/iriver/lcd-remote-iriver.c b/firmware/target/coldfire/iriver/lcd-remote-iriver.c
index 83b7a022e5..e291771e90 100644
--- a/firmware/target/coldfire/iriver/lcd-remote-iriver.c
+++ b/firmware/target/coldfire/iriver/lcd-remote-iriver.c
@@ -299,7 +299,7 @@ void lcd_remote_update(void)
#ifdef HAVE_REMOTE_LCD_TICKING
/* Adjust byte delay for emi reduction. */
- remote_byte_delay = emireduce ? cpu_frequency / 192800 - 100: 0;
+ remote_byte_delay = emireduce ? cpu_frequency / 206200 - 85: 0;
#endif
/* Copy display bitmap to hardware */
@@ -333,7 +333,7 @@ void lcd_remote_update_rect(int x, int y, int width, int height)
#ifdef HAVE_REMOTE_LCD_TICKING
/* Adjust byte delay for emi reduction */
- remote_byte_delay = emireduce ? cpu_frequency / 192800 - 100: 0;
+ remote_byte_delay = emireduce ? cpu_frequency / 206200 - 85: 0;
#endif
/* Copy specified rectange bitmap to hardware */