arm: omap: reset sata on boot
authorDmitry Lifshitz <lifshitz@compulab.co.il>
Mon, 15 Dec 2014 14:02:58 +0000 (16:02 +0200)
committerTom Rini <trini@ti.com>
Mon, 5 Jan 2015 20:13:47 +0000 (15:13 -0500)
On OMAP platforms (like OMAP5) Linux kernel fails to detect a SATA
device if it is used by U-Boot.

It happens because U-Boot does not reset SATA controller before boot.

Reset the controller on OS boot so that Linux will have a clean state
to work with.

Signed-off-by: Dmitry Lifshitz <lifshitz@compulab.co.il>
Reviewed-by: Tom Rini <trini@ti.com>
arch/arm/cpu/armv7/omap-common/boot-common.c

index cb18908867dd06d2494a2ef8dce9776313dfe663..00a108212a7294c40e26ee0e12056a19510b3b0c 100644 (file)
@@ -9,12 +9,14 @@
  */
 
 #include <common.h>
+#include <ahci.h>
 #include <spl.h>
 #include <asm/omap_common.h>
 #include <asm/arch/omap.h>
 #include <asm/arch/mmc_host_def.h>
 #include <asm/arch/sys_proto.h>
 #include <watchdog.h>
+#include <scsi.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
@@ -143,3 +145,10 @@ void __noreturn jump_to_image_no_args(struct spl_image_info *spl_image)
        image_entry((u32 *)&gd->arch.omap_boot_params);
 }
 #endif
+
+#ifdef CONFIG_SCSI_AHCI_PLAT
+void arch_preboot_os(void)
+{
+       ahci_reset(DWC_AHSATA_BASE);
+}
+#endif