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()
593 struct otx_cpt_eng_grps *eng_grps) in print_dbg_info() argument
605 eng_grps->avail.max_se_cnt, eng_grps->avail.max_ae_cnt); in print_dbg_info()
606 pr_debug("free SE %d\n", eng_grps->avail.se_cnt); in print_dbg_info()
607 pr_debug("free AE %d\n", eng_grps->avail.ae_cnt); in print_dbg_info()
610 grp = &eng_grps->grp[i]; in print_dbg_info()
614 mirrored_grp = &eng_grps->grp[grp->mirror.idx]; in print_dbg_info()
631 eng_grps->engs_num); in print_dbg_info()
1024 struct otx_cpt_eng_grps *eng_grps = grp->g; in find_mirrored_eng_grp() local
1028 if (!eng_grps->grp[i].is_enabled) in find_mirrored_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()
1037 return &eng_grps->grp[i]; in find_mirrored_eng_grp()
1044 struct otx_cpt_eng_grps *eng_grps) in find_unused_eng_grp() argument
1049 if (!eng_grps->grp[i].is_enabled) in find_unused_eng_grp()
1050 return &eng_grps->grp[i]; in find_unused_eng_grp()
1202 struct otx_cpt_eng_grps *eng_grps, in create_engine_group() argument
1217 if (!dev_supports_eng_type(eng_grps, engs[i].type)) { in create_engine_group()
1224 eng_grp = find_unused_eng_grp(eng_grps); in create_engine_group()
1281 ret = enable_eng_grp(eng_grp, eng_grps->obj); in create_engine_group()
1320 struct otx_cpt_eng_grps *eng_grps; in ucode_load_store() local
1329 eng_grps = container_of(attr, struct otx_cpt_eng_grps, ucode_load_attr); in ucode_load_store()
1416 if (!eng_grps->grp[del_grp_idx].is_enabled) { in ucode_load_store()
1427 mutex_lock(&eng_grps->lock); in ucode_load_store()
1429 if (eng_grps->is_rdonly) { in ucode_load_store()
1437 ret = create_engine_group(dev, eng_grps, engs, grp_idx, in ucode_load_store()
1442 ret = delete_engine_group(dev, &eng_grps->grp[del_grp_idx]); in ucode_load_store()
1446 print_dbg_info(dev, eng_grps); in ucode_load_store()
1448 mutex_unlock(&eng_grps->lock); in ucode_load_store()
1457 struct otx_cpt_eng_grps *eng_grps, in otx_cpt_try_create_default_eng_grps() argument
1466 mutex_lock(&eng_grps->lock); in otx_cpt_try_create_default_eng_grps()
1472 if (eng_grps->is_first_try) in otx_cpt_try_create_default_eng_grps()
1474 eng_grps->is_first_try = true; in otx_cpt_try_create_default_eng_grps()
1478 if (eng_grps->grp[i].is_enabled) in otx_cpt_try_create_default_eng_grps()
1504 dev_supports_eng_type(eng_grps, OTX_CPT_SE_TYPES)) { in otx_cpt_try_create_default_eng_grps()
1507 engs[0].count = eng_grps->avail.max_se_cnt; in otx_cpt_try_create_default_eng_grps()
1509 ret = create_engine_group(&pdev->dev, eng_grps, engs, 1, in otx_cpt_try_create_default_eng_grps()
1521 dev_supports_eng_type(eng_grps, OTX_CPT_AE_TYPES)) { in otx_cpt_try_create_default_eng_grps()
1524 engs[0].count = eng_grps->avail.max_ae_cnt; in otx_cpt_try_create_default_eng_grps()
1526 ret = create_engine_group(&pdev->dev, eng_grps, engs, 1, in otx_cpt_try_create_default_eng_grps()
1532 print_dbg_info(&pdev->dev, eng_grps); in otx_cpt_try_create_default_eng_grps()
1536 mutex_unlock(&eng_grps->lock); in otx_cpt_try_create_default_eng_grps()
1540 void otx_cpt_set_eng_grps_is_rdonly(struct otx_cpt_eng_grps *eng_grps, in otx_cpt_set_eng_grps_is_rdonly() argument
1543 mutex_lock(&eng_grps->lock); in otx_cpt_set_eng_grps_is_rdonly()
1545 eng_grps->is_rdonly = is_rdonly; in otx_cpt_set_eng_grps_is_rdonly()
1547 mutex_unlock(&eng_grps->lock); in otx_cpt_set_eng_grps_is_rdonly()
1576 struct otx_cpt_eng_grps *eng_grps) in otx_cpt_cleanup_eng_grps() argument
1581 mutex_lock(&eng_grps->lock); in otx_cpt_cleanup_eng_grps()
1582 if (eng_grps->is_ucode_load_created) { in otx_cpt_cleanup_eng_grps()
1584 &eng_grps->ucode_load_attr); in otx_cpt_cleanup_eng_grps()
1585 eng_grps->is_ucode_load_created = false; in otx_cpt_cleanup_eng_grps()
1590 if (eng_grps->grp[i].mirror.is_ena) in otx_cpt_cleanup_eng_grps()
1591 delete_engine_group(&pdev->dev, &eng_grps->grp[i]); in otx_cpt_cleanup_eng_grps()
1595 delete_engine_group(&pdev->dev, &eng_grps->grp[i]); in otx_cpt_cleanup_eng_grps()
1599 grp = &eng_grps->grp[i]; in otx_cpt_cleanup_eng_grps()
1606 mutex_unlock(&eng_grps->lock); in otx_cpt_cleanup_eng_grps()
1610 struct otx_cpt_eng_grps *eng_grps, int pf_type) in otx_cpt_init_eng_grps() argument
1615 mutex_init(&eng_grps->lock); in otx_cpt_init_eng_grps()
1616 eng_grps->obj = pci_get_drvdata(pdev); in otx_cpt_init_eng_grps()
1617 eng_grps->avail.se_cnt = eng_grps->avail.max_se_cnt; in otx_cpt_init_eng_grps()
1618 eng_grps->avail.ae_cnt = eng_grps->avail.max_ae_cnt; in otx_cpt_init_eng_grps()
1620 eng_grps->engs_num = eng_grps->avail.max_se_cnt + in otx_cpt_init_eng_grps()
1621 eng_grps->avail.max_ae_cnt; in otx_cpt_init_eng_grps()
1622 if (eng_grps->engs_num > OTX_CPT_MAX_ENGINES) { in otx_cpt_init_eng_grps()
1625 eng_grps->engs_num, OTX_CPT_MAX_ENGINES); in otx_cpt_init_eng_grps()
1631 grp = &eng_grps->grp[i]; in otx_cpt_init_eng_grps()
1632 grp->g = eng_grps; in otx_cpt_init_eng_grps()
1639 kcalloc(BITS_TO_LONGS(eng_grps->engs_num), in otx_cpt_init_eng_grps()
1651 eng_grps->eng_types_supported = 1 << OTX_CPT_SE_TYPES; in otx_cpt_init_eng_grps()
1656 eng_grps->eng_types_supported = 1 << OTX_CPT_AE_TYPES; in otx_cpt_init_eng_grps()
1665 eng_grps->ucode_load_attr.show = NULL; in otx_cpt_init_eng_grps()
1666 eng_grps->ucode_load_attr.store = ucode_load_store; in otx_cpt_init_eng_grps()
1667 eng_grps->ucode_load_attr.attr.name = "ucode_load"; in otx_cpt_init_eng_grps()
1668 eng_grps->ucode_load_attr.attr.mode = 0220; in otx_cpt_init_eng_grps()
1669 sysfs_attr_init(&eng_grps->ucode_load_attr.attr); in otx_cpt_init_eng_grps()
1671 &eng_grps->ucode_load_attr); in otx_cpt_init_eng_grps()
1674 eng_grps->is_ucode_load_created = true; in otx_cpt_init_eng_grps()
1676 print_dbg_info(&pdev->dev, eng_grps); in otx_cpt_init_eng_grps()
1679 otx_cpt_cleanup_eng_grps(pdev, eng_grps); in otx_cpt_init_eng_grps()