Lines Matching refs:ucode
97 static void set_ucode_filename(struct otx_cpt_ucode *ucode, in set_ucode_filename() argument
100 strlcpy(ucode->filename, filename, OTX_CPT_UCODE_NAME_LENGTH); in set_ucode_filename()
188 eng_grp->g->grp[eng_grp->mirror.idx].ucode[0].align_dma; in cpt_set_ucode_base()
190 dma_addr = eng_grp->ucode[0].align_dma; in cpt_set_ucode_base()
318 set_ucode_filename(&tar_info->ucode, filename); in process_tar_file()
319 memcpy(tar_info->ucode.ver_str, ucode_hdr->ver_str, in process_tar_file()
321 tar_info->ucode.ver_num = ucode_hdr->ver_num; in process_tar_file()
322 tar_info->ucode.type = ucode_type; in process_tar_file()
323 tar_info->ucode.size = ucode_size; in process_tar_file()
353 if (!is_eng_type(curr->ucode.type, ucode_type)) in get_uc_from_tar_archive()
366 if (uc_found->ucode.ver_num.nn == OTX_CPT_SE_UC_TYPE2 || in get_uc_from_tar_archive()
367 (uc_found->ucode.ver_num.nn == OTX_CPT_SE_UC_TYPE3 in get_uc_from_tar_archive()
368 && curr->ucode.ver_num.nn == OTX_CPT_SE_UC_TYPE1)) in get_uc_from_tar_archive()
386 pr_debug("Ucode filename %s\n", curr->ucode.filename); in print_tar_dbg_info()
387 pr_debug("Ucode version string %s\n", curr->ucode.ver_str); in print_tar_dbg_info()
389 curr->ucode.ver_num.nn, curr->ucode.ver_num.xx, in print_tar_dbg_info()
390 curr->ucode.ver_num.yy, curr->ucode.ver_num.zz); in print_tar_dbg_info()
391 pr_debug("Ucode type (%d) %s\n", curr->ucode.type, in print_tar_dbg_info()
392 get_ucode_type_str(curr->ucode.type)); in print_tar_dbg_info()
393 pr_debug("Ucode size %d\n", curr->ucode.size); in print_tar_dbg_info()
496 int otx_cpt_uc_supports_eng_type(struct otx_cpt_ucode *ucode, int eng_type) in otx_cpt_uc_supports_eng_type() argument
498 return is_eng_type(ucode->type, eng_type); in otx_cpt_uc_supports_eng_type()
518 eng_grp->g->grp[eng_grp->mirror.idx].ucode[0].ver_str, in print_ucode_info()
521 scnprintf(buf, size, "%s", eng_grp->ucode[0].ver_str); in print_ucode_info()
564 static void print_ucode_dbg_info(struct otx_cpt_ucode *ucode) in print_ucode_dbg_info() argument
567 pr_debug("Ucode version string %s\n", ucode->ver_str); in print_ucode_dbg_info()
568 pr_debug("Ucode version %d.%d.%d.%d\n", ucode->ver_num.nn, in print_ucode_dbg_info()
569 ucode->ver_num.xx, ucode->ver_num.yy, ucode->ver_num.zz); in print_ucode_dbg_info()
570 pr_debug("Ucode type %s\n", get_ucode_type_str(ucode->type)); in print_ucode_dbg_info()
571 pr_debug("Ucode size %d\n", ucode->size); in print_ucode_dbg_info()
572 pr_debug("Ucode virt address %16.16llx\n", (u64)ucode->align_va); in print_ucode_dbg_info()
573 pr_debug("Ucode phys address %16.16llx\n", ucode->align_dma); in print_ucode_dbg_info()
617 mirrored_grp->ucode[0].filename : in print_dbg_info()
618 grp->ucode[0].filename, in print_dbg_info()
620 mirrored_grp->ucode[0].ver_str : in print_dbg_info()
621 grp->ucode[0].ver_str); in print_dbg_info()
706 grp->engs[i].ucode = NULL; in release_engines()
835 static void ucode_unload(struct device *dev, struct otx_cpt_ucode *ucode) in ucode_unload() argument
837 if (ucode->va) { in ucode_unload()
838 dma_free_coherent(dev, ucode->size + OTX_CPT_UCODE_ALIGNMENT, in ucode_unload()
839 ucode->va, ucode->dma); in ucode_unload()
840 ucode->va = NULL; in ucode_unload()
841 ucode->align_va = NULL; in ucode_unload()
842 ucode->dma = 0; in ucode_unload()
843 ucode->align_dma = 0; in ucode_unload()
844 ucode->size = 0; in ucode_unload()
847 memset(&ucode->ver_str, 0, OTX_CPT_UCODE_VER_STR_SZ); in ucode_unload()
848 memset(&ucode->ver_num, 0, sizeof(struct otx_cpt_ucode_ver_num)); in ucode_unload()
849 set_ucode_filename(ucode, ""); in ucode_unload()
850 ucode->type = 0; in ucode_unload()
854 struct otx_cpt_ucode *ucode, in copy_ucode_to_dma_mem() argument
860 ucode->va = dma_alloc_coherent(dev, ucode->size + in copy_ucode_to_dma_mem()
862 &ucode->dma, GFP_KERNEL); in copy_ucode_to_dma_mem()
863 if (!ucode->va) { in copy_ucode_to_dma_mem()
867 ucode->align_va = PTR_ALIGN(ucode->va, OTX_CPT_UCODE_ALIGNMENT); in copy_ucode_to_dma_mem()
868 ucode->align_dma = PTR_ALIGN(ucode->dma, OTX_CPT_UCODE_ALIGNMENT); in copy_ucode_to_dma_mem()
870 memcpy((void *) ucode->align_va, (void *) ucode_data + in copy_ucode_to_dma_mem()
871 sizeof(struct otx_cpt_ucode_hdr), ucode->size); in copy_ucode_to_dma_mem()
874 for (i = 0; i < (ucode->size / 8); i++) in copy_ucode_to_dma_mem()
875 ((__be64 *)ucode->align_va)[i] = in copy_ucode_to_dma_mem()
876 cpu_to_be64(((u64 *)ucode->align_va)[i]); in copy_ucode_to_dma_mem()
878 for (i = 0; i < (ucode->size / 2); i++) in copy_ucode_to_dma_mem()
879 ((__be16 *)ucode->align_va)[i] = in copy_ucode_to_dma_mem()
880 cpu_to_be16(((u16 *)ucode->align_va)[i]); in copy_ucode_to_dma_mem()
884 static int ucode_load(struct device *dev, struct otx_cpt_ucode *ucode, in ucode_load() argument
891 set_ucode_filename(ucode, ucode_filename); in ucode_load()
892 ret = request_firmware(&fw, ucode->filename, dev); in ucode_load()
897 memcpy(ucode->ver_str, ucode_hdr->ver_str, OTX_CPT_UCODE_VER_STR_SZ); in ucode_load()
898 ucode->ver_num = ucode_hdr->ver_num; in ucode_load()
899 ucode->size = ntohl(ucode_hdr->code_length) * 2; in ucode_load()
900 if (!ucode->size || (fw->size < round_up(ucode->size, 16) in ucode_load()
907 ret = get_ucode_type(ucode_hdr, &ucode->type); in ucode_load()
910 ucode->filename, ucode->type); in ucode_load()
914 ret = copy_ucode_to_dma_mem(dev, ucode, fw->data); in ucode_load()
918 print_ucode_dbg_info(ucode); in ucode_load()
948 ucode_unload(dev, &eng_grp->ucode[0]); in disable_eng_grp()
954 eng_grp->engs[i].ucode = &eng_grp->ucode[0]; in disable_eng_grp()
1030 if (eng_grps->grp[i].ucode[0].type) in find_mirrored_eng_grp()
1034 if (!strncasecmp(eng_grps->grp[i].ucode[0].ver_str, in find_mirrored_eng_grp()
1035 grp->ucode[0].ver_str, in find_mirrored_eng_grp()
1177 if (!otx_cpt_uc_supports_eng_type(&eng_grp->ucode[0], in validate_1_ucode_scenario()
1181 eng_grp->ucode[0].filename, in validate_1_ucode_scenario()
1191 struct otx_cpt_ucode *ucode; in update_ucode_ptrs() local
1194 ucode = &eng_grp->g->grp[eng_grp->mirror.idx].ucode[0]; in update_ucode_ptrs()
1196 ucode = &eng_grp->ucode[0]; in update_ucode_ptrs()
1198 eng_grp->engs[0].ucode = ucode; in update_ucode_ptrs()
1234 eng_grp->ucode[i] = tar_info->ucode; in create_engine_group()
1235 ret = copy_ucode_to_dma_mem(dev, &eng_grp->ucode[i], in create_engine_group()
1238 ret = ucode_load(dev, &eng_grp->ucode[i], in create_engine_group()
1291 ucode_unload(dev, &eng_grp->ucode[0]); in create_engine_group()
1297 eng_grp->idx, mirrored_eng_grp->ucode[0].ver_str, in create_engine_group()
1301 eng_grp->idx, eng_grp->ucode[0].ver_str); in create_engine_group()
1308 ucode_unload(dev, &eng_grp->ucode[0]); in create_engine_group()