Files
OpenBMC/meta-luxshare/meta-bhs/recipes-kernel/linux/linux-aspeed/0001-Solve-the-do_daa-exception-exit-issue-when-the-DIMM-.patch
T
2026-04-23 17:07:55 +08:00

71 lines
2.4 KiB
Diff
Executable File

From 459fdb4b3f4d905072f1dfa25e90deee1347779b Mon Sep 17 00:00:00 2001
From: wangjue <jue.wang2@luxshare-ict.com>
Date: Wed, 22 Oct 2025 10:48:26 +0800
Subject: [PATCH] Solve the do_daa exception exit issue when the DIMM slots are
not fully populated.
Signed-off-by: wangjue <jue.wang2@luxshare-ict.com>
---
drivers/i3c/master.c | 8 ++++++++
drivers/i3c/master/dw-i3c-master.c | 4 ++--
2 files changed, 10 insertions(+), 2 deletions(-)
diff --git a/drivers/i3c/master.c b/drivers/i3c/master.c
index 9cd566d3928f..6997a92ac8e7 100644
--- a/drivers/i3c/master.c
+++ b/drivers/i3c/master.c
@@ -1979,6 +1979,7 @@ i3c_master_register_new_i3c_devs(struct i3c_master_controller *master)
int i3c_master_do_daa(struct i3c_master_controller *master)
{
int ret = 0;
+ bool result = false;
i3c_gpio_switch_init(master);
mutex_lock(&master->daa_lock);
@@ -1989,13 +1990,20 @@ int i3c_master_do_daa(struct i3c_master_controller *master)
usleep_range(2000, 2100);
ret = i3c_master_sethid_locked(master);
ret = i3c_master_setaasa_locked(master);
+ if(ret == 0)
+ result = true;
usleep_range(2000, 2100);
}
+ if(result)
+ ret = 0;
} else {
ret = master->ops->do_daa(master);
}
i3c_bus_maintenance_unlock(&master->bus);
+ dev_dbg(&master->dev,
+ "ret = %d, result = %d\n", ret, (int)result);
+
if (ret)
goto mutex_unlock;
diff --git a/drivers/i3c/master/dw-i3c-master.c b/drivers/i3c/master/dw-i3c-master.c
index c29c609510e7..d27b89318df2 100644
--- a/drivers/i3c/master/dw-i3c-master.c
+++ b/drivers/i3c/master/dw-i3c-master.c
@@ -3162,7 +3162,7 @@ static int dw_i3c_probe(struct platform_device *pdev)
master->maxdevs = DEVICE_ADDR_TABLE_DEPTH(ret);
master->dat_depth = DEVICE_ADDR_TABLE_DEPTH(ret);
if (master->maxdevs < MAX_DEVS) {
- dev_info(master->dev, "HW DAT supports only %i target devices - enabling SW DAT to support %i devices\n",
+ dev_dbg(master->dev, "HW DAT supports only %i target devices - enabling SW DAT to support %i devices\n",
master->maxdevs, MAX_DEVS);
master->maxdevs = MAX_DEVS;
master->sw_dat_enabled = true;
@@ -3215,7 +3215,7 @@ static int dw_i3c_probe(struct platform_device *pdev)
if (ret)
dev_warn(master->dev, "Failed to initialize debug FS, ret=%i\n", ret);
- dev_info(&pdev->dev, "i3c bus %d registered, irq %d\n",
+ dev_dbg(&pdev->dev, "i3c bus %d registered, irq %d\n",
master->base.bus_id, irq);
return 0;
--
2.34.1