Lines Matching defs:pool

1402 static void dcn314_resource_destruct(struct dcn314_resource_pool *pool)
1406 for (i = 0; i < pool->base.stream_enc_count; i++) {
1407 if (pool->base.stream_enc[i] != NULL) {
1408 if (pool->base.stream_enc[i]->vpg != NULL) {
1409 kfree(DCN30_VPG_FROM_VPG(pool->base.stream_enc[i]->vpg));
1410 pool->base.stream_enc[i]->vpg = NULL;
1412 if (pool->base.stream_enc[i]->afmt != NULL) {
1413 kfree(DCN30_AFMT_FROM_AFMT(pool->base.stream_enc[i]->afmt));
1414 pool->base.stream_enc[i]->afmt = NULL;
1416 kfree(DCN10STRENC_FROM_STRENC(pool->base.stream_enc[i]));
1417 pool->base.stream_enc[i] = NULL;
1421 for (i = 0; i < pool->base.hpo_dp_stream_enc_count; i++) {
1422 if (pool->base.hpo_dp_stream_enc[i] != NULL) {
1423 if (pool->base.hpo_dp_stream_enc[i]->vpg != NULL) {
1424 kfree(DCN30_VPG_FROM_VPG(pool->base.hpo_dp_stream_enc[i]->vpg));
1425 pool->base.hpo_dp_stream_enc[i]->vpg = NULL;
1427 if (pool->base.hpo_dp_stream_enc[i]->apg != NULL) {
1428 kfree(DCN31_APG_FROM_APG(pool->base.hpo_dp_stream_enc[i]->apg));
1429 pool->base.hpo_dp_stream_enc[i]->apg = NULL;
1431 kfree(DCN3_1_HPO_DP_STREAM_ENC_FROM_HPO_STREAM_ENC(pool->base.hpo_dp_stream_enc[i]));
1432 pool->base.hpo_dp_stream_enc[i] = NULL;
1436 for (i = 0; i < pool->base.hpo_dp_link_enc_count; i++) {
1437 if (pool->base.hpo_dp_link_enc[i] != NULL) {
1438 kfree(DCN3_1_HPO_DP_LINK_ENC_FROM_HPO_LINK_ENC(pool->base.hpo_dp_link_enc[i]));
1439 pool->base.hpo_dp_link_enc[i] = NULL;
1443 for (i = 0; i < pool->base.res_cap->num_dsc; i++) {
1444 if (pool->base.dscs[i] != NULL)
1445 dcn20_dsc_destroy(&pool->base.dscs[i]);
1448 if (pool->base.mpc != NULL) {
1449 kfree(TO_DCN20_MPC(pool->base.mpc));
1450 pool->base.mpc = NULL;
1452 if (pool->base.hubbub != NULL) {
1453 kfree(pool->base.hubbub);
1454 pool->base.hubbub = NULL;
1456 for (i = 0; i < pool->base.pipe_count; i++) {
1457 if (pool->base.dpps[i] != NULL)
1458 dcn31_dpp_destroy(&pool->base.dpps[i]);
1460 if (pool->base.ipps[i] != NULL)
1461 pool->base.ipps[i]->funcs->ipp_destroy(&pool->base.ipps[i]);
1463 if (pool->base.hubps[i] != NULL) {
1464 kfree(TO_DCN20_HUBP(pool->base.hubps[i]));
1465 pool->base.hubps[i] = NULL;
1468 if (pool->base.irqs != NULL)
1469 dal_irq_service_destroy(&pool->base.irqs);
1472 for (i = 0; i < pool->base.res_cap->num_ddc; i++) {
1473 if (pool->base.engines[i] != NULL)
1474 dce110_engine_destroy(&pool->base.engines[i]);
1475 if (pool->base.hw_i2cs[i] != NULL) {
1476 kfree(pool->base.hw_i2cs[i]);
1477 pool->base.hw_i2cs[i] = NULL;
1479 if (pool->base.sw_i2cs[i] != NULL) {
1480 kfree(pool->base.sw_i2cs[i]);
1481 pool->base.sw_i2cs[i] = NULL;
1485 for (i = 0; i < pool->base.res_cap->num_opp; i++) {
1486 if (pool->base.opps[i] != NULL)
1487 pool->base.opps[i]->funcs->opp_destroy(&pool->base.opps[i]);
1490 for (i = 0; i < pool->base.res_cap->num_timing_generator; i++) {
1491 if (pool->base.timing_generators[i] != NULL) {
1492 kfree(DCN10TG_FROM_TG(pool->base.timing_generators[i]));
1493 pool->base.timing_generators[i] = NULL;
1497 for (i = 0; i < pool->base.res_cap->num_dwb; i++) {
1498 if (pool->base.dwbc[i] != NULL) {
1499 kfree(TO_DCN30_DWBC(pool->base.dwbc[i]));
1500 pool->base.dwbc[i] = NULL;
1502 if (pool->base.mcif_wb[i] != NULL) {
1503 kfree(TO_DCN30_MMHUBBUB(pool->base.mcif_wb[i]));
1504 pool->base.mcif_wb[i] = NULL;
1508 for (i = 0; i < pool->base.audio_count; i++) {
1509 if (pool->base.audios[i])
1510 dce_aud_destroy(&pool->base.audios[i]);
1513 for (i = 0; i < pool->base.clk_src_count; i++) {
1514 if (pool->base.clock_sources[i] != NULL) {
1515 dcn20_clock_source_destroy(&pool->base.clock_sources[i]);
1516 pool->base.clock_sources[i] = NULL;
1520 for (i = 0; i < pool->base.res_cap->num_mpc_3dlut; i++) {
1521 if (pool->base.mpc_lut[i] != NULL) {
1522 dc_3dlut_func_release(pool->base.mpc_lut[i]);
1523 pool->base.mpc_lut[i] = NULL;
1525 if (pool->base.mpc_shaper[i] != NULL) {
1526 dc_transfer_func_release(pool->base.mpc_shaper[i]);
1527 pool->base.mpc_shaper[i] = NULL;
1531 if (pool->base.dp_clock_source != NULL) {
1532 dcn20_clock_source_destroy(&pool->base.dp_clock_source);
1533 pool->base.dp_clock_source = NULL;
1536 for (i = 0; i < pool->base.res_cap->num_timing_generator; i++) {
1537 if (pool->base.multiple_abms[i] != NULL)
1538 dce_abm_destroy(&pool->base.multiple_abms[i]);
1541 if (pool->base.psr != NULL)
1542 dmub_psr_destroy(&pool->base.psr);
1544 if (pool->base.replay != NULL)
1545 dmub_replay_destroy(&pool->base.replay);
1547 if (pool->base.dccg != NULL)
1548 dcn_dccg_destroy(&pool->base.dccg);
1570 static bool dcn31_dwbc_create(struct dc_context *ctx, struct resource_pool *pool)
1573 uint32_t pipe_count = pool->res_cap->num_dwb;
1590 pool->dwbc[i] = &dwbc30->base;
1595 static bool dcn31_mmhubbub_create(struct dc_context *ctx, struct resource_pool *pool)
1598 uint32_t pipe_count = pool->res_cap->num_dwb;
1615 pool->mcif_wb[i] = &mcif_wb30->base;
1635 static void dcn314_destroy_resource_pool(struct resource_pool **pool)
1637 struct dcn314_resource_pool *dcn314_pool = TO_DCN314_RES_POOL(*pool);
1641 *pool = NULL;
1832 struct dcn314_resource_pool *pool)
1840 pool->base.res_cap = &res_cap_dcn314;
1841 pool->base.funcs = &dcn314_res_pool_funcs;
1846 pool->base.underlay_pipe_index = NO_UNDERLAY_PIPE;
1847 pool->base.pipe_count = pool->base.res_cap->num_timing_generator;
1848 pool->base.mpcc_count = pool->base.res_cap->num_timing_generator;
1897 dc->caps.color.mpc.num_3dluts = pool->base.res_cap->num_mpc_3dlut; //2
1946 pool->base.clock_sources[DCN31_CLK_SRC_PLL0] =
1950 pool->base.clock_sources[DCN31_CLK_SRC_PLL1] =
1954 pool->base.clock_sources[DCN31_CLK_SRC_PLL2] =
1958 pool->base.clock_sources[DCN31_CLK_SRC_PLL3] =
1962 pool->base.clock_sources[DCN31_CLK_SRC_PLL4] =
1967 pool->base.clk_src_count = DCN30_CLK_SRC_TOTAL;
1970 pool->base.dp_clock_source =
1975 for (i = 0; i < pool->base.clk_src_count; i++) {
1976 if (pool->base.clock_sources[i] == NULL) {
1983 pool->base.dccg = dccg314_create(ctx, &dccg_regs, &dccg_shift, &dccg_mask);
1984 if (pool->base.dccg == NULL) {
1991 pool->base.irqs = dal_irq_service_dcn314_create(&init_data);
1992 if (!pool->base.irqs)
1996 pool->base.hubbub = dcn31_hubbub_create(ctx);
1997 if (pool->base.hubbub == NULL) {
2004 for (i = 0; i < pool->base.pipe_count; i++) {
2005 pool->base.hubps[i] = dcn31_hubp_create(ctx, i);
2006 if (pool->base.hubps[i] == NULL) {
2013 pool->base.dpps[i] = dcn31_dpp_create(ctx, i);
2014 if (pool->base.dpps[i] == NULL) {
2022 for (i = 0; i < pool->base.res_cap->num_opp; i++) {
2023 pool->base.opps[i] = dcn31_opp_create(ctx, i);
2024 if (pool->base.opps[i] == NULL) {
2032 for (i = 0; i < pool->base.res_cap->num_timing_generator; i++) {
2033 pool->base.timing_generators[i] = dcn31_timing_generator_create(
2035 if (pool->base.timing_generators[i] == NULL) {
2041 pool->base.timing_generator_count = i;
2044 pool->base.psr = dmub_psr_create(ctx);
2045 if (pool->base.psr == NULL) {
2052 pool->base.replay = dmub_replay_create(ctx);
2053 if (pool->base.replay == NULL) {
2060 for (i = 0; i < pool->base.res_cap->num_timing_generator; i++) {
2061 pool->base.multiple_abms[i] = dmub_abm_create(ctx,
2065 if (pool->base.multiple_abms[i] == NULL) {
2073 pool->base.mpc = dcn31_mpc_create(ctx, pool->base.mpcc_count, pool->base.res_cap->num_mpc_3dlut);
2074 if (pool->base.mpc == NULL) {
2080 for (i = 0; i < pool->base.res_cap->num_dsc; i++) {
2081 pool->base.dscs[i] = dcn314_dsc_create(ctx, i);
2082 if (pool->base.dscs[i] == NULL) {
2090 if (!dcn31_dwbc_create(ctx, &pool->base)) {
2096 if (!dcn31_mmhubbub_create(ctx, &pool->base)) {
2103 for (i = 0; i < pool->base.res_cap->num_ddc; i++) {
2104 pool->base.engines[i] = dcn31_aux_engine_create(ctx, i);
2105 if (pool->base.engines[i] == NULL) {
2111 pool->base.hw_i2cs[i] = dcn31_i2c_hw_create(ctx, i);
2112 if (pool->base.hw_i2cs[i] == NULL) {
2118 pool->base.sw_i2cs[i] = NULL;
2122 pool->base.usb4_dpia_count = 4;
2125 if (!resource_construct(num_virtual_links, dc, &pool->base,
2132 dc->caps.max_planes = pool->base.pipe_count;
2145 dcn314_resource_destruct(pool);
2154 struct dcn314_resource_pool *pool =
2157 if (!pool)
2160 if (dcn314_resource_construct(init_data->num_virtual_links, dc, pool))
2161 return &pool->base;
2164 kfree(pool);