struct dce_hwseq *hws = dc->hwseq;
        struct hubbub *hubbub = dc->res_pool->hubbub;
        bool can_apply_seamless_boot = false;
+       bool tg_enabled[MAX_PIPES] = {false};
 
        for (i = 0; i < context->stream_count; i++) {
                if (context->streams[i]->apply_seamless_boot_optimization) {
                        // requesting data while in PSR.
                        tg->funcs->tg_init(tg);
                        hubp->power_gated = true;
+                       tg_enabled[i] = true;
                        continue;
                }
 
                tg->funcs->tg_init(tg);
        }
 
+       /* Clean up MPC tree */
+       for (i = 0; i < dc->res_pool->pipe_count; i++) {
+               if (tg_enabled[i]) {
+                       if (dc->res_pool->opps[i]->mpc_tree_params.opp_list) {
+                               if (dc->res_pool->opps[i]->mpc_tree_params.opp_list->mpcc_bot) {
+                                       int bot_id = dc->res_pool->opps[i]->mpc_tree_params.opp_list->mpcc_bot->mpcc_id;
+
+                                       if ((bot_id < MAX_MPCC) && (bot_id < MAX_PIPES) && (!tg_enabled[bot_id]))
+                                               dc->res_pool->opps[i]->mpc_tree_params.opp_list = NULL;
+                               }
+                       }
+               }
+       }
+
        /* Power gate DSCs */
        if (hws->funcs.dsc_pg_control != NULL) {
                uint32_t num_opps = 0;
 
        struct hubbub *hubbub = dc->res_pool->hubbub;
        struct pg_cntl *pg_cntl = dc->res_pool->pg_cntl;
        bool can_apply_seamless_boot = false;
+       bool tg_enabled[MAX_PIPES] = {false};
 
        for (i = 0; i < context->stream_count; i++) {
                if (context->streams[i]->apply_seamless_boot_optimization) {
                        // requesting data while in PSR.
                        tg->funcs->tg_init(tg);
                        hubp->power_gated = true;
+                       tg_enabled[i] = true;
                        continue;
                }
 
                tg->funcs->tg_init(tg);
        }
 
+       /* Clean up MPC tree */
+       for (i = 0; i < dc->res_pool->pipe_count; i++) {
+               if (tg_enabled[i]) {
+                       if (dc->res_pool->opps[i]->mpc_tree_params.opp_list) {
+                               if (dc->res_pool->opps[i]->mpc_tree_params.opp_list->mpcc_bot) {
+                                       int bot_id = dc->res_pool->opps[i]->mpc_tree_params.opp_list->mpcc_bot->mpcc_id;
+
+                                       if ((bot_id < MAX_MPCC) && (bot_id < MAX_PIPES) && (!tg_enabled[bot_id]))
+                                               dc->res_pool->opps[i]->mpc_tree_params.opp_list = NULL;
+                               }
+                       }
+               }
+       }
+
        if (pg_cntl != NULL) {
                if (pg_cntl->funcs->dsc_pg_control != NULL) {
                        uint32_t num_opps = 0;