Let's look at the irq status bits after a transfer and see if we got a nack or a defer or a timeout, instead of telling drm layers that everything was fine, while still printing an error message. I wasn't sure about NACK+DEFER so I lumped all those various errors along with a nack so that the drm core can figure out that things are just not going well. The important thing is that we're now returning -ETIMEDOUT when the message times out and nacks for bad addresses. Cc: Dmitry Baryshkov <dmitry.baryshkov@linaro.org> Cc: Abhinav Kumar <abhinavk@codeaurora.org> Cc: Kuogee Hsieh <khsieh@codeaurora.org> Cc: aravindh@codeaurora.org Cc: Sean Paul <sean@poorly.run> Signed-off-by: Stephen Boyd <swboyd@chromium.org> Reviewed-by: Kuogee Hsieh <khsieh@codeaurora.org> Link: https://lore.kernel.org/r/20210507212505.1224111-4-swboyd@chromium.org Signed-off-by: Rob Clark <robdclark@chromium.org>
23 lines
647 B
C
23 lines
647 B
C
/* SPDX-License-Identifier: GPL-2.0-only */
|
|
/*
|
|
* Copyright (c) 2012-2020, The Linux Foundation. All rights reserved.
|
|
*/
|
|
|
|
#ifndef _DP_AUX_H_
|
|
#define _DP_AUX_H_
|
|
|
|
#include "dp_catalog.h"
|
|
#include <drm/drm_dp_helper.h>
|
|
|
|
int dp_aux_register(struct drm_dp_aux *dp_aux);
|
|
void dp_aux_unregister(struct drm_dp_aux *dp_aux);
|
|
void dp_aux_isr(struct drm_dp_aux *dp_aux);
|
|
void dp_aux_init(struct drm_dp_aux *dp_aux);
|
|
void dp_aux_deinit(struct drm_dp_aux *dp_aux);
|
|
void dp_aux_reconfig(struct drm_dp_aux *dp_aux);
|
|
|
|
struct drm_dp_aux *dp_aux_get(struct device *dev, struct dp_catalog *catalog);
|
|
void dp_aux_put(struct drm_dp_aux *aux);
|
|
|
|
#endif /*__DP_AUX_H_*/
|