[PATCH] drm/dp: Split dual mode DDC read
Imre Deak
imre.deak at intel.com
Sun Nov 13 23:40:51 UTC 2016
Signed-off-by: Imre Deak <imre.deak at intel.com>
---
drivers/gpu/drm/drm_dp_dual_mode_helper.c | 22 ++++++++++++++++------
1 file changed, 16 insertions(+), 6 deletions(-)
diff --git a/drivers/gpu/drm/drm_dp_dual_mode_helper.c b/drivers/gpu/drm/drm_dp_dual_mode_helper.c
index e025639..dbdb510 100644
--- a/drivers/gpu/drm/drm_dp_dual_mode_helper.c
+++ b/drivers/gpu/drm/drm_dp_dual_mode_helper.c
@@ -74,15 +74,25 @@ ssize_t drm_dp_dual_mode_read(struct i2c_adapter *adapter,
.buf = buffer,
},
};
+ int i;
int ret;
- ret = i2c_transfer(adapter, msgs, ARRAY_SIZE(msgs));
- if (ret < 0)
- return ret;
- if (ret != ARRAY_SIZE(msgs))
- return -EPROTO;
+ if (!adapter->algo->master_xfer)
+ return -EOPNOTSUPP;
- return 0;
+ i2c_lock_bus(adapter, I2C_LOCK_SEGMENT);
+ for (i = 0; i < ARRAY_SIZE(msgs); i++) {
+ ret = __i2c_transfer(adapter, msgs, 1);
+ if (ret < 0)
+ break;
+ if (ret != 1) {
+ ret = -EPROTO;
+ break;
+ }
+ }
+ i2c_unlock_bus(adapter, I2C_LOCK_SEGMENT);
+
+ return ret < 0 ? ret : 0;
}
EXPORT_SYMBOL(drm_dp_dual_mode_read);
--
2.5.0
More information about the Intel-gfx-trybot
mailing list