Message ID | 20181210210749.20649-1-dhinakaran.pandiyan@intel.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | drm/dp: Set the MOT bit for Write_Status_Update_Request transactions | expand |
On Mon, Dec 10, 2018 at 01:07:49PM -0800, Dhinakaran Pandiyan wrote: > The Write_Status_Update_Request I2C transaction requires the MOT bit to > be set, Change the logical AND to OR to fix what looks like a typo. It's not a type. We're just preserving MOT. What makes you think it should always be set? > > Cc: dri-devel@lists.freedesktop.org > Cc: Jani Nikula <jani.nikula@intel.com> > Cc: Ville Syrjälä <ville.syrjala@linux.intel.com> > Fixes: 68ec2a2a2481 ("drm/dp: Use I2C_WRITE_STATUS_UPDATE to drain partial I2C_WRITE requests") > Signed-off-by: Dhinakaran Pandiyan <dhinakaran.pandiyan@intel.com> > --- > drivers/gpu/drm/drm_dp_helper.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/gpu/drm/drm_dp_helper.c b/drivers/gpu/drm/drm_dp_helper.c > index 2d6c491a0542..d98805b517f0 100644 > --- a/drivers/gpu/drm/drm_dp_helper.c > +++ b/drivers/gpu/drm/drm_dp_helper.c > @@ -677,7 +677,7 @@ static void drm_dp_i2c_msg_write_status_update(struct drm_dp_aux_msg *msg) > * rest of the message > */ > if ((msg->request & ~DP_AUX_I2C_MOT) == DP_AUX_I2C_WRITE) { > - msg->request &= DP_AUX_I2C_MOT; > + msg->request |= DP_AUX_I2C_MOT; > msg->request |= DP_AUX_I2C_WRITE_STATUS_UPDATE; > } > } > -- > 2.17.1
On Mon, Dec 10, 2018 at 11:29:06PM +0200, Ville Syrjälä wrote: > On Mon, Dec 10, 2018 at 01:07:49PM -0800, Dhinakaran Pandiyan wrote: > > The Write_Status_Update_Request I2C transaction requires the MOT bit to > > be set, Change the logical AND to OR to fix what looks like a typo. > > It's not a type. ^ But this is :P > We're just preserving MOT. What makes you think it > should always be set? > > > > > Cc: dri-devel@lists.freedesktop.org > > Cc: Jani Nikula <jani.nikula@intel.com> > > Cc: Ville Syrjälä <ville.syrjala@linux.intel.com> > > Fixes: 68ec2a2a2481 ("drm/dp: Use I2C_WRITE_STATUS_UPDATE to drain partial I2C_WRITE requests") > > Signed-off-by: Dhinakaran Pandiyan <dhinakaran.pandiyan@intel.com> > > --- > > drivers/gpu/drm/drm_dp_helper.c | 2 +- > > 1 file changed, 1 insertion(+), 1 deletion(-) > > > > diff --git a/drivers/gpu/drm/drm_dp_helper.c b/drivers/gpu/drm/drm_dp_helper.c > > index 2d6c491a0542..d98805b517f0 100644 > > --- a/drivers/gpu/drm/drm_dp_helper.c > > +++ b/drivers/gpu/drm/drm_dp_helper.c > > @@ -677,7 +677,7 @@ static void drm_dp_i2c_msg_write_status_update(struct drm_dp_aux_msg *msg) > > * rest of the message > > */ > > if ((msg->request & ~DP_AUX_I2C_MOT) == DP_AUX_I2C_WRITE) { > > - msg->request &= DP_AUX_I2C_MOT; > > + msg->request |= DP_AUX_I2C_MOT; > > msg->request |= DP_AUX_I2C_WRITE_STATUS_UPDATE; > > } > > } > > -- > > 2.17.1 > > -- > Ville Syrjälä > Intel > _______________________________________________ > Intel-gfx mailing list > Intel-gfx@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/intel-gfx
On Mon, 2018-12-10 at 23:29 +0200, Ville Syrjälä wrote: > On Mon, Dec 10, 2018 at 01:07:49PM -0800, Dhinakaran Pandiyan wrote: > > The Write_Status_Update_Request I2C transaction requires the MOT > > bit to > > be set, Change the logical AND to OR to fix what looks like a typo. > > It's not a type. We're just preserving MOT. What makes you think it > should always be set? > The table defining request commands (2-148) has the MOT bit set for Write_Status_Update_Request, doesn't make it look like an option when querying the status. Checking the callers again, I see that we could get a defer when ending an i2c transaction and that will require a Write_Status_Update_Request with MOT unset. Sorry for the noise. > > > > Cc: dri-devel@lists.freedesktop.org > > Cc: Jani Nikula <jani.nikula@intel.com> > > Cc: Ville Syrjälä <ville.syrjala@linux.intel.com> > > Fixes: 68ec2a2a2481 ("drm/dp: Use I2C_WRITE_STATUS_UPDATE to drain > > partial I2C_WRITE requests") > > Signed-off-by: Dhinakaran Pandiyan <dhinakaran.pandiyan@intel.com> > > --- > > drivers/gpu/drm/drm_dp_helper.c | 2 +- > > 1 file changed, 1 insertion(+), 1 deletion(-) > > > > diff --git a/drivers/gpu/drm/drm_dp_helper.c > > b/drivers/gpu/drm/drm_dp_helper.c > > index 2d6c491a0542..d98805b517f0 100644 > > --- a/drivers/gpu/drm/drm_dp_helper.c > > +++ b/drivers/gpu/drm/drm_dp_helper.c > > @@ -677,7 +677,7 @@ static void > > drm_dp_i2c_msg_write_status_update(struct drm_dp_aux_msg *msg) > > * rest of the message > > */ > > if ((msg->request & ~DP_AUX_I2C_MOT) == DP_AUX_I2C_WRITE) { > > - msg->request &= DP_AUX_I2C_MOT; > > + msg->request |= DP_AUX_I2C_MOT; > > msg->request |= DP_AUX_I2C_WRITE_STATUS_UPDATE; > > } > > } > > -- > > 2.17.1 > >
On Mon, Dec 10, 2018 at 02:15:11PM -0800, Dhinakaran Pandiyan wrote: > On Mon, 2018-12-10 at 23:29 +0200, Ville Syrjälä wrote: > > On Mon, Dec 10, 2018 at 01:07:49PM -0800, Dhinakaran Pandiyan wrote: > > > The Write_Status_Update_Request I2C transaction requires the MOT > > > bit to > > > be set, Change the logical AND to OR to fix what looks like a typo. > > > > It's not a type. We're just preserving MOT. What makes you think it > > should always be set? > > > The table defining request commands (2-148) has the MOT bit set for > Write_Status_Update_Request, doesn't make it look like an option when > querying the status. Checking the callers again, I see that we could > get a defer when ending an i2c transaction and that will require a > Write_Status_Update_Request with MOT unset. Sorry for the noise. Or a short reply. Admittedly the spec is a bit vague on this topic, but after trawling it thorougly again I spotted that table 2-151 #9 does have an example of write_status_update with mot==0. So I guess my original interpretation was in fact correct. Phew :) > > > > > > > > > > Cc: dri-devel@lists.freedesktop.org > > > Cc: Jani Nikula <jani.nikula@intel.com> > > > Cc: Ville Syrjälä <ville.syrjala@linux.intel.com> > > > Fixes: 68ec2a2a2481 ("drm/dp: Use I2C_WRITE_STATUS_UPDATE to drain > > > partial I2C_WRITE requests") > > > Signed-off-by: Dhinakaran Pandiyan <dhinakaran.pandiyan@intel.com> > > > --- > > > drivers/gpu/drm/drm_dp_helper.c | 2 +- > > > 1 file changed, 1 insertion(+), 1 deletion(-) > > > > > > diff --git a/drivers/gpu/drm/drm_dp_helper.c > > > b/drivers/gpu/drm/drm_dp_helper.c > > > index 2d6c491a0542..d98805b517f0 100644 > > > --- a/drivers/gpu/drm/drm_dp_helper.c > > > +++ b/drivers/gpu/drm/drm_dp_helper.c > > > @@ -677,7 +677,7 @@ static void > > > drm_dp_i2c_msg_write_status_update(struct drm_dp_aux_msg *msg) > > > * rest of the message > > > */ > > > if ((msg->request & ~DP_AUX_I2C_MOT) == DP_AUX_I2C_WRITE) { > > > - msg->request &= DP_AUX_I2C_MOT; > > > + msg->request |= DP_AUX_I2C_MOT; > > > msg->request |= DP_AUX_I2C_WRITE_STATUS_UPDATE; > > > } > > > } > > > -- > > > 2.17.1 > > > >
diff --git a/drivers/gpu/drm/drm_dp_helper.c b/drivers/gpu/drm/drm_dp_helper.c index 2d6c491a0542..d98805b517f0 100644 --- a/drivers/gpu/drm/drm_dp_helper.c +++ b/drivers/gpu/drm/drm_dp_helper.c @@ -677,7 +677,7 @@ static void drm_dp_i2c_msg_write_status_update(struct drm_dp_aux_msg *msg) * rest of the message */ if ((msg->request & ~DP_AUX_I2C_MOT) == DP_AUX_I2C_WRITE) { - msg->request &= DP_AUX_I2C_MOT; + msg->request |= DP_AUX_I2C_MOT; msg->request |= DP_AUX_I2C_WRITE_STATUS_UPDATE; } }
The Write_Status_Update_Request I2C transaction requires the MOT bit to be set, Change the logical AND to OR to fix what looks like a typo. Cc: dri-devel@lists.freedesktop.org Cc: Jani Nikula <jani.nikula@intel.com> Cc: Ville Syrjälä <ville.syrjala@linux.intel.com> Fixes: 68ec2a2a2481 ("drm/dp: Use I2C_WRITE_STATUS_UPDATE to drain partial I2C_WRITE requests") Signed-off-by: Dhinakaran Pandiyan <dhinakaran.pandiyan@intel.com> --- drivers/gpu/drm/drm_dp_helper.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)