Lines Matching refs:a
141 #define esas2r_read_register_dword(a, reg) \ argument
142 readl((void __iomem *)a->regs + (reg) + MW_REG_OFFSET_HWREG)
144 #define esas2r_write_register_dword(a, reg, data) \ argument
145 writel(data, (void __iomem *)(a->regs + (reg) + MW_REG_OFFSET_HWREG))
147 #define esas2r_flush_register_dword(a, r) esas2r_read_register_dword(a, r) argument
153 #define esas2r_read_data_byte(a, reg) \ argument
154 readb((void __iomem *)a->data_window + (reg))
405 typedef void (*RQCALLBK) (struct esas2r_adapter *a,
407 typedef bool (*RQBUILDSGL) (struct esas2r_adapter *a,
776 struct esas2r_adapter *a; member
967 int esas2r_write_params(struct esas2r_adapter *a, struct esas2r_request *rq,
971 u8 handle_hba_ioctl(struct esas2r_adapter *a,
988 int esas2r_read_fw(struct esas2r_adapter *a, char *buf, long off, int count);
989 int esas2r_write_fw(struct esas2r_adapter *a, const char *buf, long off,
991 int esas2r_read_vda(struct esas2r_adapter *a, char *buf, long off, int count);
992 int esas2r_write_vda(struct esas2r_adapter *a, const char *buf, long off,
994 int esas2r_read_fs(struct esas2r_adapter *a, char *buf, long off, int count);
995 int esas2r_write_fs(struct esas2r_adapter *a, const char *buf, long off,
1000 void esas2r_kickoff_timer(struct esas2r_adapter *a);
1003 void esas2r_fw_event_off(struct esas2r_adapter *a);
1004 void esas2r_fw_event_on(struct esas2r_adapter *a);
1005 bool esas2r_nvram_write(struct esas2r_adapter *a, struct esas2r_request *rq,
1007 void esas2r_nvram_get_defaults(struct esas2r_adapter *a,
1009 void esas2r_complete_request_cb(struct esas2r_adapter *a,
1011 void esas2r_reset_detected(struct esas2r_adapter *a);
1016 void esas2r_free_request(struct esas2r_adapter *a, struct esas2r_request *rq);
1017 struct esas2r_request *esas2r_alloc_request(struct esas2r_adapter *a);
1018 u32 esas2r_get_uncached_size(struct esas2r_adapter *a);
1019 bool esas2r_init_adapter_struct(struct esas2r_adapter *a,
1021 bool esas2r_check_adapter(struct esas2r_adapter *a);
1022 bool esas2r_init_adapter_hw(struct esas2r_adapter *a, bool init_poll);
1023 void esas2r_start_request(struct esas2r_adapter *a, struct esas2r_request *rq);
1024 bool esas2r_send_task_mgmt(struct esas2r_adapter *a,
1026 void esas2r_do_tasklet_tasks(struct esas2r_adapter *a);
1027 void esas2r_adapter_interrupt(struct esas2r_adapter *a);
1028 void esas2r_do_deferred_processes(struct esas2r_adapter *a);
1029 void esas2r_reset_bus(struct esas2r_adapter *a);
1030 void esas2r_reset_adapter(struct esas2r_adapter *a);
1031 void esas2r_timer_tick(struct esas2r_adapter *a);
1032 const char *esas2r_get_model_name(struct esas2r_adapter *a);
1033 const char *esas2r_get_model_name_short(struct esas2r_adapter *a);
1034 u32 esas2r_stall_execution(struct esas2r_adapter *a, u32 start_time,
1036 void esas2r_build_flash_req(struct esas2r_adapter *a,
1042 void esas2r_build_mgt_req(struct esas2r_adapter *a,
1049 void esas2r_build_ae_req(struct esas2r_adapter *a, struct esas2r_request *rq);
1050 void esas2r_build_cli_req(struct esas2r_adapter *a,
1054 void esas2r_build_ioctl_req(struct esas2r_adapter *a,
1058 void esas2r_build_cfg_req(struct esas2r_adapter *a,
1063 void esas2r_power_down(struct esas2r_adapter *a);
1064 bool esas2r_power_up(struct esas2r_adapter *a, bool init_poll);
1065 void esas2r_wait_request(struct esas2r_adapter *a, struct esas2r_request *rq);
1066 u32 esas2r_map_data_window(struct esas2r_adapter *a, u32 addr_lo);
1067 bool esas2r_process_fs_ioctl(struct esas2r_adapter *a,
1071 bool esas2r_read_flash_block(struct esas2r_adapter *a, void *to, u32 from,
1073 bool esas2r_read_mem_block(struct esas2r_adapter *a, void *to, u32 from,
1075 bool esas2r_fm_api(struct esas2r_adapter *a, struct esas2r_flash_img *fi,
1077 void esas2r_force_interrupt(struct esas2r_adapter *a);
1078 void esas2r_local_start_request(struct esas2r_adapter *a,
1080 void esas2r_process_adapter_reset(struct esas2r_adapter *a);
1081 void esas2r_complete_request(struct esas2r_adapter *a,
1083 void esas2r_dummy_complete(struct esas2r_adapter *a,
1085 void esas2r_ae_complete(struct esas2r_adapter *a, struct esas2r_request *rq);
1086 void esas2r_start_vda_request(struct esas2r_adapter *a,
1088 bool esas2r_read_flash_rev(struct esas2r_adapter *a);
1089 bool esas2r_read_image_type(struct esas2r_adapter *a);
1090 bool esas2r_nvram_read_direct(struct esas2r_adapter *a);
1091 bool esas2r_nvram_validate(struct esas2r_adapter *a);
1092 void esas2r_nvram_set_defaults(struct esas2r_adapter *a);
1093 bool esas2r_print_flash_rev(struct esas2r_adapter *a);
1094 void esas2r_send_reset_ae(struct esas2r_adapter *a, bool pwr_mgt);
1095 bool esas2r_init_msgs(struct esas2r_adapter *a);
1096 bool esas2r_is_adapter_present(struct esas2r_adapter *a);
1100 void esas2r_reset_chip(struct esas2r_adapter *a);
1101 void esas2r_log_request_failure(struct esas2r_adapter *a,
1103 void esas2r_polled_interrupt(struct esas2r_adapter *a);
1104 bool esas2r_ioreq_aborted(struct esas2r_adapter *a, struct esas2r_request *rq,
1106 bool esas2r_build_sg_list_sge(struct esas2r_adapter *a,
1108 bool esas2r_build_sg_list_prd(struct esas2r_adapter *a,
1110 void esas2r_targ_db_initialize(struct esas2r_adapter *a);
1111 void esas2r_targ_db_remove_all(struct esas2r_adapter *a, bool notify);
1112 void esas2r_targ_db_report_changes(struct esas2r_adapter *a);
1113 struct esas2r_target *esas2r_targ_db_add_raid(struct esas2r_adapter *a,
1115 struct esas2r_target *esas2r_targ_db_add_pthru(struct esas2r_adapter *a,
1119 void esas2r_targ_db_remove(struct esas2r_adapter *a, struct esas2r_target *t);
1120 struct esas2r_target *esas2r_targ_db_find_by_sas_addr(struct esas2r_adapter *a,
1122 struct esas2r_target *esas2r_targ_db_find_by_ident(struct esas2r_adapter *a,
1125 u16 esas2r_targ_db_find_next_present(struct esas2r_adapter *a, u16 target_id);
1126 struct esas2r_target *esas2r_targ_db_find_by_virt_id(struct esas2r_adapter *a,
1128 u16 esas2r_targ_db_get_tgt_cnt(struct esas2r_adapter *a);
1129 void esas2r_disc_initialize(struct esas2r_adapter *a);
1130 void esas2r_disc_start_waiting(struct esas2r_adapter *a);
1131 void esas2r_disc_check_for_work(struct esas2r_adapter *a);
1132 void esas2r_disc_check_complete(struct esas2r_adapter *a);
1133 void esas2r_disc_queue_event(struct esas2r_adapter *a, u8 disc_evt);
1134 bool esas2r_disc_start_port(struct esas2r_adapter *a);
1135 void esas2r_disc_local_start_request(struct esas2r_adapter *a,
1137 bool esas2r_set_degraded_mode(struct esas2r_adapter *a, char *error_str);
1138 bool esas2r_process_vda_ioctl(struct esas2r_adapter *a,
1142 void esas2r_queue_fw_event(struct esas2r_adapter *a,
1150 static inline struct esas2r_mem_desc *esas2r_alloc_sgl(struct esas2r_adapter *a) in esas2r_alloc_sgl() argument
1156 spin_lock_irqsave(&a->sg_list_lock, flags); in esas2r_alloc_sgl()
1157 if (likely(!list_empty(&a->free_sg_list_head))) { in esas2r_alloc_sgl()
1158 sgl = a->free_sg_list_head.next; in esas2r_alloc_sgl()
1162 spin_unlock_irqrestore(&a->sg_list_lock, flags); in esas2r_alloc_sgl()
1169 struct esas2r_adapter *a, in esas2r_sgc_init() argument
1173 sgc->adapter = a; in esas2r_sgc_init()
1202 struct esas2r_adapter *a) in esas2r_rq_init_request() argument
1230 if (a->req_table[LOWORD(vrq->scsi.handle)]) in esas2r_rq_init_request()
1236 a->req_table[LOWORD(vrq->scsi.handle)] = rq; in esas2r_rq_init_request()
1242 vrq->scsi.handle = (a->cmd_ref_no++ << 16) | (u16)vrq->scsi.handle; in esas2r_rq_init_request()
1265 struct esas2r_adapter *a) in esas2r_rq_free_sg_lists() argument
1272 spin_lock_irqsave(&a->sg_list_lock, flags); in esas2r_rq_free_sg_lists()
1273 list_splice_tail_init(&rq->sg_table_head, &a->free_sg_list_head); in esas2r_rq_free_sg_lists()
1274 spin_unlock_irqrestore(&a->sg_list_lock, flags); in esas2r_rq_free_sg_lists()
1278 struct esas2r_adapter *a) in esas2r_rq_destroy_request() argument
1281 esas2r_rq_free_sg_lists(rq, a); in esas2r_rq_destroy_request()
1282 a->req_table[LOWORD(rq->vrq->scsi.handle)] = NULL; in esas2r_rq_destroy_request()
1286 static inline bool esas2r_is_tasklet_pending(struct esas2r_adapter *a) in esas2r_is_tasklet_pending() argument
1289 return test_bit(AF_BUSRST_NEEDED, &a->flags) || in esas2r_is_tasklet_pending()
1290 test_bit(AF_BUSRST_DETECTED, &a->flags) || in esas2r_is_tasklet_pending()
1291 test_bit(AF_CHPRST_NEEDED, &a->flags) || in esas2r_is_tasklet_pending()
1292 test_bit(AF_CHPRST_DETECTED, &a->flags) || in esas2r_is_tasklet_pending()
1293 test_bit(AF_PORT_CHANGE, &a->flags); in esas2r_is_tasklet_pending()
1303 static inline bool esas2r_build_sg_list(struct esas2r_adapter *a, in esas2r_build_sg_list() argument
1310 return (*a->build_sgl)(a, sgc); in esas2r_build_sg_list()
1313 static inline void esas2r_disable_chip_interrupts(struct esas2r_adapter *a) in esas2r_disable_chip_interrupts() argument
1315 if (atomic_inc_return(&a->dis_ints_cnt) == 1) in esas2r_disable_chip_interrupts()
1316 esas2r_write_register_dword(a, MU_INT_MASK_OUT, in esas2r_disable_chip_interrupts()
1320 static inline void esas2r_enable_chip_interrupts(struct esas2r_adapter *a) in esas2r_enable_chip_interrupts() argument
1322 if (atomic_dec_return(&a->dis_ints_cnt) == 0) in esas2r_enable_chip_interrupts()
1323 esas2r_write_register_dword(a, MU_INT_MASK_OUT, in esas2r_enable_chip_interrupts()
1330 static inline void esas2r_schedule_tasklet(struct esas2r_adapter *a) in esas2r_schedule_tasklet() argument
1333 if (!test_and_set_bit(AF_TASKLET_SCHEDULED, &a->flags)) in esas2r_schedule_tasklet()
1334 tasklet_hi_schedule(&a->tasklet); in esas2r_schedule_tasklet()
1337 static inline void esas2r_enable_heartbeat(struct esas2r_adapter *a) in esas2r_enable_heartbeat() argument
1339 if (!test_bit(AF_DEGRADED_MODE, &a->flags) && in esas2r_enable_heartbeat()
1340 !test_bit(AF_CHPRST_PENDING, &a->flags) && in esas2r_enable_heartbeat()
1341 (a->nvram->options2 & SASNVR2_HEARTBEAT)) in esas2r_enable_heartbeat()
1342 set_bit(AF_HEARTBEAT_ENB, &a->flags); in esas2r_enable_heartbeat()
1344 clear_bit(AF_HEARTBEAT_ENB, &a->flags); in esas2r_enable_heartbeat()
1347 static inline void esas2r_disable_heartbeat(struct esas2r_adapter *a) in esas2r_disable_heartbeat() argument
1349 clear_bit(AF_HEARTBEAT_ENB, &a->flags); in esas2r_disable_heartbeat()
1350 clear_bit(AF_HEARTBEAT, &a->flags); in esas2r_disable_heartbeat()
1356 static inline void esas2r_local_reset_adapter(struct esas2r_adapter *a) in esas2r_local_reset_adapter() argument
1358 esas2r_disable_heartbeat(a); in esas2r_local_reset_adapter()
1360 set_bit(AF_CHPRST_NEEDED, &a->flags); in esas2r_local_reset_adapter()
1361 set_bit(AF_CHPRST_PENDING, &a->flags); in esas2r_local_reset_adapter()
1362 set_bit(AF_DISC_PENDING, &a->flags); in esas2r_local_reset_adapter()
1366 static inline bool esas2r_adapter_interrupt_pending(struct esas2r_adapter *a) in esas2r_adapter_interrupt_pending() argument
1370 if (a->int_mask == 0) in esas2r_adapter_interrupt_pending()
1373 intstat = esas2r_read_register_dword(a, MU_INT_STATUS_OUT); in esas2r_adapter_interrupt_pending()
1375 if ((intstat & a->int_mask) == 0) in esas2r_adapter_interrupt_pending()
1378 esas2r_disable_chip_interrupts(a); in esas2r_adapter_interrupt_pending()
1380 a->int_stat = intstat; in esas2r_adapter_interrupt_pending()
1381 a->int_mask = 0; in esas2r_adapter_interrupt_pending()
1387 struct esas2r_adapter *a) in esas2r_targ_get_id() argument
1389 return (u16)(uintptr_t)(t - a->targetdb); in esas2r_targ_get_id()
1393 static inline void esas2r_start_ae_request(struct esas2r_adapter *a, in esas2r_start_ae_request() argument
1398 esas2r_build_ae_req(a, rq); in esas2r_start_ae_request()
1400 spin_lock_irqsave(&a->queue_lock, flags); in esas2r_start_ae_request()
1401 esas2r_start_vda_request(a, rq); in esas2r_start_ae_request()
1402 spin_unlock_irqrestore(&a->queue_lock, flags); in esas2r_start_ae_request()
1405 static inline void esas2r_comp_list_drain(struct esas2r_adapter *a, in esas2r_comp_list_drain() argument
1414 esas2r_complete_request(a, rq); in esas2r_comp_list_drain()