linux-old/include/linux/istallion.h
<<
>>
Prefs
   1/*****************************************************************************/
   2
   3/*
   4 *      istallion.h  -- stallion intelligent multiport serial driver.
   5 *
   6 *      Copyright (C) 1996-1998  Stallion Technologies
   7 *      Copyright (C) 1994-1996  Greg Ungerer.
   8 *
   9 *      This program is free software; you can redistribute it and/or modify
  10 *      it under the terms of the GNU General Public License as published by
  11 *      the Free Software Foundation; either version 2 of the License, or
  12 *      (at your option) any later version.
  13 *
  14 *      This program is distributed in the hope that it will be useful,
  15 *      but WITHOUT ANY WARRANTY; without even the implied warranty of
  16 *      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  17 *      GNU General Public License for more details.
  18 *
  19 *      You should have received a copy of the GNU General Public License
  20 *      along with this program; if not, write to the Free Software
  21 *      Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  22 */
  23
  24/*****************************************************************************/
  25#ifndef _ISTALLION_H
  26#define _ISTALLION_H
  27/*****************************************************************************/
  28
  29/*
  30 *      Define important driver constants here.
  31 */
  32#define STL_MAXBRDS             4
  33#define STL_MAXPANELS           4
  34#define STL_MAXPORTS            64
  35#define STL_MAXCHANS            (STL_MAXPORTS + 1)
  36#define STL_MAXDEVS             (STL_MAXBRDS * STL_MAXPORTS)
  37
  38
  39/*
  40 *      Define a set of structures to hold all the board/panel/port info
  41 *      for our ports. These will be dynamically allocated as required at
  42 *      driver initialization time.
  43 */
  44
  45/*
  46 *      Port and board structures to hold status info about each object.
  47 *      The board structure contains pointers to structures for each port
  48 *      connected to it. Panels are not distinguished here, since
  49 *      communication with the slave board will always be on a per port
  50 *      basis.
  51 */
  52typedef struct {
  53        unsigned long           magic;
  54        int                     portnr;
  55        int                     panelnr;
  56        int                     brdnr;
  57        unsigned long           state;
  58        int                     devnr;
  59        int                     flags;
  60        int                     baud_base;
  61        int                     custom_divisor;
  62        int                     close_delay;
  63        int                     closing_wait;
  64        int                     refcount;
  65        int                     openwaitcnt;
  66        int                     rc;
  67        int                     argsize;
  68        void                    *argp;
  69        long                    session;
  70        long                    pgrp;
  71        unsigned int            rxmarkmsk;
  72        struct tty_struct       *tty;
  73#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,3,0))
  74        struct wait_queue       *open_wait;
  75        struct wait_queue       *close_wait;
  76        struct wait_queue       *raw_wait;
  77#else
  78        wait_queue_head_t       open_wait;
  79        wait_queue_head_t       close_wait;
  80        wait_queue_head_t       raw_wait;
  81#endif
  82        struct tq_struct        tqhangup;
  83        struct termios          normaltermios;
  84        struct termios          callouttermios;
  85        asysigs_t               asig;
  86        unsigned long           addr;
  87        unsigned long           rxoffset;
  88        unsigned long           txoffset;
  89        unsigned long           sigs;
  90        unsigned long           pflag;
  91        unsigned int            rxsize;
  92        unsigned int            txsize;
  93        unsigned char           reqbit;
  94        unsigned char           portidx;
  95        unsigned char           portbit;
  96} stliport_t;
  97
  98/*
  99 *      Use a structure of function pointers to do board level operations.
 100 *      These include, enable/disable, paging shared memory, interrupting, etc.
 101 */
 102typedef struct stlibrd {
 103        unsigned long   magic;
 104        int             brdnr;
 105        int             brdtype;
 106        int             state;
 107        int             nrpanels;
 108        int             nrports;
 109        int             nrdevs;
 110        unsigned int    iobase;
 111        int             iosize;
 112        unsigned long   memaddr;
 113        void            *membase;
 114        int             memsize;
 115        int             pagesize;
 116        int             hostoffset;
 117        int             slaveoffset;
 118        int             bitsize;
 119        int             enabval;
 120        int             panels[STL_MAXPANELS];
 121        int             panelids[STL_MAXPANELS];
 122        void            (*init)(struct stlibrd *brdp);
 123        void            (*enable)(struct stlibrd *brdp);
 124        void            (*reenable)(struct stlibrd *brdp);
 125        void            (*disable)(struct stlibrd *brdp);
 126        char            *(*getmemptr)(struct stlibrd *brdp, unsigned long offset, int line);
 127        void            (*intr)(struct stlibrd *brdp);
 128        void            (*reset)(struct stlibrd *brdp);
 129        stliport_t      *ports[STL_MAXPORTS];
 130} stlibrd_t;
 131
 132
 133/*
 134 *      Define MAGIC numbers used for above structures.
 135 */
 136#define STLI_PORTMAGIC  0xe671c7a1
 137#define STLI_BOARDMAGIC 0x4bc6c825
 138
 139/*****************************************************************************/
 140#endif
 141
lxr.linux.no kindly hosted by Redpill Linpro AS, provider of Linux consulting and operations services since 1995.