From 3f8ec2a04e730a459bba139998ebe947bbed715c Mon Sep 17 00:00:00 2001 From: "Jia, Lin A" Date: Sun, 24 Mar 2024 23:24:25 +0800 Subject: [PATCH] drm/bridge: Adjust serdes/deserdes reset sequence Adjust suspend serdes/deserdes reset seuence to avoid deserdes reset fault. Test-done: Android boot tested with panel EF1E-A1 Tracked-On: OAM- Signed-off-by: Jia, Lin A --- drivers/gpu/drm/bridge/ti/fpd_dp_ser_drv.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/drivers/gpu/drm/bridge/ti/fpd_dp_ser_drv.c b/drivers/gpu/drm/bridge/ti/fpd_dp_ser_drv.c index 2caf3b4c463df..935e44373abf1 100644 --- a/drivers/gpu/drm/bridge/ti/fpd_dp_ser_drv.c +++ b/drivers/gpu/drm/bridge/ti/fpd_dp_ser_drv.c @@ -1879,7 +1879,7 @@ static int fpd_dp_ser_remove(struct platform_device *pdev) { if (i == 0) fpd_dp_ser_reset(client); else - fpd_dp_deser_soft_reset(client); + fpd_dp_ser_write_reg(client, 0x01, 0x01); if (client != NULL) { if (i == 2) fpd_dp_ser_motor_close(client); @@ -1900,12 +1900,14 @@ static int fpd_dp_ser_suspend(struct device *dev) #if 1 int i = 0; struct fpd_dp_ser_priv *priv = dev_get_drvdata(dev); - for (i = 0; i < NUM_DEVICE; i++) { + for (i = 1; i > -1; i--) { struct i2c_client *client= priv->priv_dp_client[i]; if (i == 0) fpd_dp_ser_reset(client); else - fpd_dp_deser_soft_reset(client); + fpd_dp_ser_write_reg(client, 0x01, 0x01); + + usleep_range(20000, 22000); } #endif pr_debug("[FPD_DP] [-%s-%s-%d-]\n", __FILE__, __func__, __LINE__);