Commit 494941aa authored by Timur Kristóf's avatar Timur Kristóf Committed by Alex Deucher
Browse files

drm/amd/display: Allow embedded connectors without DDC

On some laptops, the embedded panel may not have
a DDC (display data channel) available. On these,
the EDID may be hardcoded in ACPI or the VBIOS.

In this case, use GPIO_DDC_LINE_UNKNOWN and don't fail.

Fixes: def3488e ("drm/amd/display: refactor HPD to increase flexibility")
Link: https://gitlab.freedesktop.org/drm/amd/-/work_items/5192


Signed-off-by: default avatarTimur Kristóf <timur.kristof@gmail.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
(cherry picked from commit 75b8a6ca0e8bc3ce24572f854e95f8721b321179)
parent a1fc7bf6
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -1682,7 +1682,7 @@ struct dc_scratch_space {
	struct dc_link_training_overrides preferred_training_settings;
	struct dp_audio_test_data audio_test_data;

	uint8_t ddc_hw_inst;
	enum gpio_ddc_line ddc_hw_inst;

	uint8_t hpd_src;

+3 −0
Original line number Diff line number Diff line
@@ -646,6 +646,9 @@ enum gpio_result dal_ddc_change_mode(
enum gpio_ddc_line dal_ddc_get_line(
	const struct ddc *ddc)
{
	if (!ddc)
		return GPIO_DDC_LINE_UNKNOWN;

	return (enum gpio_ddc_line)dal_gpio_get_enum(ddc->pin_data);
}

+3 −1
Original line number Diff line number Diff line
@@ -568,7 +568,9 @@ static bool construct_phy(struct dc_link *link,
		goto ddc_create_fail;
	}

	if (!link->ddc->ddc_pin) {
	/* Embedded display connectors such as LVDS may not have DDC. */
	if (!link->ddc->ddc_pin &&
	    !dc_is_embedded_signal(link->connector_signal)) {
		DC_ERROR("Failed to get I2C info for connector!\n");
		goto ddc_create_fail;
	}