host.h
上传用户:lgb322
上传日期:2013-02-24
资源大小:30529k
文件大小:5k
源码类别:

嵌入式Linux

开发平台:

Unix_Linux

  1. /*
  2. ** -----------------------------------------------------------------------------
  3. **
  4. **  Perle Specialix driver for Linux
  5. **  Ported from existing RIO Driver for SCO sources.
  6.  *
  7.  *  (C) 1990 - 2000 Specialix International Ltd., Byfleet, Surrey, UK.
  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. ** Module : host.h
  24. ** SID : 1.2
  25. ** Last Modified : 11/6/98 11:34:10
  26. ** Retrieved : 11/6/98 11:34:21
  27. **
  28. **  ident @(#)host.h 1.2
  29. **
  30. ** -----------------------------------------------------------------------------
  31. */
  32. #ifndef __rio_host_h__
  33. #define __rio_host_h__
  34. #ifdef SCCS_LABELS
  35. #ifndef lint
  36. static char *_host_h_sccs_ = "@(#)host.h 1.2";
  37. #endif
  38. #endif
  39. /*
  40. ** the host structure - one per host card in the system.
  41. */
  42. #define MAX_EXTRA_UNITS 64
  43. /*
  44. **    Host data structure. This is used for the software equiv. of
  45. **    the host.
  46. */
  47. struct    Host
  48. {
  49.     uchar                  Type;      /* RIO_EISA, RIO_MCA, ... */
  50.     uchar                  Ivec;      /* POLLED or ivec number */
  51.     uchar                  Mode;      /* Control stuff */
  52.     uchar                   Slot;      /* Slot */
  53.     volatile caddr_t        Caddr;     /* KV address of DPRAM */
  54.     volatile struct DpRam  *CardP;     /* KV address of DPRAM, with overlay */
  55.     paddr_t               PaddrP;    /* Phys. address of DPRAM */
  56.     char                    Name[MAX_NAME_LEN];  /* The name of the host */
  57.     uint                 UniqueNum; /* host unique number */
  58.     spinlock_t             HostLock;  /* Lock structure for MPX */
  59.     /*struct pci_devinfo    PciDevInfo; *//* PCI Bus/Device/Function stuff */
  60.     /*struct lockb     HostLock;  *//* Lock structure for MPX */
  61.     uint                    WorkToBeDone; /* set to true each interrupt */
  62.     uint                    InIntr;    /* Being serviced? */
  63.     uint                    IntSrvDone;/* host's interrupt has been serviced */
  64.     int     (*Copy)( caddr_t, caddr_t, int ); /* copy func */
  65.     struct timer_list timer;
  66.     /*
  67.     **               I M P O R T A N T !
  68.     **
  69.     ** The rest of this data structure is cleared to zero after
  70.     ** a RIO_HOST_FOAD command.
  71.     */
  72.     
  73.     ulong                   Flags;     /* Whats going down */
  74. #define RC_WAITING            0
  75. #define RC_STARTUP            1
  76. #define RC_RUNNING            2
  77. #define RC_STUFFED            3
  78. #define RC_SOMETHING          4
  79. #define RC_SOMETHING_NEW      5
  80. #define RC_SOMETHING_ELSE     6
  81. #define RC_READY              7
  82. #define RUN_STATE             7
  83. /*
  84. ** Boot mode applies to the way in which hosts in this system will
  85. ** boot RTAs
  86. */
  87. #define RC_BOOT_ALL           0x8 /* Boot all RTAs attached */
  88. #define RC_BOOT_OWN           0x10 /* Only boot RTAs bound to this system */
  89. #define RC_BOOT_NONE          0x20 /* Don't boot any RTAs (slave mode) */
  90.     struct Top     Topology[LINKS_PER_UNIT]; /* one per link */
  91.     struct Map              Mapping[MAX_RUP];     /* Mappings for host */
  92.     struct PHB     *PhbP;                /* Pointer to the PHB array */
  93.     ushort                *PhbNumP;             /* Ptr to Number of PHB's */
  94.     struct LPB              *LinkStrP ;           /* Link Structure Array */
  95.     struct RUP            *RupP;                /* Sixteen real rups here */
  96.     struct PARM_MAP       *ParmMapP;            /* points to the parmmap */
  97.     uint                    ExtraUnits[MAX_EXTRA_UNITS]; /* unknown things */
  98.     uint                    NumExtraBooted;       /* how many of the above */
  99.     /*
  100.     ** Twenty logical rups.
  101.     ** The first sixteen are the real Rup entries (above), the last four
  102.     ** are the link RUPs.
  103.     */
  104.     struct UnixRup     UnixRups[MAX_RUP+LINKS_PER_UNIT];
  105. int timeout_id; /* For calling 100 ms delays */
  106. int timeout_sem;/* For calling 100 ms delays */
  107.     long locks; /* long req'd for set_bit --RR */
  108.     char                  ____end_marker____;
  109. };
  110. #define Control      CardP->DpControl
  111. #define SetInt       CardP->DpSetInt
  112. #define ResetTpu     CardP->DpResetTpu
  113. #define ResetInt     CardP->DpResetInt
  114. #define Signature    CardP->DpSignature
  115. #define Sram1        CardP->DpSram1
  116. #define Sram2        CardP->DpSram2
  117. #define Sram3        CardP->DpSram3
  118. #define Scratch      CardP->DpScratch
  119. #define __ParmMapR   CardP->DpParmMapR
  120. #define SLX          CardP->DpSlx
  121. #define Revision     CardP->DpRevision
  122. #define Unique       CardP->DpUnique
  123. #define Year         CardP->DpYear
  124. #define Week         CardP->DpWeek
  125. #define RIO_DUMBPARM 0x0860    /* what not to expect */
  126. #endif