162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0-only */ 262306a36Sopenharmony_ci/* 362306a36Sopenharmony_ci * QLogic Fibre Channel HBA Driver 462306a36Sopenharmony_ci * Copyright (c) 2003-2014 QLogic Corporation 562306a36Sopenharmony_ci */ 662306a36Sopenharmony_ci 762306a36Sopenharmony_ci#ifndef __QLA_DMP27_H__ 862306a36Sopenharmony_ci#define __QLA_DMP27_H__ 962306a36Sopenharmony_ci 1062306a36Sopenharmony_ci#define IOBASE_ADDR offsetof(struct device_reg_24xx, iobase_addr) 1162306a36Sopenharmony_ci 1262306a36Sopenharmony_cistruct __packed qla27xx_fwdt_template { 1362306a36Sopenharmony_ci __le32 template_type; 1462306a36Sopenharmony_ci __le32 entry_offset; 1562306a36Sopenharmony_ci __le32 template_size; 1662306a36Sopenharmony_ci uint32_t count; /* borrow field for running/residual count */ 1762306a36Sopenharmony_ci 1862306a36Sopenharmony_ci __le32 entry_count; 1962306a36Sopenharmony_ci uint32_t template_version; 2062306a36Sopenharmony_ci __le32 capture_timestamp; 2162306a36Sopenharmony_ci uint32_t template_checksum; 2262306a36Sopenharmony_ci 2362306a36Sopenharmony_ci uint32_t reserved_2; 2462306a36Sopenharmony_ci __le32 driver_info[3]; 2562306a36Sopenharmony_ci 2662306a36Sopenharmony_ci uint32_t saved_state[16]; 2762306a36Sopenharmony_ci 2862306a36Sopenharmony_ci uint32_t reserved_3[8]; 2962306a36Sopenharmony_ci __le32 firmware_version[5]; 3062306a36Sopenharmony_ci}; 3162306a36Sopenharmony_ci 3262306a36Sopenharmony_ci#define TEMPLATE_TYPE_FWDUMP 99 3362306a36Sopenharmony_ci 3462306a36Sopenharmony_ci#define ENTRY_TYPE_NOP 0 3562306a36Sopenharmony_ci#define ENTRY_TYPE_TMP_END 255 3662306a36Sopenharmony_ci#define ENTRY_TYPE_RD_IOB_T1 256 3762306a36Sopenharmony_ci#define ENTRY_TYPE_WR_IOB_T1 257 3862306a36Sopenharmony_ci#define ENTRY_TYPE_RD_IOB_T2 258 3962306a36Sopenharmony_ci#define ENTRY_TYPE_WR_IOB_T2 259 4062306a36Sopenharmony_ci#define ENTRY_TYPE_RD_PCI 260 4162306a36Sopenharmony_ci#define ENTRY_TYPE_WR_PCI 261 4262306a36Sopenharmony_ci#define ENTRY_TYPE_RD_RAM 262 4362306a36Sopenharmony_ci#define ENTRY_TYPE_GET_QUEUE 263 4462306a36Sopenharmony_ci#define ENTRY_TYPE_GET_FCE 264 4562306a36Sopenharmony_ci#define ENTRY_TYPE_PSE_RISC 265 4662306a36Sopenharmony_ci#define ENTRY_TYPE_RST_RISC 266 4762306a36Sopenharmony_ci#define ENTRY_TYPE_DIS_INTR 267 4862306a36Sopenharmony_ci#define ENTRY_TYPE_GET_HBUF 268 4962306a36Sopenharmony_ci#define ENTRY_TYPE_SCRATCH 269 5062306a36Sopenharmony_ci#define ENTRY_TYPE_RDREMREG 270 5162306a36Sopenharmony_ci#define ENTRY_TYPE_WRREMREG 271 5262306a36Sopenharmony_ci#define ENTRY_TYPE_RDREMRAM 272 5362306a36Sopenharmony_ci#define ENTRY_TYPE_PCICFG 273 5462306a36Sopenharmony_ci#define ENTRY_TYPE_GET_SHADOW 274 5562306a36Sopenharmony_ci#define ENTRY_TYPE_WRITE_BUF 275 5662306a36Sopenharmony_ci#define ENTRY_TYPE_CONDITIONAL 276 5762306a36Sopenharmony_ci#define ENTRY_TYPE_RDPEPREG 277 5862306a36Sopenharmony_ci#define ENTRY_TYPE_WRPEPREG 278 5962306a36Sopenharmony_ci 6062306a36Sopenharmony_ci#define CAPTURE_FLAG_PHYS_ONLY BIT_0 6162306a36Sopenharmony_ci#define CAPTURE_FLAG_PHYS_VIRT BIT_1 6262306a36Sopenharmony_ci 6362306a36Sopenharmony_ci#define DRIVER_FLAG_SKIP_ENTRY BIT_7 6462306a36Sopenharmony_ci 6562306a36Sopenharmony_cistruct __packed qla27xx_fwdt_entry { 6662306a36Sopenharmony_ci struct __packed { 6762306a36Sopenharmony_ci __le32 type; 6862306a36Sopenharmony_ci __le32 size; 6962306a36Sopenharmony_ci uint32_t reserved_1; 7062306a36Sopenharmony_ci 7162306a36Sopenharmony_ci uint8_t capture_flags; 7262306a36Sopenharmony_ci uint8_t reserved_2[2]; 7362306a36Sopenharmony_ci uint8_t driver_flags; 7462306a36Sopenharmony_ci } hdr; 7562306a36Sopenharmony_ci union __packed { 7662306a36Sopenharmony_ci struct __packed { 7762306a36Sopenharmony_ci } t0; 7862306a36Sopenharmony_ci 7962306a36Sopenharmony_ci struct __packed { 8062306a36Sopenharmony_ci } t255; 8162306a36Sopenharmony_ci 8262306a36Sopenharmony_ci struct __packed { 8362306a36Sopenharmony_ci __le32 base_addr; 8462306a36Sopenharmony_ci uint8_t reg_width; 8562306a36Sopenharmony_ci __le16 reg_count; 8662306a36Sopenharmony_ci uint8_t pci_offset; 8762306a36Sopenharmony_ci } t256; 8862306a36Sopenharmony_ci 8962306a36Sopenharmony_ci struct __packed { 9062306a36Sopenharmony_ci __le32 base_addr; 9162306a36Sopenharmony_ci __le32 write_data; 9262306a36Sopenharmony_ci uint8_t pci_offset; 9362306a36Sopenharmony_ci uint8_t reserved[3]; 9462306a36Sopenharmony_ci } t257; 9562306a36Sopenharmony_ci 9662306a36Sopenharmony_ci struct __packed { 9762306a36Sopenharmony_ci __le32 base_addr; 9862306a36Sopenharmony_ci uint8_t reg_width; 9962306a36Sopenharmony_ci __le16 reg_count; 10062306a36Sopenharmony_ci uint8_t pci_offset; 10162306a36Sopenharmony_ci uint8_t banksel_offset; 10262306a36Sopenharmony_ci uint8_t reserved[3]; 10362306a36Sopenharmony_ci __le32 bank; 10462306a36Sopenharmony_ci } t258; 10562306a36Sopenharmony_ci 10662306a36Sopenharmony_ci struct __packed { 10762306a36Sopenharmony_ci __le32 base_addr; 10862306a36Sopenharmony_ci __le32 write_data; 10962306a36Sopenharmony_ci uint8_t reserved[2]; 11062306a36Sopenharmony_ci uint8_t pci_offset; 11162306a36Sopenharmony_ci uint8_t banksel_offset; 11262306a36Sopenharmony_ci __le32 bank; 11362306a36Sopenharmony_ci } t259; 11462306a36Sopenharmony_ci 11562306a36Sopenharmony_ci struct __packed { 11662306a36Sopenharmony_ci uint8_t pci_offset; 11762306a36Sopenharmony_ci uint8_t reserved[3]; 11862306a36Sopenharmony_ci } t260; 11962306a36Sopenharmony_ci 12062306a36Sopenharmony_ci struct __packed { 12162306a36Sopenharmony_ci uint8_t pci_offset; 12262306a36Sopenharmony_ci uint8_t reserved[3]; 12362306a36Sopenharmony_ci __le32 write_data; 12462306a36Sopenharmony_ci } t261; 12562306a36Sopenharmony_ci 12662306a36Sopenharmony_ci struct __packed { 12762306a36Sopenharmony_ci uint8_t ram_area; 12862306a36Sopenharmony_ci uint8_t reserved[3]; 12962306a36Sopenharmony_ci __le32 start_addr; 13062306a36Sopenharmony_ci __le32 end_addr; 13162306a36Sopenharmony_ci } t262; 13262306a36Sopenharmony_ci 13362306a36Sopenharmony_ci struct __packed { 13462306a36Sopenharmony_ci uint32_t num_queues; 13562306a36Sopenharmony_ci uint8_t queue_type; 13662306a36Sopenharmony_ci uint8_t reserved[3]; 13762306a36Sopenharmony_ci } t263; 13862306a36Sopenharmony_ci 13962306a36Sopenharmony_ci struct __packed { 14062306a36Sopenharmony_ci uint32_t fce_trace_size; 14162306a36Sopenharmony_ci uint64_t write_pointer; 14262306a36Sopenharmony_ci uint64_t base_pointer; 14362306a36Sopenharmony_ci uint32_t fce_enable_mb0; 14462306a36Sopenharmony_ci uint32_t fce_enable_mb2; 14562306a36Sopenharmony_ci uint32_t fce_enable_mb3; 14662306a36Sopenharmony_ci uint32_t fce_enable_mb4; 14762306a36Sopenharmony_ci uint32_t fce_enable_mb5; 14862306a36Sopenharmony_ci uint32_t fce_enable_mb6; 14962306a36Sopenharmony_ci } t264; 15062306a36Sopenharmony_ci 15162306a36Sopenharmony_ci struct __packed { 15262306a36Sopenharmony_ci } t265; 15362306a36Sopenharmony_ci 15462306a36Sopenharmony_ci struct __packed { 15562306a36Sopenharmony_ci } t266; 15662306a36Sopenharmony_ci 15762306a36Sopenharmony_ci struct __packed { 15862306a36Sopenharmony_ci uint8_t pci_offset; 15962306a36Sopenharmony_ci uint8_t reserved[3]; 16062306a36Sopenharmony_ci __le32 data; 16162306a36Sopenharmony_ci } t267; 16262306a36Sopenharmony_ci 16362306a36Sopenharmony_ci struct __packed { 16462306a36Sopenharmony_ci uint8_t buf_type; 16562306a36Sopenharmony_ci uint8_t reserved[3]; 16662306a36Sopenharmony_ci uint32_t buf_size; 16762306a36Sopenharmony_ci uint64_t start_addr; 16862306a36Sopenharmony_ci } t268; 16962306a36Sopenharmony_ci 17062306a36Sopenharmony_ci struct __packed { 17162306a36Sopenharmony_ci uint32_t scratch_size; 17262306a36Sopenharmony_ci } t269; 17362306a36Sopenharmony_ci 17462306a36Sopenharmony_ci struct __packed { 17562306a36Sopenharmony_ci __le32 addr; 17662306a36Sopenharmony_ci __le32 count; 17762306a36Sopenharmony_ci } t270; 17862306a36Sopenharmony_ci 17962306a36Sopenharmony_ci struct __packed { 18062306a36Sopenharmony_ci __le32 addr; 18162306a36Sopenharmony_ci __le32 data; 18262306a36Sopenharmony_ci } t271; 18362306a36Sopenharmony_ci 18462306a36Sopenharmony_ci struct __packed { 18562306a36Sopenharmony_ci __le32 addr; 18662306a36Sopenharmony_ci __le32 count; 18762306a36Sopenharmony_ci } t272; 18862306a36Sopenharmony_ci 18962306a36Sopenharmony_ci struct __packed { 19062306a36Sopenharmony_ci __le32 addr; 19162306a36Sopenharmony_ci __le32 count; 19262306a36Sopenharmony_ci } t273; 19362306a36Sopenharmony_ci 19462306a36Sopenharmony_ci struct __packed { 19562306a36Sopenharmony_ci uint32_t num_queues; 19662306a36Sopenharmony_ci uint8_t queue_type; 19762306a36Sopenharmony_ci uint8_t reserved[3]; 19862306a36Sopenharmony_ci } t274; 19962306a36Sopenharmony_ci 20062306a36Sopenharmony_ci struct __packed { 20162306a36Sopenharmony_ci __le32 length; 20262306a36Sopenharmony_ci uint8_t buffer[]; 20362306a36Sopenharmony_ci } t275; 20462306a36Sopenharmony_ci 20562306a36Sopenharmony_ci struct __packed { 20662306a36Sopenharmony_ci __le32 cond1; 20762306a36Sopenharmony_ci __le32 cond2; 20862306a36Sopenharmony_ci } t276; 20962306a36Sopenharmony_ci 21062306a36Sopenharmony_ci struct __packed { 21162306a36Sopenharmony_ci __le32 cmd_addr; 21262306a36Sopenharmony_ci __le32 wr_cmd_data; 21362306a36Sopenharmony_ci __le32 data_addr; 21462306a36Sopenharmony_ci } t277; 21562306a36Sopenharmony_ci 21662306a36Sopenharmony_ci struct __packed { 21762306a36Sopenharmony_ci __le32 cmd_addr; 21862306a36Sopenharmony_ci __le32 wr_cmd_data; 21962306a36Sopenharmony_ci __le32 data_addr; 22062306a36Sopenharmony_ci __le32 wr_data; 22162306a36Sopenharmony_ci } t278; 22262306a36Sopenharmony_ci }; 22362306a36Sopenharmony_ci}; 22462306a36Sopenharmony_ci 22562306a36Sopenharmony_ci#define T262_RAM_AREA_CRITICAL_RAM 1 22662306a36Sopenharmony_ci#define T262_RAM_AREA_EXTERNAL_RAM 2 22762306a36Sopenharmony_ci#define T262_RAM_AREA_SHARED_RAM 3 22862306a36Sopenharmony_ci#define T262_RAM_AREA_DDR_RAM 4 22962306a36Sopenharmony_ci#define T262_RAM_AREA_MISC 5 23062306a36Sopenharmony_ci 23162306a36Sopenharmony_ci#define T263_QUEUE_TYPE_REQ 1 23262306a36Sopenharmony_ci#define T263_QUEUE_TYPE_RSP 2 23362306a36Sopenharmony_ci#define T263_QUEUE_TYPE_ATIO 3 23462306a36Sopenharmony_ci 23562306a36Sopenharmony_ci#define T268_BUF_TYPE_EXTD_TRACE 1 23662306a36Sopenharmony_ci#define T268_BUF_TYPE_EXCH_BUFOFF 2 23762306a36Sopenharmony_ci#define T268_BUF_TYPE_EXTD_LOGIN 3 23862306a36Sopenharmony_ci#define T268_BUF_TYPE_REQ_MIRROR 4 23962306a36Sopenharmony_ci#define T268_BUF_TYPE_RSP_MIRROR 5 24062306a36Sopenharmony_ci 24162306a36Sopenharmony_ci#define T274_QUEUE_TYPE_REQ_SHAD 1 24262306a36Sopenharmony_ci#define T274_QUEUE_TYPE_RSP_SHAD 2 24362306a36Sopenharmony_ci#define T274_QUEUE_TYPE_ATIO_SHAD 3 24462306a36Sopenharmony_ci 24562306a36Sopenharmony_ci#endif 246