Commit 40fadb4c authored by Meenakshikumar Somasundaram's avatar Meenakshikumar Somasundaram Committed by Alex Deucher

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: default avatarJimmy Kizito <Jimmy.Kizito@amd.com>
Acked-by: default avatarWayne Lin <Wayne.Lin@amd.com>
Acked-by: default avatarNicholas Kazlauskas <nicholas.kazlauskas@amd.com>
Acked-by: default avatarHarry Wentland <harry.wentland@amd.com>
Signed-off-by: default avatarMeenakshikumar Somasundaram <meenakshikumar.somasundaram@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent 6aa8d42c
...@@ -1709,9 +1709,9 @@ static bool dc_link_construct_dpia(struct dc_link *link, ...@@ -1709,9 +1709,9 @@ static bool dc_link_construct_dpia(struct dc_link *link,
DC_LOGGER_INIT(dc_ctx->logger); DC_LOGGER_INIT(dc_ctx->logger);
/* Initialized dummy hpd and hpd rx */ /* Initialized irq source for hpd and hpd rx */
link->irq_source_hpd = DC_IRQ_SOURCE_USB4_DMUB_HPD; link->irq_source_hpd = DC_IRQ_SOURCE_INVALID;
link->irq_source_hpd_rx = DC_IRQ_SOURCE_USB4_DMUB_HPDRX; link->irq_source_hpd_rx = DC_IRQ_SOURCE_INVALID;
link->link_status.dpcd_caps = &link->dpcd_caps; link->link_status.dpcd_caps = &link->dpcd_caps;
link->dc = init_params->dc; link->dc = init_params->dc;
......
...@@ -234,7 +234,7 @@ static enum dc_status dpcd_set_lt_pattern(struct dc_link *link, ...@@ -234,7 +234,7 @@ static enum dc_status dpcd_set_lt_pattern(struct dc_link *link,
} }
status = core_link_write_dpcd(link, status = core_link_write_dpcd(link,
DP_TRAINING_PATTERN_SET, dpcd_tps_offset,
&dpcd_pattern.raw, &dpcd_pattern.raw,
sizeof(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) ...@@ -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)); ((DP_REPEATER_CONFIGURATION_AND_STATUS_SIZE) * (hop - 1));
status = core_link_write_dpcd(link, status = core_link_write_dpcd(link,
DP_TRAINING_PATTERN_SET, dpcd_tps_offset,
&dpcd_pattern.raw, &dpcd_pattern.raw,
sizeof(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 ...@@ -906,7 +906,7 @@ enum link_training_result dc_link_dpia_perform_link_training(struct dc_link *lin
enum link_training_result result; enum link_training_result result;
struct link_training_settings lt_settings; struct link_training_settings lt_settings;
uint8_t repeater_cnt = 0; /* Number of hops/repeaters in display path. */ 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. */ /* Configure link as prescribed in link_setting and set LTTPR mode. */
result = dpia_configure_link(link, link_setting, &lt_settings); result = dpia_configure_link(link, link_setting, &lt_settings);
......
...@@ -627,6 +627,7 @@ int dce_aux_transfer_dmub_raw(struct ddc_service *ddc, ...@@ -627,6 +627,7 @@ int dce_aux_transfer_dmub_raw(struct ddc_service *ddc,
#define AUX_MAX_I2C_DEFER_RETRIES 7 #define AUX_MAX_I2C_DEFER_RETRIES 7
#define AUX_MAX_INVALID_REPLY_RETRIES 2 #define AUX_MAX_INVALID_REPLY_RETRIES 2
#define AUX_MAX_TIMEOUT_RETRIES 3 #define AUX_MAX_TIMEOUT_RETRIES 3
#define AUX_DEFER_DELAY_FOR_DPIA 4 /*ms*/
static void dce_aux_log_payload(const char *payload_name, static void dce_aux_log_payload(const char *payload_name,
unsigned char *payload, uint32_t length, uint32_t max_length_to_log) 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, ...@@ -772,6 +773,8 @@ bool dce_aux_transfer_with_retries(struct ddc_service *ddc,
/* polling_timeout_period is in us */ /* polling_timeout_period is in us */
if (aux110) if (aux110)
defer_time_in_ms += aux110->polling_timeout_period / 1000; defer_time_in_ms += aux110->polling_timeout_period / 1000;
else
defer_time_in_ms += AUX_DEFER_DELAY_FOR_DPIA;
++aux_defer_retries; ++aux_defer_retries;
fallthrough; fallthrough;
case AUX_TRANSACTION_REPLY_I2C_OVER_AUX_DEFER: case AUX_TRANSACTION_REPLY_I2C_OVER_AUX_DEFER:
......
...@@ -153,10 +153,7 @@ enum dc_irq_source { ...@@ -153,10 +153,7 @@ enum dc_irq_source {
DC_IRQ_SOURCE_DMCUB_OUTBOX, DC_IRQ_SOURCE_DMCUB_OUTBOX,
DC_IRQ_SOURCE_DMCUB_OUTBOX0, DC_IRQ_SOURCE_DMCUB_OUTBOX0,
DC_IRQ_SOURCE_DMCUB_GENERAL_DATAOUT, DC_IRQ_SOURCE_DMCUB_GENERAL_DATAOUT,
DAL_IRQ_SOURCES_NUMBER, DAL_IRQ_SOURCES_NUMBER
/* Dummy interrupt source for USB4 HPD & HPD RX */
DC_IRQ_SOURCE_USB4_DMUB_HPD,
DC_IRQ_SOURCE_USB4_DMUB_HPDRX,
}; };
enum irq_type enum irq_type
......
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