winverbs/nd: do not convert timeout status value
[mirror/winof/.git] / inc / mthca / mthca_vc.h
1 /*
2  * Copyright (c) 2005 SilverStorm Technologies.  All rights reserved.
3  * Copyright (c) 2004-2005 Mellanox Technologies, Inc. All rights reserved. 
4  *
5  * This software is available to you under the OpenIB.org BSD license
6  * below:
7  *
8  *     Redistribution and use in source and binary forms, with or
9  *     without modification, are permitted provided that the following
10  *     conditions are met:
11  *
12  *      - Redistributions of source code must retain the above
13  *        copyright notice, this list of conditions and the following
14  *        disclaimer.
15  *
16  *      - Redistributions in binary form must reproduce the above
17  *        copyright notice, this list of conditions and the following
18  *        disclaimer in the documentation and/or other materials
19  *        provided with the distribution.
20  *
21  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
22  * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
23  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
24  * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
25  * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
26  * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
27  * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
28  * SOFTWARE.
29  *
30  * $Id$
31  */
32
33 #ifndef MTHCA_VC_H
34 #define MTHCA_VC_H
35
36 #define PTR_ALIGN(size) (((size) + sizeof(void*) - 1) & ~(sizeof(void*) - 1))
37
38 typedef
39 struct _map_crspace {
40         unsigned __int64        va;             /* address of CRSPACE, mapped to user space */
41         unsigned long           size;   /* size of CRSPACE, mapped to user space */
42         unsigned long           reserved;       /* to align on quadword boundary */
43 } map_crspace;
44
45 /* Definitions for hca_driver commands*/
46 #define FW_READ                 0x00
47 #define FW_WRITE                0x01
48 #define FW_READ_CMD             0x08
49 #define FW_WRITE_CMD            0x09
50 #define FW_MAP_CRSPACE          0x0A
51 #define FW_UNMAP_CRSPACE        0x0B
52 #define FW_OPEN_IF              0xe7
53 #define FW_CLOSE_IF             0x7e
54
55 struct msix_info {
56         int     valid;
57         int     enabled;
58         int     masked;
59         int requested;
60         int granted;
61         unsigned granted_mask;
62         unsigned pending_mask;
63 } ;
64
65 /* uplink info */
66 typedef struct {
67         uint8_t bus_type;       /* 1 - PCI, 2 - PCI-X, 3 - PCI_E */
68 #define UPLINK_BUS_PCI          1       
69 #define UPLINK_BUS_PCIX         2       
70 #define UPLINK_BUS_PCIE         3       
71         union {
72                 struct {
73                         uint8_t capabilities;
74 #define UPLINK_BUS_PCIX_133     2       /* 133 MHz capable */
75                         uint16_t        frequency;      /* in MHz */
76                 } pci_x;
77                 struct {
78                         uint8_t capabilities;
79                         uint8_t link_speed;             /* 1X link speed */
80 #define UPLINK_BUS_PCIE_SDR     1       /* 2.5 Gbps */
81 #define UPLINK_BUS_PCIE_DDR     2       /* 5 Gbps */
82                         uint8_t link_width;             /* x1, x2, x4, x8, x12, x16, x32 */
83                 } pci_e;
84         } u;
85         struct msix_info x;
86 } uplink_info_t;
87
88 /* Defines for get data for vendor specific */
89 #define MTHCA_BRD_ID_LEN  64
90
91 inline char* mthca_get_board_id(ib_ca_attr_t *ca_attr)
92 {
93         return (char*)(ca_attr) + (ca_attr->size - PTR_ALIGN(MTHCA_BRD_ID_LEN) - PTR_ALIGN(sizeof(uplink_info_t)));
94 }
95
96 inline void* mthca_get_uplink_info(ib_ca_attr_t *ca_attr)
97 {
98         return (char*)(ca_attr) + (ca_attr->size - PTR_ALIGN(sizeof(uplink_info_t)));
99 }
100
101 #endif