Skip to content

Commit ba9086a

Browse files
committed
Merge tag 'amd-drm-fixes-5.9-2020-08-20' of git://people.freedesktop.org/~agd5f/linux into drm-fixes
amd-drm-fixes-5.9-2020-08-20: amdgpu: - Fixes for Navy Flounder - Misc display fixes - RAS fix amdkfd: - SDMA fix for renoir Signed-off-by: Dave Airlie <[email protected]> From: Alex Deucher <[email protected]> Link: https://patchwork.freedesktop.org/patch/msgid/[email protected]
2 parents 485d41b + da2446b commit ba9086a

16 files changed

+126
-22
lines changed

drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v9.c

Lines changed: 22 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -195,19 +195,32 @@ static uint32_t get_sdma_rlc_reg_offset(struct amdgpu_device *adev,
195195
unsigned int engine_id,
196196
unsigned int queue_id)
197197
{
198-
uint32_t sdma_engine_reg_base[2] = {
199-
SOC15_REG_OFFSET(SDMA0, 0,
200-
mmSDMA0_RLC0_RB_CNTL) - mmSDMA0_RLC0_RB_CNTL,
201-
SOC15_REG_OFFSET(SDMA1, 0,
202-
mmSDMA1_RLC0_RB_CNTL) - mmSDMA1_RLC0_RB_CNTL
203-
};
204-
uint32_t retval = sdma_engine_reg_base[engine_id]
198+
uint32_t sdma_engine_reg_base = 0;
199+
uint32_t sdma_rlc_reg_offset;
200+
201+
switch (engine_id) {
202+
default:
203+
dev_warn(adev->dev,
204+
"Invalid sdma engine id (%d), using engine id 0\n",
205+
engine_id);
206+
fallthrough;
207+
case 0:
208+
sdma_engine_reg_base = SOC15_REG_OFFSET(SDMA0, 0,
209+
mmSDMA0_RLC0_RB_CNTL) - mmSDMA0_RLC0_RB_CNTL;
210+
break;
211+
case 1:
212+
sdma_engine_reg_base = SOC15_REG_OFFSET(SDMA1, 0,
213+
mmSDMA1_RLC0_RB_CNTL) - mmSDMA0_RLC0_RB_CNTL;
214+
break;
215+
}
216+
217+
sdma_rlc_reg_offset = sdma_engine_reg_base
205218
+ queue_id * (mmSDMA0_RLC1_RB_CNTL - mmSDMA0_RLC0_RB_CNTL);
206219

207220
pr_debug("RLC register offset for SDMA%d RLC%d: 0x%x\n", engine_id,
208-
queue_id, retval);
221+
queue_id, sdma_rlc_reg_offset);
209222

210-
return retval;
223+
return sdma_rlc_reg_offset;
211224
}
212225

213226
static inline struct v9_mqd *get_mqd(void *mqd)

drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1243,7 +1243,6 @@ void amdgpu_ras_debugfs_remove(struct amdgpu_device *adev,
12431243
if (!obj || !obj->ent)
12441244
return;
12451245

1246-
debugfs_remove(obj->ent);
12471246
obj->ent = NULL;
12481247
put_obj(obj);
12491248
}
@@ -1257,7 +1256,6 @@ static void amdgpu_ras_debugfs_remove_all(struct amdgpu_device *adev)
12571256
amdgpu_ras_debugfs_remove(adev, &obj->head);
12581257
}
12591258

1260-
debugfs_remove_recursive(con->dir);
12611259
con->dir = NULL;
12621260
}
12631261
/* debugfs end */

drivers/gpu/drm/amd/amdgpu/psp_v11_0.c

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -179,12 +179,11 @@ static int psp_v11_0_init_microcode(struct psp_context *psp)
179179
}
180180
break;
181181
case CHIP_SIENNA_CICHLID:
182+
case CHIP_NAVY_FLOUNDER:
182183
err = psp_init_ta_microcode(&adev->psp, chip_name);
183184
if (err)
184185
return err;
185186
break;
186-
case CHIP_NAVY_FLOUNDER:
187-
break;
188187
default:
189188
BUG();
190189
}

drivers/gpu/drm/amd/display/dc/bios/bios_parser2.c

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1108,6 +1108,18 @@ static enum bp_result bios_parser_enable_disp_power_gating(
11081108
action);
11091109
}
11101110

1111+
static enum bp_result bios_parser_enable_lvtma_control(
1112+
struct dc_bios *dcb,
1113+
uint8_t uc_pwr_on)
1114+
{
1115+
struct bios_parser *bp = BP_FROM_DCB(dcb);
1116+
1117+
if (!bp->cmd_tbl.enable_lvtma_control)
1118+
return BP_RESULT_FAILURE;
1119+
1120+
return bp->cmd_tbl.enable_lvtma_control(bp, uc_pwr_on);
1121+
}
1122+
11111123
static bool bios_parser_is_accelerated_mode(
11121124
struct dc_bios *dcb)
11131125
{
@@ -2208,7 +2220,9 @@ static const struct dc_vbios_funcs vbios_funcs = {
22082220
.get_board_layout_info = bios_get_board_layout_info,
22092221
.pack_data_tables = bios_parser_pack_data_tables,
22102222

2211-
.get_atom_dc_golden_table = bios_get_atom_dc_golden_table
2223+
.get_atom_dc_golden_table = bios_get_atom_dc_golden_table,
2224+
2225+
.enable_lvtma_control = bios_parser_enable_lvtma_control
22122226
};
22132227

22142228
static bool bios_parser2_construct(

drivers/gpu/drm/amd/display/dc/bios/command_table2.c

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -904,6 +904,33 @@ static unsigned int get_smu_clock_info_v3_1(struct bios_parser *bp, uint8_t id)
904904
return 0;
905905
}
906906

907+
/******************************************************************************
908+
******************************************************************************
909+
**
910+
** LVTMA CONTROL
911+
**
912+
******************************************************************************
913+
*****************************************************************************/
914+
915+
static enum bp_result enable_lvtma_control(
916+
struct bios_parser *bp,
917+
uint8_t uc_pwr_on);
918+
919+
static void init_enable_lvtma_control(struct bios_parser *bp)
920+
{
921+
/* TODO add switch for table vrsion */
922+
bp->cmd_tbl.enable_lvtma_control = enable_lvtma_control;
923+
924+
}
925+
926+
static enum bp_result enable_lvtma_control(
927+
struct bios_parser *bp,
928+
uint8_t uc_pwr_on)
929+
{
930+
enum bp_result result = BP_RESULT_FAILURE;
931+
return result;
932+
}
933+
907934
void dal_firmware_parser_init_cmd_tbl(struct bios_parser *bp)
908935
{
909936
init_dig_encoder_control(bp);
@@ -919,4 +946,5 @@ void dal_firmware_parser_init_cmd_tbl(struct bios_parser *bp)
919946
init_set_dce_clock(bp);
920947
init_get_smu_clock_info(bp);
921948

949+
init_enable_lvtma_control(bp);
922950
}

drivers/gpu/drm/amd/display/dc/bios/command_table2.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,8 @@ struct cmd_tbl {
9494
struct bp_set_dce_clock_parameters *bp_params);
9595
unsigned int (*get_smu_clock_info)(
9696
struct bios_parser *bp, uint8_t id);
97-
97+
enum bp_result (*enable_lvtma_control)(struct bios_parser *bp,
98+
uint8_t uc_pwr_on);
9899
};
99100

100101
void dal_firmware_parser_init_cmd_tbl(struct bios_parser *bp);

drivers/gpu/drm/amd/display/dc/dc_bios_types.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -136,6 +136,10 @@ struct dc_vbios_funcs {
136136

137137
enum bp_result (*get_atom_dc_golden_table)(
138138
struct dc_bios *dcb);
139+
140+
enum bp_result (*enable_lvtma_control)(
141+
struct dc_bios *bios,
142+
uint8_t uc_pwr_on);
139143
};
140144

141145
struct bios_registers {

drivers/gpu/drm/amd/display/dc/dce110/dce110_hw_sequencer.c

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -842,6 +842,17 @@ void dce110_edp_power_control(
842842
cntl.coherent = false;
843843
cntl.lanes_number = LANE_COUNT_FOUR;
844844
cntl.hpd_sel = link->link_enc->hpd_source;
845+
846+
if (ctx->dc->ctx->dmub_srv &&
847+
ctx->dc->debug.dmub_command_table) {
848+
if (cntl.action == TRANSMITTER_CONTROL_POWER_ON)
849+
bp_result = ctx->dc_bios->funcs->enable_lvtma_control(ctx->dc_bios,
850+
LVTMA_CONTROL_POWER_ON);
851+
else
852+
bp_result = ctx->dc_bios->funcs->enable_lvtma_control(ctx->dc_bios,
853+
LVTMA_CONTROL_POWER_OFF);
854+
}
855+
845856
bp_result = link_transmitter_control(ctx->dc_bios, &cntl);
846857

847858
if (!power_up)
@@ -919,8 +930,21 @@ void dce110_edp_backlight_control(
919930
/*edp 1.2*/
920931
if (cntl.action == TRANSMITTER_CONTROL_BACKLIGHT_ON)
921932
edp_receiver_ready_T7(link);
933+
934+
if (ctx->dc->ctx->dmub_srv &&
935+
ctx->dc->debug.dmub_command_table) {
936+
if (cntl.action == TRANSMITTER_CONTROL_BACKLIGHT_ON)
937+
ctx->dc_bios->funcs->enable_lvtma_control(ctx->dc_bios,
938+
LVTMA_CONTROL_LCD_BLON);
939+
else
940+
ctx->dc_bios->funcs->enable_lvtma_control(ctx->dc_bios,
941+
LVTMA_CONTROL_LCD_BLOFF);
942+
}
943+
922944
link_transmitter_control(ctx->dc_bios, &cntl);
923945

946+
947+
924948
if (enable && link->dpcd_sink_ext_caps.bits.oled)
925949
msleep(OLED_POST_T7_DELAY);
926950

drivers/gpu/drm/amd/display/dc/dcn20/dcn20_hwseq.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1457,8 +1457,8 @@ static void dcn20_update_dchubp_dpp(
14571457

14581458
/* Any updates are handled in dc interface, just need to apply existing for plane enable */
14591459
if ((pipe_ctx->update_flags.bits.enable || pipe_ctx->update_flags.bits.opp_changed ||
1460-
pipe_ctx->update_flags.bits.scaler || pipe_ctx->update_flags.bits.viewport)
1461-
&& pipe_ctx->stream->cursor_attributes.address.quad_part != 0) {
1460+
pipe_ctx->update_flags.bits.scaler || viewport_changed == true) &&
1461+
pipe_ctx->stream->cursor_attributes.address.quad_part != 0) {
14621462
dc->hwss.set_cursor_position(pipe_ctx);
14631463
dc->hwss.set_cursor_attribute(pipe_ctx);
14641464

drivers/gpu/drm/amd/display/dc/dcn20/dcn20_link_encoder.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -167,7 +167,9 @@
167167
LE_SF(DCIO_SOFT_RESET, UNIPHYB_SOFT_RESET, mask_sh),\
168168
LE_SF(DCIO_SOFT_RESET, UNIPHYC_SOFT_RESET, mask_sh),\
169169
LE_SF(DCIO_SOFT_RESET, UNIPHYD_SOFT_RESET, mask_sh),\
170-
LE_SF(DCIO_SOFT_RESET, UNIPHYE_SOFT_RESET, mask_sh)
170+
LE_SF(DCIO_SOFT_RESET, UNIPHYE_SOFT_RESET, mask_sh),\
171+
LE_SF(RDPCSTX0_RDPCSTX_PHY_CNTL6, RDPCS_PHY_DPALT_DP4, mask_sh),\
172+
LE_SF(RDPCSTX0_RDPCSTX_PHY_CNTL6, RDPCS_PHY_DPALT_DISABLE, mask_sh)
171173

172174
#define LINK_ENCODER_MASK_SH_LIST_DCN20(mask_sh)\
173175
LINK_ENCODER_MASK_SH_LIST_DCN10(mask_sh),\

0 commit comments

Comments
 (0)