As a follow-up, I was able to implement the following procedure under TS's tech
support guidance to get the DIO lines working with the 2.6 kernel:
[1] Edit linuxrc-sdroot on partition 3 of the SD card, changing:
insmod /ts7000_sdcard.ko
to
insmod /ts7000_sdcard.ko dmaenable=0
[2] Once the SD card has booted, execute the following:
peekpoke 32 0x809300c0 0xAA
peekpoke 32 0x80930080 0x88140d00
After that the DIO lines seems to behave normally.
Don
--- In wrote:
>
> Thanks, Roberto! I tried out your test utility and it reported that
> everything worked:
>
> ts7000:/mnt/dio/test# ./bin/iotest
> TEST OUTPUT BITS ON PORT A
> [ Port 0000, Dir 001F, Value 0000 ] write 0000 read 0000
> ------------------- PASS
> [ Port 0000, Dir 001F, Value 0055 ] write 0015 read 0015
> ------------------- PASS
> [ Port 0000, Dir 001F, Value 00AA ] write 000A read 000A
> ------------------- PASS
> [ Port 0000, Dir 001F, Value 00FF ] write 001F read 001F
> ------------------- PASS
> ---->OK
> TEST OUTPUT BITS ON PORT B
> [ Port 0100, Dir 00F8, Value 0000 ] write 0000 read 0000
> ------------------- PASS
> [ Port 0100, Dir 00F8, Value 0055 ] write 0050 read 0050
> ------------------- PASS
> [ Port 0100, Dir 00F8, Value 00AA ] write 00A8 read 00A8
> ------------------- PASS
> [ Port 0100, Dir 00F8, Value 00FF ] write 00F8 read 00F8
> ------------------- PASS
> ---->OK
> TEST OUTPUT BITS ON PORT C
> [ Port 0200, Dir 0001, Value 0000 ] write 0000 read 0000
> ------------------- PASS
> [ Port 0200, Dir 0001, Value 0001 ] write 0001 read 0001
> ------------------- PASS
> ---->OK
> TEST OUTPUT BITS ON PORT F
> [ Port 0300, Dir 0000, Value 0000 ] write 0000 read 0000
> ------------------- PASS
> [ Port 0300, Dir 0000, Value 0002 ] write 0000 read 0000
> ------------------- PASS
> ---->OK
> TEST OUTPUT BITS ON PORT H
> [ Port 0400, Dir 0038, Value 0000 ] write 0000 read 0000
> ------------------- PASS
> [ Port 0400, Dir 0038, Value 0055 ] write 0010 read 0010
> ------------------- PASS
> [ Port 0400, Dir 0038, Value 00AA ] write 0028 read 0028
> ------------------- PASS
> [ Port 0400, Dir 0038, Value 00FF ] write 0038 read 0038
> ------------------- PASS
> ---->OK
> Test completed OK: <<PASS>>
>
> So, it looks like I might just be able to use your IO library to get
> things working with a 2.6 kernel! I'll write my own test utility and let
> you know how it goes.
>
> As an aside, TS tech support is also in communication with me on this
> issue, and there may be another solution. They indicate that the DMA
> lines may be enabled by default, and if the dma lines are disabled in the
> linuxrc when loading the SD card driver, then those lines could be
> available as GPIO.
>
> Don
>
> > Hello Don !
> > Last year I migrated my TS7260 software to kernel 2.6.34 and I got some
> > toubles. One of those whose about DIO.
> > Please, download my IO library from here
> > <http://www.progettopolifemo.com/temp/dio.tar> , compile the included
> > iotest (make -f IOTEST), unplug any DIO connectors from your TS and run
> > ./bin/iotest
> >
> > The output on my Ts7260 boards is:
> > # ./bin/iotest
> > TEST OUTPUT BITS ON PORT A
> > [ Port 0000, Dir 001F, Value 0000 ] write 0000 read 0000
> > ------------------- PASS
> > [ Port 0000, Dir 001F, Value 0055 ] write 0015 read 0015
> > ------------------- PASS
> > [ Port 0000, Dir 001F, Value 00AA ] write 000A read 000A
> > ------------------- PASS
> > [ Port 0000, Dir 001F, Value 00FF ] write 001F read 001F
> > ------------------- PASS
> > ---->OK
> > TEST OUTPUT BITS ON PORT B
> > [ Port 0100, Dir 00F8, Value 0000 ] write 0000 read 0000
> > ------------------- PASS
> > [ Port 0100, Dir 00F8, Value 0055 ] write 0050 read 0010
> > ------------------- FAIL bit 0040 !!!
> > [ Port 0100, Dir 00F8, Value 00AA ] write 00A8 read 00A8
> > ------------------- PASS
> > [ Port 0100, Dir 00F8, Value 00FF ] write 00F8 read 00B8
> > ------------------- FAIL bit 0040 !!!
> > ---->ERROR BITS: 40
> > TEST OUTPUT BITS ON PORT C
> > [ Port 0200, Dir 0001, Value 0000 ] write 0000 read 0000
> > ------------------- PASS
> > [ Port 0200, Dir 0001, Value 0001 ] write 0001 read 0001
> > ------------------- PASS
> > ---->OK
> > TEST OUTPUT BITS ON PORT F
> > [ Port 0300, Dir 0000, Value 0000 ] write 0000 read 0000
> > ------------------- PASS
> > [ Port 0300, Dir 0000, Value 0002 ] write 0000 read 0000
> > ------------------- PASS
> > ---->OK
> > TEST OUTPUT BITS ON PORT H
> > [ Port 0400, Dir 0038, Value 0000 ] write 0000 read 0000
> > ------------------- PASS
> > [ Port 0400, Dir 0038, Value 0055 ] write 0010 read 0010
> > ------------------- PASS
> > [ Port 0400, Dir 0038, Value 00AA ] write 0028 read 0028
> > ------------------- PASS
> > [ Port 0400, Dir 0038, Value 00FF ] write 0038 read 0038
> > ------------------- PASS
> > ---->OK
> > Test <<FAILED>>
> >
> > Everiting works well except two bits on port B!
> > If you run the same test on the same board using kernel 2.4 instead of
> > 2.6.34 you will get a different result but not ok at all.
> >
> > Please give me a feedback.
> > Roberto
> >
> >
> > --- In "Rekcut_Nod" <dtucker@> wrote:
> >>
> >> If I run a little utility (see below) to read and write to the memory
> > register corresponding to the DIO data on the DIO1 header of the TS-7260
> > board, I get different results depending upon whether I'm running the TS
> > stock 2.4 kernel, or their (unsupported) 2.6.21-ts kernel. Has anyone
> > experienced this? Has anyone found a way to get the DIO lines to work
> > with the 2.6 kernel?
> >>
> >> Any assistance is greatly appreciated!
> >> Don
> >>
> >> utility source:
> >>
> >> int main(int argc, char **argv)
> >> {
> >> volatile unsigned char *PBDR, *PBDDR;
> >> unsigned char *start, ONE=0x1;
> >> int fd = open("/dev/mem", O_RDWR|O_SYNC);
> >> int i;
> >>
> >> start = mmap(0, getpagesize(), PROT_READ|PROT_WRITE, MAP_SHARED, fd,
> >> 0x80840000);
> >> PBDR = (unsigned char *)(start + 0x04); // port b
> >> PBDDR = (unsigned char *)(start + 0x14); // port b direction register
> >>
> >> *PBDDR = 0xff;// all output
> >>
> >> for(i=0;i<8;i++)
> >> {
> >> *PBDR = ONE<<i;
> >> printf("*PBDR=%02x\n",*PBDR);
> >> sleep(2);
> >> }
> >>
> >> close(fd);
> >> return 0;
> >> }
> >>
> >> Results, with DIO_4 (pin 9) grounded:
> >> 2.4 kernel:
> >> PBDR=01
> >> PBDR=02
> >> PBDR=04
> >> PBDR=08
> >> PBDR=00
> >> PBDR
> >> PBDR=40
> >> PBDR=80
> >> 2.6 kernel:
> >> PBDR=0f
> >> PBDR=0f
> >> PBDR=0f
> >> PBDR=0f
> >> PBDR=0f
> >> PBDR=2f
> >> PBDR=4f
> >> PBDR=8f
> >>
> >
> >
>
------------------------------------
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/
|