Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ eisa_funcinfo_t(D4) — UnixWare 2.01

Media Vault

Software Library

Restoration Projects

Artifacts Sought






       eisa(D4)                                                    eisa(D4)


       NAME
             eisa_slotinfo_t, eisa_funcinfo_t - EISA bus slot information
             and function block data structures

       SYNOPSIS
             #include <sys/eisa.h>
             #include <sys/ddi.h>

       DESCRIPTION
             EISA bus device configuration space is composed of two
             structures: slot specific information, given by the
             eisa_slotinfo_t structure, and function-specific information,
             given by the eisa_funcinfo_t structure.  There may be multiple
             functions per slot.

       USAGE
          Structure Definitions
             The eisa_slotinfo_t structure holds slot-specific information
             as returned by the EISA int 15h ``read slot'' BIOS call.  The
             eisa_funcinfo_t structure holds function-specific information
             as returned by the EISA int 15h ``read func'' BIOS call.
             These structures are defined below:

             #pragma pack(1)

             /*
              * Size of each function configuration block.
              */
             #define EISA_MAX_SELECTIONS     26
             #define EISA_MAX_TYPE           80
             #define EISA_MAX_MEMORY         9
             #define EISA_MAX_IRQ            7
             #define EISA_MAX_DMA            4
             #define EISA_MAX_PORT           20
             #define EISA_MAX_INIT           60
             #define EISA_MAX_DATA           203

             /*
              * Returned information from an INT 15h call "Read Slot" (AH=D8h, AL=0).
              */
             typedef struct {
                     uchar_t         boardid[4];     /* Compressed board ID */
                     ushort_t        revision;       /* Utility version */
                     uchar_t         functions;      /* Number of functions */

                     struct {


                           Copyright 1994 Novell, Inc.               Page 1













      eisa(D4)                                                    eisa(D4)


                        uchar_t     type    :1,     /* Type string present */
                                    memory  :1,     /* Memory configuration present */
                                    irq     :1,     /* IRQ configuration present */
                                    dma     :1,     /* DMA configuration present */
                                    port    :1,     /* Port configuration present */
                                    init    :1,     /* Port initialization present */
                                    data    :1,     /* Free form data */
                                    disable :1;     /* Function is disabled */
                    } fib;                          /* Function information byte */

                    ushort_t        checksum;       /* CFG checksum */

                    struct {
                        ushort_t    cpid   :4,     /* Duplicate ID number */
                                    type    :2,     /* Slot type */
                                    readid  :1,     /* Readable ID */
                                    dups    :1,     /* Duplicates exist */
                                    disable :1,     /* Board disable is supported */
                                    IOcheck :1,     /* EISA I/O check supported */
                                            :5,     /* Reserved */
                                    partial :1;     /* Configuration incomplete */
                    } dupid;                        /* Duplicate ID information */

            } eisa_slotinfo_t;

            #define EISA_SLOTINFO_SIZE      (sizeof(eisa_slotinfo_t))

            #define EISA_EXP_SLOT           0x00    /* expansion slot */
            #define EISA_EMB_SLOT           0x01    /* embedded slot */
            #define EISA_VIR_SLOT           0x02    /* virtual slot */

            /*
             * Standard Function Configuration Data Block Structure (size = 320 bytes).
             *
             * Returned information from an INT 15h call "Read Function" (AH=D8h, AL=01h).
             */
            typedef struct {

                    uchar_t         boardid[4];     /* Compressed board ID */

                    /*
                     * Duplicate ID information byte format. (total bytes = 2, offset = 0x4)
                     */
                    struct {
                        ushort_t    cpid    :4,     /* Duplicate ID number */
                                    type    :2,     /* Slot type */


                          Copyright 1994 Novell, Inc.               Page 2













       eisa(D4)                                                    eisa(D4)


                                     readid  :1,     /* Readable ID */
                                     dups    :1,     /* Duplicates exist */
                                     disable :1,     /* Board disable is supported */
                                     IOcheck :1,     /* EISA I/O check supported */
                                             :5,     /* Reserved */
                                     partial :1;     /* Configuration incomplete */
                     } dupid;                        /* 0x04: Duplicate ID information */

                     uchar_t         ovl_minor;      /* Minor revision of .OVL code */
                     uchar_t         ovl_major;      /* Major revision of .OVL code */
                     uchar_t         selects[EISA_MAX_SELECTIONS]; /* Selections */

                     /*
                      * Function information byte. (total bytes = 1, offset = 0x22)
                      */
                     struct {
                         uchar_t     type    :1,     /* Type string present */
                                     memory  :1,     /* Memory configuration present */
                                     irq     :1,     /* IRQ configuration present */
                                     dma     :1,     /* DMA configuration present */
                                     port    :1,     /* Port configuration present */
                                     init    :1,     /* Port initialization present */
                                     data    :1,     /* Free form data */
                                     disable :1;     /* Function is disabled */
                     } fib;                          /* 0x22: Function information byte */

                     uchar_t         type[EISA_MAX_TYPE]; /* Function type/subtype */

                     /*
                      * Function block configuration resource data definition.
                      */
                     union {

                       /*
                        * Configuration resource data definition.
                        */
                       struct {

                         /*
                          * Memory Configuration Info. (total bytes = 63, offset = 0x73)
                          */
                         struct {
                             struct {
                                 uchar_t     write   :1,     /* Memory is read only */
                                             cache   :1,     /* Memory is cached */
                                                     :1,     /* Reserved */


                           Copyright 1994 Novell, Inc.               Page 3













      eisa(D4)                                                    eisa(D4)


                                            type    :2,     /* Memory type */
                                            share   :1,     /* Shared Memory */
                                                    :1,     /* Reserved */
                                            more    :1;     /* More entries follow */
                            } config;
                            struct {
                                uchar_t     width   :2,     /* Data path size */
                                            decode  :2;     /* Address decode */
                            } datapath;
                            uchar_t         start[3];       /* Start addr DIV 100h */
                            ushort_t        size;           /* Mem size in 1K bytes */
                        } memory[EISA_MAX_MEMORY];          /* Memory conf. */

                        /*
                         * IRQ Configuration Info. (total bytes = 14, offset = 0x82)
                         */
                        struct {
                            ushort_t        line    :4,     /* IRQ line */
                                                    :1,     /* Reserved */
                                            trigger :1,     /* Trigger (EGDE=0, LEVEL=1) */
                                            share   :1,     /* Sharable */
                                            more    :1,     /* More follow */
                                                    :8;     /* Reserved */
                        } irq[EISA_MAX_IRQ];                /* IRQ conf. */

                        /*
                         * DMA Channel Description. (total bytes = 8, offset = 0xc0)
                         */
                        struct {
                            ushort_t        channel :3,     /* DMA channel number */
                                                    :3,     /* Reserved */
                                            share   :1,     /* Shareable */
                                            more    :1,     /* More entries follow */
                                                    :2,     /* Reserved */
                                            width   :2,     /* Transfer size */
                                            timing  :2,     /* Transfer timing */
                                                    :2;     /* Reserved */
                        } dma[EISA_MAX_DMA];                /* 0xc0: DMA conf. */

                        /*
                         * I/O port info. (total bytes = 60, offset = 0xc8)
                         */
                        struct {
                            uchar_t         count   :5,     /* No.of sequential ports - 1 */
                                                    :1,     /* Reserved */
                                            share   :1,     /* Shareable */


                          Copyright 1994 Novell, Inc.               Page 4













       eisa(D4)                                                    eisa(D4)


                                             more    :1;     /* More entries follow */
                             ushort_t        address;        /* IO port address */
                         } port[EISA_MAX_PORT];              /* PORT conf. */

                         /*
                          * Initialization Data (total bytes = 60, offset = 0x104)
                          */
                         union {
                           struct {
                              uchar_t        type    :2,     /* Port type */
                                             mask    :1,     /* Apply mask */
                                                     :4,     /* Reserved */
                                             more    :1;     /* More entries follow */
                              ushort_t       port;           /* Port address */
                              union {
                                 struct {
                                     uchar_t value;          /* Byte to write */
                                 } bv;

                                 struct {
                                     uchar_t value;          /* Byte to write */
                                     uchar_t mask;           /* Mask to apply */
                                 } bvm;

                                 struct {
                                     ushort_t value;         /* Word to write */
                                 } wv;

                                 struct {
                                     ushort_t value;         /* Word to write */
                                     ushort_t mask;          /* Mask to apply */
                                 } wvm;

                                 struct {
                                     ulong_t  value;         /* Dword to write */
                                 } dv;

                                 struct {
                                     ulong_t  value;         /* Dword to write */
                                     ulong_t  mask;          /* Mask to apply */
                                 } dvm;
                               } vm;
                           } initform[5];                    /* EISA_MAX_INIT / 11 */

                           uchar_t    initdata[EISA_MAX_INIT];



                           Copyright 1994 Novell, Inc.               Page 5













      eisa(D4)                                                    eisa(D4)


                        } init;                             /* INIT info. */

                      } rd;                                 /* Resource Data */

                      uchar_t        freeform[EISA_MAX_DATA + 1];
                                                            /* Free format */

                    } fd;                                   /* Function Data */

            } eisa_funcinfo_t;

            /*
             * EISA Function Information aliases.
             */
            #define eisa_memory              fd.rd.memory
            #define eisa_irq                 fd.rd.irq
            #define eisa_dma                 fd.rd.dma
            #define eisa_port                fd.rd.port
            #define eisa_init                fd.rd.init
            #define eisa_freeform            fd.freeform

            #define EISA_FUNCINFO_SIZE       (sizeof(eisa_funcinfo_t))

            #pragma pack()

      REFERENCES
            cm_read_devconfig(D3), cm_write_devconfig(D3), devconfig(D5),
            BCPR EISA Specification, Version 3.12

      NOTICES
         Portability
            AT-compatible architectures
















                          Copyright 1994 Novell, Inc.               Page 6








Typewritten Software • bear@typewritten.org • Edmonds, WA 98026