diff mbox series

[1/3] drm/bridge: analogix_dp: properly handle zero sized AUX transactions

Message ID 20240318203925.2837689-1-l.stach@pengutronix.de (mailing list archive)
State New, archived
Headers show
Series [1/3] drm/bridge: analogix_dp: properly handle zero sized AUX transactions | expand

Commit Message

Lucas Stach March 18, 2024, 8:39 p.m. UTC
Address only transactions without any data are valid and should not
be flagged as short transactions. Simply return the message size when
no transaction errors occured.

CC: stable@vger.kernel.org
Signed-off-by: Lucas Stach <l.stach@pengutronix.de>
---
 drivers/gpu/drm/bridge/analogix/analogix_dp_reg.c | 5 +----
 1 file changed, 1 insertion(+), 4 deletions(-)

Comments

Robert Foss May 29, 2024, 2:24 p.m. UTC | #1
On Mon, Mar 18, 2024 at 9:39 PM Lucas Stach <l.stach@pengutronix.de> wrote:
>
> Address only transactions without any data are valid and should not
> be flagged as short transactions. Simply return the message size when
> no transaction errors occured.
>
> CC: stable@vger.kernel.org
> Signed-off-by: Lucas Stach <l.stach@pengutronix.de>
> ---
>  drivers/gpu/drm/bridge/analogix/analogix_dp_reg.c | 5 +----
>  1 file changed, 1 insertion(+), 4 deletions(-)
>
> diff --git a/drivers/gpu/drm/bridge/analogix/analogix_dp_reg.c b/drivers/gpu/drm/bridge/analogix/analogix_dp_reg.c
> index 6a4f20fccf84..7b0bc9704eac 100644
> --- a/drivers/gpu/drm/bridge/analogix/analogix_dp_reg.c
> +++ b/drivers/gpu/drm/bridge/analogix/analogix_dp_reg.c
> @@ -1027,7 +1027,6 @@ ssize_t analogix_dp_transfer(struct analogix_dp_device *dp,
>         u32 status_reg;
>         u8 *buffer = msg->buffer;
>         unsigned int i;
> -       int num_transferred = 0;
>         int ret;
>
>         /* Buffer size of AUX CH is 16 bytes */
> @@ -1079,7 +1078,6 @@ ssize_t analogix_dp_transfer(struct analogix_dp_device *dp,
>                         reg = buffer[i];
>                         writel(reg, dp->reg_base + ANALOGIX_DP_BUF_DATA_0 +
>                                4 * i);
> -                       num_transferred++;
>                 }
>         }
>
> @@ -1127,7 +1125,6 @@ ssize_t analogix_dp_transfer(struct analogix_dp_device *dp,
>                         reg = readl(dp->reg_base + ANALOGIX_DP_BUF_DATA_0 +
>                                     4 * i);
>                         buffer[i] = (unsigned char)reg;
> -                       num_transferred++;
>                 }
>         }
>
> @@ -1144,7 +1141,7 @@ ssize_t analogix_dp_transfer(struct analogix_dp_device *dp,
>                  (msg->request & ~DP_AUX_I2C_MOT) == DP_AUX_NATIVE_READ)
>                 msg->reply = DP_AUX_NATIVE_REPLY_ACK;
>
> -       return num_transferred > 0 ? num_transferred : -EBUSY;
> +       return msg->size;
>
>  aux_error:
>         /* if aux err happen, reset aux */
> --
> 2.39.2
>

Reviewed-by: Robert Foss <rfoss@kernel.org>
Robert Foss June 4, 2024, 3:22 p.m. UTC | #2
On Mon, 18 Mar 2024 21:39:23 +0100, Lucas Stach wrote:
> Address only transactions without any data are valid and should not
> be flagged as short transactions. Simply return the message size when
> no transaction errors occured.
> 
> 

Fixed checkpatch --strict formatting suggestions and applied, thanks!

[1/3] drm/bridge: analogix_dp: properly handle zero sized AUX transactions
      https://cgit.freedesktop.org/drm/drm-misc/commit/?id=e82290a2e0e8
[2/3] drm/bridge: analogix_dp: simplify analogix_dp_{set/get}_lane_link_training helpers
      https://cgit.freedesktop.org/drm/drm-misc/commit/?id=3747c9818954
[3/3] drm/bridge: analogix_dp: don't adjust further when clock recovery succeeded
      https://cgit.freedesktop.org/drm/drm-misc/commit/?id=35e7a72a6719



Rob
diff mbox series

Patch

diff --git a/drivers/gpu/drm/bridge/analogix/analogix_dp_reg.c b/drivers/gpu/drm/bridge/analogix/analogix_dp_reg.c
index 6a4f20fccf84..7b0bc9704eac 100644
--- a/drivers/gpu/drm/bridge/analogix/analogix_dp_reg.c
+++ b/drivers/gpu/drm/bridge/analogix/analogix_dp_reg.c
@@ -1027,7 +1027,6 @@  ssize_t analogix_dp_transfer(struct analogix_dp_device *dp,
 	u32 status_reg;
 	u8 *buffer = msg->buffer;
 	unsigned int i;
-	int num_transferred = 0;
 	int ret;
 
 	/* Buffer size of AUX CH is 16 bytes */
@@ -1079,7 +1078,6 @@  ssize_t analogix_dp_transfer(struct analogix_dp_device *dp,
 			reg = buffer[i];
 			writel(reg, dp->reg_base + ANALOGIX_DP_BUF_DATA_0 +
 			       4 * i);
-			num_transferred++;
 		}
 	}
 
@@ -1127,7 +1125,6 @@  ssize_t analogix_dp_transfer(struct analogix_dp_device *dp,
 			reg = readl(dp->reg_base + ANALOGIX_DP_BUF_DATA_0 +
 				    4 * i);
 			buffer[i] = (unsigned char)reg;
-			num_transferred++;
 		}
 	}
 
@@ -1144,7 +1141,7 @@  ssize_t analogix_dp_transfer(struct analogix_dp_device *dp,
 		 (msg->request & ~DP_AUX_I2C_MOT) == DP_AUX_NATIVE_READ)
 		msg->reply = DP_AUX_NATIVE_REPLY_ACK;
 
-	return num_transferred > 0 ? num_transferred : -EBUSY;
+	return msg->size;
 
 aux_error:
 	/* if aux err happen, reset aux */