ddc_service
struct ddc_service *ddc_service;
struct ddc_service *ddc_service;
create_i2c(struct ddc_service *ddc_service, bool oem);
struct ddc_service *oem_ddc_service;
struct ddc_service *ddc_service = i2c->ddc_service;
if (!ddc_service->ddc_pin)
ddc_service->ctx->dc,
ddc_service->ctx->dc,
ddc_service->link->link_index,
create_i2c(struct ddc_service *ddc_service, bool oem)
struct amdgpu_device *adev = ddc_service->ctx->driver_context;
ddc_service->link->link_index);
i2c->ddc_service = ddc_service;
struct ddc_service *ddc;
aconnector->dm_dp_aux.ddc_service = aconnector->dc_link->ddc;
result = dc_link_aux_transfer_raw(TO_DM_AUX(aux)->ddc_service, &payload,
ddc = TO_DM_AUX(aux)->ddc_service;
struct ddc_service *
struct ddc_service *ddc = link->ddc;
struct ddc_service *ddc = dc->res_pool->oem_device;
int dc_link_aux_transfer_raw(struct ddc_service *ddc,
struct ddc_service *ddc;
int dc_link_aux_transfer_raw(struct ddc_service *ddc,
struct ddc_service *
static uint32_t dce_aux_configure_timeout(struct ddc_service *ddc,
int dce_aux_transfer_raw(struct ddc_service *ddc,
int dce_aux_transfer_dmub_raw(struct ddc_service *ddc,
bool dce_aux_transfer_with_retries(struct ddc_service *ddc,
int dce_aux_transfer_raw(struct ddc_service *ddc,
int dce_aux_transfer_dmub_raw(struct ddc_service *ddc,
bool dce_aux_transfer_with_retries(struct ddc_service *ddc,
(struct ddc_service *ddc,
struct ddc_service *ddc,
struct ddc_service *ddc,
struct ddc_service *oem_device;
struct ddc_service *ddc,
struct ddc_service *(*create_ddc_service)(
void (*destroy_ddc_service)(struct ddc_service **ddc);
struct ddc_service *ddc,
int (*aux_transfer_raw)(struct ddc_service *ddc,
struct ddc_service *ddc,
bool (*aux_transfer_with_retries_no_mutex)(struct ddc_service *ddc,
bool (*is_in_aux_transaction_mode)(struct ddc_service *ddc);
uint32_t (*get_aux_defer_delay)(struct ddc_service *ddc);
static void read_scdc_caps(struct ddc_service *ddc_service,
if (ddc_service->link->local_sink &&
!ddc_service->link->local_sink->edid_caps.scdc_present)
link_query_ddc_data(ddc_service, slave_address, &offset,
link_query_ddc_data(ddc_service, slave_address, &offset,
struct ddc_service *ddc,
struct ddc_service *ddc,
static enum signal_type dp_passive_dongle_detection(struct ddc_service *ddc,
struct ddc_service *ddc_service,
ddc_service->link = init_data->link;
ddc_service->ctx = init_data->ctx;
ddc_service->ddc_pin = NULL;
DC_LOGGER_INIT(ddc_service->ctx->logger);
if (ddc_service->link != NULL)
ddc_service->ddc_pin = dal_gpio_create_ddc(
ddc_service->flags.EDID_QUERY_DONE_ONCE = false;
ddc_service->flags.FORCE_READ_REPEATED_START = false;
ddc_service->flags.EDID_STRESS_READ = false;
ddc_service->flags.IS_INTERNAL_DISPLAY =
ddc_service->wa.raw = 0;
struct ddc_service *link_create_ddc_service(
struct ddc_service *ddc_service;
ddc_service = kzalloc_obj(struct ddc_service);
if (!ddc_service)
ddc_service_construct(ddc_service, init_data);
return ddc_service;
static void ddc_service_destruct(struct ddc_service *ddc)
void link_destroy_ddc_service(struct ddc_service **ddc)
struct ddc_service *ddc,
bool link_is_in_aux_transaction_mode(struct ddc_service *ddc)
void set_dongle_type(struct ddc_service *ddc,
struct ddc_service *ddc,
uint32_t link_get_aux_defer_delay(struct ddc_service *ddc)
static bool submit_aux_command(struct ddc_service *ddc,
struct ddc_service *ddc,
int link_aux_transfer_raw(struct ddc_service *ddc,
ddc_service->ctx->logger
bool link_configure_fixed_vs_pe_retimer(struct ddc_service *ddc, const uint8_t *data, uint32_t length)
bool link_query_fixed_vs_pe_retimer(struct ddc_service *ddc, uint8_t *data, uint32_t length)
bool link_aux_transfer_with_retries_no_mutex(struct ddc_service *ddc,
bool try_to_configure_aux_timeout(struct ddc_service *ddc,
struct ddc *get_ddc_pin(struct ddc_service *ddc_service)
return ddc_service->ddc_pin;
void write_scdc_data(struct ddc_service *ddc_service,
if (ddc_service->link->local_sink &&
(ddc_service->link->local_sink->edid_caps.panel_patch.skip_scdc_overwrite ||
!ddc_service->link->local_sink->edid_caps.scdc_present))
link_query_ddc_data(ddc_service, slave_address, &offset,
link_query_ddc_data(ddc_service, slave_address,
link_query_ddc_data(ddc_service, slave_address, write_buffer,
void read_scdc_data(struct ddc_service *ddc_service)
if (ddc_service->link->local_sink &&
ddc_service->link->local_sink->edid_caps.panel_patch.skip_scdc_overwrite)
link_query_ddc_data(ddc_service, slave_address, &offset,
link_query_ddc_data(ddc_service, slave_address,
link_query_ddc_data(ddc_service, slave_address,
struct ddc *get_ddc_pin(struct ddc_service *ddc_service);
int link_aux_transfer_raw(struct ddc_service *ddc,
struct ddc_service *link_create_ddc_service(
void link_destroy_ddc_service(struct ddc_service **ddc);
struct ddc_service *ddc,
uint32_t link_get_aux_defer_delay(struct ddc_service *ddc);
bool link_is_in_aux_transaction_mode(struct ddc_service *ddc);
bool try_to_configure_aux_timeout(struct ddc_service *ddc,
struct ddc_service *ddc,
bool link_aux_transfer_with_retries_no_mutex(struct ddc_service *ddc,
struct ddc_service *ddc,
struct ddc_service *ddc,
struct ddc_service *ddc_service,
struct ddc_service *ddc_service);
void set_dongle_type(struct ddc_service *ddc,