On 4/20/2018 11:54 PM, Harry Wentland wrote:
On 2018-04-17 02:57 AM, Shirish S wrote:
The dp aux channel cannot read messages of size greater
than 16 bytes, this patch adds quirks feild accordingly
at the initialization of the adaptor.
Is this in response to a bug?
Yes, its in continuation to the dm_dp_aux_transfer() return bug but also with an intention to clean up. Currently we are in a more reactive mode, i.e., in dm_dp_aux_transfer() we have a WARN_ON for the message size, i.e., at this time the i2c framework has already created a list of msg->sizes's, however by adding a quirk not only can we get rid of the WARN_ON but also ensure that the i2c framework knows about it and do not let form message reads > 16 bytes.

I don't see any other DRM driver using quirks like this, even though they also 
wouldn't be able to transfer more than 16 bytes when using i2c-over-aux. This 
makes me wonder why we need it.

Harry

Signed-off-by: Shirish S <shiris...@amd.com>
---
  drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c | 5 +++++
  1 file changed, 5 insertions(+)

diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c 
b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c
index 782491e..f7d6d9a 100644
--- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c
+++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c
@@ -464,10 +464,15 @@ static const struct drm_dp_mst_topology_cbs dm_mst_cbs = {
        .register_connector = dm_dp_mst_register_connector
  };
+/* I2C adapter quirks, max read len is 16 bytes. */
+static const struct i2c_adapter_quirks dm_dp_aux_quirks = {
+       .max_read_len = 128,
+};
  void amdgpu_dm_initialize_dp_connector(struct amdgpu_display_manager *dm,
                                       struct amdgpu_dm_connector *aconnector)
  {
        aconnector->dm_dp_aux.aux.name = "dmdc";
+       aconnector->dm_dp_aux.aux.ddc.quirks = &dm_dp_aux_quirks;
        aconnector->dm_dp_aux.aux.dev = dm->adev->dev;
        aconnector->dm_dp_aux.aux.transfer = dm_dp_aux_transfer;
        aconnector->dm_dp_aux.ddc_service = aconnector->dc_link->ddc;


_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

Reply via email to