From: Andrey Smirnov <andrew.smir...@gmail.com> [ Upstream commit e0655feaec62d5139b6b13a7b1bbb1ab8f1c2d83 ]
According to the datasheet tc358767 can transfer up to 16 bytes via its AUX channel, so the artificial limit of 8 appears to be too low. However only up to 15-bytes seem to be actually supported and trying to use 16-byte transfers results in transfers failing sporadically (with bogus status in case of I2C transfers), so limit it to 15. Signed-off-by: Andrey Smirnov <andrew.smir...@gmail.com> Reviewed-by: Andrzej Hajda <a.ha...@samsung.com> Reviewed-by: Tomi Valkeinen <tomi.valkei...@ti.com> Cc: Andrzej Hajda <a.ha...@samsung.com> Cc: Laurent Pinchart <laurent.pinch...@ideasonboard.com> Cc: Tomi Valkeinen <tomi.valkei...@ti.com> Cc: Andrey Gusakov <andrey.gusa...@cogentembedded.com> Cc: Philipp Zabel <p.za...@pengutronix.de> Cc: Cory Tusar <cory.tu...@zii.aero> Cc: Chris Healy <cphe...@gmail.com> Cc: Lucas Stach <l.st...@pengutronix.de> Cc: dri-de...@lists.freedesktop.org Cc: linux-kernel@vger.kernel.org Signed-off-by: Andrzej Hajda <a.ha...@samsung.com> Link: https://patchwork.freedesktop.org/patch/msgid/20190619052716.16831-9-andrew.smir...@gmail.com Signed-off-by: Sasha Levin <sas...@kernel.org> --- drivers/gpu/drm/bridge/tc358767.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/gpu/drm/bridge/tc358767.c b/drivers/gpu/drm/bridge/tc358767.c index aaca5248da070..d728b6cf61096 100644 --- a/drivers/gpu/drm/bridge/tc358767.c +++ b/drivers/gpu/drm/bridge/tc358767.c @@ -302,7 +302,7 @@ static ssize_t tc_aux_transfer(struct drm_dp_aux *aux, struct drm_dp_aux_msg *msg) { struct tc_data *tc = aux_to_tc(aux); - size_t size = min_t(size_t, 8, msg->size); + size_t size = min_t(size_t, DP_AUX_MAX_PAYLOAD_BYTES - 1, msg->size); u8 request = msg->request & ~DP_AUX_I2C_MOT; u8 *buf = msg->buffer; u32 tmp = 0; -- 2.20.1