]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
drm/bridge: analogix_dp: only read AUX status when an error occured
authorLucas Stach <l.stach@pengutronix.de>
Wed, 19 Jun 2024 18:21:59 +0000 (20:21 +0200)
committerRobert Foss <rfoss@kernel.org>
Thu, 27 Jun 2024 09:52:18 +0000 (11:52 +0200)
All AUX error responses raise the AUX_ERR interrupt, so there is no
need to read the AUX status register in normal operation. Only read
the status when an error occurred and we can expect a different
status than OK.

Signed-off-by: Lucas Stach <l.stach@pengutronix.de>
Reviewed-by: Robert Foss <rfoss@kernel.org>
Tested-by: Heiko Stuebner <heiko@sntech.de>
Signed-off-by: Robert Foss <rfoss@kernel.org>
Link: https://patchwork.freedesktop.org/patch/msgid/20240619182200.3752465-13-l.stach@pengutronix.de
drivers/gpu/drm/bridge/analogix/analogix_dp_reg.c

index 143a78b1d1560e6fedef2710c016e5707cdbe5b6..0f016dca9f3dfc2e39f92c61066ee80511de6ed8 100644 (file)
@@ -924,7 +924,6 @@ ssize_t analogix_dp_transfer(struct analogix_dp_device *dp,
                             struct drm_dp_aux_msg *msg)
 {
        u32 reg;
-       u32 status_reg;
        u8 *buffer = msg->buffer;
        unsigned int i;
        int ret;
@@ -1011,12 +1010,14 @@ ssize_t analogix_dp_transfer(struct analogix_dp_device *dp,
 
        /* Clear interrupt source for AUX CH access error */
        reg = readl(dp->reg_base + ANALOGIX_DP_INT_STA);
-       status_reg = readl(dp->reg_base + ANALOGIX_DP_AUX_CH_STA);
-       if ((reg & AUX_ERR) || (status_reg & AUX_STATUS_MASK)) {
+       if ((reg & AUX_ERR)) {
+               u32 aux_status = readl(dp->reg_base + ANALOGIX_DP_AUX_CH_STA) &
+                                AUX_STATUS_MASK;
+
                writel(AUX_ERR, dp->reg_base + ANALOGIX_DP_INT_STA);
 
                dev_warn(dp->dev, "AUX CH error happened: %#x (%d)\n",
-                        status_reg & AUX_STATUS_MASK, !!(reg & AUX_ERR));
+                        aux_status, !!(reg & AUX_ERR));
                goto aux_error;
        }