Lines Matching refs:eng_grps
91 static int dev_supports_eng_type(struct otx_cpt_eng_grps *eng_grps, in dev_supports_eng_type() argument
94 return is_eng_type(eng_grps->eng_types_supported, eng_type); in dev_supports_eng_type()
600 struct otx_cpt_eng_grps *eng_grps) in print_dbg_info() argument
612 eng_grps->avail.max_se_cnt, eng_grps->avail.max_ae_cnt); in print_dbg_info()
613 pr_debug("free SE %d\n", eng_grps->avail.se_cnt); in print_dbg_info()
614 pr_debug("free AE %d\n", eng_grps->avail.ae_cnt); in print_dbg_info()
617 grp = &eng_grps->grp[i]; in print_dbg_info()
621 mirrored_grp = &eng_grps->grp[grp->mirror.idx]; in print_dbg_info()
638 eng_grps->engs_num); in print_dbg_info()
1038 struct otx_cpt_eng_grps *eng_grps = grp->g; in find_mirrored_eng_grp() local
1042 if (!eng_grps->grp[i].is_enabled) in find_mirrored_eng_grp()
1044 if (eng_grps->grp[i].ucode[0].type) in find_mirrored_eng_grp()
1048 if (!strncasecmp(eng_grps->grp[i].ucode[0].ver_str, in find_mirrored_eng_grp()
1051 return &eng_grps->grp[i]; in find_mirrored_eng_grp()
1058 struct otx_cpt_eng_grps *eng_grps) in find_unused_eng_grp() argument
1063 if (!eng_grps->grp[i].is_enabled) in find_unused_eng_grp()
1064 return &eng_grps->grp[i]; in find_unused_eng_grp()
1216 struct otx_cpt_eng_grps *eng_grps, in create_engine_group() argument
1231 if (!dev_supports_eng_type(eng_grps, engs[i].type)) { in create_engine_group()
1238 eng_grp = find_unused_eng_grp(eng_grps); in create_engine_group()
1295 ret = enable_eng_grp(eng_grp, eng_grps->obj); in create_engine_group()
1334 struct otx_cpt_eng_grps *eng_grps; in ucode_load_store() local
1343 eng_grps = container_of(attr, struct otx_cpt_eng_grps, ucode_load_attr); in ucode_load_store()
1430 if (!eng_grps->grp[del_grp_idx].is_enabled) { in ucode_load_store()
1441 mutex_lock(&eng_grps->lock); in ucode_load_store()
1443 if (eng_grps->is_rdonly) { in ucode_load_store()
1451 ret = create_engine_group(dev, eng_grps, engs, grp_idx, in ucode_load_store()
1456 ret = delete_engine_group(dev, &eng_grps->grp[del_grp_idx]); in ucode_load_store()
1460 print_dbg_info(dev, eng_grps); in ucode_load_store()
1462 mutex_unlock(&eng_grps->lock); in ucode_load_store()
1471 struct otx_cpt_eng_grps *eng_grps, in otx_cpt_try_create_default_eng_grps() argument
1480 mutex_lock(&eng_grps->lock); in otx_cpt_try_create_default_eng_grps()
1486 if (eng_grps->is_first_try) in otx_cpt_try_create_default_eng_grps()
1488 eng_grps->is_first_try = true; in otx_cpt_try_create_default_eng_grps()
1492 if (eng_grps->grp[i].is_enabled) in otx_cpt_try_create_default_eng_grps()
1518 dev_supports_eng_type(eng_grps, OTX_CPT_SE_TYPES)) { in otx_cpt_try_create_default_eng_grps()
1521 engs[0].count = eng_grps->avail.max_se_cnt; in otx_cpt_try_create_default_eng_grps()
1523 ret = create_engine_group(&pdev->dev, eng_grps, engs, 1, in otx_cpt_try_create_default_eng_grps()
1535 dev_supports_eng_type(eng_grps, OTX_CPT_AE_TYPES)) { in otx_cpt_try_create_default_eng_grps()
1538 engs[0].count = eng_grps->avail.max_ae_cnt; in otx_cpt_try_create_default_eng_grps()
1540 ret = create_engine_group(&pdev->dev, eng_grps, engs, 1, in otx_cpt_try_create_default_eng_grps()
1546 print_dbg_info(&pdev->dev, eng_grps); in otx_cpt_try_create_default_eng_grps()
1550 mutex_unlock(&eng_grps->lock); in otx_cpt_try_create_default_eng_grps()
1554 void otx_cpt_set_eng_grps_is_rdonly(struct otx_cpt_eng_grps *eng_grps, in otx_cpt_set_eng_grps_is_rdonly() argument
1557 mutex_lock(&eng_grps->lock); in otx_cpt_set_eng_grps_is_rdonly()
1559 eng_grps->is_rdonly = is_rdonly; in otx_cpt_set_eng_grps_is_rdonly()
1561 mutex_unlock(&eng_grps->lock); in otx_cpt_set_eng_grps_is_rdonly()
1590 struct otx_cpt_eng_grps *eng_grps) in otx_cpt_cleanup_eng_grps() argument
1595 mutex_lock(&eng_grps->lock); in otx_cpt_cleanup_eng_grps()
1596 if (eng_grps->is_ucode_load_created) { in otx_cpt_cleanup_eng_grps()
1598 &eng_grps->ucode_load_attr); in otx_cpt_cleanup_eng_grps()
1599 eng_grps->is_ucode_load_created = false; in otx_cpt_cleanup_eng_grps()
1604 if (eng_grps->grp[i].mirror.is_ena) in otx_cpt_cleanup_eng_grps()
1605 delete_engine_group(&pdev->dev, &eng_grps->grp[i]); in otx_cpt_cleanup_eng_grps()
1609 delete_engine_group(&pdev->dev, &eng_grps->grp[i]); in otx_cpt_cleanup_eng_grps()
1613 grp = &eng_grps->grp[i]; in otx_cpt_cleanup_eng_grps()
1620 mutex_unlock(&eng_grps->lock); in otx_cpt_cleanup_eng_grps()
1624 struct otx_cpt_eng_grps *eng_grps, int pf_type) in otx_cpt_init_eng_grps() argument
1629 mutex_init(&eng_grps->lock); in otx_cpt_init_eng_grps()
1630 eng_grps->obj = pci_get_drvdata(pdev); in otx_cpt_init_eng_grps()
1631 eng_grps->avail.se_cnt = eng_grps->avail.max_se_cnt; in otx_cpt_init_eng_grps()
1632 eng_grps->avail.ae_cnt = eng_grps->avail.max_ae_cnt; in otx_cpt_init_eng_grps()
1634 eng_grps->engs_num = eng_grps->avail.max_se_cnt + in otx_cpt_init_eng_grps()
1635 eng_grps->avail.max_ae_cnt; in otx_cpt_init_eng_grps()
1636 if (eng_grps->engs_num > OTX_CPT_MAX_ENGINES) { in otx_cpt_init_eng_grps()
1639 eng_grps->engs_num, OTX_CPT_MAX_ENGINES); in otx_cpt_init_eng_grps()
1645 grp = &eng_grps->grp[i]; in otx_cpt_init_eng_grps()
1646 grp->g = eng_grps; in otx_cpt_init_eng_grps()
1653 kcalloc(BITS_TO_LONGS(eng_grps->engs_num), in otx_cpt_init_eng_grps()
1665 eng_grps->eng_types_supported = 1 << OTX_CPT_SE_TYPES; in otx_cpt_init_eng_grps()
1670 eng_grps->eng_types_supported = 1 << OTX_CPT_AE_TYPES; in otx_cpt_init_eng_grps()
1679 eng_grps->ucode_load_attr.show = NULL; in otx_cpt_init_eng_grps()
1680 eng_grps->ucode_load_attr.store = ucode_load_store; in otx_cpt_init_eng_grps()
1681 eng_grps->ucode_load_attr.attr.name = "ucode_load"; in otx_cpt_init_eng_grps()
1682 eng_grps->ucode_load_attr.attr.mode = 0220; in otx_cpt_init_eng_grps()
1683 sysfs_attr_init(&eng_grps->ucode_load_attr.attr); in otx_cpt_init_eng_grps()
1685 &eng_grps->ucode_load_attr); in otx_cpt_init_eng_grps()
1688 eng_grps->is_ucode_load_created = true; in otx_cpt_init_eng_grps()
1690 print_dbg_info(&pdev->dev, eng_grps); in otx_cpt_init_eng_grps()
1693 otx_cpt_cleanup_eng_grps(pdev, eng_grps); in otx_cpt_init_eng_grps()