GENERIC_OBJECT_ID_BRACKET_LAYOUT << OBJECT_ID_SHIFT)
 #endif /* GENERICOBJECT_BRACKET_LAYOUT_ENUM_ID2 */
 
+
+//TODO: Remove this temp define after atomfirmware.h is updated.
+#define  ATOM_DISP_CONNECTOR_CAPS_RECORD_TYPE 23
+
+
 #define DC_LOGGER \
        bp->base.ctx->logger
 
        return NULL;
 }
 
+static struct atom_disp_connector_caps_record *get_disp_connector_caps_record(
+       struct bios_parser *bp,
+       struct atom_display_object_path_v2 *object)
+{
+       struct atom_common_record_header *header;
+       uint32_t offset;
+
+       if (!object) {
+               BREAK_TO_DEBUGGER(); /* Invalid object */
+               return NULL;
+       }
+
+       offset = object->disp_recordoffset + bp->object_info_tbl_offset;
+
+       for (;;) {
+               header = GET_IMAGE(struct atom_common_record_header, offset);
+
+               if (!header)
+                       return NULL;
+
+               offset += header->record_size;
+
+               if (header->record_type == LAST_RECORD_TYPE ||
+                               !header->record_size)
+                       break;
+
+               if (header->record_type != ATOM_DISP_CONNECTOR_CAPS_RECORD_TYPE)
+                       continue;
+
+               if (sizeof(struct atom_disp_connector_caps_record) <=
+                                                       header->record_size)
+                       return (struct atom_disp_connector_caps_record *)header;
+       }
+
+       return NULL;
+}
+
+static enum bp_result bios_parser_get_disp_connector_caps_info(
+       struct dc_bios *dcb,
+       struct graphics_object_id object_id,
+       struct bp_disp_connector_caps_info *info)
+{
+       struct bios_parser *bp = BP_FROM_DCB(dcb);
+       struct atom_display_object_path_v2 *object;
+       struct atom_disp_connector_caps_record *record = NULL;
+
+       if (!info)
+               return BP_RESULT_BADINPUT;
+
+       object = get_bios_object(bp, object_id);
+
+       if (!object)
+               return BP_RESULT_BADINPUT;
+
+       record = get_disp_connector_caps_record(bp, object);
+       if (!record)
+               return BP_RESULT_NORECORD;
+
+       info->INTERNAL_DISPLAY = (record->connectcaps & ATOM_CONNECTOR_CAP_INTERNAL_DISPLAY)
+                                                                       ? 1 : 0;
+       info->INTERNAL_DISPLAY_BL = (record->connectcaps & ATOM_CONNECTOR_CAP_INTERNAL_DISPLAY_BL)
+                                                                                       ? 1 : 0;
+
+       return BP_RESULT_OK;
+}
+
 static enum bp_result get_vram_info_v23(
        struct bios_parser *bp,
        struct dc_vram_info *info)
        .enable_lvtma_control = bios_parser_enable_lvtma_control,
 
        .get_soc_bb_info = bios_parser_get_soc_bb_info,
+
+       .get_disp_connector_caps_info = bios_parser_get_disp_connector_caps_info,
 };
 
 static bool bios_parser2_construct(
 
        struct integrated_info info = {{{ 0 }}};
        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 };
 
        DC_LOGGER_INIT(dc_ctx->logger);
 
        link->link_id =
                bios->funcs->get_connector_id(bios, init_params->connector_index);
 
+
+       if (bios->funcs->get_disp_connector_caps_info) {
+               bios->funcs->get_disp_connector_caps_info(bios, link->link_id, &disp_connect_caps_info);
+               link->is_internal_display = disp_connect_caps_info.INTERNAL_DISPLAY;
+       }
+
        if (link->link_id.type != OBJECT_TYPE_CONNECTOR) {
                dm_output_to_console("%s: Invalid Connector ObjectID from Adapter Service for connector index:%d! type %d expected %d\n",
                                     __func__, init_params->connector_index,