Skip to content
Snippets Groups Projects
Commit 9e5e41e0 authored by Gianfranco Mariotti's avatar Gianfranco Mariotti
Browse files

[D18] add SECO environment, set mmc enumeration

parent 7702b1c0
No related branches found
No related tags found
No related merge requests found
...@@ -12,6 +12,11 @@ ...@@ -12,6 +12,11 @@
model = "SECO i.MX8MPlus LPDDR4 D18 board"; model = "SECO i.MX8MPlus LPDDR4 D18 board";
compatible = "seco,imx8mp-d18", "fsl,imx8mp-evk", "fsl,imx8mp"; compatible = "seco,imx8mp-d18", "fsl,imx8mp-evk", "fsl,imx8mp";
aliases {
mmc0 = &usdhc3;
mmc1 = &usdhc2;
};
chosen { chosen {
bootargs = "console=ttymxc1,115200"; bootargs = "console=ttymxc1,115200";
stdout-path = &uart2; stdout-path = &uart2;
......
...@@ -39,8 +39,13 @@ extern int usdhc_devno[4]; ...@@ -39,8 +39,13 @@ extern int usdhc_devno[4];
#if defined CONFIG_TARGET_SECO_IMX8QM_C26 || defined CONFIG_TARGET_SECO_IMX8QM_C43 #if defined CONFIG_TARGET_SECO_IMX8QM_C26 || defined CONFIG_TARGET_SECO_IMX8QM_C43
extern int usdhc_devno[4]; extern int usdhc_devno[4];
#endif #endif
#if defined CONFIG_TARGET_SECO_IMX8MP_D18
extern int usdhc_devno[3];
#endif
#if defined CONFIG_TARGET_SECO_IMX8MQ_C20 || defined CONFIG_TARGET_SECO_IMX8MQ_C12 #if defined CONFIG_TARGET_SECO_IMX8MQ_C20 || defined CONFIG_TARGET_SECO_IMX8MQ_C12
extern int usdhc_devno[2]; extern int usdhc_devno[2];
#endif
#if defined CONFIG_TARGET_SECO_IMX8MP_D18 || CONFIG_TARGET_SECO_IMX8MQ_C20 || defined CONFIG_TARGET_SECO_IMX8MQ_C12
extern int print_bootinfo(void); extern int print_bootinfo(void);
#endif #endif
__weak void autoset_boot_device(void); __weak void autoset_boot_device(void);
......
#include <common.h>
#include <command.h>
#include <env.h>
#include <seco/env_common.h>
#include <configs/seco_mx8_dtbo.h>
#define STR_HELPER(x) #x
#define STR(x) STR_HELPER(x)
/* *********************************** IMX8 *********************************** */
data_boot_dev_t kern_dev_imx8_list [] = {
{ SECO_DEV_TYPE_EMMC, SECO_DEV_LABEL_EMMC, STR(MACRO_ENV_KERNEL_SRC_USDHCI), SCFG_BOOT_DEV_ID_EMMC, LOAD_ADDR_KERNEL_LOCAL_DEV, SCFG_KERNEL_FILENAME },
{ SECO_DEV_TYPE_SD_EXT, SECO_DEV_LABEL_SD_EXT, STR(MACRO_ENV_KERNEL_SRC_USDHCI), SCFG_BOOT_DEV_ID_SD_EXT, LOAD_ADDR_KERNEL_LOCAL_DEV, SCFG_KERNEL_FILENAME },
{ SECO_DEV_TYPE_TFTP, SECO_DEV_LABEL_TFTP, STR(MACRO_ENV_KERNEL_SRC_TFTP), "", LOAD_ADDR_KERNEL_REMOTE_DEV, SCFG_KERNEL_FILENAME },
{ SECO_DEV_TYPE_USB, SECO_DEV_LABEL_USB, STR(MACRO_ENV_KERNEL_SRC_USB), SCFG_BOOT_DEV_ID_USB, LOAD_ADDR_KERNEL_LOCAL_DEV, SCFG_KERNEL_FILENAME },
};
size_t kern_dev_imx8_size = sizeof( kern_dev_imx8_list ) / sizeof( kern_dev_imx8_list[0] );
data_boot_dev_t fdt_dev_imx8_list [] = {
{ SECO_DEV_TYPE_EMMC, SECO_DEV_LABEL_EMMC, STR(MACRO_ENV_FDT_SRC_USDHCI), SCFG_BOOT_DEV_ID_EMMC, LOAD_ADDR_FDT_LOCAL_DEV, SCFG_DEFAULT_FDT_IMX8_FILE },
{ SECO_DEV_TYPE_SD_EXT, SECO_DEV_LABEL_SD_EXT, STR(MACRO_ENV_FDT_SRC_USDHCI), SCFG_BOOT_DEV_ID_SD_EXT, LOAD_ADDR_FDT_LOCAL_DEV, SCFG_DEFAULT_FDT_IMX8_FILE },
{ SECO_DEV_TYPE_TFTP, SECO_DEV_LABEL_TFTP, STR(MACRO_ENV_FDT_SRC_TFTP), "", LOAD_ADDR_FDT_REMOTE_DEV, SCFG_DEFAULT_FDT_IMX8_FILE },
{ SECO_DEV_TYPE_USB, SECO_DEV_LABEL_USB, STR(MACRO_ENV_FDT_SRC_USB), SCFG_BOOT_DEV_ID_USB, LOAD_ADDR_FDT_LOCAL_DEV, SCFG_DEFAULT_FDT_IMX8_FILE },
};
size_t fdt_dev_imx8_size = sizeof( fdt_dev_imx8_list ) / sizeof( fdt_dev_imx8_list[0] );
#ifdef CONFIG_OF_LIBFDT_OVERLAY
data_boot_dev_t fdt_overlay_dev_imx8_list [] = {
{ SECO_DEV_TYPE_EMMC, SECO_DEV_LABEL_EMMC, STR(MACRO_ENV_FDT_OVERLAY_SRC_USDHCI), SCFG_BOOT_DEV_ID_EMMC, "" , "" },
{ SECO_DEV_TYPE_SD_EXT, SECO_DEV_LABEL_SD_EXT, STR(MACRO_ENV_FDT_OVERLAY_SRC_USDHCI), SCFG_BOOT_DEV_ID_SD_EXT, "" , "" },
{ SECO_DEV_TYPE_TFTP, SECO_DEV_LABEL_TFTP, STR(MACRO_ENV_FDT_OVERLAY_SRC_TFTP), "", "" , ""},
{ SECO_DEV_TYPE_USB, SECO_DEV_LABEL_USB, STR(MACRO_ENV_FDT_OVERLAY_SRC_USB), SCFG_BOOT_DEV_ID_USB, "" , ""},
};
size_t fdt_overlay_dev_imx8_size = sizeof( fdt_overlay_dev_imx8_list ) / sizeof( fdt_overlay_dev_imx8_list[0] );
#endif /* CONFIG_OF_LIBFDT_OVERLAY */
data_boot_dev_t ramfs_dev_imx8_list [] = {
{ SECO_DEV_TYPE_NONE, SECO_DEV_LABEL_NONE, "0x0", "0", LOAD_ADDR_RAMFS_LOCAL_DEV, "" },
{ SECO_DEV_TYPE_EMMC, SECO_DEV_LABEL_EMMC, STR(MACRO_ENV_RAMFS_SRC_USDHCI), SCFG_BOOT_DEV_ID_EMMC, LOAD_ADDR_RAMFS_LOCAL_DEV, SCFG_RAMFS_FILENAME },
{ SECO_DEV_TYPE_SD_EXT, SECO_DEV_LABEL_SD_EXT, STR(MACRO_ENV_RAMFS_SRC_USDHCI), SCFG_BOOT_DEV_ID_SD_EXT, LOAD_ADDR_RAMFS_LOCAL_DEV, SCFG_RAMFS_FILENAME },
{ SECO_DEV_TYPE_TFTP, SECO_DEV_LABEL_TFTP, STR(MACRO_ENV_RAMFS_SRC_TFTP), "", LOAD_ADDR_RAMFS_REMOTE_DEV, SCFG_RAMFS_FILENAME },
{ SECO_DEV_TYPE_USB, SECO_DEV_LABEL_USB, STR(MACRO_ENV_RAMFS_SRC_USB), SCFG_BOOT_DEV_ID_USB, LOAD_ADDR_RAMFS_LOCAL_DEV, SCFG_RAMFS_FILENAME },
};
size_t ramfs_dev_imx8_size = sizeof( ramfs_dev_imx8_list ) / sizeof( ramfs_dev_imx8_list[0] );
data_boot_dev_t filesystem_dev_imx8_list [] = {
{ SECO_DEV_TYPE_EMMC, SECO_DEV_LABEL_EMMC, STR(MACRO_ENV_FS_SRC_USDHCI), SCFG_BOOT_DEV_ID_EMMC, "", "" },
{ SECO_DEV_TYPE_SD_EXT, SECO_DEV_LABEL_SD_EXT, STR(MACRO_ENV_FS_SRC_USDHCI), SCFG_BOOT_DEV_ID_SD_EXT, "", "" },
{ SECO_DEV_TYPE_NFS, SECO_DEV_LABEL_NFS, STR(MACRO_ENV_FS_SRC_NFS), "", "", "" },
{ SECO_DEV_TYPE_USB, SECO_DEV_LABEL_USB, STR(MACRO_ENV_FS_SRC_USB), "", "", "" },
};
size_t filesystem_dev_imx8_size = sizeof( filesystem_dev_imx8_list ) / sizeof( filesystem_dev_imx8_list[0] );
video_mode_t video_mode_list [] = {
{
/* NO DISPLAY */
.label = SECO_VIDEO_LABEL_NONE,
.video = {
{ VIDEO_NOT_USED, VIDEO_HDMI, NO_VIDEO_ARGS },
},
.panel_name = "none",
.dtbo_conf_file = NULL,
.use_bootargs = 0,
},
};
size_t video_mode_size = sizeof( video_mode_list ) / sizeof( video_mode_list[0] );
#ifdef CONFIG_OF_LIBFDT_OVERLAY
/* *********************************** FDT OVERLAY *********************************** */
overlay_list_t overlay_peripheral_list [] = {
};
size_t overlay_peripheral_size = sizeof( overlay_peripheral_list ) / sizeof( overlay_peripheral_list[0] );
#endif /* CONFIG_OF_LIBFDT_OVERLAY */
...@@ -29,8 +29,16 @@ ...@@ -29,8 +29,16 @@
#include <linux/arm-smccc.h> #include <linux/arm-smccc.h>
#include <mmc.h> #include <mmc.h>
#include "../common/proto_seco.h"
#include "seco/seco_env_gd.h"
#include "strap_cfg.h" #include "strap_cfg.h"
#ifdef CONFIG_SECO_ENV_MANAGER
#include <seco/env_common.h>
#include "env_conf.h"
#endif
DECLARE_GLOBAL_DATA_PTR; DECLARE_GLOBAL_DATA_PTR;
#define UART_PAD_CTRL (PAD_CTL_DSE6 | PAD_CTL_FSEL1) #define UART_PAD_CTRL (PAD_CTL_DSE6 | PAD_CTL_FSEL1)
...@@ -45,6 +53,13 @@ static iomux_v3_cfg_t const wdog_pads[] = { ...@@ -45,6 +53,13 @@ static iomux_v3_cfg_t const wdog_pads[] = {
MX8MP_PAD_GPIO1_IO02__WDOG1_WDOG_B | MUX_PAD_CTRL(WDOG_PAD_CTRL), MX8MP_PAD_GPIO1_IO02__WDOG1_WDOG_B | MUX_PAD_CTRL(WDOG_PAD_CTRL),
}; };
boot_mem_dev_t boot_mem_dev_list[SECO_NUM_BOOT_DEV] = {
{ SD1_BOOT, SECO_DEV_LABEL_EMMC },
{ SD3_BOOT, SECO_DEV_LABEL_SD_EXT },
};
int usdhc_devno[3] = { -1, BOARD_BOOT_ID_SD_EXT, BOARD_BOOT_ID_EMMC};
#ifdef CONFIG_NAND_MXS #ifdef CONFIG_NAND_MXS
static void setup_gpmi_nand(void) static void setup_gpmi_nand(void)
...@@ -560,6 +575,29 @@ int board_late_init(void) ...@@ -560,6 +575,29 @@ int board_late_init(void)
env_set("board_rev", "iMX8MP"); env_set("board_rev", "iMX8MP");
#endif #endif
/* seco_config variables */
#ifdef CONFIG_SECO_ENV_MANAGER
gd->bsp_sources.kern_dev_list = &kern_dev_imx8_list[0];
gd->bsp_sources.kern_dev_num = kern_dev_imx8_size;
gd->bsp_sources.fdt_dev_list = &fdt_dev_imx8_list[0];
gd->bsp_sources.fdt_dev_num = fdt_dev_imx8_size;
#ifdef CONFIG_OF_LIBFDT_OVERLAY
gd->bsp_sources.fdt_overlay_dev_list = fdt_overlay_dev_imx8_list;
gd->bsp_sources.fdt_overlay_dev_num = fdt_overlay_dev_imx8_size;
#endif
gd->bsp_sources.ramfs_dev_list = &ramfs_dev_imx8_list[0];
gd->bsp_sources.ramfs_dev_num = ramfs_dev_imx8_size;
gd->bsp_sources.filesystem_dev_list = &filesystem_dev_imx8_list[0];
gd->bsp_sources.filesystem_dev_num = filesystem_dev_imx8_size;
gd->boot_setup.video_mode_list = video_mode_list;
gd->boot_setup.video_mode_num = video_mode_size;
#ifdef CONFIG_OF_LIBFDT_OVERLAY
gd->boot_setup.overlay_peripheral_list = overlay_peripheral_list;
gd->boot_setup.overlay_peripheral_num = overlay_peripheral_size;
#endif
#endif
return 0; return 0;
} }
......
...@@ -156,3 +156,7 @@ CONFIG_EFI_RUNTIME_UPDATE_CAPSULE=y ...@@ -156,3 +156,7 @@ CONFIG_EFI_RUNTIME_UPDATE_CAPSULE=y
CONFIG_EFI_CAPSULE_ON_DISK=y CONFIG_EFI_CAPSULE_ON_DISK=y
CONFIG_EFI_CAPSULE_FIRMWARE_RAW=y CONFIG_EFI_CAPSULE_FIRMWARE_RAW=y
CONFIG_EFI_SECURE_BOOT=y CONFIG_EFI_SECURE_BOOT=y
# SECO
CONFIG_SECO_ENV_MANAGER=y
CONFIG_CMD_FS_GENERIC=y
...@@ -9,7 +9,6 @@ ...@@ -9,7 +9,6 @@
#include <linux/sizes.h> #include <linux/sizes.h>
#include <linux/stringify.h> #include <linux/stringify.h>
#include <asm/arch/imx-regs.h> #include <asm/arch/imx-regs.h>
#include "imx_env.h"
#define CONFIG_SYS_BOOTM_LEN (32 * SZ_1M) #define CONFIG_SYS_BOOTM_LEN (32 * SZ_1M)
...@@ -17,6 +16,7 @@ ...@@ -17,6 +16,7 @@
#define CONFIG_SYS_MONITOR_LEN (512 * 1024) #define CONFIG_SYS_MONITOR_LEN (512 * 1024)
#define CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_USE_SECTOR #define CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_USE_SECTOR
#define CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR 0x300 #define CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR 0x300
#define CONFIG_SYS_MMCSD_FS_BOOT_PARTITION 1
#define CONFIG_SYS_UBOOT_BASE (QSPI0_AMBA_BASE + CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR * 512) #define CONFIG_SYS_UBOOT_BASE (QSPI0_AMBA_BASE + CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR * 512)
#ifdef CONFIG_SPL_BUILD #ifdef CONFIG_SPL_BUILD
...@@ -165,4 +165,97 @@ ...@@ -165,4 +165,97 @@
#include "imx8mp_evk_android.h" #include "imx8mp_evk_android.h"
#endif #endif
/* ____________________________________________________________________________
| |
| ENVIRONMENT |
|____________________________________________________________________________|
*/
#define ENV_MMCAUTODETECT "no"
#define ENV_FDTAUTODETECT "no"
#define ENV_MEMAUTODETECT "no"
#define SCFG_DEFAULT_FDT_IMX8_FILE "seco-imx8mp-d18.dtb"
#define ENV_DEFAULT_FDT_FILE "seco-imx8mp-d18.dtb"
#define ENV_CONSOLE_DEV "ttymxc1"
#define SECO_NUM_BOOT_DEV 2 // eMMC, uSD
/* boot device id */
#define BOARD_BOOT_ID_EMMC 0
#define BOARD_BOOT_ID_SD_EXT 1
#define BOARD_ROOT_ID_EMMC 0
#define BOARD_ROOT_ID_SD_EXT 1
#define SCFG_BOOT_DEV_ID_EMMC __stringify(BOARD_BOOT_ID_EMMC)"\0"
#define SCFG_BOOT_DEV_ID_U_SD "0"
#define SCFG_BOOT_DEV_ID_SD_EXT __stringify(BOARD_BOOT_ID_SD_EXT)"\0"
#define SCFG_BOOT_DEV_ID_SPI "0"
#define SCFG_BOOT_DEV_ID_SATA "0"
#define SCFG_BOOT_DEV_ID_USB "0"
#define SCFG_ROOT_DEV_ID_EMMC __stringify(BOARD_ROOT_ID_EMMC)"\0"
#define SCFG_ROOT_DEV_ID_U_SD "0"
#define SCFG_ROOT_DEV_ID_SD_EXT __stringify(BOARD_ROOT_ID_SD_EXT)"\0"
#define SCFG_ROOT_DEV_ID_SATA "0"
#define SCFG_ROOT_DEV_ID_USB "0"
#define SCFG_SET_VIDEOMODE 1 /* if 0 not video setting in seco_config */
/* Defaults devices and partitions sources */
/* boot file partition location */
#define ENV_SYS_MMC_ENV_DEV 0
#define ENV_SYS_MMC_KERNEL_PART 1
#define ENV_SYS_MMC_FDT_PART 1
#define ENV_SYS_MMC_RAMFS_PART 1
/* boot additional file partition location */
#define ENV_SYS_MMC_BOOSCRIPT_PART 1
#define ENV_SYS_MMC_BOOATENV_PART 1
/* rootfs file */
#define ENV_SYS_MMC_ROOTFS_PART 2
#define ENV_ROOT_DEV_ID 1
#define ENV_NUM_VIDEO_OUTPUT 1 /* configurable video output */
/* SECO COMMON ENVIRONMENT FOR SECO_CONFIG */
#define SCFG_KERNEL_LOADADDR CONFIG_LOADADDR
#define SCFG_KERNEL_FILENAME "Image"
#define SCFG_RAMFS_FILENAME "ramfs.img"
#define ENV_KERNEL_LOADADDR SCFG_KERNEL_LOADADDR
#define ENV_FDT_LOADADDR 0x42480000
#define ENV_FDT_OVERLAY_BASEADDR 0x43480000
#define ENV_RAMFS_LOADADDR 0x45480000
#define ENV_BOOTSCRIPT_LOADADDR 0x47480000
#define ENV_FDT_OVERLAY_BASEADDR_OFFSET 0x01000000
#define ENV_FDT_RESIZE 0x4000
#define LOAD_ADDR_KERNEL_LOCAL_DEV __stringify(CONFIG_LOADADDR)"\0"
#define LOAD_ADDR_KERNEL_REMOTE_DEV __stringify(CONFIG_LOADADDR)"\0"
#define LOAD_ADDR_FDT_LOCAL_DEV __stringify(ENV_FDT_LOADADDR)"\0"
#define LOAD_ADDR_FDT_REMOTE_DEV __stringify(ENV_FDT_LOADADDR)"\0"
#define LOAD_ADDR_FDT_OVERLAY_LOCAL_DEV __stringify(ENV_FDT_OVERLAY_BASEADDR)"\0"
#define LOAD_ADDR_FDT_OVERLAY_REMOTE_DEV __stringify(ENV_FDT_OVERLAY_BASEADDR)"\0"
#define LOAD_ADDR_RAMFS_LOCAL_DEV __stringify(ENV_RAMFS_LOADADDR)"\0"
#define LOAD_ADDR_RAMFS_REMOTE_DEV __stringify(ENV_RAMFS_LOADADDR)"\0"
#define DEFAULT_OVERLAY_FILE ""
#define ENV_BOOT_TYPE booti
#include "seco_mx8_env.h"
#endif #endif
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment