fe119796542d62aba1d8e68f17bcf47494b0fd3b
[mirror/winof/.git] / hw / mt23108 / kernel / hca_driver.h
1 /*\r
2  * Copyright (c) 2005 SilverStorm Technologies.  All rights reserved.\r
3  *\r
4  * This software is available to you under the OpenIB.org BSD license\r
5  * below:\r
6  *\r
7  *     Redistribution and use in source and binary forms, with or\r
8  *     without modification, are permitted provided that the following\r
9  *     conditions are met:\r
10  *\r
11  *      - Redistributions of source code must retain the above\r
12  *        copyright notice, this list of conditions and the following\r
13  *        disclaimer.\r
14  *\r
15  *      - Redistributions in binary form must reproduce the above\r
16  *        copyright notice, this list of conditions and the following\r
17  *        disclaimer in the documentation and/or other materials\r
18  *        provided with the distribution.\r
19  *\r
20  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,\r
21  * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\r
22  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\r
23  * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS\r
24  * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN\r
25  * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\r
26  * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\r
27  * SOFTWARE.\r
28  *\r
29  * $Id$\r
30  */\r
31 \r
32 \r
33 #if !defined( _HCA_DRIVER_H_ )\r
34 #define _HCA_DRIVER_H_\r
35 \r
36 \r
37 #include <complib/cl_types.h>\r
38 #include <complib/cl_pnp_po.h>\r
39 #include <complib/cl_mutex.h>\r
40 #include <iba/ib_ci_ifc.h>\r
41 #include "hca_debug.h"\r
42 #include "hca_data.h"\r
43 \r
44 \r
45 #if !defined(FILE_DEVICE_INFINIBAND) // Not defined in WXP DDK\r
46 #define FILE_DEVICE_INFINIBAND          0x0000003B\r
47 #endif\r
48 \r
49 /****s* HCA/hca_reg_state_t\r
50 * NAME\r
51 *       hca_reg_state_t\r
52 *\r
53 * DESCRIPTION\r
54 *       State for tracking registration with AL.  This state is independent of the\r
55 *       device PnP state, and both are used to properly register with AL.\r
56 *\r
57 * SYNOPSIS\r
58 */\r
59 typedef enum _hca_reg_state\r
60 {\r
61         HCA_SHUTDOWN,\r
62         HCA_ADDED,\r
63         HCA_STARTED,\r
64         HCA_REGISTERED\r
65 \r
66 }       hca_reg_state_t;\r
67 /*\r
68 * VALUES\r
69 *       HCA_SHUTDOWN\r
70 *               Cleaning up.\r
71 *\r
72 *       HCA_ADDED\r
73 *               AddDevice was called and successfully registered for interface\r
74 *               notifications.\r
75 *\r
76 *       HCA_STARTED\r
77 *               IRP_MN_START_DEVICE was called.  The HCA is fully functional.\r
78 *\r
79 *       HCA_REGISTERED\r
80 *               Fully functional and registered with the bus root.\r
81 *********/\r
82 \r
83 \r
84 typedef struct _hca_dev_ext\r
85 {\r
86         cl_pnp_po_ext_t                                 cl_ext;\r
87 \r
88         /* Notification entry for PnP interface events. */\r
89         void                                                    *pnp_ifc_entry;\r
90 \r
91         /* Notification entry for PnP target events. */\r
92         void                                                    *pnp_target_entry;\r
93 \r
94         /* Interface for the lower edge of the IB_AL device. */\r
95         ib_ci_ifc_t                                             ci_ifc;\r
96 \r
97         hca_reg_state_t                                 state;\r
98 \r
99         DEVICE_OBJECT                                   *p_al_dev;\r
100         FILE_OBJECT                                             *p_al_file_obj;\r
101 \r
102         mlnx_hca_t                                              hca;\r
103 \r
104 }       hca_dev_ext_t;\r
105 \r
106 /***********************************\r
107 Firmware Update definitions\r
108 ***********************************/\r
109 #define PCI_CONF_ADDR   (0x00000058)\r
110 #define PCI_CONF_DATA   (0x0000005c)\r
111 #define FLASH_OFFSET    (0x000f01a4)\r
112 #define READ_BIT                (1<<29)\r
113 #define WRITE_BIT               (2<<29)\r
114 #define ADDR_MSK                (0x0007ffff)\r
115 #define CMD_MASK                (0xe0000000)\r
116 #define BANK_SHIFT              (19)\r
117 #define BANK_MASK               (0xfff80000)\r
118 #define MAX_FLASH_SIZE  (0x80000) // 512K\r
119 \r
120 #define SEMAP63                         (0xf03fc)\r
121 #define GPIO_DIR_L                      (0xf008c)\r
122 #define GPIO_POL_L                      (0xf0094)\r
123 #define GPIO_MOD_L                      (0xf009c)\r
124 #define GPIO_DAT_L                      (0xf0084)\r
125 #define GPIO_DATACLEAR_L        (0xf00d4)\r
126 #define GPIO_DATASET_L          (0xf00dc)\r
127 \r
128 #define CPUMODE                         (0xf0150)\r
129 #define CPUMODE_MSK                     (0xc0000000UL)\r
130 #define CPUMODE_SHIFT           (30)\r
131 \r
132 /* Definitions intended to become shared with UM. Later... */\r
133 #define FW_READ                 0x00\r
134 #define FW_WRITE                0x01\r
135 #define FW_READ_CMD             0x08\r
136 #define FW_WRITE_CMD    0x09\r
137 #define FW_OPEN_IF              0xe7\r
138 #define FW_CLOSE_IF             0x7e\r
139 \r
140 #define FW_SIGNATURE            (0x5a445a44)\r
141 #define FW_SECT_SIZE            (0x10000)\r
142 \r
143 #endif  /* !defined( _HCA_DRIVER_H_ ) */\r