mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-07 19:30:30 +09:00
drm/bridge: maxim-max96745: Check training state
Signed-off-by: Wyon Bi <bivvy.bi@rock-chips.com> Change-Id: I6f68dc0b155cd6e8a5ac314449ffe0f263f64046
This commit is contained in:
@@ -203,8 +203,16 @@ max96745_bridge_detect(struct drm_bridge *bridge)
|
||||
return connector_status_disconnected;
|
||||
|
||||
if (connector->status == connector_status_connected) {
|
||||
u32 dprx_trn_status2;
|
||||
|
||||
if (atomic_cmpxchg(&ser->lock.triggered, 1, 0))
|
||||
return connector_status_disconnected;
|
||||
|
||||
if (regmap_read(ser->regmap, 0x641a, &dprx_trn_status2))
|
||||
return connector_status_disconnected;
|
||||
|
||||
if ((dprx_trn_status2 & DPRX_TRAIN_STATE) != DPRX_TRAIN_STATE)
|
||||
return connector_status_disconnected;
|
||||
} else {
|
||||
atomic_set(&ser->lock.triggered, 0);
|
||||
}
|
||||
@@ -269,13 +277,6 @@ static int max96745_bridge_probe(struct platform_device *pdev)
|
||||
return dev_err_probe(dev, ret,
|
||||
"failed to register extcon device\n");
|
||||
|
||||
regmap_update_bits(ser->regmap, 0x7070, MAX_LANE_COUNT,
|
||||
FIELD_PREP(MAX_LANE_COUNT, 0x04));
|
||||
regmap_update_bits(ser->regmap, 0x7074, MAX_LINK_RATE,
|
||||
FIELD_PREP(MAX_LINK_RATE, 0x14));
|
||||
regmap_update_bits(ser->regmap, 0x7000, LINK_ENABLE,
|
||||
FIELD_PREP(LINK_ENABLE, 1));
|
||||
|
||||
ser->lock.irq = gpiod_to_irq(ser->lock.gpio);
|
||||
if (ser->lock.irq < 0)
|
||||
return ser->lock.irq;
|
||||
|
||||
@@ -102,6 +102,9 @@
|
||||
/* 0752h */
|
||||
#define FRCDCMODE GENMASK(1, 0)
|
||||
|
||||
/* 641Ah */
|
||||
#define DPRX_TRAIN_STATE GENMASK(7, 4)
|
||||
|
||||
/* 7000h */
|
||||
#define LINK_ENABLE BIT(0)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user