Skip to content

Commit

Permalink
drm/bridge: analogix_dp: only read AUX status when an error occured
Browse files Browse the repository at this point in the history
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
  • Loading branch information
Lucas Stach authored and Robert Foss committed Jun 27, 2024
1 parent 0fa5e37 commit e857142
Showing 1 changed file with 5 additions and 4 deletions.
9 changes: 5 additions & 4 deletions drivers/gpu/drm/bridge/analogix/analogix_dp_reg.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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;
}

Expand Down

0 comments on commit e857142

Please sign in to comment.