diff mbox series

[09/13] imx6: Remove AHCI device before boot OS

Message ID 20210114072810.11873-9-peng.fan@oss.nxp.com
State Accepted
Commit acc403cb2c903d367292b0a231d3f81cfe8eccee
Delegated to: Stefano Babic
Headers show
Series [01/13] imx: lowlevel: implement armv8_el2_to_aarch32 | expand

Commit Message

Peng Fan (OSS) Jan. 14, 2021, 7:28 a.m. UTC
From: Ye Li <ye.li@nxp.com>

Since we remove SATA device before boot OS, when AHCI is enabled, update
the codes to remove AHCI device.

Signed-off-by: Ye Li <ye.li@nxp.com>
Signed-off-by: Peng Fan <peng.fan@nxp.com>
---
 arch/arm/mach-imx/cpu.c | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)
diff mbox series

Patch

diff --git a/arch/arm/mach-imx/cpu.c b/arch/arm/mach-imx/cpu.c
index 425d0f0327..af0b7fbf7b 100644
--- a/arch/arm/mach-imx/cpu.c
+++ b/arch/arm/mach-imx/cpu.c
@@ -24,6 +24,8 @@ 
 #include <ipu_pixfmt.h>
 #include <thermal.h>
 #include <sata.h>
+#include <dm/device-internal.h>
+#include <dm/uclass-internal.h>
 
 #ifdef CONFIG_FSL_ESDHC_IMX
 #include <fsl_esdhc_imx.h>
@@ -278,6 +280,20 @@  void arch_preboot_os(void)
 #if defined(CONFIG_PCIE_IMX) && !CONFIG_IS_ENABLED(DM_PCI)
 	imx_pcie_remove();
 #endif
+
+#if defined(CONFIG_IMX_AHCI)
+	struct udevice *dev;
+	int rc;
+
+	rc = uclass_find_device(UCLASS_AHCI, 0, &dev);
+	if (!rc && dev) {
+		rc = device_remove(dev, DM_REMOVE_NORMAL);
+		if (rc)
+			printf("Cannot remove SATA device '%s' (err=%d)\n",
+				dev->name, rc);
+	}
+#endif
+
 #if defined(CONFIG_SATA)
 	if (!is_mx6sdl()) {
 		sata_remove(0);