1/* 2 * QLogic Fibre Channel HBA Driver 3 * Copyright (c) 2003-2005 QLogic Corporation 4 * 5 * See LICENSE.qla2xxx for copyright and licensing details. 6 */ 7#ifndef __QLA_GBL_H 8#define __QLA_GBL_H 9 10#include <linux/interrupt.h> 11 12/* 13 * Global Function Prototypes in qla_init.c source file. 14 */ 15extern int qla2x00_initialize_adapter(scsi_qla_host_t *); 16 17extern int qla2100_pci_config(struct scsi_qla_host *); 18extern int qla2300_pci_config(struct scsi_qla_host *); 19extern int qla24xx_pci_config(scsi_qla_host_t *); 20extern void qla2x00_reset_chip(struct scsi_qla_host *); 21extern void qla24xx_reset_chip(struct scsi_qla_host *); 22extern int qla2x00_chip_diag(struct scsi_qla_host *); 23extern int qla24xx_chip_diag(struct scsi_qla_host *); 24extern void qla2x00_config_rings(struct scsi_qla_host *); 25extern void qla24xx_config_rings(struct scsi_qla_host *); 26extern void qla2x00_reset_adapter(struct scsi_qla_host *); 27extern void qla24xx_reset_adapter(struct scsi_qla_host *); 28extern int qla2x00_nvram_config(struct scsi_qla_host *); 29extern int qla24xx_nvram_config(struct scsi_qla_host *); 30extern void qla2x00_update_fw_options(struct scsi_qla_host *); 31extern void qla24xx_update_fw_options(scsi_qla_host_t *); 32extern int qla2x00_load_risc(struct scsi_qla_host *, uint32_t *); 33extern int qla24xx_load_risc(scsi_qla_host_t *, uint32_t *); 34 35extern int qla2x00_loop_resync(scsi_qla_host_t *); 36 37extern int qla2x00_fabric_login(scsi_qla_host_t *, fc_port_t *, uint16_t *); 38extern int qla2x00_local_device_login(scsi_qla_host_t *, fc_port_t *); 39 40extern void qla2x00_restart_queues(scsi_qla_host_t *, uint8_t); 41 42extern void qla2x00_rescan_fcports(scsi_qla_host_t *); 43extern void qla2x00_update_fcports(scsi_qla_host_t *); 44 45extern int qla2x00_abort_isp(scsi_qla_host_t *); 46 47extern void qla2x00_update_fcport(scsi_qla_host_t *, fc_port_t *); 48 49extern void qla2x00_alloc_fw_dump(scsi_qla_host_t *); 50extern void qla2x00_try_to_stop_firmware(scsi_qla_host_t *); 51 52/* 53 * Global Data in qla_os.c source file. 54 */ 55extern char qla2x00_version_str[]; 56 57extern int ql2xlogintimeout; 58extern int qlport_down_retry; 59extern int ql2xplogiabsentdevice; 60extern int ql2xloginretrycount; 61extern int ql2xfdmienable; 62extern int ql2xallocfwdump; 63extern int ql2xextended_error_logging; 64extern int ql2xqfullrampup; 65 66extern void qla2x00_sp_compl(scsi_qla_host_t *, srb_t *); 67 68extern char *qla2x00_get_fw_version_str(struct scsi_qla_host *, char *); 69 70extern void qla2x00_mark_device_lost(scsi_qla_host_t *, fc_port_t *, int, int); 71extern void qla2x00_mark_all_devices_lost(scsi_qla_host_t *, int); 72 73extern int qla2x00_down_timeout(struct semaphore *, unsigned long); 74 75extern struct fw_blob *qla2x00_request_firmware(scsi_qla_host_t *); 76 77extern int qla2x00_wait_for_hba_online(scsi_qla_host_t *); 78 79extern void qla2xxx_wake_dpc(scsi_qla_host_t *); 80 81/* 82 * Global Function Prototypes in qla_iocb.c source file. 83 */ 84extern uint16_t qla2x00_calc_iocbs_32(uint16_t); 85extern uint16_t qla2x00_calc_iocbs_64(uint16_t); 86extern void qla2x00_build_scsi_iocbs_32(srb_t *, cmd_entry_t *, uint16_t); 87extern void qla2x00_build_scsi_iocbs_64(srb_t *, cmd_entry_t *, uint16_t); 88extern int qla2x00_start_scsi(srb_t *sp); 89extern int qla24xx_start_scsi(srb_t *sp); 90int qla2x00_marker(scsi_qla_host_t *, uint16_t, uint16_t, uint8_t); 91int __qla2x00_marker(scsi_qla_host_t *, uint16_t, uint16_t, uint8_t); 92 93/* 94 * Global Function Prototypes in qla_mbx.c source file. 95 */ 96extern int 97qla2x00_load_ram(scsi_qla_host_t *, dma_addr_t, uint32_t, uint32_t); 98 99extern int 100qla2x00_execute_fw(scsi_qla_host_t *, uint32_t); 101 102extern void 103qla2x00_get_fw_version(scsi_qla_host_t *, uint16_t *, 104 uint16_t *, uint16_t *, uint16_t *, uint32_t *); 105 106extern int 107qla2x00_get_fw_options(scsi_qla_host_t *, uint16_t *); 108 109extern int 110qla2x00_set_fw_options(scsi_qla_host_t *, uint16_t *); 111 112extern int 113qla2x00_mbx_reg_test(scsi_qla_host_t *); 114 115extern int 116qla2x00_verify_checksum(scsi_qla_host_t *, uint32_t); 117 118extern int 119qla2x00_issue_iocb(scsi_qla_host_t *, void *, dma_addr_t, size_t); 120 121extern int 122qla2x00_abort_command(scsi_qla_host_t *, srb_t *); 123 124#if USE_ABORT_TGT 125extern int 126qla2x00_abort_target(fc_port_t *); 127#endif 128 129extern int 130qla2x00_get_adapter_id(scsi_qla_host_t *, uint16_t *, uint8_t *, uint8_t *, 131 uint8_t *, uint16_t *); 132 133extern int 134qla2x00_get_retry_cnt(scsi_qla_host_t *, uint8_t *, uint8_t *, uint16_t *); 135 136extern int 137qla2x00_init_firmware(scsi_qla_host_t *, uint16_t); 138 139extern int 140qla2x00_get_port_database(scsi_qla_host_t *, fc_port_t *, uint8_t); 141 142extern int 143qla2x00_get_firmware_state(scsi_qla_host_t *, uint16_t *); 144 145extern int 146qla2x00_get_port_name(scsi_qla_host_t *, uint16_t, uint8_t *, uint8_t); 147 148extern int 149qla2x00_lip_reset(scsi_qla_host_t *); 150 151extern int 152qla2x00_send_sns(scsi_qla_host_t *, dma_addr_t, uint16_t, size_t); 153 154extern int 155qla2x00_login_fabric(scsi_qla_host_t *, uint16_t, uint8_t, uint8_t, uint8_t, 156 uint16_t *, uint8_t); 157extern int 158qla24xx_login_fabric(scsi_qla_host_t *, uint16_t, uint8_t, uint8_t, uint8_t, 159 uint16_t *, uint8_t); 160 161extern int 162qla2x00_login_local_device(scsi_qla_host_t *, fc_port_t *, uint16_t *, 163 uint8_t); 164 165extern int 166qla2x00_fabric_logout(scsi_qla_host_t *, uint16_t, uint8_t, uint8_t, uint8_t); 167 168extern int 169qla24xx_fabric_logout(scsi_qla_host_t *, uint16_t, uint8_t, uint8_t, uint8_t); 170 171extern int 172qla2x00_full_login_lip(scsi_qla_host_t *ha); 173 174extern int 175qla2x00_get_id_list(scsi_qla_host_t *, void *, dma_addr_t, uint16_t *); 176 177extern int 178qla2x00_get_resource_cnts(scsi_qla_host_t *, uint16_t *, uint16_t *, uint16_t *, 179 uint16_t *); 180 181extern int 182qla2x00_get_fcal_position_map(scsi_qla_host_t *ha, char *pos_map); 183 184extern int 185qla2x00_get_link_status(scsi_qla_host_t *, uint16_t, link_stat_t *, 186 uint16_t *); 187 188extern int 189qla24xx_get_isp_stats(scsi_qla_host_t *, uint32_t *, uint32_t, uint16_t *); 190 191extern int qla24xx_abort_command(scsi_qla_host_t *, srb_t *); 192extern int qla24xx_abort_target(fc_port_t *); 193 194extern int qla2x00_system_error(scsi_qla_host_t *); 195 196extern int 197qla2x00_get_serdes_params(scsi_qla_host_t *, uint16_t *, uint16_t *, 198 uint16_t *); 199 200extern int 201qla2x00_set_serdes_params(scsi_qla_host_t *, uint16_t, uint16_t, uint16_t); 202 203extern int 204qla2x00_stop_firmware(scsi_qla_host_t *); 205 206extern int 207qla2x00_trace_control(scsi_qla_host_t *, uint16_t, dma_addr_t, uint16_t); 208 209extern int 210qla2x00_read_sfp(scsi_qla_host_t *, dma_addr_t, uint16_t, uint16_t, uint16_t); 211 212extern int 213qla2x00_get_idma_speed(scsi_qla_host_t *, uint16_t, uint16_t *, uint16_t *); 214 215extern int 216qla2x00_set_idma_speed(scsi_qla_host_t *, uint16_t, uint16_t, uint16_t *); 217 218/* 219 * Global Function Prototypes in qla_isr.c source file. 220 */ 221extern irqreturn_t qla2100_intr_handler(int, void *); 222extern irqreturn_t qla2300_intr_handler(int, void *); 223extern irqreturn_t qla24xx_intr_handler(int, void *); 224extern void qla2x00_process_response_queue(struct scsi_qla_host *); 225extern void qla24xx_process_response_queue(struct scsi_qla_host *); 226 227extern int qla2x00_request_irqs(scsi_qla_host_t *); 228extern void qla2x00_free_irqs(scsi_qla_host_t *); 229 230/* 231 * Global Function Prototypes in qla_sup.c source file. 232 */ 233extern void qla2x00_lock_nvram_access(scsi_qla_host_t *); 234extern void qla2x00_unlock_nvram_access(scsi_qla_host_t *); 235extern void qla2x00_release_nvram_protection(scsi_qla_host_t *); 236extern uint16_t qla2x00_get_nvram_word(scsi_qla_host_t *, uint32_t); 237extern void qla2x00_write_nvram_word(scsi_qla_host_t *, uint32_t, uint16_t); 238extern uint32_t *qla24xx_read_flash_data(scsi_qla_host_t *, uint32_t *, 239 uint32_t, uint32_t); 240extern uint8_t *qla2x00_read_nvram_data(scsi_qla_host_t *, uint8_t *, uint32_t, 241 uint32_t); 242extern uint8_t *qla24xx_read_nvram_data(scsi_qla_host_t *, uint8_t *, uint32_t, 243 uint32_t); 244extern int qla2x00_write_nvram_data(scsi_qla_host_t *, uint8_t *, uint32_t, 245 uint32_t); 246extern int qla24xx_write_nvram_data(scsi_qla_host_t *, uint8_t *, uint32_t, 247 uint32_t); 248 249extern int qla2x00_beacon_on(struct scsi_qla_host *); 250extern int qla2x00_beacon_off(struct scsi_qla_host *); 251extern void qla2x00_beacon_blink(struct scsi_qla_host *); 252extern int qla24xx_beacon_on(struct scsi_qla_host *); 253extern int qla24xx_beacon_off(struct scsi_qla_host *); 254extern void qla24xx_beacon_blink(struct scsi_qla_host *); 255 256extern uint8_t *qla2x00_read_optrom_data(struct scsi_qla_host *, uint8_t *, 257 uint32_t, uint32_t); 258extern int qla2x00_write_optrom_data(struct scsi_qla_host *, uint8_t *, 259 uint32_t, uint32_t); 260extern uint8_t *qla24xx_read_optrom_data(struct scsi_qla_host *, uint8_t *, 261 uint32_t, uint32_t); 262extern int qla24xx_write_optrom_data(struct scsi_qla_host *, uint8_t *, 263 uint32_t, uint32_t); 264 265extern int qla2x00_get_flash_version(scsi_qla_host_t *, void *); 266extern int qla24xx_get_flash_version(scsi_qla_host_t *, void *); 267 268/* 269 * Global Function Prototypes in qla_dbg.c source file. 270 */ 271extern void qla2100_fw_dump(scsi_qla_host_t *, int); 272extern void qla2300_fw_dump(scsi_qla_host_t *, int); 273extern void qla24xx_fw_dump(scsi_qla_host_t *, int); 274extern void qla2x00_dump_regs(scsi_qla_host_t *); 275extern void qla2x00_dump_buffer(uint8_t *, uint32_t); 276extern void qla2x00_print_scsi_cmd(struct scsi_cmnd *); 277extern void qla2x00_dump_pkt(void *); 278 279/* 280 * Global Function Prototypes in qla_gs.c source file. 281 */ 282extern void *qla2x00_prep_ms_iocb(scsi_qla_host_t *, uint32_t, uint32_t); 283extern void *qla24xx_prep_ms_iocb(scsi_qla_host_t *, uint32_t, uint32_t); 284extern int qla2x00_ga_nxt(scsi_qla_host_t *, fc_port_t *); 285extern int qla2x00_gid_pt(scsi_qla_host_t *, sw_info_t *); 286extern int qla2x00_gpn_id(scsi_qla_host_t *, sw_info_t *); 287extern int qla2x00_gnn_id(scsi_qla_host_t *, sw_info_t *); 288extern int qla2x00_rft_id(scsi_qla_host_t *); 289extern int qla2x00_rff_id(scsi_qla_host_t *); 290extern int qla2x00_rnn_id(scsi_qla_host_t *); 291extern int qla2x00_rsnn_nn(scsi_qla_host_t *); 292extern void *qla2x00_prep_ms_fdmi_iocb(scsi_qla_host_t *, uint32_t, uint32_t); 293extern void *qla24xx_prep_ms_fdmi_iocb(scsi_qla_host_t *, uint32_t, uint32_t); 294extern int qla2x00_fdmi_register(scsi_qla_host_t *); 295extern int qla2x00_gfpn_id(scsi_qla_host_t *, sw_info_t *); 296extern int qla2x00_gpsc(scsi_qla_host_t *, sw_info_t *); 297extern void qla2x00_get_sym_node_name(scsi_qla_host_t *, uint8_t *); 298 299/* 300 * Global Function Prototypes in qla_attr.c source file. 301 */ 302struct class_device_attribute; 303extern struct class_device_attribute *qla2x00_host_attrs[]; 304struct fc_function_template; 305extern struct fc_function_template qla2xxx_transport_functions; 306extern void qla2x00_alloc_sysfs_attr(scsi_qla_host_t *); 307extern void qla2x00_free_sysfs_attr(scsi_qla_host_t *); 308extern void qla2x00_init_host_attr(scsi_qla_host_t *); 309extern void qla2x00_alloc_sysfs_attr(scsi_qla_host_t *); 310extern void qla2x00_free_sysfs_attr(scsi_qla_host_t *); 311#endif /* _QLA_GBL_H */ 312