struct dc_bios *bios = init_params->dc->ctx->dc_bios;
        const struct dc_vbios_funcs *bp_funcs = bios->funcs;
        struct bp_disp_connector_caps_info disp_connect_caps_info = { 0 };
-       struct dc_link *edp_links[MAX_NUM_EDP];
-       int edp_num;
 
        DC_LOGGER_INIT(dc_ctx->logger);
 
                (link->link_id.id == CONNECTOR_ID_EDP ||
                        link->link_id.id == CONNECTOR_ID_LVDS)) {
                panel_cntl_init_data.ctx = dc_ctx;
-               get_edp_links(panel_cntl_init_data.ctx->dc, edp_links, &edp_num);
-               if ((edp_num > 1) && (link->link_index > edp_links[0]->link_index))
-                       panel_cntl_init_data.inst = 1;
-               else
-                       panel_cntl_init_data.inst = 0;
+               panel_cntl_init_data.inst =
+                       panel_cntl_init_data.ctx->dc_edp_id_count;
                link->panel_cntl =
                        link->dc->res_pool->funcs->panel_cntl_create(
                                                                &panel_cntl_init_data);
+               panel_cntl_init_data.ctx->dc_edp_id_count++;
 
                if (link->panel_cntl == NULL) {
                        DC_ERROR("Failed to create link panel_cntl!\n");
 
        struct gpio_service *gpio_service;
        uint32_t dc_sink_id_count;
        uint32_t dc_stream_id_count;
+       uint32_t dc_edp_id_count;
        uint64_t fbc_gpu_addr;
        struct dc_dmub_srv *dmub_srv;