summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTatenda Chipeperekwa <tatendac@codeaurora.org>2016-11-15 18:07:08 -0800
committerGerrit - the friendly Code Review server <code-review@localhost>2016-11-29 11:43:14 -0800
commit7ea6182fb78bd062df618e348dc694da9065bd9c (patch)
tree73525aa1a699c6ae6b5a4ad735787ea96f126d3e
parent53863e53970ab9bfef1f085e3fad7bc5311cb1bd (diff)
msm: mdss: dp: update AUX error codes to match I2C error codes
Update the AUX error codes to match the I2C error codes so that the driver has the correct corresponding error code. This is useful for debugging problems in which there is an AUX transaction failure. CRs-Fixed: 1076516 Change-Id: I3857905e5cc916a3e095fa8fcf3d170b172a8efd Signed-off-by: Tatenda Chipeperekwa <tatendac@codeaurora.org>
-rw-r--r--drivers/video/fbdev/msm/mdss_dp.h34
-rw-r--r--drivers/video/fbdev/msm/mdss_dp_aux.c7
2 files changed, 33 insertions, 8 deletions
diff --git a/drivers/video/fbdev/msm/mdss_dp.h b/drivers/video/fbdev/msm/mdss_dp.h
index 068be4fdf602..6d0f82899485 100644
--- a/drivers/video/fbdev/msm/mdss_dp.h
+++ b/drivers/video/fbdev/msm/mdss_dp.h
@@ -39,11 +39,6 @@
#define EDP_PORT_MAX 1
#define EDP_SINK_CAP_LEN 16
-#define EDP_AUX_ERR_NONE 0
-#define EDP_AUX_ERR_ADDR -1
-#define EDP_AUX_ERR_TOUT -2
-#define EDP_AUX_ERR_NACK -3
-
/* 4 bits of aux command */
#define EDP_CMD_AUX_WRITE 0x8
#define EDP_CMD_AUX_READ 0x9
@@ -512,6 +507,35 @@ enum dp_lane_count {
DP_LANE_COUNT_4 = 4,
};
+enum dp_aux_error {
+ EDP_AUX_ERR_NONE = 0,
+ EDP_AUX_ERR_ADDR = -1,
+ EDP_AUX_ERR_TOUT = -2,
+ EDP_AUX_ERR_NACK = -3,
+ EDP_AUX_ERR_DEFER = -4,
+ EDP_AUX_ERR_NACK_DEFER = -5,
+};
+
+static inline char *mdss_dp_get_aux_error(u32 aux_error)
+{
+ switch (aux_error) {
+ case EDP_AUX_ERR_NONE:
+ return DP_ENUM_STR(EDP_AUX_ERR_NONE);
+ case EDP_AUX_ERR_ADDR:
+ return DP_ENUM_STR(EDP_AUX_ERR_ADDR);
+ case EDP_AUX_ERR_TOUT:
+ return DP_ENUM_STR(EDP_AUX_ERR_TOUT);
+ case EDP_AUX_ERR_NACK:
+ return DP_ENUM_STR(EDP_AUX_ERR_NACK);
+ case EDP_AUX_ERR_DEFER:
+ return DP_ENUM_STR(EDP_AUX_ERR_DEFER);
+ case EDP_AUX_ERR_NACK_DEFER:
+ return DP_ENUM_STR(EDP_AUX_ERR_NACK_DEFER);
+ default:
+ return "unknown";
+ }
+}
+
enum test_response {
TEST_ACK = 0x1,
TEST_NACK = 0x2,
diff --git a/drivers/video/fbdev/msm/mdss_dp_aux.c b/drivers/video/fbdev/msm/mdss_dp_aux.c
index 173851071b7a..a13dc948a9b8 100644
--- a/drivers/video/fbdev/msm/mdss_dp_aux.c
+++ b/drivers/video/fbdev/msm/mdss_dp_aux.c
@@ -335,11 +335,11 @@ void dp_aux_i2c_handler(struct mdss_dp_drv_pdata *ep, u32 isr)
else if (isr & EDP_INTR_TIMEOUT)
ep->aux_error_num = EDP_AUX_ERR_TOUT;
if (isr & EDP_INTR_NACK_DEFER)
- ep->aux_error_num = EDP_AUX_ERR_NACK;
+ ep->aux_error_num = EDP_AUX_ERR_NACK_DEFER;
if (isr & EDP_INTR_I2C_NACK)
ep->aux_error_num = EDP_AUX_ERR_NACK;
if (isr & EDP_INTR_I2C_DEFER)
- ep->aux_error_num = EDP_AUX_ERR_NACK;
+ ep->aux_error_num = EDP_AUX_ERR_DEFER;
}
complete(&ep->aux_comp);
@@ -709,7 +709,8 @@ static int dp_aux_chan_ready(struct mdss_dp_drv_pdata *ep)
for (cnt = 5; cnt; cnt--) {
ret = dp_aux_write_buf(ep, EDID_START_ADDRESS, &data, 1, 1);
- pr_debug("ret=%d\n", ret);
+ pr_debug("ret = %d, aux_error = %s\n",
+ ret, mdss_dp_get_aux_error(ep->aux_error_num));
if (ret >= 0)
break;
msleep(100);