• Home
  • Raw
  • Download

Lines Matching refs:a

133 static void esas2r_fmapi_callback(struct esas2r_adapter *a,  in esas2r_fmapi_callback()  argument
169 (*fc->interrupt_cb)(a, rq); in esas2r_fmapi_callback()
176 static void build_flash_msg(struct esas2r_adapter *a, in build_flash_msg() argument
194 esas2r_build_flash_req(a, in build_flash_msg()
201 esas2r_rq_free_sg_lists(rq, a); in build_flash_msg()
212 esas2r_sgc_init(sgc, a, rq, &rq->vrq->flash.data.sge[0]); in build_flash_msg()
214 if (!esas2r_build_sg_list(a, rq, sgc)) { in build_flash_msg()
227 static bool load_image(struct esas2r_adapter *a, struct esas2r_request *rq) in load_image() argument
234 if (test_bit(AF_DEGRADED_MODE, &a->flags)) in load_image()
237 build_flash_msg(a, rq); in load_image()
243 static void fix_bios(struct esas2r_adapter *a, struct esas2r_flash_img *fi) in fix_bios() argument
253 bh->device_id = cpu_to_le16(a->pcid->device); in fix_bios()
262 cpu_to_le32(MAKEDWORD(a->pcid->subsystem_vendor, in fix_bios()
263 a->pcid->subsystem_device)); in fix_bios()
275 static void fix_efi(struct esas2r_adapter *a, struct esas2r_flash_img *fi) in fix_efi() argument
290 bh->device_id = cpu_to_le16(a->pcid->device); in fix_efi()
302 static bool complete_fmapi_req(struct esas2r_adapter *a, in complete_fmapi_req() argument
317 esas2r_enable_heartbeat(a); in complete_fmapi_req()
318 clear_bit(AF_FLASH_LOCK, &a->flags); in complete_fmapi_req()
323 static void fw_download_proc(struct esas2r_adapter *a, in fw_download_proc() argument
529 if (test_bit(AF_DEGRADED_MODE, &a->flags)) in fw_download_proc()
530 esas2r_local_reset_adapter(a); in fw_download_proc()
532 a->flash_ver = fi->cmp_hdr[CH_IT_BIOS].version; in fw_download_proc()
533 esas2r_print_flash_rev(a); in fw_download_proc()
536 memcpy(a->image_type, fi->rel_version, in fw_download_proc()
538 complete_fmapi_req(a, rq, FI_STAT_SUCCESS); in fw_download_proc()
549 if (!load_image(a, rq)) { in fw_download_proc()
556 complete_fmapi_req(a, rq, FI_STAT_FAILED); in fw_download_proc()
561 static u8 get_fi_adap_type(struct esas2r_adapter *a) in get_fi_adap_type() argument
566 switch (a->pcid->device) { in get_fi_adap_type()
692 static bool verify_fi(struct esas2r_adapter *a, in verify_fi() argument
712 type = get_fi_adap_type(a); in verify_fi()
827 static void esas2r_complete_fs_ioctl(struct esas2r_adapter *a, in esas2r_complete_fs_ioctl() argument
834 esas2r_enable_heartbeat(a); in esas2r_complete_fs_ioctl()
845 bool esas2r_process_fs_ioctl(struct esas2r_adapter *a, in esas2r_process_fs_ioctl() argument
875 if ((a->pcid->device != ATTO_DID_MV_88RC9580 in esas2r_process_fs_ioctl()
877 && (a->pcid->device != ATTO_DID_MV_88RC9580TS in esas2r_process_fs_ioctl()
879 && (a->pcid->device != ATTO_DID_MV_88RC9580TSE in esas2r_process_fs_ioctl()
881 && (a->pcid->device != ATTO_DID_MV_88RC9580TL in esas2r_process_fs_ioctl()
893 if (test_bit(AF_DEGRADED_MODE, &a->flags)) { in esas2r_process_fs_ioctl()
901 esas2r_build_flash_req(a, in esas2r_process_fs_ioctl()
915 esas2r_sgc_init(sgc, a, rq, rq->vrq->flash.data.sge); in esas2r_process_fs_ioctl()
918 if (!esas2r_build_sg_list(a, rq, sgc)) { in esas2r_process_fs_ioctl()
925 esas2r_disable_heartbeat(a); in esas2r_process_fs_ioctl()
927 esas2r_start_request(a, rq); in esas2r_process_fs_ioctl()
932 static bool esas2r_flash_access(struct esas2r_adapter *a, u32 function) in esas2r_flash_access() argument
941 esas2r_disable_chip_interrupts(a); in esas2r_flash_access()
944 esas2r_write_register_dword(a, MU_DOORBELL_IN, function); in esas2r_flash_access()
949 if (test_bit(AF_CHPRST_PENDING, &a->flags) || in esas2r_flash_access()
950 test_bit(AF_DISC_PENDING, &a->flags)) in esas2r_flash_access()
956 intstat = esas2r_read_register_dword(a, MU_INT_STATUS_OUT); in esas2r_flash_access()
961 esas2r_read_register_dword(a, MU_DOORBELL_OUT); in esas2r_flash_access()
962 esas2r_write_register_dword(a, MU_DOORBELL_OUT, in esas2r_flash_access()
979 esas2r_write_register_dword(a, MU_DOORBELL_IN, in esas2r_flash_access()
981 esas2r_enable_chip_interrupts(a); in esas2r_flash_access()
992 esas2r_enable_chip_interrupts(a); in esas2r_flash_access()
999 bool esas2r_read_flash_block(struct esas2r_adapter *a, in esas2r_read_flash_block() argument
1007 if (!esas2r_flash_access(a, DRBL_FLASH_REQ)) in esas2r_read_flash_block()
1015 if (test_bit(AF2_SERIAL_FLASH, &a->flags2)) in esas2r_read_flash_block()
1020 esas2r_map_data_window(a, iatvr); in esas2r_read_flash_block()
1031 *end++ = esas2r_read_data_byte(a, offset); in esas2r_read_flash_block()
1037 esas2r_flash_access(a, DRBL_FLASH_DONE); in esas2r_read_flash_block()
1041 bool esas2r_read_flash_rev(struct esas2r_adapter *a) in esas2r_read_flash_rev() argument
1054 if (!esas2r_read_flash_block(a, bytes, FLS_OFFSET_CPYR - sz, sz)) in esas2r_read_flash_rev()
1070 a->flash_ver = le32_to_cpu(*(u32 *)pw); in esas2r_read_flash_rev()
1076 return esas2r_print_flash_rev(a); in esas2r_read_flash_rev()
1079 bool esas2r_print_flash_rev(struct esas2r_adapter *a) in esas2r_print_flash_rev() argument
1081 u16 year = LOWORD(a->flash_ver); in esas2r_print_flash_rev()
1082 u8 day = LOBYTE(HIWORD(a->flash_ver)); in esas2r_print_flash_rev()
1083 u8 month = HIBYTE(HIWORD(a->flash_ver)); in esas2r_print_flash_rev()
1091 strcpy(a->flash_rev, "not found"); in esas2r_print_flash_rev()
1092 a->flash_ver = 0; in esas2r_print_flash_rev()
1096 sprintf(a->flash_rev, "%02d/%02d/%04d", month, day, year); in esas2r_print_flash_rev()
1097 esas2r_hdebug("flash version: %s", a->flash_rev); in esas2r_print_flash_rev()
1106 bool esas2r_read_image_type(struct esas2r_adapter *a) in esas2r_read_image_type() argument
1121 if (!esas2r_read_flash_block(a, bytes, FLS_OFFSET_BOOT + in esas2r_read_image_type()
1134 strcpy(a->image_type, "BIOS"); in esas2r_read_image_type()
1148 strcpy(a->image_type, "EFI 32-bit"); in esas2r_read_image_type()
1152 strcpy(a->image_type, "EFI itanium"); in esas2r_read_image_type()
1156 strcpy(a->image_type, "EFI 64-bit"); in esas2r_read_image_type()
1160 strcpy(a->image_type, "EFI EBC"); in esas2r_read_image_type()
1181 strcpy(a->image_type, "no boot images"); in esas2r_read_image_type()
1190 bool esas2r_nvram_read_direct(struct esas2r_adapter *a) in esas2r_nvram_read_direct() argument
1194 if (down_interruptible(&a->nvram_semaphore)) in esas2r_nvram_read_direct()
1197 if (!esas2r_read_flash_block(a, a->nvram, FLS_OFFSET_NVR, in esas2r_nvram_read_direct()
1200 up(&a->nvram_semaphore); in esas2r_nvram_read_direct()
1204 result = esas2r_nvram_validate(a); in esas2r_nvram_read_direct()
1206 up(&a->nvram_semaphore); in esas2r_nvram_read_direct()
1212 static void esas2r_nvram_callback(struct esas2r_adapter *a, in esas2r_nvram_callback() argument
1232 esas2r_nvram_validate(a); in esas2r_nvram_callback()
1244 set_bit(AF_NVR_VALID, &a->flags); in esas2r_nvram_callback()
1246 clear_bit(AF_NVR_VALID, &a->flags); in esas2r_nvram_callback()
1248 esas2r_enable_heartbeat(a); in esas2r_nvram_callback()
1250 up(&a->nvram_semaphore); in esas2r_nvram_callback()
1258 bool esas2r_nvram_write(struct esas2r_adapter *a, struct esas2r_request *rq, in esas2r_nvram_write() argument
1266 if (test_bit(AF_DEGRADED_MODE, &a->flags)) in esas2r_nvram_write()
1269 if (down_interruptible(&a->nvram_semaphore)) in esas2r_nvram_write()
1273 n = a->nvram; in esas2r_nvram_write()
1277 up(&a->nvram_semaphore); in esas2r_nvram_write()
1288 up(&a->nvram_semaphore); in esas2r_nvram_write()
1297 memcpy(a->nvram, n, sizeof(struct esas2r_sas_nvram)); in esas2r_nvram_write()
1300 n = a->nvram; in esas2r_nvram_write()
1301 esas2r_disable_heartbeat(a); in esas2r_nvram_write()
1303 esas2r_build_flash_req(a, in esas2r_nvram_write()
1310 if (test_bit(AF_LEGACY_SGE_MODE, &a->flags)) { in esas2r_nvram_write()
1316 a->uncached_phys + (u64)((u8 *)n - a->uncached)); in esas2r_nvram_write()
1321 a->uncached_phys in esas2r_nvram_write()
1322 + (u64)((u8 *)n - a->uncached)); in esas2r_nvram_write()
1325 esas2r_start_request(a, rq); in esas2r_nvram_write()
1330 bool esas2r_nvram_validate(struct esas2r_adapter *a) in esas2r_nvram_validate() argument
1332 struct esas2r_sas_nvram *n = a->nvram; in esas2r_nvram_validate()
1345 set_bit(AF_NVR_VALID, &a->flags); in esas2r_nvram_validate()
1351 esas2r_nvram_set_defaults(a); in esas2r_nvram_validate()
1362 void esas2r_nvram_set_defaults(struct esas2r_adapter *a) in esas2r_nvram_set_defaults() argument
1364 struct esas2r_sas_nvram *n = a->nvram; in esas2r_nvram_set_defaults()
1367 clear_bit(AF_NVR_VALID, &a->flags); in esas2r_nvram_set_defaults()
1372 n->sas_addr[6] = a->pcid->bus->number; in esas2r_nvram_set_defaults()
1373 n->sas_addr[7] = a->pcid->devfn; in esas2r_nvram_set_defaults()
1376 void esas2r_nvram_get_defaults(struct esas2r_adapter *a, in esas2r_nvram_get_defaults() argument
1385 memcpy(&sas_addr[0], a->nvram->sas_addr, 8); in esas2r_nvram_get_defaults()
1390 bool esas2r_fm_api(struct esas2r_adapter *a, struct esas2r_flash_img *fi, in esas2r_fm_api() argument
1393 struct esas2r_flash_context *fc = &a->flash_context; in esas2r_fm_api()
1397 if (test_and_set_bit(AF_FLASH_LOCK, &a->flags)) { in esas2r_fm_api()
1418 return complete_fmapi_req(a, rq, FI_STAT_IMG_VER); in esas2r_fm_api()
1421 if (test_bit(AF_DEGRADED_MODE, &a->flags)) in esas2r_fm_api()
1422 return complete_fmapi_req(a, rq, FI_STAT_DEGRADED); in esas2r_fm_api()
1427 if (!verify_fi(a, fc)) in esas2r_fm_api()
1428 return complete_fmapi_req(a, rq, fi->status); in esas2r_fm_api()
1434 fix_bios(a, fi); in esas2r_fm_api()
1440 fix_efi(a, fi); in esas2r_fm_api()
1450 esas2r_disable_heartbeat(a); in esas2r_fm_api()
1465 fi->adap_typ = get_fi_adap_type(a); in esas2r_fm_api()
1471 memcpy(fi->rel_version, a->image_type, in esas2r_fm_api()
1487 if (a->flash_ver != 0) { in esas2r_fm_api()
1492 = a->flash_ver; in esas2r_fm_api()
1500 return complete_fmapi_req(a, rq, FI_STAT_SUCCESS); in esas2r_fm_api()
1507 return complete_fmapi_req(a, rq, FI_STAT_INVALID); in esas2r_fm_api()
1516 if (!load_image(a, rq)) in esas2r_fm_api()
1517 return complete_fmapi_req(a, rq, FI_STAT_FAILED); in esas2r_fm_api()
1519 esas2r_start_request(a, rq); in esas2r_fm_api()