I've modified tssdcard.c from
ftp://ftp.embeddedarm.com/ts-arm-sbc/ts-7800-linux/sources/linux-2.6.21-ts-src-latest.tar.gz
to work on my 2.6.25 kernel and ts7260 and it is working quite well. I
went on tried to enable dma and hit a wall. DMA transfer appears to be
working both ways (read and write) and the block device works
perfectly for read operations. However for write operations sdwrite
call returns with error code 1.
tssdcard.c sdcore.o
1. tssdcard_transfer -> 2. sdwrite
3. tssdcard_dmastream <- |
3. tssdcard_dmastream -> |
4. tssdcard_transfer <---------
1) What is the specific condition which causes sdwrite to return 1?
Having no access to the source code I have no way to debug this.
2) Looking at the original code for DMA for MACH_TS72XX I can't
possibly think that it have never worked. Could someone confirm
whether SD card DMA is supposed to work on 2.6 or 2.4.
3) I'm using EABI kernel, rootfs and toolchain. However I had to use
OABI object file
(ftp://ftp.embeddedarm.com/ts-arm-sbc/ts-7800-linux/binaries/ts-modules/sdcore/OABI/tssdcore.o)
because the EABI version would oops the kernel (illegal instruction)
with first sdreset function call. Does the EABI object file work only
on TS7800?
j
------------------------------------
Yahoo! Groups Links
<*> To visit your group on the web, go to:
http://groups.yahoo.com/group/ts-7000/
<*> Your email settings:
Individual Email | Traditional
<*> To change settings online go to:
http://groups.yahoo.com/group/ts-7000/join
(Yahoo! ID required)
<*> To change settings via email:
<*> To unsubscribe from this group, send an email to:
<*> Your use of Yahoo! Groups is subject to:
http://docs.yahoo.com/info/terms/
|