Update am64x to use the new shared boot-device helper instead of
its own get_boot_device() implementation.

Signed-off-by: Wadim Egorov <[email protected]>
---
 arch/arm/mach-k3/am64x/boot.c | 139 ++++++++++------------------------
 1 file changed, 41 insertions(+), 98 deletions(-)

diff --git a/arch/arm/mach-k3/am64x/boot.c b/arch/arm/mach-k3/am64x/boot.c
index ce8ae941be6..3ef6e60e989 100644
--- a/arch/arm/mach-k3/am64x/boot.c
+++ b/arch/arm/mach-k3/am64x/boot.c
@@ -3,103 +3,46 @@
 #include <asm/arch/hardware.h>
 #include <asm/arch/spl.h>
 
-static u32 __get_backup_bootmedia(u32 main_devstat)
+#include "../boot-device.h"
+
+static const struct k3_boot_map am64_boot_device_primary_table[] = {
+       { BOOT_DEVICE_OSPI, 0, 0, 0, BOOT_DEVICE_SPI },
+       { BOOT_DEVICE_QSPI, 0, 0, 0, BOOT_DEVICE_SPI },
+       { BOOT_DEVICE_XSPI, 0, 0, 0, BOOT_DEVICE_SPI },
+       { BOOT_DEVICE_SPI, 0, 0, 0, BOOT_DEVICE_SPI },
+       { BOOT_DEVICE_ETHERNET_RGMII, 0, 0, 0, BOOT_DEVICE_ETHERNET },
+       { BOOT_DEVICE_ETHERNET_RMII, 0, 0, 0, BOOT_DEVICE_ETHERNET },
+       { BOOT_DEVICE_EMMC, 0, 0, 0, BOOT_DEVICE_MMC1 },
+       { BOOT_DEVICE_NAND, 0, 0, 0, BOOT_DEVICE_NAND },
+       { BOOT_DEVICE_MMC, MAIN_DEVSTAT_PRIMARY_MMC_PORT_MASK, 
MAIN_DEVSTAT_PRIMARY_MMC_PORT_SHIFT, 1, BOOT_DEVICE_MMC2 },
+       { BOOT_DEVICE_MMC, MAIN_DEVSTAT_PRIMARY_MMC_PORT_MASK, 
MAIN_DEVSTAT_PRIMARY_MMC_PORT_SHIFT, 0, BOOT_DEVICE_MMC1 },
+       { BOOT_DEVICE_DFU, MAIN_DEVSTAT_PRIMARY_USB_MODE_MASK, 
MAIN_DEVSTAT_PRIMARY_USB_MODE_SHIFT, 1, BOOT_DEVICE_USB },
+       { BOOT_DEVICE_DFU, MAIN_DEVSTAT_PRIMARY_USB_MODE_MASK, 
MAIN_DEVSTAT_PRIMARY_USB_MODE_SHIFT, 0, BOOT_DEVICE_DFU },
+       { BOOT_DEVICE_NOBOOT, 0, 0, 0, BOOT_DEVICE_RAM },
+};
+
+static const struct k3_boot_map am64_boot_device_backup_table[] = {
+       { BACKUP_BOOT_DEVICE_UART, 0, 0, 0, BOOT_DEVICE_UART },
+       { BACKUP_BOOT_DEVICE_DFU, MAIN_DEVSTAT_BACKUP_USB_MODE_MASK, 0, 0, 
BOOT_DEVICE_DFU },
+       { BACKUP_BOOT_DEVICE_DFU, MAIN_DEVSTAT_BACKUP_USB_MODE_MASK, 0, 1, 
BOOT_DEVICE_USB },
+       { BACKUP_BOOT_DEVICE_ETHERNET, 0, 0, 0, BOOT_DEVICE_ETHERNET },
+       { BACKUP_BOOT_DEVICE_MMC, 1, 0, 1, BOOT_DEVICE_MMC2 },
+       { BACKUP_BOOT_DEVICE_MMC, 1, 0, 0, BOOT_DEVICE_MMC1 },
+       { BACKUP_BOOT_DEVICE_SPI, 0, 0, 0, BOOT_DEVICE_SPI },
+       { BACKUP_BOOT_DEVICE_I2C, 0, 0, 0, BOOT_DEVICE_I2C },
+};
+
+static const struct k3_boot_device_info am64_boot_device_info = {
+       .boot_device_primary_table = am64_boot_device_primary_table,
+       .boot_device_primary_count = ARRAY_SIZE(am64_boot_device_primary_table),
+       .boot_device_backup_table = am64_boot_device_backup_table,
+       .boot_device_backup_count = ARRAY_SIZE(am64_boot_device_backup_table),
+       .main_devstat_reg = (void __iomem *)CTRLMMR_MAIN_DEVSTAT,
+       .wkup_devstat_reg = NULL,
+       .bootmode_addr = (void __iomem *)CONFIG_SYS_K3_BOOT_PARAM_TABLE_INDEX,
+};
+
+const struct k3_boot_device_info *k3_get_boot_device_info(void)
 {
-       u32 bkup_bootmode =
-           (main_devstat & MAIN_DEVSTAT_BACKUP_BOOTMODE_MASK) >>
-           MAIN_DEVSTAT_BACKUP_BOOTMODE_SHIFT;
-       u32 bkup_bootmode_cfg =
-           (main_devstat & MAIN_DEVSTAT_BACKUP_BOOTMODE_CFG_MASK) >>
-           MAIN_DEVSTAT_BACKUP_BOOTMODE_CFG_SHIFT;
-
-       switch (bkup_bootmode) {
-       case BACKUP_BOOT_DEVICE_UART:
-               return BOOT_DEVICE_UART;
-
-       case BACKUP_BOOT_DEVICE_DFU:
-               if (bkup_bootmode_cfg & MAIN_DEVSTAT_BACKUP_USB_MODE_MASK)
-                       return BOOT_DEVICE_USB;
-               return BOOT_DEVICE_DFU;
-
-       case BACKUP_BOOT_DEVICE_ETHERNET:
-               return BOOT_DEVICE_ETHERNET;
-
-       case BACKUP_BOOT_DEVICE_MMC:
-               if (bkup_bootmode_cfg)
-                       return BOOT_DEVICE_MMC2;
-               return BOOT_DEVICE_MMC1;
-
-       case BACKUP_BOOT_DEVICE_SPI:
-               return BOOT_DEVICE_SPI;
-
-       case BACKUP_BOOT_DEVICE_I2C:
-               return BOOT_DEVICE_I2C;
-       };
-
-       return BOOT_DEVICE_RAM;
-}
-
-static u32 __get_primary_bootmedia(u32 main_devstat)
-{
-       u32 bootmode = (main_devstat & MAIN_DEVSTAT_PRIMARY_BOOTMODE_MASK) >>
-           MAIN_DEVSTAT_PRIMARY_BOOTMODE_SHIFT;
-       u32 bootmode_cfg =
-           (main_devstat & MAIN_DEVSTAT_PRIMARY_BOOTMODE_CFG_MASK) >>
-           MAIN_DEVSTAT_PRIMARY_BOOTMODE_CFG_SHIFT;
-
-       switch (bootmode) {
-       case BOOT_DEVICE_OSPI:
-               fallthrough;
-       case BOOT_DEVICE_QSPI:
-               fallthrough;
-       case BOOT_DEVICE_XSPI:
-               fallthrough;
-       case BOOT_DEVICE_SPI:
-               return BOOT_DEVICE_SPI;
-
-       case BOOT_DEVICE_ETHERNET_RGMII:
-               fallthrough;
-       case BOOT_DEVICE_ETHERNET_RMII:
-               return BOOT_DEVICE_ETHERNET;
-
-       case BOOT_DEVICE_EMMC:
-               return BOOT_DEVICE_MMC1;
-
-       case BOOT_DEVICE_NAND:
-               return BOOT_DEVICE_NAND;
-
-       case BOOT_DEVICE_MMC:
-               if ((bootmode_cfg & MAIN_DEVSTAT_PRIMARY_MMC_PORT_MASK) >>
-                    MAIN_DEVSTAT_PRIMARY_MMC_PORT_SHIFT)
-                       return BOOT_DEVICE_MMC2;
-               return BOOT_DEVICE_MMC1;
-
-       case BOOT_DEVICE_DFU:
-               if ((bootmode_cfg & MAIN_DEVSTAT_PRIMARY_USB_MODE_MASK) >>
-                   MAIN_DEVSTAT_PRIMARY_USB_MODE_SHIFT)
-                       return BOOT_DEVICE_USB;
-               return BOOT_DEVICE_DFU;
-
-       case BOOT_DEVICE_NOBOOT:
-               return BOOT_DEVICE_RAM;
-       }
-
-       return bootmode;
-}
-
-u32 get_boot_device(void)
-{
-       u32 devstat = readl(CTRLMMR_MAIN_DEVSTAT);
-       u32 bootmode = *(u32 *)(CONFIG_SYS_K3_BOOT_PARAM_TABLE_INDEX);
-       u32 bootmedia;
-
-       if (bootmode == K3_PRIMARY_BOOTMODE)
-               bootmedia = __get_primary_bootmedia(devstat);
-       else
-               bootmedia = __get_backup_bootmedia(devstat);
-
-       debug("%s: devstat = 0x%x bootmedia = 0x%x bootmode = %d\n",
-             __func__, devstat, bootmedia, bootmode);
-
-       return bootmedia;
+       return &am64_boot_device_info;
 }
-- 
2.48.1

Reply via email to