Commit 64ff0882 authored by George Shen's avatar George Shen Committed by Alex Deucher

drm/amd/display: Log link/connector info provided in BIOS object table

[Why/How]
Add logging statements to assist in debugging
errors in the BIOS object table.
Tested-by: default avatarDaniel Wheeler <daniel.wheeler@amd.com>
Signed-off-by: default avatarGeorge Shen <george.shen@amd.com>
Reviewed-by: default avatarNicholas Kazlauskas <Nicholas.Kazlauskas@amd.com>
Acked-by: default avatarAnson Jacob <anson.jacob@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent 16ca2d46
...@@ -175,6 +175,8 @@ static bool create_links( ...@@ -175,6 +175,8 @@ static bool create_links(
connectors_num = bios->funcs->get_connectors_number(bios); connectors_num = bios->funcs->get_connectors_number(bios);
DC_LOG_DC("BIOS object table - number of connectors: %d", connectors_num);
if (connectors_num > ENUM_ID_COUNT) { if (connectors_num > ENUM_ID_COUNT) {
dm_error( dm_error(
"DC: Number of connectors %d exceeds maximum of %d!\n", "DC: Number of connectors %d exceeds maximum of %d!\n",
...@@ -193,6 +195,8 @@ static bool create_links( ...@@ -193,6 +195,8 @@ static bool create_links(
struct link_init_data link_init_params = {0}; struct link_init_data link_init_params = {0};
struct dc_link *link; struct dc_link *link;
DC_LOG_DC("BIOS object table - printing link object info for connector number: %d, link_index: %d", i, dc->link_count);
link_init_params.ctx = dc->ctx; link_init_params.ctx = dc->ctx;
/* next BIOS object table connector */ /* next BIOS object table connector */
link_init_params.connector_index = i; link_init_params.connector_index = i;
...@@ -225,6 +229,8 @@ static bool create_links( ...@@ -225,6 +229,8 @@ static bool create_links(
} }
} }
DC_LOG_DC("BIOS object table - end");
for (i = 0; i < num_virtual_links; i++) { for (i = 0; i < num_virtual_links; i++) {
struct dc_link *link = kzalloc(sizeof(*link), GFP_KERNEL); struct dc_link *link = kzalloc(sizeof(*link), GFP_KERNEL);
struct encoder_init_data enc_init = {0}; struct encoder_init_data enc_init = {0};
......
...@@ -1401,10 +1401,12 @@ static bool dc_link_construct(struct dc_link *link, ...@@ -1401,10 +1401,12 @@ static bool dc_link_construct(struct dc_link *link,
link->link_id = link->link_id =
bios->funcs->get_connector_id(bios, init_params->connector_index); bios->funcs->get_connector_id(bios, init_params->connector_index);
DC_LOG_DC("BIOS object table - link_id: %d", link->link_id.id);
if (bios->funcs->get_disp_connector_caps_info) { if (bios->funcs->get_disp_connector_caps_info) {
bios->funcs->get_disp_connector_caps_info(bios, link->link_id, &disp_connect_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; link->is_internal_display = disp_connect_caps_info.INTERNAL_DISPLAY;
DC_LOG_DC("BIOS object table - is_internal_display: %d", link->is_internal_display);
} }
if (link->link_id.type != OBJECT_TYPE_CONNECTOR) { if (link->link_id.type != OBJECT_TYPE_CONNECTOR) {
...@@ -1419,10 +1421,14 @@ static bool dc_link_construct(struct dc_link *link, ...@@ -1419,10 +1421,14 @@ static bool dc_link_construct(struct dc_link *link,
link->hpd_gpio = get_hpd_gpio(link->ctx->dc_bios, link->link_id, link->hpd_gpio = get_hpd_gpio(link->ctx->dc_bios, link->link_id,
link->ctx->gpio_service); link->ctx->gpio_service);
if (link->hpd_gpio) { if (link->hpd_gpio) {
dal_gpio_open(link->hpd_gpio, GPIO_MODE_INTERRUPT); dal_gpio_open(link->hpd_gpio, GPIO_MODE_INTERRUPT);
dal_gpio_unlock_pin(link->hpd_gpio); dal_gpio_unlock_pin(link->hpd_gpio);
link->irq_source_hpd = dal_irq_get_source(link->hpd_gpio); link->irq_source_hpd = dal_irq_get_source(link->hpd_gpio);
DC_LOG_DC("BIOS object table - hpd_gpio id: %d", link->hpd_gpio->id);
DC_LOG_DC("BIOS object table - hpd_gpio en: %d", link->hpd_gpio->en);
} }
switch (link->link_id.id) { switch (link->link_id.id) {
...@@ -1519,6 +1525,8 @@ static bool dc_link_construct(struct dc_link *link, ...@@ -1519,6 +1525,8 @@ static bool dc_link_construct(struct dc_link *link,
link->link_enc = link->link_enc =
link->dc->res_pool->funcs->link_enc_create(&enc_init_data); link->dc->res_pool->funcs->link_enc_create(&enc_init_data);
DC_LOG_DC("BIOS object table - DP_IS_USB_C: %d", link->link_enc->features.flags.bits.DP_IS_USB_C);
if (!link->link_enc) { if (!link->link_enc) {
DC_ERROR("Failed to create link encoder!\n"); DC_ERROR("Failed to create link encoder!\n");
goto link_enc_create_fail; goto link_enc_create_fail;
...@@ -1546,6 +1554,10 @@ static bool dc_link_construct(struct dc_link *link, ...@@ -1546,6 +1554,10 @@ static bool dc_link_construct(struct dc_link *link,
if (link->device_tag.dev_id.device_type == DEVICE_TYPE_LCD && if (link->device_tag.dev_id.device_type == DEVICE_TYPE_LCD &&
link->connector_signal == SIGNAL_TYPE_RGB) link->connector_signal == SIGNAL_TYPE_RGB)
continue; continue;
DC_LOG_DC("BIOS object table - device_tag.acpi_device: %d", link->device_tag.acpi_device);
DC_LOG_DC("BIOS object table - device_tag.dev_id.device_type: %d", link->device_tag.dev_id.device_type);
DC_LOG_DC("BIOS object table - device_tag.dev_id.enum_id: %d", link->device_tag.dev_id.enum_id);
break; break;
} }
...@@ -1564,10 +1576,14 @@ static bool dc_link_construct(struct dc_link *link, ...@@ -1564,10 +1576,14 @@ static bool dc_link_construct(struct dc_link *link,
path->device_acpi_enum == link->device_tag.acpi_device) { path->device_acpi_enum == link->device_tag.acpi_device) {
link->ddi_channel_mapping = path->channel_mapping; link->ddi_channel_mapping = path->channel_mapping;
link->chip_caps = path->caps; link->chip_caps = path->caps;
DC_LOG_DC("BIOS object table - ddi_channel_mapping: 0x%04X", link->ddi_channel_mapping.raw);
DC_LOG_DC("BIOS object table - chip_caps: %d", link->chip_caps);
} else if (path->device_tag == } else if (path->device_tag ==
link->device_tag.dev_id.raw_device_tag) { link->device_tag.dev_id.raw_device_tag) {
link->ddi_channel_mapping = path->channel_mapping; link->ddi_channel_mapping = path->channel_mapping;
link->chip_caps = path->caps; link->chip_caps = path->caps;
DC_LOG_DC("BIOS object table - ddi_channel_mapping: 0x%04X", link->ddi_channel_mapping.raw);
DC_LOG_DC("BIOS object table - chip_caps: %d", link->chip_caps);
} }
break; break;
} }
...@@ -1586,6 +1602,7 @@ static bool dc_link_construct(struct dc_link *link, ...@@ -1586,6 +1602,7 @@ static bool dc_link_construct(struct dc_link *link,
link->psr_settings.psr_version = DC_PSR_VERSION_UNSUPPORTED; link->psr_settings.psr_version = DC_PSR_VERSION_UNSUPPORTED;
DC_LOG_DC("BIOS object table - dc_link_contruct finished successfully.\n");
return true; return true;
device_tag_fail: device_tag_fail:
link->link_enc->funcs->destroy(&link->link_enc); link->link_enc->funcs->destroy(&link->link_enc);
...@@ -1602,6 +1619,7 @@ static bool dc_link_construct(struct dc_link *link, ...@@ -1602,6 +1619,7 @@ static bool dc_link_construct(struct dc_link *link,
link->hpd_gpio = NULL; link->hpd_gpio = NULL;
} }
DC_LOG_DC("BIOS object table - dc_link_contruct failed.\n");
kfree(info); kfree(info);
return false; return false;
......
...@@ -37,6 +37,8 @@ ...@@ -37,6 +37,8 @@
#include "dc_link_ddc.h" #include "dc_link_ddc.h"
#include "dce/dce_aux.h" #include "dce/dce_aux.h"
#define DC_LOGGER_INIT(logger)
/*DP to Dual link DVI converter*/ /*DP to Dual link DVI converter*/
static const uint8_t DP_DVI_CONVERTER_ID_4[] = "m2DVIa"; static const uint8_t DP_DVI_CONVERTER_ID_4[] = "m2DVIa";
static const uint8_t DP_DVI_CONVERTER_ID_5[] = "3393N2"; static const uint8_t DP_DVI_CONVERTER_ID_5[] = "3393N2";
...@@ -194,6 +196,10 @@ static void ddc_service_construct( ...@@ -194,6 +196,10 @@ static void ddc_service_construct(
if (BP_RESULT_OK != dcb->funcs->get_i2c_info(dcb, init_data->id, &i2c_info)) { if (BP_RESULT_OK != dcb->funcs->get_i2c_info(dcb, init_data->id, &i2c_info)) {
ddc_service->ddc_pin = NULL; ddc_service->ddc_pin = NULL;
} else { } else {
DC_LOGGER_INIT(ddc_service->ctx->logger);
DC_LOG_DC("BIOS object table - i2c_line: %d", i2c_info.i2c_line);
DC_LOG_DC("BIOS object table - i2c_engine_id: %d", i2c_info.i2c_engine_id);
hw_info.ddc_channel = i2c_info.i2c_line; hw_info.ddc_channel = i2c_info.i2c_line;
if (ddc_service->link != NULL) if (ddc_service->link != NULL)
hw_info.hw_supported = i2c_info.i2c_hw_assist; hw_info.hw_supported = i2c_info.i2c_hw_assist;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment