Print this page
NEX-10267 BAD TRAP: type=d (#gp General protection) in qlt_msix_resp_handler()
Reviewed by: Evan Layton <evan.layton@nexenta.com>
Reviewed by: Rob Gittins <rob.gittins@nexenta.com>
NEX-5733 cleanup qlt/qlc
Reviewed by: Yuri Pankov <yuri.pankov@nexenta.com>
Reviewed by: Alek Pinchuk <alek.pinchuk@nexenta.com>
NEX-5717 import QLogic 16G FC drivers
Reviewed by: Steve Peng <steve.peng@nexenta.com>
Reviewed by: Josef 'Jeff' Sipek <josef.sipek@nexenta.com>
Reviewed by: Yuri Pankov <yuri.pankov@nexenta.com>
*** 18,33 ****
*
* CDDL HEADER END
*/
/*
! * Copyright 2009 QLogic Corporation. All rights reserved.
* Use is subject to license terms.
*/
/*
! * Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved.
*/
#ifndef _QLT_REGS_H
#define _QLT_REGS_H
--- 18,33 ----
*
* CDDL HEADER END
*/
/*
! * Copyright 2009-2015 QLogic Corporation. All rights reserved.
* Use is subject to license terms.
*/
/*
! * Copyright (c) 2008, 2015, Oracle and/or its affiliates. All rights reserved.
*/
#ifndef _QLT_REGS_H
#define _QLT_REGS_H
*** 43,60 ****
--- 43,62 ----
#define REG_FLASH_ADDR 0x00
#define REG_FLASH_DATA 0x04
#define REG_CTRL_STATUS 0x08
#define REG_INTR_CTRL 0x0C
#define REG_INTR_STATUS 0x10
+
#define REG_REQ_IN_PTR 0x1C
#define REG_REQ_OUT_PTR 0x20
#define REG_RESP_IN_PTR 0x24
#define REG_RESP_OUT_PTR 0x28
#define REG_PREQ_IN_PTR 0x2C
#define REG_PREQ_OUT_PTR 0x30
#define REG_ATIO_IN_PTR 0x3C
#define REG_ATIO_OUT_PTR 0x40
+
#define REG_RISC_STATUS 0x44
#define REG_HCCR 0x48
#define REG_GPIO_DATA 0x4C
#define REG_GPIO_ENABLE 0x50
#define REG_IOBUS_BASE_ADDR 0x54
*** 70,79 ****
--- 72,83 ----
*/
#define FLASH_ERROR BIT_18
#define DMA_ACTIVE_STATUS BIT_17
#define DMA_SHUTDOWN_CTRL BIT_16
#define FUNCTION_NUMBER BIT_15
+ #define H2RISC_INTR BIT_6
+ #define RISC_RESET BIT_5
/*
* #define 81XX_FUNCTION_NUMBER BIT_15 | BIT_14 | BIT_13 | BIT_12
*/
#define PCI_X_BUS_MODE (BIT_8 | BIT_9 | BIT_10 | BIT_11)
#define PCI_X_XFER_CTRL (BIT_4 | BIT_5)
*** 115,129 ****
--- 119,149 ----
#define ASYNC_EVENT 0x12
#define RESP_Q_UPDATE 0x13
#define ATIO_Q_UPDATE 0x1c
#define RESP_ATIO_Q_UPDATE 0x1d
+
/*
+ * Firmware state codes from get firmware state mailbox command
+ */
+ #define FSTATE_CONFIG_WAIT 0
+ #define FSTATE_WAIT_AL_PA 1
+ #define FSTATE_WAIT_LOGIN 2
+ #define FSTATE_READY 3
+ #define FSTATE_LOSS_SYNC 4
+ #define FSTATE_ERROR 5
+ #define FSTATE_NON_PART 7
+
+ #define FSTATE_MPI_NIC_ERROR 0x10
+
+
+ /*
* Mailbox command completion status.
*/
#define QLT_MBX_CMD_SUCCESS 0x4000
+
/*
* HCCR commands
*/
#define NOP 0x00
#define SET_RISC_RESET 0x01
*** 135,165 ****
#define CLEAR_RISC_TO_PCI_INTR 0x0A
#define HCCR_CMD_SHIFT 28
#define HCCR_CMD(cmd) ((uint32_t)cmd << HCCR_CMD_SHIFT)
! #define MBC_STOP_FIRMWARE 0x14
/*
* Flash/NVRAM definitions
*/
#define FLASH_DATA_FLAG BIT_31
#define FLASH_CONF_ADDR 0x7FFD0000
#define FLASH_DATA_ADDR 0x7FF00000
#define FLASH_DATA_ADDR_81XX 0x7F8D0000
#define NVRAM_CONF_ADDR 0x7FFF0000
#define NVRAM_DATA_ADDR 0x7FFE0000
#define NVRAM_FUNC0_ADDR (NVRAM_DATA_ADDR + 0x80)
#define NVRAM_FUNC1_ADDR (NVRAM_DATA_ADDR + 0x180)
#define QLT25_NVRAM_FUNC0_ADDR (FLASH_DATA_ADDR + 0x48080)
#define QLT25_NVRAM_FUNC1_ADDR (FLASH_DATA_ADDR + 0x48180)
#define QLT81_NVRAM_FUNC0_ADDR (FLASH_DATA_ADDR_81XX + 0x80)
#define QLT81_NVRAM_FUNC1_ADDR (FLASH_DATA_ADDR_81XX + 0x180)
typedef struct qlt_nvram {
/* NVRAM header. */
uint8_t id[4];
uint8_t nvram_version[2];
uint8_t reserved_0[2];
--- 155,398 ----
#define CLEAR_RISC_TO_PCI_INTR 0x0A
#define HCCR_CMD_SHIFT 28
#define HCCR_CMD(cmd) ((uint32_t)cmd << HCCR_CMD_SHIFT)
! /*
! * ISP8100/83xx Multi-Queue MBAR definitions
! */
! #define MQBAR_REQ_IN 0x0
! #define MQBAR_REQ_OUT 0x4
! #define MQBAR_RESP_IN 0x8
! #define MQBAR_RESP_OUT 0xc
+ #define MQBAR_ATIO_IN 0x10
+ #define MQBAR_ATIO_OUT 0x14
+
+ /* 83xx uses 32 bytes per queue pair */
+ #define MQBAR_REG_SIZE 0x20
+ #define MQBAR_REG_OFFSET 4096
+
+ #define MQ_MAX_QUEUES 8
+ #define MQ_MAX_QUEUES_MASK (MQ_MAX_QUEUES - 1)
+
/*
* Flash/NVRAM definitions
*/
#define FLASH_DATA_FLAG BIT_31
+
#define FLASH_CONF_ADDR 0x7FFD0000
+
#define FLASH_DATA_ADDR 0x7FF00000
+
+ #define FLASH_2400_DATA_ADDR 0x7FF00000
+ #define FLASH_2500_DATA_ADDR 0x7FF00000
+ #define FLASH_2700_DATA_ADDR 0x7F800000
+ #define FLASH_8100_DATA_ADDR 0x7F800000
+ #define FLASH_8200_DATA_ADDR 0
+ #define FLASH_8300_DATA_ADDR 0x7F800000
+
#define FLASH_DATA_ADDR_81XX 0x7F8D0000
+ /* 0x7F80000 + 0xD0000 */
+ #define FLASH_DATA_ADDR_83XX 0x7FA70000
+ /* 0x7F80000 + 0x270000 */
+
#define NVRAM_CONF_ADDR 0x7FFF0000
#define NVRAM_DATA_ADDR 0x7FFE0000
+ #define NVRAM_2400_FUNC0_ADDR 0x80
+ #define NVRAM_2400_FUNC1_ADDR 0x180
+
+ #define NVRAM_2500_FUNC0_ADDR 0x48080
+ #define NVRAM_2500_FUNC1_ADDR 0x48180
+
+ #define NVRAM_2700_FUNC0_ADDR 0x270080
+ #define NVRAM_2700_FUNC1_ADDR 0x270180
+ #define NVRAM_2700_FUNC2_ADDR 0x270280
+ #define NVRAM_2700_FUNC3_ADDR 0x270380
+
+ #define NVRAM_8100_FUNC0_ADDR 0xD0080
+ #define NVRAM_8100_FUNC1_ADDR 0xD0180
+
+ #define NVRAM_8300_FC_FUNC0_ADDR 0x270080
+ #define NVRAM_8300_FC_FUNC1_ADDR 0x270180
+
+ #define NVRAM_8300_FCOE_FUNC0_ADDR 0x274080
+ #define NVRAM_8300_FCOE_FUNC1_ADDR 0x274180
+
#define NVRAM_FUNC0_ADDR (NVRAM_DATA_ADDR + 0x80)
#define NVRAM_FUNC1_ADDR (NVRAM_DATA_ADDR + 0x180)
#define QLT25_NVRAM_FUNC0_ADDR (FLASH_DATA_ADDR + 0x48080)
#define QLT25_NVRAM_FUNC1_ADDR (FLASH_DATA_ADDR + 0x48180)
+ #define QLT27_NVRAM_FUNC0_ADDR (FLASH_2700_DATA_ADDR + 0x270080)
+ #define QLT27_NVRAM_FUNC1_ADDR (FLASH_2700_DATA_ADDR + 0x270180)
+ #define QLT27_NVRAM_FUNC2_ADDR (FLASH_2700_DATA_ADDR + 0x270280)
+ #define QLT27_NVRAM_FUNC3_ADDR (FLASH_2700_DATA_ADDR + 0x270380)
+
#define QLT81_NVRAM_FUNC0_ADDR (FLASH_DATA_ADDR_81XX + 0x80)
#define QLT81_NVRAM_FUNC1_ADDR (FLASH_DATA_ADDR_81XX + 0x180)
+ #define QLT83FC_NVRAM_FUNC0_ADDR (FLASH_DATA_ADDR_83XX + 0x80)
+ #define QLT83FC_NVRAM_FUNC1_ADDR (FLASH_DATA_ADDR_83XX + 0x180)
+
+ #define QLT83FCOE_NVRAM_FUNC0_ADDR (FLASH_DATA_ADDR_83XX + 0x4080)
+ #define QLT83FCOE_NVRAM_FUNC1_ADDR (FLASH_DATA_ADDR_83XX + 0x4180)
+
+ #define VPD_2400_FUNC0_ADDR 0
+ #define VPD_2400_FUNC1_ADDR 0x100
+
+ #define VPD_2500_FUNC0_ADDR 0x48000
+ #define VPD_2500_FUNC1_ADDR 0x48100
+
+ #define VPD_2700_FUNC0_ADDR 0x270000
+ #define VPD_2700_FUNC1_ADDR 0x270100
+ #define VPD_2700_FUNC2_ADDR 0x270200
+ #define VPD_2700_FUNC3_ADDR 0x270300
+
+ #define VPD_8100_FUNC0_ADDR 0xD0000
+ #define VPD_8100_FUNC1_ADDR 0xD0400
+
+ #define VPD_8021_FUNC0_ADDR 0xFA300
+ #define VPD_8021_FUNC1_ADDR 0xFA300
+
+ #define VPD_8300_FC_FUNC0_ADDR 0x270000
+ #define VPD_8300_FC_FUNC1_ADDR 0x270100
+
+ #define VPD_8300_FCOE_FUNC0_ADDR 0x274000
+ #define VPD_8300_FCOE_FUNC1_ADDR 0x274100
+ #define VPD_SIZE 0x80
+
+ #define QLT24_VPD_FUNC0_ADDR (NVRAM_DATA_ADDR + 0x0)
+ #define QLT24_VPD_FUNC1_ADDR (NVRAM_DATA_ADDR + 0x100)
+
+ #define QLT25_VPD_FUNC0_ADDR (FLASH_DATA_ADDR + 0x48000)
+ #define QLT25_VPD_FUNC1_ADDR (FLASH_DATA_ADDR + 0x48100)
+
+ #define QLT27_VPD_FUNC0_ADDR (FLASH_2700_DATA_ADDR + 0x270000)
+ #define QLT27_VPD_FUNC1_ADDR (FLASH_2700_DATA_ADDR + 0x270100)
+ #define QLT27_VPD_FUNC2_ADDR (FLASH_2700_DATA_ADDR + 0x270200)
+ #define QLT27_VPD_FUNC3_ADDR (FLASH_2700_DATA_ADDR + 0x270300)
+
+ #define QLT81_VPD_FUNC0_ADDR (FLASH_8100_DATA_ADDR + 0xD0000)
+ #define QLT81_VPD_FUNC1_ADDR (FLASH_8100_DATA_ADDR + 0xD0400)
+
+ #define QLT83FC_VPD_FUNC0_ADDR (FLASH_8300_DATA_ADDR + 0x270000)
+ #define QLT83FC_VPD_FUNC1_ADDR (FLASH_8300_DATA_ADDR + 0x270100)
+
+ #define QLT83FCOE_VPD_FUNC0_ADDR (FLASH_8300_DATA_ADDR + 0x274000)
+ #define QLT83FCOE_VPD_FUNC1_ADDR (FLASH_8300_DATA_ADDR + 0x274100)
+
+ #define FLASH_2400_FIRMWARE_ADDR 0x20000
+ #define FLASH_2400_FIRMWARE_SIZE 0x10000
+
+ #define FLASH_2500_FIRMWARE_ADDR 0x20000
+ #define FLASH_2500_FIRMWARE_SIZE 0x10000
+
+ #define FLASH_8100_FIRMWARE_ADDR 0xA0000
+ #define FLASH_8100_FIRMWARE_SIZE 0x20000
+
+ #define FLASH_8300_BFE_ADDR 0x200000 /* BIOS/FCode/EFI */
+ #define FLASH_8300_BFE_SIZE 0x80000
+
+ #define FLASH_8300_FC_FIRMWARE_ADDR 0x240000
+ #define FLASH_8300_FCOE_FIRMWARE_ADDR 0x220000
+ #define FLASH_8300_FIRMWARE_SIZE 0x20000
+
+ #define FLASH_8300_FIRMWARE_IMAGE_ADDR 0x40000
+ #define FLASH_8300_FIRMWARE_IMAGE_SIZE 0x80000
+
+ #define FLASH_8200_BOOTLOADER_ADDR 0x4000
+ #define FLASH_8200_BOOTLOADER_SIZE 0x8000
+
+ #define FLASH_8300_BOOTLOADER_ADDR 0x4000
+ #define FLASH_8300_BOOTLOADER_SIZE 0x8000
+
+ #define FLASH_2400_DESCRIPTOR_TABLE 0
+ #define FLASH_2500_DESCRIPTOR_TABLE 0x50000
+ #define FLASH_8100_DESCRIPTOR_TABLE 0xD8000
+ #define FLASH_8200_DESCRIPTOR_TABLE 0
+ #define FLASH_8300_DESCRIPTOR_TABLE 0xFC000
+
+ #define FLASH_2400_LAYOUT_TABLE 0x11400
+ #define FLASH_2500_LAYOUT_TABLE 0x50400
+ #define FLASH_8100_LAYOUT_TABLE 0xD8400
+ #define FLASH_8200_LAYOUT_TABLE 0xFC400
+ #define FLASH_8300_LAYOUT_TABLE 0xFC400
+
+ #define FLASH_2400_BOOT_CODE_ADDR 0
+ #define FLASH_2500_BOOT_CODE_ADDR 0
+ #define FLASH_2700_BOOT_CODE_ADDR 0x200000
+ #define FLASH_8100_BOOT_CODE_ADDR 0x80000
+ #define FLASH_8300_BOOT_CODE_ADDR 0x200000
+
+ #define VPD_TAG_END 0x78
+ #define VPD_TAG_CHKSUM "RV"
+ #define VPD_TAG_SN "SN"
+ #define VPD_TAG_PN "PN"
+ #define VPD_TAG_PRODID "\x82"
+ #define VPD_TAG_LRT 0x90
+ #define VPD_TAG_LRTC 0x91
+
+ typedef struct qlt_rom_header {
+ uint8_t signature[2];
+ uint8_t reserved[0x16];
+ uint8_t dataoffset[2];
+ uint8_t pad[6];
+ } qlt_rom_header_t;
+
+ typedef struct qlt_rom_data {
+ uint8_t signature[4];
+ uint8_t vid[2];
+ uint8_t did[2];
+ uint8_t reserved0[2];
+ uint8_t pcidatalen[2];
+ uint8_t pcidatarev;
+ uint8_t classcode[3];
+ uint8_t imagelength[2]; /* In sectors */
+ uint8_t revisionlevel[2];
+ uint8_t codetype;
+ uint8_t indicator;
+ uint8_t reserved1[2];
+ uint8_t pad[8];
+ } qlt_rom_data_t;
+
+ typedef struct qlt_rom_image {
+ qlt_rom_header_t header;
+ qlt_rom_data_t data;
+ uint32_t cksum;
+ } qlt_rom_image_t;
+
+ #define PCI_HEADER0 0x55
+ #define PCI_HEADER1 0xAA
+ #define PCI_DATASIG "PCIR"
+ #define PCI_SECTOR_SIZE 0x200
+ #define PCI_CODE_X86PC 0
+ #define PCI_CODE_FCODE 1
+ #define PCI_CODE_HPPA 2
+ #define PCI_CODE_EFI 3
+ #define PCI_CODE_FW 0xfe
+ #define PCI_IND_LAST_IMAGE 0x80
+ #define SBUS_CODE_FCODE 0xf1
+
+ /*
+ * Firmware Dump structure definition
+ */
+ #define QL_2200_FW_DUMP_SIZE 0x68000 /* bytes */
+ #define QL_2300_FW_DUMP_SIZE 0xE2000 /* bytes */
+ #define QL_6322_FW_DUMP_SIZE 0xE2000 /* bytes */
+ #define QL_24XX_FW_DUMP_SIZE 0x0330000 /* bytes */
+ #define QL_25XX_FW_DUMP_SIZE 0x0330000 /* bytes */
+
+ #define QL_24XX_VPD_SIZE 0x200 /* bytes */
+ #define QL_24XX_SFP_SIZE 0x200 /* bytes */
+
+ #define LNF_NVRAM_DATA BIT_0
+ #define LNF_VPD_DATA BIT_1
+ #define LNF_BFE_DATA BIT_2
+
typedef struct qlt_nvram {
/* NVRAM header. */
uint8_t id[4];
uint8_t nvram_version[2];
uint8_t reserved_0[2];
*** 635,644 ****
--- 868,1142 ----
uint8_t checksum[4];
} qlt_nvram_81xx_t;
+ /*
+ * firmware dump Entry Types
+ */
+ #define DT_NOP 0
+ #define DT_THDR 99
+ #define DT_TEND 255
+ #define DT_RIOB1 256
+ #define DT_WIOB1 257
+ #define DT_RIOB2 258
+ #define DT_WIOB2 259
+ #define DT_RPCI 260
+ #define DT_WPCI 261
+ #define DT_RRAM 262
+ #define DT_GQUE 263
+ #define DT_GFCE 264
+ #define DT_PRISC 265
+ #define DT_RRISC 266
+ #define DT_DINT 267
+ #define DT_GHBD 268
+ #define DT_SCRA 269
+ #define DT_RRREG 270
+ #define DT_WRREG 271
+ #define DT_RRRAM 272
+ #define DT_RPCIC 273
+ #define DT_GQUES 274
+ #define DT_WDMP 275
+
+ /*
+ * firmware dump Template Header (Entry Type 99)
+ */
+ typedef struct qlt_dt_hdr {
+ uint32_t type;
+ uint32_t first_entry_offset;
+ uint32_t size_of_template;
+ uint32_t rsv;
+ uint32_t num_of_entries;
+ uint32_t version;
+ uint32_t driver_timestamp;
+ uint32_t checksum;
+ uint32_t rsv_1;
+ uint32_t driver_info[3];
+ uint32_t saved_state_area[16];
+ uint32_t rsv_2[8];
+ uint32_t ver_attr[5];
+ } qlt_dt_hdr_t;
+
+ /*
+ * firmware dump Common Entry Header
+ */
+ typedef struct qlt_dt_entry_hdr {
+ uint32_t type;
+ uint32_t size;
+ uint32_t rsv;
+ #ifdef _BIG_ENDIAN
+ uint8_t driver_flags;
+ uint8_t rsv_2;
+ uint8_t rsv_1;
+ uint8_t capture_flags;
+ #else
+ uint8_t capture_flags;
+ uint8_t rsv_1;
+ uint8_t rsv_2;
+ uint8_t driver_flags;
+ #endif
+ } qlt_dt_entry_hdr_t;
+
+ /*
+ * Capture Flags
+ */
+ #define PF_ONLY_FLAG BIT_0 /* Physical Function Only */
+ #define PF_VF_FLAG BIT_1 /* Physical and Virtual Functions */
+
+ /*
+ * Driver Flags
+ */
+ #define SKIPPED_FLAG BIT_7 /* driver skipped this entry */
+
+ /*
+ * firmware dump Entry Including Header
+ */
+ typedef struct qlt_dt_entry {
+ qlt_dt_entry_hdr_t h;
+ uint32_t data[1];
+ } qlt_dt_entry_t;
+
+ /*
+ * firmware dump Template image
+ */
+ typedef struct qlt_dmp_template {
+ uint32_t rsv[2];
+ uint32_t len;
+ uint32_t major_ver;
+ uint32_t minor_ver;
+ uint32_t subminor_ver;
+ uint32_t attribute;
+ qlt_dt_hdr_t hdr;
+ qlt_dt_entry_t entries[1];
+ } qlt_dmp_template_t;
+
+ typedef struct qlt_dt_riob1 {
+ qlt_dt_entry_hdr_t h;
+ uint32_t addr;
+ #ifdef _BIG_ENDIAN
+ uint8_t pci_offset;
+ uint8_t reg_count_h;
+ uint8_t reg_count_l;
+ uint8_t reg_size;
+ #else
+ uint8_t reg_size;
+ uint8_t reg_count_l;
+ uint8_t reg_count_h;
+ uint8_t pci_offset;
+ #endif
+ } qlt_dt_riob1_t;
+
+ typedef struct qlt_dt_wiob1 {
+ qlt_dt_entry_hdr_t h;
+ uint32_t addr;
+ uint32_t data;
+ #ifdef _BIG_ENDIAN
+ uint8_t rsv[3];
+ uint8_t pci_offset;
+ #else
+ uint8_t pci_offset;
+ uint8_t rsv[3];
+ #endif
+ } qlt_dt_wiob1_t;
+
+ typedef struct qlt_dt_riob2 {
+ qlt_dt_entry_hdr_t h;
+ uint32_t addr;
+ #ifdef _BIG_ENDIAN
+ uint8_t pci_offset;
+ uint8_t reg_count_h;
+ uint8_t reg_count_l;
+ uint8_t reg_size;
+ uint8_t rsv[3];
+ uint8_t bank_sel_offset;
+ #else
+ uint8_t reg_size;
+ uint8_t reg_count_l;
+ uint8_t reg_count_h;
+ uint8_t pci_offset;
+ uint8_t bank_sel_offset;
+ uint8_t rsv[3];
+ #endif
+ uint32_t reg_bank;
+ } qlt_dt_riob2_t;
+
+ typedef struct qlt_dt_wiob2 {
+ qlt_dt_entry_hdr_t h;
+ uint32_t addr;
+ #ifdef _BIG_ENDIAN
+ uint8_t rsv[2];
+ uint8_t data_h;
+ uint8_t data_l;
+ uint8_t bank_sel_offset;
+ uint8_t pci_offset;
+ uint8_t rsv1[2];
+ #else
+ uint8_t data_l;
+ uint8_t data_h;
+ uint8_t rsv[2];
+ uint8_t rsv1[2];
+ uint8_t pci_offset;
+ uint8_t bank_sel_offset;
+ #endif
+ uint32_t reg_bank;
+ } qlt_dt_wiob2_t;
+
+ typedef struct qlt_dt_rpci {
+ qlt_dt_entry_hdr_t h;
+ uint32_t addr;
+ } qlt_dt_rpci_t;
+
+ typedef struct qlt_dt_wpci {
+ qlt_dt_entry_hdr_t h;
+ uint32_t addr;
+ uint32_t data;
+ } qlt_dt_wpci_t, qlt_dt_wrreg_t;
+
+ typedef struct qlt_dt_rram {
+ qlt_dt_entry_hdr_t h;
+ #ifdef _BIG_ENDIAN
+ uint8_t rsv[3];
+ uint8_t ram_area;
+ #else
+ uint8_t ram_area;
+ uint8_t rsv[3];
+ #endif
+ uint32_t start_addr;
+ uint32_t end_addr;
+ } qlt_dt_rram_t;
+
+ typedef struct qlt_dt_gque {
+ qlt_dt_entry_hdr_t h;
+ uint32_t num_queues;
+ #ifdef _BIG_ENDIAN
+ uint8_t rsv[3];
+ uint8_t queue_type;
+ #else
+ uint8_t queue_type;
+ uint8_t rsv[3];
+ #endif
+ } qlt_dt_gque_t, qlt_dt_gques_t;
+
+ typedef struct qlt_dt_gfce {
+ qlt_dt_entry_hdr_t h;
+ uint32_t fce_trace_size;
+ uint32_t write_pointer[2];
+ uint32_t base_pointer[2];
+ uint32_t fce_enable_mb0;
+ uint32_t fce_enable_mb2;
+ uint32_t fce_enable_mb3;
+ uint32_t fce_enable_mb4;
+ uint32_t fce_enable_mb5;
+ uint32_t fce_enable_mb6;
+ } qlt_dt_gfce_t;
+
+ typedef struct qlt_dt_prisc {
+ qlt_dt_entry_hdr_t h;
+ } qlt_dt_prisc_t, qlt_dt_rrisc_t;
+
+ typedef struct qlt_dt_dint {
+ qlt_dt_entry_hdr_t h;
+ #ifdef _BIG_ENDIAN
+ uint8_t rsv[3];
+ uint8_t pci_offset;
+ #else
+ uint8_t pci_offset;
+ uint8_t rsv[3];
+ #endif
+ uint32_t data;
+ } qlt_dt_dint_t;
+
+ typedef struct qlt_dt_ghbd {
+ qlt_dt_entry_hdr_t h;
+ #ifdef _BIG_ENDIAN
+ uint8_t rsv[3];
+ uint8_t host_buf_type;
+ #else
+ uint8_t host_buf_type;
+ uint8_t rsv[3];
+ #endif
+ uint32_t buf_size;
+ uint32_t start_addr;
+ } qlt_dt_ghbd_t;
+
+ typedef struct qlt_dt_scra {
+ qlt_dt_entry_hdr_t h;
+ uint32_t scratch_size;
+ } qlt_dt_scra_t;
+
+ typedef struct qlt_dt_rrreg {
+ qlt_dt_entry_hdr_t h;
+ uint32_t addr;
+ uint32_t count;
+ } qlt_dt_rrreg_t, qlt_dt_rrram_t, qlt_dt_rpcic_t;
+
+ typedef struct qlt_dt_wdmp {
+ qlt_dt_entry_hdr_t h;
+ uint32_t length;
+ uint32_t data[1];
+ } qlt_dt_wdmp_t;
+
#ifdef __cplusplus
}
#endif
#endif /* _QLT_REGS_H */