From 40fadb4c73a4589e6a9be545c377de13e67e0b93 Mon Sep 17 00:00:00 2001 From: Meenakshikumar Somasundaram Date: Fri, 13 Aug 2021 13:09:25 -0400 Subject: [PATCH] drm/amd/display: Fix for access for ddc pin and aux engine. [Why & How] 1. Remove unnecessary dummy interrupt source for USB4 HPD & HPD RX 2. Adjust parameter for DPCD writing of link training process of DPIA link 3. Adjust specific AUX defer delay for DPIA link Reviewed-by: Jimmy Kizito Acked-by: Wayne Lin Acked-by: Nicholas Kazlauskas Acked-by: Harry Wentland Signed-off-by: Meenakshikumar Somasundaram Signed-off-by: Alex Deucher --- drivers/gpu/drm/amd/display/dc/core/dc_link.c | 6 +++--- drivers/gpu/drm/amd/display/dc/core/dc_link_dpia.c | 6 +++--- drivers/gpu/drm/amd/display/dc/dce/dce_aux.c | 3 +++ drivers/gpu/drm/amd/display/dc/irq_types.h | 5 +---- 4 files changed, 10 insertions(+), 10 deletions(-) diff --git a/drivers/gpu/drm/amd/display/dc/core/dc_link.c b/drivers/gpu/drm/amd/display/dc/core/dc_link.c index 6b5ddf0a29c12..ca5dc3c168ecf 100644 --- a/drivers/gpu/drm/amd/display/dc/core/dc_link.c +++ b/drivers/gpu/drm/amd/display/dc/core/dc_link.c @@ -1709,9 +1709,9 @@ static bool dc_link_construct_dpia(struct dc_link *link, DC_LOGGER_INIT(dc_ctx->logger); - /* Initialized dummy hpd and hpd rx */ - link->irq_source_hpd = DC_IRQ_SOURCE_USB4_DMUB_HPD; - link->irq_source_hpd_rx = DC_IRQ_SOURCE_USB4_DMUB_HPDRX; + /* Initialized irq source for hpd and hpd rx */ + link->irq_source_hpd = DC_IRQ_SOURCE_INVALID; + link->irq_source_hpd_rx = DC_IRQ_SOURCE_INVALID; link->link_status.dpcd_caps = &link->dpcd_caps; link->dc = init_params->dc; diff --git a/drivers/gpu/drm/amd/display/dc/core/dc_link_dpia.c b/drivers/gpu/drm/amd/display/dc/core/dc_link_dpia.c index 9c620b61f64e6..6936b9d549e57 100644 --- a/drivers/gpu/drm/amd/display/dc/core/dc_link_dpia.c +++ b/drivers/gpu/drm/amd/display/dc/core/dc_link_dpia.c @@ -234,7 +234,7 @@ static enum dc_status dpcd_set_lt_pattern(struct dc_link *link, } status = core_link_write_dpcd(link, - DP_TRAINING_PATTERN_SET, + dpcd_tps_offset, &dpcd_pattern.raw, sizeof(dpcd_pattern.raw)); @@ -796,7 +796,7 @@ static enum dc_status dpcd_clear_lt_pattern(struct dc_link *link, uint32_t hop) ((DP_REPEATER_CONFIGURATION_AND_STATUS_SIZE) * (hop - 1)); status = core_link_write_dpcd(link, - DP_TRAINING_PATTERN_SET, + dpcd_tps_offset, &dpcd_pattern.raw, sizeof(dpcd_pattern.raw)); @@ -906,7 +906,7 @@ enum link_training_result dc_link_dpia_perform_link_training(struct dc_link *lin enum link_training_result result; struct link_training_settings lt_settings; uint8_t repeater_cnt = 0; /* Number of hops/repeaters in display path. */ - uint8_t repeater_id; /* Current hop. */ + int8_t repeater_id; /* Current hop. */ /* Configure link as prescribed in link_setting and set LTTPR mode. */ result = dpia_configure_link(link, link_setting, <_settings); diff --git a/drivers/gpu/drm/amd/display/dc/dce/dce_aux.c b/drivers/gpu/drm/amd/display/dc/dce/dce_aux.c index 5666543f095bc..95cb4d7cc76ae 100644 --- a/drivers/gpu/drm/amd/display/dc/dce/dce_aux.c +++ b/drivers/gpu/drm/amd/display/dc/dce/dce_aux.c @@ -627,6 +627,7 @@ int dce_aux_transfer_dmub_raw(struct ddc_service *ddc, #define AUX_MAX_I2C_DEFER_RETRIES 7 #define AUX_MAX_INVALID_REPLY_RETRIES 2 #define AUX_MAX_TIMEOUT_RETRIES 3 +#define AUX_DEFER_DELAY_FOR_DPIA 4 /*ms*/ static void dce_aux_log_payload(const char *payload_name, unsigned char *payload, uint32_t length, uint32_t max_length_to_log) @@ -772,6 +773,8 @@ bool dce_aux_transfer_with_retries(struct ddc_service *ddc, /* polling_timeout_period is in us */ if (aux110) defer_time_in_ms += aux110->polling_timeout_period / 1000; + else + defer_time_in_ms += AUX_DEFER_DELAY_FOR_DPIA; ++aux_defer_retries; fallthrough; case AUX_TRANSACTION_REPLY_I2C_OVER_AUX_DEFER: diff --git a/drivers/gpu/drm/amd/display/dc/irq_types.h b/drivers/gpu/drm/amd/display/dc/irq_types.h index 7a9f667d5edb4..530c2578db406 100644 --- a/drivers/gpu/drm/amd/display/dc/irq_types.h +++ b/drivers/gpu/drm/amd/display/dc/irq_types.h @@ -153,10 +153,7 @@ enum dc_irq_source { DC_IRQ_SOURCE_DMCUB_OUTBOX, DC_IRQ_SOURCE_DMCUB_OUTBOX0, DC_IRQ_SOURCE_DMCUB_GENERAL_DATAOUT, - DAL_IRQ_SOURCES_NUMBER, - /* Dummy interrupt source for USB4 HPD & HPD RX */ - DC_IRQ_SOURCE_USB4_DMUB_HPD, - DC_IRQ_SOURCE_USB4_DMUB_HPDRX, + DAL_IRQ_SOURCES_NUMBER }; enum irq_type -- 2.30.2