drm/rockchip: dw-dp: Fix aux timeout at boot

Use the HPD state machine state in detect instead of HPD_STATUS.

Signed-off-by: Wyon Bi <bivvy.bi@rock-chips.com>
Change-Id: I9e6b14c819fa29dd38101340e40334f050832524
This commit is contained in:
Wyon Bi
2021-12-09 15:39:43 +08:00
committed by Tao Huang
parent f6909c028f
commit 54821e8d85

View File

@@ -300,6 +300,13 @@ enum {
DPTX_SDP_HORIZONTAL_INTERVAL = BIT(1),
};
enum {
SOURCE_STATE_IDLE,
SOURCE_STATE_UNPLUG,
SOURCE_STATE_HPD_TIMEOUT = 4,
SOURCE_STATE_PLUG = 7
};
enum {
DPTX_PHY_PATTERN_NONE,
DPTX_PHY_PATTERN_TPS_1,
@@ -451,7 +458,7 @@ static bool dw_dp_detect(struct dw_dp *dp)
regmap_read(dp->regmap, DPTX_HPD_STATUS, &value);
return !!(value & HPD_STATUS);
return FIELD_GET(HPD_STATE, value) == SOURCE_STATE_PLUG;
}
static enum drm_connector_status
@@ -1661,8 +1668,10 @@ static ssize_t dw_dp_aux_transfer(struct drm_dp_aux *aux,
regmap_write(dp->regmap, DPTX_AUX_CMD, value);
status = wait_for_completion_timeout(&dp->complete, timeout);
if (!status)
if (!status) {
dev_err(dp->dev, "timeout waiting for AUX reply\n");
return -ETIMEDOUT;
}
regmap_read(dp->regmap, DPTX_AUX_STATUS, &value);
if (value & AUX_TIMEOUT)