linux-old/drivers/block/cpqarray.h
<<
>>
Prefs
   1/*
   2 *    Disk Array driver for Compaq SMART2 Controllers
   3 *    Copyright 1998 Compaq Computer Corporation
   4 *
   5 *    This program is free software; you can redistribute it and/or modify
   6 *    it under the terms of the GNU General Public License as published by
   7 *    the Free Software Foundation; either version 2 of the License, or
   8 *    (at your option) any later version.
   9 *
  10 *    This program is distributed in the hope that it will be useful,
  11 *    but WITHOUT ANY WARRANTY; without even the implied warranty of
  12 *    MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, GOOD TITLE or
  13 *    NON INFRINGEMENT.  See the GNU General Public License for more details.
  14 *
  15 *    You should have received a copy of the GNU General Public License
  16 *    along with this program; if not, write to the Free Software
  17 *    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  18 *
  19 *    Questions/Comments/Bugfixes to arrays@compaq.com
  20 *
  21 *    If you want to make changes, improve or add functionality to this
  22 *    driver, you'll probably need the Compaq Array Controller Interface
  23 *    Specificiation (Document number ECG086/1198)
  24 */
  25#ifndef CPQARRAY_H
  26#define CPQARRAY_H
  27
  28#ifdef __KERNEL__
  29#include <linux/blkdev.h>
  30#include <linux/locks.h>
  31#include <linux/slab.h>
  32#include <linux/proc_fs.h>
  33#include <linux/timer.h>
  34#endif
  35
  36#include "ida_cmd.h"
  37
  38#define IO_OK           0
  39#define IO_ERROR        1
  40#define NWD             16
  41#define NWD_SHIFT       4
  42#define IDA_MAX_PART    16
  43
  44#define IDA_TIMER       (5*HZ)
  45#define IDA_TIMEOUT     (10*HZ)
  46
  47#define MISC_NONFATAL_WARN      0x01
  48
  49typedef struct {
  50        unsigned blk_size;
  51        unsigned nr_blks;
  52        unsigned cylinders;
  53        unsigned heads;
  54        unsigned sectors;
  55        int usage_count;
  56} drv_info_t;
  57
  58#ifdef __KERNEL__
  59
  60struct ctlr_info;
  61typedef struct ctlr_info ctlr_info_t;
  62
  63struct access_method {
  64        void (*submit_command)(ctlr_info_t *h, cmdlist_t *c);
  65        void (*set_intr_mask)(ctlr_info_t *h, unsigned long val);
  66        unsigned long (*fifo_full)(ctlr_info_t *h);
  67        unsigned long (*intr_pending)(ctlr_info_t *h);
  68        unsigned long (*command_completed)(ctlr_info_t *h);
  69};
  70
  71struct board_type {
  72        __u32   board_id;
  73        char    *product_name;
  74        struct access_method *access;
  75};
  76
  77struct ctlr_info {
  78        int     ctlr;
  79        char    devname[8];
  80        __u32   log_drv_map;
  81        __u32   drv_assign_map;
  82        __u32   drv_spare_map;
  83        __u32   mp_failed_drv_map;
  84
  85        char    firm_rev[4];
  86        struct pci_dev *pdev;
  87        int     ctlr_sig;
  88
  89        int     log_drives;
  90        int     highest_lun;
  91        int     phys_drives;
  92
  93        struct pci_dev *pci_dev;    /* NULL if EISA */
  94        __u32   board_id;
  95        char    *product_name;  
  96
  97        void *vaddr;
  98        unsigned long paddr;
  99        unsigned long io_mem_addr;
 100        unsigned long io_mem_length;    
 101        int     intr;
 102        int     usage_count;
 103        drv_info_t      drv[NWD];
 104        struct proc_dir_entry *proc;
 105
 106        struct access_method access;
 107
 108        cmdlist_t *reqQ;
 109        cmdlist_t *cmpQ;
 110        cmdlist_t *cmd_pool;
 111        dma_addr_t cmd_pool_dhandle;
 112        __u32   *cmd_pool_bits;
 113
 114        unsigned int Qdepth;
 115        unsigned int maxQsinceinit;
 116
 117        unsigned int nr_requests;
 118        unsigned int nr_allocs;
 119        unsigned int nr_frees;
 120        struct timer_list timer;
 121        unsigned int misc_tflags;
 122        // Disk structures we need to pass back
 123        struct gendisk gendisk;
 124        // Index by Minor Numbers
 125        struct hd_struct        hd[256];
 126        int                     sizes[256];
 127        int                     blocksizes[256];
 128        int                     hardsizes[256];
 129};
 130#endif
 131
 132#endif /* CPQARRAY_H */
 133
lxr.linux.no kindly hosted by Redpill Linpro AS, provider of Linux consulting and operations services since 1995.