ts-7000
[Top] [All Lists]

[ts-7000] Re: unable to access PLD registers on ts-gsm1 modem

To:
Subject: [ts-7000] Re: unable to access PLD registers on ts-gsm1 modem
From: "jmahler_tx" <>
Date: Thu, 24 Mar 2011 15:35:33 -0000

--- In  Jim Jackson <> wrote:
>
> 
> On Tue, 22 Mar 2011, jmahler_tx wrote:
> 
> > I am trying to access the PLD registers on a ts-gsm1 modem from a ts-7260 
> > board in a C program, but I cannot find the correct address to map the 
> > registers to. I have attempted using mmap() to map the following 
> > addresses: 0x11800000, 0x11A00000, 0x11C00000, 0x11E00000. I have 
> > attempted the following offsets for each of these starting addresses: 
> > 0x000, 0x140, 0x190, 0x3E8. The modem jumpers are configured to COM3, and 
> > jumpers 4 and 5 are off. If anybody is familiar with the base and offset 
> > addresses needed to access these PLD registers, help would be greatly 
> > appreciated.
> 
> I've done this. I left the board as configured. JP4 on
> 
> Here are a set of C functions for accessing some of the registers...
> 
> /* Modem power control functions.....
>  *
>  * This is in PC104 address space - 0x11e00000  for 8 bit IO
>  *
>  * modempwrinit()  set up register pointers etc
>  *  0x140  Board ID  always 0x09
>  *  0x141  PLD version 1st read -> 0x06, 2nd -> 0x07, 3rd -> 0x08,
>  *                          4th -> Version number
>  *  0x142  Jumpers Bit 0 - JP1 com/io decode 1 on; 0 off;
>  *                      Bit 1 - JP2  ditto
>  *                      Bit 2 - JP3  ditto
>  *                      Bit 3 - JP4 PLD base address setting
>  *  0x143  Status  Bit 0 - Modem Power Control (R/W)   
>  *                      Bit 1 - Modem Power Status  (RO) 
>  *                      Bit 2 - LED Status
>  *                      Bit 3 - JP5 status 1 on; 0 off;
>  *  0x148  Baud    Bit 0 = 1 baud clock is doubled (R/W) allows 230 KBaud
>  */
> 
> #define PC104_8BIT_IO   (0x11e00000)
> #define PC104_16BIT_IO  (0x21e00000)
> #define PC104_8BIT_MEM  (0x11A00000)
> #define PC104_16BIT_MEM (0x21A00000)
> 
> char *gsmcomiostr[]={ "0x3f8 COM1", "0x2f8 COM2", "0x3e8 COM3", "0x2e8 
> COM4",
>                       "0x3a8 COM5", "0x2a8 COM6", "0x3a0 COM7", "0x2a0 
> COM8" };
> 
> volatile unsigned char *pc104base=NULL;
> volatile unsigned char *gsmid;
> volatile unsigned char *gsmjp;
> volatile unsigned char *gsmstat;
> volatile unsigned char *gsmbaud;
> 
> int gsmpwrinit() {
>   int iofd;
> 
>   iofd=open("/dev/mem", O_RDWR|O_SYNC);
>   if (iofd<0) { return(-1); }
>   pc104base=(unsigned char *)mmap(0, getpagesize(), PROT_READ|PROT_WRITE,
>                                   MAP_SHARED, iofd, PC104_8BIT_IO);
>   if (pc104base==MAP_FAILED) { return(-1); }
>   gsmid=pc104base+0x140;
>   if (*gsmid != 0x09) { errno=ENODEV ; return(-1); }
>   gsmjp=pc104base+0x142;
>   gsmstat=pc104base+0x143;
>   gsmbaud=pc104base+0x148;
>   return(0);
> }
> 
> int gsmpwron() {
>   if (pc104base==NULL) { errno=ENODEV ; return(-1); }
>   *gsmstat=(0x01);         /* set power on       */
>   usleep(4000000);         /* wait for power change to happen */
>   return 0;
> }
> 
> int gsmpwroff() {
>   if (pc104base==NULL) { errno=ENODEV ; return(-1); }
>   *gsmstat=0;              /* set power off     */
>   usleep(4000000);         /* wait for power change to happen */
>   return 0;
> }
> 
> int gsmgetjp() {
>   if (pc104base==NULL) { errno=ENODEV ; return(-1); }
>   return( *gsmjp & 0x0f );
> }
> 
> int gsmgetstat() {
>   if (pc104base==NULL) { errno=ENODEV ; return(-1); }
>   return( *gsmstat & 0x0f );
> }
> 
> int gsmgetbaud() {
>   if (pc104base==NULL) { errno=ENODEV ; return(-1); }
>   return( *gsmbaud & 0x01 );
> }
>

Awesome that worked! Thanks a lot



------------------------------------

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/

<Prev in Thread] Current Thread [Next in Thread>
Admin

Disclaimer: Neither Andrew Taylor nor the University of NSW School of Computer and Engineering take any responsibility for the contents of this archive. It is purely a compilation of material sent by many people to the birding-aus mailing list. It has not been checked for accuracy nor its content verified in any way. If you wish to get material removed from the archive or have other queries about the archive e-mail Andrew Taylor at this address: andrewt@cse.unsw.EDU.AU