Viewing file: cpqarray.h (2.89 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
/* * Disk Array driver for Compaq SMART2 Controllers * Copyright 1998 Compaq Computer Corporation * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, GOOD TITLE or * NON INFRINGEMENT. See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * * Questions/Comments/Bugfixes to arrays@compaq.com * * If you want to make changes, improve or add functionality to this * driver, you'll probably need the Compaq Array Controller Interface * Specificiation (Document number ECG086/1198) */ #ifndef CPQARRAY_H #define CPQARRAY_H
#ifdef __KERNEL__ #include <linux/blkdev.h> #include <linux/locks.h> #include <linux/slab.h> #include <linux/proc_fs.h> #include <linux/timer.h> #endif
#include "ida_cmd.h"
#define IO_OK 0 #define IO_ERROR 1 #define NWD 16 #define NWD_SHIFT 4
#define IDA_TIMER (5*HZ) #define IDA_TIMEOUT (10*HZ)
#define MISC_NONFATAL_WARN 0x01
typedef struct { unsigned blk_size; unsigned nr_blks; unsigned cylinders; unsigned heads; unsigned sectors; int usage_count; } drv_info_t;
#ifdef __KERNEL__
struct my_sg { int size; char *start_addr; };
struct ctlr_info; typedef struct ctlr_info ctlr_info_t;
struct access_method { void (*submit_command)(ctlr_info_t *h, cmdlist_t *c); void (*set_intr_mask)(ctlr_info_t *h, unsigned long val); unsigned long (*fifo_full)(ctlr_info_t *h); unsigned long (*intr_pending)(ctlr_info_t *h); unsigned long (*command_completed)(ctlr_info_t *h); };
struct board_type { __u32 board_id; char *product_name; struct access_method *access; };
struct ctlr_info { int ctlr; char devname[8]; __u32 log_drv_map; __u32 drv_assign_map; __u32 drv_spare_map; __u32 mp_failed_drv_map;
char firm_rev[4]; int ctlr_sig;
int log_drives; int phys_drives;
struct pci_dev *pci_dev; /* NULL if EISA */ __u32 board_id; char *product_name;
void *vaddr; unsigned long paddr; unsigned long ioaddr; int intr; int usage_count; drv_info_t drv[NWD]; struct proc_dir_entry *proc;
struct access_method access;
cmdlist_t *reqQ; cmdlist_t *cmpQ; cmdlist_t *cmd_pool; dma_addr_t cmd_pool_dhandle; __u32 *cmd_pool_bits;
unsigned int Qdepth; unsigned int maxQsinceinit;
unsigned int nr_requests; unsigned int nr_allocs; unsigned int nr_frees; struct timer_list timer; unsigned int misc_tflags; }; #endif
#endif /* CPQARRAY_H */
|