Merge branch 'master' into next

Signed-off-by: Tom Rini <trini@konsulko.com>
This commit is contained in:
Tom Rini 2022-09-19 13:19:39 -04:00
commit e9a1ff9724
340 changed files with 13232 additions and 2087 deletions

View file

@ -1,6 +1,6 @@
Please do not submit a Pull Request via github. Our project makes use of Please do not submit a Pull Request via github. Our project makes use of
mailing lists for patch submission and review. For more details please mailing lists for patch submission and review. For more details please
see https://www.denx.de/wiki/U-Boot/Patches see https://u-boot.readthedocs.io/en/latest/develop/sending_patches.html
The only exception to this is in order to trigger a CI loop on Azure prior The only exception to this is in order to trigger a CI loop on Azure prior
to posting of patches. to posting of patches.

View file

@ -1,7 +1,7 @@
# SPDX-License-Identifier: GPL-2.0+ # SPDX-License-Identifier: GPL-2.0+
# Grab our configured image. The source for this is found at: # Grab our configured image. The source for this is found
# https://source.denx.de/u-boot/gitlab-ci-runner # in the u-boot tree at tools/docker/Dockerfile
image: trini/u-boot-gitlab-ci-runner:jammy-20220801-09Aug2022 image: trini/u-boot-gitlab-ci-runner:jammy-20220801-09Aug2022
# We run some tests in different order, to catch some failures quicker. # We run some tests in different order, to catch some failures quicker.

View file

@ -299,7 +299,7 @@ config SYS_MALLOC_F_LEN
default 0x4000 if SANDBOX || RISCV || ARCH_APPLE || ROCKCHIP_RK3368 || \ default 0x4000 if SANDBOX || RISCV || ARCH_APPLE || ROCKCHIP_RK3368 || \
ROCKCHIP_RK3399 ROCKCHIP_RK3399
default 0x8000 if RCAR_GEN3 default 0x8000 if RCAR_GEN3
default 0x10000 if ARCH_IMX8 || (ARCH_IMX8M && !IMX8MQ) default 0x10000 if ARCH_IMX8 || ARCH_IMX8M
default 0x2000 default 0x2000
help help
Before relocation, memory is very limited on many platforms. Still, Before relocation, memory is very limited on many platforms. Still,
@ -325,6 +325,7 @@ config SPL_SYS_MALLOC_F_LEN
depends on SYS_MALLOC_F && SPL depends on SYS_MALLOC_F && SPL
default 0 if !SPL_FRAMEWORK default 0 if !SPL_FRAMEWORK
default 0x2800 if RCAR_GEN3 default 0x2800 if RCAR_GEN3
default 0x2000 if IMX8MQ
default SYS_MALLOC_F_LEN default SYS_MALLOC_F_LEN
help help
In SPL memory is very limited on many platforms. Still, In SPL memory is very limited on many platforms. Still,

View file

@ -264,6 +264,7 @@ F: arch/arm/include/asm/arch-mx*/
F: arch/arm/include/asm/arch-vf610/ F: arch/arm/include/asm/arch-vf610/
F: arch/arm/include/asm/mach-imx/ F: arch/arm/include/asm/mach-imx/
F: board/freescale/*mx*/ F: board/freescale/*mx*/
F: drivers/serial/serial_mxc.c
ARM HISILICON ARM HISILICON
M: Peter Griffin <peter.griffin@linaro.org> M: Peter Griffin <peter.griffin@linaro.org>

View file

@ -3,7 +3,7 @@
VERSION = 2022 VERSION = 2022
PATCHLEVEL = 10 PATCHLEVEL = 10
SUBLEVEL = SUBLEVEL =
EXTRAVERSION = -rc3 EXTRAVERSION = -rc5
NAME = NAME =
# *DOCUMENTATION* # *DOCUMENTATION*
@ -1004,22 +1004,12 @@ ifeq ($(CONFIG_INIT_SP_RELATIVE)$(CONFIG_OF_SEPARATE),yy)
INPUTS-y += init_sp_bss_offset_check INPUTS-y += init_sp_bss_offset_check
endif endif
ifeq ($(CONFIG_MPC85xx)$(CONFIG_OF_SEPARATE),yy) ifeq ($(CONFIG_ARCH_ROCKCHIP)$(CONFIG_SPL),yy)
INPUTS-y += u-boot-with-dtb.bin # Binman image dependencies
endif
ifeq ($(CONFIG_ARCH_ROCKCHIP),y)
# On ARM64 this target is produced by binman so we don't need this dep
ifeq ($(CONFIG_ARM64),y) ifeq ($(CONFIG_ARM64),y)
ifeq ($(CONFIG_SPL),y) INPUTS-y += u-boot.itb
# TODO: Get binman to generate this too
INPUTS-y += u-boot-rockchip.bin
endif
else else
ifeq ($(CONFIG_SPL),y) INPUTS-y += u-boot.img
# Generate these inputs for binman which will create the output files
INPUTS-y += idbloader.img u-boot.img
endif
endif endif
endif endif
@ -1230,9 +1220,12 @@ else ifeq ($(CONFIG_OF_SEPARATE).$(CONFIG_OF_OMIT_DTB),y.)
u-boot-dtb.bin: u-boot-nodtb.bin dts/dt.dtb FORCE u-boot-dtb.bin: u-boot-nodtb.bin dts/dt.dtb FORCE
$(call if_changed,cat) $(call if_changed,cat)
ifneq ($(CONFIG_MPC85XX_HAVE_RESET_VECTOR)$(CONFIG_OF_SEPARATE),yy)
u-boot.bin: u-boot-dtb.bin FORCE u-boot.bin: u-boot-dtb.bin FORCE
$(call if_changed,copy) $(call if_changed,copy)
else endif
else ifneq ($(CONFIG_MPC85XX_HAVE_RESET_VECTOR)$(CONFIG_OF_SEPARATE),yy)
u-boot.bin: u-boot-nodtb.bin FORCE u-boot.bin: u-boot-nodtb.bin FORCE
$(call if_changed,copy) $(call if_changed,copy)
endif endif
@ -1280,7 +1273,7 @@ spl/u-boot-spl.srec: spl/u-boot-spl FORCE
OBJCOPYFLAGS_u-boot-nodtb.bin := -O binary \ OBJCOPYFLAGS_u-boot-nodtb.bin := -O binary \
$(if $(CONFIG_X86_16BIT_INIT),-R .start16 -R .resetvec) \ $(if $(CONFIG_X86_16BIT_INIT),-R .start16 -R .resetvec) \
$(if $(CONFIG_MPC85XX_HAVE_RESET_VECTOR),$(if $(CONFIG_OF_EMBED),,-R .bootpg -R .resetvec)) $(if $(CONFIG_MPC85XX_HAVE_RESET_VECTOR),$(if $(CONFIG_OF_SEPARATE),-R .bootpg -R .resetvec))
binary_size_check: u-boot-nodtb.bin FORCE binary_size_check: u-boot-nodtb.bin FORCE
@file_size=$(shell wc -c u-boot-nodtb.bin | awk '{print $$1}') ; \ @file_size=$(shell wc -c u-boot-nodtb.bin | awk '{print $$1}') ; \
@ -1445,11 +1438,7 @@ MKIMAGEFLAGS_u-boot-spl.kwb = -n $(KWD_CONFIG_FILE) \
MKIMAGEFLAGS_u-boot.pbl = -n $(srctree)/$(CONFIG_SYS_FSL_PBL_RCW:"%"=%) \ MKIMAGEFLAGS_u-boot.pbl = -n $(srctree)/$(CONFIG_SYS_FSL_PBL_RCW:"%"=%) \
-R $(srctree)/$(CONFIG_SYS_FSL_PBL_PBI:"%"=%) -A $(ARCH) -T pblimage -R $(srctree)/$(CONFIG_SYS_FSL_PBL_PBI:"%"=%) -A $(ARCH) -T pblimage
ifeq ($(CONFIG_MPC85xx)$(CONFIG_OF_SEPARATE),yy)
UBOOT_BIN := u-boot-with-dtb.bin
else
UBOOT_BIN := u-boot.bin UBOOT_BIN := u-boot.bin
endif
MKIMAGEFLAGS_u-boot-lzma.img = -A $(ARCH) -T standalone -C lzma -O u-boot \ MKIMAGEFLAGS_u-boot-lzma.img = -A $(ARCH) -T standalone -C lzma -O u-boot \
-a $(CONFIG_SYS_TEXT_BASE) -e $(CONFIG_SYS_UBOOT_START) \ -a $(CONFIG_SYS_TEXT_BASE) -e $(CONFIG_SYS_UBOOT_START) \
@ -1505,29 +1494,6 @@ OBJCOPYFLAGS_u-boot-with-spl.bin = -I binary -O binary \
u-boot-with-spl.bin: $(SPL_IMAGE) $(SPL_PAYLOAD) FORCE u-boot-with-spl.bin: $(SPL_IMAGE) $(SPL_PAYLOAD) FORCE
$(call if_changed,pad_cat) $(call if_changed,pad_cat)
ifeq ($(CONFIG_ARCH_ROCKCHIP),y)
# TPL + SPL
ifeq ($(CONFIG_SPL)$(CONFIG_TPL),yy)
MKIMAGEFLAGS_u-boot-tpl-rockchip.bin = -n $(CONFIG_SYS_SOC) -T rksd
tpl/u-boot-tpl-rockchip.bin: tpl/u-boot-tpl.bin FORCE
$(call if_changed,mkimage)
idbloader.img: tpl/u-boot-tpl-rockchip.bin spl/u-boot-spl.bin FORCE
$(call if_changed,cat)
else
MKIMAGEFLAGS_idbloader.img = -n $(CONFIG_SYS_SOC) -T rksd
idbloader.img: spl/u-boot-spl.bin FORCE
$(call if_changed,mkimage)
endif
ifeq ($(CONFIG_ARM64),y)
OBJCOPYFLAGS_u-boot-rockchip.bin = -I binary -O binary \
--pad-to=$(CONFIG_SPL_PAD_TO) --gap-fill=0xff
u-boot-rockchip.bin: idbloader.img u-boot.itb FORCE
$(call if_changed,pad_cat)
endif # CONFIG_ARM64
endif # CONFIG_ARCH_ROCKCHIP
ifeq ($(CONFIG_ARCH_LPC32XX)$(CONFIG_SPL),yy) ifeq ($(CONFIG_ARCH_LPC32XX)$(CONFIG_SPL),yy)
MKIMAGEFLAGS_lpc32xx-spl.img = -T lpc32xximage -a $(CONFIG_SPL_TEXT_BASE) MKIMAGEFLAGS_lpc32xx-spl.img = -T lpc32xximage -a $(CONFIG_SPL_TEXT_BASE)
@ -1639,17 +1605,14 @@ u-boot-with-nand-spl.sfp: u-boot-spl-padx4.sfp u-boot.img FORCE
endif endif
ifeq ($(CONFIG_MPC85xx)$(CONFIG_OF_SEPARATE),yy) ifeq ($(CONFIG_MPC85XX_HAVE_RESET_VECTOR)$(CONFIG_OF_SEPARATE),yy)
u-boot-with-dtb.bin: u-boot.bin u-boot.dtb \ u-boot.bin: u-boot-nodtb.bin u-boot.dtb u-boot-br.bin FORCE
$(if $(CONFIG_MPC85XX_HAVE_RESET_VECTOR), u-boot-br.bin) FORCE
$(call if_changed,binman) $(call if_changed,binman)
ifeq ($(CONFIG_MPC85XX_HAVE_RESET_VECTOR),y)
OBJCOPYFLAGS_u-boot-br.bin := -O binary -j .bootpg -j .resetvec OBJCOPYFLAGS_u-boot-br.bin := -O binary -j .bootpg -j .resetvec
u-boot-br.bin: u-boot FORCE u-boot-br.bin: u-boot FORCE
$(call if_changed,objcopy) $(call if_changed,objcopy)
endif endif
endif
quiet_cmd_ldr = LD $@ quiet_cmd_ldr = LD $@
cmd_ldr = $(LD) $(LDFLAGS_$(@F)) \ cmd_ldr = $(LD) $(LDFLAGS_$(@F)) \
@ -1706,12 +1669,8 @@ spl/u-boot-spl.pbl: spl/u-boot-spl.bin FORCE
ifeq ($(ARCH),arm) ifeq ($(ARCH),arm)
UBOOT_BINLOAD := u-boot.img UBOOT_BINLOAD := u-boot.img
else else
ifeq ($(CONFIG_MPC85xx)$(CONFIG_OF_SEPARATE),yy)
UBOOT_BINLOAD := u-boot-with-dtb.bin
else
UBOOT_BINLOAD := u-boot.bin UBOOT_BINLOAD := u-boot.bin
endif endif
endif
OBJCOPYFLAGS_u-boot-with-spl-pbl.bin = -I binary -O binary --pad-to=$(CONFIG_SPL_PAD_TO) \ OBJCOPYFLAGS_u-boot-with-spl-pbl.bin = -I binary -O binary --pad-to=$(CONFIG_SPL_PAD_TO) \
--gap-fill=0xff --gap-fill=0xff
@ -2232,7 +2191,9 @@ CLEAN_FILES += include/bmp_logo.h include/bmp_logo_data.h \
lpc32xx-* bl31.c bl31.elf bl31_*.bin image.map tispl.bin* \ lpc32xx-* bl31.c bl31.elf bl31_*.bin image.map tispl.bin* \
idbloader.img flash.bin flash.log defconfig keep-syms-lto.c \ idbloader.img flash.bin flash.log defconfig keep-syms-lto.c \
mkimage-out.spl.mkimage mkimage.spl.mkimage imx-boot.map \ mkimage-out.spl.mkimage mkimage.spl.mkimage imx-boot.map \
itb.fit.fit itb.fit.itb itb.map spl.map itb.fit.fit itb.fit.itb itb.map spl.map mkimage-out.rom.mkimage \
mkimage.rom.mkimage rom.map simple-bin.map simple-bin-spi.map \
idbloader-spi.img
# Directories & files removed with 'make mrproper' # Directories & files removed with 'make mrproper'
MRPROPER_DIRS += include/config include/generated spl tpl \ MRPROPER_DIRS += include/config include/generated spl tpl \

View file

@ -1986,7 +1986,7 @@ config ARCH_STM32MP
config ARCH_ROCKCHIP config ARCH_ROCKCHIP
bool "Support Rockchip SoCs" bool "Support Rockchip SoCs"
select BLK select BLK
select BINMAN if SPL_OPTEE || (SPL && !ARM64) select BINMAN if SPL_OPTEE || SPL
select DM select DM
select DM_GPIO select DM_GPIO
select DM_I2C select DM_I2C

View file

@ -67,11 +67,24 @@ void spl_board_init(void)
#endif #endif
} }
void tzpc_init(void)
{
/*
* Mark the whole OCRAM as non-secure, otherwise DMA devices cannot
* access it. This is for example necessary for MMC boot.
*/
#ifdef TZPCR0SIZE_BASE
out_le32(TZPCR0SIZE_BASE, 0);
#endif
}
void board_init_f(ulong dummy) void board_init_f(ulong dummy)
{ {
int ret; int ret;
icache_enable(); icache_enable();
tzpc_init();
/* Clear global data */ /* Clear global data */
memset((void *)gd, 0, sizeof(gd_t)); memset((void *)gd, 0, sizeof(gd_t));
if (IS_ENABLED(CONFIG_DEBUG_UART)) if (IS_ENABLED(CONFIG_DEBUG_UART))

View file

@ -36,9 +36,6 @@ phys_addr_t sec_firmware_addr;
#ifndef SEC_FIRMWARE_FIT_IMAGE #ifndef SEC_FIRMWARE_FIT_IMAGE
#define SEC_FIRMWARE_FIT_IMAGE "firmware" #define SEC_FIRMWARE_FIT_IMAGE "firmware"
#endif #endif
#ifndef SEC_FIRMWARE_FIT_CNF_NAME
#define SEC_FIRMWARE_FIT_CNF_NAME "config-1"
#endif
#ifndef SEC_FIRMWARE_TARGET_EL #ifndef SEC_FIRMWARE_TARGET_EL
#define SEC_FIRMWARE_TARGET_EL 2 #define SEC_FIRMWARE_TARGET_EL 2
#endif #endif
@ -46,46 +43,8 @@ phys_addr_t sec_firmware_addr;
static int sec_firmware_get_data(const void *sec_firmware_img, static int sec_firmware_get_data(const void *sec_firmware_img,
const void **data, size_t *size) const void **data, size_t *size)
{ {
int conf_node_off, fw_node_off; return fit_get_data_conf_prop(sec_firmware_img, SEC_FIRMWARE_FIT_IMAGE,
char *conf_node_name = NULL; data, size);
char *desc;
int ret;
conf_node_name = SEC_FIRMWARE_FIT_CNF_NAME;
conf_node_off = fit_conf_get_node(sec_firmware_img, conf_node_name);
if (conf_node_off < 0) {
printf("SEC Firmware: %s: no such config\n", conf_node_name);
return -ENOENT;
}
fw_node_off = fit_conf_get_prop_node(sec_firmware_img, conf_node_off,
SEC_FIRMWARE_FIT_IMAGE);
if (fw_node_off < 0) {
printf("SEC Firmware: No '%s' in config\n",
SEC_FIRMWARE_FIT_IMAGE);
return -ENOLINK;
}
/* Verify secure firmware image */
if (!(fit_image_verify(sec_firmware_img, fw_node_off))) {
printf("SEC Firmware: Bad firmware image (bad CRC)\n");
return -EINVAL;
}
if (fit_image_get_data(sec_firmware_img, fw_node_off, data, size)) {
printf("SEC Firmware: Can't get %s subimage data/size",
SEC_FIRMWARE_FIT_IMAGE);
return -ENOENT;
}
ret = fit_get_desc(sec_firmware_img, fw_node_off, &desc);
if (ret)
printf("SEC Firmware: Can't get description\n");
else
printf("%s\n", desc);
return ret;
} }
/* /*
@ -124,18 +83,15 @@ static int sec_firmware_check_copy_loadable(const void *sec_firmware_img,
{ {
phys_addr_t sec_firmware_loadable_addr = 0; phys_addr_t sec_firmware_loadable_addr = 0;
int conf_node_off, ld_node_off, images; int conf_node_off, ld_node_off, images;
char *conf_node_name = NULL;
const void *data; const void *data;
size_t size; size_t size;
ulong load; ulong load;
const char *name, *str, *type; const char *name, *str, *type;
int len; int len;
conf_node_name = SEC_FIRMWARE_FIT_CNF_NAME; conf_node_off = fit_conf_get_node(sec_firmware_img, NULL);
conf_node_off = fit_conf_get_node(sec_firmware_img, conf_node_name);
if (conf_node_off < 0) { if (conf_node_off < 0) {
printf("SEC Firmware: %s: no such config\n", conf_node_name); puts("SEC Firmware: no config\n");
return -ENOENT; return -ENOENT;
} }

View file

@ -893,6 +893,7 @@ dtb-$(CONFIG_MX6ULL) += \
imx6ull-phytec-segin-ff-rdk-emmc.dtb \ imx6ull-phytec-segin-ff-rdk-emmc.dtb \
imx6ull-dart-6ul.dtb \ imx6ull-dart-6ul.dtb \
imx6ull-somlabs-visionsom.dtb \ imx6ull-somlabs-visionsom.dtb \
imx6ulz-bsh-smm-m2.dtb \
imx6ulz-14x14-evk.dtb imx6ulz-14x14-evk.dtb
dtb-$(CONFIG_ARCH_MX6) += \ dtb-$(CONFIG_ARCH_MX6) += \
@ -972,13 +973,15 @@ dtb-$(CONFIG_ARCH_IMX8M) += \
imx8mp-venice-gw74xx.dtb \ imx8mp-venice-gw74xx.dtb \
imx8mp-verdin-wifi-dev.dtb \ imx8mp-verdin-wifi-dev.dtb \
imx8mq-pico-pi.dtb \ imx8mq-pico-pi.dtb \
imx8mq-kontron-pitx-imx8m.dtb imx8mq-kontron-pitx-imx8m.dtb \
imx8mq-librem5-r4.dtb
dtb-$(CONFIG_ARCH_IMX9) += \ dtb-$(CONFIG_ARCH_IMX9) += \
imx93-11x11-evk.dtb imx93-11x11-evk.dtb
dtb-$(CONFIG_ARCH_IMXRT) += imxrt1050-evk.dtb \ dtb-$(CONFIG_ARCH_IMXRT) += imxrt1050-evk.dtb \
imxrt1020-evk.dtb imxrt1020-evk.dtb \
imxrt1170-evk.dtb \
dtb-$(CONFIG_RCAR_GEN2) += \ dtb-$(CONFIG_RCAR_GEN2) += \
r8a7790-lager-u-boot.dtb \ r8a7790-lager-u-boot.dtb \

View file

@ -0,0 +1,35 @@
// SPDX-License-Identifier: GPL-2.0
/*
* Copyright (C) 2022 BSH Hausgeraete GmbH
*
* Author: Michael Trimarchi <michael@amarulasolutions.com>
*/
&{/soc} {
u-boot,dm-pre-reloc;
};
&aips2 {
u-boot,dm-pre-reloc;
};
&iomuxc {
u-boot,dm-pre-reloc;
};
&iomuxc_snvs {
u-boot,dm-pre-reloc;
};
&uart4 {
u-boot,dm-pre-reloc;
};
&pinctrl_uart4 {
u-boot,dm-pre-reloc;
};
&gpmi {
u-boot,dm-spl;
u-boot,dm-pre-reloc;
};

View file

@ -0,0 +1,146 @@
// SPDX-License-Identifier: (GPL-2.0 OR MIT)
/*
* Copyright (C) 2021 BSH Hausgeraete GmbH
*/
/dts-v1/;
#include <dt-bindings/input/input.h>
#include "imx6ulz.dtsi"
/ {
model = "BSH SMM M2";
compatible = "bsh,imx6ulz-bsh-smm-m2", "fsl,imx6ull", "fsl,imx6ulz";
chosen {
stdout-path = &uart4;
};
usdhc2_pwrseq: usdhc2-pwrseq {
compatible = "mmc-pwrseq-simple";
reset-gpios = <&gpio2 21 GPIO_ACTIVE_LOW>;
};
};
&gpmi {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_gpmi_nand>;
nand-on-flash-bbt;
status = "okay";
};
&uart3 {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_uart3>;
uart-has-rtscts;
status = "okay";
bluetooth {
compatible = "brcm,bcm4330-bt";
max-speed = <3000000>;
shutdown-gpios = <&gpio1 1 GPIO_ACTIVE_HIGH>;
device-wakeup-gpios = <&gpio2 17 GPIO_ACTIVE_HIGH>;
host-wakeup-gpios = <&gpio2 13 GPIO_ACTIVE_HIGH>;
};
};
&uart4 {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_uart4>;
status = "okay";
};
&usbotg1 {
dr_mode = "peripheral";
srp-disable;
hnp-disable;
adp-disable;
status = "okay";
};
&usbphy1 {
fsl,tx-d-cal = <106>;
};
&usdhc2 {
#address-cells = <1>;
#size-cells = <0>;
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_wlan>;
bus-width = <4>;
no-1-8-v;
non-removable;
cap-power-off-card;
keep-power-in-suspend;
cap-sdio-irq;
mmc-pwrseq = <&usdhc2_pwrseq>;
status = "okay";
brcmf: wifi@1 {
reg = <1>;
compatible = "brcm,bcm4329-fmac";
interrupt-parent = <&gpio1>;
interrupts = <18 IRQ_TYPE_LEVEL_HIGH>;
interrupt-names = "host-wake";
};
};
&wdog1 {
status = "okay";
};
&iomuxc {
pinctrl_gpmi_nand: gpmi-nand {
fsl,pins = <
MX6UL_PAD_NAND_CLE__RAWNAND_CLE 0xb0b1
MX6UL_PAD_NAND_ALE__RAWNAND_ALE 0xb0b1
MX6UL_PAD_NAND_WP_B__RAWNAND_WP_B 0xb0b1
MX6UL_PAD_NAND_READY_B__RAWNAND_READY_B 0xb000
MX6UL_PAD_NAND_CE0_B__RAWNAND_CE0_B 0xb0b1
MX6UL_PAD_NAND_RE_B__RAWNAND_RE_B 0xb0b1
MX6UL_PAD_NAND_WE_B__RAWNAND_WE_B 0xb0b1
MX6UL_PAD_NAND_DATA00__RAWNAND_DATA00 0xb0b1
MX6UL_PAD_NAND_DATA01__RAWNAND_DATA01 0xb0b1
MX6UL_PAD_NAND_DATA02__RAWNAND_DATA02 0xb0b1
MX6UL_PAD_NAND_DATA03__RAWNAND_DATA03 0xb0b1
MX6UL_PAD_NAND_DATA04__RAWNAND_DATA04 0xb0b1
MX6UL_PAD_NAND_DATA05__RAWNAND_DATA05 0xb0b1
MX6UL_PAD_NAND_DATA06__RAWNAND_DATA06 0xb0b1
MX6UL_PAD_NAND_DATA07__RAWNAND_DATA07 0xb0b1
>;
};
pinctrl_uart3: uart3grp {
fsl,pins = <
MX6UL_PAD_UART3_TX_DATA__UART3_DCE_TX 0x1b0b1
MX6UL_PAD_UART3_RX_DATA__UART3_DCE_RX 0x1b099
MX6UL_PAD_UART3_RTS_B__UART3_DCE_RTS 0x1b0b1
MX6UL_PAD_UART3_CTS_B__UART3_DCE_CTS 0x1b099
MX6UL_PAD_GPIO1_IO01__GPIO1_IO01 0x79 /* BT_REG_ON */
MX6UL_PAD_SD1_CLK__GPIO2_IO17 0x100b1 /* BT_DEV_WAKE out */
MX6UL_PAD_ENET2_TX_EN__GPIO2_IO13 0x1b0b0 /* BT_HOST_WAKE in */
>;
};
pinctrl_uart4: uart4grp {
fsl,pins = <
MX6UL_PAD_UART4_TX_DATA__UART4_DCE_TX 0x1b0b1
MX6UL_PAD_UART4_RX_DATA__UART4_DCE_RX 0x1b0b1
>;
};
pinctrl_wlan: wlangrp {
fsl,pins = <
MX6UL_PAD_CSI_HSYNC__USDHC2_CMD 0x17059
MX6UL_PAD_CSI_VSYNC__USDHC2_CLK 0x10059
MX6UL_PAD_CSI_DATA00__USDHC2_DATA0 0x17059
MX6UL_PAD_CSI_DATA01__USDHC2_DATA1 0x17059
MX6UL_PAD_CSI_DATA02__USDHC2_DATA2 0x17059
MX6UL_PAD_CSI_DATA03__USDHC2_DATA3 0x17059
MX6UL_PAD_SD1_DATA3__GPIO2_IO21 0x79 /* WL_REG_ON */
MX6UL_PAD_UART2_CTS_B__GPIO1_IO22 0x100b1 /* WL_DEV_WAKE - WiFi_GPIO_4 - WiFi FW UART */
MX6UL_PAD_UART1_CTS_B__GPIO1_IO18 0x1b0b1 /* WL_HOST_WAKE - WIFI_GPIO_0 - OOB IRQ */
MX6UL_PAD_ENET1_RX_EN__OSC32K_32K_OUT 0x4001b031 /* OSC 32Khz wifi clk in */
>;
};
};

View file

@ -106,6 +106,10 @@
u-boot,off-on-delay-us = <20000>; u-boot,off-on-delay-us = <20000>;
}; };
&spba1 {
u-boot,dm-spl;
};
&uart2 { &uart2 {
u-boot,dm-spl; u-boot,dm-spl;
}; };

View file

@ -3,139 +3,4 @@
* Copyright (C) 2022 Marek Vasut <marex@denx.de> * Copyright (C) 2022 Marek Vasut <marex@denx.de>
*/ */
#include "imx8mp-u-boot.dtsi" #include "imx8mp-dhcom-u-boot.dtsi"
/ {
aliases {
eeprom0 = &eeprom0;
eeprom1 = &eeprom1;
mmc0 = &usdhc2; /* MicroSD */
mmc1 = &usdhc3; /* eMMC */
mmc2 = &usdhc1; /* SDIO */
};
config {
dh,ram-coding-gpios = <&gpio3 22 0>, <&gpio3 23 0>, <&gpio3 24 0>;
};
wdt-reboot {
compatible = "wdt-reboot";
wdt = <&wdog1>;
u-boot,dm-spl;
};
};
&buck4 {
u-boot,dm-spl;
};
&buck5 {
u-boot,dm-spl;
};
&eqos {
/delete-property/ assigned-clocks;
/delete-property/ assigned-clock-parents;
/delete-property/ assigned-clock-rates;
};
&gpio1 {
u-boot,dm-spl;
};
&gpio2 {
u-boot,dm-spl;
};
&gpio3 {
u-boot,dm-spl;
};
&gpio4 {
u-boot,dm-spl;
};
&gpio5 {
u-boot,dm-spl;
};
&i2c3 {
u-boot,dm-spl;
};
&pinctrl_i2c3 {
u-boot,dm-spl;
};
&pinctrl_i2c3_gpio {
u-boot,dm-spl;
};
&pinctrl_pmic {
u-boot,dm-spl;
};
&pinctrl_uart1 {
u-boot,dm-spl;
};
&pinctrl_usdhc2 {
u-boot,dm-spl;
};
&pinctrl_usdhc2_100mhz {
u-boot,dm-spl;
};
&pinctrl_usdhc2_200mhz {
u-boot,dm-spl;
};
&pinctrl_usdhc2_vmmc {
u-boot,dm-spl;
};
&pinctrl_usdhc3 {
u-boot,dm-spl;
};
&pinctrl_usdhc3_100mhz {
u-boot,dm-spl;
};
&pinctrl_usdhc3_100mhz {
u-boot,dm-spl;
};
&pmic {
u-boot,dm-spl;
regulators {
u-boot,dm-spl;
};
};
&reg_usdhc2_vmmc {
u-boot,dm-spl;
};
&uart1 {
u-boot,dm-spl;
};
/* SDIO WiFi */
&usdhc1 {
status = "disabled";
};
&usdhc2 {
u-boot,dm-spl;
};
&usdhc3 {
u-boot,dm-spl;
};
&wdog1 {
u-boot,dm-spl;
};

View file

@ -1,18 +1,23 @@
// SPDX-License-Identifier: (GPL-2.0+ OR MIT) // SPDX-License-Identifier: (GPL-2.0+ OR MIT)
/* /*
* Copyright (C) 2022 Marek Vasut <marex@denx.de> * Copyright (C) 2022 Marek Vasut <marex@denx.de>
*
* DHCOM iMX8MP variant:
* DHCM-iMX8ML8-C160-R409-F1638-SPI16-GE-CAN2-SD-RTC-WBTA-ADC-T-RGB-CSI2-HS-I-01D2
* DHCOM PCB number: 660-100 or newer
* PDK2 PCB number: 516-400 or newer
*/ */
/dts-v1/; /dts-v1/;
#include <dt-bindings/leds/common.h> #include <dt-bindings/leds/common.h>
#include <dt-bindings/net/qca-ar803x.h>
#include <dt-bindings/phy/phy-imx8-pcie.h> #include <dt-bindings/phy/phy-imx8-pcie.h>
#include "imx8mp-dhcom-som.dtsi" #include "imx8mp-dhcom-som.dtsi"
/ { / {
model = "DH electronics i.MX8M Plus DHCOM Premium Developer Kit (2)"; model = "DH electronics i.MX8M Plus DHCOM Premium Developer Kit (2)";
compatible = "dh,imx8mp-dhcom-pdk2", "fsl,imx8mp"; compatible = "dh,imx8mp-dhcom-pdk2", "dh,imx8mp-dhcom-som",
"fsl,imx8mp";
chosen { chosen {
stdout-path = &uart1; stdout-path = &uart1;

View file

@ -70,7 +70,7 @@
&ecspi1 { &ecspi1 {
pinctrl-names = "default"; pinctrl-names = "default";
pinctrl-0 = <&pinctrl_ecspi1>; pinctrl-0 = <&pinctrl_ecspi1>;
cs-gpios = <&gpio5 9 GPIO_ACTIVE_LOW>; cs-gpios = <&gpio5 17 GPIO_ACTIVE_LOW>;
status = "disabled"; status = "disabled";
}; };
@ -415,8 +415,8 @@
pinctrl-names = "default", "gpio"; pinctrl-names = "default", "gpio";
pinctrl-0 = <&pinctrl_i2c5>; pinctrl-0 = <&pinctrl_i2c5>;
pinctrl-1 = <&pinctrl_i2c5_gpio>; pinctrl-1 = <&pinctrl_i2c5_gpio>;
scl-gpios = <&gpio5 26 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>; scl-gpios = <&gpio3 26 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
sda-gpios = <&gpio5 27 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>; sda-gpios = <&gpio3 27 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
status = "okay"; status = "okay";
}; };
@ -660,10 +660,10 @@
pinctrl_ecspi1: dhcom-ecspi1-grp { pinctrl_ecspi1: dhcom-ecspi1-grp {
fsl,pins = < fsl,pins = <
MX8MP_IOMUXC_ECSPI1_SCLK__ECSPI1_SCLK 0x44 MX8MP_IOMUXC_I2C1_SCL__ECSPI1_SCLK 0x44
MX8MP_IOMUXC_ECSPI1_MOSI__ECSPI1_MOSI 0x44 MX8MP_IOMUXC_I2C1_SDA__ECSPI1_MOSI 0x44
MX8MP_IOMUXC_ECSPI1_MISO__ECSPI1_MISO 0x44 MX8MP_IOMUXC_I2C2_SCL__ECSPI1_MISO 0x44
MX8MP_IOMUXC_ECSPI1_SS0__GPIO5_IO09 0x40 MX8MP_IOMUXC_I2C2_SDA__GPIO5_IO17 0x40
>; >;
}; };

View file

@ -0,0 +1,141 @@
// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
/*
* Copyright (C) 2022 Marek Vasut <marex@denx.de>
*/
#include "imx8mp-u-boot.dtsi"
/ {
aliases {
eeprom0 = &eeprom0;
eeprom1 = &eeprom1;
mmc0 = &usdhc2; /* MicroSD */
mmc1 = &usdhc3; /* eMMC */
mmc2 = &usdhc1; /* SDIO */
};
config {
dh,ram-coding-gpios = <&gpio3 22 0>, <&gpio3 23 0>, <&gpio3 24 0>;
};
wdt-reboot {
compatible = "wdt-reboot";
wdt = <&wdog1>;
u-boot,dm-spl;
};
};
&buck4 {
u-boot,dm-spl;
};
&buck5 {
u-boot,dm-spl;
};
&eqos {
/delete-property/ assigned-clocks;
/delete-property/ assigned-clock-parents;
/delete-property/ assigned-clock-rates;
};
&gpio1 {
u-boot,dm-spl;
};
&gpio2 {
u-boot,dm-spl;
};
&gpio3 {
u-boot,dm-spl;
};
&gpio4 {
u-boot,dm-spl;
};
&gpio5 {
u-boot,dm-spl;
};
&i2c3 {
u-boot,dm-spl;
};
&pinctrl_i2c3 {
u-boot,dm-spl;
};
&pinctrl_i2c3_gpio {
u-boot,dm-spl;
};
&pinctrl_pmic {
u-boot,dm-spl;
};
&pinctrl_uart1 {
u-boot,dm-spl;
};
&pinctrl_usdhc2 {
u-boot,dm-spl;
};
&pinctrl_usdhc2_100mhz {
u-boot,dm-spl;
};
&pinctrl_usdhc2_200mhz {
u-boot,dm-spl;
};
&pinctrl_usdhc2_vmmc {
u-boot,dm-spl;
};
&pinctrl_usdhc3 {
u-boot,dm-spl;
};
&pinctrl_usdhc3_100mhz {
u-boot,dm-spl;
};
&pinctrl_usdhc3_100mhz {
u-boot,dm-spl;
};
&pmic {
u-boot,dm-spl;
regulators {
u-boot,dm-spl;
};
};
&reg_usdhc2_vmmc {
u-boot,dm-spl;
};
&uart1 {
u-boot,dm-spl;
};
/* SDIO WiFi */
&usdhc1 {
status = "disabled";
};
&usdhc2 {
u-boot,dm-spl;
};
&usdhc3 {
u-boot,dm-spl;
};
&wdog1 {
u-boot,dm-spl;
};

View file

@ -0,0 +1,24 @@
// SPDX-License-Identifier: (GPL-2.0 OR MIT)
#include "imx8mq-u-boot.dtsi"
&pinctrl_uart1 {
u-boot,dm-spl;
};
&uart1 { /* console */
u-boot,dm-spl;
};
&binman {
/delete-node/ signed-hdmi;
signed-hdmi {
filename = "signed_hdmi.bin";
signed-dp-imx8m {
filename = "signed_dp_imx8m.bin";
type = "blob-ext";
};
};
};

View file

@ -0,0 +1,35 @@
// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
// Copyright (C) 2020 Purism SPC <kernel@puri.sm>
/dts-v1/;
#include "imx8mq-librem5.dtsi"
/ {
model = "Purism Librem 5r4";
compatible = "purism,librem5r4", "purism,librem5", "fsl,imx8mq";
};
&accel_gyro {
mount-matrix = "1", "0", "0",
"0", "1", "0",
"0", "0", "-1";
};
&bat {
maxim,rsns-microohm = <1667>;
};
&bq25895 {
ti,battery-regulation-voltage = <4200000>; /* uV */
ti,charge-current = <1500000>; /* uA */
ti,termination-current = <144000>; /* uA */
};
&led_backlight {
led-max-microamp = <25000>;
};
&proximity {
proximity-near-level = <10>;
};

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,94 @@
// SPDX-License-Identifier: (GPL-2.0+ OR BSD-3-Clause)
/*
* Copyright (C) 2022
* Author(s): Jesse Taube <Mr.Bossman075@gmail.com>
* Giulio Benetti <giulio.benetti@benettiengineering.com>
*/
/ {
chosen {
u-boot,dm-spl;
};
clocks {
u-boot,dm-spl;
};
soc {
u-boot,dm-spl;
};
};
&osc {
u-boot,dm-spl;
};
&rcosc16M {
u-boot,dm-spl;
};
&osc32k {
u-boot,dm-spl;
};
&clks {
u-boot,dm-spl;
};
&gpio1 {
u-boot,dm-spl;
};
&gpio2 {
u-boot,dm-spl;
};
&gpio3 {
u-boot,dm-spl;
};
&gpio4 {
u-boot,dm-spl;
};
&gpio5 {
u-boot,dm-spl;
};
&gpt1 {
u-boot,dm-spl;
};
&lpuart1 { /* console */
u-boot,dm-spl;
};
&semc {
u-boot,dm-spl;
bank1: bank@0 {
u-boot,dm-spl;
};
};
&iomuxc {
u-boot,dm-spl;
imxrt1170-evk {
u-boot,dm-spl;
pinctrl_lpuart1: lpuart1grp {
u-boot,dm-spl;
};
pinctrl_usdhc0: usdhc0grp {
u-boot,dm-spl;
};
pinctrl_semc: semcgrp {
u-boot,dm-spl;
};
};
};
&usdhc1 {
u-boot,dm-spl;
};

View file

@ -0,0 +1,250 @@
// SPDX-License-Identifier: (GPL-2.0+ OR BSD-3-Clause)
/*
* Copyright (C) 2022
* Author(s): Jesse Taube <Mr.Bossman075@gmail.com>
* Giulio Benetti <giulio.benetti@benettiengineering.com>
*/
/dts-v1/;
#include "imxrt1170.dtsi"
#include "imxrt1170-evk-u-boot.dtsi"
#include "imxrt1170-pinfunc.h"
/ {
model = "NXP imxrt1170-evk board";
compatible = "fsl,imxrt1170-evk", "fsl,imxrt1170";
chosen {
stdout-path = "serial0:115200n8";
tick-timer = &gpt1;
};
memory {
device_type = "memory";
reg = <0x20240000 0xf0000 0x80000000 0x4000000>;
ocram: ocram@20240000 {
device_type = "memory";
reg = <0x20240000 0xf0000>;
};
sdram: sdram@80000000 {
device_type = "memory";
reg = <0x80000000 0x4000000>;
};
};
};
&lpuart1 { /* console */
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_lpuart1>;
status = "okay";
};
&semc {
/*
* Memory configuration from sdram datasheet IS42S16160J-6BLI
*/
fsl,sdram-mux = /bits/ 8 <MUX_A8_SDRAM_A8
0
0
0
0
0>;
fsl,sdram-control = /bits/ 8 <MEM_WIDTH_32BITS
BL_8
COL_9BITS
CL_3>;
fsl,sdram-timing = /bits/ 8 <0x2
0x2
0xd
0x0
0x8
0x7
0x0d
0x0b
0x00
0x00
0x00
0x0A
0x08
0x09>;
bank1: bank@0 {
fsl,base-address = <0x80000000>;
fsl,memory-size = <MEM_SIZE_64M>;
};
};
&iomuxc {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_lpuart1>;
imxrt1170-evk {
pinctrl_lpuart1: lpuart1grp {
fsl,pins = <
IOMUXC_GPIO_AD_24_LPUART1_TXD 0xf1
IOMUXC_GPIO_AD_25_LPUART1_RXD 0xf1
>;
};
pinctrl_usdhc0: usdhc0grp {
fsl,pins = <
IOMUXC_GPIO_AD_32_USDHC1_CD_B
0x1B000
IOMUXC_GPIO_AD_34_USDHC1_VSELECT
0xB069
IOMUXC_GPIO_SD_B1_00_USDHC1_CMD
0x17061
IOMUXC_GPIO_SD_B1_01_USDHC1_CLK
0x17061
IOMUXC_GPIO_SD_B1_05_USDHC1_DATA3
0x17061
IOMUXC_GPIO_SD_B1_04_USDHC1_DATA2
0x17061
IOMUXC_GPIO_SD_B1_03_USDHC1_DATA1
0x17061
IOMUXC_GPIO_SD_B1_02_USDHC1_DATA0
0x17061
>;
};
pinctrl_semc: semcgrp {
fsl,pins = <
IOMUXC_GPIO_EMC_B1_00_SEMC_DATA00
8 /* SEMC_D0 */
IOMUXC_GPIO_EMC_B1_01_SEMC_DATA01
8 /* SEMC_D1 */
IOMUXC_GPIO_EMC_B1_02_SEMC_DATA02
8 /* SEMC_D2 */
IOMUXC_GPIO_EMC_B1_03_SEMC_DATA03
8 /* SEMC_D3 */
IOMUXC_GPIO_EMC_B1_04_SEMC_DATA04
8 /* SEMC_D4 */
IOMUXC_GPIO_EMC_B1_05_SEMC_DATA05
8 /* SEMC_D5 */
IOMUXC_GPIO_EMC_B1_06_SEMC_DATA06
8 /* SEMC_D6 */
IOMUXC_GPIO_EMC_B1_07_SEMC_DATA07
8 /* SEMC_D7 */
IOMUXC_GPIO_EMC_B1_08_SEMC_DM00
8 /* SEMC_DM0 */
IOMUXC_GPIO_EMC_B1_09_SEMC_ADDR00
8 /* SEMC_A0 */
IOMUXC_GPIO_EMC_B1_10_SEMC_ADDR01
8 /* SEMC_A1 */
IOMUXC_GPIO_EMC_B1_11_SEMC_ADDR02
8 /* SEMC_A2 */
IOMUXC_GPIO_EMC_B1_12_SEMC_ADDR03
8 /* SEMC_A3 */
IOMUXC_GPIO_EMC_B1_13_SEMC_ADDR04
8 /* SEMC_A4 */
IOMUXC_GPIO_EMC_B1_14_SEMC_ADDR05
8 /* SEMC_A5 */
IOMUXC_GPIO_EMC_B1_15_SEMC_ADDR06
8 /* SEMC_A6 */
IOMUXC_GPIO_EMC_B1_16_SEMC_ADDR07
8 /* SEMC_A7 */
IOMUXC_GPIO_EMC_B1_17_SEMC_ADDR08
8 /* SEMC_A8 */
IOMUXC_GPIO_EMC_B1_18_SEMC_ADDR09
8 /* SEMC_A9 */
IOMUXC_GPIO_EMC_B1_19_SEMC_ADDR11
8 /* SEMC_A11 */
IOMUXC_GPIO_EMC_B1_20_SEMC_ADDR12
8 /* SEMC_A12 */
IOMUXC_GPIO_EMC_B1_21_SEMC_BA0
8 /* SEMC_BA0 */
IOMUXC_GPIO_EMC_B1_22_SEMC_BA1
8 /* SEMC_BA1 */
IOMUXC_GPIO_EMC_B1_23_SEMC_ADDR10
8 /* SEMC_A10 */
IOMUXC_GPIO_EMC_B1_24_SEMC_CAS
8 /* SEMC_CAS */
IOMUXC_GPIO_EMC_B1_25_SEMC_RAS
8 /* SEMC_RAS */
IOMUXC_GPIO_EMC_B1_26_SEMC_CLK
8 /* SEMC_CLK */
IOMUXC_GPIO_EMC_B1_27_SEMC_CKE
8 /* SEMC_CKE */
IOMUXC_GPIO_EMC_B1_28_SEMC_WE
8 /* SEMC_WE */
IOMUXC_GPIO_EMC_B1_29_SEMC_CS0
8 /* SEMC_CS0 */
IOMUXC_GPIO_EMC_B1_30_SEMC_DATA08
8 /* SEMC_D8 */
IOMUXC_GPIO_EMC_B1_31_SEMC_DATA09
8 /* SEMC_D9 */
IOMUXC_GPIO_EMC_B1_32_SEMC_DATA10
8 /* SEMC_D10 */
IOMUXC_GPIO_EMC_B1_33_SEMC_DATA11
8 /* SEMC_D11 */
IOMUXC_GPIO_EMC_B1_34_SEMC_DATA12
8 /* SEMC_D12 */
IOMUXC_GPIO_EMC_B1_35_SEMC_DATA13
8 /* SEMC_D13 */
IOMUXC_GPIO_EMC_B1_36_SEMC_DATA14
8 /* SEMC_D14 */
IOMUXC_GPIO_EMC_B1_37_SEMC_DATA15
8 /* SEMC_D15 */
IOMUXC_GPIO_EMC_B1_08_SEMC_DM00
8 /* SEMC_DM00 */
IOMUXC_GPIO_EMC_B1_38_SEMC_DM01
8 /* SEMC_DM01 */
IOMUXC_GPIO_EMC_B2_08_SEMC_DM02
4 /* SEMC_DM02 */
IOMUXC_GPIO_EMC_B2_17_SEMC_DM03
8 /* SEMC_DM03 */
IOMUXC_GPIO_EMC_B2_00_SEMC_DATA16
8 /* SEMC_D16 */
IOMUXC_GPIO_EMC_B2_01_SEMC_DATA17
8 /* SEMC_D17 */
IOMUXC_GPIO_EMC_B2_02_SEMC_DATA18
8 /* SEMC_D18 */
IOMUXC_GPIO_EMC_B2_03_SEMC_DATA19
8 /* SEMC_D19 */
IOMUXC_GPIO_EMC_B2_04_SEMC_DATA20
8 /* SEMC_D20 */
IOMUXC_GPIO_EMC_B2_05_SEMC_DATA21
8 /* SEMC_D21 */
IOMUXC_GPIO_EMC_B2_06_SEMC_DATA22
8 /* SEMC_D22 */
IOMUXC_GPIO_EMC_B2_07_SEMC_DATA23
8 /* SEMC_D23 */
IOMUXC_GPIO_EMC_B2_09_SEMC_DATA24
8 /* SEMC_D24 */
IOMUXC_GPIO_EMC_B2_10_SEMC_DATA25
8 /* SEMC_D25 */
IOMUXC_GPIO_EMC_B2_11_SEMC_DATA26
4 /* SEMC_D26 */
IOMUXC_GPIO_EMC_B2_12_SEMC_DATA27
8 /* SEMC_D27 */
IOMUXC_GPIO_EMC_B2_13_SEMC_DATA28
8 /* SEMC_D28 */
IOMUXC_GPIO_EMC_B2_14_SEMC_DATA29
8 /* SEMC_D29 */
IOMUXC_GPIO_EMC_B2_15_SEMC_DATA30
8 /* SEMC_D30 */
IOMUXC_GPIO_EMC_B2_16_SEMC_DATA31
8 /* SEMC_D31 */
IOMUXC_GPIO_EMC_B1_39_SEMC_DQS
(IMX_PAD_SION | 8) /* SEMC_DQS */
>;
};
};
};
&gpt1 {
status = "okay";
};
&usdhc1 {
pinctrl-names = "default", "state_100mhz", "state_200mhz", "sleep";
pinctrl-0 = <&pinctrl_usdhc0>;
pinctrl-1 = <&pinctrl_usdhc0>;
pinctrl-2 = <&pinctrl_usdhc0>;
pinctrl-3 = <&pinctrl_usdhc0>;
status = "okay";
broken-cd;
};

File diff suppressed because it is too large Load diff

257
arch/arm/dts/imxrt1170.dtsi Normal file
View file

@ -0,0 +1,257 @@
// SPDX-License-Identifier: (GPL-2.0+ OR BSD-3-Clause)
/*
* Copyright (C) 2022
* Author(s): Jesse Taube <Mr.Bossman075@gmail.com>
* Giulio Benetti <giulio.benetti@benettiengineering.com>
*/
#include "armv7-m.dtsi"
#include <dt-bindings/interrupt-controller/arm-gic.h>
#include <dt-bindings/clock/imxrt1170-clock.h>
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/memory/imxrt-sdram.h>
/ {
#address-cells = <1>;
#size-cells = <1>;
aliases {
gpio0 = &gpio1;
gpio1 = &gpio2;
gpio2 = &gpio3;
gpio3 = &gpio4;
gpio4 = &gpio5;
gpio5 = &gpio6;
gpio6 = &gpio7;
gpio7 = &gpio8;
gpio8 = &gpio9;
gpio9 = &gpio10;
gpio10 = &gpio11;
gpio11 = &gpio12;
gpio12 = &gpio13;
mmc0 = &usdhc1;
serial0 = &lpuart1;
};
clocks {
osc: osc {
compatible = "fsl,imx-osc", "fixed-clock";
#clock-cells = <0>;
clock-frequency = <24000000>;
};
rcosc16M: rcosc16M {
compatible = "fsl,imx-osc", "fixed-clock";
#clock-cells = <0>;
clock-frequency = <16000000>;
};
osc32k: osc32k {
compatible = "fsl,imx-osc", "fixed-clock";
#clock-cells = <0>;
clock-frequency = <32768>;
};
};
soc {
semc: semc@400d4000 {
compatible = "fsl,imxrt-semc";
reg = <0x400d4000 0x4000>;
interrupts = <132>;
clocks = <&clks IMXRT1170_CLK_SEMC>;
pinctrl-0 = <&pinctrl_semc>;
pinctrl-names = "default";
status = "okay";
};
lpuart1: serial@4007c000 {
compatible = "fsl,imxrt-lpuart";
reg = <0x4007c000 0x4000>;
interrupts = <20>;
clocks = <&clks IMXRT1170_CLK_LPUART1>;
clock-names = "per";
status = "disabled";
};
iomuxc: iomuxc@400e8000 {
compatible = "fsl,imxrt-iomuxc";
reg = <0x400e8000 0x4000>;
fsl,mux_mask = <0x7>;
};
anatop: anatop@40c84000 {
compatible = "fsl,imxrt-anatop";
reg = <0x40c84000 0x4000>;
};
clks: ccm@40cc0000 {
compatible = "fsl,imxrt1170-ccm";
reg = <0x40cc0000 0x4000>;
#clock-cells = <1>;
};
usdhc1: usdhc@40418000 {
compatible = "fsl,imxrt-usdhc";
reg = <0x40418000 0x10000>;
interrupts = <133>;
clocks = <&clks IMXRT1170_CLK_USDHC1>;
clock-names = "per";
bus-width = <4>;
fsl,tuning-start-tap = <20>;
fsl,tuning-step= <2>;
status = "disabled";
};
gpio1: gpio@4012c000 {
compatible = "fsl,imxrt-gpio", "fsl,imx35-gpio";
reg = <0x4012c000 0x4000>;
interrupts = <100>,
<101>;
gpio-controller;
#gpio-cells = <2>;
interrupt-controller;
#interrupt-cells = <2>;
};
gpio2: gpio@40130000 {
compatible = "fsl,imxrt-gpio", "fsl,imx35-gpio";
reg = <0x40130000 0x4000>;
interrupts = <102>,
<103>;
gpio-controller;
#gpio-cells = <2>;
interrupt-controller;
#interrupt-cells = <2>;
};
gpio3: gpio@40134000 {
compatible = "fsl,imxrt-gpio", "fsl,imx35-gpio";
reg = <0x40134000 0x4000>;
interrupts = <104>,
<105>;
gpio-controller;
#gpio-cells = <2>;
interrupt-controller;
#interrupt-cells = <2>;
};
gpio4: gpio@40138000 {
compatible = "fsl,imxrt-gpio", "fsl,imx35-gpio";
reg = <0x40138000 0x4000>;
interrupts = <106>,
<107>;
gpio-controller;
#gpio-cells = <2>;
interrupt-controller;
#interrupt-cells = <2>;
};
gpio5: gpio@4013c000 {
compatible = "fsl,imxrt-gpio", "fsl,imx35-gpio";
reg = <0x4013c000 0x4000>;
interrupts = <108>,
<109>;
gpio-controller;
#gpio-cells = <2>;
interrupt-controller;
#interrupt-cells = <2>;
};
gpio6: gpio@40140000 {
compatible = "fsl,imxrt-gpio", "fsl,imx35-gpio";
reg = <0x40140000 0x4000>;
interrupts = <61>,
<62>;
gpio-controller;
#gpio-cells = <2>;
interrupt-controller;
#interrupt-cells = <2>;
};
gpio7: gpio@40c5c000 {
compatible = "fsl,imxrt-gpio", "fsl,imx35-gpio";
reg = <0x40c5c000 0x4000>;
interrupts = <99>,
<99>;
gpio-controller;
#gpio-cells = <2>;
interrupt-controller;
#interrupt-cells = <2>;
};
gpio8: gpio@40c60000 {
compatible = "fsl,imxrt-gpio", "fsl,imx35-gpio";
reg = <0x40c60000 0x4000>;
interrupts = <99>,
<99>;
gpio-controller;
#gpio-cells = <2>;
interrupt-controller;
#interrupt-cells = <2>;
};
gpio9: gpio@40c64000 {
compatible = "fsl,imxrt-gpio", "fsl,imx35-gpio";
reg = <0x40c64000 0x4000>;
interrupts = <99>,
<99>;
gpio-controller;
#gpio-cells = <2>;
interrupt-controller;
#interrupt-cells = <2>;
};
gpio10: gpio@40c68000 {
compatible = "fsl,imxrt-gpio", "fsl,imx35-gpio";
reg = <0x40c68000 0x4000>;
interrupts = <99>,
<99>;
gpio-controller;
#gpio-cells = <2>;
interrupt-controller;
#interrupt-cells = <2>;
};
gpio11: gpio@40c6c000 {
compatible = "fsl,imxrt-gpio", "fsl,imx35-gpio";
reg = <0x40c6c000 0x4000>;
interrupts = <99>,
<99>;
gpio-controller;
#gpio-cells = <2>;
interrupt-controller;
#interrupt-cells = <2>;
};
gpio12: gpio@40c70000 {
compatible = "fsl,imxrt-gpio", "fsl,imx35-gpio";
reg = <0x40c70000 0x4000>;
interrupts = <61>,
<62>; // only cm4
gpio-controller;
#gpio-cells = <2>;
interrupt-controller;
#interrupt-cells = <2>;
};
gpio13: gpio@40ca0000 {
compatible = "fsl,imxrt-gpio", "fsl,imx35-gpio";
reg = <0x40ca0000 0x4000>;
interrupts = <93>,
<93>;
gpio-controller;
#gpio-cells = <2>;
interrupt-controller;
#interrupt-cells = <2>;
};
gpt1: gpt1@400ec000 {
compatible = "fsl,imxrt-gpt";
reg = <0x400ec000 0x4000>;
interrupts = <119>;
clocks = <&clks IMXRT1170_CLK_GPT1>;
status = "disabled";
};
};
};

View file

@ -3,6 +3,8 @@
* (C) Copyright 2019 Rockchip Electronics Co., Ltd * (C) Copyright 2019 Rockchip Electronics Co., Ltd
*/ */
#include "rockchip-u-boot.dtsi"
/ { / {
aliases { aliases {
mmc0 = &emmc; mmc0 = &emmc;

View file

@ -46,8 +46,8 @@
}; };
rpc: rpc@ee200000 { rpc: spi@ee200000 {
compatible = "renesas,rpc-r7s72100", "renesas,rpc"; compatible = "renesas,r7s72100-rpc-if";
reg = <0x3fefa000 0x100>, <0x18000000 0x08000000>; reg = <0x3fefa000 0x100>, <0x18000000 0x08000000>;
bank-width = <2>; bank-width = <2>;
num-cs = <1>; num-cs = <1>;

View file

@ -10,8 +10,8 @@
/ { / {
soc { soc {
rpc: rpc@ee200000 { rpc: spi@ee200000 {
compatible = "renesas,rcar-gen3-rpc", "renesas,rpc-r8a774c0"; compatible = "renesas,r8a774c0-rpc-if", "renesas,rcar-gen3-rpc-if";
reg = <0 0xee200000 0 0x100>, <0 0x08000000 0 0x04000000>; reg = <0 0xee200000 0 0x100>, <0 0x08000000 0 0x04000000>;
clocks = <&cpg CPG_MOD 917>; clocks = <&cpg CPG_MOD 917>;
bank-width = <2>; bank-width = <2>;

View file

@ -13,8 +13,8 @@
/ { / {
soc { soc {
rpc: rpc@ee200000 { rpc: spi@ee200000 {
compatible = "renesas,rpc-r8a7795", "renesas,rpc"; compatible = "renesas,r8a7795-rpc-if", "renesas,rcar-gen3-rpc-if";
reg = <0 0xee200000 0 0x100>, <0 0x08000000 0 0>; reg = <0 0xee200000 0 0x100>, <0 0x08000000 0 0>;
clocks = <&cpg CPG_MOD 917>; clocks = <&cpg CPG_MOD 917>;
bank-width = <2>; bank-width = <2>;

View file

@ -13,8 +13,8 @@
/ { / {
soc { soc {
rpc: rpc@ee200000 { rpc: spi@ee200000 {
compatible = "renesas,rpc-r8a7796", "renesas,rpc"; compatible = "renesas,r8a7796-rpc-if", "renesas,rcar-gen3-rpc-if";
reg = <0 0xee200000 0 0x100>, <0 0x08000000 0 0>; reg = <0 0xee200000 0 0x100>, <0 0x08000000 0 0>;
clocks = <&cpg CPG_MOD 917>; clocks = <&cpg CPG_MOD 917>;
bank-width = <2>; bank-width = <2>;

View file

@ -13,8 +13,8 @@
/ { / {
soc { soc {
rpc: rpc@ee200000 { rpc: spi@ee200000 {
compatible = "renesas,rpc-r8a77965", "renesas,rpc"; compatible = "renesas,r8a77965-rpc-if", "renesas,rcar-gen3-rpc-if";
reg = <0 0xee200000 0 0x100>, <0 0x08000000 0 0>; reg = <0 0xee200000 0 0x100>, <0 0x08000000 0 0>;
clocks = <&cpg CPG_MOD 917>; clocks = <&cpg CPG_MOD 917>;
bank-width = <2>; bank-width = <2>;

View file

@ -13,8 +13,8 @@
/ { / {
soc { soc {
rpc: rpc@ee200000 { rpc: spi@ee200000 {
compatible = "renesas,rpc-r8a77970", "renesas,rpc"; compatible = "renesas,r8a77970-rpc-if", "renesas,rcar-gen3-rpc-if";
reg = <0 0xee200000 0 0x100>, <0 0x08000000 0 0>; reg = <0 0xee200000 0 0x100>, <0 0x08000000 0 0>;
clocks = <&cpg CPG_MOD 917>; clocks = <&cpg CPG_MOD 917>;
bank-width = <2>; bank-width = <2>;

View file

@ -13,8 +13,8 @@
/ { / {
soc { soc {
rpc: rpc@ee200000 { rpc: spi@ee200000 {
compatible = "renesas,rpc-r8a77980", "renesas,rpc"; compatible = "renesas,r8a77980-rpc-if", "renesas,rcar-gen3-rpc-if";
reg = <0 0xee200000 0 0x100>, <0 0x08000000 0 0>; reg = <0 0xee200000 0 0x100>, <0 0x08000000 0 0>;
clocks = <&cpg CPG_MOD 917>; clocks = <&cpg CPG_MOD 917>;
bank-width = <2>; bank-width = <2>;

View file

@ -9,8 +9,8 @@
/ { / {
soc { soc {
rpc: rpc@ee200000 { rpc: spi@ee200000 {
compatible = "renesas,rpc-r8a77990", "renesas,rpc"; compatible = "renesas,r8a77990-rpc-if", "renesas,rcar-gen3-rpc-if";
reg = <0 0xee200000 0 0x100>, <0 0x08000000 0 0>; reg = <0 0xee200000 0 0x100>, <0 0x08000000 0 0>;
clocks = <&cpg CPG_MOD 917>; clocks = <&cpg CPG_MOD 917>;
bank-width = <2>; bank-width = <2>;

View file

@ -9,8 +9,8 @@
/ { / {
soc { soc {
rpc: rpc@ee200000 { rpc: spi@ee200000 {
compatible = "renesas,rpc-r8a77995", "renesas,rpc"; compatible = "renesas,r8a77995-rpc-if", "renesas,rcar-gen3-rpc-if";
reg = <0 0xee200000 0 0x100>, <0 0x08000000 0 0>; reg = <0 0xee200000 0 0x100>, <0 0x08000000 0 0>;
clocks = <&cpg CPG_MOD 917>; clocks = <&cpg CPG_MOD 917>;
bank-width = <2>; bank-width = <2>;

View file

@ -10,7 +10,7 @@
/ { / {
soc { soc {
rpc: spi@ee200000 { rpc: spi@ee200000 {
compatible = "renesas,rpc-r8a779a0", "renesas,rcar-gen3-rpc"; compatible = "renesas,r8a779a0-rpc-if", "renesas,rcar-gen3-rpc-if";
reg = <0 0xee200000 0 0x200>, <0 0x08000000 0 0x04000000>; reg = <0 0xee200000 0 0x200>, <0 0x08000000 0 0x04000000>;
clocks = <&cpg CPG_MOD 629>; clocks = <&cpg CPG_MOD 629>;
bank-width = <2>; bank-width = <2>;

View file

@ -56,7 +56,7 @@
}; };
}; };
#ifdef CONFIG_ROCKCHIP_SPI_IMAGE #if defined(CONFIG_ROCKCHIP_SPI_IMAGE) && defined(CONFIG_HAS_ROM)
&binman { &binman {
rom { rom {
filename = "u-boot.rom"; filename = "u-boot.rom";

View file

@ -109,48 +109,48 @@
ports = <&vopl_out>, <&vopb_out>; ports = <&vopl_out>, <&vopb_out>;
}; };
sdmmc: dwmmc@ff0c0000 { sdmmc: mmc@ff0c0000 {
compatible = "rockchip,rk3288-dw-mshc"; compatible = "rockchip,rk3288-dw-mshc";
max-frequency = <150000000>; max-frequency = <150000000>;
clocks = <&cru HCLK_SDMMC>, <&cru SCLK_SDMMC>, clocks = <&cru HCLK_SDMMC>, <&cru SCLK_SDMMC>,
<&cru SCLK_SDMMC_DRV>, <&cru SCLK_SDMMC_SAMPLE>; <&cru SCLK_SDMMC_DRV>, <&cru SCLK_SDMMC_SAMPLE>;
clock-names = "biu", "ciu", "ciu_drv", "ciu_sample"; clock-names = "biu", "ciu", "ciu-drive", "ciu-sample";
fifo-depth = <0x100>; fifo-depth = <0x100>;
interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH>; interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH>;
reg = <0xff0c0000 0x4000>; reg = <0xff0c0000 0x4000>;
status = "disabled"; status = "disabled";
}; };
sdio0: dwmmc@ff0d0000 { sdio0: mmc@ff0d0000 {
compatible = "rockchip,rk3288-dw-mshc"; compatible = "rockchip,rk3288-dw-mshc";
max-frequency = <150000000>; max-frequency = <150000000>;
clocks = <&cru HCLK_SDIO0>, <&cru SCLK_SDIO0>, clocks = <&cru HCLK_SDIO0>, <&cru SCLK_SDIO0>,
<&cru SCLK_SDIO0_DRV>, <&cru SCLK_SDIO0_SAMPLE>; <&cru SCLK_SDIO0_DRV>, <&cru SCLK_SDIO0_SAMPLE>;
clock-names = "biu", "ciu", "ciu_drv", "ciu_sample"; clock-names = "biu", "ciu", "ciu-drive", "ciu-sample";
fifo-depth = <0x100>; fifo-depth = <0x100>;
interrupts = <GIC_SPI 33 IRQ_TYPE_LEVEL_HIGH>; interrupts = <GIC_SPI 33 IRQ_TYPE_LEVEL_HIGH>;
reg = <0xff0d0000 0x4000>; reg = <0xff0d0000 0x4000>;
status = "disabled"; status = "disabled";
}; };
sdio1: dwmmc@ff0e0000 { sdio1: mmc@ff0e0000 {
compatible = "rockchip,rk3288-dw-mshc"; compatible = "rockchip,rk3288-dw-mshc";
max-frequency = <150000000>; max-frequency = <150000000>;
clocks = <&cru HCLK_SDIO1>, <&cru SCLK_SDIO1>, clocks = <&cru HCLK_SDIO1>, <&cru SCLK_SDIO1>,
<&cru SCLK_SDIO1_DRV>, <&cru SCLK_SDIO1_SAMPLE>; <&cru SCLK_SDIO1_DRV>, <&cru SCLK_SDIO1_SAMPLE>;
clock-names = "biu", "ciu", "ciu_drv", "ciu_sample"; clock-names = "biu", "ciu", "ciu-drive", "ciu-sample";
fifo-depth = <0x100>; fifo-depth = <0x100>;
interrupts = <GIC_SPI 34 IRQ_TYPE_LEVEL_HIGH>; interrupts = <GIC_SPI 34 IRQ_TYPE_LEVEL_HIGH>;
reg = <0xff0e0000 0x4000>; reg = <0xff0e0000 0x4000>;
status = "disabled"; status = "disabled";
}; };
emmc: dwmmc@ff0f0000 { emmc: mmc@ff0f0000 {
compatible = "rockchip,rk3288-dw-mshc"; compatible = "rockchip,rk3288-dw-mshc";
max-frequency = <150000000>; max-frequency = <150000000>;
clocks = <&cru HCLK_EMMC>, <&cru SCLK_EMMC>, clocks = <&cru HCLK_EMMC>, <&cru SCLK_EMMC>,
<&cru SCLK_EMMC_DRV>, <&cru SCLK_EMMC_SAMPLE>; <&cru SCLK_EMMC_DRV>, <&cru SCLK_EMMC_SAMPLE>;
clock-names = "biu", "ciu", "ciu_drv", "ciu_sample"; clock-names = "biu", "ciu", "ciu-drive", "ciu-sample";
fifo-depth = <0x100>; fifo-depth = <0x100>;
interrupts = <GIC_SPI 35 IRQ_TYPE_LEVEL_HIGH>; interrupts = <GIC_SPI 35 IRQ_TYPE_LEVEL_HIGH>;
reg = <0xff0f0000 0x4000>; reg = <0xff0f0000 0x4000>;

View file

@ -3,6 +3,8 @@
*(C) Copyright 2019 Rockchip Electronics Co., Ltd *(C) Copyright 2019 Rockchip Electronics Co., Ltd
*/ */
#include "rockchip-u-boot.dtsi"
/ { / {
aliases { aliases {
mmc0 = &emmc; mmc0 = &emmc;

View file

@ -3,6 +3,8 @@
* Copyright (c) 2020 Theobroma Systems Design und Consulting GmbH * Copyright (c) 2020 Theobroma Systems Design und Consulting GmbH
*/ */
#include "rockchip-u-boot.dtsi"
/ { / {
chosen { chosen {
u-boot,spl-boot-order = &sdmmc; u-boot,spl-boot-order = &sdmmc;

View file

@ -3,6 +3,8 @@
* (C) Copyright 2019 Rockchip Electronics Co., Ltd * (C) Copyright 2019 Rockchip Electronics Co., Ltd
*/ */
#include "rockchip-u-boot.dtsi"
/ { / {
aliases { aliases {
mmc0 = &emmc; mmc0 = &emmc;

View file

@ -4,6 +4,7 @@
*/ */
#include <dt-bindings/memory/rk3368-dmc.h> #include <dt-bindings/memory/rk3368-dmc.h>
#include "rockchip-u-boot.dtsi"
/ { / {
dmc: dmc@ff610000 { dmc: dmc@ff610000 {

View file

@ -60,7 +60,7 @@
}; };
#ifdef CONFIG_ROCKCHIP_SPI_IMAGE #if defined(CONFIG_ROCKCHIP_SPI_IMAGE) && defined(CONFIG_HAS_ROM)
&binman { &binman {
rom { rom {
filename = "u-boot.rom"; filename = "u-boot.rom";

View file

@ -3,6 +3,8 @@
* (C) Copyright 2021 Rockchip Electronics Co., Ltd * (C) Copyright 2021 Rockchip Electronics Co., Ltd
*/ */
#include "rockchip-u-boot.dtsi"
/ { / {
aliases { aliases {
mmc0 = &sdhci; mmc0 = &sdhci;

View file

@ -17,13 +17,57 @@
filename = "u-boot-rockchip.bin"; filename = "u-boot-rockchip.bin";
pad-byte = <0xff>; pad-byte = <0xff>;
blob { mkimage {
filename = "idbloader.img"; filename = "idbloader.img";
args = "-n", CONFIG_SYS_SOC, "-T", "rksd";
#ifdef CONFIG_TPL
multiple-data-files;
u-boot-tpl {
};
#endif
u-boot-spl {
};
}; };
#ifdef CONFIG_ARM64
blob {
filename = "u-boot.itb";
#else
u-boot-img { u-boot-img {
#endif
offset = <CONFIG_SPL_PAD_TO>; offset = <CONFIG_SPL_PAD_TO>;
}; };
}; };
#ifdef CONFIG_ROCKCHIP_SPI_IMAGE
simple-bin-spi {
filename = "u-boot-rockchip-spi.bin";
pad-byte = <0xff>;
mkimage {
filename = "idbloader-spi.img";
args = "-n", CONFIG_SYS_SOC, "-T", "rkspi";
#ifdef CONFIG_TPL
multiple-data-files;
u-boot-tpl {
};
#endif
u-boot-spl {
};
};
#ifdef CONFIG_ARM64
blob {
filename = "u-boot.itb";
#else
u-boot-img {
#endif
/* Sync with u-boot,spl-payload-offset if present */
offset = <CONFIG_SYS_SPI_U_BOOT_OFFS>;
};
};
#endif
}; };
#endif #endif

View file

@ -58,7 +58,7 @@
vsync-len = <10>; vsync-len = <10>;
hsync-active = <0>; hsync-active = <0>;
vsync-active = <0>; vsync-active = <0>;
de-active = <0>; de-active = <1>;
pixelclk-active = <1>; pixelclk-active = <1>;
}; };
}; };

View file

@ -1663,7 +1663,6 @@
ranges = <0 0x50002000 0xa400>; ranges = <0 0x50002000 0xa400>;
interrupt-parent = <&exti>; interrupt-parent = <&exti>;
st,syscfg = <&exti 0x60 0xff>; st,syscfg = <&exti 0x60 0xff>;
hwlocks = <&hwspinlock 0>;
pins-are-numbered; pins-are-numbered;
gpioa: gpio@50002000 { gpioa: gpio@50002000 {
@ -1796,7 +1795,6 @@
pins-are-numbered; pins-are-numbered;
interrupt-parent = <&exti>; interrupt-parent = <&exti>;
st,syscfg = <&exti 0x60 0xff>; st,syscfg = <&exti 0x60 0xff>;
hwlocks = <&hwspinlock 0>;
gpioz: gpio@54004000 { gpioz: gpio@54004000 {
gpio-controller; gpio-controller;

View file

@ -5,14 +5,6 @@
#include "stm32mp15xx-dhcom-u-boot.dtsi" #include "stm32mp15xx-dhcom-u-boot.dtsi"
/ {
aliases {
/delete-property/ ethernet1;
};
};
/delete-node/ &ks8851;
&usbotg_hs { &usbotg_hs {
dr_mode = "peripheral"; dr_mode = "peripheral";
}; };

View file

@ -9,8 +9,6 @@
#include "stm32mp15-ddr3-dhsom-2x2Gb-1066-binG.dtsi" #include "stm32mp15-ddr3-dhsom-2x2Gb-1066-binG.dtsi"
#include "stm32mp15-ddr3-dhsom-2x4Gb-1066-binG.dtsi" #include "stm32mp15-ddr3-dhsom-2x4Gb-1066-binG.dtsi"
/delete-node/ &ksz8851;
/ { / {
aliases { aliases {
i2c1 = &i2c2; i2c1 = &i2c2;
@ -21,7 +19,6 @@
spi0 = &qspi; spi0 = &qspi;
usb0 = &usbotg_hs; usb0 = &usbotg_hs;
eeprom0 = &eeprom0; eeprom0 = &eeprom0;
ethernet1 = &ks8851;
}; };
config { config {
@ -30,12 +27,6 @@
dh,som-coding-gpios = <&gpiof 12 0>, <&gpiof 13 0>, <&gpiof 15 0>; dh,som-coding-gpios = <&gpiof 12 0>, <&gpiof 13 0>, <&gpiof 15 0>;
dh,ddr3-coding-gpios = <&gpioz 6 0>, <&gpioz 7 0>; dh,ddr3-coding-gpios = <&gpioz 6 0>, <&gpioz 7 0>;
}; };
/* This is actually on FMC2, but we do not have bus driver for that */
ks8851: ks8851mll@64000000 {
compatible = "micrel,ks8851-mll";
reg = <0x64000000 0x20000>;
};
}; };
&ethernet0 { &ethernet0 {
@ -74,11 +65,6 @@
}; };
&pinctrl { &pinctrl {
/* These should bound to FMC2 bus driver, but we do not have one */
pinctrl-0 = <&fmc_pins_b &mco2_pins_a>;
pinctrl-1 = <&fmc_sleep_pins_b &mco2_sleep_pins_a>;
pinctrl-names = "default", "sleep";
mco2_pins_a: mco2-0 { mco2_pins_a: mco2-0 {
pins { pins {
pinmux = <STM32_PINMUX('G', 2, AF1)>; /* MCO2 */ pinmux = <STM32_PINMUX('G', 2, AF1)>; /* MCO2 */

View file

@ -5,25 +5,16 @@
#include "stm32mp15xx-dhcor-u-boot.dtsi" #include "stm32mp15xx-dhcor-u-boot.dtsi"
/delete-node/ &ksz8851;
/ { / {
aliases { aliases {
mmc0 = &sdmmc1; mmc0 = &sdmmc1;
mmc1 = &sdmmc2; mmc1 = &sdmmc2;
usb0 = &usbotg_hs; usb0 = &usbotg_hs;
ethernet1 = &ks8851;
}; };
config { config {
dh,board-coding-gpios = <&gpioh 9 0>, <&gpioh 8 0>, <&gpioh 3 0>; dh,board-coding-gpios = <&gpioh 9 0>, <&gpioh 8 0>, <&gpioh 3 0>;
}; };
/* This is actually on FMC2, but we do not have bus driver for that */
ks8851: ks8851mll@64000000 {
compatible = "micrel,ks8851-mll";
reg = <0x64000000 0x20000>;
};
}; };
&ethernet0 { &ethernet0 {
@ -38,13 +29,6 @@
}; };
}; };
&pinctrl {
/* These should bound to FMC2 bus driver, but we do not have one */
pinctrl-0 = <&fmc_pins_b>;
pinctrl-1 = <&fmc_sleep_pins_b>;
pinctrl-names = "default", "sleep";
};
&sdmmc1 { &sdmmc1 {
u-boot,dm-spl; u-boot,dm-spl;
st,use-ckin; st,use-ckin;

View file

@ -56,6 +56,7 @@
#define MXC_CPU_IMXRT1020 0xB4 /* dummy ID */ #define MXC_CPU_IMXRT1020 0xB4 /* dummy ID */
#define MXC_CPU_IMXRT1050 0xB6 /* dummy ID */ #define MXC_CPU_IMXRT1050 0xB6 /* dummy ID */
#define MXC_CPU_IMXRT1170 0xBA /* dummy ID */
#define MXC_CPU_MX7ULP 0xE1 /* Temporally hard code */ #define MXC_CPU_MX7ULP 0xE1 /* Temporally hard code */
#define MXC_CPU_VF610 0xF6 /* dummy ID */ #define MXC_CPU_VF610 0xF6 /* dummy ID */

View file

@ -7,13 +7,12 @@
#ifndef _PL310_H_ #ifndef _PL310_H_
#define _PL310_H_ #define _PL310_H_
#include <linux/types.h>
/* Register bit fields */ /* Register bit fields */
#define PL310_AUX_CTRL_ASSOCIATIVITY_MASK (1 << 16) #define PL310_AUX_CTRL_ASSOCIATIVITY_MASK (1 << 16)
#define L2X0_DYNAMIC_CLK_GATING_EN (1 << 1) #define L2X0_DYNAMIC_CLK_GATING_EN (1 << 1)
#define L2X0_STNDBY_MODE_EN (1 << 0) #define L2X0_STNDBY_MODE_EN (1 << 0)
#define L2X0_CTRL_EN 1 #define L2X0_CTRL_EN 1
#define L2X0_CTRL_OFF 0x100
#define L310_SHARED_ATT_OVERRIDE_ENABLE (1 << 22) #define L310_SHARED_ATT_OVERRIDE_ENABLE (1 << 22)
#define L310_AUX_CTRL_DATA_PREFETCH_MASK (1 << 28) #define L310_AUX_CTRL_DATA_PREFETCH_MASK (1 << 28)
@ -27,6 +26,10 @@
#define L2X0_CACHE_ID_RTL_MASK 0x3f #define L2X0_CACHE_ID_RTL_MASK 0x3f
#define L2X0_CACHE_ID_RTL_R3P2 0x8 #define L2X0_CACHE_ID_RTL_R3P2 0x8
#ifndef __ASSEMBLY__
#include <linux/types.h>
struct pl310_regs { struct pl310_regs {
u32 pl310_cache_id; u32 pl310_cache_id;
u32 pl310_cache_type; u32 pl310_cache_type;
@ -87,3 +90,5 @@ void pl310_inval_range(u32 start, u32 end);
void pl310_clean_inval_range(u32 start, u32 end); void pl310_clean_inval_range(u32 start, u32 end);
#endif #endif
#endif

View file

@ -32,12 +32,12 @@ static noinline long smh_trap(unsigned int sysnum, void *addr)
{ {
register long result asm("r0"); register long result asm("r0");
#if defined(CONFIG_ARM64) #if defined(CONFIG_ARM64)
asm volatile ("hlt #0xf000" : "=r" (result) : "0"(sysnum), "r"(addr)); asm volatile ("hlt #0xf000" : "=r" (result) : "0"(sysnum), "r"(addr) : "memory");
#elif defined(CONFIG_CPU_V7M) #elif defined(CONFIG_CPU_V7M)
asm volatile ("bkpt #0xAB" : "=r" (result) : "0"(sysnum), "r"(addr)); asm volatile ("bkpt #0xAB" : "=r" (result) : "0"(sysnum), "r"(addr) : "memory");
#else #else
/* Note - untested placeholder */ /* Note - untested placeholder */
asm volatile ("svc #0x123456" : "=r" (result) : "0"(sysnum), "r"(addr)); asm volatile ("svc #0x123456" : "=r" (result) : "0"(sysnum), "r"(addr) : "memory");
#endif #endif
return result; return result;
} }

View file

@ -269,6 +269,14 @@ config TARGET_IMX8MP_RSB3720A1_6G
select IMX8MP select IMX8MP
select SUPPORT_SPL select SUPPORT_SPL
select IMX8M_LPDDR4 select IMX8M_LPDDR4
config TARGET_LIBREM5
bool "Purism Librem5 Phone"
select BINMAN
select IMX8MQ
select SUPPORT_SPL
select IMX8M_LPDDR4
endchoice endchoice
source "board/advantech/imx8mp_rsb3720a1/Kconfig" source "board/advantech/imx8mp_rsb3720a1/Kconfig"
@ -290,6 +298,7 @@ source "board/kontron/sl-mx8mm/Kconfig"
source "board/menlo/mx8menlo/Kconfig" source "board/menlo/mx8menlo/Kconfig"
source "board/phytec/phycore_imx8mm/Kconfig" source "board/phytec/phycore_imx8mm/Kconfig"
source "board/phytec/phycore_imx8mp/Kconfig" source "board/phytec/phycore_imx8mp/Kconfig"
source "board/purism/librem5/Kconfig"
source "board/ronetix/imx8mq-cm/Kconfig" source "board/ronetix/imx8mq-cm/Kconfig"
source "board/technexion/pico-imx8mq/Kconfig" source "board/technexion/pico-imx8mq/Kconfig"
source "board/variscite/imx8mn_var_som/Kconfig" source "board/variscite/imx8mn_var_som/Kconfig"

View file

@ -12,6 +12,10 @@ config IMXRT1050
bool bool
select IMXRT select IMXRT
config IMXRT1170
bool
select IMXRT
config SYS_SOC config SYS_SOC
default "imxrt" default "imxrt"
@ -27,9 +31,14 @@ config TARGET_IMXRT1050_EVK
bool "Support imxrt1050 EVK board" bool "Support imxrt1050 EVK board"
select IMXRT1050 select IMXRT1050
config TARGET_IMXRT1170_EVK
bool "Support imxrt1170 EVK board"
select IMXRT1170
endchoice endchoice
source "board/freescale/imxrt1020-evk/Kconfig" source "board/freescale/imxrt1020-evk/Kconfig"
source "board/freescale/imxrt1050-evk/Kconfig" source "board/freescale/imxrt1050-evk/Kconfig"
source "board/freescale/imxrt1170-evk/Kconfig"
endif endif

View file

@ -43,6 +43,8 @@ u32 get_cpu_rev(void)
return MXC_CPU_IMXRT1020 << 12; return MXC_CPU_IMXRT1020 << 12;
#elif defined(CONFIG_IMXRT1050) #elif defined(CONFIG_IMXRT1050)
return MXC_CPU_IMXRT1050 << 12; return MXC_CPU_IMXRT1050 << 12;
#elif defined(CONFIG_IMXRT1170)
return MXC_CPU_IMXRT1170 << 12;
#else #else
#error This IMXRT SoC is not supported #error This IMXRT SoC is not supported
#endif #endif

View file

@ -466,6 +466,17 @@ config TARGET_MX6ULL_14X14_EVK
select DM_THERMAL select DM_THERMAL
imply CMD_DM imply CMD_DM
config TARGET_MX6ULZ_SMM_M2
bool "Support imx6ulz_smm_m2"
depends on MX6ULL
select DM
select DM_GPIO
select DM_I2C
select DM_SERIAL
select DM_MTD
select DM_THERMAL
select SUPPORT_SPL
config TARGET_MYS_6ULX config TARGET_MYS_6ULX
bool "MYiR MYS-6ULX" bool "MYiR MYS-6ULX"
depends on MX6ULL depends on MX6ULL
@ -680,6 +691,7 @@ source "board/ge/b1x5v2/Kconfig"
source "board/aristainetos/Kconfig" source "board/aristainetos/Kconfig"
source "board/armadeus/opos6uldev/Kconfig" source "board/armadeus/opos6uldev/Kconfig"
source "board/boundary/nitrogen6x/Kconfig" source "board/boundary/nitrogen6x/Kconfig"
source "board/bsh/imx6ulz_smm_m2/Kconfig"
source "board/bticino/mamoj/Kconfig" source "board/bticino/mamoj/Kconfig"
source "board/compulab/cm_fx6/Kconfig" source "board/compulab/cm_fx6/Kconfig"
source "board/dhelectronics/dh_imx6/Kconfig" source "board/dhelectronics/dh_imx6/Kconfig"

View file

@ -288,7 +288,7 @@ static int spl_romapi_load_image_stream(struct spl_image_info *spl_image,
} }
imagesize = img_info_size(phdr); imagesize = img_info_size(phdr);
printf("Find img info 0x&%p, size %d\n", phdr, imagesize); printf("Find img info 0x%p, size %d\n", phdr, imagesize);
if (p - phdr < imagesize) { if (p - phdr < imagesize) {
imagesize -= p - phdr; imagesize -= p - phdr;

View file

@ -52,7 +52,7 @@ unsigned int kw_winctrl_calcsize(unsigned int sizeval)
return (0x0000ffff & j); return (0x0000ffff & j);
} }
static struct mbus_win windows[] = { static const struct mbus_win windows[] = {
/* Window 0: PCIE MEM address space */ /* Window 0: PCIE MEM address space */
{ KW_DEFADR_PCI_MEM, KW_DEFADR_PCI_MEM_SIZE, { KW_DEFADR_PCI_MEM, KW_DEFADR_PCI_MEM_SIZE,
KWCPU_TARGET_PCIE, KWCPU_ATTR_PCIE_MEM }, KWCPU_TARGET_PCIE, KWCPU_ATTR_PCIE_MEM },

View file

@ -150,7 +150,7 @@ struct kwgpio_registers {
unsigned int mvebu_sdram_bar(enum memory_bank bank); unsigned int mvebu_sdram_bar(enum memory_bank bank);
unsigned int mvebu_sdram_bs(enum memory_bank bank); unsigned int mvebu_sdram_bs(enum memory_bank bank);
void mvebu_sdram_size_adjust(enum memory_bank bank); void mvebu_sdram_size_adjust(enum memory_bank bank);
int mvebu_mbus_probe(struct mbus_win windows[], int count); int mvebu_mbus_probe(const struct mbus_win windows[], int count);
void mvebu_config_gpio(unsigned int gpp0_oe_val, unsigned int gpp1_oe_val, void mvebu_config_gpio(unsigned int gpp0_oe_val, unsigned int gpp1_oe_val,
unsigned int gpp0_oe, unsigned int gpp1_oe); unsigned int gpp0_oe, unsigned int gpp1_oe);
int kw_config_mpp(unsigned int mpp0_7, unsigned int mpp8_15, int kw_config_mpp(unsigned int mpp0_7, unsigned int mpp8_15,

View file

@ -20,7 +20,7 @@
#define DDR_BASE_CS_OFF(n) (0x0000 + ((n) << 3)) #define DDR_BASE_CS_OFF(n) (0x0000 + ((n) << 3))
#define DDR_SIZE_CS_OFF(n) (0x0004 + ((n) << 3)) #define DDR_SIZE_CS_OFF(n) (0x0004 + ((n) << 3))
static struct mbus_win windows[] = { static const struct mbus_win windows[] = {
/* SPI */ /* SPI */
{ MBUS_SPI_BASE, MBUS_SPI_SIZE, { MBUS_SPI_BASE, MBUS_SPI_SIZE,
CPU_TARGET_DEVICEBUS_BOOTROM_SPI, CPU_ATTR_SPIFLASH }, CPU_TARGET_DEVICEBUS_BOOTROM_SPI, CPU_ATTR_SPIFLASH },
@ -445,19 +445,6 @@ static void setup_usb_phys(void)
*/ */
int arch_cpu_init(void) int arch_cpu_init(void)
{ {
struct pl310_regs *const pl310 =
(struct pl310_regs *)CONFIG_SYS_PL310_BASE;
if (IS_ENABLED(CONFIG_ARMADA_38X)) {
/*
* To fully release / unlock this area from cache, we need
* to flush all caches and disable the L2 cache.
*/
icache_disable();
dcache_disable();
clrbits_le32(&pl310->pl310_ctrl, L2X0_CTRL_EN);
}
/* /*
* We need to call mvebu_mbus_probe() before calling * We need to call mvebu_mbus_probe() before calling
* update_sdram_window_sizes() as it disables all previously * update_sdram_window_sizes() as it disables all previously
@ -663,7 +650,7 @@ void enable_caches(void)
* ethernet driver (mvpp2). So lets keep the d-cache disabled * ethernet driver (mvpp2). So lets keep the d-cache disabled
* until this is solved. * until this is solved.
*/ */
if (IS_ENABLED(CONFIG_ARMADA_375)) { if (!IS_ENABLED(CONFIG_ARMADA_375)) {
/* Enable D-cache. I-cache is already enabled in start.S */ /* Enable D-cache. I-cache is already enabled in start.S */
dcache_enable(); dcache_enable();
} }
@ -671,13 +658,21 @@ void enable_caches(void)
void v7_outer_cache_enable(void) void v7_outer_cache_enable(void)
{ {
if (IS_ENABLED(CONFIG_ARMADA_XP)) {
struct pl310_regs *const pl310 = struct pl310_regs *const pl310 =
(struct pl310_regs *)CONFIG_SYS_PL310_BASE; (struct pl310_regs *)CONFIG_SYS_PL310_BASE;
u32 u;
/* The L2 cache is already disabled at this point */ /* The L2 cache is already disabled at this point */
/*
* For now L2 cache will be enabled only for Armada XP and Armada 38x.
* It can be enabled also for other SoCs after testing that it works fine.
*/
if (!IS_ENABLED(CONFIG_ARMADA_XP) && !IS_ENABLED(CONFIG_ARMADA_38X))
return;
if (IS_ENABLED(CONFIG_ARMADA_XP)) {
u32 u;
/* /*
* For Aurora cache in no outer mode, enable via the CP15 * For Aurora cache in no outer mode, enable via the CP15
* coprocessor broadcasting of cache commands to L2. * coprocessor broadcasting of cache commands to L2.
@ -687,10 +682,10 @@ void v7_outer_cache_enable(void)
asm volatile("mcr p15, 1, %0, c15, c2, 0" : : "r" (u)); asm volatile("mcr p15, 1, %0, c15, c2, 0" : : "r" (u));
isb(); isb();
}
/* Enable the L2 cache */ /* Enable the L2 cache */
setbits_le32(&pl310->pl310_ctrl, L2X0_CTRL_EN); setbits_le32(&pl310->pl310_ctrl, L2X0_CTRL_EN);
}
} }
void v7_outer_cache_disable(void) void v7_outer_cache_disable(void)

View file

@ -128,7 +128,7 @@ struct sar_freq_modes {
unsigned int mvebu_sdram_bar(enum memory_bank bank); unsigned int mvebu_sdram_bar(enum memory_bank bank);
unsigned int mvebu_sdram_bs(enum memory_bank bank); unsigned int mvebu_sdram_bs(enum memory_bank bank);
void mvebu_sdram_size_adjust(enum memory_bank bank); void mvebu_sdram_size_adjust(enum memory_bank bank);
int mvebu_mbus_probe(struct mbus_win windows[], int count); int mvebu_mbus_probe(const struct mbus_win windows[], int count);
u32 mvebu_get_nand_clock(void); u32 mvebu_get_nand_clock(void);
void __noreturn return_to_bootrom(void); void __noreturn return_to_bootrom(void);

View file

@ -2,6 +2,8 @@
#include <config.h> #include <config.h>
#include <linux/linkage.h> #include <linux/linkage.h>
#include <asm/system.h>
#include <asm/pl310.h>
ENTRY(arch_very_early_init) ENTRY(arch_very_early_init)
#ifdef CONFIG_ARMADA_38X #ifdef CONFIG_ARMADA_38X
@ -10,10 +12,36 @@ ENTRY(arch_very_early_init)
* register address on Armada 38x. Without this the SDRAM * register address on Armada 38x. Without this the SDRAM
* located at >= 0x4000.0000 is also not accessible, as its * located at >= 0x4000.0000 is also not accessible, as its
* still locked to cache. * still locked to cache.
*
* So to fully release / unlock this area from cache, we need
* to first flush all caches, then disable the MMU and
* disable the L2 cache.
*/ */
/* Invalidate L1 I/D */
mov r0, #0 @ set up for MCR
mcr p15, 0, r0, c8, c7, 0 @ invalidate TLBs
mcr p15, 0, r0, c7, c5, 0 @ invalidate icache
mcr p15, 0, r0, c7, c5, 6 @ invalidate BP array
mcr p15, 0, r0, c7, c10, 4 @ DSB
mcr p15, 0, r0, c7, c5, 4 @ ISB
/* Disable MMU */
mrc p15, 0, r0, c1, c0, 0 mrc p15, 0, r0, c1, c0, 0
bic r0, #1 bic r0, #CR_M
mcr p15, 0, r0, c1, c0, 0 mcr p15, 0, r0, c1, c0, 0
/*
* Disable L2 cache
*
* NOTE: Internal registers are still at address INTREG_BASE_ADDR_REG
* but CONFIG_SYS_PL310_BASE is already calculated from base
* address SOC_REGS_PHY_BASE.
*/
ldr r1, =(CONFIG_SYS_PL310_BASE - SOC_REGS_PHY_BASE + INTREG_BASE_ADDR_REG)
ldr r0, [r1, #L2X0_CTRL_OFF]
bic r0, #L2X0_CTRL_EN
str r0, [r1, #L2X0_CTRL_OFF]
#endif #endif
/* Move internal registers from INTREG_BASE_ADDR_REG to SOC_REGS_PHY_BASE */ /* Move internal registers from INTREG_BASE_ADDR_REG to SOC_REGS_PHY_BASE */

View file

@ -469,7 +469,7 @@ int mbus_dt_setup_win(u32 base, u32 size, u8 target, u8 attr)
return 0; return 0;
} }
int mvebu_mbus_probe(struct mbus_win windows[], int count) int mvebu_mbus_probe(const struct mbus_win windows[], int count)
{ {
int win; int win;
int ret; int ret;

View file

@ -105,7 +105,7 @@ struct serdes_unit_data {
u8 serdes_unit_num; u8 serdes_unit_num;
}; };
static struct serdes_unit_data serdes_type_to_unit_info[] = { static const struct serdes_unit_data serdes_type_to_unit_info[] = {
{PEX_UNIT_ID, 0,}, {PEX_UNIT_ID, 0,},
{PEX_UNIT_ID, 1,}, {PEX_UNIT_ID, 1,},
{PEX_UNIT_ID, 2,}, {PEX_UNIT_ID, 2,},

View file

@ -86,7 +86,7 @@ static const struct udevice_id mvebu_reset_of_match[] = {
{ }, { },
}; };
static struct reset_ops mvebu_reset_ops = { static const struct reset_ops mvebu_reset_ops = {
.of_xlate = mvebu_reset_of_xlate, .of_xlate = mvebu_reset_of_xlate,
.request = mvebu_reset_request, .request = mvebu_reset_request,
.rfree = mvebu_reset_free, .rfree = mvebu_reset_free,

View file

@ -425,12 +425,10 @@ config SPL_MMC
config ROCKCHIP_SPI_IMAGE config ROCKCHIP_SPI_IMAGE
bool "Build a SPI image for rockchip" bool "Build a SPI image for rockchip"
depends on HAS_ROM
help help
Some Rockchip SoCs support booting from SPI flash. Enable this Some Rockchip SoCs support booting from SPI flash. Enable this
option to produce a 4MB SPI-flash image (called u-boot.rom) option to produce a SPI-flash image containing U-Boot. The image
containing U-Boot. The image is built by binman. U-Boot sits near is built by binman. U-Boot sits near the start of the image.
the start of the image.
config LNX_KRNL_IMG_TEXT_OFFSET_BASE config LNX_KRNL_IMG_TEXT_OFFSET_BASE
default SYS_TEXT_BASE default SYS_TEXT_BASE

View file

@ -8,6 +8,7 @@
#include <asm/global_data.h> #include <asm/global_data.h>
#include <asm/io.h> #include <asm/io.h>
#include <asm/arch/grf_rk3308.h> #include <asm/arch/grf_rk3308.h>
#include <asm/arch-rockchip/bootrom.h>
#include <asm/arch-rockchip/hardware.h> #include <asm/arch-rockchip/hardware.h>
#include <asm/gpio.h> #include <asm/gpio.h>
#include <debug_uart.h> #include <debug_uart.h>
@ -142,6 +143,11 @@ enum {
#define GPIO0_A4 4 #define GPIO0_A4 4
const char * const boot_devices[BROM_LAST_BOOTSOURCE + 1] = {
[BROM_BOOTSOURCE_EMMC] = "/mmc@ff490000",
[BROM_BOOTSOURCE_SD] = "/mmc@ff480000",
};
int rk_board_init(void) int rk_board_init(void)
{ {
static struct rk3308_grf * const grf = (void *)GRF_BASE; static struct rk3308_grf * const grf = (void *)GRF_BASE;

View file

@ -27,7 +27,7 @@ DECLARE_GLOBAL_DATA_PTR;
#define GRF_BASE 0xff770000 #define GRF_BASE 0xff770000
const char * const boot_devices[BROM_LAST_BOOTSOURCE + 1] = { const char * const boot_devices[BROM_LAST_BOOTSOURCE + 1] = {
[BROM_BOOTSOURCE_EMMC] = "/sdhci@fe330000", [BROM_BOOTSOURCE_EMMC] = "/mmc@fe330000",
[BROM_BOOTSOURCE_SPINOR] = "/spi@ff1d0000/flash@0", [BROM_BOOTSOURCE_SPINOR] = "/spi@ff1d0000/flash@0",
[BROM_BOOTSOURCE_SD] = "/mmc@fe320000", [BROM_BOOTSOURCE_SD] = "/mmc@fe320000",
}; };
@ -180,9 +180,9 @@ const char *spl_decode_boot_device(u32 boot_device)
u32 boot_device; u32 boot_device;
const char *ofpath; const char *ofpath;
} spl_boot_devices_tbl[] = { } spl_boot_devices_tbl[] = {
{ BOOT_DEVICE_MMC1, "/mmc@fe320000" }, { BOOT_DEVICE_MMC2, "/mmc@fe320000" },
{ BOOT_DEVICE_MMC2, "/sdhci@fe330000" }, { BOOT_DEVICE_MMC1, "/mmc@fe330000" },
{ BOOT_DEVICE_SPI, "/spi@ff1d0000" }, { BOOT_DEVICE_SPI, "/spi@ff1d0000/flash@0" },
}; };
for (i = 0; i < ARRAY_SIZE(spl_boot_devices_tbl); ++i) for (i = 0; i < ARRAY_SIZE(spl_boot_devices_tbl); ++i)

View file

@ -274,7 +274,6 @@ static void get_cpu_string_offsets(unsigned int *type, unsigned int *pkg,
u32 cpu_type = get_cpu_type(); u32 cpu_type = get_cpu_type();
u32 ct = cpu_type & ~(BIT(7) | BIT(0)); u32 ct = cpu_type & ~(BIT(7) | BIT(0));
u32 cm = ((cpu_type & BIT(7)) >> 6) | (cpu_type & BIT(0)); u32 cm = ((cpu_type & BIT(7)) >> 6) | (cpu_type & BIT(0));
u32 cp = get_cpu_package();
/* Bits 0 and 7 are the ACDF, 00:C 01:A 10:F 11:D */ /* Bits 0 and 7 are the ACDF, 00:C 01:A 10:F 11:D */
switch (ct) { switch (ct) {
@ -293,17 +292,9 @@ static void get_cpu_string_offsets(unsigned int *type, unsigned int *pkg,
} }
/* Package */ /* Package */
switch (cp) { *pkg = get_cpu_package();
case STM32MP15_PKG_AA_LBGA448: if (*pkg > STM32MP15_PKG_AA_LBGA448)
case STM32MP15_PKG_AB_LBGA354: *pkg = STM32MP15_PKG_UNKNOWN;
case STM32MP15_PKG_AC_TFBGA361:
case STM32MP15_PKG_AD_TFBGA257:
*pkg = cp;
break;
default:
*pkg = 0;
break;
}
/* Revision */ /* Revision */
switch (get_cpu_rev()) { switch (get_cpu_rev()) {

View file

@ -21,7 +21,7 @@ config MPC85xx
select SYS_FSL_DDR select SYS_FSL_DDR
select SYS_FSL_DDR_BE select SYS_FSL_DDR_BE
select SYS_FSL_IFC_BE select SYS_FSL_IFC_BE
select BINMAN if OF_SEPARATE select BINMAN if MPC85XX_HAVE_RESET_VECTOR && OF_SEPARATE
imply CMD_HASH imply CMD_HASH
imply CMD_IRQ imply CMD_IRQ
imply USB_EHCI_HCD if USB imply USB_EHCI_HCD if USB

View file

@ -15,7 +15,7 @@ config CMD_ERRATA
config FSL_PREPBL_ESDHC_BOOT_SECTOR config FSL_PREPBL_ESDHC_BOOT_SECTOR
bool "Generate QorIQ pre-PBL eSDHC boot sector" bool "Generate QorIQ pre-PBL eSDHC boot sector"
depends on MPC85xx depends on MPC85xx
depends on SYS_EXTRA_OPTIONS = SDCARD depends on SDCARD
help help
With this option final image would have prepended QorIQ pre-PBL eSDHC With this option final image would have prepended QorIQ pre-PBL eSDHC
boot sector suitable for SD card images. This boot sector instruct boot sector suitable for SD card images. This boot sector instruct

View file

@ -44,7 +44,9 @@ __board_reset(void)
{ {
/* Do nothing */ /* Do nothing */
} }
void board_reset_prepare(void) __attribute__((weak, alias("__board_reset")));
void board_reset(void) __attribute__((weak, alias("__board_reset"))); void board_reset(void) __attribute__((weak, alias("__board_reset")));
void board_reset_last(void) __attribute__((weak, alias("__board_reset")));
int checkcpu (void) int checkcpu (void)
{ {
@ -319,12 +321,18 @@ int do_reset(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[])
#else #else
volatile ccsr_gur_t *gur = (void *)(CONFIG_SYS_MPC85xx_GUTS_ADDR); volatile ccsr_gur_t *gur = (void *)(CONFIG_SYS_MPC85xx_GUTS_ADDR);
/* Call board-specific preparation for reset */
board_reset_prepare();
/* Attempt board-specific reset */ /* Attempt board-specific reset */
board_reset(); board_reset();
/* Next try asserting HRESET_REQ */ /* Next try asserting HRESET_REQ */
out_be32(&gur->rstcr, 0x2); out_be32(&gur->rstcr, 0x2);
udelay(100); udelay(100);
/* Attempt last-stage board-specific reset */
board_reset_last();
#endif #endif
return 1; return 1;

View file

@ -58,10 +58,17 @@ SECTIONS
__ex_table : { *(__ex_table) } __ex_table : { *(__ex_table) }
__stop___ex_table = .; __stop___ex_table = .;
. = ALIGN(8); . = ALIGN(4);
__init_begin = .; __init_begin = .;
__init_end = .; __init_end = .;
_end = .; _end = .;
#if CONFIG_IS_ENABLED(SYS_MPC85XX_NO_RESETVEC)
#if defined(CONFIG_SDCARD) && !defined(CONFIG_SYS_MMC_U_BOOT_OFFS)
mmc_u_boot_offs = .;
#endif
#endif
#ifdef CONFIG_SPL_SKIP_RELOCATE #ifdef CONFIG_SPL_SKIP_RELOCATE
. = ALIGN(4); . = ALIGN(4);
__bss_start = .; __bss_start = .;
@ -94,6 +101,9 @@ SECTIONS
.resetvec IMAGE_TEXT_BASE + RESET_VECTOR_OFFSET : { .resetvec IMAGE_TEXT_BASE + RESET_VECTOR_OFFSET : {
KEEP(*(.resetvec)) KEEP(*(.resetvec))
} = 0xffff } = 0xffff
#if defined(CONFIG_SDCARD) && !defined(CONFIG_SYS_MMC_U_BOOT_OFFS)
mmc_u_boot_offs = .;
#endif
#endif #endif
#ifndef CONFIG_SPL_SKIP_RELOCATE #ifndef CONFIG_SPL_SKIP_RELOCATE

View file

@ -76,7 +76,7 @@
}; };
binman { binman {
filename = "u-boot-with-dtb.bin"; filename = "u-boot.bin";
skip-at-start = <CONFIG_SYS_TEXT_BASE>; skip-at-start = <CONFIG_SYS_TEXT_BASE>;
sort-by-offset; sort-by-offset;
pad-byte = <0xff>; pad-byte = <0xff>;

View file

@ -5,9 +5,11 @@
#include <config.h> #include <config.h>
#if defined(CONFIG_MPC85XX_HAVE_RESET_VECTOR) && defined(CONFIG_OF_SEPARATE)
/ { / {
binman { binman {
filename = "u-boot-with-dtb.bin"; filename = "u-boot.bin";
skip-at-start = <CONFIG_SYS_TEXT_BASE>; skip-at-start = <CONFIG_SYS_TEXT_BASE>;
sort-by-offset; sort-by-offset;
pad-byte = <0xff>; pad-byte = <0xff>;
@ -19,17 +21,15 @@
}; };
u-boot-dtb-with-ucode { u-boot-dtb-with-ucode {
#ifdef CONFIG_MPC85xx
align = <4>; align = <4>;
#endif
}; };
#ifdef CONFIG_MPC85XX_HAVE_RESET_VECTOR
#ifndef CONFIG_RESET_VECTOR_ADDRESS #ifndef CONFIG_RESET_VECTOR_ADDRESS
#define CONFIG_RESET_VECTOR_ADDRESS 0xfffffffc #define CONFIG_RESET_VECTOR_ADDRESS 0xfffffffc
#endif #endif
powerpc-mpc85xx-bootpg-resetvec { powerpc-mpc85xx-bootpg-resetvec {
offset = <(CONFIG_RESET_VECTOR_ADDRESS - 0xffc)>; offset = <(CONFIG_RESET_VECTOR_ADDRESS - 0xffc)>;
}; };
#endif
}; };
}; };
#endif

View file

@ -7,11 +7,11 @@
/ { / {
cpus { cpus {
assigned-clocks = <&prci PRCI_CLK_COREPLL>; assigned-clocks = <&prci FU740_PRCI_CLK_COREPLL>;
assigned-clock-rates = <1200000000>; assigned-clock-rates = <1200000000>;
u-boot,dm-spl; u-boot,dm-spl;
cpu0: cpu@0 { cpu0: cpu@0 {
clocks = <&prci PRCI_CLK_COREPLL>; clocks = <&prci FU740_PRCI_CLK_COREPLL>;
u-boot,dm-spl; u-boot,dm-spl;
status = "okay"; status = "okay";
cpu0_intc: interrupt-controller { cpu0_intc: interrupt-controller {
@ -19,28 +19,28 @@
}; };
}; };
cpu1: cpu@1 { cpu1: cpu@1 {
clocks = <&prci PRCI_CLK_COREPLL>; clocks = <&prci FU740_PRCI_CLK_COREPLL>;
u-boot,dm-spl; u-boot,dm-spl;
cpu1_intc: interrupt-controller { cpu1_intc: interrupt-controller {
u-boot,dm-spl; u-boot,dm-spl;
}; };
}; };
cpu2: cpu@2 { cpu2: cpu@2 {
clocks = <&prci PRCI_CLK_COREPLL>; clocks = <&prci FU740_PRCI_CLK_COREPLL>;
u-boot,dm-spl; u-boot,dm-spl;
cpu2_intc: interrupt-controller { cpu2_intc: interrupt-controller {
u-boot,dm-spl; u-boot,dm-spl;
}; };
}; };
cpu3: cpu@3 { cpu3: cpu@3 {
clocks = <&prci PRCI_CLK_COREPLL>; clocks = <&prci FU740_PRCI_CLK_COREPLL>;
u-boot,dm-spl; u-boot,dm-spl;
cpu3_intc: interrupt-controller { cpu3_intc: interrupt-controller {
u-boot,dm-spl; u-boot,dm-spl;
}; };
}; };
cpu4: cpu@4 { cpu4: cpu@4 {
clocks = <&prci PRCI_CLK_COREPLL>; clocks = <&prci FU740_PRCI_CLK_COREPLL>;
u-boot,dm-spl; u-boot,dm-spl;
cpu4_intc: interrupt-controller { cpu4_intc: interrupt-controller {
u-boot,dm-spl; u-boot,dm-spl;
@ -76,7 +76,7 @@
reg = <0x0 0x100b0000 0x0 0x0800 reg = <0x0 0x100b0000 0x0 0x0800
0x0 0x100b2000 0x0 0x2000 0x0 0x100b2000 0x0 0x2000
0x0 0x100b8000 0x0 0x1000>; 0x0 0x100b8000 0x0 0x1000>;
clocks = <&prci PRCI_CLK_DDRPLL>; clocks = <&prci FU740_PRCI_CLK_DDRPLL>;
clock-frequency = <933333324>; clock-frequency = <933333324>;
u-boot,dm-spl; u-boot,dm-spl;
}; };
@ -100,7 +100,7 @@
}; };
&eth0 { &eth0 {
assigned-clocks = <&prci PRCI_CLK_GEMGXLPLL>; assigned-clocks = <&prci FU740_PRCI_CLK_GEMGXLPLL>;
assigned-clock-rates = <125125000>; assigned-clock-rates = <125125000>;
}; };

View file

@ -1,10 +1,9 @@
// SPDX-License-Identifier: (GPL-2.0 OR MIT) // SPDX-License-Identifier: (GPL-2.0 OR MIT)
/* Copyright (c) 2020-2021 SiFive, Inc */ /* Copyright (c) 2020 SiFive, Inc */
/dts-v1/; /dts-v1/;
#include <dt-bindings/clock/sifive-fu740-prci.h> #include <dt-bindings/clock/sifive-fu740-prci.h>
#include <dt-bindings/reset/sifive-fu740-prci.h>
/ { / {
#address-cells = <2>; #address-cells = <2>;
@ -139,20 +138,21 @@
soc { soc {
#address-cells = <2>; #address-cells = <2>;
#size-cells = <2>; #size-cells = <2>;
compatible = "sifive,fu740-c000", "sifive,fu740", "simple-bus"; compatible = "simple-bus";
ranges; ranges;
plic0: interrupt-controller@c000000 { plic0: interrupt-controller@c000000 {
#interrupt-cells = <1>; #interrupt-cells = <1>;
compatible = "sifive,plic-1.0.0"; #address-cells = <0>;
compatible = "sifive,fu540-c000-plic", "sifive,plic-1.0.0";
reg = <0x0 0xc000000 0x0 0x4000000>; reg = <0x0 0xc000000 0x0 0x4000000>;
riscv,ndev = <69>; riscv,ndev = <69>;
interrupt-controller; interrupt-controller;
interrupts-extended = < interrupts-extended =
&cpu0_intc 0xffffffff <&cpu0_intc 0xffffffff>,
&cpu1_intc 0xffffffff &cpu1_intc 9 <&cpu1_intc 0xffffffff>, <&cpu1_intc 9>,
&cpu2_intc 0xffffffff &cpu2_intc 9 <&cpu2_intc 0xffffffff>, <&cpu2_intc 9>,
&cpu3_intc 0xffffffff &cpu3_intc 9 <&cpu3_intc 0xffffffff>, <&cpu3_intc 9>,
&cpu4_intc 0xffffffff &cpu4_intc 9>; <&cpu4_intc 0xffffffff>, <&cpu4_intc 9>;
}; };
prci: clock-controller@10000000 { prci: clock-controller@10000000 {
compatible = "sifive,fu740-c000-prci"; compatible = "sifive,fu740-c000-prci";
@ -166,7 +166,7 @@
reg = <0x0 0x10010000 0x0 0x1000>; reg = <0x0 0x10010000 0x0 0x1000>;
interrupt-parent = <&plic0>; interrupt-parent = <&plic0>;
interrupts = <39>; interrupts = <39>;
clocks = <&prci PRCI_CLK_PCLK>; clocks = <&prci FU740_PRCI_CLK_PCLK>;
status = "disabled"; status = "disabled";
}; };
uart1: serial@10011000 { uart1: serial@10011000 {
@ -174,7 +174,7 @@
reg = <0x0 0x10011000 0x0 0x1000>; reg = <0x0 0x10011000 0x0 0x1000>;
interrupt-parent = <&plic0>; interrupt-parent = <&plic0>;
interrupts = <40>; interrupts = <40>;
clocks = <&prci PRCI_CLK_PCLK>; clocks = <&prci FU740_PRCI_CLK_PCLK>;
status = "disabled"; status = "disabled";
}; };
i2c0: i2c@10030000 { i2c0: i2c@10030000 {
@ -182,7 +182,7 @@
reg = <0x0 0x10030000 0x0 0x1000>; reg = <0x0 0x10030000 0x0 0x1000>;
interrupt-parent = <&plic0>; interrupt-parent = <&plic0>;
interrupts = <52>; interrupts = <52>;
clocks = <&prci PRCI_CLK_PCLK>; clocks = <&prci FU740_PRCI_CLK_PCLK>;
reg-shift = <2>; reg-shift = <2>;
reg-io-width = <1>; reg-io-width = <1>;
#address-cells = <1>; #address-cells = <1>;
@ -194,7 +194,7 @@
reg = <0x0 0x10031000 0x0 0x1000>; reg = <0x0 0x10031000 0x0 0x1000>;
interrupt-parent = <&plic0>; interrupt-parent = <&plic0>;
interrupts = <53>; interrupts = <53>;
clocks = <&prci PRCI_CLK_PCLK>; clocks = <&prci FU740_PRCI_CLK_PCLK>;
reg-shift = <2>; reg-shift = <2>;
reg-io-width = <1>; reg-io-width = <1>;
#address-cells = <1>; #address-cells = <1>;
@ -203,22 +203,22 @@
}; };
qspi0: spi@10040000 { qspi0: spi@10040000 {
compatible = "sifive,fu740-c000-spi", "sifive,spi0"; compatible = "sifive,fu740-c000-spi", "sifive,spi0";
reg = <0x0 0x10040000 0x0 0x1000 reg = <0x0 0x10040000 0x0 0x1000>,
0x0 0x20000000 0x0 0x10000000>; <0x0 0x20000000 0x0 0x10000000>;
interrupt-parent = <&plic0>; interrupt-parent = <&plic0>;
interrupts = <41>; interrupts = <41>;
clocks = <&prci PRCI_CLK_PCLK>; clocks = <&prci FU740_PRCI_CLK_PCLK>;
#address-cells = <1>; #address-cells = <1>;
#size-cells = <0>; #size-cells = <0>;
status = "disabled"; status = "disabled";
}; };
qspi1: spi@10041000 { qspi1: spi@10041000 {
compatible = "sifive,fu740-c000-spi", "sifive,spi0"; compatible = "sifive,fu740-c000-spi", "sifive,spi0";
reg = <0x0 0x10041000 0x0 0x1000 reg = <0x0 0x10041000 0x0 0x1000>,
0x0 0x30000000 0x0 0x10000000>; <0x0 0x30000000 0x0 0x10000000>;
interrupt-parent = <&plic0>; interrupt-parent = <&plic0>;
interrupts = <42>; interrupts = <42>;
clocks = <&prci PRCI_CLK_PCLK>; clocks = <&prci FU740_PRCI_CLK_PCLK>;
#address-cells = <1>; #address-cells = <1>;
#size-cells = <0>; #size-cells = <0>;
status = "disabled"; status = "disabled";
@ -228,7 +228,7 @@
reg = <0x0 0x10050000 0x0 0x1000>; reg = <0x0 0x10050000 0x0 0x1000>;
interrupt-parent = <&plic0>; interrupt-parent = <&plic0>;
interrupts = <43>; interrupts = <43>;
clocks = <&prci PRCI_CLK_PCLK>; clocks = <&prci FU740_PRCI_CLK_PCLK>;
#address-cells = <1>; #address-cells = <1>;
#size-cells = <0>; #size-cells = <0>;
status = "disabled"; status = "disabled";
@ -237,12 +237,12 @@
compatible = "sifive,fu540-c000-gem"; compatible = "sifive,fu540-c000-gem";
interrupt-parent = <&plic0>; interrupt-parent = <&plic0>;
interrupts = <55>; interrupts = <55>;
reg = <0x0 0x10090000 0x0 0x2000 reg = <0x0 0x10090000 0x0 0x2000>,
0x0 0x100a0000 0x0 0x1000>; <0x0 0x100a0000 0x0 0x1000>;
local-mac-address = [00 00 00 00 00 00]; local-mac-address = [00 00 00 00 00 00];
clock-names = "pclk", "hclk"; clock-names = "pclk", "hclk";
clocks = <&prci PRCI_CLK_GEMGXLPLL>, clocks = <&prci FU740_PRCI_CLK_GEMGXLPLL>,
<&prci PRCI_CLK_GEMGXLPLL>; <&prci FU740_PRCI_CLK_GEMGXLPLL>;
#address-cells = <1>; #address-cells = <1>;
#size-cells = <0>; #size-cells = <0>;
status = "disabled"; status = "disabled";
@ -251,8 +251,8 @@
compatible = "sifive,fu740-c000-pwm", "sifive,pwm0"; compatible = "sifive,fu740-c000-pwm", "sifive,pwm0";
reg = <0x0 0x10020000 0x0 0x1000>; reg = <0x0 0x10020000 0x0 0x1000>;
interrupt-parent = <&plic0>; interrupt-parent = <&plic0>;
interrupts = <44 45 46 47>; interrupts = <44>, <45>, <46>, <47>;
clocks = <&prci PRCI_CLK_PCLK>; clocks = <&prci FU740_PRCI_CLK_PCLK>;
#pwm-cells = <3>; #pwm-cells = <3>;
status = "disabled"; status = "disabled";
}; };
@ -260,8 +260,8 @@
compatible = "sifive,fu740-c000-pwm", "sifive,pwm0"; compatible = "sifive,fu740-c000-pwm", "sifive,pwm0";
reg = <0x0 0x10021000 0x0 0x1000>; reg = <0x0 0x10021000 0x0 0x1000>;
interrupt-parent = <&plic0>; interrupt-parent = <&plic0>;
interrupts = <48 49 50 51>; interrupts = <48>, <49>, <50>, <51>;
clocks = <&prci PRCI_CLK_PCLK>; clocks = <&prci FU740_PRCI_CLK_PCLK>;
#pwm-cells = <3>; #pwm-cells = <3>;
status = "disabled"; status = "disabled";
}; };
@ -273,7 +273,7 @@
cache-size = <2097152>; cache-size = <2097152>;
cache-unified; cache-unified;
interrupt-parent = <&plic0>; interrupt-parent = <&plic0>;
interrupts = <19 21 22 20>; interrupts = <19>, <21>, <22>, <20>;
reg = <0x0 0x2010000 0x0 0x1000>; reg = <0x0 0x2010000 0x0 0x1000>;
}; };
gpio: gpio@10060000 { gpio: gpio@10060000 {
@ -287,28 +287,27 @@
#gpio-cells = <2>; #gpio-cells = <2>;
interrupt-controller; interrupt-controller;
#interrupt-cells = <2>; #interrupt-cells = <2>;
clocks = <&prci PRCI_CLK_PCLK>; clocks = <&prci FU740_PRCI_CLK_PCLK>;
status = "disabled"; status = "disabled";
}; };
pcie@e00000000 { pcie@e00000000 {
#address-cells = <3>;
#interrupt-cells = <1>;
#num-lanes = <8>;
#size-cells = <2>;
compatible = "sifive,fu740-pcie"; compatible = "sifive,fu740-pcie";
reg = <0xe 0x00000000 0x1 0x0 #address-cells = <3>;
0xd 0xf0000000 0x0 0x10000000 #size-cells = <2>;
0x0 0x100d0000 0x0 0x1000>; #interrupt-cells = <1>;
reg = <0xe 0x00000000 0x0 0x80000000>,
<0xd 0xf0000000 0x0 0x10000000>,
<0x0 0x100d0000 0x0 0x1000>;
reg-names = "dbi", "config", "mgmt"; reg-names = "dbi", "config", "mgmt";
device_type = "pci"; device_type = "pci";
dma-coherent; dma-coherent;
bus-range = <0x0 0xff>; bus-range = <0x0 0xff>;
ranges = <0x81000000 0x0 0x60080000 0x0 0x60080000 0x0 0x10000 ranges = <0x81000000 0x0 0x60080000 0x0 0x60080000 0x0 0x10000>, /* I/O */
0x82000000 0x0 0x60090000 0x0 0x60090000 0x0 0xff70000 <0x82000000 0x0 0x60090000 0x0 0x60090000 0x0 0xff70000>, /* mem */
0x82000000 0x0 0x70000000 0x0 0x70000000 0x0 0x1000000 <0x82000000 0x0 0x70000000 0x0 0x70000000 0x0 0x1000000>, /* mem */
0xc3000000 0x20 0x00000000 0x20 0x00000000 0x20 0x00000000>; <0xc3000000 0x20 0x00000000 0x20 0x00000000 0x20 0x00000000>; /* mem prefetchable */
num-lanes = <0x8>; num-lanes = <0x8>;
interrupts = <56 57 58 59 60 61 62 63 64>; interrupts = <56>, <57>, <58>, <59>, <60>, <61>, <62>, <63>, <64>;
interrupt-names = "msi", "inta", "intb", "intc", "intd"; interrupt-names = "msi", "inta", "intb", "intc", "intd";
interrupt-parent = <&plic0>; interrupt-parent = <&plic0>;
interrupt-map-mask = <0x0 0x0 0x0 0x7>; interrupt-map-mask = <0x0 0x0 0x0 0x7>;
@ -316,13 +315,11 @@
<0x0 0x0 0x0 0x2 &plic0 58>, <0x0 0x0 0x0 0x2 &plic0 58>,
<0x0 0x0 0x0 0x3 &plic0 59>, <0x0 0x0 0x0 0x3 &plic0 59>,
<0x0 0x0 0x0 0x4 &plic0 60>; <0x0 0x0 0x0 0x4 &plic0 60>;
clock-names = "pcie_aux";
clocks = <&prci FU740_PRCI_CLK_PCIE_AUX>;
pwren-gpios = <&gpio 5 0>; pwren-gpios = <&gpio 5 0>;
reset-gpios = <&gpio 8 0>; reset-gpios = <&gpio 8 0>;
clocks = <&prci PRCI_CLK_PCIEAUX>; resets = <&prci 4>;
clock-names = "pcieaux";
resets = <&prci PRCI_RST_PCIE_POWER_UP_N>;
reset-names = "rst_n";
status = "okay"; status = "okay";
}; };
}; };

View file

@ -1,5 +1,5 @@
// SPDX-License-Identifier: GPL-2.0+ // SPDX-License-Identifier: (GPL-2.0 OR MIT)
/* Copyright (c) 2019-2021 SiFive, Inc */ /* Copyright (c) 2020 SiFive, Inc */
#include "fu740-c000.dtsi" #include "fu740-c000.dtsi"
#include <dt-bindings/gpio/gpio.h> #include <dt-bindings/gpio/gpio.h>
@ -9,8 +9,6 @@
#define RTCCLK_FREQ 1000000 #define RTCCLK_FREQ 1000000
/ { / {
#address-cells = <2>;
#size-cells = <2>;
model = "SiFive HiFive Unmatched A00"; model = "SiFive HiFive Unmatched A00";
compatible = "sifive,hifive-unmatched-a00", "sifive,fu740-c000", compatible = "sifive,hifive-unmatched-a00", "sifive,fu740-c000",
"sifive,fu740"; "sifive,fu740";
@ -28,9 +26,6 @@
reg = <0x0 0x80000000 0x4 0x00000000>; reg = <0x0 0x80000000 0x4 0x00000000>;
}; };
soc {
};
hfclk: hfclk { hfclk: hfclk {
#clock-cells = <0>; #clock-cells = <0>;
compatible = "fixed-clock"; compatible = "fixed-clock";
@ -65,10 +60,21 @@
temperature-sensor@4c { temperature-sensor@4c {
compatible = "ti,tmp451"; compatible = "ti,tmp451";
reg = <0x4c>; reg = <0x4c>;
vcc-supply = <&vdd_bpro>;
interrupt-parent = <&gpio>; interrupt-parent = <&gpio>;
interrupts = <6 IRQ_TYPE_LEVEL_LOW>; interrupts = <6 IRQ_TYPE_LEVEL_LOW>;
}; };
eeprom@54 {
compatible = "microchip,24c02", "atmel,24c02";
reg = <0x54>;
vcc-supply = <&vdd_bpro>;
label = "board-id";
pagesize = <16>;
read-only;
size = <256>;
};
pmic@58 { pmic@58 {
compatible = "dlg,da9063"; compatible = "dlg,da9063";
reg = <0x58>; reg = <0x58>;
@ -76,48 +82,44 @@
interrupts = <1 IRQ_TYPE_LEVEL_LOW>; interrupts = <1 IRQ_TYPE_LEVEL_LOW>;
interrupt-controller; interrupt-controller;
regulators { onkey {
vdd_bcore1: bcore1 { compatible = "dlg,da9063-onkey";
regulator-min-microvolt = <1050000>;
regulator-max-microvolt = <1050000>;
regulator-min-microamp = <5000000>;
regulator-max-microamp = <5000000>;
regulator-always-on;
}; };
vdd_bcore2: bcore2 { rtc {
compatible = "dlg,da9063-rtc";
};
wdt {
compatible = "dlg,da9063-watchdog";
};
regulators {
vdd_bcore: bcores-merged {
regulator-min-microvolt = <1050000>; regulator-min-microvolt = <1050000>;
regulator-max-microvolt = <1050000>; regulator-max-microvolt = <1050000>;
regulator-min-microamp = <5000000>; regulator-min-microamp = <4800000>;
regulator-max-microamp = <5000000>; regulator-max-microamp = <4800000>;
regulator-always-on; regulator-always-on;
}; };
vdd_bpro: bpro { vdd_bpro: bpro {
regulator-min-microvolt = <1800000>; regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>; regulator-max-microvolt = <1800000>;
regulator-min-microamp = <2500000>; regulator-min-microamp = <2400000>;
regulator-max-microamp = <2500000>; regulator-max-microamp = <2400000>;
regulator-always-on; regulator-always-on;
}; };
vdd_bperi: bperi { vdd_bperi: bperi {
regulator-min-microvolt = <1050000>; regulator-min-microvolt = <1060000>;
regulator-max-microvolt = <1050000>; regulator-max-microvolt = <1060000>;
regulator-min-microamp = <1500000>; regulator-min-microamp = <1500000>;
regulator-max-microamp = <1500000>; regulator-max-microamp = <1500000>;
regulator-always-on; regulator-always-on;
}; };
vdd_bmem: bmem { vdd_bmem_bio: bmem-bio-merged {
regulator-min-microvolt = <1200000>;
regulator-max-microvolt = <1200000>;
regulator-min-microamp = <3000000>;
regulator-max-microamp = <3000000>;
regulator-always-on;
};
vdd_bio: bio {
regulator-min-microvolt = <1200000>; regulator-min-microvolt = <1200000>;
regulator-max-microvolt = <1200000>; regulator-max-microvolt = <1200000>;
regulator-min-microamp = <3000000>; regulator-min-microamp = <3000000>;
@ -128,86 +130,66 @@
vdd_ldo1: ldo1 { vdd_ldo1: ldo1 {
regulator-min-microvolt = <1800000>; regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>; regulator-max-microvolt = <1800000>;
regulator-min-microamp = <100000>;
regulator-max-microamp = <100000>;
regulator-always-on; regulator-always-on;
}; };
vdd_ldo2: ldo2 { vdd_ldo2: ldo2 {
regulator-min-microvolt = <1800000>; regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>; regulator-max-microvolt = <1800000>;
regulator-min-microamp = <200000>;
regulator-max-microamp = <200000>;
regulator-always-on; regulator-always-on;
}; };
vdd_ldo3: ldo3 { vdd_ldo3: ldo3 {
regulator-min-microvolt = <3300000>; regulator-min-microvolt = <3300000>;
regulator-max-microvolt = <3300000>; regulator-max-microvolt = <3300000>;
regulator-min-microamp = <200000>;
regulator-max-microamp = <200000>;
regulator-always-on; regulator-always-on;
}; };
vdd_ldo4: ldo4 { vdd_ldo4: ldo4 {
regulator-min-microvolt = <2500000>; regulator-min-microvolt = <2500000>;
regulator-max-microvolt = <2500000>; regulator-max-microvolt = <2500000>;
regulator-min-microamp = <200000>;
regulator-max-microamp = <200000>;
regulator-always-on; regulator-always-on;
}; };
vdd_ldo5: ldo5 { vdd_ldo5: ldo5 {
regulator-min-microvolt = <3300000>; regulator-min-microvolt = <3300000>;
regulator-max-microvolt = <3300000>; regulator-max-microvolt = <3300000>;
regulator-min-microamp = <100000>;
regulator-max-microamp = <100000>;
regulator-always-on; regulator-always-on;
}; };
vdd_ldo6: ldo6 { vdd_ldo6: ldo6 {
regulator-min-microvolt = <1800000>; regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>; regulator-max-microvolt = <1800000>;
regulator-min-microamp = <200000>;
regulator-max-microamp = <200000>;
regulator-always-on; regulator-always-on;
}; };
vdd_ldo7: ldo7 { vdd_ldo7: ldo7 {
regulator-min-microvolt = <3300000>; regulator-min-microvolt = <3300000>;
regulator-max-microvolt = <3300000>; regulator-max-microvolt = <3300000>;
regulator-min-microamp = <200000>;
regulator-max-microamp = <200000>;
regulator-always-on; regulator-always-on;
}; };
vdd_ldo8: ldo8 { vdd_ldo8: ldo8 {
regulator-min-microvolt = <3300000>; regulator-min-microvolt = <3300000>;
regulator-max-microvolt = <3300000>; regulator-max-microvolt = <3300000>;
regulator-min-microamp = <200000>;
regulator-max-microamp = <200000>;
regulator-always-on; regulator-always-on;
}; };
vdd_ld09: ldo9 { vdd_ld09: ldo9 {
regulator-min-microvolt = <1050000>; regulator-min-microvolt = <1050000>;
regulator-max-microvolt = <1050000>; regulator-max-microvolt = <1050000>;
regulator-min-microamp = <200000>; regulator-always-on;
regulator-max-microamp = <200000>;
}; };
vdd_ldo10: ldo10 { vdd_ldo10: ldo10 {
regulator-min-microvolt = <1000000>; regulator-min-microvolt = <1000000>;
regulator-max-microvolt = <1000000>; regulator-max-microvolt = <1000000>;
regulator-min-microamp = <300000>; regulator-always-on;
regulator-max-microamp = <300000>;
}; };
vdd_ldo11: ldo11 { vdd_ldo11: ldo11 {
regulator-min-microvolt = <2500000>; regulator-min-microvolt = <2500000>;
regulator-max-microvolt = <2500000>; regulator-max-microvolt = <2500000>;
regulator-min-microamp = <300000>;
regulator-max-microamp = <300000>;
regulator-always-on; regulator-always-on;
}; };
}; };
@ -217,7 +199,7 @@
&qspi0 { &qspi0 {
status = "okay"; status = "okay";
flash@0 { flash@0 {
compatible = "issi,is25wp256", "jedec,spi-nor"; compatible = "jedec,spi-nor";
reg = <0>; reg = <0>;
spi-max-frequency = <50000000>; spi-max-frequency = <50000000>;
m25p,fast-read; m25p,fast-read;
@ -234,6 +216,7 @@
spi-max-frequency = <20000000>; spi-max-frequency = <20000000>;
voltage-ranges = <3300 3300>; voltage-ranges = <3300 3300>;
disable-wp; disable-wp;
gpios = <&gpio 15 GPIO_ACTIVE_LOW>;
}; };
}; };
@ -256,4 +239,8 @@
&gpio { &gpio {
status = "okay"; status = "okay";
gpio-line-names = "J29.1", "PMICNTB", "PMICSHDN", "J8.1", "J8.3",
"PCIe_PWREN", "THERM", "UBRDG_RSTN", "PCIe_PERSTN",
"ULPI_RSTN", "J8.2", "UHUB_RSTN", "GEMGXL_RST", "J8.4",
"EN_VDD_SD", "SD_CD";
}; };

View file

@ -93,30 +93,57 @@ int turris_atsha_otp_init_mac_addresses(int first_idx)
return 0; return 0;
} }
int turris_atsha_otp_get_serial_number(u32 *version_num, u32 *serial_num) int turris_atsha_otp_init_serial_number(void)
{
char serial[17];
int ret;
ret = turris_atsha_otp_get_serial_number(serial);
if (ret)
return ret;
if (!env_get("serial#"))
return -1;
return 0;
}
int turris_atsha_otp_get_serial_number(char serial[17])
{ {
struct udevice *dev = get_atsha204a_dev(); struct udevice *dev = get_atsha204a_dev();
u32 version_num, serial_num;
const char *serial_env;
int ret; int ret;
if (!dev) if (!dev)
return -1; return -1;
serial_env = env_get("serial#");
if (serial_env && strlen(serial_env) == 16) {
memcpy(serial, serial_env, 17);
return 0;
}
ret = atsha204a_wakeup(dev); ret = atsha204a_wakeup(dev);
if (ret) if (ret)
return ret; return ret;
ret = atsha204a_read(dev, ATSHA204A_ZONE_OTP, false, ret = atsha204a_read(dev, ATSHA204A_ZONE_OTP, false,
TURRIS_ATSHA_OTP_VERSION, TURRIS_ATSHA_OTP_VERSION,
(u8 *)version_num); (u8 *)&version_num);
if (ret) if (ret)
return ret; return ret;
ret = atsha204a_read(dev, ATSHA204A_ZONE_OTP, false, ret = atsha204a_read(dev, ATSHA204A_ZONE_OTP, false,
TURRIS_ATSHA_OTP_SERIAL, TURRIS_ATSHA_OTP_SERIAL,
(u8 *)serial_num); (u8 *)&serial_num);
if (ret) if (ret)
return ret; return ret;
atsha204a_sleep(dev); atsha204a_sleep(dev);
sprintf(serial, "%08X%08X", be32_to_cpu(version_num), be32_to_cpu(serial_num));
env_set("serial#", serial);
return 0; return 0;
} }

View file

@ -4,6 +4,7 @@
#define TURRIS_ATSHA_OTP_H #define TURRIS_ATSHA_OTP_H
int turris_atsha_otp_init_mac_addresses(int first_idx); int turris_atsha_otp_init_mac_addresses(int first_idx);
int turris_atsha_otp_get_serial_number(u32 *version_num, u32 *serial_num); int turris_atsha_otp_init_serial_number(void);
int turris_atsha_otp_get_serial_number(char serial[17]);
#endif #endif

View file

@ -23,6 +23,7 @@
#include <linux/string.h> #include <linux/string.h>
#include <miiphy.h> #include <miiphy.h>
#include <spi.h> #include <spi.h>
#include <spi_flash.h>
#include "mox_sp.h" #include "mox_sp.h"
@ -339,6 +340,51 @@ static int get_reset_gpio(struct gpio_desc *reset_gpio)
return 0; return 0;
} }
/* Load default system DTB binary to $fdr_addr */
static void load_spi_dtb(void)
{
const char *const env_name[1] = { "fdt_addr" };
unsigned long size, offset;
struct udevice *spi_dev;
struct spi_flash *flash;
const char *addr_str;
unsigned long addr;
void *buf;
addr_str = env_get(env_name[0]);
if (!addr_str) {
env_set_default_vars(1, (char * const *)env_name, 0);
addr_str = env_get(env_name[0]);
}
if (!addr_str)
return;
addr = hextoul(addr_str, NULL);
if (!addr)
return;
spi_flash_probe_bus_cs(CONFIG_SF_DEFAULT_BUS, CONFIG_SF_DEFAULT_CS, &spi_dev);
flash = dev_get_uclass_priv(spi_dev);
if (!flash)
return;
/*
* SPI NOR "dtb" partition offset & size hardcoded for now because the
* mtd subsystem does not offer finding the partition yet and we do not
* want to reimplement OF partition parser here.
*/
offset = 0x7f0000;
size = 0x10000;
buf = map_physmem(addr, size, MAP_WRBACK);
if (!buf)
return;
spi_flash_read(flash, offset, size, buf);
unmap_physmem(buf, size);
}
int misc_init_r(void) int misc_init_r(void)
{ {
u8 mac[2][6]; u8 mac[2][6];
@ -358,6 +404,8 @@ int misc_init_r(void)
eth_env_set_enetaddr_by_index("eth", i, mac[i]); eth_env_set_enetaddr_by_index("eth", i, mac[i]);
} }
load_spi_dtb();
return 0; return 0;
} }
@ -440,8 +488,9 @@ static void handle_reset_button(void)
env_set_default_vars(1, (char * const *)vars, 0); env_set_default_vars(1, (char * const *)vars, 0);
if (read_reset_button()) { if (read_reset_button()) {
const char * const vars[2] = { const char * const vars[3] = {
"bootcmd", "bootcmd",
"bootdelay",
"distro_bootcmd", "distro_bootcmd",
}; };
@ -449,7 +498,7 @@ static void handle_reset_button(void)
* Set the above envs to their default values, in case the user * Set the above envs to their default values, in case the user
* managed to break them. * managed to break them.
*/ */
env_set_default_vars(2, (char * const *)vars, 0); env_set_default_vars(3, (char * const *)vars, 0);
/* Ensure bootcmd_rescue is used by distroboot */ /* Ensure bootcmd_rescue is used by distroboot */
env_set("boot_targets", "rescue"); env_set("boot_targets", "rescue");

View file

@ -549,8 +549,9 @@ static void handle_reset_button(void)
env_set_ulong("omnia_reset", reset_status); env_set_ulong("omnia_reset", reset_status);
if (reset_status) { if (reset_status) {
const char * const vars[2] = { const char * const vars[3] = {
"bootcmd", "bootcmd",
"bootdelay",
"distro_bootcmd", "distro_bootcmd",
}; };
@ -558,7 +559,7 @@ static void handle_reset_button(void)
* Set the above envs to their default values, in case the user * Set the above envs to their default values, in case the user
* managed to break them. * managed to break them.
*/ */
env_set_default_vars(2, (char * const *)vars, 0); env_set_default_vars(3, (char * const *)vars, 0);
/* Ensure bootcmd_rescue is used by distroboot */ /* Ensure bootcmd_rescue is used by distroboot */
env_set("boot_targets", "rescue"); env_set("boot_targets", "rescue");
@ -653,7 +654,7 @@ static void initialize_switch(void)
ctrl[1] = EXT_CTL_nRES_LAN; ctrl[1] = EXT_CTL_nRES_LAN;
err = omnia_mcu_write(CMD_EXT_CONTROL, ctrl, sizeof(ctrl)); err = omnia_mcu_write(CMD_EXT_CONTROL, ctrl, sizeof(ctrl));
mdelay(10); mdelay(50);
/* Change RGMII pins back to RGMII mode */ /* Change RGMII pins back to RGMII mode */
@ -963,19 +964,15 @@ int board_late_init(void)
int show_board_info(void) int show_board_info(void)
{ {
u32 version_num, serial_num; char serial[17];
int err; int err;
err = turris_atsha_otp_get_serial_number(&version_num, &serial_num); err = turris_atsha_otp_get_serial_number(serial);
printf("Model: Turris Omnia\n"); printf("Model: Turris Omnia\n");
printf(" MCU type: %s\n", omnia_get_mcu_type()); printf(" MCU type: %s\n", omnia_get_mcu_type());
printf(" MCU version: %s\n", omnia_get_mcu_version()); printf(" MCU version: %s\n", omnia_get_mcu_version());
printf(" RAM size: %i MiB\n", omnia_get_ram_size_gb() * 1024); printf(" RAM size: %i MiB\n", omnia_get_ram_size_gb() * 1024);
if (err) printf(" Serial Number: %s\n", !err ? serial : "unknown");
printf(" Serial Number: unknown\n");
else
printf(" Serial Number: %08X%08X\n", be32_to_cpu(version_num),
be32_to_cpu(serial_num));
return 0; return 0;
} }
@ -983,6 +980,7 @@ int show_board_info(void)
int misc_init_r(void) int misc_init_r(void)
{ {
turris_atsha_otp_init_mac_addresses(1); turris_atsha_otp_init_mac_addresses(1);
turris_atsha_otp_init_serial_number();
return 0; return 0;
} }

View file

@ -132,6 +132,8 @@ int board_late_init(void)
dev = mmc_dev->dev; dev = mmc_dev->dev;
device_remove(dev, DM_REMOVE_NORMAL); device_remove(dev, DM_REMOVE_NORMAL);
device_unbind(dev); device_unbind(dev);
if (of_live_active())
ofnode_set_enabled(dev_ofnode(dev), false);
} }
/* Ensure that 'env default -a' set correct value to $fdtfile */ /* Ensure that 'env default -a' set correct value to $fdtfile */

View file

@ -0,0 +1,12 @@
if TARGET_MX6ULZ_SMM_M2
config SYS_BOARD
default "imx6ulz_smm_m2"
config SYS_VENDOR
default "bsh"
config SYS_CONFIG_NAME
default "imx6ulz_smm_m2"
endif

View file

@ -0,0 +1,6 @@
MX6ULZ_SMM_M2 BOARD
M: Michael Trimarchi <michael@amarulasolutions.com>
S: Maintained
F: board/bsh/mx6ulz_smm_m2/
F: include/configs/imx6ulz_smm_m2.h
F: configs/imx6ulz_smm_m2_defconfig

View file

@ -0,0 +1,6 @@
# SPDX-License-Identifier: GPL-2.0+
# (C) Copyright 2021 Amarula Solutions B.V.
obj-y := imx6ulz_smm_m2.o
obj-$(CONFIG_SPL_BUILD) += spl.o

View file

@ -0,0 +1,67 @@
How to Update U-Boot on imx6ulz_smm_m2 board
--------------------------------------------
Required software on the host PC:
- UUU: https://github.com/NXPmicro/mfgtools
Build U-Boot for m2:
$ make mrproper
$ make imx6ulz_smm_m2_defconfig
$ make
This generates the SPL and u-boot-dtb.img binaries.
1. Loading U-Boot via USB Serial Download Protocol
Copy SPL and u-boot-dtb.img to the uuu folder.
Load the U-Boot via USB:
$ sudo uuu -v -b nand_script.lst u-boot-with-spl.imx
where nand_script.lst contains the following:
uuu_version 1.2.39
# @_flash.bin | bootloader
# @_image [_flash.bin] | image burn to nand, default is the same as bootloader
# This command will be run when i.MX6/7 i.MX8MM, i.MX8MQ
SDP: boot -f _flash.bin
# This command will be run when ROM support stream mode
# i.MX8QXP, i.MX8QM
SDPS: boot -f _flash.bin
# These commands will be run when use SPL and will be skipped if no spl
# SDPU will be deprecated. please use SDPV instead of SDPU
# {
SDPU: delay 1000
SDPU: write -f _flash.bin -offset 0x57c00
SDPU: jump
# }
# These commands will be run when use SPL and will be skipped if no spl
# if (SPL support SDPV)
# {
SDPV: delay 1000
SDPV: write -f _flash.bin -offset 0x11000
SDPV: jump
# }
FB: ucmd setenv fastboot_buffer ${loadaddr}
FB: download -f _image
FB: ucmd if test ! -n "$fastboot_bytes"; then setenv fastboot_bytes $filesize; else true; fi
# Burn image to nandfit partition if needed
FB: ucmd if env exists nandfit_part; then nand erase.part nandfit; nand write ${fastboot_buffer} nandfit ${fastboot_bytes}; else true; fi;
FB: ucmd nandbcb init ${fastboot_buffer} nandboot ${fastboot_bytes}
FB: Done
Then U-Boot starts and its messages appear in the console program.
Use the default environment variables:
=> env default -f -a
=> saveenv

View file

@ -0,0 +1,53 @@
// SPDX-License-Identifier: GPL-2.0+
/*
*
* Copyright (C) 2021 BSH Hausgeraete GmbH
*/
#include <init.h>
#include <asm/arch/clock.h>
#include <asm/arch/iomux.h>
#include <asm/arch/imx-regs.h>
#include <asm/arch/crm_regs.h>
#include <asm/arch/mx6-pins.h>
#include <asm/arch/sys_proto.h>
#include <asm/mach-imx/boot_mode.h>
#include <asm/global_data.h>
#include <asm/gpio.h>
#include <common.h>
#include <env.h>
#include <linux/sizes.h>
static void setup_gpmi_nand(void)
{
setup_gpmi_io_clk((MXC_CCM_CS2CDR_ENFC_CLK_PODF(0) |
MXC_CCM_CS2CDR_ENFC_CLK_PRED(3) |
MXC_CCM_CS2CDR_ENFC_CLK_SEL(3)));
};
int dram_init(void)
{
gd->ram_size = imx_ddr_size();
return 0;
}
int board_init(void)
{
/* Address of boot parameters */
gd->bd->bi_boot_params = PHYS_SDRAM + 0x100;
setup_gpmi_nand();
return 0;
}
int board_late_init(void)
{
if (is_boot_from_usb()) {
env_set("bootcmd", "run bootcmd_mfg");
env_set("bootdelay", "0");
}
return 0;
}

View file

@ -0,0 +1,130 @@
// SPDX-License-Identifier: GPL-2.0+
#include <common.h>
#include <cpu_func.h>
#include <hang.h>
#include <init.h>
#include <asm/arch/clock.h>
#include <asm/arch/iomux.h>
#include <asm/arch/imx-regs.h>
#include <asm/arch/crm_regs.h>
#include <asm/arch/mx6ull_pins.h>
#include <asm/arch/mx6-pins.h>
#include <asm/arch/sys_proto.h>
#include <asm/gpio.h>
#include <asm/mach-imx/iomux-v3.h>
#include <asm/mach-imx/boot_mode.h>
#include <linux/libfdt.h>
#include <spl.h>
#include <asm/arch/mx6-ddr.h>
#define UART_PAD_CTRL (PAD_CTL_PKE | PAD_CTL_PUE | \
PAD_CTL_PUS_100K_UP | PAD_CTL_SPEED_MED | \
PAD_CTL_DSE_40ohm | PAD_CTL_SRE_FAST | PAD_CTL_HYS)
static const iomux_v3_cfg_t uart4_pads[] = {
MX6_PAD_UART4_TX_DATA__UART4_DCE_TX | MUX_PAD_CTRL(UART_PAD_CTRL),
MX6_PAD_UART4_RX_DATA__UART4_DCE_RX | MUX_PAD_CTRL(UART_PAD_CTRL),
};
static void setup_iomux_uart(void)
{
imx_iomux_v3_setup_multiple_pads(uart4_pads, ARRAY_SIZE(uart4_pads));
}
static struct mx6ul_iomux_grp_regs mx6_grp_ioregs = {
.grp_addds = 0x00000028,
.grp_ddrmode_ctl = 0x00020000,
.grp_b0ds = 0x00000028,
.grp_ctlds = 0x00000028,
.grp_b1ds = 0x00000028,
.grp_ddrpke = 0x00000000,
.grp_ddrmode = 0x00020000,
.grp_ddr_type = 0x000c0000,
};
static struct mx6ul_iomux_ddr_regs mx6_ddr_ioregs = {
.dram_dqm0 = 0x00000028,
.dram_dqm1 = 0x00000028,
.dram_ras = 0x00000028,
.dram_cas = 0x00000028,
.dram_odt0 = 0x00000028,
.dram_odt1 = 0x00000028,
.dram_sdba2 = 0x00000000,
.dram_sdclk_0 = 0x00000028,
.dram_sdqs0 = 0x00000028,
.dram_sdqs1 = 0x00000028,
.dram_reset = 0x000c0028,
};
static struct mx6_mmdc_calibration mx6_mmcd_calib = {
.p0_mpwldectrl0 = 0x00000000,
.p0_mpwldectrl1 = 0x00100010,
.p0_mpdgctrl0 = 0x414c014c,
.p0_mpdgctrl1 = 0x00000000,
.p0_mprddlctl = 0x40403a42,
.p0_mpwrdlctl = 0x4040342e,
};
static struct mx6_ddr_sysinfo ddr_sysinfo = {
.dsize = 0,
.cs1_mirror = 0,
.cs_density = 32,
.ncs = 1,
.bi_on = 1,
.rtt_nom = 1,
.rtt_wr = 0,
.ralat = 5,
.walat = 1,
.mif3_mode = 3,
.rst_to_cke = 0x23, /* 33 cycles (JEDEC value for DDR3) - total of 500 us */
.sde_to_rst = 0x10, /* 14 cycles (JEDEC value for DDR3) - total of 200 us */
.refsel = 1,
.refr = 3,
};
static struct mx6_ddr3_cfg mem_ddr = {
.mem_speed = 1333,
.density = 2,
.width = 16,
.banks = 8,
.rowaddr = 13,
.coladdr = 10,
.pagesz = 2,
.trcd = 1350,
.trcmin = 4950,
.trasmin = 3600,
};
static void ccgr_init(void)
{
struct mxc_ccm_reg *ccm = (struct mxc_ccm_reg *)CCM_BASE_ADDR;
writel(0xFFFFFFFF, &ccm->CCGR0);
writel(0xFFFFFFFF, &ccm->CCGR1);
writel(0xFFFFFFFF, &ccm->CCGR2);
writel(0xFFFFFFFF, &ccm->CCGR3);
writel(0xFFFFFFFF, &ccm->CCGR4);
writel(0xFFFFFFFF, &ccm->CCGR5);
writel(0xFFFFFFFF, &ccm->CCGR6);
}
static void imx6ul_spl_dram_cfg(void)
{
mx6ul_dram_iocfg(mem_ddr.width, &mx6_ddr_ioregs, &mx6_grp_ioregs);
mx6_dram_cfg(&ddr_sysinfo, &mx6_mmcd_calib, &mem_ddr);
}
void board_init_f(ulong dummy)
{
ccgr_init();
arch_cpu_init();
timer_init();
setup_iomux_uart();
preloader_console_init();
imx6ul_spl_dram_cfg();
}
void reset_cpu(void)
{
}

View file

@ -22,7 +22,7 @@ static struct dram_cfg_param ddr_ddrc_cfg[] = {
{ 0x3d4000d4, 0x940000 }, { 0x3d4000d4, 0x940000 },
{ 0x3d4000dc, 0xd4002d }, { 0x3d4000dc, 0xd4002d },
{ 0x3d4000e0, 0x310000 }, { 0x3d4000e0, 0x310000 },
{ 0x3d4000e8, 0x66004d }, { 0x3d4000e8, 0x36004d },
{ 0x3d4000ec, 0x16004d }, { 0x3d4000ec, 0x16004d },
{ 0x3d400100, 0x191e1920 }, { 0x3d400100, 0x191e1920 },
{ 0x3d400104, 0x60630 }, { 0x3d400104, 0x60630 },
@ -55,6 +55,7 @@ static struct dram_cfg_param ddr_ddrc_cfg[] = {
{ 0x3d400204, 0x80808 }, { 0x3d400204, 0x80808 },
{ 0x3d400214, 0x7070707 }, { 0x3d400214, 0x7070707 },
{ 0x3d400218, 0x7070707 }, { 0x3d400218, 0x7070707 },
{ 0x3d40021c, 0xf0f },
{ 0x3d400250, 0x29001701 }, { 0x3d400250, 0x29001701 },
{ 0x3d400254, 0x2c }, { 0x3d400254, 0x2c },
{ 0x3d40025c, 0x4000030 }, { 0x3d40025c, 0x4000030 },
@ -72,7 +73,7 @@ static struct dram_cfg_param ddr_ddrc_cfg[] = {
{ 0x3d402064, 0xc001c }, { 0x3d402064, 0xc001c },
{ 0x3d4020dc, 0x840000 }, { 0x3d4020dc, 0x840000 },
{ 0x3d4020e0, 0x310000 }, { 0x3d4020e0, 0x310000 },
{ 0x3d4020e8, 0x66004d }, { 0x3d4020e8, 0x36004d },
{ 0x3d4020ec, 0x16004d }, { 0x3d4020ec, 0x16004d },
{ 0x3d402100, 0xa040305 }, { 0x3d402100, 0xa040305 },
{ 0x3d402104, 0x30407 }, { 0x3d402104, 0x30407 },
@ -97,7 +98,7 @@ static struct dram_cfg_param ddr_ddrc_cfg[] = {
{ 0x3d403064, 0x30007 }, { 0x3d403064, 0x30007 },
{ 0x3d4030dc, 0x840000 }, { 0x3d4030dc, 0x840000 },
{ 0x3d4030e0, 0x310000 }, { 0x3d4030e0, 0x310000 },
{ 0x3d4030e8, 0x66004d }, { 0x3d4030e8, 0x36004d },
{ 0x3d4030ec, 0x16004d }, { 0x3d4030ec, 0x16004d },
{ 0x3d403100, 0xa010102 }, { 0x3d403100, 0xa010102 },
{ 0x3d403104, 0x30404 }, { 0x3d403104, 0x30404 },
@ -1059,25 +1060,25 @@ static struct dram_cfg_param ddr_fsp0_cfg[] = {
{ 0x54012, 0x110 }, { 0x54012, 0x110 },
{ 0x54019, 0x2dd4 }, { 0x54019, 0x2dd4 },
{ 0x5401a, 0x31 }, { 0x5401a, 0x31 },
{ 0x5401b, 0x4d66 }, { 0x5401b, 0x4d36 },
{ 0x5401c, 0x4d00 }, { 0x5401c, 0x4d00 },
{ 0x5401e, 0x16 }, { 0x5401e, 0x16 },
{ 0x5401f, 0x2dd4 }, { 0x5401f, 0x2dd4 },
{ 0x54020, 0x31 }, { 0x54020, 0x31 },
{ 0x54021, 0x4d66 }, { 0x54021, 0x4d36 },
{ 0x54022, 0x4d00 }, { 0x54022, 0x4d00 },
{ 0x54024, 0x16 }, { 0x54024, 0x16 },
{ 0x5402b, 0x1000 }, { 0x5402b, 0x1000 },
{ 0x5402c, 0x1 }, { 0x5402c, 0x1 },
{ 0x54032, 0xd400 }, { 0x54032, 0xd400 },
{ 0x54033, 0x312d }, { 0x54033, 0x312d },
{ 0x54034, 0x6600 }, { 0x54034, 0x3600 },
{ 0x54035, 0x4d }, { 0x54035, 0x4d },
{ 0x54036, 0x4d }, { 0x54036, 0x4d },
{ 0x54037, 0x1600 }, { 0x54037, 0x1600 },
{ 0x54038, 0xd400 }, { 0x54038, 0xd400 },
{ 0x54039, 0x312d }, { 0x54039, 0x312d },
{ 0x5403a, 0x6600 }, { 0x5403a, 0x3600 },
{ 0x5403b, 0x4d }, { 0x5403b, 0x4d },
{ 0x5403c, 0x4d }, { 0x5403c, 0x4d },
{ 0x5403d, 0x1600 }, { 0x5403d, 0x1600 },
@ -1098,25 +1099,25 @@ static struct dram_cfg_param ddr_fsp1_cfg[] = {
{ 0x54012, 0x110 }, { 0x54012, 0x110 },
{ 0x54019, 0x84 }, { 0x54019, 0x84 },
{ 0x5401a, 0x31 }, { 0x5401a, 0x31 },
{ 0x5401b, 0x4d66 }, { 0x5401b, 0x4d36 },
{ 0x5401c, 0x4d00 }, { 0x5401c, 0x4d00 },
{ 0x5401e, 0x16 }, { 0x5401e, 0x16 },
{ 0x5401f, 0x84 }, { 0x5401f, 0x84 },
{ 0x54020, 0x31 }, { 0x54020, 0x31 },
{ 0x54021, 0x4d66 }, { 0x54021, 0x4d36 },
{ 0x54022, 0x4d00 }, { 0x54022, 0x4d00 },
{ 0x54024, 0x16 }, { 0x54024, 0x16 },
{ 0x5402b, 0x1000 }, { 0x5402b, 0x1000 },
{ 0x5402c, 0x1 }, { 0x5402c, 0x1 },
{ 0x54032, 0x8400 }, { 0x54032, 0x8400 },
{ 0x54033, 0x3100 }, { 0x54033, 0x3100 },
{ 0x54034, 0x6600 }, { 0x54034, 0x3600 },
{ 0x54035, 0x4d }, { 0x54035, 0x4d },
{ 0x54036, 0x4d }, { 0x54036, 0x4d },
{ 0x54037, 0x1600 }, { 0x54037, 0x1600 },
{ 0x54038, 0x8400 }, { 0x54038, 0x8400 },
{ 0x54039, 0x3100 }, { 0x54039, 0x3100 },
{ 0x5403a, 0x6600 }, { 0x5403a, 0x3600 },
{ 0x5403b, 0x4d }, { 0x5403b, 0x4d },
{ 0x5403c, 0x4d }, { 0x5403c, 0x4d },
{ 0x5403d, 0x1600 }, { 0x5403d, 0x1600 },
@ -1137,25 +1138,25 @@ static struct dram_cfg_param ddr_fsp2_cfg[] = {
{ 0x54012, 0x110 }, { 0x54012, 0x110 },
{ 0x54019, 0x84 }, { 0x54019, 0x84 },
{ 0x5401a, 0x31 }, { 0x5401a, 0x31 },
{ 0x5401b, 0x4d66 }, { 0x5401b, 0x4d36 },
{ 0x5401c, 0x4d00 }, { 0x5401c, 0x4d00 },
{ 0x5401e, 0x16 }, { 0x5401e, 0x16 },
{ 0x5401f, 0x84 }, { 0x5401f, 0x84 },
{ 0x54020, 0x31 }, { 0x54020, 0x31 },
{ 0x54021, 0x4d66 }, { 0x54021, 0x4d36 },
{ 0x54022, 0x4d00 }, { 0x54022, 0x4d00 },
{ 0x54024, 0x16 }, { 0x54024, 0x16 },
{ 0x5402b, 0x1000 }, { 0x5402b, 0x1000 },
{ 0x5402c, 0x1 }, { 0x5402c, 0x1 },
{ 0x54032, 0x8400 }, { 0x54032, 0x8400 },
{ 0x54033, 0x3100 }, { 0x54033, 0x3100 },
{ 0x54034, 0x6600 }, { 0x54034, 0x3600 },
{ 0x54035, 0x4d }, { 0x54035, 0x4d },
{ 0x54036, 0x4d }, { 0x54036, 0x4d },
{ 0x54037, 0x1600 }, { 0x54037, 0x1600 },
{ 0x54038, 0x8400 }, { 0x54038, 0x8400 },
{ 0x54039, 0x3100 }, { 0x54039, 0x3100 },
{ 0x5403a, 0x6600 }, { 0x5403a, 0x3600 },
{ 0x5403b, 0x4d }, { 0x5403b, 0x4d },
{ 0x5403c, 0x4d }, { 0x5403c, 0x4d },
{ 0x5403d, 0x1600 }, { 0x5403d, 0x1600 },
@ -1177,25 +1178,25 @@ static struct dram_cfg_param ddr_fsp0_2d_cfg[] = {
{ 0x54012, 0x110 }, { 0x54012, 0x110 },
{ 0x54019, 0x2dd4 }, { 0x54019, 0x2dd4 },
{ 0x5401a, 0x31 }, { 0x5401a, 0x31 },
{ 0x5401b, 0x4d66 }, { 0x5401b, 0x4d36 },
{ 0x5401c, 0x4d00 }, { 0x5401c, 0x4d00 },
{ 0x5401e, 0x16 }, { 0x5401e, 0x16 },
{ 0x5401f, 0x2dd4 }, { 0x5401f, 0x2dd4 },
{ 0x54020, 0x31 }, { 0x54020, 0x31 },
{ 0x54021, 0x4d66 }, { 0x54021, 0x4d36 },
{ 0x54022, 0x4d00 }, { 0x54022, 0x4d00 },
{ 0x54024, 0x16 }, { 0x54024, 0x16 },
{ 0x5402b, 0x1000 }, { 0x5402b, 0x1000 },
{ 0x5402c, 0x1 }, { 0x5402c, 0x1 },
{ 0x54032, 0xd400 }, { 0x54032, 0xd400 },
{ 0x54033, 0x312d }, { 0x54033, 0x312d },
{ 0x54034, 0x6600 }, { 0x54034, 0x3600 },
{ 0x54035, 0x4d }, { 0x54035, 0x4d },
{ 0x54036, 0x4d }, { 0x54036, 0x4d },
{ 0x54037, 0x1600 }, { 0x54037, 0x1600 },
{ 0x54038, 0xd400 }, { 0x54038, 0xd400 },
{ 0x54039, 0x312d }, { 0x54039, 0x312d },
{ 0x5403a, 0x6600 }, { 0x5403a, 0x3600 },
{ 0x5403b, 0x4d }, { 0x5403b, 0x4d },
{ 0x5403c, 0x4d }, { 0x5403c, 0x4d },
{ 0x5403d, 0x1600 }, { 0x5403d, 0x1600 },
@ -1692,15 +1693,15 @@ static struct dram_cfg_param ddr_phy_pie[] = {
{ 0x400d6, 0x20a }, { 0x400d6, 0x20a },
{ 0x400d7, 0x20b }, { 0x400d7, 0x20b },
{ 0x2003a, 0x2 }, { 0x2003a, 0x2 },
{ 0x2000b, 0x5d }, { 0x2000b, 0x34b },
{ 0x2000c, 0xbb }, { 0x2000c, 0xbb },
{ 0x2000d, 0x753 }, { 0x2000d, 0x753 },
{ 0x2000e, 0x2c }, { 0x2000e, 0x2c },
{ 0x12000b, 0xc }, { 0x12000b, 0x70 },
{ 0x12000c, 0x19 }, { 0x12000c, 0x19 },
{ 0x12000d, 0xfa }, { 0x12000d, 0xfa },
{ 0x12000e, 0x10 }, { 0x12000e, 0x10 },
{ 0x22000b, 0x3 }, { 0x22000b, 0x1c },
{ 0x22000c, 0x6 }, { 0x22000c, 0x6 },
{ 0x22000d, 0x3e }, { 0x22000d, 0x3e },
{ 0x22000e, 0x10 }, { 0x22000e, 0x10 },

View file

@ -22,7 +22,7 @@ static struct dram_cfg_param ddr_ddrc_cfg[] = {
{ 0x3d4000d4, 0x940000 }, { 0x3d4000d4, 0x940000 },
{ 0x3d4000dc, 0xd4002d }, { 0x3d4000dc, 0xd4002d },
{ 0x3d4000e0, 0x310000 }, { 0x3d4000e0, 0x310000 },
{ 0x3d4000e8, 0x66004d }, { 0x3d4000e8, 0x36004d },
{ 0x3d4000ec, 0x16004d }, { 0x3d4000ec, 0x16004d },
{ 0x3d400100, 0x191e1920 }, { 0x3d400100, 0x191e1920 },
{ 0x3d400104, 0x60630 }, { 0x3d400104, 0x60630 },
@ -55,6 +55,7 @@ static struct dram_cfg_param ddr_ddrc_cfg[] = {
{ 0x3d400204, 0x80808 }, { 0x3d400204, 0x80808 },
{ 0x3d400214, 0x7070707 }, { 0x3d400214, 0x7070707 },
{ 0x3d400218, 0x7070707 }, { 0x3d400218, 0x7070707 },
{ 0x3d40021c, 0xf0f },
{ 0x3d400250, 0x29001701 }, { 0x3d400250, 0x29001701 },
{ 0x3d400254, 0x2c }, { 0x3d400254, 0x2c },
{ 0x3d40025c, 0x4000030 }, { 0x3d40025c, 0x4000030 },
@ -72,7 +73,7 @@ static struct dram_cfg_param ddr_ddrc_cfg[] = {
{ 0x3d402064, 0xc001c }, { 0x3d402064, 0xc001c },
{ 0x3d4020dc, 0x840000 }, { 0x3d4020dc, 0x840000 },
{ 0x3d4020e0, 0x310000 }, { 0x3d4020e0, 0x310000 },
{ 0x3d4020e8, 0x66004d }, { 0x3d4020e8, 0x36004d },
{ 0x3d4020ec, 0x16004d }, { 0x3d4020ec, 0x16004d },
{ 0x3d402100, 0xa040305 }, { 0x3d402100, 0xa040305 },
{ 0x3d402104, 0x30407 }, { 0x3d402104, 0x30407 },
@ -1059,25 +1060,25 @@ static struct dram_cfg_param ddr_fsp0_cfg[] = {
{ 0x54012, 0x310 }, { 0x54012, 0x310 },
{ 0x54019, 0x2dd4 }, { 0x54019, 0x2dd4 },
{ 0x5401a, 0x31 }, { 0x5401a, 0x31 },
{ 0x5401b, 0x4d66 }, { 0x5401b, 0x4d36 },
{ 0x5401c, 0x4d00 }, { 0x5401c, 0x4d00 },
{ 0x5401e, 0x16 }, { 0x5401e, 0x16 },
{ 0x5401f, 0x2dd4 }, { 0x5401f, 0x2dd4 },
{ 0x54020, 0x31 }, { 0x54020, 0x31 },
{ 0x54021, 0x4d66 }, { 0x54021, 0x4d36 },
{ 0x54022, 0x4d00 }, { 0x54022, 0x4d00 },
{ 0x54024, 0x16 }, { 0x54024, 0x16 },
{ 0x5402b, 0x1000 }, { 0x5402b, 0x1000 },
{ 0x5402c, 0x3 }, { 0x5402c, 0x3 },
{ 0x54032, 0xd400 }, { 0x54032, 0xd400 },
{ 0x54033, 0x312d }, { 0x54033, 0x312d },
{ 0x54034, 0x6600 }, { 0x54034, 0x3600 },
{ 0x54035, 0x4d }, { 0x54035, 0x4d },
{ 0x54036, 0x4d }, { 0x54036, 0x4d },
{ 0x54037, 0x1600 }, { 0x54037, 0x1600 },
{ 0x54038, 0xd400 }, { 0x54038, 0xd400 },
{ 0x54039, 0x312d }, { 0x54039, 0x312d },
{ 0x5403a, 0x6600 }, { 0x5403a, 0x3600 },
{ 0x5403b, 0x4d }, { 0x5403b, 0x4d },
{ 0x5403c, 0x4d }, { 0x5403c, 0x4d },
{ 0x5403d, 0x1600 }, { 0x5403d, 0x1600 },
@ -1098,25 +1099,25 @@ static struct dram_cfg_param ddr_fsp1_cfg[] = {
{ 0x54012, 0x310 }, { 0x54012, 0x310 },
{ 0x54019, 0x84 }, { 0x54019, 0x84 },
{ 0x5401a, 0x31 }, { 0x5401a, 0x31 },
{ 0x5401b, 0x4d66 }, { 0x5401b, 0x4d36 },
{ 0x5401c, 0x4d00 }, { 0x5401c, 0x4d00 },
{ 0x5401e, 0x16 }, { 0x5401e, 0x16 },
{ 0x5401f, 0x84 }, { 0x5401f, 0x84 },
{ 0x54020, 0x31 }, { 0x54020, 0x31 },
{ 0x54021, 0x4d66 }, { 0x54021, 0x4d36 },
{ 0x54022, 0x4d00 }, { 0x54022, 0x4d00 },
{ 0x54024, 0x16 }, { 0x54024, 0x16 },
{ 0x5402b, 0x1000 }, { 0x5402b, 0x1000 },
{ 0x5402c, 0x3 }, { 0x5402c, 0x3 },
{ 0x54032, 0x8400 }, { 0x54032, 0x8400 },
{ 0x54033, 0x3100 }, { 0x54033, 0x3100 },
{ 0x54034, 0x6600 }, { 0x54034, 0x3600 },
{ 0x54035, 0x4d }, { 0x54035, 0x4d },
{ 0x54036, 0x4d }, { 0x54036, 0x4d },
{ 0x54037, 0x1600 }, { 0x54037, 0x1600 },
{ 0x54038, 0x8400 }, { 0x54038, 0x8400 },
{ 0x54039, 0x3100 }, { 0x54039, 0x3100 },
{ 0x5403a, 0x6600 }, { 0x5403a, 0x3600 },
{ 0x5403b, 0x4d }, { 0x5403b, 0x4d },
{ 0x5403c, 0x4d }, { 0x5403c, 0x4d },
{ 0x5403d, 0x1600 }, { 0x5403d, 0x1600 },
@ -1172,31 +1173,30 @@ static struct dram_cfg_param ddr_fsp0_2d_cfg[] = {
{ 0x54008, 0x61 }, { 0x54008, 0x61 },
{ 0x54009, 0xc8 }, { 0x54009, 0xc8 },
{ 0x5400b, 0x2 }, { 0x5400b, 0x2 },
{ 0x5400d, 0x100 },
{ 0x5400f, 0x100 }, { 0x5400f, 0x100 },
{ 0x54010, 0x1f7f }, { 0x54010, 0x1f7f },
{ 0x54012, 0x310 }, { 0x54012, 0x310 },
{ 0x54019, 0x2dd4 }, { 0x54019, 0x2dd4 },
{ 0x5401a, 0x31 }, { 0x5401a, 0x31 },
{ 0x5401b, 0x4d66 }, { 0x5401b, 0x4d36 },
{ 0x5401c, 0x4d00 }, { 0x5401c, 0x4d00 },
{ 0x5401e, 0x16 }, { 0x5401e, 0x16 },
{ 0x5401f, 0x2dd4 }, { 0x5401f, 0x2dd4 },
{ 0x54020, 0x31 }, { 0x54020, 0x31 },
{ 0x54021, 0x4d66 }, { 0x54021, 0x4d36 },
{ 0x54022, 0x4d00 }, { 0x54022, 0x4d00 },
{ 0x54024, 0x16 }, { 0x54024, 0x16 },
{ 0x5402b, 0x1000 }, { 0x5402b, 0x1000 },
{ 0x5402c, 0x3 }, { 0x5402c, 0x3 },
{ 0x54032, 0xd400 }, { 0x54032, 0xd400 },
{ 0x54033, 0x312d }, { 0x54033, 0x312d },
{ 0x54034, 0x6600 }, { 0x54034, 0x3600 },
{ 0x54035, 0x4d }, { 0x54035, 0x4d },
{ 0x54036, 0x4d }, { 0x54036, 0x4d },
{ 0x54037, 0x1600 }, { 0x54037, 0x1600 },
{ 0x54038, 0xd400 }, { 0x54038, 0xd400 },
{ 0x54039, 0x312d }, { 0x54039, 0x312d },
{ 0x5403a, 0x6600 }, { 0x5403a, 0x3600 },
{ 0x5403b, 0x4d }, { 0x5403b, 0x4d },
{ 0x5403c, 0x4d }, { 0x5403c, 0x4d },
{ 0x5403d, 0x1600 }, { 0x5403d, 0x1600 },
@ -1693,15 +1693,15 @@ static struct dram_cfg_param ddr_phy_pie[] = {
{ 0x400d6, 0x20a }, { 0x400d6, 0x20a },
{ 0x400d7, 0x20b }, { 0x400d7, 0x20b },
{ 0x2003a, 0x2 }, { 0x2003a, 0x2 },
{ 0x2000b, 0x5d }, { 0x2000b, 0x34b },
{ 0x2000c, 0xbb }, { 0x2000c, 0xbb },
{ 0x2000d, 0x753 }, { 0x2000d, 0x753 },
{ 0x2000e, 0x2c }, { 0x2000e, 0x2c },
{ 0x12000b, 0xc }, { 0x12000b, 0x70 },
{ 0x12000c, 0x19 }, { 0x12000c, 0x19 },
{ 0x12000d, 0xfa }, { 0x12000d, 0xfa },
{ 0x12000e, 0x10 }, { 0x12000e, 0x10 },
{ 0x22000b, 0x3 }, { 0x22000b, 0x1c },
{ 0x22000c, 0x6 }, { 0x22000c, 0x6 },
{ 0x22000d, 0x3e }, { 0x22000d, 0x3e },
{ 0x22000e, 0x10 }, { 0x22000e, 0x10 },
@ -1715,6 +1715,10 @@ static struct dram_cfg_param ddr_phy_pie[] = {
{ 0x90013, 0x6152 }, { 0x90013, 0x6152 },
{ 0x20010, 0x5a }, { 0x20010, 0x5a },
{ 0x20011, 0x3 }, { 0x20011, 0x3 },
{ 0x120010, 0x5a },
{ 0x120011, 0x3 },
{ 0x220010, 0x5a },
{ 0x220011, 0x3 },
{ 0x40080, 0xe0 }, { 0x40080, 0xe0 },
{ 0x40081, 0x12 }, { 0x40081, 0x12 },
{ 0x40082, 0xe0 }, { 0x40082, 0xe0 },

View file

@ -1799,8 +1799,8 @@ static struct dram_cfg_param ddr_phy_pie[] = {
static struct dram_fsp_msg ddr_dram_fsp_msg[] = { static struct dram_fsp_msg ddr_dram_fsp_msg[] = {
{ {
/* P0 3732mts 1D */ /* P0 3733mts 1D */
.drate = 3732, .drate = 3733,
.fw_type = FW_1D_IMAGE, .fw_type = FW_1D_IMAGE,
.fsp_cfg = ddr_fsp0_cfg, .fsp_cfg = ddr_fsp0_cfg,
.fsp_cfg_num = ARRAY_SIZE(ddr_fsp0_cfg), .fsp_cfg_num = ARRAY_SIZE(ddr_fsp0_cfg),
@ -1820,8 +1820,8 @@ static struct dram_fsp_msg ddr_dram_fsp_msg[] = {
.fsp_cfg_num = ARRAY_SIZE(ddr_fsp2_cfg), .fsp_cfg_num = ARRAY_SIZE(ddr_fsp2_cfg),
}, },
{ {
/* P0 3732mts 2D */ /* P0 3733mts 2D */
.drate = 3732, .drate = 3733,
.fw_type = FW_2D_IMAGE, .fw_type = FW_2D_IMAGE,
.fsp_cfg = ddr_fsp0_2d_cfg, .fsp_cfg = ddr_fsp0_2d_cfg,
.fsp_cfg_num = ARRAY_SIZE(ddr_fsp0_2d_cfg), .fsp_cfg_num = ARRAY_SIZE(ddr_fsp0_2d_cfg),
@ -1840,5 +1840,5 @@ struct dram_timing_info dh_imx8mp_dhcom_dram_timing_32g_x32 = {
.ddrphy_trained_csr_num = ARRAY_SIZE(ddr_ddrphy_trained_csr), .ddrphy_trained_csr_num = ARRAY_SIZE(ddr_ddrphy_trained_csr),
.ddrphy_pie = ddr_phy_pie, .ddrphy_pie = ddr_phy_pie,
.ddrphy_pie_num = ARRAY_SIZE(ddr_phy_pie), .ddrphy_pie_num = ARRAY_SIZE(ddr_phy_pie),
.fsp_table = { 3732, 400, 100, }, .fsp_table = { 3733, 400, 100, },
}; };

View file

@ -527,56 +527,6 @@ static void sysconf_init(void)
#endif #endif
} }
static void board_init_fmc2(void)
{
#define STM32_FMC2_BCR1 0x0
#define STM32_FMC2_BTR1 0x4
#define STM32_FMC2_BWTR1 0x104
#define STM32_FMC2_BCR(x) ((x) * 0x8 + STM32_FMC2_BCR1)
#define STM32_FMC2_BCRx_FMCEN BIT(31)
#define STM32_FMC2_BCRx_WREN BIT(12)
#define STM32_FMC2_BCRx_RSVD BIT(7)
#define STM32_FMC2_BCRx_FACCEN BIT(6)
#define STM32_FMC2_BCRx_MWID(n) ((n) << 4)
#define STM32_FMC2_BCRx_MTYP(n) ((n) << 2)
#define STM32_FMC2_BCRx_MUXEN BIT(1)
#define STM32_FMC2_BCRx_MBKEN BIT(0)
#define STM32_FMC2_BTR(x) ((x) * 0x8 + STM32_FMC2_BTR1)
#define STM32_FMC2_BTRx_DATAHLD(n) ((n) << 30)
#define STM32_FMC2_BTRx_BUSTURN(n) ((n) << 16)
#define STM32_FMC2_BTRx_DATAST(n) ((n) << 8)
#define STM32_FMC2_BTRx_ADDHLD(n) ((n) << 4)
#define STM32_FMC2_BTRx_ADDSET(n) ((n) << 0)
#define RCC_MP_AHB6RSTCLRR 0x218
#define RCC_MP_AHB6RSTCLRR_FMCRST BIT(12)
#define RCC_MP_AHB6ENSETR 0x19c
#define RCC_MP_AHB6ENSETR_FMCEN BIT(12)
const u32 bcr = STM32_FMC2_BCRx_WREN |STM32_FMC2_BCRx_RSVD |
STM32_FMC2_BCRx_FACCEN | STM32_FMC2_BCRx_MWID(1) |
STM32_FMC2_BCRx_MTYP(2) | STM32_FMC2_BCRx_MUXEN |
STM32_FMC2_BCRx_MBKEN;
const u32 btr = STM32_FMC2_BTRx_DATAHLD(3) |
STM32_FMC2_BTRx_BUSTURN(2) |
STM32_FMC2_BTRx_DATAST(0x22) |
STM32_FMC2_BTRx_ADDHLD(2) |
STM32_FMC2_BTRx_ADDSET(2);
/* Set up FMC2 bus for KS8851-16MLL and X11 SRAM */
writel(RCC_MP_AHB6RSTCLRR_FMCRST, STM32_RCC_BASE + RCC_MP_AHB6RSTCLRR);
writel(RCC_MP_AHB6ENSETR_FMCEN, STM32_RCC_BASE + RCC_MP_AHB6ENSETR);
/* KS8851-16MLL -- Muxed mode */
writel(bcr, STM32_FMC2_BASE + STM32_FMC2_BCR(1));
writel(btr, STM32_FMC2_BASE + STM32_FMC2_BTR(1));
/* AS7C34098 SRAM on X11 -- Muxed mode */
writel(bcr, STM32_FMC2_BASE + STM32_FMC2_BCR(3));
writel(btr, STM32_FMC2_BASE + STM32_FMC2_BTR(3));
setbits_le32(STM32_FMC2_BASE + STM32_FMC2_BCR1, STM32_FMC2_BCRx_FMCEN);
}
#ifdef CONFIG_DM_REGULATOR #ifdef CONFIG_DM_REGULATOR
#define STPMIC_NVM_BUCKS_VOUT_SHR 0xfc #define STPMIC_NVM_BUCKS_VOUT_SHR 0xfc
#define STPMIC_NVM_BUCKS_VOUT_SHR_BUCK_1V2 0 #define STPMIC_NVM_BUCKS_VOUT_SHR_BUCK_1V2 0
@ -671,8 +621,6 @@ int board_init(void)
sysconf_init(); sysconf_init();
board_init_fmc2();
return 0; return 0;
} }

View file

@ -70,7 +70,7 @@ int rockchip_dnl_key_pressed(void)
{ {
unsigned int val; unsigned int val;
if (adc_channel_single_shot("saradc", 1, &val)) { if (adc_channel_single_shot("saradc@ff1e0000", 1, &val)) {
printf("%s read adc key val failed\n", __func__); printf("%s read adc key val failed\n", __func__);
return false; return false;
} }

View file

@ -0,0 +1,22 @@
if TARGET_IMXRT1170_EVK
config SYS_BOARD
string
default "imxrt1170-evk"
config SYS_VENDOR
string
default "freescale"
config SYS_SOC
string
default "imxrt1170"
config SYS_CONFIG_NAME
string
default "imxrt1170-evk"
config IMX_CONFIG
default "board/freescale/imxrt1170-evk/imximage.cfg"
endif

View file

@ -0,0 +1,7 @@
IMXRT1170 EVALUATION KIT
M: Giulio Benetti <giulio.benetti@benettiengineering.com>
M: Jesse Taube <Mr.Bossman075@gmail.com>
S: Maintained
F: board/freescale/imxrt1170-evk
F: include/configs/imxrt1170-evk.h
F: configs/imxrt1170-evk_defconfig

View file

@ -0,0 +1,6 @@
# SPDX-License-Identifier: GPL-2.0+
#
# Copyright (C) 2019
# Author(s): Giulio Benetti <giulio.benetti@benettiengineering.com>
obj-y := imxrt1170-evk.o

View file

@ -0,0 +1,31 @@
/* SPDX-License-Identifier: GPL-2.0+ */
/*
* Copyright (C) 2022
* Author(s): Jesse Taube <Mr.Bossman075@gmail.com>
* Giulio Benetti <giulio.benetti@benettiengineering.com>
*/
#include <config.h>
/* image version */
IMAGE_VERSION 2
/*
* Boot Device : one of
* spi/sd/nand/onenand, qspi/nor
*/
BOOT_FROM sd
/*
* Device Configuration Data (DCD)
*
* Each entry must have the format:
* Addr-type Address Value
*
* where:
* Addr-type register length (1,2 or 4 bytes)
* Address absolute address of the register
* value value to be stored in the register
*/

View file

@ -0,0 +1,80 @@
// SPDX-License-Identifier: GPL-2.0+
/*
* Copyright (C) 2019
* Author(s): Giulio Benetti <giulio.benetti@benettiengineering.com>
*/
#include <common.h>
#include <dm.h>
#include <init.h>
#include <log.h>
#include <ram.h>
#include <spl.h>
#include <asm/global_data.h>
#include <asm/io.h>
#include <asm/armv7m.h>
#include <serial.h>
DECLARE_GLOBAL_DATA_PTR;
int dram_init(void)
{
#ifndef CONFIG_SUPPORT_SPL
int rv;
struct udevice *dev;
rv = uclass_get_device(UCLASS_RAM, 0, &dev);
if (rv) {
debug("DRAM init failed: %d\n", rv);
return rv;
}
#endif
return fdtdec_setup_mem_size_base();
}
int dram_init_banksize(void)
{
return fdtdec_setup_memory_banksize();
}
#ifdef CONFIG_SPL_BUILD
#ifdef CONFIG_SPL_OS_BOOT
int spl_start_uboot(void)
{
debug("SPL: booting kernel\n");
/* break into full u-boot on 'c' */
return serial_tstc() && serial_getc() == 'c';
}
#endif
int spl_dram_init(void)
{
struct udevice *dev;
int rv;
rv = uclass_get_device(UCLASS_RAM, 0, &dev);
if (rv)
debug("DRAM init failed: %d\n", rv);
return rv;
}
void spl_board_init(void)
{
preloader_console_init();
spl_dram_init();
arch_cpu_init(); /* to configure mpu for sdram rw permissions */
}
u32 spl_boot_device(void)
{
return BOOT_DEVICE_MMC1;
}
#endif
int board_init(void)
{
gd->bd->bi_boot_params = gd->bd->bi_dram[0].start + 0x100;
return 0;
}

View file

@ -114,7 +114,7 @@ dimm_params_t ddr_raw_timing = {
.mirrored_dimm = 0, .mirrored_dimm = 0,
.n_row_addr = 15, .n_row_addr = 15,
.n_col_addr = 10, .n_col_addr = 10,
.bank_addr_bits = 0, .bank_addr_bits = 2,
.bank_group_bits = 2, .bank_group_bits = 2,
.edc_config = 0, .edc_config = 0,
.burst_lengths_bitmask = 0x0c, .burst_lengths_bitmask = 0x0c,

View file

@ -60,5 +60,5 @@ enabled in relative defconfig file,
CONFIG_RESET_VECTOR_ADDRESS - 0xffc CONFIG_RESET_VECTOR_ADDRESS - 0xffc
If device tree support is enabled in defconfig, If device tree support is enabled in defconfig,
1. use 'u-boot-with-dtb.bin' for NOR boot. 1. use 'u-boot.bin' for NOR boot.
2. use 'u-boot-with-spl.bin' for other boot. 2. use 'u-boot-with-spl.bin' for other boot.

Some files were not shown because too many files have changed in this diff Show more