drm/amd/display: move dp phy related logic to link_dp_phy
Tested-by: Daniel Wheeler <Daniel.Wheeler@amd.com> Reviewed-by: Wesley Chalmers <Wesley.Chalmers@amd.com> Acked-by: Rodrigo Siqueira <Rodrigo.Siqueira@amd.com> Signed-off-by: Wenjing Liu <wenjing.liu@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
parent
630168a973
commit
94dfeaa469
@ -35,6 +35,7 @@
|
||||
#include "resource.h"
|
||||
#include "dsc.h"
|
||||
#include "dc_link_dp.h"
|
||||
#include "dc_link.h"
|
||||
#include "link_hwss.h"
|
||||
#include "dc/dc_dmub_srv.h"
|
||||
|
||||
@ -3395,7 +3396,7 @@ static int trigger_hpd_mst_set(void *data, u64 val)
|
||||
continue;
|
||||
|
||||
link = aconnector->dc_link;
|
||||
dp_receiver_power_ctrl(link, false);
|
||||
dc_link_dp_receiver_power_ctrl(link, false);
|
||||
drm_dp_mst_topology_mgr_set_mst(&aconnector->mst_port->mst_mgr, false);
|
||||
link->mst_stream_alloc_table.stream_count = 0;
|
||||
memset(link->mst_stream_alloc_table.stream_allocations, 0,
|
||||
|
@ -55,6 +55,7 @@
|
||||
#include "link/link_dp_trace.h"
|
||||
#include "link/link_hpd.h"
|
||||
#include "link/link_dp_training.h"
|
||||
#include "link/link_dp_phy.h"
|
||||
|
||||
#include "dc/dcn30/dcn30_vpg.h"
|
||||
|
||||
@ -2174,7 +2175,7 @@ void dc_link_blank_dp_stream(struct dc_link *link, bool hw_init)
|
||||
}
|
||||
|
||||
if ((!link->wa_flags.dp_keep_receiver_powered) || hw_init)
|
||||
dp_receiver_power_ctrl(link, false);
|
||||
dc_link_dp_receiver_power_ctrl(link, false);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -45,6 +45,7 @@
|
||||
#include "link/link_dp_training_fixed_vs_pe_retimer.h"
|
||||
#include "link/link_dp_training_dpia.h"
|
||||
#include "link/link_dp_training_auxless.h"
|
||||
#include "link/link_dp_phy.h"
|
||||
#include "resource.h"
|
||||
#define DC_LOGGER \
|
||||
link->ctx->logger
|
||||
@ -139,21 +140,6 @@ uint8_t dp_convert_to_count(uint8_t lttpr_repeater_count)
|
||||
return 0; // invalid value
|
||||
}
|
||||
|
||||
void dc_link_dp_set_drive_settings(
|
||||
struct dc_link *link,
|
||||
const struct link_resource *link_res,
|
||||
struct link_training_settings *lt_settings)
|
||||
{
|
||||
/* program ASIC PHY settings*/
|
||||
dp_set_hw_lane_settings(link, link_res, lt_settings, DPRX);
|
||||
|
||||
dp_hw_to_dpcd_lane_settings(lt_settings,
|
||||
lt_settings->hw_lane_settings, lt_settings->dpcd_lane_settings);
|
||||
|
||||
/* Notify DP sink the PHY settings from source */
|
||||
dpcd_set_lane_settings(link, lt_settings, DPRX);
|
||||
}
|
||||
|
||||
static enum clock_source_id get_clock_source_id(struct dc_link *link)
|
||||
{
|
||||
enum clock_source_id dp_cs_id = CLOCK_SOURCE_ID_UNDEFINED;
|
||||
@ -2195,7 +2181,7 @@ static void dp_wa_power_up_0010FA(struct dc_link *link, uint8_t *dpcd_data,
|
||||
|
||||
if (!link->dpcd_caps.dpcd_rev.raw) {
|
||||
do {
|
||||
dp_receiver_power_ctrl(link, true);
|
||||
dc_link_dp_receiver_power_ctrl(link, true);
|
||||
core_link_read_dpcd(link, DP_DPCD_REV,
|
||||
dpcd_data, length);
|
||||
link->dpcd_caps.dpcd_rev.raw = dpcd_data[
|
||||
@ -4106,20 +4092,6 @@ void dc_link_clear_dprx_states(struct dc_link *link)
|
||||
memset(&link->dprx_states, 0, sizeof(link->dprx_states));
|
||||
}
|
||||
|
||||
void dp_receiver_power_ctrl(struct dc_link *link, bool on)
|
||||
{
|
||||
uint8_t state;
|
||||
|
||||
state = on ? DP_POWER_STATE_D0 : DP_POWER_STATE_D3;
|
||||
|
||||
if (link->sync_lt_in_progress)
|
||||
return;
|
||||
|
||||
core_link_write_dpcd(link, DP_SET_POWER, &state,
|
||||
sizeof(state));
|
||||
|
||||
}
|
||||
|
||||
void dp_source_sequence_trace(struct dc_link *link, uint8_t dp_test_mode)
|
||||
{
|
||||
if (link != NULL && link->dc->debug.enable_driver_sequence_debug)
|
||||
@ -4127,50 +4099,6 @@ void dp_source_sequence_trace(struct dc_link *link, uint8_t dp_test_mode)
|
||||
&dp_test_mode, sizeof(dp_test_mode));
|
||||
}
|
||||
|
||||
|
||||
static uint8_t convert_to_count(uint8_t lttpr_repeater_count)
|
||||
{
|
||||
switch (lttpr_repeater_count) {
|
||||
case 0x80: // 1 lttpr repeater
|
||||
return 1;
|
||||
case 0x40: // 2 lttpr repeaters
|
||||
return 2;
|
||||
case 0x20: // 3 lttpr repeaters
|
||||
return 3;
|
||||
case 0x10: // 4 lttpr repeaters
|
||||
return 4;
|
||||
case 0x08: // 5 lttpr repeaters
|
||||
return 5;
|
||||
case 0x04: // 6 lttpr repeaters
|
||||
return 6;
|
||||
case 0x02: // 7 lttpr repeaters
|
||||
return 7;
|
||||
case 0x01: // 8 lttpr repeaters
|
||||
return 8;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
return 0; // invalid value
|
||||
}
|
||||
|
||||
static inline bool is_immediate_downstream(struct dc_link *link, uint32_t offset)
|
||||
{
|
||||
return (convert_to_count(link->dpcd_caps.lttpr_caps.phy_repeater_cnt) == offset);
|
||||
}
|
||||
|
||||
void dp_enable_link_phy(
|
||||
struct dc_link *link,
|
||||
const struct link_resource *link_res,
|
||||
enum signal_type signal,
|
||||
enum clock_source_id clock_source,
|
||||
const struct dc_link_settings *link_settings)
|
||||
{
|
||||
link->cur_link_settings = *link_settings;
|
||||
link->dc->hwss.enable_dp_link_output(link, link_res, signal,
|
||||
clock_source, link_settings);
|
||||
dp_receiver_power_ctrl(link, true);
|
||||
}
|
||||
|
||||
void edp_add_delay_for_T9(struct dc_link *link)
|
||||
{
|
||||
if (link && link->panel_config.pps.extra_delay_backlight_off > 0)
|
||||
@ -4236,57 +4164,6 @@ bool edp_receiver_ready_T7(struct dc_link *link)
|
||||
return result;
|
||||
}
|
||||
|
||||
void dp_disable_link_phy(struct dc_link *link, const struct link_resource *link_res,
|
||||
enum signal_type signal)
|
||||
{
|
||||
struct dc *dc = link->ctx->dc;
|
||||
|
||||
if (!link->wa_flags.dp_keep_receiver_powered)
|
||||
dp_receiver_power_ctrl(link, false);
|
||||
|
||||
dc->hwss.disable_link_output(link, link_res, signal);
|
||||
/* Clear current link setting.*/
|
||||
memset(&link->cur_link_settings, 0,
|
||||
sizeof(link->cur_link_settings));
|
||||
|
||||
if (dc->clk_mgr->funcs->notify_link_rate_change)
|
||||
dc->clk_mgr->funcs->notify_link_rate_change(dc->clk_mgr, link);
|
||||
}
|
||||
|
||||
void dp_disable_link_phy_mst(struct dc_link *link, const struct link_resource *link_res,
|
||||
enum signal_type signal)
|
||||
{
|
||||
/* MST disable link only when no stream use the link */
|
||||
if (link->mst_stream_alloc_table.stream_count > 0)
|
||||
return;
|
||||
|
||||
dp_disable_link_phy(link, link_res, signal);
|
||||
|
||||
/* set the sink to SST mode after disabling the link */
|
||||
dp_enable_mst_on_sink(link, false);
|
||||
}
|
||||
|
||||
void dp_set_hw_lane_settings(
|
||||
struct dc_link *link,
|
||||
const struct link_resource *link_res,
|
||||
const struct link_training_settings *link_settings,
|
||||
uint32_t offset)
|
||||
{
|
||||
const struct link_hwss *link_hwss = get_link_hwss(link, link_res);
|
||||
|
||||
if ((link_settings->lttpr_mode == LTTPR_MODE_NON_TRANSPARENT) && !is_immediate_downstream(link, offset))
|
||||
return;
|
||||
|
||||
if (link_hwss->ext.set_dp_lane_settings)
|
||||
link_hwss->ext.set_dp_lane_settings(link, link_res,
|
||||
&link_settings->link_settings,
|
||||
link_settings->hw_lane_settings);
|
||||
|
||||
memmove(link->cur_lane_setting,
|
||||
link_settings->hw_lane_settings,
|
||||
sizeof(link->cur_lane_setting));
|
||||
}
|
||||
|
||||
void dp_retrain_link_dp_test(struct dc_link *link,
|
||||
struct dc_link_settings *link_setting,
|
||||
bool skip_video_pattern)
|
||||
|
@ -583,4 +583,6 @@ int dc_link_aux_transfer_raw(struct ddc_service *ddc,
|
||||
|
||||
enum lttpr_mode dc_link_decide_lttpr_mode(struct dc_link *link,
|
||||
struct dc_link_settings *link_setting);
|
||||
void dc_link_dp_receiver_power_ctrl(struct dc_link *link, bool on);
|
||||
|
||||
#endif /* DC_LINK_H_ */
|
||||
|
@ -71,7 +71,7 @@ void dce110_optimize_bandwidth(
|
||||
struct dc *dc,
|
||||
struct dc_state *context);
|
||||
|
||||
void dp_receiver_power_ctrl(struct dc_link *link, bool on);
|
||||
void dc_link_dp_receiver_power_ctrl(struct dc_link *link, bool on);
|
||||
|
||||
void dce110_edp_power_control(
|
||||
struct dc_link *link,
|
||||
|
@ -134,30 +134,11 @@ void disable_dp_hpo_output(struct dc_link *link,
|
||||
void setup_dp_hpo_stream(struct pipe_ctx *pipe_ctx, bool enable);
|
||||
bool is_dp_128b_132b_signal(struct pipe_ctx *pipe_ctx);
|
||||
void edp_panel_backlight_power_on(struct dc_link *link, bool wait_for_hpd);
|
||||
void dp_receiver_power_ctrl(struct dc_link *link, bool on);
|
||||
void dp_source_sequence_trace(struct dc_link *link, uint8_t dp_test_mode);
|
||||
void dp_enable_link_phy(
|
||||
struct dc_link *link,
|
||||
const struct link_resource *link_res,
|
||||
enum signal_type signal,
|
||||
enum clock_source_id clock_source,
|
||||
const struct dc_link_settings *link_settings);
|
||||
void edp_add_delay_for_T9(struct dc_link *link);
|
||||
bool edp_receiver_ready_T9(struct dc_link *link);
|
||||
bool edp_receiver_ready_T7(struct dc_link *link);
|
||||
|
||||
void dp_disable_link_phy(struct dc_link *link, const struct link_resource *link_res,
|
||||
enum signal_type signal);
|
||||
|
||||
void dp_disable_link_phy_mst(struct dc_link *link, const struct link_resource *link_res,
|
||||
enum signal_type signal);
|
||||
|
||||
void dp_set_hw_lane_settings(
|
||||
struct dc_link *link,
|
||||
const struct link_resource *link_res,
|
||||
const struct link_training_settings *link_settings,
|
||||
uint32_t offset);
|
||||
|
||||
void dp_retrain_link_dp_test(struct dc_link *link,
|
||||
struct dc_link_settings *link_setting,
|
||||
bool skip_video_pattern);
|
||||
|
@ -26,7 +26,7 @@
|
||||
LINK = link_hwss_dio.o link_hwss_dpia.o link_hwss_hpo_dp.o link_dp_trace.o \
|
||||
link_hpd.o link_ddc.o link_dpcd.o link_dp_dpia.o link_dp_training.o \
|
||||
link_dp_training_8b_10b.o link_dp_training_128b_132b.o link_dp_training_dpia.o \
|
||||
link_dp_training_auxless.o link_dp_training_fixed_vs_pe_retimer.o
|
||||
link_dp_training_auxless.o link_dp_training_fixed_vs_pe_retimer.o link_dp_phy.o
|
||||
|
||||
AMD_DAL_LINK = $(addprefix $(AMDDALPATH)/dc/link/,$(LINK))
|
||||
|
||||
|
144
drivers/gpu/drm/amd/display/dc/link/link_dp_phy.c
Normal file
144
drivers/gpu/drm/amd/display/dc/link/link_dp_phy.c
Normal file
@ -0,0 +1,144 @@
|
||||
/*
|
||||
* Copyright 2022 Advanced Micro Devices, Inc.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||
* copy of this software and associated documentation files (the "Software"),
|
||||
* to deal in the Software without restriction, including without limitation
|
||||
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||
* and/or sell copies of the Software, and to permit persons to whom the
|
||||
* Software is furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||
* THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
|
||||
* OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
|
||||
* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
||||
* OTHER DEALINGS IN THE SOFTWARE.
|
||||
*
|
||||
* Authors: AMD
|
||||
*
|
||||
*/
|
||||
|
||||
/* FILE POLICY AND INTENDED USAGE:
|
||||
* This file implements basic dp phy functionality such as enable/disable phy
|
||||
* output and set lane/drive settings. This file is responsible for maintaining
|
||||
* and update software state representing current phy status such as current
|
||||
* link settings.
|
||||
*/
|
||||
|
||||
#include "link_dp_phy.h"
|
||||
#include "link_dpcd.h"
|
||||
#include "link_dp_training.h"
|
||||
#include "clk_mgr.h"
|
||||
#include "resource.h"
|
||||
#include "dc_link_dp.h"
|
||||
|
||||
#define DC_LOGGER \
|
||||
link->ctx->logger
|
||||
|
||||
void dc_link_dp_set_drive_settings(
|
||||
struct dc_link *link,
|
||||
const struct link_resource *link_res,
|
||||
struct link_training_settings *lt_settings)
|
||||
{
|
||||
/* program ASIC PHY settings*/
|
||||
dp_set_hw_lane_settings(link, link_res, lt_settings, DPRX);
|
||||
|
||||
dp_hw_to_dpcd_lane_settings(lt_settings,
|
||||
lt_settings->hw_lane_settings,
|
||||
lt_settings->dpcd_lane_settings);
|
||||
|
||||
/* Notify DP sink the PHY settings from source */
|
||||
dpcd_set_lane_settings(link, lt_settings, DPRX);
|
||||
}
|
||||
|
||||
void dc_link_dp_receiver_power_ctrl(struct dc_link *link, bool on)
|
||||
{
|
||||
uint8_t state;
|
||||
|
||||
state = on ? DP_POWER_STATE_D0 : DP_POWER_STATE_D3;
|
||||
|
||||
if (link->sync_lt_in_progress)
|
||||
return;
|
||||
|
||||
core_link_write_dpcd(link, DP_SET_POWER, &state,
|
||||
sizeof(state));
|
||||
|
||||
}
|
||||
|
||||
void dp_enable_link_phy(
|
||||
struct dc_link *link,
|
||||
const struct link_resource *link_res,
|
||||
enum signal_type signal,
|
||||
enum clock_source_id clock_source,
|
||||
const struct dc_link_settings *link_settings)
|
||||
{
|
||||
link->cur_link_settings = *link_settings;
|
||||
link->dc->hwss.enable_dp_link_output(link, link_res, signal,
|
||||
clock_source, link_settings);
|
||||
dc_link_dp_receiver_power_ctrl(link, true);
|
||||
}
|
||||
|
||||
void dp_disable_link_phy(struct dc_link *link,
|
||||
const struct link_resource *link_res,
|
||||
enum signal_type signal)
|
||||
{
|
||||
struct dc *dc = link->ctx->dc;
|
||||
|
||||
if (!link->wa_flags.dp_keep_receiver_powered)
|
||||
dc_link_dp_receiver_power_ctrl(link, false);
|
||||
|
||||
dc->hwss.disable_link_output(link, link_res, signal);
|
||||
/* Clear current link setting.*/
|
||||
memset(&link->cur_link_settings, 0,
|
||||
sizeof(link->cur_link_settings));
|
||||
|
||||
if (dc->clk_mgr->funcs->notify_link_rate_change)
|
||||
dc->clk_mgr->funcs->notify_link_rate_change(dc->clk_mgr, link);
|
||||
}
|
||||
|
||||
void dp_disable_link_phy_mst(struct dc_link *link,
|
||||
const struct link_resource *link_res,
|
||||
enum signal_type signal)
|
||||
{
|
||||
/* MST disable link only when no stream use the link */
|
||||
if (link->mst_stream_alloc_table.stream_count > 0)
|
||||
return;
|
||||
|
||||
dp_disable_link_phy(link, link_res, signal);
|
||||
|
||||
/* set the sink to SST mode after disabling the link */
|
||||
dp_enable_mst_on_sink(link, false);
|
||||
}
|
||||
|
||||
static inline bool is_immediate_downstream(struct dc_link *link, uint32_t offset)
|
||||
{
|
||||
return (dp_convert_to_count(link->dpcd_caps.lttpr_caps.phy_repeater_cnt) ==
|
||||
offset);
|
||||
}
|
||||
|
||||
void dp_set_hw_lane_settings(
|
||||
struct dc_link *link,
|
||||
const struct link_resource *link_res,
|
||||
const struct link_training_settings *link_settings,
|
||||
uint32_t offset)
|
||||
{
|
||||
const struct link_hwss *link_hwss = get_link_hwss(link, link_res);
|
||||
|
||||
if ((link_settings->lttpr_mode == LTTPR_MODE_NON_TRANSPARENT) &&
|
||||
!is_immediate_downstream(link, offset))
|
||||
return;
|
||||
|
||||
if (link_hwss->ext.set_dp_lane_settings)
|
||||
link_hwss->ext.set_dp_lane_settings(link, link_res,
|
||||
&link_settings->link_settings,
|
||||
link_settings->hw_lane_settings);
|
||||
|
||||
memmove(link->cur_lane_setting,
|
||||
link_settings->hw_lane_settings,
|
||||
sizeof(link->cur_lane_setting));
|
||||
}
|
51
drivers/gpu/drm/amd/display/dc/link/link_dp_phy.h
Normal file
51
drivers/gpu/drm/amd/display/dc/link/link_dp_phy.h
Normal file
@ -0,0 +1,51 @@
|
||||
/*
|
||||
* Copyright 2022 Advanced Micro Devices, Inc.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||
* copy of this software and associated documentation files (the "Software"),
|
||||
* to deal in the Software without restriction, including without limitation
|
||||
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||
* and/or sell copies of the Software, and to permit persons to whom the
|
||||
* Software is furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||
* THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
|
||||
* OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
|
||||
* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
||||
* OTHER DEALINGS IN THE SOFTWARE.
|
||||
*
|
||||
* Authors: AMD
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef __DC_LINK_DP_PHY_H__
|
||||
#define __DC_LINK_DP_PHY_H__
|
||||
|
||||
#include "link.h"
|
||||
void dp_enable_link_phy(
|
||||
struct dc_link *link,
|
||||
const struct link_resource *link_res,
|
||||
enum signal_type signal,
|
||||
enum clock_source_id clock_source,
|
||||
const struct dc_link_settings *link_settings);
|
||||
|
||||
void dp_disable_link_phy(struct dc_link *link,
|
||||
const struct link_resource *link_res,
|
||||
enum signal_type signal);
|
||||
|
||||
void dp_disable_link_phy_mst(struct dc_link *link,
|
||||
const struct link_resource *link_res,
|
||||
enum signal_type signal);
|
||||
|
||||
void dp_set_hw_lane_settings(
|
||||
struct dc_link *link,
|
||||
const struct link_resource *link_res,
|
||||
const struct link_training_settings *link_settings,
|
||||
uint32_t offset);
|
||||
|
||||
#endif /* __DC_LINK_DP_PHY_H__ */
|
@ -38,6 +38,7 @@
|
||||
#include "link_dp_training_fixed_vs_pe_retimer.h"
|
||||
#include "link_dpcd.h"
|
||||
#include "link_dp_trace.h"
|
||||
#include "link_dp_phy.h"
|
||||
#include "dc_link_dp.h"
|
||||
#include "atomfirmware.h"
|
||||
#include "link_enc_cfg.h"
|
||||
|
@ -30,6 +30,7 @@
|
||||
#include "link_dp_training_128b_132b.h"
|
||||
#include "link_dp_training_8b_10b.h"
|
||||
#include "link_dpcd.h"
|
||||
#include "link_dp_phy.h"
|
||||
#include "dc_link_dp.h"
|
||||
|
||||
#define DC_LOGGER \
|
||||
|
@ -29,6 +29,7 @@
|
||||
*/
|
||||
#include "link_dp_training_8b_10b.h"
|
||||
#include "link_dpcd.h"
|
||||
#include "link_dp_phy.h"
|
||||
#include "dc_link_dp.h"
|
||||
|
||||
#define DC_LOGGER \
|
||||
|
@ -27,8 +27,8 @@
|
||||
*
|
||||
*/
|
||||
#include "link_dp_training_auxless.h"
|
||||
#include "link_dp_phy.h"
|
||||
#include "dc_link_dp.h"
|
||||
|
||||
#define DC_LOGGER \
|
||||
link->ctx->logger
|
||||
bool dc_link_dp_perform_link_training_skip_aux(
|
||||
|
@ -34,6 +34,7 @@
|
||||
#include "link_dp_training_fixed_vs_pe_retimer.h"
|
||||
#include "link_dp_training_8b_10b.h"
|
||||
#include "link_dpcd.h"
|
||||
#include "link_dp_phy.h"
|
||||
#include "dc_link_dp.h"
|
||||
|
||||
#define DC_LOGGER \
|
||||
|
Loading…
x
Reference in New Issue
Block a user