mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-06 10:58:48 +09:00
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:
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user