[PATCH 13/14] drm/bridge: analogix_dp: only read AUX status when an error occured
Robert Foss
rfoss at kernel.org
Mon Jun 10 04:56:11 PDT 2024
On Fri, May 3, 2024 at 5:13 PM Lucas Stach <l.stach at pengutronix.de> wrote:
>
> 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 occured and we can expect a different status
> than OK.
>
> Signed-off-by: Lucas Stach <l.stach at pengutronix.de>
> ---
> drivers/gpu/drm/bridge/analogix/analogix_dp_reg.c | 9 +++++----
> 1 file changed, 5 insertions(+), 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 143a78b1d156..0f016dca9f3d 100644
> --- a/drivers/gpu/drm/bridge/analogix/analogix_dp_reg.c
> +++ b/drivers/gpu/drm/bridge/analogix/analogix_dp_reg.c
> @@ -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;
> }
>
> --
> 2.39.2
>
Reviewed-by: Robert Foss <rfoss at kernel.org>
More information about the Linux-rockchip
mailing list