Expand PMF_FN_* macros.
[netbsd-mini2440.git] / sys / dev / pci / n8 / common / n8_driver_main.h
blob7a3cec718e2260ea373fd06daf3c1c7f6dc44de2
1 /*-
2 * Copyright (C) 2001-2003 by NBMK Encryption Technologies.
3 * All rights reserved.
5 * NBMK Encryption Technologies provides no support of any kind for
6 * this software. Questions or concerns about it may be addressed to
7 * the members of the relevant open-source community at
8 * <tech-crypto@netbsd.org>.
9 *
10 * Redistribution and use in source and binary forms, with or without
11 * modification, are permitted provided that the following conditions are
12 * met:
14 * 1. Redistributions of source code must retain the above copyright
15 * notice, this list of conditions and the following disclaimer.
17 * 2. Redistributions in binary form must reproduce the above
18 * copyright notice, this list of conditions and the following
19 * disclaimer in the documentation and/or other materials provided
20 * with the distribution.
22 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
23 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
24 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
25 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
26 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
27 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
28 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
29 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
30 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
31 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
32 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
35 /*****************************************************************************
36 * @(#) n8_driver_main.h 1.27@(#)
37 *****************************************************************************/
39 /*****************************************************************************/
40 /** @file n8_driver_main.h
41 * @brief NSP2000 Device Driver main common header
43 * This file contains all data structures, constants, and prototypes used by
44 * the NSP2000 Device Driver.
46 *****************************************************************************/
48 /*****************************************************************************
49 * Revision history:
50 * 02/12/04 bac Fixed time-related defines to be more clear.
51 * 04/21/03 brr Move several non-configuration constants here from
52 * n8_driver_parms.h.
53 * 03/19/03 brr Added statistics to better track IRS's.
54 * 02/20/03 brr Eliminated all references to shared memory.
55 * 11/25/02 brr Move multiply defined constants to this on file. Also
56 * reformat to conform to coding standards.
57 * 10/10/02 brr Eliminate eventWaitType.
58 * 06/25/02 brr Moved SKS constants here from n8_driver_parms.h.
59 * 05/30/02 brr Keep statistics for bus errors.
60 * 05/20/02 brr Revert to a single AMBA wait queue.
61 * 05/02/02 brr Moved SKS semaphore here from queue struture.
62 * 03/19/02 msz Shadow memory is now called shared memory.
63 * 02/25/02 brr Removed references to qmgrData.
64 * 02/15/02 brr Removed obsolete FPGA defines, added context memory support.
65 * 01/15/02 msz Support of an array of AMBA wait blocks.
66 * 11/26/01 mmd Added N8_PCIDEVICES_t type and PCIinfo field to NspInstance_t.
67 * Pruned some no-longer used fields. Renamed from simon_drv.h.
68 * 11/15/01 mmd Eliminated memory struct field.
69 * 11/14/01 mmd Moved all magic numbers to n8_driver_parms.h.
70 * 11/10/01 brr Modified to support static allocations of persistant data
71 * by the driver.
72 * 11/06/01 mmd Added FPGA_Type and FPGA_CrystalType fields to
73 * SimonInstance_t.
74 * 10/11/01 mmd Added programmed field to SimonInstance_t.
75 * 09/25/01 mmd Added SKSSize, ContextMemSize, HardwareVersion, and
76 * RevisionID to SimonInstance_t, and changed field name from
77 * FPGA to IsFPGA.
78 * 09/24/01 mmd Added AMBAblock, AMBAbitmask, and AMBAirqstatus to
79 * SimonInstance_t.
80 * 09/20/01 mmd Removed pid field from SimonInstance_t.
81 * 09/13/01 mmd Added FPGAsessionID and FPGAlocked to the SimonInstance_t
82 * structure, for FPGA lock safeguarding.
83 * 09/12/01 mmd Moved declaration of NSPDeviceTable_g, NSPcount_g, and
84 * N8_FPGA_g to driverglobals.h.
85 * 09/10/01 mmd Moved declaration of global resources to this header.
86 * 09/07/01 mmd Added DEF_PSEUDO_DEVICE to implement the pseudo device.
87 * 08/21/01 mmd Added new fields to SimonInstance_t (coretype, FPGALock).
88 * 08/16/01 mmd Removed inclusion of n8_types.h..
89 * 07/27/01 brr Added PLX & LCR macros.
90 * 06/17/01 mmd Further cleanup and debugging.
91 * 05/29/01 mmd Incorporated suggestions from code review.
92 * 05/17/01 mmd Original version.
93 ****************************************************************************/
95 #ifndef N8_DRIVER_MAIN_H
96 #define N8_DRIVER_MAIN_H
99 #include "helper.h"
100 #include "n8_device_info.h"
101 #include "n8_driver_parms.h"
102 #include "contextMem.h"
104 /* Time-related macros */
105 #define N8_USECS_PER_SEC 1000000
106 #define N8_USECS_PER_MSEC 1000
107 #define N8_USECS_PER_TICK (N8_USECS_PER_SEC/HZ)
108 #define N8_MINIMUM_YIELD_USECS (10 * N8_USECS_PER_MSEC)
110 /*****************************************************************************
111 * HARDWARE IDENTIFICATION - *
112 * PCI devices are identified with unique vendor/device ID's. Also, here are *
113 * some memory resource parameters for FPGAs, since they don't indicate the *
114 * correct needed amount of address space for operation. *
115 *****************************************************************************/
117 #define DEF_ASIC_VENDOR_ID 0x170b
118 #define DEF_ASIC_DEVICE_ID 0x0100
119 #define DEF_ASIC_PCI_MEMORY_SIZE_2 (16384 * 4) /* 64K */
121 #define N8_DEF_SKS_MEMSIZE 512
122 #define N8_SKS_PROM_SIZE 4096
124 #define N8_EA_CMD_BLK_SIZE 128
125 #define N8_PKE_CMD_BLK_SIZE 32
126 #define N8_RNG_CMD_BLK_SIZE 8
129 #define N8_MAX_CMD_QUE_EXP 15
130 #define N8_MIN_CMD_QUE_EXP 4
132 #define N8_DEF_RNG_QUE_SIZE (1<<N8_DEF_RNG_QUE_EXP)
134 /* The following two values are inSilicon PCI test registers that need */
135 /* to be set to the PCI standards rather than their defaults. */
136 #define INSILICON_PCI_TRDY_TIMEOUT 0x40
137 #define INSILICON_PCI_RETRY_TIMEOUT 0x41
139 /**************************************************************************
140 * DEVICE INFORMATION STRUCTURES - *
142 * The NSPDeviceTable_g is an array of structures, one per hardware *
143 * instance, that retain assorted information about each instance. The *
144 * minor number of any request indexes into this array. NSPcount_g *
145 * maintains the number of detected NSP2000 hardware instances. *
146 **************************************************************************/
148 typedef struct
150 unsigned long base_address [6];
151 unsigned long base_range [6];
152 unsigned short vendor_id;
153 unsigned short device_id;
154 unsigned char revision_id;
155 unsigned char irq;
156 } N8_PCIDEVICES_t;
158 /* Device instance information structure */
159 typedef struct
161 void *dev; /* nsp2000_softsc_t * */
162 wait_queue_head_t RNHblock; /* Wait queue for RNH IRQ's */
163 wait_queue_head_t CCHblock; /* Wait queue for CCH IRQ's */
164 wait_queue_head_t PKHblock; /* Wait queue for PKH IRQ's */
165 wait_queue_head_t AMBAblock; /* Wait queue for AMBA IRQ's */
167 unsigned long RNHbitmask; /* RNH IRQ bitmask */
168 unsigned long CCHbitmask; /* CCH IRQ bitmask */
169 unsigned long PKHbitmask; /* PKH IRQ bitmask */
170 unsigned long AMBAbitmask; /* AMBA IRQ bitmask */
172 unsigned long RNHirqstatus; /* RNH control/status @ IRQ */
173 unsigned long CCHirqstatus; /* CCH control/status @ IRQ */
174 unsigned long PKHirqstatus; /* PKH control/status @ IRQ */
175 unsigned long AMBAirqstatus; /* AMBA control/status @ IRQ */
177 int RNHbuserrors; /* Counter for bus errors */
178 int PKHbuserrors; /* Counter for bus errors */
179 int CCHbuserrors; /* Counter for bus errors */
180 int RNHcmderrors; /* Counter for RNH errors */
181 int PKHcmderrors; /* Counter for PKH errors */
182 int CCHcmderrors; /* Counter for CCH errors */
184 N8_PCIDEVICES_t PCIinfo; /* PCI config info per inst */
186 unsigned long contextMemSize; /* Size of context memory (bytes) */
187 unsigned long contextMemEntries;/* Size of context memory (entries) */
188 unsigned long contextMemNext; /* Index to begin search for */
189 /* next allocation. */
190 ContextMemoryMap_t *contextMemMap_p; /* pointer to context memory */
191 /* allocation map. */
192 ATOMICLOCK_t contextMemSem; /* Mutual exclusion semaphore*/
194 /********************************************************************************/
195 unsigned short HardwareVersion; /* PCI Device ID */
196 unsigned char RevisionID; /* PCI Revision ID */
197 unsigned char chip; /* Number or this chip */
198 void *RNqueue_p; /* Pointer to RN queue */
199 unsigned long RNqueue_size; /* Size of RN queue in bytes */
200 unsigned long RNqueue_base; /* Phys. base addr. of RN queue */
201 void *PKqueue_p; /* Pointer to PK queue */
202 unsigned long PKqueue_size; /* Size of PK queue in bytes */
203 unsigned long PKqueue_base; /* Phys. base addr. of PK queue */
204 void *EAqueue_p; /* Pointer to EA queue */
205 unsigned long EAqueue_size; /* Size of EA queue in bytes */
206 unsigned long EAqueue_base; /* Phys. base addr. of EA queue */
207 char SKS_map[N8_DEF_SKS_MEMSIZE]; /* SKS allocation map */
208 unsigned long SKS_size; /* Size of SKS in bytes */
209 ATOMICLOCK_t SKSSem; /* resource lock for SKS map */
210 void *RNGparms_p; /* Pointer to RNG parm struct */
211 unsigned long RNGparms_size; /* Size of RNG parm struct (byte)*/
212 unsigned long RNGparms_base; /* Phys. base addr. of RNG parms */
213 unsigned long *NSPregs_p; /* NSP register mapping */
214 unsigned long NSPregs_base; /* Phys. base addr. of NSP regs */
215 uint16_t EAreadIndex; /* EA read index */
216 uint16_t PKreadIndex; /* PK read index */
217 N8_Hardware_t hardwareType; /* Device type for this chip */
219 } NspInstance_t;
223 #endif /* N8_DRIVER_MAIN_H */