#include <linux/delay.h>
#include <linux/io.h>
#include <linux/pci.h>
#include <linux/ratelimit.h>
#include "ql4_def.h"
#include "ql4_glbl.h"
#include "ql4_inline.h"
#include <linux/io-64-nonatomic-lo-hi.h>
#define TIMEOUT_100_MS …
#define MASK(n) …
#define MN_WIN(addr) …
#define OCM_WIN(addr) …
#define MS_WIN(addr) …
#define QLA82XX_PCI_MN_2M …
#define QLA82XX_PCI_MS_2M …
#define QLA82XX_PCI_OCM0_2M …
#define VALID_OCM_ADDR(addr) …
#define GET_MEM_OFFS_2M(addr) …
#define CRB_BLK(off) …
#define CRB_SUBBLK(off) …
#define CRB_WINDOW_2M …
#define CRB_HI(off) …
#define QLA82XX_PCI_CAMQM_2M_END …
#define QLA82XX_PCI_CAMQM_2M_BASE …
#define CRB_INDIRECT_2M …
static inline void __iomem *
qla4_8xxx_pci_base_offsetfset(struct scsi_qla_host *ha, unsigned long off)
{ … }
static const int MD_MIU_TEST_AGT_RDDATA[] = …;
#define MAX_CRB_XFORM …
static unsigned long crb_addr_xform[MAX_CRB_XFORM];
static int qla4_8xxx_crb_table_initialized;
#define qla4_8xxx_crb_addr_transform(name) …
static void
qla4_82xx_crb_addr_transform_setup(void)
{ … }
static struct crb_128M_2M_block_map crb_128M_2M_map[64] = …;
static unsigned qla4_82xx_crb_hub_agt[64] = …;
static char *qdev_state[] = …;
static void
qla4_82xx_pci_set_crbwindow_2M(struct scsi_qla_host *ha, ulong *off)
{ … }
#define CRB_WIN_LOCK_TIMEOUT …
static int qla4_82xx_crb_win_lock(struct scsi_qla_host *ha)
{ … }
void qla4_82xx_crb_win_unlock(struct scsi_qla_host *ha)
{ … }
void
qla4_82xx_wr_32(struct scsi_qla_host *ha, ulong off, u32 data)
{ … }
uint32_t qla4_82xx_rd_32(struct scsi_qla_host *ha, ulong off)
{ … }
int qla4_82xx_md_rd_32(struct scsi_qla_host *ha, uint32_t off, uint32_t *data)
{ … }
int qla4_82xx_md_wr_32(struct scsi_qla_host *ha, uint32_t off, uint32_t data)
{ … }
#define IDC_LOCK_TIMEOUT …
int qla4_82xx_idc_lock(struct scsi_qla_host *ha)
{ … }
void qla4_82xx_idc_unlock(struct scsi_qla_host *ha)
{ … }
int
qla4_82xx_pci_get_crb_addr_2M(struct scsi_qla_host *ha, ulong *off)
{ … }
static unsigned long
qla4_82xx_pci_mem_bound_check(struct scsi_qla_host *ha,
unsigned long long addr, int size)
{ … }
static int qla4_82xx_pci_set_window_warning_count;
static unsigned long
qla4_82xx_pci_set_window(struct scsi_qla_host *ha, unsigned long long addr)
{ … }
static int qla4_82xx_pci_is_same_window(struct scsi_qla_host *ha,
unsigned long long addr)
{ … }
static int qla4_82xx_pci_mem_read_direct(struct scsi_qla_host *ha,
u64 off, void *data, int size)
{ … }
static int
qla4_82xx_pci_mem_write_direct(struct scsi_qla_host *ha, u64 off,
void *data, int size)
{ … }
#define MTU_FUDGE_FACTOR …
static unsigned long
qla4_82xx_decode_crb_addr(unsigned long addr)
{ … }
static long rom_max_timeout = …;
static long qla4_82xx_rom_lock_timeout = …;
static int
qla4_82xx_rom_lock(struct scsi_qla_host *ha)
{ … }
static void
qla4_82xx_rom_unlock(struct scsi_qla_host *ha)
{ … }
static int
qla4_82xx_wait_rom_done(struct scsi_qla_host *ha)
{ … }
static int
qla4_82xx_do_rom_fast_read(struct scsi_qla_host *ha, int addr, int *valp)
{ … }
static int
qla4_82xx_rom_fast_read(struct scsi_qla_host *ha, int addr, int *valp)
{ … }
static int
qla4_82xx_pinit_from_rom(struct scsi_qla_host *ha, int verbose)
{ … }
int qla4_8xxx_ms_mem_write_128b(struct scsi_qla_host *ha, uint64_t addr,
uint32_t *data, uint32_t count)
{ … }
static int
qla4_82xx_load_from_flash(struct scsi_qla_host *ha, uint32_t image_start)
{ … }
static int qla4_82xx_load_fw(struct scsi_qla_host *ha, uint32_t image_start)
{ … }
int
qla4_82xx_pci_mem_read_2M(struct scsi_qla_host *ha,
u64 off, void *data, int size)
{ … }
int
qla4_82xx_pci_mem_write_2M(struct scsi_qla_host *ha,
u64 off, void *data, int size)
{ … }
static int qla4_82xx_cmdpeg_ready(struct scsi_qla_host *ha, int pegtune_val)
{ … }
static int qla4_82xx_rcvpeg_ready(struct scsi_qla_host *ha)
{ … }
void
qla4_8xxx_set_drv_active(struct scsi_qla_host *ha)
{ … }
void
qla4_8xxx_clear_drv_active(struct scsi_qla_host *ha)
{ … }
inline int qla4_8xxx_need_reset(struct scsi_qla_host *ha)
{ … }
void qla4_8xxx_set_rst_ready(struct scsi_qla_host *ha)
{ … }
void qla4_8xxx_clear_rst_ready(struct scsi_qla_host *ha)
{ … }
static inline void
qla4_8xxx_set_qsnt_ready(struct scsi_qla_host *ha)
{ … }
static int
qla4_82xx_start_firmware(struct scsi_qla_host *ha, uint32_t image_start)
{ … }
int qla4_82xx_try_start_fw(struct scsi_qla_host *ha)
{ … }
void qla4_82xx_rom_lock_recovery(struct scsi_qla_host *ha)
{ … }
static uint32_t ql4_84xx_poll_wait_for_ready(struct scsi_qla_host *ha,
uint32_t addr1, uint32_t mask)
{ … }
static uint32_t ql4_84xx_ipmdio_rd_reg(struct scsi_qla_host *ha, uint32_t addr1,
uint32_t addr3, uint32_t mask, uint32_t addr,
uint32_t *data_ptr)
{ … }
static uint32_t ql4_84xx_poll_wait_ipmdio_bus_idle(struct scsi_qla_host *ha,
uint32_t addr1,
uint32_t addr2,
uint32_t addr3,
uint32_t mask)
{ … }
static int ql4_84xx_ipmdio_wr_reg(struct scsi_qla_host *ha,
uint32_t addr1, uint32_t addr3,
uint32_t mask, uint32_t addr,
uint32_t value)
{ … }
static void qla4_8xxx_minidump_process_rdcrb(struct scsi_qla_host *ha,
struct qla8xxx_minidump_entry_hdr *entry_hdr,
uint32_t **d_ptr)
{ … }
static int qla4_83xx_check_dma_engine_state(struct scsi_qla_host *ha)
{ … }
static int qla4_83xx_start_pex_dma(struct scsi_qla_host *ha,
struct qla4_83xx_minidump_entry_rdmem_pex_dma *m_hdr)
{ … }
static int qla4_8xxx_minidump_pex_dma_read(struct scsi_qla_host *ha,
struct qla8xxx_minidump_entry_hdr *entry_hdr,
uint32_t **d_ptr)
{ … }
static int qla4_8xxx_minidump_process_l2tag(struct scsi_qla_host *ha,
struct qla8xxx_minidump_entry_hdr *entry_hdr,
uint32_t **d_ptr)
{ … }
static int qla4_8xxx_minidump_process_control(struct scsi_qla_host *ha,
struct qla8xxx_minidump_entry_hdr *entry_hdr)
{ … }
static void qla4_8xxx_minidump_process_rdocm(struct scsi_qla_host *ha,
struct qla8xxx_minidump_entry_hdr *entry_hdr,
uint32_t **d_ptr)
{ … }
static void qla4_8xxx_minidump_process_rdmux(struct scsi_qla_host *ha,
struct qla8xxx_minidump_entry_hdr *entry_hdr,
uint32_t **d_ptr)
{ … }
static void qla4_8xxx_minidump_process_l1cache(struct scsi_qla_host *ha,
struct qla8xxx_minidump_entry_hdr *entry_hdr,
uint32_t **d_ptr)
{ … }
static void qla4_8xxx_minidump_process_queue(struct scsi_qla_host *ha,
struct qla8xxx_minidump_entry_hdr *entry_hdr,
uint32_t **d_ptr)
{ … }
#define MD_DIRECT_ROM_WINDOW …
#define MD_DIRECT_ROM_READ_BASE …
static void qla4_82xx_minidump_process_rdrom(struct scsi_qla_host *ha,
struct qla8xxx_minidump_entry_hdr *entry_hdr,
uint32_t **d_ptr)
{ … }
#define MD_MIU_TEST_AGT_CTRL …
#define MD_MIU_TEST_AGT_ADDR_LO …
#define MD_MIU_TEST_AGT_ADDR_HI …
static int __qla4_8xxx_minidump_process_rdmem(struct scsi_qla_host *ha,
struct qla8xxx_minidump_entry_hdr *entry_hdr,
uint32_t **d_ptr)
{ … }
static int qla4_8xxx_minidump_process_rdmem(struct scsi_qla_host *ha,
struct qla8xxx_minidump_entry_hdr *entry_hdr,
uint32_t **d_ptr)
{ … }
static void qla4_8xxx_mark_entry_skipped(struct scsi_qla_host *ha,
struct qla8xxx_minidump_entry_hdr *entry_hdr,
int index)
{ … }
static uint32_t qla83xx_minidump_process_pollrd(struct scsi_qla_host *ha,
struct qla8xxx_minidump_entry_hdr *entry_hdr,
uint32_t **d_ptr)
{ … }
static uint32_t qla4_84xx_minidump_process_rddfe(struct scsi_qla_host *ha,
struct qla8xxx_minidump_entry_hdr *entry_hdr,
uint32_t **d_ptr)
{ … }
static uint32_t qla4_84xx_minidump_process_rdmdio(struct scsi_qla_host *ha,
struct qla8xxx_minidump_entry_hdr *entry_hdr,
uint32_t **d_ptr)
{ … }
static uint32_t qla4_84xx_minidump_process_pollwr(struct scsi_qla_host *ha,
struct qla8xxx_minidump_entry_hdr *entry_hdr,
uint32_t **d_ptr)
{ … }
static void qla83xx_minidump_process_rdmux2(struct scsi_qla_host *ha,
struct qla8xxx_minidump_entry_hdr *entry_hdr,
uint32_t **d_ptr)
{ … }
static uint32_t qla83xx_minidump_process_pollrdmwr(struct scsi_qla_host *ha,
struct qla8xxx_minidump_entry_hdr *entry_hdr,
uint32_t **d_ptr)
{ … }
static uint32_t qla4_83xx_minidump_process_rdrom(struct scsi_qla_host *ha,
struct qla8xxx_minidump_entry_hdr *entry_hdr,
uint32_t **d_ptr)
{ … }
static int qla4_8xxx_collect_md_data(struct scsi_qla_host *ha)
{ … }
static void qla4_8xxx_uevent_emit(struct scsi_qla_host *ha, u32 code)
{ … }
void qla4_8xxx_get_minidump(struct scsi_qla_host *ha)
{ … }
int qla4_8xxx_device_bootstrap(struct scsi_qla_host *ha)
{ … }
static void
qla4_82xx_need_reset_handler(struct scsi_qla_host *ha)
{ … }
void
qla4_8xxx_need_qsnt_handler(struct scsi_qla_host *ha)
{ … }
static void qla4_82xx_set_idc_ver(struct scsi_qla_host *ha)
{ … }
static int qla4_83xx_set_idc_ver(struct scsi_qla_host *ha)
{ … }
int qla4_8xxx_update_idc_reg(struct scsi_qla_host *ha)
{ … }
int qla4_8xxx_device_state_handler(struct scsi_qla_host *ha)
{ … }
int qla4_8xxx_load_risc(struct scsi_qla_host *ha)
{ … }
#define OPTROM_BURST_SIZE …
#define OPTROM_BURST_DWORDS …
#define FARX_DATA_FLAG …
#define FARX_ACCESS_FLASH_CONF …
#define FARX_ACCESS_FLASH_DATA …
static inline uint32_t
flash_conf_addr(struct ql82xx_hw_data *hw, uint32_t faddr)
{ … }
static uint32_t *
qla4_82xx_read_flash_data(struct scsi_qla_host *ha, uint32_t *dwptr,
uint32_t faddr, uint32_t length)
{ … }
static uint8_t *
qla4_82xx_read_optrom_data(struct scsi_qla_host *ha, uint8_t *buf,
uint32_t offset, uint32_t length)
{ … }
static int
qla4_8xxx_find_flt_start(struct scsi_qla_host *ha, uint32_t *start)
{ … }
static void
qla4_8xxx_get_flt_info(struct scsi_qla_host *ha, uint32_t flt_addr)
{ … }
static void
qla4_82xx_get_fdt_info(struct scsi_qla_host *ha)
{ … }
static void
qla4_82xx_get_idc_param(struct scsi_qla_host *ha)
{ … }
void qla4_82xx_queue_mbox_cmd(struct scsi_qla_host *ha, uint32_t *mbx_cmd,
int in_count)
{ … }
void qla4_82xx_process_mbox_intr(struct scsi_qla_host *ha, int out_count)
{ … }
int
qla4_8xxx_get_flash_info(struct scsi_qla_host *ha)
{ … }
int
qla4_8xxx_stop_firmware(struct scsi_qla_host *ha)
{ … }
int
qla4_82xx_isp_reset(struct scsi_qla_host *ha)
{ … }
int qla4_8xxx_get_sys_info(struct scsi_qla_host *ha)
{ … }
int qla4_8xxx_intr_enable(struct scsi_qla_host *ha)
{ … }
int qla4_8xxx_intr_disable(struct scsi_qla_host *ha)
{ … }
void
qla4_82xx_enable_intrs(struct scsi_qla_host *ha)
{ … }
void
qla4_82xx_disable_intrs(struct scsi_qla_host *ha)
{ … }
int
qla4_8xxx_enable_msix(struct scsi_qla_host *ha)
{ … }
int qla4_8xxx_check_init_adapter_retry(struct scsi_qla_host *ha)
{ … }