root/include/linux/ddi.h

/* [previous][next][first][last][top][bottom][index][help] */

INCLUDED FROM


   1 /*
   2  * ddi.h        Define the structure for linking in I/O drivers into the
   3  *              operating system kernel.  This method is currently only
   4  *              used by NET layer drivers, but it will be expanded into
   5  *              a link methos for ALL kernel-resident device drivers.
   6  *
   7  * Version:     @(#)ddi.h       1.0.2   04/22/93
   8  *
   9  * Author:      Fred N. van Kempen, <waltje@uwalt.nl.mugnet.org>
  10  */
  11 #ifndef _LINUX_DDI_H
  12 #define _LINUX_DDI_H
  13 
  14 
  15 /* DDI control block flags. */
  16 #define DDI_FREADY      0x10000000      /* device is initialized        */
  17 #define DDI_FPRESENT    0x20000000      /* device hardware is present   */
  18 #define DDI_FBLKDEV     0x00000001      /* device has a BLK spec. file  */
  19 #define DDI_FCHRDEV     0x00000002      /* device has a CHR spec. file  */
  20 
  21 /* Various constants. */
  22 #define DDI_MAXNAME     16              /* length of a DDI ID string    */
  23 
  24 
  25 /* This structure is used to set up a DDI driver. */
  26 struct ddconf {
  27   int           ioaddr;                 /* main I/O (port) address      */
  28   int           ioaux;                  /* auxiliary I/O (HD, AST)      */
  29   int           irq;                    /* IRQ channel                  */
  30   int           dma;                    /* DMA channel to use           */
  31   unsigned long memsize;                /* size of onboard memory       */
  32   unsigned long memaddr;                /* base address of memory       */
  33 };
  34 
  35 
  36 /* The DDI device control block. */
  37 struct ddi_device {
  38   char          *title;                 /* title of the driver          */
  39   char          name[DDI_MAXNAME];      /* unit name of the I/O driver  */
  40   short int     unit;                   /* unit number of this driver   */
  41   short int     nunits;                 /* number of units in driver    */
  42   int           (*init)(struct ddi_device *);   /* initialization func          */
  43   int           (*handler)(int, ...);   /* command handler              */
  44   short int     major;                  /* driver major dev number      */
  45   short int     minor;                  /* driver minor dev number      */
  46   unsigned long flags;                  /* various flags                */
  47   struct ddconf config;                 /* driver HW setup              */
  48 };
  49 
  50 
  51 /* This structure is used to set up networking protocols. */
  52 struct ddi_proto {
  53   char          *name;                  /* protocol name                */
  54   void          (*init)(struct ddi_proto *);    /* initialization func  */
  55 };
  56 
  57 
  58 /* This structure is used to link a STREAMS interface. */
  59 struct iflink {
  60   char          id[DDI_MAXNAME];        /* DDI ID string                */
  61   char          stream[DDI_MAXNAME];    /* STREAMS interface name       */
  62   int           family;                 /* address (protocol) family    */
  63   unsigned int  flags;                  /* any flags needed (unused)    */
  64 };
  65 
  66 
  67 /* DDI control requests. */
  68 #define DDIOCSDBG       0x9000          /* set DDI debug level          */
  69 #define DDIOCGNAME      0x9001          /* get DDI ID name              */
  70 #define DDIOCGCONF      0x9002          /* get DDI HW config            */
  71 #define DDIOCSCONF      0x9003          /* set DDI HW config            */
  72 
  73 
  74 /* DDI global functions. */
  75 extern void                     ddi_init(void);
  76 extern struct ddi_device        *ddi_map(const char *id);
  77 
  78 
  79 #endif  /* _LINUX_DDI_H */

/* [previous][next][first][last][top][bottom][index][help] */