Lines Matching refs:eng_grp

26 					struct otx2_cpt_eng_grp_info *eng_grp)  in get_cores_bmap()  argument
32 if (eng_grp->g->engs_num < 0 || in get_cores_bmap()
33 eng_grp->g->engs_num > OTX2_CPT_MAX_ENGINES) { in get_cores_bmap()
35 eng_grp->g->engs_num); in get_cores_bmap()
40 if (eng_grp->engs[i].type) { in get_cores_bmap()
42 eng_grp->engs[i].bmap, in get_cores_bmap()
43 eng_grp->g->engs_num); in get_cores_bmap()
44 bmap.size = eng_grp->g->engs_num; in get_cores_bmap()
51 eng_grp->idx); in get_cores_bmap()
60 static int is_2nd_ucode_used(struct otx2_cpt_eng_grp_info *eng_grp) in is_2nd_ucode_used() argument
62 if (eng_grp->ucode[1].type) in is_2nd_ucode_used()
166 static int cptx_set_ucode_base(struct otx2_cpt_eng_grp_info *eng_grp, in cptx_set_ucode_base() argument
181 engs = &eng_grp->engs[i]; in cptx_set_ucode_base()
191 for_each_set_bit(bit, engs->bmap, eng_grp->g->engs_num) in cptx_set_ucode_base()
192 if (!eng_grp->g->eng_ref_cnt[bit]) { in cptx_set_ucode_base()
202 static int cpt_set_ucode_base(struct otx2_cpt_eng_grp_info *eng_grp, void *obj) in cpt_set_ucode_base() argument
208 ret = cptx_set_ucode_base(eng_grp, cptpf, BLKADDR_CPT1); in cpt_set_ucode_base()
212 return cptx_set_ucode_base(eng_grp, cptpf, BLKADDR_CPT0); in cpt_set_ucode_base()
215 static int cptx_detach_and_disable_cores(struct otx2_cpt_eng_grp_info *eng_grp, in cptx_detach_and_disable_cores() argument
231 if (reg & (1ull << eng_grp->idx)) { in cptx_detach_and_disable_cores()
232 eng_grp->g->eng_ref_cnt[i]--; in cptx_detach_and_disable_cores()
233 reg &= ~(1ull << eng_grp->idx); in cptx_detach_and_disable_cores()
268 if (!eng_grp->g->eng_ref_cnt[i]) { in cptx_detach_and_disable_cores()
281 static int cpt_detach_and_disable_cores(struct otx2_cpt_eng_grp_info *eng_grp, in cpt_detach_and_disable_cores() argument
288 bmap = get_cores_bmap(&cptpf->pdev->dev, eng_grp); in cpt_detach_and_disable_cores()
293 ret = cptx_detach_and_disable_cores(eng_grp, cptpf, bmap, in cpt_detach_and_disable_cores()
298 return cptx_detach_and_disable_cores(eng_grp, cptpf, bmap, in cpt_detach_and_disable_cores()
302 static int cptx_attach_and_enable_cores(struct otx2_cpt_eng_grp_info *eng_grp, in cptx_attach_and_enable_cores() argument
317 if (!(reg & (1ull << eng_grp->idx))) { in cptx_attach_and_enable_cores()
318 eng_grp->g->eng_ref_cnt[i]++; in cptx_attach_and_enable_cores()
319 reg |= 1ull << eng_grp->idx; in cptx_attach_and_enable_cores()
341 static int cpt_attach_and_enable_cores(struct otx2_cpt_eng_grp_info *eng_grp, in cpt_attach_and_enable_cores() argument
348 bmap = get_cores_bmap(&cptpf->pdev->dev, eng_grp); in cpt_attach_and_enable_cores()
353 ret = cptx_attach_and_enable_cores(eng_grp, cptpf, bmap, in cpt_attach_and_enable_cores()
358 return cptx_attach_and_enable_cores(eng_grp, cptpf, bmap, BLKADDR_CPT0); in cpt_attach_and_enable_cores()
480 struct otx2_cpt_eng_grp_info *eng_grp, in find_engines_by_type() argument
486 if (!eng_grp->engs[i].type) in find_engines_by_type()
489 if (eng_grp->engs[i].type == eng_type) in find_engines_by_type()
490 return &eng_grp->engs[i]; in find_engines_by_type()
495 static int eng_grp_has_eng_type(struct otx2_cpt_eng_grp_info *eng_grp, in eng_grp_has_eng_type() argument
500 engs = find_engines_by_type(eng_grp, eng_type); in eng_grp_has_eng_type()
709 static int enable_eng_grp(struct otx2_cpt_eng_grp_info *eng_grp, in enable_eng_grp() argument
715 ret = cpt_set_ucode_base(eng_grp, obj); in enable_eng_grp()
720 ret = cpt_attach_and_enable_cores(eng_grp, obj); in enable_eng_grp()
726 struct otx2_cpt_eng_grp_info *eng_grp, in disable_eng_grp() argument
732 ret = cpt_detach_and_disable_cores(eng_grp, obj); in disable_eng_grp()
737 ucode_unload(dev, &eng_grp->ucode[0]); in disable_eng_grp()
738 ucode_unload(dev, &eng_grp->ucode[1]); in disable_eng_grp()
741 if (!eng_grp->engs[i].type) in disable_eng_grp()
744 eng_grp->engs[i].ucode = &eng_grp->ucode[0]; in disable_eng_grp()
748 ret = cpt_set_ucode_base(eng_grp, obj); in disable_eng_grp()
848 struct otx2_cpt_eng_grp_info *eng_grp) in eng_grp_update_masks() argument
856 engs = &eng_grp->engs[i]; in eng_grp_update_masks()
864 max_cnt = eng_grp->g->avail.max_se_cnt; in eng_grp_update_masks()
868 max_cnt = eng_grp->g->avail.max_ie_cnt; in eng_grp_update_masks()
872 max_cnt = eng_grp->g->avail.max_ae_cnt; in eng_grp_update_masks()
882 bitmap_zero(tmp_bmap.bits, eng_grp->g->engs_num); in eng_grp_update_masks()
884 if (!eng_grp->g->eng_ref_cnt[j]) { in eng_grp_update_masks()
895 bitmap_copy(engs->bmap, tmp_bmap.bits, eng_grp->g->engs_num); in eng_grp_update_masks()
898 if (!eng_grp->mirror.is_ena) in eng_grp_update_masks()
902 engs = &eng_grp->engs[i]; in eng_grp_update_masks()
907 &eng_grp->g->grp[eng_grp->mirror.idx], in eng_grp_update_masks()
914 eng_grp->g->engs_num); in eng_grp_update_masks()
917 eng_grp->g->engs_num); in eng_grp_update_masks()
921 eng_grp->g->engs_num); in eng_grp_update_masks()
927 struct otx2_cpt_eng_grp_info *eng_grp) in delete_engine_group() argument
931 if (!eng_grp->is_enabled) in delete_engine_group()
934 if (eng_grp->mirror.ref_count) in delete_engine_group()
938 remove_eng_grp_mirroring(eng_grp); in delete_engine_group()
941 ret = disable_eng_grp(dev, eng_grp, eng_grp->g->obj); in delete_engine_group()
946 ret = release_engines(dev, eng_grp); in delete_engine_group()
950 eng_grp->is_enabled = false; in delete_engine_group()
955 static void update_ucode_ptrs(struct otx2_cpt_eng_grp_info *eng_grp) in update_ucode_ptrs() argument
959 if (eng_grp->mirror.is_ena) in update_ucode_ptrs()
960 ucode = &eng_grp->g->grp[eng_grp->mirror.idx].ucode[0]; in update_ucode_ptrs()
962 ucode = &eng_grp->ucode[0]; in update_ucode_ptrs()
963 WARN_ON(!eng_grp->engs[0].type); in update_ucode_ptrs()
964 eng_grp->engs[0].ucode = ucode; in update_ucode_ptrs()
966 if (eng_grp->engs[1].type) { in update_ucode_ptrs()
967 if (is_2nd_ucode_used(eng_grp)) in update_ucode_ptrs()
968 eng_grp->engs[1].ucode = &eng_grp->ucode[1]; in update_ucode_ptrs()
970 eng_grp->engs[1].ucode = ucode; in update_ucode_ptrs()
980 struct otx2_cpt_eng_grp_info *eng_grp; in create_engine_group() local
985 eng_grp = find_unused_eng_grp(eng_grps); in create_engine_group()
986 if (!eng_grp) { in create_engine_group()
993 eng_grp->ucode[i] = uc_info->ucode; in create_engine_group()
994 ret = copy_ucode_to_dma_mem(dev, &eng_grp->ucode[i], in create_engine_group()
1001 mirrored_eng_grp = find_mirrored_eng_grp(eng_grp); in create_engine_group()
1004 setup_eng_grp_mirroring(eng_grp, mirrored_eng_grp); in create_engine_group()
1012 ret = reserve_engines(dev, eng_grp, engs, ucodes_cnt); in create_engine_group()
1017 update_ucode_ptrs(eng_grp); in create_engine_group()
1020 ret = eng_grp_update_masks(dev, eng_grp); in create_engine_group()
1025 ret = enable_eng_grp(eng_grp, eng_grps->obj); in create_engine_group()
1034 if (eng_grp->mirror.is_ena) in create_engine_group()
1035 ucode_unload(dev, &eng_grp->ucode[0]); in create_engine_group()
1037 eng_grp->is_enabled = true; in create_engine_group()
1045 eng_grp->idx, mirrored_eng_grp->ucode[0].ver_str, in create_engine_group()
1049 eng_grp->idx, eng_grp->ucode[0].ver_str); in create_engine_group()
1050 if (is_2nd_ucode_used(eng_grp)) in create_engine_group()
1052 eng_grp->idx, eng_grp->ucode[1].ver_str); in create_engine_group()
1057 release_engines(dev, eng_grp); in create_engine_group()
1059 ucode_unload(dev, &eng_grp->ucode[0]); in create_engine_group()
1060 ucode_unload(dev, &eng_grp->ucode[1]); in create_engine_group()
1771 static void get_engs_info(struct otx2_cpt_eng_grp_info *eng_grp, char *buf, in get_engs_info() argument
1780 engs = &eng_grp->engs[i]; in get_engs_info()
1786 if (eng_grp->mirror.is_ena) in get_engs_info()
1788 &eng_grp->g->grp[eng_grp->mirror.idx], in get_engs_info()
1807 eng_grp->mirror.idx); in get_engs_info()