Commit eeefe7c4 authored by Robin Chen's avatar Robin Chen Committed by Alex Deucher
Browse files

drm/amd/display: hpd rx irq not working with eDP interface



[Why]
This is the fix for the defect of commit ab144f0b
("drm/amd/display: Allow individual control of eDP hotplug support").

[How]
To revise the default eDP hotplug setting and use the enum to git rid
of the magic number for different options.

Fixes: ab144f0b ("drm/amd/display: Allow individual control of eDP hotplug support")
Cc: stable@vger.kernel.org
Cc: Mario Limonciello <mario.limonciello@amd.com>
Reviewed-by: default avatarWenjing Liu <Wenjing.Liu@amd.com>
Acked-by: default avatarQingqing Zhuo <qingqing.zhuo@amd.com>
Signed-off-by: default avatarRobin Chen <robin.chen@amd.com>
Tested-by: default avatarDaniel Wheeler <daniel.wheeler@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent 825b3772
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -1080,4 +1080,11 @@ struct dc_dpia_bw_alloc {
};

#define MAX_SINKS_PER_LINK 4

enum dc_hpd_enable_select {
	HPD_EN_FOR_ALL_EDP = 0,
	HPD_EN_FOR_PRIMARY_EDP_ONLY,
	HPD_EN_FOR_SECONDARY_EDP_ONLY,
};

#endif /* DC_TYPES_H_ */
+7 −2
Original line number Diff line number Diff line
@@ -528,14 +528,18 @@ static bool construct_phy(struct dc_link *link,
				link->irq_source_hpd = DC_IRQ_SOURCE_INVALID;

			switch (link->dc->config.allow_edp_hotplug_detection) {
			case 1: // only the 1st eDP handles hotplug
			case HPD_EN_FOR_ALL_EDP:
				link->irq_source_hpd_rx =
						dal_irq_get_rx_source(link->hpd_gpio);
				break;
			case HPD_EN_FOR_PRIMARY_EDP_ONLY:
				if (link->link_index == 0)
					link->irq_source_hpd_rx =
						dal_irq_get_rx_source(link->hpd_gpio);
				else
					link->irq_source_hpd = DC_IRQ_SOURCE_INVALID;
				break;
			case 2: // only the 2nd eDP handles hotplug
			case HPD_EN_FOR_SECONDARY_EDP_ONLY:
				if (link->link_index == 1)
					link->irq_source_hpd_rx =
						dal_irq_get_rx_source(link->hpd_gpio);
@@ -543,6 +547,7 @@ static bool construct_phy(struct dc_link *link,
					link->irq_source_hpd = DC_IRQ_SOURCE_INVALID;
				break;
			default:
				link->irq_source_hpd = DC_IRQ_SOURCE_INVALID;
				break;
			}
		}