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 */