The evilness that is putting the board into ISA mode appears to be
/etc/rc3.d/S90ts7kvfb
We were able to use those pins in GPIO mode once we disabled that one script.
I'm guessing the test program, /usr/local/bin/load_ts7kv, is switching it to
ISA mode to see if a ts7kv is available.
With our daughterboard attached to the ts7800, the S90ts7kvfb script was
causing the board to lock. Once we isolated and removed the script, everything
worked as expected.
I really feel if the manual is going to state the board comes up in GPIO mode
on power-up, the supplied debian linux should do the same. The script should
be supplied as s90ts7kvfb and let those users needing it, re-enable it. At the
very least the script should document exactly that it is switching the board
from GPIO to ISA mode, such that grep might find it.
Richard
--- In "Harold" <> wrote:
>
> Well, the power-up default actually is GPIO mode, as the manual says. If you
> boot into the fastboot busybox environment, it is in GPIO mode. But when you
> boot into Debian Linux, something somewhere in the boot procedure puts it
> into ISA mode.
>
> --- In "craignied" <craignied@> wrote:
> >
> >
> > --- In "Harold" <HDewar@> wrote:
> > >
> > > You may need to write to the PC/104 MUX registers at 0xE8000030 to
> > > 0xE800003C to set the pins to function as GPIO instead of ISA bus.
> >
> > Whoa, you're absolutely right.
> >
> > This is in the TS-7800 manual:
> >
> > The PC-104 connector can be multiplexed between different functionalities
> > including ISA bus and GPIO. The power-up default is GPIO mode, with all
> > I/Os in a neutral state. To enable the PC-104 bus (ISA) signals, it is
> > necessary to write the following values to the registers specified:
> > 0x55555555 to address 0xE8000030
> > 0x55555555 to address 0xE8000034
> > 0x55555 to address 0xE8000038
> > 0x55555 to address 0xE800003C
> >
> > So I stupidly assumed that the power-up default is GPIO mode :)
> >
> > This did the trick:
> >
> > BUS = ( unsigned int * ) ( base + ( 0x30 / 0x04 ) );
> > *BUS = 0x0;
> > BUS = ( unsigned int * ) ( base + ( 0x34 / 0x04 ) );
> > *BUS = 0x0;
> > BUS = ( unsigned int * ) ( base + ( 0x38 / 0x04 ) );
> > *BUS = 0x0;
> > BUS = ( unsigned int * ) ( base + ( 0x3C / 0x04 ) );
> > *BUS = 0x0;
> >
> > before any read/writes
> >
> > Thanks *super*
> > Craig
------------------------------------
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/
|