drm/amd/display: Update TX masks correctly
[Why] Bugs occur when TX interrupt comes in when no USB-C on board. [How] Check PHY for USB-C before enabling TX interrupt in DMCU FW. Signed-off-by: Alvin Lee <alvin.lee2@amd.com> Reviewed-by: Jun Lei <Jun.Lei@amd.com> Acked-by: Rodrigo Siqueira <Rodrigo.Siqueira@amd.com> Acked-by: Harry Wentland <harry.wentland@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
parent
8144148f3d
commit
017b3e56f8
@ -378,6 +378,11 @@ static bool dcn10_dmcu_init(struct dmcu *dmcu)
|
||||
struct dce_dmcu *dmcu_dce = TO_DCE_DMCU(dmcu);
|
||||
const struct dc_config *config = &dmcu->ctx->dc->config;
|
||||
bool status = false;
|
||||
struct dc_context *ctx = dmcu->ctx;
|
||||
unsigned int i;
|
||||
// 5 4 3 2 1 0
|
||||
// F E D C B A - bit 0 is A, bit 5 is F
|
||||
unsigned int tx_interrupt_mask = 0;
|
||||
|
||||
PERF_TRACE();
|
||||
/* Definition of DC_DMCU_SCRATCH
|
||||
@ -387,6 +392,15 @@ static bool dcn10_dmcu_init(struct dmcu *dmcu)
|
||||
*/
|
||||
dmcu->dmcu_state = REG_READ(DC_DMCU_SCRATCH);
|
||||
|
||||
for (i = 0; i < ctx->dc->link_count; i++) {
|
||||
if (ctx->dc->links[i]->link_enc->features.flags.bits.DP_IS_USB_C) {
|
||||
if (ctx->dc->links[i]->link_enc->transmitter >= TRANSMITTER_UNIPHY_A &&
|
||||
ctx->dc->links[i]->link_enc->transmitter <= TRANSMITTER_UNIPHY_F) {
|
||||
tx_interrupt_mask |= 1 << ctx->dc->links[i]->link_enc->transmitter;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
switch (dmcu->dmcu_state) {
|
||||
case DMCU_UNLOADED:
|
||||
status = false;
|
||||
@ -401,6 +415,8 @@ static bool dcn10_dmcu_init(struct dmcu *dmcu)
|
||||
/* Set backlight ramping stepsize */
|
||||
REG_WRITE(MASTER_COMM_DATA_REG2, abm_gain_stepsize);
|
||||
|
||||
REG_WRITE(MASTER_COMM_DATA_REG3, tx_interrupt_mask);
|
||||
|
||||
/* Set command to initialize microcontroller */
|
||||
REG_UPDATE(MASTER_COMM_CMD_REG, MASTER_COMM_CMD_REG_BYTE0,
|
||||
MCP_INIT_DMCU);
|
||||
|
Loading…
Reference in New Issue
Block a user