aboutsummaryrefslogtreecommitdiffstats
path: root/common/recipes-kernel/linux/files/0827-drm-amd-dal-Route-i2c-through-drm-s-i2cadapter.patch
diff options
context:
space:
mode:
Diffstat (limited to 'common/recipes-kernel/linux/files/0827-drm-amd-dal-Route-i2c-through-drm-s-i2cadapter.patch')
-rw-r--r--common/recipes-kernel/linux/files/0827-drm-amd-dal-Route-i2c-through-drm-s-i2cadapter.patch682
1 files changed, 0 insertions, 682 deletions
diff --git a/common/recipes-kernel/linux/files/0827-drm-amd-dal-Route-i2c-through-drm-s-i2cadapter.patch b/common/recipes-kernel/linux/files/0827-drm-amd-dal-Route-i2c-through-drm-s-i2cadapter.patch
deleted file mode 100644
index 16e2c74c..00000000
--- a/common/recipes-kernel/linux/files/0827-drm-amd-dal-Route-i2c-through-drm-s-i2cadapter.patch
+++ /dev/null
@@ -1,682 +0,0 @@
-From c0da0066c05d0e388a3e6a632ae61fab62f46ff5 Mon Sep 17 00:00:00 2001
-From: Harry Wentland <harry.wentland@amd.com>
-Date: Thu, 18 Feb 2016 15:45:33 -0500
-Subject: [PATCH 0827/1110] drm/amd/dal: Route i2c through drm's i2cadapter
-
-Signed-off-by: Harry Wentland <harry.wentland@amd.com>
----
- .../gpu/drm/amd/dal/amdgpu_dm/amdgpu_dm_helpers.c | 31 +++++
- .../gpu/drm/amd/dal/amdgpu_dm/amdgpu_dm_types.c | 74 +++++++++++-
- drivers/gpu/drm/amd/dal/dc/bios/bios_parser.c | 1 +
- drivers/gpu/drm/amd/dal/dc/core/dc.c | 15 +++
- drivers/gpu/drm/amd/dal/dc/core/dc_link.c | 1 +
- drivers/gpu/drm/amd/dal/dc/core/dc_link_ddc.c | 72 ++++--------
- drivers/gpu/drm/amd/dal/dc/dc.h | 4 +
- drivers/gpu/drm/amd/dal/dc/dc_ddc_types.h | 129 +++++++++++++++++++++
- drivers/gpu/drm/amd/dal/dc/dc_types.h | 3 +
- drivers/gpu/drm/amd/dal/dc/dm_helpers.h | 5 +
- drivers/gpu/drm/amd/dal/dc/gpio/ddc.h | 7 --
- drivers/gpu/drm/amd/dal/dc/inc/dc_link_ddc.h | 1 +
- .../gpu/drm/amd/dal/include/ddc_service_types.h | 30 -----
- drivers/gpu/drm/amd/dal/include/gpio_types.h | 4 -
- drivers/gpu/drm/amd/dal/include/i2caux_interface.h | 23 ----
- 15 files changed, 282 insertions(+), 118 deletions(-)
- create mode 100644 drivers/gpu/drm/amd/dal/dc/dc_ddc_types.h
-
-diff --git a/drivers/gpu/drm/amd/dal/amdgpu_dm/amdgpu_dm_helpers.c b/drivers/gpu/drm/amd/dal/amdgpu_dm/amdgpu_dm_helpers.c
-index bbc60a6..97a3206 100644
---- a/drivers/gpu/drm/amd/dal/amdgpu_dm/amdgpu_dm_helpers.c
-+++ b/drivers/gpu/drm/amd/dal/amdgpu_dm/amdgpu_dm_helpers.c
-@@ -26,6 +26,7 @@
- #include <linux/string.h>
- #include <linux/acpi.h>
- #include <linux/version.h>
-+#include <linux/i2c.h>
-
- #include <drm/drmP.h>
- #include <drm/drm_crtc_helper.h>
-@@ -498,3 +499,33 @@ bool dm_helper_dp_write_dpcd(
- return drm_dp_dpcd_write(&aconnector->dm_dp_aux.aux,
- address, (uint8_t *)data, size) > 0;
- }
-+
-+bool dm_helpers_submit_i2c(
-+ struct dc_context *ctx,
-+ const struct dc_link *link,
-+ struct i2c_command *cmd)
-+{
-+ struct amdgpu_device *adev = ctx->driver_context;
-+ struct drm_device *dev = adev->ddev;
-+ struct amdgpu_connector *aconnector = get_connector_for_link(dev, link);
-+ struct i2c_msg *msgs;
-+ int i = 0;
-+ int num = cmd->number_of_payloads;
-+
-+ if (!aconnector) {
-+ DRM_ERROR("Failed to found connector for link!");
-+ return false;
-+ }
-+
-+ msgs = kzalloc(num * sizeof(struct i2c_msg), GFP_KERNEL);
-+
-+ for (i = 0; i < num; i++) {
-+ msgs[i].flags = cmd->payloads[i].write ? I2C_M_RD : 0;
-+ msgs[i].addr = cmd->payloads[i].address;
-+ msgs[i].len = cmd->payloads[i].length;
-+ msgs[i].buf = cmd->payloads[i].data;
-+ }
-+
-+ return i2c_transfer(&aconnector->i2c->base, msgs, num) == num;
-+}
-+
-diff --git a/drivers/gpu/drm/amd/dal/amdgpu_dm/amdgpu_dm_types.c b/drivers/gpu/drm/amd/dal/amdgpu_dm/amdgpu_dm_types.c
-index df7afc9..84ce0bb 100644
---- a/drivers/gpu/drm/amd/dal/amdgpu_dm/amdgpu_dm_types.c
-+++ b/drivers/gpu/drm/amd/dal/amdgpu_dm/amdgpu_dm_types.c
-@@ -1808,6 +1808,58 @@ void amdgpu_dm_connector_init_helper(
- 0);
- }
-
-+int amdgpu_dm_i2c_xfer(struct i2c_adapter *i2c_adap,
-+ struct i2c_msg *msgs, int num)
-+{
-+ struct amdgpu_i2c_adapter *i2c = i2c_get_adapdata(i2c_adap);
-+ struct i2c_command cmd;
-+ int i;
-+
-+ cmd.payloads = kzalloc(num * sizeof(struct i2c_payload), GFP_KERNEL);
-+ cmd.number_of_payloads = num;
-+ cmd.engine = I2C_COMMAND_ENGINE_DEFAULT;
-+ cmd.speed = 100;
-+
-+ for (i = 0; i < num; i++) {
-+ cmd.payloads[i].write = (msgs[i].flags & I2C_M_RD);
-+ cmd.payloads[i].address = msgs[i].addr;
-+ cmd.payloads[i].length = msgs[i].len;
-+ cmd.payloads[i].data = msgs[i].buf;
-+ }
-+
-+ if (dc_submit_i2c(i2c->dm->dc, i2c->link_index, &cmd))
-+ return num;
-+ else
-+ return -EIO;
-+}
-+
-+u32 amdgpu_dm_i2c_func(struct i2c_adapter *adap)
-+{
-+ return I2C_FUNC_I2C | I2C_FUNC_SMBUS_EMUL;
-+}
-+
-+static const struct i2c_algorithm amdgpu_dm_i2c_algo = {
-+ .master_xfer = amdgpu_dm_i2c_xfer,
-+ .functionality = amdgpu_dm_i2c_func,
-+};
-+
-+struct amdgpu_i2c_adapter *create_i2c(unsigned int link_index, struct amdgpu_display_manager *dm, int *res)
-+{
-+ struct amdgpu_i2c_adapter *i2c;
-+
-+ i2c = kzalloc(sizeof (struct amdgpu_i2c_adapter), GFP_KERNEL);
-+ i2c->dm = dm;
-+ i2c->base.owner = THIS_MODULE;
-+ i2c->base.class = I2C_CLASS_DDC;
-+ i2c->base.dev.parent = &dm->adev->pdev->dev;
-+ i2c->base.algo = &amdgpu_dm_i2c_algo;
-+ 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);
-+
-+ return i2c;
-+}
-+
- /* Note: this function assumes that dc_link_detect() was called for the
- * dc_link which will be represented by this aconnector. */
- int amdgpu_dm_connector_init(
-@@ -1816,12 +1868,23 @@ int amdgpu_dm_connector_init(
- uint32_t link_index,
- struct amdgpu_encoder *aencoder)
- {
-- int res, connector_type;
-+ int res = 0;
-+ int connector_type;
- struct dc *dc = dm->dc;
- const struct dc_link *link = dc_get_link_at_index(dc, link_index);
-+ struct amdgpu_i2c_adapter *i2c;
-
- DRM_DEBUG_KMS("%s()\n", __func__);
-
-+ i2c = create_i2c(link->link_index, dm, &res);
-+ aconnector->i2c = i2c;
-+ res = i2c_add_adapter(&i2c->base);
-+
-+ if (res) {
-+ DRM_ERROR("Failed to register hw i2c %d\n", link->link_index);
-+ goto out_free;
-+ }
-+
- connector_type = to_drm_connector_type(link->connector_signal);
-
- res = drm_connector_init(
-@@ -1833,7 +1896,7 @@ int amdgpu_dm_connector_init(
- if (res) {
- DRM_ERROR("connector_init failed\n");
- aconnector->connector_id = -1;
-- return res;
-+ goto out_free;
- }
-
- drm_connector_helper_add(
-@@ -1877,7 +1940,12 @@ int amdgpu_dm_connector_init(
- }
- #endif
-
-- return 0;
-+out_free:
-+ if (res) {
-+ kfree(i2c);
-+ aconnector->i2c = NULL;
-+ }
-+ return res;
- }
-
- int amdgpu_dm_get_encoder_crtc_mask(struct amdgpu_device *adev)
-diff --git a/drivers/gpu/drm/amd/dal/dc/bios/bios_parser.c b/drivers/gpu/drm/amd/dal/dc/bios/bios_parser.c
-index 4ce5f9f..586a5ee 100644
---- a/drivers/gpu/drm/amd/dal/dc/bios/bios_parser.c
-+++ b/drivers/gpu/drm/amd/dal/dc/bios/bios_parser.c
-@@ -3432,6 +3432,7 @@ static bool i2c_read(
- cmd.payloads = payloads;
- cmd.number_of_payloads = ARRAY_SIZE(payloads);
-
-+ /* TODO route this through drm i2c_adapter */
- result = dal_i2caux_submit_i2c_command(
- dal_adapter_service_get_i2caux(bp->as),
- ddc,
-diff --git a/drivers/gpu/drm/amd/dal/dc/core/dc.c b/drivers/gpu/drm/amd/dal/dc/core/dc.c
-index 666e248..8ca8121 100644
---- a/drivers/gpu/drm/amd/dal/dc/core/dc.c
-+++ b/drivers/gpu/drm/amd/dal/dc/core/dc.c
-@@ -817,6 +817,21 @@ bool dc_write_dpcd(
- return r == DDC_RESULT_SUCESSFULL;
- }
-
-+bool dc_submit_i2c(
-+ struct dc *dc,
-+ uint32_t link_index,
-+ struct i2c_command *cmd)
-+{
-+ struct core_link *link =
-+ DC_LINK_TO_LINK(dc_get_link_at_index(dc, link_index));
-+ struct ddc_service *ddc = link->ddc;
-+
-+ return dal_i2caux_submit_i2c_command(
-+ dal_adapter_service_get_i2caux(ddc->as),
-+ ddc->ddc_pin,
-+ cmd);
-+}
-+
- bool dc_link_add_remote_sink(const struct dc_link *link, struct dc_sink *sink)
- {
- struct core_link *core_link = DC_LINK_TO_LINK(link);
-diff --git a/drivers/gpu/drm/amd/dal/dc/core/dc_link.c b/drivers/gpu/drm/amd/dal/dc/core/dc_link.c
-index 8203432..054216c 100644
---- a/drivers/gpu/drm/amd/dal/dc/core/dc_link.c
-+++ b/drivers/gpu/drm/amd/dal/dc/core/dc_link.c
-@@ -971,6 +971,7 @@ static bool construct(
- ddc_service_init_data.as = as;
- ddc_service_init_data.ctx = link->ctx;
- ddc_service_init_data.id = link->link_id;
-+ ddc_service_init_data.link = link;
- link->ddc = dal_ddc_service_create(&ddc_service_init_data);
-
- link->public.ddc_hw_inst =
-diff --git a/drivers/gpu/drm/amd/dal/dc/core/dc_link_ddc.c b/drivers/gpu/drm/amd/dal/dc/core/dc_link_ddc.c
-index 62b8c26..f725da7 100644
---- a/drivers/gpu/drm/amd/dal/dc/core/dc_link_ddc.c
-+++ b/drivers/gpu/drm/amd/dal/dc/core/dc_link_ddc.c
-@@ -24,14 +24,14 @@
- */
-
- #include "dm_services.h"
--
-+#include "dm_helpers.h"
- #include "include/adapter_service_interface.h"
- #include "include/ddc_service_types.h"
- #include "include/grph_object_id.h"
- #include "include/dpcd_defs.h"
- #include "include/logger_interface.h"
- #include "include/vector.h"
--
-+#include "core_types.h"
- #include "dc_link_ddc.h"
-
- #define AUX_POWER_UP_WA_DELAY 500
-@@ -145,37 +145,6 @@ union hdmi_scdc_test_config_Data {
-
-
-
--union ddc_wa {
-- struct {
-- uint32_t DP_SKIP_POWER_OFF:1;
-- uint32_t DP_AUX_POWER_UP_WA_DELAY:1;
-- } bits;
-- uint32_t raw;
--};
--
--struct ddc_flags {
-- uint8_t EDID_QUERY_DONE_ONCE:1;
-- uint8_t IS_INTERNAL_DISPLAY:1;
-- uint8_t FORCE_READ_REPEATED_START:1;
-- uint8_t EDID_STRESS_READ:1;
--
--};
--
--struct ddc_service {
-- struct ddc *ddc_pin;
-- struct ddc_flags flags;
-- union ddc_wa wa;
-- enum ddc_transaction_type transaction_type;
-- enum display_dongle_type dongle_type;
-- struct dp_receiver_id_info dp_receiver_id_info;
-- struct adapter_service *as;
-- struct dc_context *ctx;
--
-- uint32_t address;
-- uint32_t edid_buf_len;
-- uint8_t edid_buf[MAX_EDID_BUFFER_SIZE];
--};
--
- struct i2c_payloads {
- struct vector payloads;
- };
-@@ -312,6 +281,7 @@ static bool construct(
- enum connector_id connector_id =
- dal_graphics_object_id_get_connector_id(init_data->id);
-
-+ ddc_service->link = init_data->link;
- ddc_service->ctx = init_data->ctx;
- ddc_service->as = init_data->as;
- ddc_service->ddc_pin = dal_adapter_service_obtain_ddc(
-@@ -474,10 +444,10 @@ static bool i2c_read(
- .engine = DDC_I2C_COMMAND_ENGINE,
- .speed = dal_adapter_service_get_sw_i2c_speed(ddc->as) };
-
-- return dal_i2caux_submit_i2c_command(
-- dal_adapter_service_get_i2caux(ddc->as),
-- ddc->ddc_pin,
-- &command);
-+ return dm_helpers_submit_i2c(
-+ ddc->ctx,
-+ &ddc->link->public,
-+ &command);
- }
-
- static uint8_t aux_read_edid_block(
-@@ -614,18 +584,18 @@ static uint8_t i2c_read_edid_block(
- cmd.payloads = &payloads[1];
- cmd.number_of_payloads = 1;
-
-- if (dal_i2caux_submit_i2c_command(
-- dal_adapter_service_get_i2caux(ddc->as),
-- ddc->ddc_pin,
-+ if (dm_helpers_submit_i2c(
-+ ddc->ctx,
-+ &ddc->link->public,
- &cmd)) {
-
- cmd.payloads = &payloads[2];
- cmd.number_of_payloads = 1;
-
-- ret = dal_i2caux_submit_i2c_command(
-- dal_adapter_service_get_i2caux(ddc->as),
-- ddc->ddc_pin,
-- &cmd);
-+ ret = dm_helpers_submit_i2c(
-+ ddc->ctx,
-+ &ddc->link->public,
-+ &cmd);
- }
-
- } else {
-@@ -644,10 +614,10 @@ static uint8_t i2c_read_edid_block(
- cmd.number_of_payloads = 2;
- }
-
-- ret = dal_i2caux_submit_i2c_command(
-- dal_adapter_service_get_i2caux(ddc->as),
-- ddc->ddc_pin,
-- &cmd);
-+ ret = dm_helpers_submit_i2c(
-+ ddc->ctx,
-+ &ddc->link->public,
-+ &cmd);
- }
-
- return ret ? DDC_EDID_BLOCK_SIZE : 0;
-@@ -982,9 +952,9 @@ bool dal_ddc_service_query_ddc_data(
- command.number_of_payloads =
- dal_ddc_i2c_payloads_get_count(payloads);
-
-- ret = dal_i2caux_submit_i2c_command(
-- dal_adapter_service_get_i2caux(ddc->as),
-- ddc->ddc_pin,
-+ ret = dm_helpers_submit_i2c(
-+ ddc->ctx,
-+ &ddc->link->public,
- &command);
-
- dal_ddc_i2c_payloads_destroy(&payloads);
-diff --git a/drivers/gpu/drm/amd/dal/dc/dc.h b/drivers/gpu/drm/amd/dal/dc/dc.h
-index 9cd239c..40e5883 100644
---- a/drivers/gpu/drm/amd/dal/dc/dc.h
-+++ b/drivers/gpu/drm/amd/dal/dc/dc.h
-@@ -511,5 +511,9 @@ bool dc_write_dpcd(
- const uint8_t *data,
- uint32_t size);
-
-+bool dc_submit_i2c(
-+ struct dc *dc,
-+ uint32_t link_index,
-+ struct i2c_command *cmd);
-
- #endif /* DC_INTERFACE_H_ */
-diff --git a/drivers/gpu/drm/amd/dal/dc/dc_ddc_types.h b/drivers/gpu/drm/amd/dal/dc/dc_ddc_types.h
-new file mode 100644
-index 0000000..c74d99c
---- /dev/null
-+++ b/drivers/gpu/drm/amd/dal/dc/dc_ddc_types.h
-@@ -0,0 +1,129 @@
-+/*
-+ * Copyright 2012-15 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_DDC_TYPES_H_
-+#define DC_DDC_TYPES_H_
-+
-+struct i2c_payload {
-+ bool write;
-+ uint8_t address;
-+ uint8_t length;
-+ uint8_t *data;
-+};
-+
-+enum i2c_command_engine {
-+ I2C_COMMAND_ENGINE_DEFAULT,
-+ I2C_COMMAND_ENGINE_SW,
-+ I2C_COMMAND_ENGINE_HW
-+};
-+
-+struct i2c_command {
-+ struct i2c_payload *payloads;
-+ uint8_t number_of_payloads;
-+
-+ enum i2c_command_engine engine;
-+
-+ /* expressed in KHz
-+ * zero means "use default value" */
-+ uint32_t speed;
-+};
-+
-+struct gpio_ddc_hw_info {
-+ bool hw_supported;
-+ uint32_t ddc_channel;
-+};
-+
-+struct ddc {
-+ struct gpio *pin_data;
-+ struct gpio *pin_clock;
-+ struct gpio_ddc_hw_info hw_info;
-+ struct dc_context *ctx;
-+};
-+
-+
-+union ddc_wa {
-+ struct {
-+ uint32_t DP_SKIP_POWER_OFF:1;
-+ uint32_t DP_AUX_POWER_UP_WA_DELAY:1;
-+ } bits;
-+ uint32_t raw;
-+};
-+
-+struct ddc_flags {
-+ uint8_t EDID_QUERY_DONE_ONCE:1;
-+ uint8_t IS_INTERNAL_DISPLAY:1;
-+ uint8_t FORCE_READ_REPEATED_START:1;
-+ uint8_t EDID_STRESS_READ:1;
-+
-+};
-+
-+enum ddc_transaction_type {
-+ DDC_TRANSACTION_TYPE_NONE = 0,
-+ DDC_TRANSACTION_TYPE_I2C,
-+ DDC_TRANSACTION_TYPE_I2C_OVER_AUX,
-+ DDC_TRANSACTION_TYPE_I2C_OVER_AUX_WITH_DEFER,
-+ DDC_TRANSACTION_TYPE_I2C_OVER_AUX_RETRY_DEFER
-+};
-+
-+enum display_dongle_type {
-+ DISPLAY_DONGLE_NONE = 0,
-+ /* Active converter types*/
-+ DISPLAY_DONGLE_DP_VGA_CONVERTER,
-+ DISPLAY_DONGLE_DP_DVI_CONVERTER,
-+ DISPLAY_DONGLE_DP_HDMI_CONVERTER,
-+ /* DP-HDMI/DVI passive dongles (Type 1 and Type 2)*/
-+ DISPLAY_DONGLE_DP_DVI_DONGLE,
-+ DISPLAY_DONGLE_DP_HDMI_DONGLE,
-+ /* Other types of dongle*/
-+ DISPLAY_DONGLE_DP_HDMI_MISMATCHED_DONGLE,
-+};
-+
-+struct dp_receiver_id_info {
-+ uint32_t dpcd_rev;
-+ uint32_t sink_id;
-+ int8_t sink_id_str[6];
-+ int8_t sink_hw_revision;
-+ int8_t sink_fw_revision[2];
-+ uint32_t branch_id;
-+ int8_t branch_name[6];
-+ enum display_dongle_type dongle_type;
-+};
-+
-+struct ddc_service {
-+ struct ddc *ddc_pin;
-+ struct ddc_flags flags;
-+ union ddc_wa wa;
-+ enum ddc_transaction_type transaction_type;
-+ enum display_dongle_type dongle_type;
-+ struct dp_receiver_id_info dp_receiver_id_info;
-+ struct adapter_service *as;
-+ struct dc_context *ctx;
-+ struct core_link *link;
-+
-+ uint32_t address;
-+ uint32_t edid_buf_len;
-+ uint8_t edid_buf[MAX_EDID_BUFFER_SIZE];
-+};
-+
-+#endif /* DC_DDC_TYPES_H_ */
-diff --git a/drivers/gpu/drm/amd/dal/dc/dc_types.h b/drivers/gpu/drm/amd/dal/dc/dc_types.h
-index 219fe77..8d81d08 100644
---- a/drivers/gpu/drm/amd/dal/dc/dc_types.h
-+++ b/drivers/gpu/drm/amd/dal/dc/dc_types.h
-@@ -67,6 +67,8 @@ enum dce_environment {
- #define MAX_SURFACE_NUM 2
- #define NUM_PIXEL_FORMATS 10
-
-+#include "dc_ddc_types.h"
-+
- enum tiling_mode {
- TILING_MODE_INVALID,
- TILING_MODE_LINEAR,
-@@ -102,6 +104,7 @@ enum plane_stereo_format {
- PLANE_STEREO_FORMAT_CHECKER_BOARD = 7
- };
-
-+
- /* TODO: Find way to calculate number of bits
- * Please increase if pixel_format enum increases
- * num from PIXEL_FORMAT_INDEX8 to PIXEL_FORMAT_444BPP32
-diff --git a/drivers/gpu/drm/amd/dal/dc/dm_helpers.h b/drivers/gpu/drm/amd/dal/dc/dm_helpers.h
-index b6ce510..faffc16 100644
---- a/drivers/gpu/drm/amd/dal/dc/dm_helpers.h
-+++ b/drivers/gpu/drm/amd/dal/dc/dm_helpers.h
-@@ -95,4 +95,9 @@ bool dm_helper_dp_write_dpcd(
- const uint8_t *data,
- uint32_t size);
-
-+bool dm_helpers_submit_i2c(
-+ struct dc_context *ctx,
-+ const struct dc_link *link,
-+ struct i2c_command *cmd);
-+
- #endif /* __DM_HELPERS__ */
-diff --git a/drivers/gpu/drm/amd/dal/dc/gpio/ddc.h b/drivers/gpu/drm/amd/dal/dc/gpio/ddc.h
-index 2631571..500c3cd 100644
---- a/drivers/gpu/drm/amd/dal/dc/gpio/ddc.h
-+++ b/drivers/gpu/drm/amd/dal/dc/gpio/ddc.h
-@@ -26,13 +26,6 @@
- #ifndef __DAL_DDC_H__
- #define __DAL_DDC_H__
-
--struct ddc {
-- struct gpio *pin_data;
-- struct gpio *pin_clock;
-- struct gpio_ddc_hw_info hw_info;
-- struct dc_context *ctx;
--};
--
- struct ddc *dal_gpio_create_ddc(
- struct gpio_service *service,
- uint32_t offset,
-diff --git a/drivers/gpu/drm/amd/dal/dc/inc/dc_link_ddc.h b/drivers/gpu/drm/amd/dal/dc/inc/dc_link_ddc.h
-index 18104d6..088afce 100644
---- a/drivers/gpu/drm/amd/dal/dc/inc/dc_link_ddc.h
-+++ b/drivers/gpu/drm/amd/dal/dc/inc/dc_link_ddc.h
-@@ -69,6 +69,7 @@ struct ddc_service_init_data {
- struct adapter_service *as;
- struct graphics_object_id id;
- struct dc_context *ctx;
-+ struct core_link *link;
- };
-
- struct ddc_service *dal_ddc_service_create(
-diff --git a/drivers/gpu/drm/amd/dal/include/ddc_service_types.h b/drivers/gpu/drm/amd/dal/include/ddc_service_types.h
-index cbdb6df..63dbbc5 100644
---- a/drivers/gpu/drm/amd/dal/include/ddc_service_types.h
-+++ b/drivers/gpu/drm/amd/dal/include/ddc_service_types.h
-@@ -52,26 +52,6 @@ enum ddc_service_type {
- DDC_SERVICE_TYPE_DISPLAY_PORT_MST,
- };
-
--enum ddc_transaction_type {
-- DDC_TRANSACTION_TYPE_NONE = 0,
-- DDC_TRANSACTION_TYPE_I2C,
-- DDC_TRANSACTION_TYPE_I2C_OVER_AUX,
-- DDC_TRANSACTION_TYPE_I2C_OVER_AUX_WITH_DEFER,
-- DDC_TRANSACTION_TYPE_I2C_OVER_AUX_RETRY_DEFER
--};
--
--enum display_dongle_type {
-- DISPLAY_DONGLE_NONE = 0,
-- /* Active converter types*/
-- DISPLAY_DONGLE_DP_VGA_CONVERTER,
-- DISPLAY_DONGLE_DP_DVI_CONVERTER,
-- DISPLAY_DONGLE_DP_HDMI_CONVERTER,
-- /* DP-HDMI/DVI passive dongles (Type 1 and Type 2)*/
-- DISPLAY_DONGLE_DP_DVI_DONGLE,
-- DISPLAY_DONGLE_DP_HDMI_DONGLE,
-- /* Other types of dongle*/
-- DISPLAY_DONGLE_DP_HDMI_MISMATCHED_DONGLE,
--};
-
- enum dcs_dpcd_revision {
- DCS_DPCD_REV_10 = 0x10,
-@@ -130,16 +110,6 @@ struct display_sink_capability {
- enum signal_type signal;
- };
-
--struct dp_receiver_id_info {
-- uint32_t dpcd_rev;
-- uint32_t sink_id;
-- int8_t sink_id_str[6];
-- int8_t sink_hw_revision;
-- int8_t sink_fw_revision[2];
-- uint32_t branch_id;
-- int8_t branch_name[6];
-- enum display_dongle_type dongle_type;
--};
-
- struct av_sync_data {
- uint8_t av_granularity;/* DPCD 00023h */
-diff --git a/drivers/gpu/drm/amd/dal/include/gpio_types.h b/drivers/gpu/drm/amd/dal/include/gpio_types.h
-index 6d3214b..62548d6 100644
---- a/drivers/gpu/drm/amd/dal/include/gpio_types.h
-+++ b/drivers/gpu/drm/amd/dal/include/gpio_types.h
-@@ -329,10 +329,6 @@ struct gpio_config_data {
- } config;
- };
-
--struct gpio_ddc_hw_info {
-- bool hw_supported;
-- uint32_t ddc_channel;
--};
-
- struct gpio_ddc_open_options {
- bool en_bit_present;
-diff --git a/drivers/gpu/drm/amd/dal/include/i2caux_interface.h b/drivers/gpu/drm/amd/dal/include/i2caux_interface.h
-index b961d24..ac16fa0 100644
---- a/drivers/gpu/drm/amd/dal/include/i2caux_interface.h
-+++ b/drivers/gpu/drm/amd/dal/include/i2caux_interface.h
-@@ -29,29 +29,6 @@
- #include "ddc_interface.h"
- #include "adapter_service_interface.h"
-
--struct i2c_payload {
-- bool write;
-- uint8_t address;
-- uint8_t length;
-- uint8_t *data;
--};
--
--enum i2c_command_engine {
-- I2C_COMMAND_ENGINE_DEFAULT,
-- I2C_COMMAND_ENGINE_SW,
-- I2C_COMMAND_ENGINE_HW
--};
--
--struct i2c_command {
-- struct i2c_payload *payloads;
-- uint8_t number_of_payloads;
--
-- enum i2c_command_engine engine;
--
-- /* expressed in KHz
-- * zero means "use default value" */
-- uint32_t speed;
--};
-
- #define DEFAULT_AUX_MAX_DATA_SIZE 16
- #define AUX_MAX_DEFER_WRITE_RETRY 20
---
-2.7.4
-