1/*- 2 * Copyright(c) 2002-2011 Exar Corp. 3 * All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification are permitted provided the following conditions are met: 7 * 8 * 1. Redistributions of source code must retain the above copyright notice, 9 * this list of conditions and the following disclaimer. 10 * 11 * 2. Redistributions in binary form must reproduce the above copyright 12 * notice, this list of conditions and the following disclaimer in the 13 * documentation and/or other materials provided with the distribution. 14 * 15 * 3. Neither the name of the Exar Corporation nor the names of its 16 * contributors may be used to endorse or promote products derived from 17 * this software without specific prior written permission. 18 * 19 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 20 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 21 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 22 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 23 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 24 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 25 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 26 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 27 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 28 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 29 * POSSIBILITY OF SUCH DAMAGE. 30 */ 31/*$FreeBSD: releng/10.3/sys/dev/vxge/vxgehal/vxgehal-regs.h 221167 2011-04-28 14:33:15Z gnn $*/ 32 33#ifndef VXGE_HAL_REGS_H 34#define VXGE_HAL_REGS_H 35 36__EXTERN_BEGIN_DECLS 37 38#pragma pack(1) 39/* Using this strcture to calculate offsets */ 40typedef struct vxge_hal_pci_config_le_t { 41 u16 vendor_id; /* 0x00 */ 42 u16 device_id; /* 0x02 */ 43 44 u16 command; /* 0x04 */ 45 u16 status; /* 0x06 */ 46 47 u8 revision; /* 0x08 */ 48 u8 pciClass[3]; /* 0x09 */ 49 50 u8 cache_line_size; /* 0x0c */ 51 u8 latency_timer; /* 0x0d */ 52 u8 header_type; /* 0x0e */ 53 u8 bist; /* 0x0f */ 54 55 u32 base_addr0_lo; /* 0x10 */ 56 u32 base_addr0_hi; /* 0x14 */ 57 58 u32 base_addr1_lo; /* 0x18 */ 59 u32 base_addr1_hi; /* 0x1C */ 60 61 u32 base_addr2_lo; /* 0x20 */ 62 u32 base_addr2_hi; /* 0x24 */ 63 64 u32 cardbus_cis_pointer; /* 0x28 */ 65 66 u16 subsystem_vendor_id; /* 0x2c */ 67 u16 subsystem_id; /* 0x2e */ 68 69 u32 rom_base; /* 0x30 */ 70 u8 capabilities_pointer; /* 0x34 */ 71 u8 rsvd_35[3]; /* 0x35 */ 72 u32 rsvd_38; /* 0x38 */ 73 74 u8 interrupt_line; /* 0x3c */ 75 u8 interrupt_pin; /* 0x3d */ 76 u8 min_grant; /* 0x3e */ 77 u8 max_latency; /* 0x3f */ 78 79 u8 rsvd_b1[VXGE_HAL_PCI_CONFIG_SPACE_SIZE - 0x40]; 80} vxge_hal_pci_config_le_t; /* 0x100 */ 81 82typedef struct vxge_hal_pci_config_t { 83#if defined(VXGE_OS_HOST_BIG_ENDIAN) 84 u16 device_id; /* 0x02 */ 85 u16 vendor_id; /* 0x00 */ 86 87 u16 status; /* 0x06 */ 88 u16 command; /* 0x04 */ 89 90 u8 pciClass[3]; /* 0x09 */ 91 u8 revision; /* 0x08 */ 92 93 u8 bist; /* 0x0f */ 94 u8 header_type; /* 0x0e */ 95 u8 latency_timer; /* 0x0d */ 96 u8 cache_line_size; /* 0x0c */ 97 98 u32 base_addr0_lo; /* 0x10 */ 99 u32 base_addr0_hi; /* 0x14 */ 100 101 u32 base_addr1_lo; /* 0x18 */ 102 u32 base_addr1_hi; /* 0x1C */ 103 104 u32 not_Implemented1; /* 0x20 */ 105 u32 not_Implemented2; /* 0x24 */ 106 107 u32 cardbus_cis_pointer; /* 0x28 */ 108 109 u16 subsystem_id; /* 0x2e */ 110 u16 subsystem_vendor_id; /* 0x2c */ 111 112 u32 rom_base; /* 0x30 */ 113 u8 rsvd_35[3]; /* 0x35 */ 114 u8 capabilities_pointer; /* 0x34 */ 115 u32 rsvd_38; /* 0x38 */ 116 117 u8 max_latency; /* 0x3f */ 118 u8 min_grant; /* 0x3e */ 119 u8 interrupt_pin; /* 0x3d */ 120 u8 interrupt_line; /* 0x3c */ 121#else 122 u16 vendor_id; /* 0x00 */ 123 u16 device_id; /* 0x02 */ 124 125 u16 command; /* 0x04 */ 126 u16 status; /* 0x06 */ 127 128 u8 revision; /* 0x08 */ 129 u8 pciClass[3]; /* 0x09 */ 130 131 u8 cache_line_size; /* 0x0c */ 132 u8 latency_timer; /* 0x0d */ 133 u8 header_type; /* 0x0e */ 134 u8 bist; /* 0x0f */ 135 136 u32 base_addr0_lo; /* 0x10 */ 137 u32 base_addr0_hi; /* 0x14 */ 138 139 u32 base_addr1_lo; /* 0x18 */ 140 u32 base_addr1_hi; /* 0x1C */ 141 142 u32 not_Implemented1; /* 0x20 */ 143 u32 not_Implemented2; /* 0x24 */ 144 145 u32 cardbus_cis_pointer; /* 0x28 */ 146 147 u16 subsystem_vendor_id; /* 0x2c */ 148 u16 subsystem_id; /* 0x2e */ 149 150 u32 rom_base; /* 0x30 */ 151 u8 capabilities_pointer; /* 0x34 */ 152 u8 rsvd_35[3]; /* 0x35 */ 153 u32 rsvd_38; /* 0x38 */ 154 155 u8 interrupt_line; /* 0x3c */ 156 u8 interrupt_pin; /* 0x3d */ 157 u8 min_grant; /* 0x3e */ 158 u8 max_latency; /* 0x3f */ 159 160#endif 161 u8 rsvd_b1[VXGE_HAL_PCI_CONFIG_SPACE_SIZE - 0x40]; 162} vxge_hal_pci_config_t; /* 0x100 */ 163 164#define VXGE_HAL_EEPROM_SIZE (0x01 << 11) 165 166#if defined(VXGE_OS_HOST_BIG_ENDIAN) 167#define VXGE_HAL_PCI_CAP_ID(ptr) *((ptr) + 3) 168#define VXGE_HAL_PCI_CAP_NEXT(ptr) *((ptr) + 2) 169#else 170#define VXGE_HAL_PCI_CAP_ID(ptr) *(ptr) 171#define VXGE_HAL_PCI_CAP_NEXT(ptr) *((ptr) + 1) 172#endif 173 174/* Capability lists */ 175 176#define VXGE_HAL_PCI_CAP_LIST_ID 0 /* Capability ID */ 177#define VXGE_HAL_PCI_CAP_ID_PM 0x01 /* Power Management */ 178#define VXGE_HAL_PCI_CAP_ID_AGP 0x02 /* Accelerated Graphics Port */ 179#define VXGE_HAL_PCI_CAP_ID_VPD 0x03 /* Vital Product Data */ 180#define VXGE_HAL_PCI_CAP_ID_SLOTID 0x04 /* Slot Identification */ 181#define VXGE_HAL_PCI_CAP_ID_MSI 0x05 /* Message Signalled Intr */ 182#define VXGE_HAL_PCI_CAP_ID_CHSWP 0x06 /* CompactPCI HotSwap */ 183#define VXGE_HAL_PCI_CAP_ID_PCIX 0x07 /* PCIX */ 184#define VXGE_HAL_PCI_CAP_ID_HT 0x08 /* Hypertransport */ 185#define VXGE_HAL_PCI_CAP_ID_VS 0x09 /* Vendor Specific */ 186#define VXGE_HAL_PCI_CAP_ID_DBGPORT 0x0A /* Debug Port */ 187#define VXGE_HAL_PCI_CAP_ID_CPCICSR 0x0B /* CompPCI central res ctrl */ 188#define VXGE_HAL_PCI_CAP_ID_SHPC 0x0C /* PCI Standard Hot-Plug Ctrl */ 189#define VXGE_HAL_PCI_CAP_ID_PCIBSVID 0x0D /* PCI Bridge Subsys Vendr Id */ 190#define VXGE_HAL_PCI_CAP_ID_AGP8X 0x0E /* AGP 8x */ 191#define VXGE_HAL_PCI_CAP_ID_SECDEV 0x0F /* Secure Device */ 192#define VXGE_HAL_PCI_CAP_ID_PCIE 0x10 /* PCI Express */ 193#define VXGE_HAL_PCI_CAP_ID_MSIX 0x11 /* MSI-X */ 194#define VXGE_HAL_PCI_CAP_LIST_NEXT 1 /* Next cap in the list */ 195#define VXGE_HAL_PCI_CAP_FLAGS 2 /* Cap defined flags(16 bits) */ 196 197typedef struct vxge_hal_pm_capability_le_t { 198 u8 capability_id; 199 u8 next_capability_ptr; 200 u16 capabilities_reg; 201#define VXGE_HAL_PCI_PM_CAP_VER_MASK 0x0007 /* Version */ 202#define VXGE_HAL_PCI_PM_CAP_PME_CLOCK 0x0008 /* PME clock required */ 203#define VXGE_HAL_PCI_PM_CAP_AUX_POWER 0x0010 /* Auxilliary power support */ 204#define VXGE_HAL_PCI_PM_CAP_DSI 0x0020 /* Device specific init */ 205#define VXGE_HAL_PCI_PM_AUX_CURRENT 0x01C0 /* Auxiliary current reqs */ 206#define VXGE_HAL_PCI_PM_CAP_D1 0x0200 /* D1 power state support */ 207#define VXGE_HAL_PCI_PM_CAP_D2 0x0400 /* D2 power state support */ 208#define VXGE_HAL_PCI_PM_CAP_PME_D0 0x0800 /* PME# assertable from D0 */ 209#define VXGE_HAL_PCI_PM_CAP_PME_D1 0x1000 /* PME# assertable from D1 */ 210#define VXGE_HAL_PCI_PM_CAP_PME_D2 0x2000 /* PME# assertable from D2 */ 211#define VXGE_HAL_PCI_PM_CAP_PME_D3_HOT 0x4000 /* PME# assertable from D3hot */ 212#define VXGE_HAL_PCI_PM_CAP_PME_D3_COLD 0x8000 /* PME# assertable from D3cold */ 213 u16 pm_ctrl; 214#define VXGE_HAL_PCI_PM_CTRL_STATE_MASK 0x0003 /* Curr power state(D0 to D3) */ 215#define VXGE_HAL_PCI_PM_CTRL_NO_SOFT_RESET 0x0008 /* trans from D3hot to D0 */ 216#define VXGE_HAL_PCI_PM_CTRL_PME_ENABLE 0x0100 /* PME pin enable */ 217#define VXGE_HAL_PCI_PM_CTRL_DATA_SEL_MASK 0x1e00 /* Data select (??) */ 218#define VXGE_HAL_PCI_PM_CTRL_DATA_SCALE_MASK 0x6000 /* Data scale (??) */ 219#define VXGE_HAL_PCI_PM_CTRL_PME_STATUS 0x8000 /* PME pin status */ 220 u8 pm_ppb_ext; 221#define VXGE_HAL_PCI_PM_PPB_B2_B3 0x40 /* Stop clk when in D3hot(??) */ 222#define VXGE_HAL_PCI_PM_BPCC_ENABLE 0x80 /* Bus pwr/clk ctrl enable(??) */ 223 u8 pm_data_reg; 224} vxge_hal_pm_capability_le_t; 225 226typedef struct vxge_hal_pm_capability_t { 227#if defined(VXGE_OS_HOST_BIG_ENDIAN) 228 u16 capabilities_reg; 229#define VXGE_HAL_PCI_PM_CAP_VER_MASK 0x0007 /* Version */ 230#define VXGE_HAL_PCI_PM_CAP_PME_CLOCK 0x0008 /* PME clock required */ 231#define VXGE_HAL_PCI_PM_CAP_AUX_POWER 0x0010 /* Auxilliary power support */ 232#define VXGE_HAL_PCI_PM_CAP_DSI 0x0020 /* Dev specific init */ 233#define VXGE_HAL_PCI_PM_AUX_CURRENT 0x01C0 /* Auxiliary current reqs */ 234#define VXGE_HAL_PCI_PM_CAP_D1 0x0200 /* D1 power state support */ 235#define VXGE_HAL_PCI_PM_CAP_D2 0x0400 /* D2 power state support */ 236#define VXGE_HAL_PCI_PM_CAP_PME_D0 0x0800 /* PME# assertable from D0 */ 237#define VXGE_HAL_PCI_PM_CAP_PME_D1 0x1000 /* PME# assertable from D1 */ 238#define VXGE_HAL_PCI_PM_CAP_PME_D2 0x2000 /* PME# assertable from D2 */ 239#define VXGE_HAL_PCI_PM_CAP_PME_D3_HOT 0x4000 /* PME# assertable from D3hot */ 240#define VXGE_HAL_PCI_PM_CAP_PME_D3_COLD 0x8000 /* PME# assertable from D3cold */ 241 u8 next_capability_ptr; 242 u8 capability_id; 243 u8 pm_data_reg; 244 u8 pm_ppb_ext; 245#define VXGE_HAL_PCI_PM_PPB_B2_B3 0x40 /* Stop clk when in D3hot(??) */ 246#define VXGE_HAL_PCI_PM_BPCC_ENABLE 0x80 /* Bus pwr/clk ctrl enable(??) */ 247 u16 pm_ctrl; 248#define VXGE_HAL_PCI_PM_CTRL_STATE_MASK 0x0003 /* Curr pwr state (D0 to D3) */ 249#define VXGE_HAL_PCI_PM_CTRL_NO_SOFT_RESET 0x0008 /* dev trans D3hot to D0 */ 250#define VXGE_HAL_PCI_PM_CTRL_PME_ENABLE 0x0100 /* PME pin enable */ 251#define VXGE_HAL_PCI_PM_CTRL_DATA_SEL_MASK 0x1e00 /* Data select (??) */ 252#define VXGE_HAL_PCI_PM_CTRL_DATA_SCALE_MASK 0x6000 /* Data scale (??) */ 253#define VXGE_HAL_PCI_PM_CTRL_PME_STATUS 0x8000 /* PME pin status */ 254#else 255 u8 capability_id; 256 u8 next_capability_ptr; 257 u16 capabilities_reg; 258#define VXGE_HAL_PCI_PM_CAP_VER_MASK 0x0007 /* Version */ 259#define VXGE_HAL_PCI_PM_CAP_PME_CLOCK 0x0008 /* PME clock required */ 260#define VXGE_HAL_PCI_PM_CAP_AUX_POWER 0x0010 /* Auxilliary power support */ 261#define VXGE_HAL_PCI_PM_CAP_DSI 0x0020 /* Dev specific init */ 262#define VXGE_HAL_PCI_PM_AUX_CURRENT 0x01C0 /* Auxiliary curr reqs */ 263#define VXGE_HAL_PCI_PM_CAP_D1 0x0200 /* D1 power state support */ 264#define VXGE_HAL_PCI_PM_CAP_D2 0x0400 /* D2 power state support */ 265#define VXGE_HAL_PCI_PM_CAP_PME_D0 0x0800 /* PME# assertable from D0 */ 266#define VXGE_HAL_PCI_PM_CAP_PME_D1 0x1000 /* PME# assertable from D1 */ 267#define VXGE_HAL_PCI_PM_CAP_PME_D2 0x2000 /* PME# assertable from D2 */ 268#define VXGE_HAL_PCI_PM_CAP_PME_D3_HOT 0x4000 /* PME# assertable from D3hot */ 269#define VXGE_HAL_PCI_PM_CAP_PME_D3_COLD 0x8000 /* PME# assertable from D3cold */ 270 u16 pm_ctrl; 271#define VXGE_HAL_PCI_PM_CTRL_STATE_MASK 0x0003 /* Curr pwr state (D0 to D3) */ 272#define VXGE_HAL_PCI_PM_CTRL_NO_SOFT_RESET 0x0008 /* dev trans D3hot to D0 */ 273#define VXGE_HAL_PCI_PM_CTRL_PME_ENABLE 0x0100 /* PME pin enable */ 274#define VXGE_HAL_PCI_PM_CTRL_DATA_SEL_MASK 0x1e00 /* Data select (??) */ 275#define VXGE_HAL_PCI_PM_CTRL_DATA_SCALE_MASK 0x6000 /* Data scale (??) */ 276#define VXGE_HAL_PCI_PM_CTRL_PME_STATUS 0x8000 /* PME pin status */ 277 u8 pm_ppb_ext; 278#define VXGE_HAL_PCI_PM_PPB_B2_B3 0x40 /* Stop clk when in D3hot(??) */ 279#define VXGE_HAL_PCI_PM_BPCC_ENABLE 0x80 /* Bus pwr/clk ctrl enable(??) */ 280 u8 pm_data_reg; 281#endif 282} vxge_hal_pm_capability_t; 283 284typedef struct vxge_hal_vpid_capability_le_t { 285 u8 capability_id; 286 u8 next_capability_ptr; 287 u16 vpd_address; 288#define VXGE_HAL_PCI_VPID_COMPL_FALG 0x8000 /* Read Completion Flag */ 289 u32 vpd_data; 290} vxge_hal_vpid_capability_le_t; 291 292typedef struct vxge_hal_vpid_capability_t { 293#if defined(VXGE_OS_HOST_BIG_ENDIAN) 294 u16 vpd_address; 295#define VXGE_HAL_PCI_VPID_COMPL_FALG 0x8000 /* Read Completion Flag */ 296 u8 next_capability_ptr; 297 u8 capability_id; 298 u32 vpd_data; 299#else 300 u8 capability_id; 301 u8 next_capability_ptr; 302 u16 vpd_address; 303#define VXGE_HAL_PCI_VPID_COMPL_FALG 0x8000 /* Read Completion Flag */ 304 u32 vpd_data; 305#endif 306} vxge_hal_vpid_capability_t; 307 308typedef struct vxge_hal_sid_capability_le_t { 309 u8 capability_id; 310 u8 next_capability_ptr; 311 u8 sid_esr; 312#define VXGE_HAL_PCI_SID_ESR_NSLOTS 0x1f /* Num of exp slots avail */ 313#define VXGE_HAL_PCI_SID_ESR_FIC 0x20 /* First In Chassis Flag */ 314 u8 sid_chasis_nr; 315} vxge_hal_sid_capability_le_t; 316 317typedef struct vxge_hal_sid_capability_t { 318#if defined(VXGE_OS_HOST_BIG_ENDIAN) 319 u8 sid_chasis_nr; 320 u8 sid_esr; 321#define VXGE_HAL_PCI_SID_ESR_NSLOTS 0x1f /* Num of exp slots avail */ 322#define VXGE_HAL_PCI_SID_ESR_FIC 0x20 /* First In Chassis Flag */ 323 u8 next_capability_ptr; 324 u8 capability_id; 325#else 326 u8 capability_id; 327 u8 next_capability_ptr; 328 u8 sid_esr; 329#define VXGE_HAL_PCI_SID_ESR_NSLOTS 0x1f /* Num of exp slots avail */ 330#define VXGE_HAL_PCI_SID_ESR_FIC 0x20 /* First In Chassis Flag */ 331 u8 sid_chasis_nr; 332#endif 333} vxge_hal_sid_capability_t; 334 335typedef struct vxge_hal_msi_capability_le_t { 336 u8 capability_id; 337 u8 next_capability_ptr; 338 u16 msi_control; 339#define VXGE_HAL_PCI_MSI_FLAGS_PVMASK 0x0100 /* Per Vector Masking Capable */ 340#define VXGE_HAL_PCI_MSI_FLAGS_64BIT 0x0080 /* 64-bit addresses allowed */ 341#define VXGE_HAL_PCI_MSI_FLAGS_QSIZE 0x0070 /* Msg queue size configured */ 342#define VXGE_HAL_PCI_MSI_FLAGS_QMASK 0x000e /* Max queue size available */ 343#define VXGE_HAL_PCI_MSI_FLAGS_ENABLE 0x0001 /* MSI feature enabled */ 344 union { 345 struct { 346 u32 msi_addr; 347 u16 msi_data; 348 u16 msi_unused; 349 } ma32_no_pvm; 350 struct { 351 u32 msi_addr; 352 u16 msi_data; 353 u16 msi_unused; 354 u32 msi_mask; 355 u32 msi_pending; 356 } ma32_pvm; 357 struct { 358 u32 msi_addr_lo; 359 u32 msi_addr_hi; 360 u16 msi_data; 361 u16 msi_unused; 362 } ma64_no_pvm; 363 struct { 364 u32 msi_addr_lo; 365 u32 msi_addr_hi; 366 u16 msi_data; 367 u16 msi_unused; 368 u32 msi_mask; 369 u32 msi_pending; 370 } ma64_pvm; 371 } au; 372} vxge_hal_msi_capability_le_t; 373 374typedef struct vxge_hal_msi_capability_t { 375#if defined(VXGE_OS_HOST_BIG_ENDIAN) 376 u16 msi_control; 377#define VXGE_HAL_PCI_MSI_FLAGS_PVMASK 0x0100 /* Per Vector Masking Capable */ 378#define VXGE_HAL_PCI_MSI_FLAGS_64BIT 0x0080 /* 64-bit addresses allowed */ 379#define VXGE_HAL_PCI_MSI_FLAGS_QSIZE 0x0070 /* Msg queue size configured */ 380#define VXGE_HAL_PCI_MSI_FLAGS_QMASK 0x000e /* Max queue size available */ 381#define VXGE_HAL_PCI_MSI_FLAGS_ENABLE 0x0001 /* MSI feature enabled */ 382 u8 next_capability_ptr; 383 u8 capability_id; 384 union { 385 struct { 386 u32 msi_addr; 387 u16 msi_unused; 388 u16 msi_data; 389 } ma32_no_pvm; 390 struct { 391 u32 msi_addr; 392 u16 msi_unused; 393 u16 msi_data; 394 u32 msi_mask; 395 u32 msi_pending; 396 } ma32_pvm; 397 struct { 398 u32 msi_addr_lo; 399 u32 msi_addr_hi; 400 u16 msi_unused; 401 u16 msi_data; 402 } ma64_no_pvm; 403 struct { 404 u32 msi_addr_lo; 405 u32 msi_addr_hi; 406 u16 msi_unused; 407 u16 msi_data; 408 u32 msi_mask; 409 u32 msi_pending; 410 } ma64_pvm; 411 } au; 412#else 413 u8 capability_id; 414 u8 next_capability_ptr; 415 u16 msi_control; 416#define VXGE_HAL_PCI_MSI_FLAGS_PVMASK 0x0100 /* Per Vector Masking Capable */ 417#define VXGE_HAL_PCI_MSI_FLAGS_64BIT 0x0080 /* 64-bit addresses allowed */ 418#define VXGE_HAL_PCI_MSI_FLAGS_QSIZE 0x0070 /* Msg queue size configured */ 419#define VXGE_HAL_PCI_MSI_FLAGS_QMASK 0x000e /* Max queue size available */ 420#define VXGE_HAL_PCI_MSI_FLAGS_ENABLE 0x0001 /* MSI feature enabled */ 421 union { 422 struct { 423 u32 msi_addr; 424 u16 msi_data; 425 u16 msi_unused; 426 } ma32_no_pvm; 427 struct { 428 u32 msi_addr; 429 u16 msi_data; 430 u16 msi_unused; 431 u32 msi_mask; 432 u32 msi_pending; 433 } ma32_pvm; 434 struct { 435 u32 msi_addr_lo; 436 u32 msi_addr_hi; 437 u16 msi_data; 438 u16 msi_unused; 439 } ma64_no_pvm; 440 struct { 441 u32 msi_addr_lo; 442 u32 msi_addr_hi; 443 u16 msi_data; 444 u16 msi_unused; 445 u32 msi_mask; 446 u32 msi_pending; 447 } ma64_pvm; 448 } au; 449#endif 450} vxge_hal_msi_capability_t; 451 452typedef struct vxge_hal_chswp_capability_le_t { 453 u8 capability_id; 454 u8 next_capability_ptr; 455 u8 chswp_csr; 456#define VXGE_HAL_PCI_CHSWP_DHA 0x01 /* Device Hiding Arm */ 457#define VXGE_HAL_PCI_CHSWP_EIM 0x02 /* ENUM# Signal Mask */ 458#define VXGE_HAL_PCI_CHSWP_PIE 0x04 /* Pending Insert or Extract */ 459#define VXGE_HAL_PCI_CHSWP_LOO 0x08 /* LED On / Off */ 460#define VXGE_HAL_PCI_CHSWP_PI 0x30 /* Programming Interface */ 461#define VXGE_HAL_PCI_CHSWP_EXT 0x40 /* ENUM# status - extraction */ 462#define VXGE_HAL_PCI_CHSWP_INS 0x80 /* ENUM# status - insertion */ 463} vxge_hal_chswp_capability_le_t; 464 465typedef struct vxge_hal_chswp_capability_t { 466#if defined(VXGE_OS_HOST_BIG_ENDIAN) 467 u8 chswp_csr; 468#define VXGE_HAL_PCI_CHSWP_DHA 0x01 /* Device Hiding Arm */ 469#define VXGE_HAL_PCI_CHSWP_EIM 0x02 /* ENUM# Signal Mask */ 470#define VXGE_HAL_PCI_CHSWP_PIE 0x04 /* Pending Insert or Extract */ 471#define VXGE_HAL_PCI_CHSWP_LOO 0x08 /* LED On / Off */ 472#define VXGE_HAL_PCI_CHSWP_PI 0x30 /* Programming Interface */ 473#define VXGE_HAL_PCI_CHSWP_EXT 0x40 /* ENUM# status - extraction */ 474#define VXGE_HAL_PCI_CHSWP_INS 0x80 /* ENUM# status - insertion */ 475 u8 next_capability_ptr; 476 u8 capability_id; 477#else 478 u8 capability_id; 479 u8 next_capability_ptr; 480 u8 chswp_csr; 481#define VXGE_HAL_PCI_CHSWP_DHA 0x01 /* Device Hiding Arm */ 482#define VXGE_HAL_PCI_CHSWP_EIM 0x02 /* ENUM# Signal Mask */ 483#define VXGE_HAL_PCI_CHSWP_PIE 0x04 /* Pending Insert or Extract */ 484#define VXGE_HAL_PCI_CHSWP_LOO 0x08 /* LED On / Off */ 485#define VXGE_HAL_PCI_CHSWP_PI 0x30 /* Programming Interface */ 486#define VXGE_HAL_PCI_CHSWP_EXT 0x40 /* ENUM# status - extraction */ 487#define VXGE_HAL_PCI_CHSWP_INS 0x80 /* ENUM# status - insertion */ 488#endif 489} vxge_hal_chswp_capability_t; 490 491typedef struct vxge_hal_shpc_capability_le_t { 492 u8 capability_id; 493 u8 next_capability_ptr; 494} vxge_hal_shpc_capability_le_t; 495 496typedef struct vxge_hal_shpc_capability_t { 497#if defined(VXGE_OS_HOST_BIG_ENDIAN) 498 u8 next_capability_ptr; 499 u8 capability_id; 500#else 501 u8 capability_id; 502 u8 next_capability_ptr; 503#endif 504} vxge_hal_shpc_capability_t; 505 506typedef struct vxge_hal_msix_capability_le_t { 507 u8 capability_id; 508 u8 next_capability_ptr; 509 u16 msix_control; 510#define VXGE_HAL_PCI_MSIX_FLAGS_ENABLE 0x8000 /* MSIX Enable */ 511#define VXGE_HAL_PCI_MSIX_FLAGS_MASK 0x4000 /* Mask all vectors */ 512#define VXGE_HAL_PCI_MSIX_FLAGS_TSIZE 0x001f /* Table Size */ 513 u32 table_offset; 514#define VXGE_HAL_PCI_MSIX_TABLE_OFFSET 0xFFFFFFF8 /* Table offset mask */ 515#define VXGE_HAL_PCI_MSIX_TABLE_BIR 0x00000007 /* Table BIR mask */ 516 u32 pba_offset; 517#define VXGE_HAL_PCI_MSIX_PBA_OFFSET 0xFFFFFFF8 /* Table offset mask */ 518#define VXGE_HAL_PCI_MSIX_PBA_BIR 0x00000007 /* Table BIR mask */ 519} vxge_hal_msix_capability_le_t; 520 521typedef struct vxge_hal_msix_capability_t { 522#if defined(VXGE_OS_HOST_BIG_ENDIAN) 523 u16 msix_control; 524#define VXGE_HAL_PCI_MSIX_FLAGS_ENABLE 0x8000 /* MSIX Enable */ 525#define VXGE_HAL_PCI_MSIX_FLAGS_MASK 0x4000 /* Mask all vectors */ 526#define VXGE_HAL_PCI_MSIX_FLAGS_TSIZE 0x001f /* Table Size */ 527 u8 next_capability_ptr; 528 u8 capability_id; 529 u32 table_offset; 530#define VXGE_HAL_PCI_MSIX_TABLE_OFFSET 0xFFFFFFF8 /* Table offset mask */ 531#define VXGE_HAL_PCI_MSIX_TABLE_BIR 0x00000007 /* Table BIR mask */ 532 u32 pba_offset; 533#define VXGE_HAL_PCI_MSIX_PBA_OFFSET 0xFFFFFFF8 /* Table offset mask */ 534#define VXGE_HAL_PCI_MSIX_PBA_BIR 0x00000007 /* Table BIR mask */ 535#else 536 u8 capability_id; 537 u8 next_capability_ptr; 538 u16 msix_control; 539#define VXGE_HAL_PCI_MSIX_FLAGS_ENABLE 0x8000 /* MSIX Enable */ 540#define VXGE_HAL_PCI_MSIX_FLAGS_MASK 0x4000 /* Mask all vectors */ 541#define VXGE_HAL_PCI_MSIX_FLAGS_TSIZE 0x001f /* Table Size */ 542 u32 table_offset; 543#define VXGE_HAL_PCI_MSIX_TABLE_OFFSET 0xFFFFFFF8 /* Table offset mask */ 544#define VXGE_HAL_PCI_MSIX_TABLE_BIR 0x00000007 /* Table BIR mask */ 545 u32 pba_offset; 546#define VXGE_HAL_PCI_MSIX_PBA_OFFSET 0xFFFFFFF8 /* Table offset mask */ 547#define VXGE_HAL_PCI_MSIX_PBA_BIR 0x00000007 /* Table BIR mask */ 548#endif 549} vxge_hal_msix_capability_t; 550 551typedef struct vxge_hal_pci_caps_offset_t { 552 u32 pm_cap_offset; 553 u32 vpd_cap_offset; 554 u32 sid_cap_offset; 555 u32 msi_cap_offset; 556 u32 vs_cap_offset; 557 u32 shpc_cap_offset; 558 u32 msix_cap_offset; 559} vxge_hal_pci_caps_offset_t; 560 561typedef struct vxge_hal_pci_e_capability_le_t { 562 u8 capability_id; 563 u8 next_capability_ptr; 564 u16 pci_e_flags; 565#define VXGE_HAL_PCI_EXP_FLAGS_VERS 0x000f /* Capability version */ 566#define VXGE_HAL_PCI_EXP_FLAGS_TYPE 0x00f0 /* Device/Port type */ 567#define VXGE_HAL_PCI_EXP_TYPE_ENDPOINT 0x0 /* Express Endpoint */ 568#define VXGE_HAL_PCI_EXP_TYPE_LEG_END 0x1 /* Legacy Endpoint */ 569#define VXGE_HAL_PCI_EXP_TYPE_ROOT_PORT 0x4 /* Root Port */ 570#define VXGE_HAL_PCI_EXP_TYPE_UPSTREAM 0x5 /* Upstream Port */ 571#define VXGE_HAL_PCI_EXP_TYPE_DOWNSTREAM 0x6 /* Downstream Port */ 572#define VXGE_HAL_PCI_EXP_TYPE_PCI_BRIDGE 0x7 /* PCI/PCI-X Bridge */ 573#define VXGE_HAL_PCI_EXP_FLAGS_SLOT 0x0100 /* Slot implemented */ 574#define VXGE_HAL_PCI_EXP_FLAGS_IRQ 0x3e00 /* Interrupt msg number */ 575 u32 pci_e_devcap; 576#define VXGE_HAL_PCI_EXP_DEVCAP_PAYLOAD 0x07 /* Max_Payload_Size */ 577#define VXGE_HAL_PCI_EXP_DEVCAP_PHANTOM 0x18 /* Phantom functions */ 578#define VXGE_HAL_PCI_EXP_DEVCAP_EXT_TAG 0x20 /* Extended tags */ 579#define VXGE_HAL_PCI_EXP_DEVCAP_L0S 0x1c0 /* L0s Acceptable Latency */ 580#define VXGE_HAL_PCI_EXP_DEVCAP_L1 0xe00 /* L1 Acceptable Latency */ 581#define VXGE_HAL_PCI_EXP_DEVCAP_ATN_BUT 0x1000 /* Attention Button Present */ 582#define VXGE_HAL_PCI_EXP_DEVCAP_ATN_IND 0x2000 /* Attention Ind Present */ 583#define VXGE_HAL_PCI_EXP_DEVCAP_PWR_IND 0x4000 /* Power Indicator Present */ 584#define VXGE_HAL_PCI_EXP_DEVCAP_PWR_VAL 0x3fc0000 /* Slot Power Limit Value */ 585#define VXGE_HAL_PCI_EXP_DEVCAP_PWR_SCL 0xc000000 /* Slot Power Limit Scale */ 586 u16 pci_e_devctl; 587#define VXGE_HAL_PCI_EXP_DEVCTL_CERE 0x0001 /* Correctable Err Report En. */ 588#define VXGE_HAL_PCI_EXP_DEVCTL_NFERE 0x0002 /* Non-Fatal Err Report En */ 589#define VXGE_HAL_PCI_EXP_DEVCTL_FERE 0x0004 /* Fatal Error Report En */ 590#define VXGE_HAL_PCI_EXP_DEVCTL_URRE 0x0008 /* Unsupported Req Report En. */ 591#define VXGE_HAL_PCI_EXP_DEVCTL_RELAX_EN 0x0010 /* Enable relaxed ordering */ 592#define VXGE_HAL_PCI_EXP_DEVCTL_PAYLOAD 0x00e0 /* Max_Payload_Size */ 593#define VXGE_HAL_PCI_EXP_DEVCTL_EXT_TAG 0x0100 /* Extended Tag Field Enable */ 594#define VXGE_HAL_PCI_EXP_DEVCTL_PHANTOM 0x0200 /* Phantom Functions Enable */ 595#define VXGE_HAL_PCI_EXP_DEVCTL_AUX_PME 0x0400 /* Auxiliary Power PM Enable */ 596#define VXGE_HAL_PCI_EXP_DEVCTL_NOSNOOP_EN 0x0800 /* Enable No Snoop */ 597#define VXGE_HAL_PCI_EXP_DEVCTL_READRQ 0x7000 /* Max_Read_Request_Size */ 598 u16 pci_e_devsta; 599#define VXGE_HAL_PCI_EXP_DEVSTA_CED 0x01 /* Correctable Error Detected */ 600#define VXGE_HAL_PCI_EXP_DEVSTA_NFED 0x02 /* Non-Fatal Error Detected */ 601#define VXGE_HAL_PCI_EXP_DEVSTA_FED 0x04 /* Fatal Error Detected */ 602#define VXGE_HAL_PCI_EXP_DEVSTA_URD 0x08 /* Unsupported Req Detected */ 603#define VXGE_HAL_PCI_EXP_DEVSTA_AUXPD 0x10 /* AUX Power Detected */ 604#define VXGE_HAL_PCI_EXP_DEVSTA_TRPND 0x20 /* Transactions Pending */ 605 u32 pci_e_lnkcap; 606#define VXGE_HAL_PCI_EXP_LNKCAP_LNK_SPEED 0xf /* Supported Link speeds. */ 607#define VXGE_HAL_PCI_EXP_LNKCAP_LS_2_5 0x1 /* 2.5 Gb/s supported. */ 608#define VXGE_HAL_PCI_EXP_LNKCAP_LS_5 0x2 /* 5 and 2.5 Gb/s supported. */ 609#define VXGE_HAL_PCI_EXP_LNKCAP_LNK_WIDTH 0x3f0 /* Supported Link speeds. */ 610#define VXGE_HAL_PCI_EXP_LNKCAP_LW_RES 0x0 /* Reserved. */ 611#define VXGE_HAL_PCI_EXP_LNKCAP_LW_X1 0x1 /* Reserved. */ 612#define VXGE_HAL_PCI_EXP_LNKCAP_LW_X2 0x2 /* Reserved. */ 613#define VXGE_HAL_PCI_EXP_LNKCAP_LW_X4 0x4 /* Reserved. */ 614#define VXGE_HAL_PCI_EXP_LNKCAP_LW_X8 0x8 /* Reserved. */ 615#define VXGE_HAL_PCI_EXP_LNKCAP_LW_X12 0xa /* Reserved. */ 616#define VXGE_HAL_PCI_EXP_LNKCAP_LW_X16 0x10 /* Reserved. */ 617#define VXGE_HAL_PCI_EXP_LNKCAP_LW_X32 0x20 /* Reserved. */ 618#define VXGE_HAL_PCI_EXP_LNKCAP_LNK_ASPM 0xc00 /* Supported Link speeds. */ 619#define VXGE_HAL_PCI_EXP_LNKCAP_LASPM_RES1 0x0 /* Reserved. */ 620#define VXGE_HAL_PCI_EXP_LNKCAP_LASPM_LO 0x1 /* Reserved. */ 621#define VXGE_HAL_PCI_EXP_LNKCAP_LASPM_RES2 0x2 /* Reserved. */ 622#define VXGE_HAL_PCI_EXP_LNKCAP_LASPM_L0_L1 0x3 /* Reserved. */ 623#define VXGE_HAL_PCI_EXP_LNKCAP_L0_LAT 0x7000 /* Supported Link speeds. */ 624#define VXGE_HAL_PCI_EXP_LNKCAP_L0_LT_64 0x0 /* Less than 64ns. */ 625#define VXGE_HAL_PCI_EXP_LNKCAP_L0_64_128 0x1 /* 64ns to less than 128ns. */ 626#define VXGE_HAL_PCI_EXP_LNKCAP_L0_128_256 0x2 /* 128ns to less than 256ns. */ 627#define VXGE_HAL_PCI_EXP_LNKCAP_L0_256_512 0x3 /* 256ns to less than 512ns. */ 628#define VXGE_HAL_PCI_EXP_LNKCAP_L0_512_1us 0x4 /* 512ns to less than 1s. */ 629#define VXGE_HAL_PCI_EXP_LNKCAP_L0_1us_2us 0x5 /* 1s to less than 2s. */ 630#define VXGE_HAL_PCI_EXP_LNKCAP_L0_2us_4us 0x6 /* 2s-4s. */ 631#define VXGE_HAL_PCI_EXP_LNKCAP_L0_GT_4us 0x7 /* More than 4s. */ 632#define VXGE_HAL_PCI_EXP_LNKCAP_L1_LAT 0x38000 /* Supported Link speeds. */ 633#define VXGE_HAL_PCI_EXP_LNKCAP_L1_LT_1us 0x0 /* Less than 1us. */ 634#define VXGE_HAL_PCI_EXP_LNKCAP_L1_1us_2us 0x1 /* 1us to less than 2us. */ 635#define VXGE_HAL_PCI_EXP_LNKCAP_L1_2us_4us 0x2 /* 2us to less than 4us. */ 636#define VXGE_HAL_PCI_EXP_LNKCAP_L1_4us_8us 0x3 /* 4us to less than 8us. */ 637#define VXGE_HAL_PCI_EXP_LNKCAP_L1_8us_16us 0x4 /* 8us to less than 16us. */ 638#define VXGE_HAL_PCI_EXP_LNKCAP_L1_16us_32us 0x5 /* 16us to less than 32us. */ 639#define VXGE_HAL_PCI_EXP_LNKCAP_L1_32us_64us 0x6 /* 32us-64us. */ 640#define VXGE_HAL_PCI_EXP_LNKCAP_L1_GT_64us 0x7 /* More than 64us. */ 641#define VXGE_HAL_PCI_EXP_LNKCAP_CLK_PWR_MGMT 0x40000 /* Clk power management. */ 642#define VXGE_HAL_PCI_EXP_LNKCAP_DOWN_ERR_CAP 0x80000 /* Down error capable. */ 643#define VXGE_HAL_PCI_EXP_LNKCAP_LNK_ACT_CAP 0x100000 /* DL active rep cap. */ 644#define VXGE_HAL_PCI_EXP_LNKCAP_LNK_BW_CAP 0x200000 /* DL bw reporting cap. */ 645#define VXGE_HAL_PCI_EXP_LNKCAP_LNK_PORT_NUM 0xff000000 /* Port number. */ 646 u16 pci_e_lnkctl; 647#define VXGE_HAL_PCI_EXP_LNKCTL_ASPM 0x3 /* ASPM Control. */ 648#define VXGE_HAL_PCI_EXP_LNKCTL_ASPM_DISABLED 0x0 /* Disabled. */ 649#define VXGE_HAL_PCI_EXP_LNKCTL_ASPM_L0_EN 0x1 /* L0 entry enabled. */ 650#define VXGE_HAL_PCI_EXP_LNKCTL_ASPM_L1_EN 0x2 /* L1 entry enabled. */ 651#define VXGE_HAL_PCI_EXP_LNKCTL_ASPM_L0_L1_EN 0x3 /* L0 & L1 entry enabled. */ 652#define VXGE_HAL_PCI_EXP_LNKCTL_RCB 0x8 /* Read Completion Boundary. */ 653#define VXGE_HAL_PCI_EXP_LNKCTL_RCB_64 0x0 /* RCB 64 bytes. */ 654#define VXGE_HAL_PCI_EXP_LNKCTL_RCB_128 0x1 /* RCB 128 bytes. */ 655#define VXGE_HAL_PCI_EXP_LNKCTL_DISABLED 0x10 /* Disables the link. */ 656#define VXGE_HAL_PCI_EXP_LNKCTL_RETRAIN 0x20 /* Retrain the link. */ 657#define VXGE_HAL_PCI_EXP_LNKCTL_CCCFG 0x40 /* Common clock config. */ 658#define VXGE_HAL_PCI_EXP_LNKCTL_EXT_SYNC 0x80 /* Extended Sync. */ 659#define VXGE_HAL_PCI_EXP_LNKCTL_CLK_PWRMGMT 0x100 /* Enable clk pwr mgmt. */ 660#define VXGE_HAL_PCI_EXP_LNKCTL_HW_AUTO_DIS 0x200 /* Hw autonomous with dis */ 661#define VXGE_HAL_PCI_EXP_LNKCTL_BWM_INTR_EN 0x400 /* Bw mgt interrupt enable */ 662#define VXGE_HAL_PCI_EXP_LNKCTL_ABW_INTR_EN 0x800 /* Autonomous BW intr en */ 663 u16 pci_e_lnksta; 664#define VXGE_HAL_PCI_EXP_LNKSTA_LNK_SPEED 0xf /* Supported Link speeds. */ 665#define VXGE_HAL_PCI_EXP_LNKSTA_LS_2_5 0x1 /* 2.5 Gb/s supported. */ 666#define VXGE_HAL_PCI_EXP_LNKSTA_LS_5 0x2 /* 5 2.5 Gb/s supported. */ 667#define VXGE_HAL_PCI_EXP_LNKSTA_LNK_WIDTH 0x3f0 /* Supported Link speeds. */ 668#define VXGE_HAL_PCI_EXP_LNKSTA_LW_RES 0x0 /* Reserved. */ 669#define VXGE_HAL_PCI_EXP_LNKSTA_LW_X1 0x1 /* Reserved. */ 670#define VXGE_HAL_PCI_EXP_LNKSTA_LW_X2 0x2 /* Reserved. */ 671#define VXGE_HAL_PCI_EXP_LNKSTA_LW_X4 0x4 /* Reserved. */ 672#define VXGE_HAL_PCI_EXP_LNKSTA_LW_X8 0x8 /* Reserved. */ 673#define VXGE_HAL_PCI_EXP_LNKSTA_LW_X12 0xa /* Reserved. */ 674#define VXGE_HAL_PCI_EXP_LNKSTA_LW_X16 0x10 /* Reserved. */ 675#define VXGE_HAL_PCI_EXP_LNKSTA_LW_X32 0x20 /* Reserved. */ 676#define VXGE_HAL_PCI_EXP_LNKSTA_LNK_TRAIN 0x800 /* Link training. */ 677#define VXGE_HAL_PCI_EXP_LNKSTA_SCLK_CFG 0x1000 /* Slot Clock Config. */ 678#define VXGE_HAL_PCI_EXP_LNKSTA_DLL_ACTIVE 0x2000 /* Data LL Active. */ 679#define VXGE_HAL_PCI_EXP_LNKSTA_BWM_STA 0x4000 /* Bw mgmt intr enable */ 680#define VXGE_HAL_PCI_EXP_LNKSTA_ABW_STA 0x8000 /* Autonomous BW intr en */ 681 u32 pci_e_stlcap; 682#define VXGE_HAL_PCI_EXP_STLCAP_ATTN_BTTN 0x1 /* Attention Button Present */ 683#define VXGE_HAL_PCI_EXP_STLCAP_PWR_CTRL 0x2 /* Power Control Present */ 684#define VXGE_HAL_PCI_EXP_STLCAP_MRL_SENS 0x4 /* MRL Sesor Present */ 685#define VXGE_HAL_PCI_EXP_STLCAP_ATTN_IND 0x8 /* Attention Ind Present */ 686#define VXGE_HAL_PCI_EXP_STLCAP_PWR_IND 0x10 /* Power Indicator Present */ 687#define VXGE_HAL_PCI_EXP_STLCAP_HP_SURP 0x20 /* Hot-Plug Surprise */ 688#define VXGE_HAL_PCI_EXP_STLCAP_HP_CAP 0x40 /* Hot-Plug Surprise */ 689#define VXGE_HAL_PCI_EXP_STLCAP_SL_PWR_VAL 0x7F80 /* Hot-Plug Surprise */ 690#define VXGE_HAL_PCI_EXP_STLCAP_SL_PWR_250 0xF0 /* 250 W Slot Power Limit */ 691#define VXGE_HAL_PCI_EXP_STLCAP_SL_PWR_275 0xF1 /* 275 W Slot Power Limit */ 692#define VXGE_HAL_PCI_EXP_STLCAP_SL_PWR_300 0xF2 /* 300 W Slot Power Limit */ 693#define VXGE_HAL_PCI_EXP_STLCAP_SL_PWR_LIM 0x18000 /* Hot-Plug Surprise */ 694#define VXGE_HAL_PCI_EXP_STLCAP_SL_PWR_1X 0x0 /* 1.0x */ 695#define VXGE_HAL_PCI_EXP_STLCAP_SL_PWR_XBY10 0x1 /* 0.1x */ 696#define VXGE_HAL_PCI_EXP_STLCAP_SL_PWR_XBY100 0x2 /* 0.01x */ 697#define VXGE_HAL_PCI_EXP_STLCAP_SL_PWR_XBY1000 0x3 /* 0.001x */ 698#define VXGE_HAL_PCI_EXP_STLCAP_EM_INTR_LOCK 0x20000 /* Ele-mec Intrlock Pres */ 699#define VXGE_HAL_PCI_EXP_STLCAP_NO_CMD_CMPL 0x40000 /* No Cmd Compl Support */ 700#define VXGE_HAL_PCI_EXP_STLCAP_PHY_SL_NO 0xFFF80000 /* Phys Slot Number */ 701 u16 pci_e_stlctl; 702#define VXGE_HAL_PCI_EXP_STLCTL_ATTN_BTN_EN 0x1 /* Atten Btn pressed enable */ 703#define VXGE_HAL_PCI_EXP_STLCTL_PF_DET_EN 0x2 /* Power Fault Detected En */ 704#define VXGE_HAL_PCI_EXP_STLCTL_MRL_SENS_EN 0x4 /* MRL Sensor Changed Enable */ 705#define VXGE_HAL_PCI_EXP_STLCTL_PDET_CH_EN 0x8 /* Presence Detect Change En */ 706#define VXGE_HAL_PCI_EXP_STLCTL_CC_INTR_EN 0x10 /* Cmd Compl Intr Enable */ 707#define VXGE_HAL_PCI_EXP_STLCTL_HP_INTR_EN 0x20 /* Hot-Plug Intr Enable */ 708#define VXGE_HAL_PCI_EXP_STLCTL_ATN_IND_CTRL 0xC0 /* Attention Ind Control */ 709#define VXGE_HAL_PCI_EXP_STLCTL_ATN_IND_RES 0x0 /* Reserved */ 710#define VXGE_HAL_PCI_EXP_STLCTL_ATN_IND_ON 0x1 /* On */ 711#define VXGE_HAL_PCI_EXP_STLCTL_ATN_IND_BLNK 0x2 /* Blink */ 712#define VXGE_HAL_PCI_EXP_STLCTL_ATN_IND_OFF 0x3 /* Off */ 713#define VXGE_HAL_PCI_EXP_STLCTL_PWR_IND_CTRL 0x300 /* POwer Indicator Control */ 714#define VXGE_HAL_PCI_EXP_STLCTL_PWR_IND_RES 0x0 /* Reserved */ 715#define VXGE_HAL_PCI_EXP_STLCTL_PWR_IND_ON 0x1 /* On */ 716#define VXGE_HAL_PCI_EXP_STLCTL_PWR_IND_BLNK 0x2 /* Blink */ 717#define VXGE_HAL_PCI_EXP_STLCTL_PWR_IND_OFF 0x3 /* Off */ 718#define VXGE_HAL_PCI_EXP_STLCTL_PWRCTRL_CTRL 0x400 /* Power Controller Ctrl */ 719#define VXGE_HAL_PCI_EXP_STLCTL_PWRCTRL_on 0x0 /* Power on */ 720#define VXGE_HAL_PCI_EXP_STLCTL_PWRCTRL_off 0x1 /* Power off */ 721#define VXGE_HAL_PCI_EXP_STLCTL_EM_IL_CTRL 0x800 /* Ele-mec Interlock Crl */ 722#define VXGE_HAL_PCI_EXP_STLCTL_DLL_ST_CH_EN 0x1000 /* DL Layer State Ch En */ 723 u16 pci_e_stlsta; 724#define VXGE_HAL_PCI_EXP_STLSTA_ATTN_BTN 0x1 /* Attention Button Pressed */ 725#define VXGE_HAL_PCI_EXP_STLSTA_PF_DET 0x2 /* Power Fault Detected */ 726#define VXGE_HAL_PCI_EXP_STLSTA_MRL_SENS_CH 0x4 /* MRL Sensor Changed */ 727#define VXGE_HAL_PCI_EXP_STLSTA_PDET_CH 0x8 /* Presence Detect Changed */ 728#define VXGE_HAL_PCI_EXP_STLSTA_CMD_COMPL 0x10 /* Command Completed */ 729#define VXGE_HAL_PCI_EXP_STLSTA_MRL_SENS_STA 0x20 /* MRL Sensor State */ 730#define VXGE_HAL_PCI_EXP_STLSTA_MRL_SENS_CL 0x0 /* MRL Sensor State - closed */ 731#define VXGE_HAL_PCI_EXP_STLSTA_MRL_SENS_OP 0x1 /* MRL Sensor State - open */ 732#define VXGE_HAL_PCI_EXP_STLSTA_PDET_STA 0x400 /* Presence Detect State */ 733#define VXGE_HAL_PCI_EXP_STLSTA_PDET_EMPTY 0x0 /* Clost Empty */ 734#define VXGE_HAL_PCI_EXP_STLSTA_PDET_PRESENT 0x1 /* Card Present */ 735#define VXGE_HAL_PCI_EXP_STLSTA_EM_IL_STA 0x80 /* Ele-mec Intrlock Control */ 736#define VXGE_HAL_PCI_EXP_STLSTA_EM_IL_DIS 0x0 /* Disengaged */ 737#define VXGE_HAL_PCI_EXP_STLSTA_EM_IL_EN 0x1 /* Engaged */ 738#define VXGE_HAL_PCI_EXP_STLSTA_DLL_ST_CH 0x100 /* DL Layer State Changed */ 739 u16 pci_e_rtctl; 740#define VXGE_HAL_PCI_EXP_RTCTL_SECEE 0x01 /* Sys Err on Correctable Error */ 741#define VXGE_HAL_PCI_EXP_RTCTL_SENFEE 0x02 /* Sys Err on Non-Fatal Error */ 742#define VXGE_HAL_PCI_EXP_RTCTL_SEFEE 0x04 /* Sys Err on Fatal Error */ 743#define VXGE_HAL_PCI_EXP_RTCTL_PMEIE 0x08 /* PME Interrupt Enable */ 744#define VXGE_HAL_PCI_EXP_RTCTL_CRSSVE 0x10 /* CRS SW Visibility Enable */ 745 u16 pci_e_rtcap; 746#define VXGE_HAL_PCI_EXP_RTCAP_CRS_SW_VIS 0x01 /* CRS SW Visibility */ 747 u32 pci_e_rtsta; 748#define VXGE_HAL_PCI_EXP_RTSTA_PME_REQ_ID 0xFFFF /* PME Requestor ID */ 749#define VXGE_HAL_PCI_EXP_RTSTA_PME_STATUS 0x10000 /* PME status */ 750#define VXGE_HAL_PCI_EXP_RTSTA_PME_PENDING 0x20000 /* PME Pending */ 751} vxge_hal_pci_e_capability_le_t; 752 753typedef struct vxge_hal_pci_e_capability_t { 754#if defined(VXGE_OS_HOST_BIG_ENDIAN) 755 u16 pci_e_flags; 756#define VXGE_HAL_PCI_EXP_FLAGS_VERS 0x000f /* Capability version */ 757#define VXGE_HAL_PCI_EXP_FLAGS_TYPE 0x00f0 /* Device/Port type */ 758#define VXGE_HAL_PCI_EXP_TYPE_ENDPOINT 0x0 /* Express Endpoint */ 759#define VXGE_HAL_PCI_EXP_TYPE_LEG_END 0x1 /* Legacy Endpoint */ 760#define VXGE_HAL_PCI_EXP_TYPE_ROOT_PORT 0x4 /* Root Port */ 761#define VXGE_HAL_PCI_EXP_TYPE_UPSTREAM 0x5 /* Upstream Port */ 762#define VXGE_HAL_PCI_EXP_TYPE_DOWNSTREAM 0x6 /* Downstream Port */ 763#define VXGE_HAL_PCI_EXP_TYPE_PCI_BRIDGE 0x7 /* PCI/PCI-X Bridge */ 764#define VXGE_HAL_PCI_EXP_FLAGS_SLOT 0x0100 /* Slot implemented */ 765#define VXGE_HAL_PCI_EXP_FLAGS_IRQ 0x3e00 /* Interrupt message number */ 766 u8 next_capability_ptr; 767 u8 capability_id; 768 u32 pci_e_devcap; 769#define VXGE_HAL_PCI_EXP_DEVCAP_PAYLOAD 0x07 /* Max_Payload_Size */ 770#define VXGE_HAL_PCI_EXP_DEVCAP_PHANTOM 0x18 /* Phantom functions */ 771#define VXGE_HAL_PCI_EXP_DEVCAP_EXT_TAG 0x20 /* Extended tags */ 772#define VXGE_HAL_PCI_EXP_DEVCAP_L0S 0x1c0 /* L0s Acceptable Latency */ 773#define VXGE_HAL_PCI_EXP_DEVCAP_L1 0xe00 /* L1 Acceptable Latency */ 774#define VXGE_HAL_PCI_EXP_DEVCAP_ATN_BUT 0x1000 /* Attention Button Present */ 775#define VXGE_HAL_PCI_EXP_DEVCAP_ATN_IND 0x2000 /* Attention Ind Present */ 776#define VXGE_HAL_PCI_EXP_DEVCAP_PWR_IND 0x4000 /* Power Indicator Present */ 777#define VXGE_HAL_PCI_EXP_DEVCAP_PWR_VAL 0x3fc0000 /* Slot Power Limit Value */ 778#define VXGE_HAL_PCI_EXP_DEVCAP_PWR_SCL 0xc000000 /* Slot Power Limit Scale */ 779 u16 pci_e_devsta; 780#define VXGE_HAL_PCI_EXP_DEVSTA_CED 0x01 /* Correctable Err Detected */ 781#define VXGE_HAL_PCI_EXP_DEVSTA_NFED 0x02 /* Non-Fatal Error Detected */ 782#define VXGE_HAL_PCI_EXP_DEVSTA_FED 0x04 /* Fatal Error Detected */ 783#define VXGE_HAL_PCI_EXP_DEVSTA_URD 0x08 /* Unsupported Req Detected */ 784#define VXGE_HAL_PCI_EXP_DEVSTA_AUXPD 0x10 /* AUX Power Detected */ 785#define VXGE_HAL_PCI_EXP_DEVSTA_TRPND 0x20 /* Transactions Pending */ 786 u16 pci_e_devctl; 787#define VXGE_HAL_PCI_EXP_DEVCTL_CERE 0x0001 /* Corr'ble Err Reporting En. */ 788#define VXGE_HAL_PCI_EXP_DEVCTL_NFERE 0x0002 /* Non-Fatal Err Reporting En */ 789#define VXGE_HAL_PCI_EXP_DEVCTL_FERE 0x0004 /* Fatal Error Reporting En */ 790#define VXGE_HAL_PCI_EXP_DEVCTL_URRE 0x0008 /* Unsupp Req Reporting En. */ 791#define VXGE_HAL_PCI_EXP_DEVCTL_RELAX_EN 0x0010 /* Enable relaxed ordering */ 792#define VXGE_HAL_PCI_EXP_DEVCTL_PAYLOAD 0x00e0 /* Max_Payload_Size */ 793#define VXGE_HAL_PCI_EXP_DEVCTL_EXT_TAG 0x0100 /* Extended Tag Field Enable */ 794#define VXGE_HAL_PCI_EXP_DEVCTL_PHANTOM 0x0200 /* Phantom Functions Enable */ 795#define VXGE_HAL_PCI_EXP_DEVCTL_AUX_PME 0x0400 /* Auxiliary Power PM Enable */ 796#define VXGE_HAL_PCI_EXP_DEVCTL_NOSNOOP_EN 0x0800 /* Enable No Snoop */ 797#define VXGE_HAL_PCI_EXP_DEVCTL_READRQ 0x7000 /* Max_Read_Request_Size */ 798 u32 pci_e_lnkcap; 799#define VXGE_HAL_PCI_EXP_LNKCAP_LNK_SPEED 0xf /* Supported Link speeds. */ 800#define VXGE_HAL_PCI_EXP_LNKCAP_LS_2_5 0x1 /* 2.5 Gb/s supported. */ 801#define VXGE_HAL_PCI_EXP_LNKCAP_LS_5 0x2 /* 5 2.5 Gb/s supported. */ 802#define VXGE_HAL_PCI_EXP_LNKCAP_LNK_WIDTH 0x3f0 /* Supported Link speeds. */ 803#define VXGE_HAL_PCI_EXP_LNKCAP_LW_RES 0x0 /* Reserved. */ 804#define VXGE_HAL_PCI_EXP_LNKCAP_LW_X1 0x1 /* Reserved. */ 805#define VXGE_HAL_PCI_EXP_LNKCAP_LW_X2 0x2 /* Reserved. */ 806#define VXGE_HAL_PCI_EXP_LNKCAP_LW_X4 0x4 /* Reserved. */ 807#define VXGE_HAL_PCI_EXP_LNKCAP_LW_X8 0x8 /* Reserved. */ 808#define VXGE_HAL_PCI_EXP_LNKCAP_LW_X12 0xa /* Reserved. */ 809#define VXGE_HAL_PCI_EXP_LNKCAP_LW_X16 0x10 /* Reserved. */ 810#define VXGE_HAL_PCI_EXP_LNKCAP_LW_X32 0x20 /* Reserved. */ 811#define VXGE_HAL_PCI_EXP_LNKCAP_LNK_ASPM 0xc00 /* Supported Link speeds. */ 812#define VXGE_HAL_PCI_EXP_LNKCAP_LASPM_RES1 0x0 /* Reserved. */ 813#define VXGE_HAL_PCI_EXP_LNKCAP_LASPM_LO 0x1 /* Reserved. */ 814#define VXGE_HAL_PCI_EXP_LNKCAP_LASPM_RES2 0x2 /* Reserved. */ 815#define VXGE_HAL_PCI_EXP_LNKCAP_LASPM_L0_L1 0x3 /* Reserved. */ 816#define VXGE_HAL_PCI_EXP_LNKCAP_L0_LAT 0x7000 /* Supported Link speeds. */ 817#define VXGE_HAL_PCI_EXP_LNKCAP_L0_LT_64 0x0 /* Less than 64 ns. */ 818#define VXGE_HAL_PCI_EXP_LNKCAP_L0_64_128 0x1 /* 64 ns to less than 128 ns. */ 819#define VXGE_HAL_PCI_EXP_LNKCAP_L0_128_256 0x2 /* 128 ns to less than 256 ns. */ 820#define VXGE_HAL_PCI_EXP_LNKCAP_L0_256_512 0x3 /* 256 ns to less than 512 ns. */ 821#define VXGE_HAL_PCI_EXP_LNKCAP_L0_512_1us 0x4 /* 512 ns to less than 1us. */ 822#define VXGE_HAL_PCI_EXP_LNKCAP_L0_1us_2us 0x5 /* 1us to less than 2us. */ 823#define VXGE_HAL_PCI_EXP_LNKCAP_L0_2us_4us 0x6 /* 2us-4us. */ 824#define VXGE_HAL_PCI_EXP_LNKCAP_L0_GT_4us 0x7 /* More than 4us. */ 825#define VXGE_HAL_PCI_EXP_LNKCAP_L1_LAT 0x38000 /* Supported Link speeds. */ 826#define VXGE_HAL_PCI_EXP_LNKCAP_L1_LT_1us 0x0 /* Less than 1us. */ 827#define VXGE_HAL_PCI_EXP_LNKCAP_L1_1us_2us 0x1 /* 1us to less than 2us. */ 828#define VXGE_HAL_PCI_EXP_LNKCAP_L1_2us_4us 0x2 /* 2us to less than 4us. */ 829#define VXGE_HAL_PCI_EXP_LNKCAP_L1_4us_8us 0x3 /* 4us to less than 8us. */ 830#define VXGE_HAL_PCI_EXP_LNKCAP_L1_8us_16us 0x4 /* 8us to less than 16us. */ 831#define VXGE_HAL_PCI_EXP_LNKCAP_L1_16us_32us 0x5 /* 16us to less than 32us. */ 832#define VXGE_HAL_PCI_EXP_LNKCAP_L1_32us_64us 0x6 /* 32us-64s. */ 833#define VXGE_HAL_PCI_EXP_LNKCAP_L1_GT_64us 0x7 /* More than 64us. */ 834#define VXGE_HAL_PCI_EXP_LNKCAP_CLK_PWR_MGMT 0x40000 /* Clk power management. */ 835#define VXGE_HAL_PCI_EXP_LNKCAP_DOWN_ERR_CAP 0x80000 /* Down error capable. */ 836#define VXGE_HAL_PCI_EXP_LNKCAP_LNK_ACT_CAP 0x100000 /* DL active rep cap. */ 837#define VXGE_HAL_PCI_EXP_LNKCAP_LNK_BW_CAP 0x200000 /* DL bw rep cap. */ 838#define VXGE_HAL_PCI_EXP_LNKCAP_LNK_PORT_NUM 0xff000000 /* Port number. */ 839 u16 pci_e_lnksta; 840#define VXGE_HAL_PCI_EXP_LNKSTA_LNK_SPEED 0xf /* Supported Link speeds. */ 841#define VXGE_HAL_PCI_EXP_LNKSTA_LS_2_5 0x1 /* 2.5 Gb/s supported. */ 842#define VXGE_HAL_PCI_EXP_LNKSTA_LS_5 0x2 /* 5 2.5 Gb/s supported. */ 843#define VXGE_HAL_PCI_EXP_LNKSTA_LNK_WIDTH 0x3f0 /* Supported Link speeds. */ 844#define VXGE_HAL_PCI_EXP_LNKSTA_LW_RES 0x0 /* Reserved. */ 845#define VXGE_HAL_PCI_EXP_LNKSTA_LW_X1 0x1 /* Reserved. */ 846#define VXGE_HAL_PCI_EXP_LNKSTA_LW_X2 0x2 /* Reserved. */ 847#define VXGE_HAL_PCI_EXP_LNKSTA_LW_X4 0x4 /* Reserved. */ 848#define VXGE_HAL_PCI_EXP_LNKSTA_LW_X8 0x8 /* Reserved. */ 849#define VXGE_HAL_PCI_EXP_LNKSTA_LW_X12 0xa /* Reserved. */ 850#define VXGE_HAL_PCI_EXP_LNKSTA_LW_X16 0x10 /* Reserved. */ 851#define VXGE_HAL_PCI_EXP_LNKSTA_LW_X32 0x20 /* Reserved. */ 852#define VXGE_HAL_PCI_EXP_LNKSTA_LNK_TRAIN 0x800 /* Link training. */ 853#define VXGE_HAL_PCI_EXP_LNKSTA_SCLK_CFG 0x1000 /* Slot Clock Config. */ 854#define VXGE_HAL_PCI_EXP_LNKSTA_DLL_ACTIVE 0x2000 /* Data LL Active. */ 855#define VXGE_HAL_PCI_EXP_LNKSTA_BWM_STA 0x4000 /* Bw mgmt interrupt enable */ 856#define VXGE_HAL_PCI_EXP_LNKSTA_ABW_STA 0x8000 /* Autonomous BW intr en */ 857 u16 pci_e_lnkctl; 858#define VXGE_HAL_PCI_EXP_LNKCTL_ASPM 0x3 /* ASPM Control. */ 859#define VXGE_HAL_PCI_EXP_LNKCTL_ASPM_DISABLED 0x0 /* Disabled. */ 860#define VXGE_HAL_PCI_EXP_LNKCTL_ASPM_L0_EN 0x1 /* L0 entry enabled. */ 861#define VXGE_HAL_PCI_EXP_LNKCTL_ASPM_L1_EN 0x2 /* L1 entry enabled. */ 862#define VXGE_HAL_PCI_EXP_LNKCTL_ASPM_L0_L1_EN 0x3 /* L0 & L1 entry enabled. */ 863#define VXGE_HAL_PCI_EXP_LNKCTL_RCB 0x8 /* Read Compl Boundary. */ 864#define VXGE_HAL_PCI_EXP_LNKCTL_RCB_64 0x0 /* RCB 64 bytes. */ 865#define VXGE_HAL_PCI_EXP_LNKCTL_RCB_128 0x1 /* RCB 128 bytes. */ 866#define VXGE_HAL_PCI_EXP_LNKCTL_DISABLED 0x10 /* Disables the link. */ 867#define VXGE_HAL_PCI_EXP_LNKCTL_RETRAIN 0x20 /* Retrain the link. */ 868#define VXGE_HAL_PCI_EXP_LNKCTL_CCCFG 0x40 /* Common clock config. */ 869#define VXGE_HAL_PCI_EXP_LNKCTL_EXT_SYNC 0x80 /* Extended Sync. */ 870#define VXGE_HAL_PCI_EXP_LNKCTL_CLK_PWRMGMT 0x100 /* Enable clk pwr mgmt. */ 871#define VXGE_HAL_PCI_EXP_LNKCTL_HW_AUTO_DIS 0x200 /* Hw autonomous w/dis */ 872#define VXGE_HAL_PCI_EXP_LNKCTL_BWM_INTR_EN 0x400 /* Bw mgmt intr enable */ 873#define VXGE_HAL_PCI_EXP_LNKCTL_ABW_INTR_EN 0x800 /* Autonomous BW int en */ 874 u32 pci_e_stlcap; 875#define VXGE_HAL_PCI_EXP_STLCAP_ATTN_BTTN 0x1 /* Attention Button Present */ 876#define VXGE_HAL_PCI_EXP_STLCAP_PWR_CTRL 0x2 /* Power Control Present */ 877#define VXGE_HAL_PCI_EXP_STLCAP_MRL_SENS 0x4 /* MRL Sesor Present */ 878#define VXGE_HAL_PCI_EXP_STLCAP_ATTN_IND 0x8 /* Attention Ind Present */ 879#define VXGE_HAL_PCI_EXP_STLCAP_PWR_IND 0x10 /* Power Indicator Present */ 880#define VXGE_HAL_PCI_EXP_STLCAP_HP_SURP 0x20 /* Hot-Plug Surprise */ 881#define VXGE_HAL_PCI_EXP_STLCAP_HP_CAP 0x40 /* Hot-Plug Surprise */ 882#define VXGE_HAL_PCI_EXP_STLCAP_SL_PWR_VAL 0x7F80 /* Hot-Plug Surprise */ 883#define VXGE_HAL_PCI_EXP_STLCAP_SL_PWR_250 0xF0 /* 250 W Slot Power Limit */ 884#define VXGE_HAL_PCI_EXP_STLCAP_SL_PWR_275 0xF1 /* 275 W Slot Power Limit */ 885#define VXGE_HAL_PCI_EXP_STLCAP_SL_PWR_300 0xF2 /* 300 W Slot Power Limit */ 886#define VXGE_HAL_PCI_EXP_STLCAP_SL_PWR_LIM 0x18000 /* Hot-Plug Surprise */ 887#define VXGE_HAL_PCI_EXP_STLCAP_SL_PWR_1X 0x0 /* 1.0x */ 888#define VXGE_HAL_PCI_EXP_STLCAP_SL_PWR_XBY10 0x1 /* 0.1x */ 889#define VXGE_HAL_PCI_EXP_STLCAP_SL_PWR_XBY100 0x2 /* 0.01x */ 890#define VXGE_HAL_PCI_EXP_STLCAP_SL_PWR_XBY1000 0x3 /* 0.001x */ 891#define VXGE_HAL_PCI_EXP_STLCAP_EM_INTR_LOCK 0x20000 /* Ele-mec Intrlock Pres */ 892#define VXGE_HAL_PCI_EXP_STLCAP_NO_CMD_CMPL 0x40000 /* No Command Compl Supp */ 893#define VXGE_HAL_PCI_EXP_STLCAP_PHY_SL_NO 0xFFF80000 /* Phy Slot Number */ 894 u16 pci_e_stlsta; 895#define VXGE_HAL_PCI_EXP_STLSTA_ATTN_BTN 0x1 /* Attention Button Pressed */ 896#define VXGE_HAL_PCI_EXP_STLSTA_PF_DET 0x2 /* Power Fault Detected */ 897#define VXGE_HAL_PCI_EXP_STLSTA_MRL_SENS_CH 0x4 /* MRL Sensor Changed */ 898#define VXGE_HAL_PCI_EXP_STLSTA_PDET_CH 0x8 /* Presence Detect Changed */ 899#define VXGE_HAL_PCI_EXP_STLSTA_CMD_COMPL 0x10 /* Command Completed */ 900#define VXGE_HAL_PCI_EXP_STLSTA_MRL_SENS_STA 0x20 /* MRL Sensor State */ 901#define VXGE_HAL_PCI_EXP_STLSTA_MRL_SENS_CL 0x0 /* MRL Sensor State - closed */ 902#define VXGE_HAL_PCI_EXP_STLSTA_MRL_SENS_OP 0x1 /* MRL Sensor State - open */ 903#define VXGE_HAL_PCI_EXP_STLSTA_PDET_STA 0x400 /* Presence Detect State */ 904#define VXGE_HAL_PCI_EXP_STLSTA_PDET_EMPTY 0x0 /* Clost Empty */ 905#define VXGE_HAL_PCI_EXP_STLSTA_PDET_PRESENT 0x1 /* Card Present */ 906#define VXGE_HAL_PCI_EXP_STLSTA_EM_IL_STA 0x80 /* Ele-mec Intrlock Ctrl */ 907#define VXGE_HAL_PCI_EXP_STLSTA_EM_IL_DIS 0x0 /* Disengaged */ 908#define VXGE_HAL_PCI_EXP_STLSTA_EM_IL_EN 0x1 /* Engaged */ 909#define VXGE_HAL_PCI_EXP_STLSTA_DLL_ST_CH 0x100 /* DL State Changed */ 910 u16 pci_e_stlctl; 911#define VXGE_HAL_PCI_EXP_STLCTL_ATTN_BTN_EN 0x1 /* Atten Btn pressed en */ 912#define VXGE_HAL_PCI_EXP_STLCTL_PF_DET_EN 0x2 /* Pwr Fault Detected En */ 913#define VXGE_HAL_PCI_EXP_STLCTL_MRL_SENS_EN 0x4 /* MRL Sensor Changed En */ 914#define VXGE_HAL_PCI_EXP_STLCTL_PDET_CH_EN 0x8 /* Presence Detect Changed En */ 915#define VXGE_HAL_PCI_EXP_STLCTL_CC_INTR_EN 0x10 /* Cmmd Completed Intr En */ 916#define VXGE_HAL_PCI_EXP_STLCTL_HP_INTR_EN 0x20 /* Hot-Plug Intr Enable */ 917#define VXGE_HAL_PCI_EXP_STLCTL_ATN_IND_CTRL 0xC0 /* Attention Ind Ctrl */ 918#define VXGE_HAL_PCI_EXP_STLCTL_ATN_IND_RES 0x0 /* Reserved */ 919#define VXGE_HAL_PCI_EXP_STLCTL_ATN_IND_ON 0x1 /* On */ 920#define VXGE_HAL_PCI_EXP_STLCTL_ATN_IND_BLNK 0x2 /* Blink */ 921#define VXGE_HAL_PCI_EXP_STLCTL_ATN_IND_OFF 0x3 /* Off */ 922#define VXGE_HAL_PCI_EXP_STLCTL_PWR_IND_CTRL 0x300 /* POwer Ind Control */ 923#define VXGE_HAL_PCI_EXP_STLCTL_PWR_IND_RES 0x0 /* Reserved */ 924#define VXGE_HAL_PCI_EXP_STLCTL_PWR_IND_ON 0x1 /* On */ 925#define VXGE_HAL_PCI_EXP_STLCTL_PWR_IND_BLNK 0x2 /* Blink */ 926#define VXGE_HAL_PCI_EXP_STLCTL_PWR_IND_OFF 0x3 /* Off */ 927#define VXGE_HAL_PCI_EXP_STLCTL_PWRCTRL_CTRL 0x400 /* Power Controller Ctrl */ 928#define VXGE_HAL_PCI_EXP_STLCTL_PWRCTRL_on 0x0 /* Power on */ 929#define VXGE_HAL_PCI_EXP_STLCTL_PWRCTRL_off 0x1 /* Power off */ 930#define VXGE_HAL_PCI_EXP_STLCTL_EM_IL_CTRL 0x800 /* Ele-mec Intrlock Ctrl */ 931#define VXGE_HAL_PCI_EXP_STLCTL_DLL_ST_CH_EN 0x1000 /* DL State Changed En */ 932 u16 pci_e_rtcap; 933#define VXGE_HAL_PCI_EXP_RTCAP_CRS_SW_VIS 0x01 /* CRS Software Visibility */ 934 u16 pci_e_rtctl; 935#define VXGE_HAL_PCI_EXP_RTCTL_SECEE 0x01 /* Sys Err on Correctable Error */ 936#define VXGE_HAL_PCI_EXP_RTCTL_SENFEE 0x02 /* Sys Err on Non-Fatal Error */ 937#define VXGE_HAL_PCI_EXP_RTCTL_SEFEE 0x04 /* Sys Err on Fatal Error */ 938#define VXGE_HAL_PCI_EXP_RTCTL_PMEIE 0x08 /* PME Intr Enable */ 939#define VXGE_HAL_PCI_EXP_RTCTL_CRSSVE 0x10 /* CRS SW Visibility Enable */ 940 u32 pci_e_rtsta; 941#define VXGE_HAL_PCI_EXP_RTSTA_PME_REQ_ID 0xFFFF /* PME Requestor ID */ 942#define VXGE_HAL_PCI_EXP_RTSTA_PME_STATUS 0x10000 /* PME status */ 943#define VXGE_HAL_PCI_EXP_RTSTA_PME_PENDING 0x20000 /* PME Pending */ 944#else 945 u8 capability_id; 946 u8 next_capability_ptr; 947 u16 pci_e_flags; 948#define VXGE_HAL_PCI_EXP_FLAGS_VERS 0x000f /* Capability version */ 949#define VXGE_HAL_PCI_EXP_FLAGS_TYPE 0x00f0 /* Device/Port type */ 950#define VXGE_HAL_PCI_EXP_TYPE_ENDPOINT 0x0 /* Express Endpoint */ 951#define VXGE_HAL_PCI_EXP_TYPE_LEG_END 0x1 /* Legacy Endpoint */ 952#define VXGE_HAL_PCI_EXP_TYPE_ROOT_PORT 0x4 /* Root Port */ 953#define VXGE_HAL_PCI_EXP_TYPE_UPSTREAM 0x5 /* Upstream Port */ 954#define VXGE_HAL_PCI_EXP_TYPE_DOWNSTREAM 0x6 /* Downstream Port */ 955#define VXGE_HAL_PCI_EXP_TYPE_PCI_BRIDGE 0x7 /* PCI/PCI-X Bridge */ 956#define VXGE_HAL_PCI_EXP_FLAGS_SLOT 0x0100 /* Slot implemented */ 957#define VXGE_HAL_PCI_EXP_FLAGS_IRQ 0x3e00 /* Interrupt message number */ 958 u32 pci_e_devcap; 959#define VXGE_HAL_PCI_EXP_DEVCAP_PAYLOAD 0x07 /* Max_Payload_Size */ 960#define VXGE_HAL_PCI_EXP_DEVCAP_PHANTOM 0x18 /* Phantom functions */ 961#define VXGE_HAL_PCI_EXP_DEVCAP_EXT_TAG 0x20 /* Extended tags */ 962#define VXGE_HAL_PCI_EXP_DEVCAP_L0S 0x1c0 /* L0s Acceptable Latency */ 963#define VXGE_HAL_PCI_EXP_DEVCAP_L1 0xe00 /* L1 Acceptable Latency */ 964#define VXGE_HAL_PCI_EXP_DEVCAP_ATN_BUT 0x1000 /* Attention Button Present */ 965#define VXGE_HAL_PCI_EXP_DEVCAP_ATN_IND 0x2000 /* Attention Ind Present */ 966#define VXGE_HAL_PCI_EXP_DEVCAP_PWR_IND 0x4000 /* Power Indicator Present */ 967#define VXGE_HAL_PCI_EXP_DEVCAP_PWR_VAL 0x3fc0000 /* Slot Power Limit Value */ 968#define VXGE_HAL_PCI_EXP_DEVCAP_PWR_SCL 0xc000000 /* Slot Power Limit Scale */ 969 u16 pci_e_devctl; 970#define VXGE_HAL_PCI_EXP_DEVCTL_CERE 0x0001 /* Corr'ble Err Reporting En. */ 971#define VXGE_HAL_PCI_EXP_DEVCTL_NFERE 0x0002 /* Non-Fatal Err Reporting En */ 972#define VXGE_HAL_PCI_EXP_DEVCTL_FERE 0x0004 /* Fatal Err Reporting En */ 973#define VXGE_HAL_PCI_EXP_DEVCTL_URRE 0x0008 /* Unsupp Req Reporting En. */ 974#define VXGE_HAL_PCI_EXP_DEVCTL_RELAX_EN 0x0010 /* Enable relaxed ordering */ 975#define VXGE_HAL_PCI_EXP_DEVCTL_PAYLOAD 0x00e0 /* Max_Payload_Size */ 976#define VXGE_HAL_PCI_EXP_DEVCTL_EXT_TAG 0x0100 /* Extended Tag Field Enable */ 977#define VXGE_HAL_PCI_EXP_DEVCTL_PHANTOM 0x0200 /* Phantom Functions Enable */ 978#define VXGE_HAL_PCI_EXP_DEVCTL_AUX_PME 0x0400 /* Auxiliary Power PM Enable */ 979#define VXGE_HAL_PCI_EXP_DEVCTL_NOSNOOP_EN 0x0800 /* Enable No Snoop */ 980#define VXGE_HAL_PCI_EXP_DEVCTL_READRQ 0x7000 /* Max_Read_Request_Size */ 981 u16 pci_e_devsta; 982#define VXGE_HAL_PCI_EXP_DEVSTA_CED 0x01 /* Correctable Error Detected */ 983#define VXGE_HAL_PCI_EXP_DEVSTA_NFED 0x02 /* Non-Fatal Error Detected */ 984#define VXGE_HAL_PCI_EXP_DEVSTA_FED 0x04 /* Fatal Error Detected */ 985#define VXGE_HAL_PCI_EXP_DEVSTA_URD 0x08 /* Unsupp Request Detected */ 986#define VXGE_HAL_PCI_EXP_DEVSTA_AUXPD 0x10 /* AUX Power Detected */ 987#define VXGE_HAL_PCI_EXP_DEVSTA_TRPND 0x20 /* Transactions Pending */ 988 u32 pci_e_lnkcap; 989#define VXGE_HAL_PCI_EXP_LNKCAP_LNK_SPEED 0xf /* Supported Link speeds. */ 990#define VXGE_HAL_PCI_EXP_LNKCAP_LS_2_5 0x1 /* 2.5 Gb/s supported. */ 991#define VXGE_HAL_PCI_EXP_LNKCAP_LS_5 0x2 /* 5 and 2.5 Gb/s supported. */ 992#define VXGE_HAL_PCI_EXP_LNKCAP_LNK_WIDTH 0x3f0 /* Supported Link speeds. */ 993#define VXGE_HAL_PCI_EXP_LNKCAP_LW_RES 0x0 /* Reserved. */ 994#define VXGE_HAL_PCI_EXP_LNKCAP_LW_X1 0x1 /* Reserved. */ 995#define VXGE_HAL_PCI_EXP_LNKCAP_LW_X2 0x2 /* Reserved. */ 996#define VXGE_HAL_PCI_EXP_LNKCAP_LW_X4 0x4 /* Reserved. */ 997#define VXGE_HAL_PCI_EXP_LNKCAP_LW_X8 0x8 /* Reserved. */ 998#define VXGE_HAL_PCI_EXP_LNKCAP_LW_X12 0xa /* Reserved. */ 999#define VXGE_HAL_PCI_EXP_LNKCAP_LW_X16 0x10 /* Reserved. */ 1000#define VXGE_HAL_PCI_EXP_LNKCAP_LW_X32 0x20 /* Reserved. */ 1001#define VXGE_HAL_PCI_EXP_LNKCAP_LNK_ASPM 0xc00 /* Supported Link speeds. */ 1002#define VXGE_HAL_PCI_EXP_LNKCAP_LASPM_RES1 0x0 /* Reserved. */ 1003#define VXGE_HAL_PCI_EXP_LNKCAP_LASPM_LO 0x1 /* Reserved. */ 1004#define VXGE_HAL_PCI_EXP_LNKCAP_LASPM_RES2 0x2 /* Reserved. */ 1005#define VXGE_HAL_PCI_EXP_LNKCAP_LASPM_L0_L1 0x3 /* Reserved. */ 1006#define VXGE_HAL_PCI_EXP_LNKCAP_L0_LAT 0x7000 /* Supported Link speeds. */ 1007#define VXGE_HAL_PCI_EXP_LNKCAP_L0_LT_64 0x0 /* Less than 64 ns. */ 1008#define VXGE_HAL_PCI_EXP_LNKCAP_L0_64_128 0x1 /* 64ns to less than 128ns. */ 1009#define VXGE_HAL_PCI_EXP_LNKCAP_L0_128_256 0x2 /* 128ns to less than 256ns. */ 1010#define VXGE_HAL_PCI_EXP_LNKCAP_L0_256_512 0x3 /* 256ns to less than 512ns. */ 1011#define VXGE_HAL_PCI_EXP_LNKCAP_L0_512_1us 0x4 /* 512ns to less than 1us. */ 1012#define VXGE_HAL_PCI_EXP_LNKCAP_L0_1us_2us 0x5 /* 1us to less than 2us. */ 1013#define VXGE_HAL_PCI_EXP_LNKCAP_L0_2us_4us 0x6 /* 2us-4us. */ 1014#define VXGE_HAL_PCI_EXP_LNKCAP_L0_GT_4us 0x7 /* More than 4us. */ 1015#define VXGE_HAL_PCI_EXP_LNKCAP_L1_LAT 0x38000 /* Supported Link speeds. */ 1016#define VXGE_HAL_PCI_EXP_LNKCAP_L1_LT_1us 0x0 /* Less than 1us. */ 1017#define VXGE_HAL_PCI_EXP_LNKCAP_L1_1us_2us 0x1 /* 1us to less than 2us. */ 1018#define VXGE_HAL_PCI_EXP_LNKCAP_L1_2us_4us 0x2 /* 2us to less than 4us. */ 1019#define VXGE_HAL_PCI_EXP_LNKCAP_L1_4us_8us 0x3 /* 4us to less than 8us. */ 1020#define VXGE_HAL_PCI_EXP_LNKCAP_L1_8us_16us 0x4 /* 8us to less than 16us. */ 1021#define VXGE_HAL_PCI_EXP_LNKCAP_L1_16us_32us 0x5 /* 16us to less than 32us. */ 1022#define VXGE_HAL_PCI_EXP_LNKCAP_L1_32us_64us 0x6 /* 32us-64us. */ 1023#define VXGE_HAL_PCI_EXP_LNKCAP_L1_GT_64us 0x7 /* More than 64us. */ 1024#define VXGE_HAL_PCI_EXP_LNKCAP_CLK_PWR_MGMT 0x40000 /* Clock power mgmt */ 1025#define VXGE_HAL_PCI_EXP_LNKCAP_DOWN_ERR_CAP 0x80000 /* Down error capable. */ 1026#define VXGE_HAL_PCI_EXP_LNKCAP_LNK_ACT_CAP 0x100000 /* DL active rep cap. */ 1027#define VXGE_HAL_PCI_EXP_LNKCAP_LNK_BW_CAP 0x200000 /* DL bw rep cap. */ 1028#define VXGE_HAL_PCI_EXP_LNKCAP_LNK_PORT_NUM 0xff000000 /* Port number. */ 1029 u16 pci_e_lnkctl; 1030#define VXGE_HAL_PCI_EXP_LNKCTL_ASPM 0x3 /* ASPM Control. */ 1031#define VXGE_HAL_PCI_EXP_LNKCTL_ASPM_DISABLED 0x0 /* Disabled. */ 1032#define VXGE_HAL_PCI_EXP_LNKCTL_ASPM_L0_EN 0x1 /* L0 entry enabled. */ 1033#define VXGE_HAL_PCI_EXP_LNKCTL_ASPM_L1_EN 0x2 /* L1 entry enabled. */ 1034#define VXGE_HAL_PCI_EXP_LNKCTL_ASPM_L0_L1_EN 0x3 /* L0 & L1 entry enabled. */ 1035#define VXGE_HAL_PCI_EXP_LNKCTL_RCB 0x8 /* Read Completion Boundary. */ 1036#define VXGE_HAL_PCI_EXP_LNKCTL_RCB_64 0x0 /* RCB 64 bytes. */ 1037#define VXGE_HAL_PCI_EXP_LNKCTL_RCB_128 0x1 /* RCB 128 bytes. */ 1038#define VXGE_HAL_PCI_EXP_LNKCTL_DISABLED 0x10 /* Disables the link. */ 1039#define VXGE_HAL_PCI_EXP_LNKCTL_RETRAIN 0x20 /* Retrain the link. */ 1040#define VXGE_HAL_PCI_EXP_LNKCTL_CCCFG 0x40 /* Common clock config. */ 1041#define VXGE_HAL_PCI_EXP_LNKCTL_EXT_SYNC 0x80 /* Extended Sync. */ 1042#define VXGE_HAL_PCI_EXP_LNKCTL_CLK_PWRMGMT 0x100 /* Enable clock power mgmt */ 1043#define VXGE_HAL_PCI_EXP_LNKCTL_HW_AUTO_DIS 0x200 /* HW autonomous with dis */ 1044#define VXGE_HAL_PCI_EXP_LNKCTL_BWM_INTR_EN 0x400 /* Bw mgmt interrupt enable */ 1045#define VXGE_HAL_PCI_EXP_LNKCTL_ABW_INTR_EN 0x800 /* Autonomous BW int enable */ 1046 u16 pci_e_lnksta; 1047#define VXGE_HAL_PCI_EXP_LNKSTA_LNK_SPEED 0xf /* Supported Link speeds. */ 1048#define VXGE_HAL_PCI_EXP_LNKSTA_LS_2_5 0x1 /* 2.5 Gb/s supported. */ 1049#define VXGE_HAL_PCI_EXP_LNKSTA_LS_5 0x2 /* 5 and 2.5 Gb/s supported */ 1050 /* Supported Link speeds. */ 1051#define VXGE_HAL_PCI_EXP_LNKSTA_LNK_WIDTH 0x3f0 1052#define VXGE_HAL_PCI_EXP_LNKSTA_LW_RES 0x0 /* Reserved. */ 1053#define VXGE_HAL_PCI_EXP_LNKSTA_LW_X1 0x1 /* Reserved. */ 1054#define VXGE_HAL_PCI_EXP_LNKSTA_LW_X2 0x2 /* Reserved. */ 1055#define VXGE_HAL_PCI_EXP_LNKSTA_LW_X4 0x4 /* Reserved. */ 1056#define VXGE_HAL_PCI_EXP_LNKSTA_LW_X8 0x8 /* Reserved. */ 1057#define VXGE_HAL_PCI_EXP_LNKSTA_LW_X12 0xa /* Reserved. */ 1058#define VXGE_HAL_PCI_EXP_LNKSTA_LW_X16 0x10 /* Reserved. */ 1059#define VXGE_HAL_PCI_EXP_LNKSTA_LW_X32 0x20 /* Reserved. */ 1060#define VXGE_HAL_PCI_EXP_LNKSTA_LNK_TRAIN 0x800 /* Link training. */ 1061#define VXGE_HAL_PCI_EXP_LNKSTA_SCLK_CFG 0x1000 /* Slot Clock Config. */ 1062#define VXGE_HAL_PCI_EXP_LNKSTA_DLL_ACTIVE 0x2000 /* Data LL Active. */ 1063#define VXGE_HAL_PCI_EXP_LNKSTA_BWM_STA 0x4000 /* Bw mgmt intr enable */ 1064#define VXGE_HAL_PCI_EXP_LNKSTA_ABW_STA 0x8000 /* Autonomous BW intr en */ 1065 u32 pci_e_stlcap; 1066#define VXGE_HAL_PCI_EXP_STLCAP_ATTN_BTTN 0x1 /* Attention Button Present */ 1067#define VXGE_HAL_PCI_EXP_STLCAP_PWR_CTRL 0x2 /* Power Control Present */ 1068#define VXGE_HAL_PCI_EXP_STLCAP_MRL_SENS 0x4 /* MRL Sesor Present */ 1069#define VXGE_HAL_PCI_EXP_STLCAP_ATTN_IND 0x8 /* Attention Ind Present */ 1070 /* Power Indicator Present */ 1071#define VXGE_HAL_PCI_EXP_STLCAP_PWR_IND 0x10 1072#define VXGE_HAL_PCI_EXP_STLCAP_HP_SURP 0x20 /* Hot-Plug Surprise */ 1073#define VXGE_HAL_PCI_EXP_STLCAP_HP_CAP 0x40 /* Hot-Plug Surprise */ 1074#define VXGE_HAL_PCI_EXP_STLCAP_SL_PWR_VAL 0x7F80 /* Hot-Plug Surprise */ 1075 /* 250 W Slot Power Limit */ 1076#define VXGE_HAL_PCI_EXP_STLCAP_SL_PWR_250 0xF0 1077 /* 275 W Slot Power Limit */ 1078#define VXGE_HAL_PCI_EXP_STLCAP_SL_PWR_275 0xF1 1079 /* 300 W Slot Power Limit */ 1080#define VXGE_HAL_PCI_EXP_STLCAP_SL_PWR_300 0xF2 1081#define VXGE_HAL_PCI_EXP_STLCAP_SL_PWR_LIM 0x18000 /* Hot-Plug Surprise */ 1082#define VXGE_HAL_PCI_EXP_STLCAP_SL_PWR_1X 0x0 /* 1.0x */ 1083#define VXGE_HAL_PCI_EXP_STLCAP_SL_PWR_XBY10 0x1 /* 0.1x */ 1084#define VXGE_HAL_PCI_EXP_STLCAP_SL_PWR_XBY100 0x2 /* 0.01x */ 1085#define VXGE_HAL_PCI_EXP_STLCAP_SL_PWR_XBY1000 0x3 /* 0.001x */ 1086#define VXGE_HAL_PCI_EXP_STLCAP_EM_INTR_LOCK 0x20000 /* Ele-mec Intrlock Pres */ 1087#define VXGE_HAL_PCI_EXP_STLCAP_NO_CMD_CMPL 0x40000 /* No Cmd Completed Supp */ 1088#define VXGE_HAL_PCI_EXP_STLCAP_PHY_SL_NO 0xFFF80000 /* Phys Slot Number */ 1089 u16 pci_e_stlctl; 1090#define VXGE_HAL_PCI_EXP_STLCTL_ATTN_BTN_EN 0x1 /* Atten Bttn pressed en */ 1091#define VXGE_HAL_PCI_EXP_STLCTL_PF_DET_EN 0x2 /* Power Fault Detected En */ 1092#define VXGE_HAL_PCI_EXP_STLCTL_MRL_SENS_EN 0x4 /* MRL Sensor Changed Enable */ 1093#define VXGE_HAL_PCI_EXP_STLCTL_PDET_CH_EN 0x8 /* Presence Detect Changed En */ 1094#define VXGE_HAL_PCI_EXP_STLCTL_CC_INTR_EN 0x10 /* Cmd Compl Intr Enable */ 1095#define VXGE_HAL_PCI_EXP_STLCTL_HP_INTR_EN 0x20 /* Hot-Plug Intr Enable */ 1096#define VXGE_HAL_PCI_EXP_STLCTL_ATN_IND_CTRL 0xC0 /* Atten Ind Control */ 1097#define VXGE_HAL_PCI_EXP_STLCTL_ATN_IND_RES 0x0 /* Reserved */ 1098#define VXGE_HAL_PCI_EXP_STLCTL_ATN_IND_ON 0x1 /* On */ 1099#define VXGE_HAL_PCI_EXP_STLCTL_ATN_IND_BLNK 0x2 /* Blink */ 1100#define VXGE_HAL_PCI_EXP_STLCTL_ATN_IND_OFF 0x3 /* Off */ 1101#define VXGE_HAL_PCI_EXP_STLCTL_PWR_IND_CTRL 0x300 /* Power Ind Control */ 1102#define VXGE_HAL_PCI_EXP_STLCTL_PWR_IND_RES 0x0 /* Reserved */ 1103#define VXGE_HAL_PCI_EXP_STLCTL_PWR_IND_ON 0x1 /* On */ 1104#define VXGE_HAL_PCI_EXP_STLCTL_PWR_IND_BLNK 0x2 /* Blink */ 1105#define VXGE_HAL_PCI_EXP_STLCTL_PWR_IND_OFF 0x3 /* Off */ 1106#define VXGE_HAL_PCI_EXP_STLCTL_PWRCTRL_CTRL 0x400 /* Power Controller Ctrl */ 1107#define VXGE_HAL_PCI_EXP_STLCTL_PWRCTRL_on 0x0 /* Power on */ 1108#define VXGE_HAL_PCI_EXP_STLCTL_PWRCTRL_off 0x1 /* Power off */ 1109#define VXGE_HAL_PCI_EXP_STLCTL_EM_IL_CTRL 0x800 /* Ele-mec Intrlock Ctrl */ 1110#define VXGE_HAL_PCI_EXP_STLCTL_DLL_ST_CH_EN 0x1000 /* DL State Changed En */ 1111 u16 pci_e_stlsta; 1112#define VXGE_HAL_PCI_EXP_STLSTA_ATTN_BTN 0x1 /* Attention Button Pressed */ 1113#define VXGE_HAL_PCI_EXP_STLSTA_PF_DET 0x2 /* Power Fault Detected */ 1114#define VXGE_HAL_PCI_EXP_STLSTA_MRL_SENS_CH 0x4 /* MRL Sensor Changed */ 1115#define VXGE_HAL_PCI_EXP_STLSTA_PDET_CH 0x8 /* Presence Detect Changed */ 1116#define VXGE_HAL_PCI_EXP_STLSTA_CMD_COMPL 0x10 /* Command Completed */ 1117#define VXGE_HAL_PCI_EXP_STLSTA_MRL_SENS_STA 0x20 /* MRL Sensor State */ 1118#define VXGE_HAL_PCI_EXP_STLSTA_MRL_SENS_CL 0x0 /* MRL Sensor State - closed */ 1119#define VXGE_HAL_PCI_EXP_STLSTA_MRL_SENS_OP 0x1 /* MRL Sensor State - open */ 1120#define VXGE_HAL_PCI_EXP_STLSTA_PDET_STA 0x400 /* Presence Detect State */ 1121#define VXGE_HAL_PCI_EXP_STLSTA_PDET_EMPTY 0x0 /* Clost Empty */ 1122#define VXGE_HAL_PCI_EXP_STLSTA_PDET_PRESENT 0x1 /* Card Present */ 1123 /* Ele-mec Interlock Control */ 1124#define VXGE_HAL_PCI_EXP_STLSTA_EM_IL_STA 0x80 1125#define VXGE_HAL_PCI_EXP_STLSTA_EM_IL_DIS 0x0 /* Disengaged */ 1126#define VXGE_HAL_PCI_EXP_STLSTA_EM_IL_EN 0x1 /* Engaged */ 1127 /* DL Layer State Changed */ 1128#define VXGE_HAL_PCI_EXP_STLSTA_DLL_ST_CH 0x100 1129 u16 pci_e_rtctl; 1130#define VXGE_HAL_PCI_EXP_RTCTL_SECEE 0x01 /* Sys Err on Correctable Error */ 1131#define VXGE_HAL_PCI_EXP_RTCTL_SENFEE 0x02 /* Sys Err on Non-Fatal Error */ 1132#define VXGE_HAL_PCI_EXP_RTCTL_SEFEE 0x04 /* Sys Err on Fatal Error */ 1133#define VXGE_HAL_PCI_EXP_RTCTL_PMEIE 0x08 /* PME Interrupt Enable */ 1134#define VXGE_HAL_PCI_EXP_RTCTL_CRSSVE 0x10 /* CRS SW Visibility Enable */ 1135 u16 pci_e_rtcap; 1136#define VXGE_HAL_PCI_EXP_RTCAP_CRS_SW_VIS 0x01 /* CRS SW Visibility */ 1137 u32 pci_e_rtsta; 1138#define VXGE_HAL_PCI_EXP_RTSTA_PME_REQ_ID 0xFFFF /* PME Requestor ID */ 1139#define VXGE_HAL_PCI_EXP_RTSTA_PME_STATUS 0x10000 /* PME status */ 1140#define VXGE_HAL_PCI_EXP_RTSTA_PME_PENDING 0x20000 /* PME Pending */ 1141#endif 1142} vxge_hal_pci_e_capability_t; 1143 1144typedef u32 vxge_hal_pci_e_caps_offset_t; 1145 1146#define VXGE_HAL_PCI_EXT_CAP_ID(header) (header & 0x0000ffff) 1147#define VXGE_HAL_PCI_EXT_CAP_VER(header) ((header >> 16) & 0xf) 1148#define VXGE_HAL_PCI_EXT_CAP_NEXT(header) ((header >> 20) & 0xffc) 1149 1150#define VXGE_HAL_PCI_EXT_CAP_ID_ERR 1 1151#define VXGE_HAL_PCI_EXT_CAP_ID_VC 2 1152#define VXGE_HAL_PCI_EXT_CAP_ID_DSN 3 1153#define VXGE_HAL_PCI_EXT_CAP_ID_PWR 4 1154 1155typedef struct vxge_hal_err_capability_t { 1156 u32 pci_err_header; 1157 u32 pci_err_uncor_status; 1158#define VXGE_HAL_PCI_ERR_UNC_TRAIN 0x00000001 /* Training */ 1159#define VXGE_HAL_PCI_ERR_UNC_DLP 0x00000010 /* Data Link Protocol */ 1160#define VXGE_HAL_PCI_ERR_UNC_POISON_TLP 0x00001000 /* Poisoned TLP */ 1161#define VXGE_HAL_PCI_ERR_UNC_FCP 0x00002000 /* Flow Control Protocol */ 1162#define VXGE_HAL_PCI_ERR_UNC_COMP_TIME 0x00004000 /* Completion Timeout */ 1163#define VXGE_HAL_PCI_ERR_UNC_COMP_ABORT 0x00008000 /* Completer Abort */ 1164#define VXGE_HAL_PCI_ERR_UNC_UNX_COMP 0x00010000 /* Unexpected Completion */ 1165#define VXGE_HAL_PCI_ERR_UNC_RX_OVER 0x00020000 /* Receiver Overflow */ 1166#define VXGE_HAL_PCI_ERR_UNC_MALF_TLP 0x00040000 /* Malformed TLP */ 1167#define VXGE_HAL_PCI_ERR_UNC_ECRC 0x00080000 /* ECRC Error Status */ 1168#define VXGE_HAL_PCI_ERR_UNC_UNSUP 0x00100000 /* Unsupported Request */ 1169 u32 pci_err_uncor_mask; 1170 u32 pci_err_uncor_server; 1171 u32 pci_err_cor_status; 1172#define VXGE_HAL_PCI_ERR_COR_RCVR 0x00000001 /* Receiver Error Status */ 1173#define VXGE_HAL_PCI_ERR_COR_BAD_TLP 0x00000040 /* Bad TLP Status */ 1174#define VXGE_HAL_PCI_ERR_COR_BAD_DLLP 0x00000080 /* Bad DLLP Status */ 1175#define VXGE_HAL_PCI_ERR_COR_REP_ROLL 0x00000100 /* REPLAY_NUM Rollover */ 1176#define VXGE_HAL_PCI_ERR_COR_REP_TIMER 0x00001000 /* Replay Timer Timeout */ 1177#define VXGE_HAL_PCI_ERR_COR_MASK 20 /* Correctable Error Mask */ 1178 u32 pci_err_cap; 1179#define VXGE_HAL_PCI_ERR_CAP_FEP(x) ((x) & 31) /* First Error Pointer */ 1180 /* ECRC Generation Capable */ 1181#define VXGE_HAL_PCI_ERR_CAP_ECRC_GENC 0x00000020 1182 1183#define VXGE_HAL_PCI_ERR_CAP_ECRC_GENE 0x00000040 /* ECRC Generation Enable */ 1184#define VXGE_HAL_PCI_ERR_CAP_ECRC_CHKC 0x00000080 /* ECRC Check Capable */ 1185#define VXGE_HAL_PCI_ERR_CAP_ECRC_CHKE 0x00000100 /* ECRC Check Enable */ 1186 u32 err_header_log; 1187#define VXGE_HAL_PCI_ERR_HEADER_LOG(x) ((x) >> 31) /* Error Header Log */ 1188 u32 unused2[3]; 1189 u32 pci_err_root_command; 1190 u32 pci_err_root_status; 1191 u32 pci_err_root_cor_src; 1192 u32 pci_err_root_src; 1193} vxge_hal_err_capability_t; 1194 1195typedef struct vxge_hal_vc_capability_t { 1196 u32 pci_vc_header; 1197 u32 pci_vc_port_reg1; 1198 u32 pci_vc_port_reg2; 1199 u32 pci_vc_port_ctrl; 1200 u32 pci_vc_port_status; 1201 u32 pci_vc_res_cap; 1202 u32 pci_vc_res_ctrl; 1203 u32 pci_vc_res_status; 1204} vxge_hal_vc_capability_t; 1205 1206typedef struct vxge_hal_pwr_budget_capability_t { 1207 u32 pci_pwr_header; 1208 u32 pci_pwr_dsr; 1209 u32 pci_pwr_data; 1210#define VXGE_HAL_PCI_PWR_DATA_BASE(x) ((x) & 0xff) /* Base Power */ 1211#define VXGE_HAL_PCI_PWR_DATA_SCALE(x) (((x) >> 8) & 3) /* Data Scale */ 1212#define VXGE_HAL_PCI_PWR_DATA_PM_SUB(x) (((x) >> 10) & 7) /* PM Sub State */ 1213#define VXGE_HAL_PCI_PWR_DATA_PM_STATE(x) (((x) >> 13) & 3) /* PM State */ 1214#define VXGE_HAL_PCI_PWR_DATA_TYPE(x) (((x) >> 15) & 7) /* Type */ 1215#define VXGE_HAL_PCI_PWR_DATA_RAIL(x) (((x) >> 18) & 7) /* Power Rail */ 1216 u32 pci_pwr_cap; 1217#define VXGE_HAL_PCI_PWR_CAP_BUDGET(x) ((x) & 1) /* Include in sys budget */ 1218} vxge_hal_pwr_budget_capability_t; 1219 1220typedef struct vxge_hal_pci_e_ext_caps_offset_t { 1221 u32 err_cap_offset; 1222 u32 vc_cap_offset; 1223 u32 dsn_cap_offset; 1224 u32 pwr_budget_cap_offset; 1225} vxge_hal_pci_e_ext_caps_offset_t; 1226 1227#pragma pack() 1228 1229__EXTERN_END_DECLS 1230 1231#endif /* VXGE_HAL_REGS_H */ 1232