mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-01-12 01:20:14 +00:00
drm/amd/display: Add missing encoder setup to DACnEncoderControl
Apparently the DAC encoder needs to be set up before use.
The BIOS parser in DC did not support this so I assumed it was
not necessary, but the DAC doesn't work without it on some GPUs.
Fixes: 69b29b894660 ("drm/amd/display: Hook up DAC to bios_parser_encoder_control")
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Timur Kristóf <timur.kristof@gmail.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
(cherry picked from commit bb5dfe2f5630ce344c654c705d28b4e20cb9d334)
This commit is contained in:
parent
fd40c146c8
commit
e0d20a7658
@ -763,14 +763,14 @@ static enum bp_result bios_parser_encoder_control(
|
||||
return BP_RESULT_FAILURE;
|
||||
|
||||
return bp->cmd_tbl.dac1_encoder_control(
|
||||
bp, cntl->action == ENCODER_CONTROL_ENABLE,
|
||||
bp, cntl->action,
|
||||
cntl->pixel_clock, ATOM_DAC1_PS2);
|
||||
} else if (cntl->engine_id == ENGINE_ID_DACB) {
|
||||
if (!bp->cmd_tbl.dac2_encoder_control)
|
||||
return BP_RESULT_FAILURE;
|
||||
|
||||
return bp->cmd_tbl.dac2_encoder_control(
|
||||
bp, cntl->action == ENCODER_CONTROL_ENABLE,
|
||||
bp, cntl->action,
|
||||
cntl->pixel_clock, ATOM_DAC1_PS2);
|
||||
}
|
||||
|
||||
|
||||
@ -1838,12 +1838,12 @@ static enum bp_result select_crtc_source_v3(
|
||||
|
||||
static enum bp_result dac1_encoder_control_v1(
|
||||
struct bios_parser *bp,
|
||||
bool enable,
|
||||
enum bp_encoder_control_action action,
|
||||
uint32_t pixel_clock,
|
||||
uint8_t dac_standard);
|
||||
static enum bp_result dac2_encoder_control_v1(
|
||||
struct bios_parser *bp,
|
||||
bool enable,
|
||||
enum bp_encoder_control_action action,
|
||||
uint32_t pixel_clock,
|
||||
uint8_t dac_standard);
|
||||
|
||||
@ -1869,12 +1869,15 @@ static void init_dac_encoder_control(struct bios_parser *bp)
|
||||
|
||||
static void dac_encoder_control_prepare_params(
|
||||
DAC_ENCODER_CONTROL_PS_ALLOCATION *params,
|
||||
bool enable,
|
||||
enum bp_encoder_control_action action,
|
||||
uint32_t pixel_clock,
|
||||
uint8_t dac_standard)
|
||||
{
|
||||
params->ucDacStandard = dac_standard;
|
||||
if (enable)
|
||||
if (action == ENCODER_CONTROL_SETUP ||
|
||||
action == ENCODER_CONTROL_INIT)
|
||||
params->ucAction = ATOM_ENCODER_INIT;
|
||||
else if (action == ENCODER_CONTROL_ENABLE)
|
||||
params->ucAction = ATOM_ENABLE;
|
||||
else
|
||||
params->ucAction = ATOM_DISABLE;
|
||||
@ -1887,7 +1890,7 @@ static void dac_encoder_control_prepare_params(
|
||||
|
||||
static enum bp_result dac1_encoder_control_v1(
|
||||
struct bios_parser *bp,
|
||||
bool enable,
|
||||
enum bp_encoder_control_action action,
|
||||
uint32_t pixel_clock,
|
||||
uint8_t dac_standard)
|
||||
{
|
||||
@ -1896,7 +1899,7 @@ static enum bp_result dac1_encoder_control_v1(
|
||||
|
||||
dac_encoder_control_prepare_params(
|
||||
¶ms,
|
||||
enable,
|
||||
action,
|
||||
pixel_clock,
|
||||
dac_standard);
|
||||
|
||||
@ -1908,7 +1911,7 @@ static enum bp_result dac1_encoder_control_v1(
|
||||
|
||||
static enum bp_result dac2_encoder_control_v1(
|
||||
struct bios_parser *bp,
|
||||
bool enable,
|
||||
enum bp_encoder_control_action action,
|
||||
uint32_t pixel_clock,
|
||||
uint8_t dac_standard)
|
||||
{
|
||||
@ -1917,7 +1920,7 @@ static enum bp_result dac2_encoder_control_v1(
|
||||
|
||||
dac_encoder_control_prepare_params(
|
||||
¶ms,
|
||||
enable,
|
||||
action,
|
||||
pixel_clock,
|
||||
dac_standard);
|
||||
|
||||
|
||||
@ -57,12 +57,12 @@ struct cmd_tbl {
|
||||
struct bp_crtc_source_select *bp_params);
|
||||
enum bp_result (*dac1_encoder_control)(
|
||||
struct bios_parser *bp,
|
||||
bool enable,
|
||||
enum bp_encoder_control_action action,
|
||||
uint32_t pixel_clock,
|
||||
uint8_t dac_standard);
|
||||
enum bp_result (*dac2_encoder_control)(
|
||||
struct bios_parser *bp,
|
||||
bool enable,
|
||||
enum bp_encoder_control_action action,
|
||||
uint32_t pixel_clock,
|
||||
uint8_t dac_standard);
|
||||
enum bp_result (*dac1_output_control)(
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user