[PATCH] drm/amd/display: introduce quirks for i2c adaptor
S, Shirish
sshankar at amd.com
Mon Apr 23 04:30:30 UTC 2018
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 <shirish.s at 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;
>>
More information about the amd-gfx
mailing list