diff options
| author | Jens Arnold <amiconn@rockbox.org> | 2008-05-29 21:41:47 +0000 |
|---|---|---|
| committer | Jens Arnold <amiconn@rockbox.org> | 2008-05-29 21:41:47 +0000 |
| commit | d52bea8a90a4888efae8a8716d0025d3f4238733 (patch) | |
| tree | 9068db38feca238abc038e8e39126cda0135f2ad | |
| parent | c541e046325f97307f34b2e51ca7994126dd1969 (diff) | |
| download | rockbox-d52bea8a90a4888efae8a8716d0025d3f4238733.zip rockbox-d52bea8a90a4888efae8a8716d0025d3f4238733.tar.gz rockbox-d52bea8a90a4888efae8a8716d0025d3f4238733.tar.bz2 rockbox-d52bea8a90a4888efae8a8716d0025d3f4238733.tar.xz | |
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
| -rw-r--r-- | firmware/target/coldfire/iriver/lcd-remote-as-iriver.S | 28 | ||||
| -rw-r--r-- | firmware/target/coldfire/iriver/lcd-remote-iriver.c | 4 |
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 0325e51..df7447a 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 83b7a02..e291771 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 */ |