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>
This commit is contained in:
Tatenda Chipeperekwa 2016-11-15 18:07:08 -08:00 committed by Gerrit - the friendly Code Review server
parent 53863e5397
commit 7ea6182fb7
2 changed files with 33 additions and 8 deletions

View file

@ -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,

View file

@ -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);