OpenCores
URL https://opencores.org/ocsvn/or1k_old/or1k_old/trunk

Subversion Repositories or1k_old

[/] [or1k_old/] [trunk/] [rc203soc/] [sw/] [uClinux/] [include/] [linux/] [stallion.h] - Diff between revs 1765 and 1782

Only display areas with differences | Details | Blame | View Log

Rev 1765 Rev 1782
/*****************************************************************************/
/*****************************************************************************/
 
 
/*
/*
 *      stallion.h  -- stallion multiport serial driver.
 *      stallion.h  -- stallion multiport serial driver.
 *
 *
 *      Copyright (C) 1996-1998  Stallion Technologies (support@stallion.oz.au).
 *      Copyright (C) 1996-1998  Stallion Technologies (support@stallion.oz.au).
 *      Copyright (C) 1994-1996  Greg Ungerer (gerg@stallion.oz.au).
 *      Copyright (C) 1994-1996  Greg Ungerer (gerg@stallion.oz.au).
 *
 *
 *      This program is free software; you can redistribute it and/or modify
 *      This program is free software; you can redistribute it and/or modify
 *      it under the terms of the GNU General Public License as published by
 *      it under the terms of the GNU General Public License as published by
 *      the Free Software Foundation; either version 2 of the License, or
 *      the Free Software Foundation; either version 2 of the License, or
 *      (at your option) any later version.
 *      (at your option) any later version.
 *
 *
 *      This program is distributed in the hope that it will be useful,
 *      This program is distributed in the hope that it will be useful,
 *      but WITHOUT ANY WARRANTY; without even the implied warranty of
 *      but WITHOUT ANY WARRANTY; without even the implied warranty of
 *      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *      GNU General Public License for more details.
 *      GNU General Public License for more details.
 *
 *
 *      You should have received a copy of the GNU General Public License
 *      You should have received a copy of the GNU General Public License
 *      along with this program; if not, write to the Free Software
 *      along with this program; if not, write to the Free Software
 *      Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 *      Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 */
 */
 
 
/*****************************************************************************/
/*****************************************************************************/
#ifndef _STALLION_H
#ifndef _STALLION_H
#define _STALLION_H
#define _STALLION_H
/*****************************************************************************/
/*****************************************************************************/
 
 
/*
/*
 *      Define important driver constants here.
 *      Define important driver constants here.
 */
 */
#define STL_MAXBRDS             4
#define STL_MAXBRDS             4
#define STL_MAXPANELS           4
#define STL_MAXPANELS           4
#define STL_MAXBANKS            8
#define STL_MAXBANKS            8
#define STL_PORTSPERPANEL       16
#define STL_PORTSPERPANEL       16
#define STL_MAXPORTS            64
#define STL_MAXPORTS            64
#define STL_MAXDEVS             (STL_MAXBRDS * STL_MAXPORTS)
#define STL_MAXDEVS             (STL_MAXBRDS * STL_MAXPORTS)
 
 
 
 
/*
/*
 *      Define a set of structures to hold all the board/panel/port info
 *      Define a set of structures to hold all the board/panel/port info
 *      for our ports. These will be dynamically allocated as required.
 *      for our ports. These will be dynamically allocated as required.
 */
 */
 
 
/*
/*
 *      Define a ring queue structure for each port. This will hold the
 *      Define a ring queue structure for each port. This will hold the
 *      TX data waiting to be output. Characters are fed into this buffer
 *      TX data waiting to be output. Characters are fed into this buffer
 *      from the line discipline (or even direct from user space!) and
 *      from the line discipline (or even direct from user space!) and
 *      then fed into the UARTs during interrupts. Will use a classic ring
 *      then fed into the UARTs during interrupts. Will use a classic ring
 *      queue here for this. The good thing about this type of ring queue
 *      queue here for this. The good thing about this type of ring queue
 *      is that the head and tail pointers can be updated without interrupt
 *      is that the head and tail pointers can be updated without interrupt
 *      protection - since "write" code only needs to change the head, and
 *      protection - since "write" code only needs to change the head, and
 *      interrupt code only needs to change the tail.
 *      interrupt code only needs to change the tail.
 */
 */
typedef struct {
typedef struct {
        char    *buf;
        char    *buf;
        char    *head;
        char    *head;
        char    *tail;
        char    *tail;
} stlrq_t;
} stlrq_t;
 
 
/*
/*
 *      Port, panel and board structures to hold status info about each.
 *      Port, panel and board structures to hold status info about each.
 *      The board structure contains pointers to structures for each panel
 *      The board structure contains pointers to structures for each panel
 *      connected to it, and in turn each panel structure contains pointers
 *      connected to it, and in turn each panel structure contains pointers
 *      for each port structure for each port on that panel. Note that
 *      for each port structure for each port on that panel. Note that
 *      the port structure also contains the board and panel number that it
 *      the port structure also contains the board and panel number that it
 *      is associated with, this makes it (fairly) easy to get back to the
 *      is associated with, this makes it (fairly) easy to get back to the
 *      board/panel info for a port.
 *      board/panel info for a port.
 */
 */
typedef struct stlport {
typedef struct stlport {
        unsigned long           magic;
        unsigned long           magic;
        int                     portnr;
        int                     portnr;
        int                     panelnr;
        int                     panelnr;
        int                     brdnr;
        int                     brdnr;
        int                     ioaddr;
        int                     ioaddr;
        int                     uartaddr;
        int                     uartaddr;
        int                     pagenr;
        int                     pagenr;
        int                     istate;
        int                     istate;
        int                     flags;
        int                     flags;
        int                     baud_base;
        int                     baud_base;
        int                     custom_divisor;
        int                     custom_divisor;
        int                     close_delay;
        int                     close_delay;
        int                     closing_wait;
        int                     closing_wait;
        int                     refcount;
        int                     refcount;
        int                     openwaitcnt;
        int                     openwaitcnt;
        int                     brklen;
        int                     brklen;
        long                    session;
        long                    session;
        long                    pgrp;
        long                    pgrp;
        unsigned int            sigs;
        unsigned int            sigs;
        unsigned int            rxignoremsk;
        unsigned int            rxignoremsk;
        unsigned int            rxmarkmsk;
        unsigned int            rxmarkmsk;
        unsigned int            imr;
        unsigned int            imr;
        unsigned int            crenable;
        unsigned int            crenable;
        unsigned long           clk;
        unsigned long           clk;
        unsigned long           hwid;
        unsigned long           hwid;
        void                    *uartp;
        void                    *uartp;
        struct tty_struct       *tty;
        struct tty_struct       *tty;
        struct wait_queue       *open_wait;
        struct wait_queue       *open_wait;
        struct wait_queue       *close_wait;
        struct wait_queue       *close_wait;
        struct termios          normaltermios;
        struct termios          normaltermios;
        struct termios          callouttermios;
        struct termios          callouttermios;
        struct tq_struct        tqueue;
        struct tq_struct        tqueue;
        comstats_t              stats;
        comstats_t              stats;
        stlrq_t                 tx;
        stlrq_t                 tx;
} stlport_t;
} stlport_t;
 
 
typedef struct stlpanel {
typedef struct stlpanel {
        unsigned long   magic;
        unsigned long   magic;
        int             panelnr;
        int             panelnr;
        int             brdnr;
        int             brdnr;
        int             pagenr;
        int             pagenr;
        int             nrports;
        int             nrports;
        int             iobase;
        int             iobase;
        void            *uartp;
        void            *uartp;
        void            (*isr)(struct stlpanel *panelp, unsigned int iobase);
        void            (*isr)(struct stlpanel *panelp, unsigned int iobase);
        unsigned int    hwid;
        unsigned int    hwid;
        unsigned int    ackmask;
        unsigned int    ackmask;
        stlport_t       *ports[STL_PORTSPERPANEL];
        stlport_t       *ports[STL_PORTSPERPANEL];
} stlpanel_t;
} stlpanel_t;
 
 
typedef struct stlbrd {
typedef struct stlbrd {
        unsigned long   magic;
        unsigned long   magic;
        int             brdnr;
        int             brdnr;
        int             brdtype;
        int             brdtype;
        int             state;
        int             state;
        int             nrpanels;
        int             nrpanels;
        int             nrports;
        int             nrports;
        int             nrbnks;
        int             nrbnks;
        int             irq;
        int             irq;
        int             irqtype;
        int             irqtype;
        void            (*isr)(struct stlbrd *brdp);
        void            (*isr)(struct stlbrd *brdp);
        unsigned int    ioaddr1;
        unsigned int    ioaddr1;
        unsigned int    ioaddr2;
        unsigned int    ioaddr2;
        unsigned int    iosize1;
        unsigned int    iosize1;
        unsigned int    iosize2;
        unsigned int    iosize2;
        unsigned int    iostatus;
        unsigned int    iostatus;
        unsigned int    ioctrl;
        unsigned int    ioctrl;
        unsigned int    ioctrlval;
        unsigned int    ioctrlval;
        unsigned int    hwid;
        unsigned int    hwid;
        unsigned long   clk;
        unsigned long   clk;
        unsigned int    bnkpageaddr[STL_MAXBANKS];
        unsigned int    bnkpageaddr[STL_MAXBANKS];
        unsigned int    bnkstataddr[STL_MAXBANKS];
        unsigned int    bnkstataddr[STL_MAXBANKS];
        stlpanel_t      *bnk2panel[STL_MAXBANKS];
        stlpanel_t      *bnk2panel[STL_MAXBANKS];
        stlpanel_t      *panels[STL_MAXPANELS];
        stlpanel_t      *panels[STL_MAXPANELS];
} stlbrd_t;
} stlbrd_t;
 
 
 
 
/*
/*
 *      Define MAGIC numbers used for above structures.
 *      Define MAGIC numbers used for above structures.
 */
 */
#define STL_PORTMAGIC   0x5a7182c9
#define STL_PORTMAGIC   0x5a7182c9
#define STL_PANELMAGIC  0x7ef621a1
#define STL_PANELMAGIC  0x7ef621a1
#define STL_BOARDMAGIC  0xa2267f52
#define STL_BOARDMAGIC  0xa2267f52
 
 
/*****************************************************************************/
/*****************************************************************************/
#endif
#endif
 
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.