mirror of
https://github.com/u-boot/u-boot.git
synced 2024-12-23 19:53:26 +08:00
imx: Add basic support for the NXP IMXRT10xx SoC family
Add i.IMXRT family basic support. Signed-off-by: Giulio Benetti <giulio.benetti@benettiengineering.com>
This commit is contained in:
parent
6a63a873b7
commit
77eb9a90dd
@ -807,6 +807,14 @@ config ARCH_IMX8M
|
|||||||
select SUPPORT_SPL
|
select SUPPORT_SPL
|
||||||
imply CMD_DM
|
imply CMD_DM
|
||||||
|
|
||||||
|
config ARCH_IMXRT
|
||||||
|
bool "NXP i.MXRT platform"
|
||||||
|
select CPU_V7M
|
||||||
|
select DM
|
||||||
|
select DM_SERIAL
|
||||||
|
select SUPPORT_SPL
|
||||||
|
imply CMD_DM
|
||||||
|
|
||||||
config ARCH_MX23
|
config ARCH_MX23
|
||||||
bool "NXP i.MX23 family"
|
bool "NXP i.MX23 family"
|
||||||
select CPU_ARM926EJS
|
select CPU_ARM926EJS
|
||||||
@ -1732,6 +1740,8 @@ source "arch/arm/mach-imx/imx8/Kconfig"
|
|||||||
|
|
||||||
source "arch/arm/mach-imx/imx8m/Kconfig"
|
source "arch/arm/mach-imx/imx8m/Kconfig"
|
||||||
|
|
||||||
|
source "arch/arm/mach-imx/imxrt/Kconfig"
|
||||||
|
|
||||||
source "arch/arm/mach-imx/mxs/Kconfig"
|
source "arch/arm/mach-imx/mxs/Kconfig"
|
||||||
|
|
||||||
source "arch/arm/mach-omap2/Kconfig"
|
source "arch/arm/mach-omap2/Kconfig"
|
||||||
|
@ -104,11 +104,11 @@ libs-y += arch/arm/cpu/
|
|||||||
libs-y += arch/arm/lib/
|
libs-y += arch/arm/lib/
|
||||||
|
|
||||||
ifeq ($(CONFIG_SPL_BUILD),y)
|
ifeq ($(CONFIG_SPL_BUILD),y)
|
||||||
ifneq (,$(CONFIG_MX23)$(CONFIG_MX28)$(CONFIG_MX35)$(filter $(SOC), mx25 mx5 mx6 mx7 mx35 imx8m imx8))
|
ifneq (,$(CONFIG_MX23)$(CONFIG_MX28)$(CONFIG_MX35)$(filter $(SOC), mx25 mx5 mx6 mx7 mx35 imx8m imx8 imxrt))
|
||||||
libs-y += arch/arm/mach-imx/
|
libs-y += arch/arm/mach-imx/
|
||||||
endif
|
endif
|
||||||
else
|
else
|
||||||
ifneq (,$(filter $(SOC), mx25 mx27 mx5 mx6 mx7 mx7ulp mx31 mx35 mxs imx8m imx8 vf610))
|
ifneq (,$(filter $(SOC), mx25 mx27 mx5 mx6 mx7 mx7ulp mx31 mx35 mxs imx8m imx8 imxrt vf610))
|
||||||
libs-y += arch/arm/mach-imx/
|
libs-y += arch/arm/mach-imx/
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
10
arch/arm/include/asm/arch-imxrt/clock.h
Normal file
10
arch/arm/include/asm/arch-imxrt/clock.h
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
/* SPDX-License-Identifier: GPL-2.0+ */
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2019
|
||||||
|
* Author(s): Giulio Benetti <giulio.benetti@benettiengineering.com>
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef __ASM_ARCH_CLOCK_H
|
||||||
|
#define __ASM_ARCH_CLOCK_H
|
||||||
|
|
||||||
|
#endif /* __ASM_ARCH_CLOCK_H */
|
19
arch/arm/include/asm/arch-imxrt/gpio.h
Normal file
19
arch/arm/include/asm/arch-imxrt/gpio.h
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
/* SPDX-License-Identifier: GPL-2.0+ */
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2019
|
||||||
|
* Author(s): Giulio Benetti <giulio.benetti@benettiengineering.com>
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef __ASM_ARCH_GPIO_H__
|
||||||
|
#define __ASM_ARCH_GPIO_H__
|
||||||
|
|
||||||
|
#if !(defined(__KERNEL_STRICT_NAMES) || defined(__ASSEMBLY__))
|
||||||
|
/* GPIO registers */
|
||||||
|
struct gpio_regs {
|
||||||
|
u32 gpio_dr; /* data */
|
||||||
|
u32 gpio_dir; /* direction */
|
||||||
|
u32 gpio_psr; /* pad satus */
|
||||||
|
};
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif /* __ASM_ARCH_GPIO_H__ */
|
20
arch/arm/include/asm/arch-imxrt/imx-regs.h
Normal file
20
arch/arm/include/asm/arch-imxrt/imx-regs.h
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
/* SPDX-License-Identifier: GPL-2.0+ */
|
||||||
|
/*
|
||||||
|
* Copyright(C) 2019
|
||||||
|
* Author(s): Giulio Benetti <giulio.benetti@benettiengineering.com>
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef __ASM_ARCH_IMX_REGS_H__
|
||||||
|
#define __ASM_ARCH_IMX_REGS_H__
|
||||||
|
|
||||||
|
#define ARCH_MXC
|
||||||
|
|
||||||
|
#define GPIO1_BASE_ADDR 0x401B8000
|
||||||
|
#define GPIO2_BASE_ADDR 0x401BC000
|
||||||
|
#define GPIO3_BASE_ADDR 0x401C0000
|
||||||
|
#define GPIO4_BASE_ADDR 0x401C4000
|
||||||
|
#define GPIO5_BASE_ADDR 0x400C0000
|
||||||
|
|
||||||
|
#define ANATOP_BASE_ADDR 0x400d8000
|
||||||
|
|
||||||
|
#endif /* __ASM_ARCH_IMX_REGS_H__ */
|
11
arch/arm/include/asm/arch-imxrt/imxrt.h
Normal file
11
arch/arm/include/asm/arch-imxrt/imxrt.h
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
/* SPDX-License-Identifier: GPL-2.0+ */
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2019
|
||||||
|
* Author(s): Giulio Benetti <giulio.benetti@benettiengineering.com>
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _ASM_ARCH_IMXRT_H
|
||||||
|
#define _ASM_ARCH_IMXRT_H
|
||||||
|
|
||||||
|
#endif /* _ASM_ARCH_IMXRT_H */
|
||||||
|
|
11
arch/arm/include/asm/arch-imxrt/sys_proto.h
Normal file
11
arch/arm/include/asm/arch-imxrt/sys_proto.h
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
/* SPDX-License-Identifier: GPL-2.0+ */
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2017 NXP
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _ASM_ARCH_SYS_PROTO_H
|
||||||
|
#define _ASM_ARCH_SYS_PROTO_H
|
||||||
|
|
||||||
|
#include <asm/mach-imx/sys_proto.h>
|
||||||
|
|
||||||
|
#endif /* _ASM_ARCH_SYS_PROTO_H */
|
@ -27,7 +27,7 @@ endif
|
|||||||
obj-$(CONFIG_GPT_TIMER) += timer.o
|
obj-$(CONFIG_GPT_TIMER) += timer.o
|
||||||
obj-$(CONFIG_SYS_I2C_MXC) += i2c-mxv7.o
|
obj-$(CONFIG_SYS_I2C_MXC) += i2c-mxv7.o
|
||||||
endif
|
endif
|
||||||
ifeq ($(SOC),$(filter $(SOC),mx7 mx6 mxs imx8m imx8))
|
ifeq ($(SOC),$(filter $(SOC),mx7 mx6 mxs imx8m imx8 imxrt))
|
||||||
obj-y += misc.o
|
obj-y += misc.o
|
||||||
obj-$(CONFIG_SPL_BUILD) += spl.o
|
obj-$(CONFIG_SPL_BUILD) += spl.o
|
||||||
endif
|
endif
|
||||||
@ -226,5 +226,6 @@ obj-$(CONFIG_MX7) += mx7/
|
|||||||
obj-$(CONFIG_ARCH_MX7ULP) += mx7ulp/
|
obj-$(CONFIG_ARCH_MX7ULP) += mx7ulp/
|
||||||
obj-$(CONFIG_IMX8M) += imx8m/
|
obj-$(CONFIG_IMX8M) += imx8m/
|
||||||
obj-$(CONFIG_ARCH_IMX8) += imx8/
|
obj-$(CONFIG_ARCH_IMX8) += imx8/
|
||||||
|
obj-$(CONFIG_ARCH_IMXRT) += imxrt/
|
||||||
|
|
||||||
obj-$(CONFIG_SPL_BOOTROM_SUPPORT) += spl_imx_romapi.o
|
obj-$(CONFIG_SPL_BOOTROM_SUPPORT) += spl_imx_romapi.o
|
||||||
|
13
arch/arm/mach-imx/imxrt/Kconfig
Normal file
13
arch/arm/mach-imx/imxrt/Kconfig
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
if ARCH_IMXRT
|
||||||
|
|
||||||
|
config IMXRT
|
||||||
|
bool
|
||||||
|
|
||||||
|
config IMXRT1050
|
||||||
|
bool
|
||||||
|
select IMXRT
|
||||||
|
|
||||||
|
config SYS_SOC
|
||||||
|
default "imxrt"
|
||||||
|
|
||||||
|
endif
|
7
arch/arm/mach-imx/imxrt/Makefile
Normal file
7
arch/arm/mach-imx/imxrt/Makefile
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
# SPDX-License-Identifier: GPL-2.0+
|
||||||
|
#
|
||||||
|
# (C) Copyright 2019
|
||||||
|
# Author(s): Giulio Benetti <giulio.benetti@benettiengineering.com>
|
||||||
|
#
|
||||||
|
|
||||||
|
obj-y := soc.o
|
35
arch/arm/mach-imx/imxrt/soc.c
Normal file
35
arch/arm/mach-imx/imxrt/soc.c
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
// SPDX-License-Identifier: GPL-2.0+
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2019
|
||||||
|
* Author(s): Giulio Benetti <giulio.benetti@benettiengineering.com>
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <common.h>
|
||||||
|
#include <asm/io.h>
|
||||||
|
#include <asm/armv7_mpu.h>
|
||||||
|
|
||||||
|
int arch_cpu_init(void)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
|
||||||
|
struct mpu_region_config imxrt1050_region_config[] = {
|
||||||
|
{ 0x00000000, REGION_0, XN_DIS, PRIV_RW_USR_RW,
|
||||||
|
STRONG_ORDER, REGION_4GB },
|
||||||
|
{ PHYS_SDRAM, REGION_1, XN_DIS, PRIV_RW_USR_RW,
|
||||||
|
O_I_WB_RD_WR_ALLOC, (ffs(PHYS_SDRAM_SIZE) - 2) },
|
||||||
|
{ DMAMEM_BASE,
|
||||||
|
REGION_2, XN_DIS, PRIV_RW_USR_RW,
|
||||||
|
STRONG_ORDER, (ffs(DMAMEM_SZ_ALL) - 2) },
|
||||||
|
};
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Configure the memory protection unit (MPU) to allow full access to
|
||||||
|
* the whole 4GB address space.
|
||||||
|
*/
|
||||||
|
disable_mpu();
|
||||||
|
for (i = 0; i < ARRAY_SIZE(imxrt1050_region_config); i++)
|
||||||
|
mpu_config(&imxrt1050_region_config[i]);
|
||||||
|
enable_mpu();
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user