|
| 1 | +From 6958888b47956821a2bbbaeeb2deb27d32337bf0 Mon Sep 17 00:00:00 2001 |
| 2 | +From: SolidHal < [email protected]> |
| 3 | +Date: Wed, 23 Dec 2020 09:24:11 -0800 |
| 4 | +Subject: [PATCH 1/2] drm/bridge: analogix_dp: Don't return -EBUSY when |
| 5 | + msg->size is 0 in aux transaction |
| 6 | + |
| 7 | +The analogix_dp_transfer() will return -EBUSY if num_transferred is zero. |
| 8 | +But sometimes we will send a bare address packet to start the transaction, |
| 9 | +like drm_dp_i2c_xfer() show: |
| 10 | + ...... |
| 11 | + /* Send a bare address packet to start the transaction. |
| 12 | + * Zero sized messages specify an address only (bare |
| 13 | + * address) transaction. |
| 14 | + */ |
| 15 | + msg.buffer = NULL; |
| 16 | + msg.size = 0; |
| 17 | + err = drm_dp_i2c_do_msg(aux, &msg); |
| 18 | + ...... |
| 19 | + |
| 20 | +In this case, the msg->size is zero, so the num_transferred will be zero too. |
| 21 | +We can't return -EBUSY here, let's we return num_transferred if num_transferred |
| 22 | +equals msg->size. |
| 23 | + |
| 24 | +from: https://chromium.googlesource.com/chromiumos/third_party/kernel/+/e7629f9b475ce9a0b70126e907049b0e1468010d%5E%21/#F0 |
| 25 | +--- |
| 26 | + drivers/gpu/drm/bridge/analogix/analogix_dp_reg.c | 2 +- |
| 27 | + 1 file changed, 1 insertion(+), 1 deletion(-) |
| 28 | + |
| 29 | +diff --git a/drivers/gpu/drm/bridge/analogix/analogix_dp_reg.c b/drivers/gpu/drm/bridge/analogix/analogix_dp_reg.c |
| 30 | +index 914c569ab8c1..ee6cda10bca4 100644 |
| 31 | +--- a/drivers/gpu/drm/bridge/analogix/analogix_dp_reg.c |
| 32 | ++++ b/drivers/gpu/drm/bridge/analogix/analogix_dp_reg.c |
| 33 | +@@ -1222,7 +1222,7 @@ ssize_t analogix_dp_transfer(struct analogix_dp_device *dp, |
| 34 | + (msg->request & ~DP_AUX_I2C_MOT) == DP_AUX_NATIVE_READ) |
| 35 | + msg->reply = DP_AUX_NATIVE_REPLY_ACK; |
| 36 | + |
| 37 | +- return num_transferred > 0 ? num_transferred : -EBUSY; |
| 38 | ++ return (num_transferred == msg->size) ? num_transferred : -EBUSY; |
| 39 | + |
| 40 | + aux_error: |
| 41 | + /* if aux err happen, reset aux */ |
| 42 | +-- |
| 43 | +2.20.1 |
| 44 | + |
0 commit comments