Compare commits
8 Commits
add-vision
...
std2
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
802f8d87f3 | ||
|
|
1e6da4a507 | ||
|
|
6cf6875075 | ||
|
|
79732a01e3 | ||
|
|
00c709200b | ||
|
|
0418227594 | ||
|
|
7dd41ebddb | ||
|
|
e6acc59e62 |
1
Makefile
1
Makefile
@@ -1844,6 +1844,7 @@ quiet_cmd_gen_envp = ENVP $@
|
||||
$(CPP) -P $(cpp_flags) -x assembler-with-cpp -undef \
|
||||
-D__ASSEMBLY__ \
|
||||
-D__UBOOT_CONFIG__ \
|
||||
-DDEFAULT_DEVICE_TREE=$(subst ",,$(CONFIG_DEFAULT_DEVICE_TREE)) \
|
||||
-I . -I include -I $(srctree)/include \
|
||||
-include linux/kconfig.h -include include/config.h \
|
||||
-I$(srctree)/arch/$(ARCH)/include \
|
||||
|
||||
@@ -1147,7 +1147,7 @@ config ARCH_SUNXI
|
||||
select BINMAN
|
||||
select CMD_GPIO
|
||||
select CMD_MMC if MMC
|
||||
select CMD_USB if DISTRO_DEFAULTS && USB_HOST
|
||||
select CMD_USB if BOOTSTD_DEFAULTS && USB_HOST
|
||||
select CLK
|
||||
select DM
|
||||
select DM_GPIO
|
||||
@@ -1169,9 +1169,9 @@ config ARCH_SUNXI
|
||||
select SUNXI_GPIO
|
||||
select SYS_NS16550
|
||||
select SYS_THUMB_BUILD if !ARM64
|
||||
select USB if DISTRO_DEFAULTS
|
||||
select USB_KEYBOARD if DISTRO_DEFAULTS && USB_HOST
|
||||
select USB_STORAGE if DISTRO_DEFAULTS && USB_HOST
|
||||
select USB if BOOTSTD_DEFAULTS
|
||||
select USB_KEYBOARD if BOOTSTD_DEFAULTS && USB_HOST
|
||||
select USB_STORAGE if BOOTSTD_DEFAULTS && USB_HOST
|
||||
select SPL_USE_TINY_PRINTF if SPL
|
||||
select USE_PREBOOT
|
||||
select SYS_RELOC_GD_ENV_ADDR
|
||||
@@ -1179,7 +1179,7 @@ config ARCH_SUNXI
|
||||
imply CMD_DM
|
||||
imply CMD_GPT
|
||||
imply CMD_UBI if MTD_RAW_NAND
|
||||
imply DISTRO_DEFAULTS
|
||||
imply BOOTSTD_DEFAULTS
|
||||
imply DM_REGULATOR
|
||||
imply DM_REGULATOR_FIXED
|
||||
imply FAT_WRITE
|
||||
|
||||
152
board/sunxi/sunxi.env
Normal file
152
board/sunxi/sunxi.env
Normal file
@@ -0,0 +1,152 @@
|
||||
// SPDX-License-Identifier: GPL-2.0+
|
||||
/*
|
||||
* Common sunxi environment
|
||||
*
|
||||
* Copyright 2024 Google LLC
|
||||
* Written by Simon Glass <sjg@chromium.org>
|
||||
/
|
||||
|
||||
/****************************************************************************
|
||||
* environment variables holding default load addresses *
|
||||
****************************************************************************/
|
||||
/*
|
||||
* We cannot use expressions here, because expressions won't be evaluated in
|
||||
* autoconf.mk.
|
||||
*/
|
||||
#ifdef CONFIG_ARM64
|
||||
/*
|
||||
* Boards seem to come with at least 512MB of DRAM.
|
||||
* The kernel should go at 512K, which is the default text offset (that will
|
||||
* be adjusted at runtime if needed).
|
||||
* There is no compression for arm64 kernels (yet), so leave some space
|
||||
* for really big kernels, say 256MB for now.
|
||||
* Scripts, PXE and DTBs should go afterwards, leaving the rest for the initrd.
|
||||
*/
|
||||
#define BOOTM_SIZE 0xa000000
|
||||
#define KERNEL_ADDR_R SDRAM_OFFSET(0080000)
|
||||
#define KERNEL_COMP_ADDR_R SDRAM_OFFSET(4000000)
|
||||
#define KERNEL_COMP_SIZE 0xb000000
|
||||
#define FDT_ADDR_R SDRAM_OFFSET(FA00000)
|
||||
#define SCRIPT_ADDR_R SDRAM_OFFSET(FC00000)
|
||||
#define PXEFILE_ADDR_R SDRAM_OFFSET(FD00000)
|
||||
#define FDTOVERLAY_ADDR_R SDRAM_OFFSET(FE00000)
|
||||
#define RAMDISK_ADDR_R SDRAM_OFFSET(FF00000)
|
||||
|
||||
#elif (CONFIG_SUNXI_MINIMUM_DRAM_MB >= 256)
|
||||
/*
|
||||
* 160M RAM (256M minimum minus 64MB heap + 32MB for u-boot, stack, fb, etc.
|
||||
* 32M uncompressed kernel, 16M compressed kernel, 1M fdt,
|
||||
* 1M script, 1M pxe, 1M dt overlay and the ramdisk at the end.
|
||||
*/
|
||||
#define BOOTM_SIZE 0xa000000
|
||||
#define KERNEL_ADDR_R SDRAM_OFFSET(2000000)
|
||||
#define FDT_ADDR_R SDRAM_OFFSET(3000000)
|
||||
#define SCRIPT_ADDR_R SDRAM_OFFSET(3100000)
|
||||
#define PXEFILE_ADDR_R SDRAM_OFFSET(3200000)
|
||||
#define FDTOVERLAY_ADDR_R SDRAM_OFFSET(3300000)
|
||||
#define RAMDISK_ADDR_R SDRAM_OFFSET(3400000)
|
||||
|
||||
#elif (CONFIG_SUNXI_MINIMUM_DRAM_MB >= 64)
|
||||
/*
|
||||
* 64M RAM minus 2MB heap + 16MB for u-boot, stack, fb, etc.
|
||||
* 16M uncompressed kernel, 8M compressed kernel, 1M fdt,
|
||||
* 1M script, 1M pxe, 1M dt overlay and the ramdisk at the end.
|
||||
*/
|
||||
#define BOOTM_SIZE 0x2e00000
|
||||
#define KERNEL_ADDR_R SDRAM_OFFSET(1000000)
|
||||
#define FDT_ADDR_R SDRAM_OFFSET(1800000)
|
||||
#define SCRIPT_ADDR_R SDRAM_OFFSET(1900000)
|
||||
#define PXEFILE_ADDR_R SDRAM_OFFSET(1A00000)
|
||||
#define FDTOVERLAY_ADDR_R SDRAM_OFFSET(1B00000)
|
||||
#define RAMDISK_ADDR_R SDRAM_OFFSET(1C00000)
|
||||
|
||||
#elif (CONFIG_SUNXI_MINIMUM_DRAM_MB >= 32)
|
||||
/*
|
||||
* 32M RAM minus 2.5MB for u-boot, heap, stack, etc.
|
||||
* 16M uncompressed kernel, 7M compressed kernel, 128K fdt, 64K script,
|
||||
* 128K DT overlay, 128K PXE and the ramdisk in the rest (max. 5MB)
|
||||
*/
|
||||
#define BOOTM_SIZE 0x1700000
|
||||
#define KERNEL_ADDR_R SDRAM_OFFSET(1000000)
|
||||
#define FDT_ADDR_R SDRAM_OFFSET(1d50000)
|
||||
#define SCRIPT_ADDR_R SDRAM_OFFSET(1d40000)
|
||||
#define PXEFILE_ADDR_R SDRAM_OFFSET(1d00000)
|
||||
#define FDTOVERLAY_ADDR_R SDRAM_OFFSET(1d20000)
|
||||
#define RAMDISK_ADDR_R SDRAM_OFFSET(1800000)
|
||||
|
||||
#else
|
||||
#error Need at least 32MB of DRAM. Please adjust load addresses.
|
||||
#endif
|
||||
|
||||
#define UUID_GPT_ESP ""
|
||||
|
||||
#ifdef CONFIG_ARM64
|
||||
#define UUID_GPT_SYSTEM b921b045-1df0-41c3-af44-4c6f280d3fae
|
||||
#else
|
||||
#define UUID_GPT_SYSTEM 69dad710-2ce4-4e3c-b16c-21a1d49abed3
|
||||
#endif
|
||||
|
||||
stdin=serial
|
||||
#ifdef CONFIG_USB_KEYBOARD
|
||||
stdin+=,usbkbd
|
||||
#endif
|
||||
|
||||
stdout=serial
|
||||
stderr=serial
|
||||
#ifdef CONFIG_VIDEO
|
||||
stdout+=,vidconsole
|
||||
stderr+=,vidconsole
|
||||
#endif
|
||||
|
||||
bootm_size=BOOTM_SIZE
|
||||
kernel_addr_r=KERNEL_ADDR_R
|
||||
fdt_addr_r=FDT_ADDR_R
|
||||
scriptaddr=SCRIPT_ADDR_R
|
||||
pxefile_addr_r=PXEFILE_ADDR_R
|
||||
fdtoverlay_addr_r=FDTOVERLAY_ADDR_R
|
||||
ramdisk_addr_r=RAMDISK_ADDR_R
|
||||
|
||||
#ifdef CONFIG_ARM64
|
||||
kernel_comp_addr_r=KERNEL_COMP_ADDR_R
|
||||
kernel_comp_size=KERNEL_COMP_SIZE
|
||||
#endif
|
||||
|
||||
dfu_alt_info_ram=
|
||||
kernel ram KERNEL_ADDR_R 0x1000000;
|
||||
fdt ram FDT_ADDR_R 0x100000;
|
||||
ramdisk ram RAMDISK_ADDR_R 0x4000000
|
||||
|
||||
#ifdef CONFIG_ARM64
|
||||
fdtfile=allwinner/DEFAULT_DEVICE_TREE.dtb
|
||||
#else
|
||||
fdtfile=DEFAULT_DEVICE_TREE.dtb
|
||||
#endif
|
||||
|
||||
console=ttyS0,115200
|
||||
|
||||
uuid_gpt_esp=c12a7328-f81f-11d2-ba4b-00a0c93ec93b
|
||||
#ifdef CONFIG_ARM64
|
||||
uuid_gpt_system=b921b045-1df0-41c3-af44-4c6f280d3fae
|
||||
#else
|
||||
uuid_gpt_system=69dad710-2ce4-4e3c-b16c-21a1d49abed3
|
||||
#endif
|
||||
|
||||
partitions=
|
||||
name=loader1,start=8k,size=32k,uuid=${uuid_gpt_loader1};
|
||||
name=loader2,size=984k,uuid=${uuid_gpt_loader2};
|
||||
name=esp,size=128M,bootable,uuid=${uuid_gpt_esp};
|
||||
name=system,size=-,uuid=${uuid_gpt_system};
|
||||
|
||||
/* support booting a very old kernel */
|
||||
#ifdef CONFIG_OLD_SUNXI_KERNEL_COMPAT
|
||||
bootcmd_sunxi_compat=
|
||||
setenv root /dev/mmcblk0p3 rootwait;
|
||||
if ext2load mmc 0 44000000 uEnv.txt; then
|
||||
"echo Loaded environment from uEnv.txt;
|
||||
"env import -t 44000000 ${filesize};
|
||||
fi;
|
||||
setenv bootargs console=${console} root=${root} ${extraargs};
|
||||
ext2load mmc 0 43000000 script.bin &&
|
||||
ext2load mmc 0 48000000 uImage &&
|
||||
bootm 48000000
|
||||
#endif
|
||||
16
boot/Kconfig
16
boot/Kconfig
@@ -398,7 +398,7 @@ config BOOT_DEFAULTS
|
||||
menuconfig BOOTSTD
|
||||
bool "Standard boot"
|
||||
default y
|
||||
depends on DM && OF_CONTROL && BLK
|
||||
depends on DM && OF_CONTROL
|
||||
help
|
||||
U-Boot supports a standard way of locating something to boot,
|
||||
typically an Operating System such as Linux, provided by a distro such
|
||||
@@ -585,6 +585,20 @@ config BOOTMETH_EFI_BOOTMGR
|
||||
the EFI binary to be launched is determined. To set the EFI variables
|
||||
use the eficonfig command.
|
||||
|
||||
config BOOTMETH_FEL
|
||||
bool "Bootdev support for Sunxi FEL"
|
||||
depends on ARCH_SUNXI
|
||||
default y
|
||||
help
|
||||
Enables support for booting over USB on a Sunxi device. This uses
|
||||
the FEL protocol and obtains the script address from the
|
||||
'fel_scriptaddr' environment variable.
|
||||
|
||||
This method is only available if booting from FEL, i.e. the
|
||||
'fel_booted' environment variable is set.
|
||||
|
||||
See https://linux-sunxi.org/FEL/Protocol for more information.
|
||||
|
||||
config BOOTMETH_QFW
|
||||
bool "Boot method using QEMU parameters"
|
||||
depends on QFW
|
||||
|
||||
@@ -30,6 +30,7 @@ obj-$(CONFIG_$(SPL_TPL_)BOOTMETH_EXTLINUX) += bootmeth_extlinux.o
|
||||
obj-$(CONFIG_$(SPL_TPL_)BOOTMETH_EXTLINUX_PXE) += bootmeth_pxe.o
|
||||
obj-$(CONFIG_$(SPL_TPL_)BOOTMETH_EFILOADER) += bootmeth_efi.o
|
||||
obj-$(CONFIG_$(SPL_TPL_)BOOTMETH_CROS) += bootm.o bootm_os.o bootmeth_cros.o
|
||||
obj-$(CONFIG_$(SPL_TPL_)BOOTMETH_FEL) += bootmeth_fel.o
|
||||
obj-$(CONFIG_$(SPL_TPL_)BOOTMETH_QFW) += bootmeth_qfw.o
|
||||
obj-$(CONFIG_$(SPL_TPL_)BOOTMETH_SANDBOX) += bootmeth_sandbox.o
|
||||
obj-$(CONFIG_$(SPL_TPL_)BOOTMETH_SCRIPT) += bootmeth_script.o
|
||||
|
||||
@@ -434,6 +434,9 @@ int bootdev_find_by_label(const char *label, struct udevice **devp,
|
||||
struct uclass *uc;
|
||||
enum uclass_id id;
|
||||
|
||||
if (!CONFIG_IS_ENABLED(BLK))
|
||||
return -ENOSYS;
|
||||
|
||||
ret = label_to_uclass(label, &seq, &method_flags);
|
||||
if (ret < 0)
|
||||
return log_msg_ret("uc", ret);
|
||||
|
||||
81
boot/bootmeth_fel.c
Normal file
81
boot/bootmeth_fel.c
Normal file
@@ -0,0 +1,81 @@
|
||||
// SPDX-License-Identifier: GPL-2.0+
|
||||
/*
|
||||
* Bootmethod for sunxi FEL loading
|
||||
*
|
||||
* Copyright 2024 Google LLC
|
||||
* Written by Simon Glass <sjg@chromium.org>
|
||||
*/
|
||||
|
||||
#define LOG_CATEGORY UCLASS_BOOTSTD
|
||||
|
||||
#include <bootdev.h>
|
||||
#include <bootflow.h>
|
||||
#include <bootmeth.h>
|
||||
#include <command.h>
|
||||
#include <dm.h>
|
||||
#include <env.h>
|
||||
|
||||
static int fel_check(struct udevice *dev, struct bootflow_iter *iter)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int fel_read_bootflow(struct udevice *dev, struct bootflow *bflow)
|
||||
{
|
||||
if (!env_get("fel_booted") || !env_get("fel_scriptaddr"))
|
||||
return -ENOENT;
|
||||
|
||||
bflow->state = BOOTFLOWST_READY;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int fel_read_file(struct udevice *dev, struct bootflow *bflow,
|
||||
const char *file_path, ulong addr, ulong *sizep)
|
||||
{
|
||||
return -ENOSYS;
|
||||
}
|
||||
|
||||
static int fel_boot(struct udevice *dev, struct bootflow *bflow)
|
||||
{
|
||||
ulong addr;
|
||||
int ret;
|
||||
|
||||
addr = env_get_hex("fel_scriptaddr", 0);
|
||||
ret = cmd_source_script(addr, NULL, NULL);
|
||||
if (ret)
|
||||
return log_msg_ret("boot", ret);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int fel_bootmeth_bind(struct udevice *dev)
|
||||
{
|
||||
struct bootmeth_uc_plat *plat = dev_get_uclass_plat(dev);
|
||||
|
||||
plat->desc = IS_ENABLED(CONFIG_BOOTSTD_FULL) ?
|
||||
"Sunxi FEL boot over USB" : "FEL";
|
||||
plat->flags = BOOTMETHF_GLOBAL;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static struct bootmeth_ops fel_bootmeth_ops = {
|
||||
.check = fel_check,
|
||||
.read_bootflow = fel_read_bootflow,
|
||||
.read_file = fel_read_file,
|
||||
.boot = fel_boot,
|
||||
};
|
||||
|
||||
static const struct udevice_id fel_bootmeth_ids[] = {
|
||||
{ .compatible = "u-boot,fel-bootmeth" },
|
||||
{ }
|
||||
};
|
||||
|
||||
U_BOOT_DRIVER(bootmeth_2fel) = {
|
||||
.name = "bootmeth_fel",
|
||||
.id = UCLASS_BOOTMETH,
|
||||
.of_match = fel_bootmeth_ids,
|
||||
.ops = &fel_bootmeth_ops,
|
||||
.bind = fel_bootmeth_bind,
|
||||
};
|
||||
@@ -30,6 +30,7 @@ CONFIG_HAS_BOARD_SIZE_LIMIT=y
|
||||
CONFIG_BOARD_SIZE_LIMIT=655360
|
||||
CONFIG_FIT=y
|
||||
CONFIG_FIT_SIGNATURE=y
|
||||
# CONFIG_BOOTSTD is not set
|
||||
CONFIG_LEGACY_IMAGE_FORMAT=y
|
||||
CONFIG_AUTOBOOT_KEYED=y
|
||||
CONFIG_AUTOBOOT_STOP_STR="x"
|
||||
|
||||
@@ -87,6 +87,18 @@ settings. For example::
|
||||
|
||||
#include <env/ti/mmc.env>
|
||||
|
||||
Quotes are not supressed, for example::
|
||||
|
||||
fdtfile=CONFIG_DEFAULT_DEVICE_TREE.dtb
|
||||
# produces: fdtfile="sun7i-a20-pcduino3.dtb"
|
||||
|
||||
For this particular issue you can use DEFAULT_DEVICE_TREE instead::
|
||||
|
||||
fdtfile=DEFAULT_DEVICE_TREE.dtb
|
||||
# produces: fdtfile=sun7i-a20-pcduino3.dtb
|
||||
|
||||
There is no general way to remove quotes.
|
||||
|
||||
If CONFIG_ENV_SOURCE_FILE is empty and the default filename is not present, then
|
||||
the old-style C environment is used instead. See below.
|
||||
|
||||
|
||||
@@ -197,7 +197,6 @@ static inline void blkcache_free(void) {}
|
||||
|
||||
#endif
|
||||
|
||||
#if CONFIG_IS_ENABLED(BLK)
|
||||
struct udevice;
|
||||
|
||||
/* Operations on block devices */
|
||||
@@ -278,6 +277,8 @@ struct blk_ops {
|
||||
#endif /* CONFIG_BOUNCE_BUFFER */
|
||||
};
|
||||
|
||||
#if CONFIG_IS_ENABLED(BLK)
|
||||
|
||||
/*
|
||||
* These functions should take struct udevice instead of struct blk_desc,
|
||||
* but this is convenient for migration to driver model. Add a 'd' prefix
|
||||
@@ -291,6 +292,8 @@ unsigned long blk_dwrite(struct blk_desc *block_dev, lbaint_t start,
|
||||
unsigned long blk_derase(struct blk_desc *block_dev, lbaint_t start,
|
||||
lbaint_t blkcnt);
|
||||
|
||||
#endif /* BLK */
|
||||
|
||||
/**
|
||||
* blk_read() - Read from a block device
|
||||
*
|
||||
@@ -528,8 +531,10 @@ struct blk_desc *blk_get_by_device(struct udevice *dev);
|
||||
*/
|
||||
int blk_get_desc(enum uclass_id uclass_id, int devnum, struct blk_desc **descp);
|
||||
|
||||
#else
|
||||
#if !CONFIG_IS_ENABLED(BLK)
|
||||
|
||||
#include <errno.h>
|
||||
|
||||
/*
|
||||
* These functions should take struct udevice instead of struct blk_desc,
|
||||
* but this is convenient for migration to driver model. Add a 'd' prefix
|
||||
|
||||
@@ -61,242 +61,4 @@
|
||||
#define PHYS_SDRAM_0 CFG_SYS_SDRAM_BASE
|
||||
#define PHYS_SDRAM_0_SIZE 0x80000000 /* 2 GiB */
|
||||
|
||||
/****************************************************************************
|
||||
* environment variables holding default load addresses *
|
||||
****************************************************************************/
|
||||
/*
|
||||
* We cannot use expressions here, because expressions won't be evaluated in
|
||||
* autoconf.mk.
|
||||
*/
|
||||
#ifdef CONFIG_ARM64
|
||||
/*
|
||||
* Boards seem to come with at least 512MB of DRAM.
|
||||
* The kernel should go at 512K, which is the default text offset (that will
|
||||
* be adjusted at runtime if needed).
|
||||
* There is no compression for arm64 kernels (yet), so leave some space
|
||||
* for really big kernels, say 256MB for now.
|
||||
* Scripts, PXE and DTBs should go afterwards, leaving the rest for the initrd.
|
||||
*/
|
||||
#define BOOTM_SIZE __stringify(0xa000000)
|
||||
#define KERNEL_ADDR_R __stringify(SDRAM_OFFSET(0080000))
|
||||
#define KERNEL_COMP_ADDR_R __stringify(SDRAM_OFFSET(4000000))
|
||||
#define KERNEL_COMP_SIZE __stringify(0xb000000)
|
||||
#define FDT_ADDR_R __stringify(SDRAM_OFFSET(FA00000))
|
||||
#define SCRIPT_ADDR_R __stringify(SDRAM_OFFSET(FC00000))
|
||||
#define PXEFILE_ADDR_R __stringify(SDRAM_OFFSET(FD00000))
|
||||
#define FDTOVERLAY_ADDR_R __stringify(SDRAM_OFFSET(FE00000))
|
||||
#define RAMDISK_ADDR_R __stringify(SDRAM_OFFSET(FF00000))
|
||||
|
||||
#elif (CONFIG_SUNXI_MINIMUM_DRAM_MB >= 256)
|
||||
/*
|
||||
* 160M RAM (256M minimum minus 64MB heap + 32MB for u-boot, stack, fb, etc.
|
||||
* 32M uncompressed kernel, 16M compressed kernel, 1M fdt,
|
||||
* 1M script, 1M pxe, 1M dt overlay and the ramdisk at the end.
|
||||
*/
|
||||
#define BOOTM_SIZE __stringify(0xa000000)
|
||||
#define KERNEL_ADDR_R __stringify(SDRAM_OFFSET(2000000))
|
||||
#define FDT_ADDR_R __stringify(SDRAM_OFFSET(3000000))
|
||||
#define SCRIPT_ADDR_R __stringify(SDRAM_OFFSET(3100000))
|
||||
#define PXEFILE_ADDR_R __stringify(SDRAM_OFFSET(3200000))
|
||||
#define FDTOVERLAY_ADDR_R __stringify(SDRAM_OFFSET(3300000))
|
||||
#define RAMDISK_ADDR_R __stringify(SDRAM_OFFSET(3400000))
|
||||
|
||||
#elif (CONFIG_SUNXI_MINIMUM_DRAM_MB >= 64)
|
||||
/*
|
||||
* 64M RAM minus 2MB heap + 16MB for u-boot, stack, fb, etc.
|
||||
* 16M uncompressed kernel, 8M compressed kernel, 1M fdt,
|
||||
* 1M script, 1M pxe, 1M dt overlay and the ramdisk at the end.
|
||||
*/
|
||||
#define BOOTM_SIZE __stringify(0x2e00000)
|
||||
#define KERNEL_ADDR_R __stringify(SDRAM_OFFSET(1000000))
|
||||
#define FDT_ADDR_R __stringify(SDRAM_OFFSET(1800000))
|
||||
#define SCRIPT_ADDR_R __stringify(SDRAM_OFFSET(1900000))
|
||||
#define PXEFILE_ADDR_R __stringify(SDRAM_OFFSET(1A00000))
|
||||
#define FDTOVERLAY_ADDR_R __stringify(SDRAM_OFFSET(1B00000))
|
||||
#define RAMDISK_ADDR_R __stringify(SDRAM_OFFSET(1C00000))
|
||||
|
||||
#elif (CONFIG_SUNXI_MINIMUM_DRAM_MB >= 32)
|
||||
/*
|
||||
* 32M RAM minus 2.5MB for u-boot, heap, stack, etc.
|
||||
* 16M uncompressed kernel, 7M compressed kernel, 128K fdt, 64K script,
|
||||
* 128K DT overlay, 128K PXE and the ramdisk in the rest (max. 5MB)
|
||||
*/
|
||||
#define BOOTM_SIZE __stringify(0x1700000)
|
||||
#define KERNEL_ADDR_R __stringify(SDRAM_OFFSET(1000000))
|
||||
#define FDT_ADDR_R __stringify(SDRAM_OFFSET(1d50000))
|
||||
#define SCRIPT_ADDR_R __stringify(SDRAM_OFFSET(1d40000))
|
||||
#define PXEFILE_ADDR_R __stringify(SDRAM_OFFSET(1d00000))
|
||||
#define FDTOVERLAY_ADDR_R __stringify(SDRAM_OFFSET(1d20000))
|
||||
#define RAMDISK_ADDR_R __stringify(SDRAM_OFFSET(1800000))
|
||||
|
||||
#else
|
||||
#error Need at least 32MB of DRAM. Please adjust load addresses.
|
||||
#endif
|
||||
|
||||
#define MEM_LAYOUT_ENV_SETTINGS \
|
||||
"bootm_size=" BOOTM_SIZE "\0" \
|
||||
"kernel_addr_r=" KERNEL_ADDR_R "\0" \
|
||||
"fdt_addr_r=" FDT_ADDR_R "\0" \
|
||||
"scriptaddr=" SCRIPT_ADDR_R "\0" \
|
||||
"pxefile_addr_r=" PXEFILE_ADDR_R "\0" \
|
||||
"fdtoverlay_addr_r=" FDTOVERLAY_ADDR_R "\0" \
|
||||
"ramdisk_addr_r=" RAMDISK_ADDR_R "\0"
|
||||
|
||||
#ifdef CONFIG_ARM64
|
||||
#define MEM_LAYOUT_ENV_EXTRA_SETTINGS \
|
||||
"kernel_comp_addr_r=" KERNEL_COMP_ADDR_R "\0" \
|
||||
"kernel_comp_size=" KERNEL_COMP_SIZE "\0"
|
||||
#else
|
||||
#define MEM_LAYOUT_ENV_EXTRA_SETTINGS ""
|
||||
#endif
|
||||
|
||||
#define DFU_ALT_INFO_RAM \
|
||||
"dfu_alt_info_ram=" \
|
||||
"kernel ram " KERNEL_ADDR_R " 0x1000000;" \
|
||||
"fdt ram " FDT_ADDR_R " 0x100000;" \
|
||||
"ramdisk ram " RAMDISK_ADDR_R " 0x4000000\0"
|
||||
|
||||
/****************************************************************************
|
||||
* definitions for the distro boot system *
|
||||
****************************************************************************/
|
||||
#ifdef CONFIG_MMC
|
||||
#if CONFIG_MMC_SUNXI_SLOT_EXTRA != -1
|
||||
#define BOOTENV_DEV_MMC_AUTO(devtypeu, devtypel, instance) \
|
||||
BOOTENV_DEV_MMC(MMC, mmc, 0) \
|
||||
BOOTENV_DEV_MMC(MMC, mmc, 1) \
|
||||
"bootcmd_mmc_auto=" \
|
||||
"if test ${mmc_bootdev} -eq 1; then " \
|
||||
"run bootcmd_mmc1; " \
|
||||
"run bootcmd_mmc0; " \
|
||||
"elif test ${mmc_bootdev} -eq 0; then " \
|
||||
"run bootcmd_mmc0; " \
|
||||
"run bootcmd_mmc1; " \
|
||||
"fi\0"
|
||||
|
||||
#define BOOTENV_DEV_NAME_MMC_AUTO(devtypeu, devtypel, instance) \
|
||||
"mmc_auto "
|
||||
|
||||
#define BOOT_TARGET_DEVICES_MMC(func) func(MMC_AUTO, mmc_auto, na)
|
||||
#else
|
||||
#define BOOT_TARGET_DEVICES_MMC(func) func(MMC, mmc, 0)
|
||||
#endif
|
||||
#else
|
||||
#define BOOT_TARGET_DEVICES_MMC(func)
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_AHCI
|
||||
#define BOOT_TARGET_DEVICES_SCSI(func) func(SCSI, scsi, 0)
|
||||
#else
|
||||
#define BOOT_TARGET_DEVICES_SCSI(func)
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_USB_STORAGE
|
||||
#define BOOT_TARGET_DEVICES_USB(func) func(USB, usb, 0)
|
||||
#else
|
||||
#define BOOT_TARGET_DEVICES_USB(func)
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_CMD_PXE
|
||||
#define BOOT_TARGET_DEVICES_PXE(func) func(PXE, pxe, na)
|
||||
#else
|
||||
#define BOOT_TARGET_DEVICES_PXE(func)
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_CMD_DHCP
|
||||
#define BOOT_TARGET_DEVICES_DHCP(func) func(DHCP, dhcp, na)
|
||||
#else
|
||||
#define BOOT_TARGET_DEVICES_DHCP(func)
|
||||
#endif
|
||||
|
||||
/* FEL boot support, auto-execute boot.scr if a script address was provided */
|
||||
#define BOOTENV_DEV_FEL(devtypeu, devtypel, instance) \
|
||||
"bootcmd_fel=" \
|
||||
"if test -n ${fel_booted} && test -n ${fel_scriptaddr}; then " \
|
||||
"echo '(FEL boot)'; " \
|
||||
"source ${fel_scriptaddr}; " \
|
||||
"fi\0"
|
||||
#define BOOTENV_DEV_NAME_FEL(devtypeu, devtypel, instance) \
|
||||
"fel "
|
||||
|
||||
#define BOOT_TARGET_DEVICES(func) \
|
||||
func(FEL, fel, na) \
|
||||
BOOT_TARGET_DEVICES_MMC(func) \
|
||||
BOOT_TARGET_DEVICES_SCSI(func) \
|
||||
BOOT_TARGET_DEVICES_USB(func) \
|
||||
BOOT_TARGET_DEVICES_PXE(func) \
|
||||
BOOT_TARGET_DEVICES_DHCP(func)
|
||||
|
||||
#ifdef CONFIG_OLD_SUNXI_KERNEL_COMPAT
|
||||
#define BOOTCMD_SUNXI_COMPAT \
|
||||
"bootcmd_sunxi_compat=" \
|
||||
"setenv root /dev/mmcblk0p3 rootwait; " \
|
||||
"if ext2load mmc 0 0x44000000 uEnv.txt; then " \
|
||||
"echo Loaded environment from uEnv.txt; " \
|
||||
"env import -t 0x44000000 ${filesize}; " \
|
||||
"fi; " \
|
||||
"setenv bootargs console=${console} root=${root} ${extraargs}; " \
|
||||
"ext2load mmc 0 0x43000000 script.bin && " \
|
||||
"ext2load mmc 0 0x48000000 uImage && " \
|
||||
"bootm 0x48000000\0"
|
||||
#else
|
||||
#define BOOTCMD_SUNXI_COMPAT
|
||||
#endif
|
||||
|
||||
#include <config_distro_bootcmd.h>
|
||||
|
||||
#ifdef CONFIG_USB_KEYBOARD
|
||||
#define CONSOLE_STDIN_SETTINGS \
|
||||
"stdin=serial,usbkbd\0"
|
||||
#else
|
||||
#define CONSOLE_STDIN_SETTINGS \
|
||||
"stdin=serial\0"
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_VIDEO
|
||||
#define CONSOLE_STDOUT_SETTINGS \
|
||||
"stdout=serial,vidconsole\0" \
|
||||
"stderr=serial,vidconsole\0"
|
||||
#else
|
||||
#define CONSOLE_STDOUT_SETTINGS \
|
||||
"stdout=serial\0" \
|
||||
"stderr=serial\0"
|
||||
#endif
|
||||
|
||||
#define PARTS_DEFAULT \
|
||||
"name=loader1,start=8k,size=32k,uuid=${uuid_gpt_loader1};" \
|
||||
"name=loader2,size=984k,uuid=${uuid_gpt_loader2};" \
|
||||
"name=esp,size=128M,bootable,uuid=${uuid_gpt_esp};" \
|
||||
"name=system,size=-,uuid=${uuid_gpt_system};"
|
||||
|
||||
#define UUID_GPT_ESP "c12a7328-f81f-11d2-ba4b-00a0c93ec93b"
|
||||
|
||||
#ifdef CONFIG_ARM64
|
||||
#define UUID_GPT_SYSTEM "b921b045-1df0-41c3-af44-4c6f280d3fae"
|
||||
#else
|
||||
#define UUID_GPT_SYSTEM "69dad710-2ce4-4e3c-b16c-21a1d49abed3"
|
||||
#endif
|
||||
|
||||
#define CONSOLE_ENV_SETTINGS \
|
||||
CONSOLE_STDIN_SETTINGS \
|
||||
CONSOLE_STDOUT_SETTINGS
|
||||
|
||||
#ifdef CONFIG_ARM64
|
||||
#define FDTFILE "allwinner/" CONFIG_DEFAULT_DEVICE_TREE ".dtb"
|
||||
#else
|
||||
#define FDTFILE CONFIG_DEFAULT_DEVICE_TREE ".dtb"
|
||||
#endif
|
||||
|
||||
#define CFG_EXTRA_ENV_SETTINGS \
|
||||
CONSOLE_ENV_SETTINGS \
|
||||
MEM_LAYOUT_ENV_SETTINGS \
|
||||
MEM_LAYOUT_ENV_EXTRA_SETTINGS \
|
||||
DFU_ALT_INFO_RAM \
|
||||
"fdtfile=" FDTFILE "\0" \
|
||||
"console=ttyS0,115200\0" \
|
||||
"uuid_gpt_esp=" UUID_GPT_ESP "\0" \
|
||||
"uuid_gpt_system=" UUID_GPT_SYSTEM "\0" \
|
||||
"partitions=" PARTS_DEFAULT "\0" \
|
||||
BOOTCMD_SUNXI_COMPAT \
|
||||
BOOTENV
|
||||
|
||||
#endif /* _SUNXI_COMMON_CONFIG_H */
|
||||
|
||||
Reference in New Issue
Block a user