On Tue, Mar 17, 2015 at 05:18:54PM +0200, Jani Nikula wrote: > Allow for a larger receive data size, and check if the receiver returned > the number of bytes written. Without this, we've basically skipped all > the unwritten bytes for short writes. > > Signed-off-by: Jani Nikula <jani.nikula@xxxxxxxxx> Whoops :) Looks correct to me. Reviewed-by: Ville Syrjälä <ville.syrjala@xxxxxxxxxxxxxxx> > --- > drivers/gpu/drm/i915/intel_dp.c | 11 ++++++++--- > 1 file changed, 8 insertions(+), 3 deletions(-) > > diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c > index 5256c064da05..3967af10f53c 100644 > --- a/drivers/gpu/drm/i915/intel_dp.c > +++ b/drivers/gpu/drm/i915/intel_dp.c > @@ -951,7 +951,7 @@ intel_dp_aux_transfer(struct drm_dp_aux *aux, struct drm_dp_aux_msg *msg) > case DP_AUX_NATIVE_WRITE: > case DP_AUX_I2C_WRITE: > txsize = msg->size ? HEADER_SIZE + msg->size : BARE_ADDRESS_SIZE; > - rxsize = 1; > + rxsize = 2; /* 0 or 1 data bytes */ > > if (WARN_ON(txsize > 20)) > return -E2BIG; > @@ -962,8 +962,13 @@ intel_dp_aux_transfer(struct drm_dp_aux *aux, struct drm_dp_aux_msg *msg) > if (ret > 0) { > msg->reply = rxbuf[0] >> 4; > > - /* Return payload size. */ > - ret = msg->size; > + if (ret > 1) { > + /* Number of bytes written in a short write. */ > + ret = clamp_t(int, rxbuf[1], 0, msg->size); > + } else { > + /* Return payload size. */ > + ret = msg->size; > + } > } > break; > > -- > 2.1.4 -- Ville Syrjälä Intel OTC _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/intel-gfx