Lines Matching refs:eng_grp

58 					   struct otx_cpt_eng_grp_info *eng_grp)  in get_cores_bmap()  argument
64 if (eng_grp->g->engs_num > OTX_CPT_MAX_ENGINES) { in get_cores_bmap()
66 eng_grp->g->engs_num); in get_cores_bmap()
71 if (eng_grp->engs[i].type) { in get_cores_bmap()
73 eng_grp->engs[i].bmap, in get_cores_bmap()
74 eng_grp->g->engs_num); in get_cores_bmap()
75 bmap.size = eng_grp->g->engs_num; in get_cores_bmap()
82 eng_grp->idx); in get_cores_bmap()
175 static int cpt_set_ucode_base(struct otx_cpt_eng_grp_info *eng_grp, void *obj) in cpt_set_ucode_base() argument
182 bmap = get_cores_bmap(&cpt->pdev->dev, eng_grp); in cpt_set_ucode_base()
186 if (eng_grp->mirror.is_ena) in cpt_set_ucode_base()
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()
197 if (!eng_grp->g->eng_ref_cnt[i]) in cpt_set_ucode_base()
203 static int cpt_detach_and_disable_cores(struct otx_cpt_eng_grp_info *eng_grp, in cpt_detach_and_disable_cores() argument
212 bmap = get_cores_bmap(&cpt->pdev->dev, eng_grp); in cpt_detach_and_disable_cores()
217 reg = readq(cpt->reg_base + OTX_CPT_PF_GX_EN(eng_grp->idx)); in cpt_detach_and_disable_cores()
220 eng_grp->g->eng_ref_cnt[i]--; in cpt_detach_and_disable_cores()
224 writeq(reg, cpt->reg_base + OTX_CPT_PF_GX_EN(eng_grp->idx)); in cpt_detach_and_disable_cores()
244 if (!eng_grp->g->eng_ref_cnt[i]) in cpt_detach_and_disable_cores()
251 static int cpt_attach_and_enable_cores(struct otx_cpt_eng_grp_info *eng_grp, in cpt_attach_and_enable_cores() argument
259 bmap = get_cores_bmap(&cpt->pdev->dev, eng_grp); in cpt_attach_and_enable_cores()
264 reg = readq(cpt->reg_base + OTX_CPT_PF_GX_EN(eng_grp->idx)); in cpt_attach_and_enable_cores()
267 eng_grp->g->eng_ref_cnt[i]++; in cpt_attach_and_enable_cores()
271 writeq(reg, cpt->reg_base + OTX_CPT_PF_GX_EN(eng_grp->idx)); in cpt_attach_and_enable_cores()
488 struct otx_cpt_eng_grp_info *eng_grp, in find_engines_by_type() argument
494 if (!eng_grp->engs[i].type) in find_engines_by_type()
497 if (eng_grp->engs[i].type == eng_type) in find_engines_by_type()
498 return &eng_grp->engs[i]; in find_engines_by_type()
509 int otx_cpt_eng_grp_has_eng_type(struct otx_cpt_eng_grp_info *eng_grp, in otx_cpt_eng_grp_has_eng_type() argument
514 engs = find_engines_by_type(eng_grp, eng_type); in otx_cpt_eng_grp_has_eng_type()
520 static void print_ucode_info(struct otx_cpt_eng_grp_info *eng_grp, in print_ucode_info() argument
523 if (eng_grp->mirror.is_ena) { in print_ucode_info()
525 eng_grp->g->grp[eng_grp->mirror.idx].ucode[0].ver_str, in print_ucode_info()
526 eng_grp->mirror.idx); in print_ucode_info()
528 scnprintf(buf, size, "%s", eng_grp->ucode[0].ver_str); in print_ucode_info()
532 static void print_engs_info(struct otx_cpt_eng_grp_info *eng_grp, in print_engs_info() argument
541 engs = &eng_grp->engs[i]; in print_engs_info()
547 if (eng_grp->mirror.is_ena) in print_engs_info()
549 &eng_grp->g->grp[eng_grp->mirror.idx], in print_engs_info()
566 eng_grp->mirror.idx); in print_engs_info()
583 static void cpt_print_engines_mask(struct otx_cpt_eng_grp_info *eng_grp, in cpt_print_engines_mask() argument
589 bmap = get_cores_bmap(dev, eng_grp); in cpt_print_engines_mask()
813 struct otx_cpt_eng_grp_info *eng_grp; in eng_grp_info_show() local
816 eng_grp = container_of(attr, struct otx_cpt_eng_grp_info, info_attr); in eng_grp_info_show()
817 mutex_lock(&eng_grp->g->lock); in eng_grp_info_show()
819 print_engs_info(eng_grp, engs_info, 2*OTX_CPT_UCODE_NAME_LENGTH, -1); in eng_grp_info_show()
820 print_ucode_info(eng_grp, ucode_info, 2*OTX_CPT_UCODE_NAME_LENGTH); in eng_grp_info_show()
821 cpt_print_engines_mask(eng_grp, dev, engs_mask, in eng_grp_info_show()
827 mutex_unlock(&eng_grp->g->lock); in eng_grp_info_show()
832 struct otx_cpt_eng_grp_info *eng_grp) in create_sysfs_eng_grps_info() argument
834 eng_grp->info_attr.show = eng_grp_info_show; in create_sysfs_eng_grps_info()
835 eng_grp->info_attr.store = NULL; in create_sysfs_eng_grps_info()
836 eng_grp->info_attr.attr.name = eng_grp->sysfs_info_name; in create_sysfs_eng_grps_info()
837 eng_grp->info_attr.attr.mode = 0440; in create_sysfs_eng_grps_info()
838 sysfs_attr_init(&eng_grp->info_attr.attr); in create_sysfs_eng_grps_info()
839 return device_create_file(dev, &eng_grp->info_attr); in create_sysfs_eng_grps_info()
938 static int enable_eng_grp(struct otx_cpt_eng_grp_info *eng_grp, in enable_eng_grp() argument
943 ret = cpt_set_ucode_base(eng_grp, obj); in enable_eng_grp()
947 ret = cpt_attach_and_enable_cores(eng_grp, obj); in enable_eng_grp()
952 struct otx_cpt_eng_grp_info *eng_grp, in disable_eng_grp() argument
957 ret = cpt_detach_and_disable_cores(eng_grp, obj); in disable_eng_grp()
962 ucode_unload(dev, &eng_grp->ucode[0]); in disable_eng_grp()
965 if (!eng_grp->engs[i].type) in disable_eng_grp()
968 eng_grp->engs[i].ucode = &eng_grp->ucode[0]; in disable_eng_grp()
971 ret = cpt_set_ucode_base(eng_grp, obj); in disable_eng_grp()
1070 struct otx_cpt_eng_grp_info *eng_grp) in eng_grp_update_masks() argument
1078 engs = &eng_grp->engs[i]; in eng_grp_update_masks()
1086 max_cnt = eng_grp->g->avail.max_se_cnt; in eng_grp_update_masks()
1090 max_cnt = eng_grp->g->avail.max_ae_cnt; in eng_grp_update_masks()
1100 bitmap_zero(tmp_bmap.bits, eng_grp->g->engs_num); in eng_grp_update_masks()
1102 if (!eng_grp->g->eng_ref_cnt[j]) { in eng_grp_update_masks()
1113 bitmap_copy(engs->bmap, tmp_bmap.bits, eng_grp->g->engs_num); in eng_grp_update_masks()
1116 if (!eng_grp->mirror.is_ena) in eng_grp_update_masks()
1120 engs = &eng_grp->engs[i]; in eng_grp_update_masks()
1125 &eng_grp->g->grp[eng_grp->mirror.idx], in eng_grp_update_masks()
1132 eng_grp->g->engs_num); in eng_grp_update_masks()
1135 eng_grp->g->engs_num); in eng_grp_update_masks()
1139 eng_grp->g->engs_num); in eng_grp_update_masks()
1145 struct otx_cpt_eng_grp_info *eng_grp) in delete_engine_group() argument
1149 if (!eng_grp->is_enabled) in delete_engine_group()
1152 if (eng_grp->mirror.ref_count) { in delete_engine_group()
1154 eng_grp->idx); in delete_engine_group()
1156 if (eng_grp->g->grp[i].mirror.is_ena && in delete_engine_group()
1157 eng_grp->g->grp[i].mirror.idx == eng_grp->idx) in delete_engine_group()
1165 remove_eng_grp_mirroring(eng_grp); in delete_engine_group()
1168 ret = disable_eng_grp(dev, eng_grp, eng_grp->g->obj); in delete_engine_group()
1173 ret = release_engines(dev, eng_grp); in delete_engine_group()
1177 device_remove_file(dev, &eng_grp->info_attr); in delete_engine_group()
1178 eng_grp->is_enabled = false; in delete_engine_group()
1184 struct otx_cpt_eng_grp_info *eng_grp, in validate_1_ucode_scenario() argument
1191 if (!otx_cpt_uc_supports_eng_type(&eng_grp->ucode[0], in validate_1_ucode_scenario()
1195 eng_grp->ucode[0].filename, in validate_1_ucode_scenario()
1203 static void update_ucode_ptrs(struct otx_cpt_eng_grp_info *eng_grp) in update_ucode_ptrs() argument
1207 if (eng_grp->mirror.is_ena) in update_ucode_ptrs()
1208 ucode = &eng_grp->g->grp[eng_grp->mirror.idx].ucode[0]; in update_ucode_ptrs()
1210 ucode = &eng_grp->ucode[0]; in update_ucode_ptrs()
1211 WARN_ON(!eng_grp->engs[0].type); in update_ucode_ptrs()
1212 eng_grp->engs[0].ucode = ucode; in update_ucode_ptrs()
1223 struct otx_cpt_eng_grp_info *eng_grp; in create_engine_group() local
1238 eng_grp = find_unused_eng_grp(eng_grps); in create_engine_group()
1239 if (!eng_grp) { in create_engine_group()
1248 eng_grp->ucode[i] = tar_info->ucode; in create_engine_group()
1249 ret = copy_ucode_to_dma_mem(dev, &eng_grp->ucode[i], in create_engine_group()
1252 ret = ucode_load(dev, &eng_grp->ucode[i], in create_engine_group()
1259 ret = validate_1_ucode_scenario(dev, eng_grp, engs, engs_cnt); in create_engine_group()
1264 mirrored_eng_grp = find_mirrored_eng_grp(eng_grp); in create_engine_group()
1267 setup_eng_grp_mirroring(eng_grp, mirrored_eng_grp); in create_engine_group()
1277 ret = reserve_engines(dev, eng_grp, engs, engs_cnt); in create_engine_group()
1282 update_ucode_ptrs(eng_grp); in create_engine_group()
1285 ret = eng_grp_update_masks(dev, eng_grp); in create_engine_group()
1290 ret = create_sysfs_eng_grps_info(dev, eng_grp); in create_engine_group()
1295 ret = enable_eng_grp(eng_grp, eng_grps->obj); in create_engine_group()
1304 if (eng_grp->mirror.is_ena) in create_engine_group()
1305 ucode_unload(dev, &eng_grp->ucode[0]); in create_engine_group()
1307 eng_grp->is_enabled = true; in create_engine_group()
1308 if (eng_grp->mirror.is_ena) in create_engine_group()
1311 eng_grp->idx, mirrored_eng_grp->ucode[0].ver_str, in create_engine_group()
1315 eng_grp->idx, eng_grp->ucode[0].ver_str); in create_engine_group()
1320 release_engines(dev, eng_grp); in create_engine_group()
1322 ucode_unload(dev, &eng_grp->ucode[0]); in create_engine_group()