diff options
author | Tom Rini <trini@konsulko.com> | 2019-10-12 10:09:13 -0400 |
---|---|---|
committer | Tom Rini <trini@konsulko.com> | 2019-10-12 10:09:13 -0400 |
commit | 36317705cb5ab43db25fede2446d2352de527630 (patch) | |
tree | e8ff78640a9b892bd1026d4b1bead169f8c95fed /include | |
parent | 44fb0d6c9f5147a41c710032869e5e01b3c9e310 (diff) | |
parent | 5c6e497eaaf2c76344f82e823c2a0aad3cc26167 (diff) |
Merge branch '2019-10-11-ti-imports'
- Various improvements to dra7xx, keystone 3, am65x SoCs
- Platform updates
- remoteproc improvements
Diffstat (limited to 'include')
-rw-r--r-- | include/configs/am335x_guardian.h | 11 | ||||
-rw-r--r-- | include/configs/am65x_evm.h | 11 | ||||
-rw-r--r-- | include/configs/j721e_evm.h | 14 | ||||
-rw-r--r-- | include/configs/tao3530.h | 2 | ||||
-rw-r--r-- | include/configs/ti_armv7_common.h | 2 | ||||
-rw-r--r-- | include/dm/device.h | 9 | ||||
-rw-r--r-- | include/environment/ti/k3_rproc.h | 52 | ||||
-rw-r--r-- | include/remoteproc.h | 76 | ||||
-rw-r--r-- | include/spl.h | 3 |
9 files changed, 168 insertions, 12 deletions
diff --git a/include/configs/am335x_guardian.h b/include/configs/am335x_guardian.h index 8bde198313..b45b8d2eec 100644 --- a/include/configs/am335x_guardian.h +++ b/include/configs/am335x_guardian.h @@ -16,10 +16,14 @@ #define CONFIG_TIMESTAMP #endif +#define CONFIG_SYS_BOOTM_LEN (16 << 20) + /* Clock Defines */ #define V_OSCK 24000000 /* Clock output from T2 */ #define V_SCLK (V_OSCK) +#define CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG + #ifndef CONFIG_SPL_BUILD #define MEM_LAYOUT_ENV_SETTINGS \ @@ -30,7 +34,6 @@ "ramdisk_addr_r=0x88080000\0" \ #define BOOT_TARGET_DEVICES(func) \ - func(MMC, mmc, 0) \ func(UBIFS, ubifs, 0) \ func(PXE, pxe, na) \ func(DHCP, dhcp, na) @@ -44,11 +47,12 @@ MEM_LAYOUT_ENV_SETTINGS \ BOOTENV \ "bootlimit=3\0" \ + "bootubivol=rootfs\0" \ "altbootcmd=" \ "setenv boot_config \"extlinux-rollback.conf\"; " \ "run distro_bootcmd\0" -#endif /* CONFIG_SPL_BUILD */ +#endif /* ! CONFIG_SPL_BUILD */ /* NS16550 Configuration */ #define CONFIG_SYS_NS16550_COM1 0x44e09000 /* UART0 */ @@ -65,9 +69,6 @@ #define CONFIG_SYS_BOOTCOUNT_LE #ifdef CONFIG_NAND -#define CONFIG_ENV_OFFSET 0x300000 -#define CONFIG_ENV_OFFSET_REDUND 0x340000 -#define CONFIG_ENV_SIZE 0x040000 #define CONFIG_SYS_NAND_5_ADDR_CYCLE #define CONFIG_SYS_NAND_PAGE_COUNT (CONFIG_SYS_NAND_BLOCK_SIZE / \ diff --git a/include/configs/am65x_evm.h b/include/configs/am65x_evm.h index 0249a20ba8..1149d55937 100644 --- a/include/configs/am65x_evm.h +++ b/include/configs/am65x_evm.h @@ -12,6 +12,7 @@ #include <linux/sizes.h> #include <config_distro_bootcmd.h> #include <environment/ti/mmc.h> +#include <environment/ti/k3_rproc.h> #define CONFIG_ENV_SIZE (128 << 10) @@ -98,12 +99,20 @@ "${bootdir}/${name_fit}\0" \ "partitions=" PARTS_DEFAULT +#ifdef DEFAULT_RPROCS +#undef DEFAULT_RPROCS +#endif +#define DEFAULT_RPROCS "" \ + "0 /lib/firmware/am65x-mcu-r5f0_0-fw " \ + "1 /lib/firmware/am65x-mcu-r5f0_1-fw " + /* Incorporate settings into the U-Boot environment */ #define CONFIG_EXTRA_ENV_SETTINGS \ DEFAULT_MMC_TI_ARGS \ DEFAULT_FIT_TI_ARGS \ EXTRA_ENV_AM65X_BOARD_SETTINGS \ - EXTRA_ENV_AM65X_BOARD_SETTINGS_MMC + EXTRA_ENV_AM65X_BOARD_SETTINGS_MMC \ + EXTRA_ENV_RPROC_SETTINGS /* MMC ENV related defines */ #ifdef CONFIG_ENV_IS_IN_MMC diff --git a/include/configs/j721e_evm.h b/include/configs/j721e_evm.h index 5fe77ef16d..dbe226b46d 100644 --- a/include/configs/j721e_evm.h +++ b/include/configs/j721e_evm.h @@ -12,6 +12,7 @@ #include <linux/sizes.h> #include <config_distro_bootcmd.h> #include <environment/ti/mmc.h> +#include <environment/ti/k3_rproc.h> #define CONFIG_ENV_SIZE (128 << 10) @@ -87,11 +88,22 @@ "get_kern_mmc=load mmc ${bootpart} ${loadaddr} " \ "${bootdir}/${name_kern}\0" +#ifdef DEFAULT_RPROCS +#undef DEFAULT_RPROCS +#endif +#define DEFAULT_RPROCS "" \ + "3 /lib/firmware/j7-main-r5f0_1-fw " \ + "4 /lib/firmware/j7-main-r5f1_0-fw " \ + "6 /lib/firmware/j7-c66_0-fw " \ + "7 /lib/firmware/j7-c66_1-fw " \ + "8 /lib/firmware/j7-c71_0-fw " + /* Incorporate settings into the U-Boot environment */ #define CONFIG_EXTRA_ENV_SETTINGS \ DEFAULT_MMC_TI_ARGS \ EXTRA_ENV_J721E_BOARD_SETTINGS \ - EXTRA_ENV_J721E_BOARD_SETTINGS_MMC + EXTRA_ENV_J721E_BOARD_SETTINGS_MMC \ + EXTRA_ENV_RPROC_SETTINGS /* Now for the remaining common defines */ #include <configs/ti_armv7_common.h> diff --git a/include/configs/tao3530.h b/include/configs/tao3530.h index c34e785d9e..7a54fe3e1e 100644 --- a/include/configs/tao3530.h +++ b/include/configs/tao3530.h @@ -114,7 +114,7 @@ "bootm ${loadaddr}\0" \ #define CONFIG_BOOTCOMMAND \ - "if mmc rescan ${mmcdev}; then " \ + "mmc dev ${mmcdev}; if mmc rescan; then " \ "if run loadbootscript; then " \ "run bootscript; " \ "else " \ diff --git a/include/configs/ti_armv7_common.h b/include/configs/ti_armv7_common.h index 2de6bc2390..6d15304a65 100644 --- a/include/configs/ti_armv7_common.h +++ b/include/configs/ti_armv7_common.h @@ -60,7 +60,7 @@ "do;" \ "setenv overlaystring ${overlaystring}'#'${overlay};" \ "done;\0" \ - "run_fit=bootm ${loadaddr}#${fdtfile}${overlaystring}\0" \ + "run_fit=bootm ${addr_fit}#${fdtfile}${overlaystring}\0" \ "loadfit=run args_mmc; run run_fit;\0" \ /* diff --git a/include/dm/device.h b/include/dm/device.h index d1210429e9..defda0aebc 100644 --- a/include/dm/device.h +++ b/include/dm/device.h @@ -405,6 +405,15 @@ const char *dev_get_uclass_name(const struct udevice *dev); int device_get_child(struct udevice *parent, int index, struct udevice **devp); /** + * device_get_child_count() - Get the available child count of a device + * + * Returns the number of children to a device. + * + * @parent: Parent device to check + */ +int device_get_child_count(struct udevice *parent); + +/** * device_find_child_by_seq() - Find a child device based on a sequence * * This searches for a device with the given seq or req_seq. diff --git a/include/environment/ti/k3_rproc.h b/include/environment/ti/k3_rproc.h new file mode 100644 index 0000000000..3418cb42be --- /dev/null +++ b/include/environment/ti/k3_rproc.h @@ -0,0 +1,52 @@ +/* SPDX-License-Identifier: GPL-2.0+ */ +/* + * Copyright (C) 2019 Texas Instruments Incorporated - http://www.ti.com + * + * rproc environment variable definitions for various TI K3 SoCs. + */ + +#ifndef __TI_RPROC_H +#define __TI_RPROC_H + +/* + * should contain a list of <rproc_id fw_name> tuplies, + * override in board config files with the actual list + */ +#define DEFAULT_RPROCS "" + +#ifdef CONFIG_CMD_REMOTEPROC +#define EXTRA_ENV_RPROC_SETTINGS \ + "dorprocboot=0\0" \ + "boot_rprocs=" \ + "if test ${dorprocboot} -eq 1 && test ${boot} = mmc; then "\ + "rproc init;" \ + "run boot_rprocs_mmc;" \ + "fi;\0" \ + "rproc_load_and_boot_one=" \ + "if load mmc ${bootpart} $loadaddr ${rproc_fw}; then " \ + "if rproc load ${rproc_id} ${loadaddr} ${filesize}; then "\ + "rproc start ${rproc_id};" \ + "fi;" \ + "fi\0" \ + "boot_rprocs_mmc=" \ + "env set rproc_id;" \ + "env set rproc_fw;" \ + "for i in ${rproc_fw_binaries} ; do " \ + "if test -z \"${rproc_id}\" ; then " \ + "env set rproc_id $i;" \ + "else " \ + "env set rproc_fw $i;" \ + "run rproc_load_and_boot_one;" \ + "env set rproc_id;" \ + "env set rproc_fw;" \ + "fi;" \ + "done\0" \ + "rproc_fw_binaries=" \ + DEFAULT_RPROCS \ + "\0" +#else +#define EXTRA_ENV_RPROC_SETTINGS \ + "boot_rprocs= \0" +#endif /* CONFIG_CMD_REMOTEPROC */ + +#endif /* __TI_RPROC_H */ diff --git a/include/remoteproc.h b/include/remoteproc.h index 4987194905..046cd9e54e 100644 --- a/include/remoteproc.h +++ b/include/remoteproc.h @@ -122,9 +122,10 @@ struct dm_rproc_ops { * * @dev: Remote proc device * @da: Device address + * @size: Size of the memory region @da is pointing to * @return virtual address. */ - void * (*device_to_virt)(struct udevice *dev, ulong da); + void * (*device_to_virt)(struct udevice *dev, ulong da, ulong size); }; /* Accessor */ @@ -214,12 +215,68 @@ int rproc_is_running(int id); int rproc_elf32_sanity_check(ulong addr, ulong size); /** + * rproc_elf64_sanity_check() - Verify if an image is a valid ELF32 one + * + * Check if a valid ELF64 image exists at the given memory location. Verify + * basic ELF64 format requirements like magic number and sections size. + * + * @addr: address of the image to verify + * @size: size of the image + * @return 0 if the image looks good, else appropriate error value. + */ +int rproc_elf64_sanity_check(ulong addr, ulong size); + +/** + * rproc_elf_sanity_check() - Verify if an image is a valid ELF one + * + * Check if a valid ELF image exists at the given memory location. Auto + * detects ELF32/ELF64 and verifies basic ELF64/ELF32 format requirements + * like magic number and sections size. + * + * @addr: address of the image to verify + * @size: size of the image + * @return 0 if the image looks good, else appropriate error value. + */ +int rproc_elf_sanity_check(ulong addr, ulong size); + +/** * rproc_elf32_load_image() - load an ELF32 image * @dev: device loading the ELF32 image * @addr: valid ELF32 image address + * @size: size of the image * @return 0 if the image is successfully loaded, else appropriate error value. */ -int rproc_elf32_load_image(struct udevice *dev, unsigned long addr); +int rproc_elf32_load_image(struct udevice *dev, unsigned long addr, ulong size); + +/** + * rproc_elf64_load_image() - load an ELF64 image + * @dev: device loading the ELF64 image + * @addr: valid ELF64 image address + * @size: size of the image + * @return 0 if the image is successfully loaded, else appropriate error value. + */ +int rproc_elf64_load_image(struct udevice *dev, ulong addr, ulong size); + +/** + * rproc_elf_load_image() - load an ELF image + * @dev: device loading the ELF image + * @addr: valid ELF image address + * @size: size of the image + * + * Auto detects if the image is ELF32 or ELF64 image and load accordingly. + * @return 0 if the image is successfully loaded, else appropriate error value. + */ +int rproc_elf_load_image(struct udevice *dev, unsigned long addr, ulong size); + +/** + * rproc_elf_get_boot_addr() - Get rproc's boot address. + * @dev: device loading the ELF image + * @addr: valid ELF image address + * + * This function returns the entry point address of the ELF + * image. + */ +ulong rproc_elf_get_boot_addr(struct udevice *dev, ulong addr); #else static inline int rproc_init(void) { return -ENOSYS; } static inline int rproc_dev_init(int id) { return -ENOSYS; } @@ -232,8 +289,21 @@ static inline int rproc_ping(int id) { return -ENOSYS; } static inline int rproc_is_running(int id) { return -ENOSYS; } static inline int rproc_elf32_sanity_check(ulong addr, ulong size) { return -ENOSYS; } +static inline int rproc_elf64_sanity_check(ulong addr, + ulong size) { return -ENOSYS; } +static inline int rproc_elf_sanity_check(ulong addr, + ulong size) { return -ENOSYS; } static inline int rproc_elf32_load_image(struct udevice *dev, - unsigned long addr) { return -ENOSYS; } + unsigned long addr, ulong size) +{ return -ENOSYS; } +static inline int rproc_elf64_load_image(struct udevice *dev, ulong addr, + ulong size) +{ return -ENOSYS; } +static inline int rproc_elf_load_image(struct udevice *dev, ulong addr, + ulong size) +{ return -ENOSYS; } +static inline ulong rproc_elf_get_boot_addr(struct udevice *dev, ulong addr) +{ return 0; } #endif #endif /* _RPROC_H_ */ diff --git a/include/spl.h b/include/spl.h index 4359636d87..b5387ef273 100644 --- a/include/spl.h +++ b/include/spl.h @@ -434,6 +434,9 @@ int spl_mmc_load(struct spl_image_info *spl_image, int raw_part, unsigned long raw_sect); +int spl_ymodem_load_image(struct spl_image_info *spl_image, + struct spl_boot_device *bootdev); + /** * spl_invoke_atf - boot using an ARM trusted firmware image */ |