mirror of
https://github.com/torvalds/linux.git
synced 2026-05-29 17:43:52 +02:00
drm/amd/display: Implement HDMI Read Request
[Why] Read Request provides alterative method to polling to the HDMI sinks that support it. [How] Implement Read Request where interrupt can be generated by the sink. Reviewed-by: Joshua Aberback <joshua.aberback@amd.com> Signed-off-by: Chris Park <chris.park@amd.com> Signed-off-by: Zaeem Mohamed <zaeem.mohamed@amd.com> Tested-by: Mark Broadworth <mark.broadworth@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
parent
f53d0f48a8
commit
724a4b400b
|
|
@ -1436,6 +1436,7 @@ struct dc_scratch_space {
|
|||
enum signal_type connector_signal;
|
||||
enum dc_irq_source irq_source_hpd;
|
||||
enum dc_irq_source irq_source_hpd_rx;/* aka DP Short Pulse */
|
||||
enum dc_irq_source irq_source_read_request;/* Read Request */
|
||||
|
||||
bool is_hpd_filter_disabled;
|
||||
bool dp_ss_off;
|
||||
|
|
|
|||
|
|
@ -210,6 +210,7 @@ struct dc_edid_caps {
|
|||
|
||||
bool edid_hdmi;
|
||||
bool hdr_supported;
|
||||
bool rr_capable;
|
||||
|
||||
struct dc_panel_patch panel_patch;
|
||||
};
|
||||
|
|
|
|||
|
|
@ -411,6 +411,20 @@ enum dc_irq_source dal_irq_get_rx_source(
|
|||
}
|
||||
}
|
||||
|
||||
enum dc_irq_source dal_irq_get_read_request(
|
||||
const struct gpio *irq)
|
||||
{
|
||||
enum gpio_id id = dal_gpio_get_id(irq);
|
||||
|
||||
switch (id) {
|
||||
case GPIO_ID_HPD:
|
||||
return (enum dc_irq_source)(DC_IRQ_SOURCE_DCI2C_RR_DDC1 +
|
||||
dal_gpio_get_enum(irq));
|
||||
default:
|
||||
return DC_IRQ_SOURCE_INVALID;
|
||||
}
|
||||
}
|
||||
|
||||
enum gpio_result dal_irq_setup_hpd_filter(
|
||||
struct gpio *irq,
|
||||
struct gpio_hpd_config *config)
|
||||
|
|
|
|||
|
|
@ -168,6 +168,13 @@ enum dc_irq_source {
|
|||
DC_IRQ_SOURCE_DC5_VLINE2,
|
||||
DC_IRQ_SOURCE_DC6_VLINE2,
|
||||
|
||||
DC_IRQ_SOURCE_DCI2C_RR_DDC1,
|
||||
DC_IRQ_SOURCE_DCI2C_RR_DDC2,
|
||||
DC_IRQ_SOURCE_DCI2C_RR_DDC3,
|
||||
DC_IRQ_SOURCE_DCI2C_RR_DDC4,
|
||||
DC_IRQ_SOURCE_DCI2C_RR_DDC5,
|
||||
DC_IRQ_SOURCE_DCI2C_RR_DDC6,
|
||||
|
||||
DAL_IRQ_SOURCES_NUMBER
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -464,6 +464,7 @@ static bool construct_phy(struct dc_link *link,
|
|||
|
||||
link->irq_source_hpd = DC_IRQ_SOURCE_INVALID;
|
||||
link->irq_source_hpd_rx = DC_IRQ_SOURCE_INVALID;
|
||||
link->irq_source_read_request = DC_IRQ_SOURCE_INVALID;
|
||||
link->link_status.dpcd_caps = &link->dpcd_caps;
|
||||
|
||||
link->dc = init_params->dc;
|
||||
|
|
@ -514,6 +515,9 @@ static bool construct_phy(struct dc_link *link,
|
|||
case CONNECTOR_ID_HDMI_TYPE_A:
|
||||
link->connector_signal = SIGNAL_TYPE_HDMI_TYPE_A;
|
||||
|
||||
if (link->hpd_gpio)
|
||||
link->irq_source_read_request =
|
||||
dal_irq_get_read_request(link->hpd_gpio);
|
||||
break;
|
||||
case CONNECTOR_ID_SINGLE_LINK_DVID:
|
||||
case CONNECTOR_ID_SINGLE_LINK_DVII:
|
||||
|
|
|
|||
|
|
@ -86,6 +86,9 @@ enum dc_irq_source dal_irq_get_source(
|
|||
enum dc_irq_source dal_irq_get_rx_source(
|
||||
const struct gpio *irq);
|
||||
|
||||
enum dc_irq_source dal_irq_get_read_request(
|
||||
const struct gpio *irq);
|
||||
|
||||
enum gpio_result dal_irq_setup_hpd_filter(
|
||||
struct gpio *irq,
|
||||
struct gpio_hpd_config *config);
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user