OpenCores
URL https://opencores.org/ocsvn/or1k/or1k/trunk

Subversion Repositories or1k

[/] [or1k/] [trunk/] [linux/] [linux-2.4/] [drivers/] [block/] [cpqarray.h] - Blame information for rev 1765

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 1275 phoenix
/*
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
 
49
typedef 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
 
60
struct ctlr_info;
61
typedef struct ctlr_info ctlr_info_t;
62
 
63
struct 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
 
71
struct board_type {
72
        __u32   board_id;
73
        char    *product_name;
74
        struct access_method *access;
75
};
76
 
77
struct 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 */

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.