Linux kernel & device driver programming

Cross-Referenced Linux and Device Driver Code

[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ]
Version: [ 2.6.11.8 ] [ 2.6.25 ] [ 2.6.25.8 ] [ 2.6.31.13 ] Architecture: [ i386 ]
  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 iss_storagedev@hp.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/slab.h>
 31 #include <linux/proc_fs.h>
 32 #include <linux/timer.h>
 33 #endif
 34 
 35 #include "ida_cmd.h"
 36 
 37 #define IO_OK           0
 38 #define IO_ERROR        1
 39 #define NWD             16
 40 #define NWD_SHIFT       4
 41 
 42 #define IDA_TIMER       (5*HZ)
 43 #define IDA_TIMEOUT     (10*HZ)
 44 
 45 #define MISC_NONFATAL_WARN      0x01
 46 
 47 typedef struct {
 48         unsigned blk_size;
 49         unsigned nr_blks;
 50         unsigned cylinders;
 51         unsigned heads;
 52         unsigned sectors;
 53         int usage_count;
 54 } drv_info_t;
 55 
 56 #ifdef __KERNEL__
 57 
 58 struct ctlr_info;
 59 typedef struct ctlr_info ctlr_info_t;
 60 
 61 struct access_method {
 62         void (*submit_command)(ctlr_info_t *h, cmdlist_t *c);
 63         void (*set_intr_mask)(ctlr_info_t *h, unsigned long val);
 64         unsigned long (*fifo_full)(ctlr_info_t *h);
 65         unsigned long (*intr_pending)(ctlr_info_t *h);
 66         unsigned long (*command_completed)(ctlr_info_t *h);
 67 };
 68 
 69 struct board_type {
 70         __u32   board_id;
 71         char    *product_name;
 72         struct access_method *access;
 73 };
 74 
 75 struct ctlr_info {
 76         int     ctlr;
 77         char    devname[8];
 78         __u32   log_drv_map;
 79         __u32   drv_assign_map;
 80         __u32   drv_spare_map;
 81         __u32   mp_failed_drv_map;
 82 
 83         char    firm_rev[4];
 84         int     ctlr_sig;
 85 
 86         int     log_drives;
 87         int     phys_drives;
 88 
 89         struct pci_dev *pci_dev;    /* NULL if EISA */
 90         __u32   board_id;
 91         char    *product_name;  
 92 
 93         void __iomem *vaddr;
 94         unsigned long paddr;
 95         unsigned long io_mem_addr;
 96         unsigned long io_mem_length;
 97         int     intr;
 98         int     usage_count;
 99         drv_info_t      drv[NWD];
100         struct proc_dir_entry *proc;
101 
102         struct access_method access;
103 
104         cmdlist_t *reqQ;
105         cmdlist_t *cmpQ;
106         cmdlist_t *cmd_pool;
107         dma_addr_t cmd_pool_dhandle;
108         unsigned long *cmd_pool_bits;
109         struct request_queue *queue;
110         spinlock_t lock;
111 
112         unsigned int Qdepth;
113         unsigned int maxQsinceinit;
114 
115         unsigned int nr_requests;
116         unsigned int nr_allocs;
117         unsigned int nr_frees;
118         struct timer_list timer;
119         unsigned int misc_tflags;
120 };
121 
122 #define IDA_LOCK(i)     (&hba[i]->lock)
123 
124 #endif
125 
126 #endif /* CPQARRAY_H */
127 
  This page was automatically generated by the LXR engine.