Add the UFS boot mode support and update the boot_targets with
ufs mode. If the UFS device is not accessible from APU and
running this is detected as a warning, as the device is not
accessible.

Signed-off-by: Venkatesh Yadav Abbarapu <venkatesh.abbar...@amd.com>
---
Changes in v2:
- Use uclass_get_device() with index 0, as we have single
UFS controller.
---
 arch/arm/mach-versal2/include/mach/hardware.h |  1 +
 board/amd/versal2/board.c                     | 10 ++++++++++
 2 files changed, 11 insertions(+)

diff --git a/arch/arm/mach-versal2/include/mach/hardware.h 
b/arch/arm/mach-versal2/include/mach/hardware.h
index 42e3061a0ae..022c8b3c832 100644
--- a/arch/arm/mach-versal2/include/mach/hardware.h
+++ b/arch/arm/mach-versal2/include/mach/hardware.h
@@ -67,6 +67,7 @@ struct crp_regs {
 #define USB_MODE       0x00000007
 #define OSPI_MODE      0x00000008
 #define SELECTMAP_MODE 0x0000000A
+#define UFS_MODE       0x0000000B
 #define SD1_LSHFT_MODE 0x0000000E /* SD1 Level shifter */
 #define JTAG_MODE      0x00000000
 #define BOOT_MODE_USE_ALT      0x100
diff --git a/board/amd/versal2/board.c b/board/amd/versal2/board.c
index 5651d516a9e..220ab63c994 100644
--- a/board/amd/versal2/board.c
+++ b/board/amd/versal2/board.c
@@ -252,6 +252,16 @@ static int boot_targets_setup(void)
                mode = "mmc";
                bootseq = dev_seq(dev);
                break;
+       case UFS_MODE:
+               puts("UFS_MODE\n");
+               if (uclass_get_device(UCLASS_UFS, 0, &dev)) {
+                       debug("UFS driver for UFS device is not present\n");
+                       break;
+               }
+               debug("ufs device found at %p\n", dev);
+
+               mode = "ufs";
+               break;
        default:
                printf("Invalid Boot Mode:0x%x\n", bootmode);
                break;
-- 
2.34.1

Reply via email to