From a2d9eee127020b48bd64c47e855086ea75426685 Mon Sep 17 00:00:00 2001 From: "Jia, Lin A" Date: Mon, 11 Mar 2024 15:19:11 +0000 Subject: [PATCH] drm/bridge: Add 984 serdes setting for resume 1, Add 984 serdes registers settting for suspend/resume 2. Set SCL high width output for 984 deserdes Test-done: Android suspend/resuem tested with panel EF1E-A1 Tracked-On: OAM-116590 Signed-off-by: Jia, Lin A --- drivers/gpu/drm/bridge/ti/fpd_dp_ser_drv.c | 14 ++++++++++---- drivers/gpu/drm/bridge/ti/fpd_dp_ser_drv.h | 2 +- 2 files changed, 11 insertions(+), 5 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 531074b72979d..2caf3b4c463df 100644 --- a/drivers/gpu/drm/bridge/ti/fpd_dp_ser_drv.c +++ b/drivers/gpu/drm/bridge/ti/fpd_dp_ser_drv.c @@ -1660,6 +1660,9 @@ void fpd_dp_deser_984_enable_output(struct i2c_client *client) fpd_dp_ser_write_reg(client, 0x4e, 0x0); /* Enable INTB_IN */ fpd_dp_ser_write_reg(client, 0x44, 0x81); + /* i2c 400k */ + fpd_dp_ser_write_reg(client, 0x2b, 0x0a); + fpd_dp_ser_write_reg(client, 0x2c, 0x0b); } void fpd_dp_deser_984_enable(void) @@ -1713,6 +1716,9 @@ static void fpd_poll_984_training(void) pr_debug("[FPD_DP] ser training lock completed, count = %d\n", fpd_dp_priv->count); + /* Delay for VPs to sync to DP source */ + usleep_range(20000, 22000); + fpd_dp_deser_984_enable(); } @@ -1790,7 +1796,7 @@ static int get_bus_number(void) return bus_number; } -int fpd_dp_ser_init(void) +bool fpd_dp_ser_init(void) { fpd_dp_ser_enable(); @@ -1804,7 +1810,7 @@ int fpd_dp_ser_init(void) fpd_dp_ser_motor_open(fpd_dp_priv->priv_dp_client[2]); - return 0; + return true; } static int fpd_dp_ser_probe(struct platform_device *pdev) @@ -1914,7 +1920,7 @@ static int fpd_dp_ser_resume(struct device *dev) pr_debug("[FPD_DP] [-%s-%s-%d-]\n", __FILE__, __func__, __LINE__); - result = fpd_dp_ser_enable(); + result = fpd_dp_ser_init(); if (!result) { pr_debug("Serdes enable fail in fpd_dp_ser_resume\n"); return -EIO; @@ -1936,7 +1942,7 @@ static int fpd_dp_ser_runtime_resume(struct device *dev) bool result; pr_debug("[FPD_DP] [-%s-%s-%d-]\n", __FILE__, __func__, __LINE__); - result = fpd_dp_ser_enable(); + result = fpd_dp_ser_init(); return 0; } diff --git a/drivers/gpu/drm/bridge/ti/fpd_dp_ser_drv.h b/drivers/gpu/drm/bridge/ti/fpd_dp_ser_drv.h index 80473c082c77d..cf15fd4540791 100644 --- a/drivers/gpu/drm/bridge/ti/fpd_dp_ser_drv.h +++ b/drivers/gpu/drm/bridge/ti/fpd_dp_ser_drv.h @@ -69,6 +69,6 @@ struct fpd_dp_ser_priv { void fpd_dp_ser_module_exit(void); int fpd_dp_ser_module_init(void); -int fpd_dp_ser_init(void); +bool fpd_dp_ser_init(void); #endif /* __FPD_DP_SER_DRV__ */