drm/bridge: analogix_dp: only read AUX status when an error occured
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
This commit is contained in:
parent
0fa5e37f87
commit
e857142bbb
@ -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;
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user