drm/amd/display: i2c/aux Remove link index.
Link index is an unnecessery level of inderection when calling from kernel i2c/aux transfer into DAL. Signed-off-by: Andrey Grodzovsky <Andrey.Grodzovsky@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
committed by
Alex Deucher
parent
15a27de250
commit
46df790c6b
@@ -546,13 +546,13 @@ enum amdgpu_connector_dither {
|
|||||||
|
|
||||||
struct amdgpu_dm_dp_aux {
|
struct amdgpu_dm_dp_aux {
|
||||||
struct drm_dp_aux aux;
|
struct drm_dp_aux aux;
|
||||||
uint32_t link_index;
|
struct ddc_service *ddc_service;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct amdgpu_i2c_adapter {
|
struct amdgpu_i2c_adapter {
|
||||||
struct i2c_adapter base;
|
struct i2c_adapter base;
|
||||||
struct amdgpu_display_manager *dm;
|
|
||||||
uint32_t link_index;
|
struct ddc_service *ddc_service;
|
||||||
};
|
};
|
||||||
|
|
||||||
#define TO_DM_AUX(x) container_of((x), struct amdgpu_dm_dp_aux, aux)
|
#define TO_DM_AUX(x) container_of((x), struct amdgpu_dm_dp_aux, aux)
|
||||||
|
|||||||
@@ -33,6 +33,8 @@
|
|||||||
#include "dc.h"
|
#include "dc.h"
|
||||||
#include "dm_helpers.h"
|
#include "dm_helpers.h"
|
||||||
|
|
||||||
|
#include "dc_link_ddc.h"
|
||||||
|
|
||||||
/* #define TRACE_DPCD */
|
/* #define TRACE_DPCD */
|
||||||
|
|
||||||
#ifdef TRACE_DPCD
|
#ifdef TRACE_DPCD
|
||||||
@@ -77,43 +79,41 @@ void log_dpcd(uint8_t type,
|
|||||||
|
|
||||||
static ssize_t dm_dp_aux_transfer(struct drm_dp_aux *aux, struct drm_dp_aux_msg *msg)
|
static ssize_t dm_dp_aux_transfer(struct drm_dp_aux *aux, struct drm_dp_aux_msg *msg)
|
||||||
{
|
{
|
||||||
struct pci_dev *pdev = to_pci_dev(aux->dev);
|
|
||||||
struct drm_device *drm_dev = pci_get_drvdata(pdev);
|
|
||||||
struct amdgpu_device *adev = drm_dev->dev_private;
|
|
||||||
struct dc *dc = adev->dm.dc;
|
|
||||||
enum i2c_mot_mode mot = (msg->request & DP_AUX_I2C_MOT) ? I2C_MOT_TRUE : I2C_MOT_FALSE;
|
enum i2c_mot_mode mot = (msg->request & DP_AUX_I2C_MOT) ? I2C_MOT_TRUE : I2C_MOT_FALSE;
|
||||||
bool res;
|
enum ddc_result res;
|
||||||
|
|
||||||
switch (msg->request & ~DP_AUX_I2C_MOT) {
|
switch (msg->request & ~DP_AUX_I2C_MOT) {
|
||||||
case DP_AUX_NATIVE_READ:
|
case DP_AUX_NATIVE_READ:
|
||||||
res = dc_read_aux_dpcd(
|
res = dal_ddc_service_read_dpcd_data(
|
||||||
dc,
|
TO_DM_AUX(aux)->ddc_service,
|
||||||
TO_DM_AUX(aux)->link_index,
|
false,
|
||||||
|
I2C_MOT_UNDEF,
|
||||||
msg->address,
|
msg->address,
|
||||||
msg->buffer,
|
msg->buffer,
|
||||||
msg->size);
|
msg->size);
|
||||||
break;
|
break;
|
||||||
case DP_AUX_NATIVE_WRITE:
|
case DP_AUX_NATIVE_WRITE:
|
||||||
res = dc_write_aux_dpcd(
|
res = dal_ddc_service_write_dpcd_data(
|
||||||
dc,
|
TO_DM_AUX(aux)->ddc_service,
|
||||||
TO_DM_AUX(aux)->link_index,
|
false,
|
||||||
|
I2C_MOT_UNDEF,
|
||||||
msg->address,
|
msg->address,
|
||||||
msg->buffer,
|
msg->buffer,
|
||||||
msg->size);
|
msg->size);
|
||||||
break;
|
break;
|
||||||
case DP_AUX_I2C_READ:
|
case DP_AUX_I2C_READ:
|
||||||
res = dc_read_aux_i2c(
|
res = dal_ddc_service_read_dpcd_data(
|
||||||
dc,
|
TO_DM_AUX(aux)->ddc_service,
|
||||||
TO_DM_AUX(aux)->link_index,
|
true,
|
||||||
mot,
|
mot,
|
||||||
msg->address,
|
msg->address,
|
||||||
msg->buffer,
|
msg->buffer,
|
||||||
msg->size);
|
msg->size);
|
||||||
break;
|
break;
|
||||||
case DP_AUX_I2C_WRITE:
|
case DP_AUX_I2C_WRITE:
|
||||||
res = dc_write_aux_i2c(
|
res = dal_ddc_service_write_dpcd_data(
|
||||||
dc,
|
TO_DM_AUX(aux)->ddc_service,
|
||||||
TO_DM_AUX(aux)->link_index,
|
true,
|
||||||
mot,
|
mot,
|
||||||
msg->address,
|
msg->address,
|
||||||
msg->buffer,
|
msg->buffer,
|
||||||
@@ -128,7 +128,7 @@ static ssize_t dm_dp_aux_transfer(struct drm_dp_aux *aux, struct drm_dp_aux_msg
|
|||||||
msg->address,
|
msg->address,
|
||||||
msg->buffer,
|
msg->buffer,
|
||||||
msg->size,
|
msg->size,
|
||||||
res);
|
r == DDC_RESULT_SUCESSFULL);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
return msg->size;
|
return msg->size;
|
||||||
@@ -444,7 +444,7 @@ void amdgpu_dm_initialize_dp_connector(
|
|||||||
aconnector->dm_dp_aux.aux.name = "dmdc";
|
aconnector->dm_dp_aux.aux.name = "dmdc";
|
||||||
aconnector->dm_dp_aux.aux.dev = dm->adev->dev;
|
aconnector->dm_dp_aux.aux.dev = dm->adev->dev;
|
||||||
aconnector->dm_dp_aux.aux.transfer = dm_dp_aux_transfer;
|
aconnector->dm_dp_aux.aux.transfer = dm_dp_aux_transfer;
|
||||||
aconnector->dm_dp_aux.link_index = aconnector->connector_id;
|
aconnector->dm_dp_aux.ddc_service = aconnector->dc_link->ddc;
|
||||||
|
|
||||||
drm_dp_aux_register(&aconnector->dm_dp_aux.aux);
|
drm_dp_aux_register(&aconnector->dm_dp_aux.aux);
|
||||||
aconnector->mst_mgr.cbs = &dm_mst_cbs;
|
aconnector->mst_mgr.cbs = &dm_mst_cbs;
|
||||||
|
|||||||
@@ -50,6 +50,8 @@
|
|||||||
|
|
||||||
#include "modules/inc/mod_freesync.h"
|
#include "modules/inc/mod_freesync.h"
|
||||||
|
|
||||||
|
#include "i2caux_interface.h"
|
||||||
|
|
||||||
struct dm_connector_state {
|
struct dm_connector_state {
|
||||||
struct drm_connector_state base;
|
struct drm_connector_state base;
|
||||||
|
|
||||||
@@ -1999,6 +2001,7 @@ int amdgpu_dm_i2c_xfer(struct i2c_adapter *i2c_adap,
|
|||||||
struct i2c_msg *msgs, int num)
|
struct i2c_msg *msgs, int num)
|
||||||
{
|
{
|
||||||
struct amdgpu_i2c_adapter *i2c = i2c_get_adapdata(i2c_adap);
|
struct amdgpu_i2c_adapter *i2c = i2c_get_adapdata(i2c_adap);
|
||||||
|
struct ddc_service *ddc_service = i2c->ddc_service;
|
||||||
struct i2c_command cmd;
|
struct i2c_command cmd;
|
||||||
int i;
|
int i;
|
||||||
int result = -EIO;
|
int result = -EIO;
|
||||||
@@ -2019,11 +2022,13 @@ int amdgpu_dm_i2c_xfer(struct i2c_adapter *i2c_adap,
|
|||||||
cmd.payloads[i].data = msgs[i].buf;
|
cmd.payloads[i].data = msgs[i].buf;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (dc_submit_i2c(i2c->dm->dc, i2c->link_index, &cmd))
|
if (dal_i2caux_submit_i2c_command(
|
||||||
|
ddc_service->ctx->i2caux,
|
||||||
|
ddc_service->ddc_pin,
|
||||||
|
&cmd))
|
||||||
result = num;
|
result = num;
|
||||||
|
|
||||||
kfree(cmd.payloads);
|
kfree(cmd.payloads);
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2037,19 +2042,22 @@ static const struct i2c_algorithm amdgpu_dm_i2c_algo = {
|
|||||||
.functionality = amdgpu_dm_i2c_func,
|
.functionality = amdgpu_dm_i2c_func,
|
||||||
};
|
};
|
||||||
|
|
||||||
struct amdgpu_i2c_adapter *create_i2c(unsigned int link_index, struct amdgpu_display_manager *dm, int *res)
|
static struct amdgpu_i2c_adapter *create_i2c(
|
||||||
|
struct ddc_service *ddc_service,
|
||||||
|
int link_index,
|
||||||
|
int *res)
|
||||||
{
|
{
|
||||||
|
struct amdgpu_device *adev = ddc_service->ctx->driver_context;
|
||||||
struct amdgpu_i2c_adapter *i2c;
|
struct amdgpu_i2c_adapter *i2c;
|
||||||
|
|
||||||
i2c = kzalloc(sizeof (struct amdgpu_i2c_adapter), GFP_KERNEL);
|
i2c = kzalloc(sizeof (struct amdgpu_i2c_adapter), GFP_KERNEL);
|
||||||
i2c->dm = dm;
|
|
||||||
i2c->base.owner = THIS_MODULE;
|
i2c->base.owner = THIS_MODULE;
|
||||||
i2c->base.class = I2C_CLASS_DDC;
|
i2c->base.class = I2C_CLASS_DDC;
|
||||||
i2c->base.dev.parent = &dm->adev->pdev->dev;
|
i2c->base.dev.parent = &adev->pdev->dev;
|
||||||
i2c->base.algo = &amdgpu_dm_i2c_algo;
|
i2c->base.algo = &amdgpu_dm_i2c_algo;
|
||||||
snprintf(i2c->base.name, sizeof (i2c->base.name), "AMDGPU DM i2c hw bus %d", link_index);
|
snprintf(i2c->base.name, sizeof (i2c->base.name), "AMDGPU DM i2c hw bus %d", link_index);
|
||||||
i2c->link_index = link_index;
|
|
||||||
i2c_set_adapdata(&i2c->base, i2c);
|
i2c_set_adapdata(&i2c->base, i2c);
|
||||||
|
i2c->ddc_service = ddc_service;
|
||||||
|
|
||||||
return i2c;
|
return i2c;
|
||||||
}
|
}
|
||||||
@@ -2071,7 +2079,7 @@ int amdgpu_dm_connector_init(
|
|||||||
|
|
||||||
DRM_DEBUG_KMS("%s()\n", __func__);
|
DRM_DEBUG_KMS("%s()\n", __func__);
|
||||||
|
|
||||||
i2c = create_i2c(link->link_index, dm, &res);
|
i2c = create_i2c(link->ddc, link->link_index, &res);
|
||||||
aconnector->i2c = i2c;
|
aconnector->i2c = i2c;
|
||||||
res = i2c_add_adapter(&i2c->base);
|
res = i2c_add_adapter(&i2c->base);
|
||||||
|
|
||||||
|
|||||||
@@ -1525,13 +1525,6 @@ const struct graphics_object_id dc_get_link_id_at_index(
|
|||||||
return core_dc->links[link_index]->link_id;
|
return core_dc->links[link_index]->link_id;
|
||||||
}
|
}
|
||||||
|
|
||||||
const struct ddc_service *dc_get_ddc_at_index(
|
|
||||||
struct dc *dc, uint32_t link_index)
|
|
||||||
{
|
|
||||||
struct core_dc *core_dc = DC_TO_CORE(dc);
|
|
||||||
return core_dc->links[link_index]->ddc;
|
|
||||||
}
|
|
||||||
|
|
||||||
enum dc_irq_source dc_get_hpd_irq_source_at_index(
|
enum dc_irq_source dc_get_hpd_irq_source_at_index(
|
||||||
struct dc *dc, uint32_t link_index)
|
struct dc *dc, uint32_t link_index)
|
||||||
{
|
{
|
||||||
@@ -1639,7 +1632,7 @@ bool dc_read_aux_dpcd(
|
|||||||
|
|
||||||
struct core_link *link = core_dc->links[link_index];
|
struct core_link *link = core_dc->links[link_index];
|
||||||
enum ddc_result r = dal_ddc_service_read_dpcd_data(
|
enum ddc_result r = dal_ddc_service_read_dpcd_data(
|
||||||
link->ddc,
|
link->public.ddc,
|
||||||
false,
|
false,
|
||||||
I2C_MOT_UNDEF,
|
I2C_MOT_UNDEF,
|
||||||
address,
|
address,
|
||||||
@@ -1659,7 +1652,7 @@ bool dc_write_aux_dpcd(
|
|||||||
struct core_link *link = core_dc->links[link_index];
|
struct core_link *link = core_dc->links[link_index];
|
||||||
|
|
||||||
enum ddc_result r = dal_ddc_service_write_dpcd_data(
|
enum ddc_result r = dal_ddc_service_write_dpcd_data(
|
||||||
link->ddc,
|
link->public.ddc,
|
||||||
false,
|
false,
|
||||||
I2C_MOT_UNDEF,
|
I2C_MOT_UNDEF,
|
||||||
address,
|
address,
|
||||||
@@ -1680,7 +1673,7 @@ bool dc_read_aux_i2c(
|
|||||||
|
|
||||||
struct core_link *link = core_dc->links[link_index];
|
struct core_link *link = core_dc->links[link_index];
|
||||||
enum ddc_result r = dal_ddc_service_read_dpcd_data(
|
enum ddc_result r = dal_ddc_service_read_dpcd_data(
|
||||||
link->ddc,
|
link->public.ddc,
|
||||||
true,
|
true,
|
||||||
mot,
|
mot,
|
||||||
address,
|
address,
|
||||||
@@ -1701,7 +1694,7 @@ bool dc_write_aux_i2c(
|
|||||||
struct core_link *link = core_dc->links[link_index];
|
struct core_link *link = core_dc->links[link_index];
|
||||||
|
|
||||||
enum ddc_result r = dal_ddc_service_write_dpcd_data(
|
enum ddc_result r = dal_ddc_service_write_dpcd_data(
|
||||||
link->ddc,
|
link->public.ddc,
|
||||||
true,
|
true,
|
||||||
mot,
|
mot,
|
||||||
address,
|
address,
|
||||||
@@ -1724,7 +1717,7 @@ bool dc_query_ddc_data(
|
|||||||
struct core_link *link = core_dc->links[link_index];
|
struct core_link *link = core_dc->links[link_index];
|
||||||
|
|
||||||
bool result = dal_ddc_service_query_ddc_data(
|
bool result = dal_ddc_service_query_ddc_data(
|
||||||
link->ddc,
|
link->public.ddc,
|
||||||
address,
|
address,
|
||||||
write_buf,
|
write_buf,
|
||||||
write_size,
|
write_size,
|
||||||
@@ -1742,7 +1735,7 @@ bool dc_submit_i2c(
|
|||||||
struct core_dc *core_dc = DC_TO_CORE(dc);
|
struct core_dc *core_dc = DC_TO_CORE(dc);
|
||||||
|
|
||||||
struct core_link *link = core_dc->links[link_index];
|
struct core_link *link = core_dc->links[link_index];
|
||||||
struct ddc_service *ddc = link->ddc;
|
struct ddc_service *ddc = link->public.ddc;
|
||||||
|
|
||||||
return dal_i2caux_submit_i2c_command(
|
return dal_i2caux_submit_i2c_command(
|
||||||
ddc->ctx->i2caux,
|
ddc->ctx->i2caux,
|
||||||
|
|||||||
@@ -66,8 +66,8 @@ static void destruct(struct core_link *link)
|
|||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
if (link->ddc)
|
if (link->public.ddc)
|
||||||
dal_ddc_service_destroy(&link->ddc);
|
dal_ddc_service_destroy(&link->public.ddc);
|
||||||
|
|
||||||
if(link->link_enc)
|
if(link->link_enc)
|
||||||
link->link_enc->funcs->destroy(&link->link_enc);
|
link->link_enc->funcs->destroy(&link->link_enc);
|
||||||
@@ -320,7 +320,7 @@ static bool is_dp_sink_present(struct core_link *link)
|
|||||||
((connector_id == CONNECTOR_ID_DISPLAY_PORT) ||
|
((connector_id == CONNECTOR_ID_DISPLAY_PORT) ||
|
||||||
(connector_id == CONNECTOR_ID_EDP));
|
(connector_id == CONNECTOR_ID_EDP));
|
||||||
|
|
||||||
ddc = dal_ddc_service_get_ddc_pin(link->ddc);
|
ddc = dal_ddc_service_get_ddc_pin(link->public.ddc);
|
||||||
|
|
||||||
if (!ddc) {
|
if (!ddc) {
|
||||||
BREAK_TO_DEBUGGER();
|
BREAK_TO_DEBUGGER();
|
||||||
@@ -526,7 +526,7 @@ static void detect_dp(
|
|||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
/* DP passive dongles */
|
/* DP passive dongles */
|
||||||
sink_caps->signal = dp_passive_dongle_detection(link->ddc,
|
sink_caps->signal = dp_passive_dongle_detection(link->public.ddc,
|
||||||
sink_caps,
|
sink_caps,
|
||||||
audio_support);
|
audio_support);
|
||||||
}
|
}
|
||||||
@@ -629,11 +629,11 @@ bool dc_link_detect(const struct dc_link *dc_link, bool boot)
|
|||||||
link->dpcd_sink_count = 1;
|
link->dpcd_sink_count = 1;
|
||||||
|
|
||||||
dal_ddc_service_set_transaction_type(
|
dal_ddc_service_set_transaction_type(
|
||||||
link->ddc,
|
link->public.ddc,
|
||||||
sink_caps.transaction_type);
|
sink_caps.transaction_type);
|
||||||
|
|
||||||
link->public.aux_mode = dal_ddc_service_is_in_aux_transaction_mode(
|
link->public.aux_mode = dal_ddc_service_is_in_aux_transaction_mode(
|
||||||
link->ddc);
|
link->public.ddc);
|
||||||
|
|
||||||
sink_init_data.link = &link->public;
|
sink_init_data.link = &link->public;
|
||||||
sink_init_data.sink_signal = sink_caps.signal;
|
sink_init_data.sink_signal = sink_caps.signal;
|
||||||
@@ -784,7 +784,7 @@ static enum channel_id get_ddc_line(struct core_link *link)
|
|||||||
struct ddc *ddc;
|
struct ddc *ddc;
|
||||||
enum channel_id channel = CHANNEL_ID_UNKNOWN;
|
enum channel_id channel = CHANNEL_ID_UNKNOWN;
|
||||||
|
|
||||||
ddc = dal_ddc_service_get_ddc_pin(link->ddc);
|
ddc = dal_ddc_service_get_ddc_pin(link->public.ddc);
|
||||||
|
|
||||||
if (ddc) {
|
if (ddc) {
|
||||||
switch (dal_ddc_get_line(ddc)) {
|
switch (dal_ddc_get_line(ddc)) {
|
||||||
@@ -971,16 +971,16 @@ static bool construct(
|
|||||||
ddc_service_init_data.ctx = link->ctx;
|
ddc_service_init_data.ctx = link->ctx;
|
||||||
ddc_service_init_data.id = link->link_id;
|
ddc_service_init_data.id = link->link_id;
|
||||||
ddc_service_init_data.link = link;
|
ddc_service_init_data.link = link;
|
||||||
link->ddc = dal_ddc_service_create(&ddc_service_init_data);
|
link->public.ddc = dal_ddc_service_create(&ddc_service_init_data);
|
||||||
|
|
||||||
if (NULL == link->ddc) {
|
if (link->public.ddc == NULL) {
|
||||||
DC_ERROR("Failed to create ddc_service!\n");
|
DC_ERROR("Failed to create ddc_service!\n");
|
||||||
goto ddc_create_fail;
|
goto ddc_create_fail;
|
||||||
}
|
}
|
||||||
|
|
||||||
link->public.ddc_hw_inst =
|
link->public.ddc_hw_inst =
|
||||||
dal_ddc_get_line(
|
dal_ddc_get_line(
|
||||||
dal_ddc_service_get_ddc_pin(link->ddc));
|
dal_ddc_service_get_ddc_pin(link->public.ddc));
|
||||||
|
|
||||||
enc_init_data.ctx = dc_ctx;
|
enc_init_data.ctx = dc_ctx;
|
||||||
bp_funcs->get_src_obj(dc_ctx->dc_bios, link->link_id, 0, &enc_init_data.encoder);
|
bp_funcs->get_src_obj(dc_ctx->dc_bios, link->link_id, 0, &enc_init_data.encoder);
|
||||||
@@ -1049,7 +1049,7 @@ static bool construct(
|
|||||||
device_tag_fail:
|
device_tag_fail:
|
||||||
link->link_enc->funcs->destroy(&link->link_enc);
|
link->link_enc->funcs->destroy(&link->link_enc);
|
||||||
link_enc_create_fail:
|
link_enc_create_fail:
|
||||||
dal_ddc_service_destroy(&link->ddc);
|
dal_ddc_service_destroy(&link->public.ddc);
|
||||||
ddc_create_fail:
|
ddc_create_fail:
|
||||||
create_fail:
|
create_fail:
|
||||||
|
|
||||||
@@ -1256,7 +1256,7 @@ static void enable_link_hdmi(struct pipe_ctx *pipe_ctx)
|
|||||||
|
|
||||||
if (dc_is_hdmi_signal(pipe_ctx->stream->signal))
|
if (dc_is_hdmi_signal(pipe_ctx->stream->signal))
|
||||||
dal_ddc_service_write_scdc_data(
|
dal_ddc_service_write_scdc_data(
|
||||||
stream->sink->link->ddc,
|
stream->sink->link->public.ddc,
|
||||||
stream->phy_pix_clk,
|
stream->phy_pix_clk,
|
||||||
stream->public.timing.flags.LTE_340MCSC_SCRAMBLE);
|
stream->public.timing.flags.LTE_340MCSC_SCRAMBLE);
|
||||||
|
|
||||||
@@ -1276,7 +1276,7 @@ static void enable_link_hdmi(struct pipe_ctx *pipe_ctx)
|
|||||||
stream->phy_pix_clk);
|
stream->phy_pix_clk);
|
||||||
|
|
||||||
if (pipe_ctx->stream->signal == SIGNAL_TYPE_HDMI_TYPE_A)
|
if (pipe_ctx->stream->signal == SIGNAL_TYPE_HDMI_TYPE_A)
|
||||||
dal_ddc_service_read_scdc_data(link->ddc);
|
dal_ddc_service_read_scdc_data(link->public.ddc);
|
||||||
}
|
}
|
||||||
|
|
||||||
/****************************enable_link***********************************/
|
/****************************enable_link***********************************/
|
||||||
@@ -1474,7 +1474,7 @@ bool dc_link_setup_psr(const struct dc_link *dc_link,
|
|||||||
&psr_configuration.raw,
|
&psr_configuration.raw,
|
||||||
sizeof(psr_configuration.raw));
|
sizeof(psr_configuration.raw));
|
||||||
|
|
||||||
psr_context.channel = link->ddc->ddc_pin->hw_info.ddc_channel;
|
psr_context.channel = link->public.ddc->ddc_pin->hw_info.ddc_channel;
|
||||||
psr_context.transmitterId = link->link_enc->transmitter;
|
psr_context.transmitterId = link->link_enc->transmitter;
|
||||||
psr_context.engineId = link->link_enc->preferred_engine;
|
psr_context.engineId = link->link_enc->preferred_engine;
|
||||||
|
|
||||||
|
|||||||
@@ -1913,7 +1913,7 @@ static void get_active_converter_info(
|
|||||||
/* decode converter info*/
|
/* decode converter info*/
|
||||||
if (!ds_port.fields.PORT_PRESENT) {
|
if (!ds_port.fields.PORT_PRESENT) {
|
||||||
link->dpcd_caps.dongle_type = DISPLAY_DONGLE_NONE;
|
link->dpcd_caps.dongle_type = DISPLAY_DONGLE_NONE;
|
||||||
ddc_service_set_dongle_type(link->ddc,
|
ddc_service_set_dongle_type(link->public.ddc,
|
||||||
link->dpcd_caps.dongle_type);
|
link->dpcd_caps.dongle_type);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -1983,7 +1983,7 @@ static void get_active_converter_info(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
ddc_service_set_dongle_type(link->ddc, link->dpcd_caps.dongle_type);
|
ddc_service_set_dongle_type(link->public.ddc, link->dpcd_caps.dongle_type);
|
||||||
|
|
||||||
{
|
{
|
||||||
struct dp_device_vendor_id dp_id;
|
struct dp_device_vendor_id dp_id;
|
||||||
|
|||||||
@@ -646,6 +646,8 @@ struct dc_link {
|
|||||||
|
|
||||||
void *priv;
|
void *priv;
|
||||||
bool aux_mode;
|
bool aux_mode;
|
||||||
|
|
||||||
|
struct ddc_service *ddc;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct dpcd_caps {
|
struct dpcd_caps {
|
||||||
@@ -829,13 +831,6 @@ void dc_set_power_state(
|
|||||||
enum dc_acpi_cm_power_state power_state);
|
enum dc_acpi_cm_power_state power_state);
|
||||||
void dc_resume(const struct dc *dc);
|
void dc_resume(const struct dc *dc);
|
||||||
|
|
||||||
/*******************************************************************************
|
|
||||||
* DDC Interfaces
|
|
||||||
******************************************************************************/
|
|
||||||
|
|
||||||
const struct ddc_service *dc_get_ddc_at_index(
|
|
||||||
struct dc *dc, uint32_t link_index);
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* DPCD access interfaces
|
* DPCD access interfaces
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -151,7 +151,6 @@ struct core_link {
|
|||||||
struct dc_context *ctx; /* TODO: AUTO remove 'dal' when DC is complete*/
|
struct dc_context *ctx; /* TODO: AUTO remove 'dal' when DC is complete*/
|
||||||
|
|
||||||
struct link_encoder *link_enc;
|
struct link_encoder *link_enc;
|
||||||
struct ddc_service *ddc;
|
|
||||||
struct graphics_object_id link_id;
|
struct graphics_object_id link_id;
|
||||||
union ddi_channel_mapping ddi_channel_mapping;
|
union ddi_channel_mapping ddi_channel_mapping;
|
||||||
struct connector_device_tag_info device_tag;
|
struct connector_device_tag_info device_tag;
|
||||||
|
|||||||
Reference in New Issue
Block a user