mirror of
https://github.com/brain-hackers/u-boot-brain
synced 2024-08-18 16:08:53 +09:00
![Tom Rini](/assets/img/avatar_default.png)
When U-Boot started using SPDX tags we were among the early adopters and there weren't a lot of other examples to borrow from. So we picked the area of the file that usually had a full license text and replaced it with an appropriate SPDX-License-Identifier: entry. Since then, the Linux Kernel has adopted SPDX tags and they place it as the very first line in a file (except where shebangs are used, then it's second line) and with slightly different comment styles than us. In part due to community overlap, in part due to better tag visibility and in part for other minor reasons, switch over to that style. This commit changes all instances where we have multiple licenses (in these cases, dual license) declared in the SPDX-License-Identifier tag. In this case we change from listing "LICENSE-A LICENSE-B" or "LICENSE-A or LICENSE-B" or "(LICENSE-A OR LICENSE-B)" to "LICENSE-A OR LICENSE-B" as per the Linux Kernel style document. Note that parenthesis are allowed so when they were used before we continue to use them. Reviewed-by: Fabio Estevam <fabio.estevam@nxp.com> Signed-off-by: Tom Rini <trini@konsulko.com>
82 lines
2.3 KiB
C
82 lines
2.3 KiB
C
// SPDX-License-Identifier: GPL-2.0+ OR BSD-3-Clause
|
|
/*
|
|
* Copyright (C) 2016
|
|
* Ladislav Michl <ladis@linux-mips.org>
|
|
*/
|
|
|
|
#include <common.h>
|
|
#include <config.h>
|
|
#include <nand.h>
|
|
#include <onenand_uboot.h>
|
|
#include <ubispl.h>
|
|
#include <spl.h>
|
|
|
|
int spl_ubi_load_image(struct spl_image_info *spl_image,
|
|
struct spl_boot_device *bootdev)
|
|
{
|
|
struct image_header *header;
|
|
struct ubispl_info info;
|
|
struct ubispl_load volumes[2];
|
|
int ret = 1;
|
|
|
|
switch (bootdev->boot_device) {
|
|
#ifdef CONFIG_SPL_NAND_SUPPORT
|
|
case BOOT_DEVICE_NAND:
|
|
nand_init();
|
|
info.read = nand_spl_read_block;
|
|
info.peb_size = CONFIG_SYS_NAND_BLOCK_SIZE;
|
|
break;
|
|
#endif
|
|
#ifdef CONFIG_SPL_ONENAND_SUPPORT
|
|
case BOOT_DEVICE_ONENAND:
|
|
info.read = onenand_spl_read_block;
|
|
info.peb_size = CONFIG_SYS_ONENAND_BLOCK_SIZE;
|
|
break;
|
|
#endif
|
|
default:
|
|
goto out;
|
|
}
|
|
info.ubi = (struct ubi_scan_info *)CONFIG_SPL_UBI_INFO_ADDR;
|
|
info.fastmap = IS_ENABLED(CONFIG_MTD_UBI_FASTMAP);
|
|
|
|
info.peb_offset = CONFIG_SPL_UBI_PEB_OFFSET;
|
|
info.vid_offset = CONFIG_SPL_UBI_VID_OFFSET;
|
|
info.leb_start = CONFIG_SPL_UBI_LEB_START;
|
|
info.peb_count = CONFIG_SPL_UBI_MAX_PEBS - info.peb_offset;
|
|
|
|
#ifdef CONFIG_SPL_OS_BOOT
|
|
if (!spl_start_uboot()) {
|
|
volumes[0].vol_id = CONFIG_SPL_UBI_LOAD_KERNEL_ID;
|
|
volumes[0].load_addr = (void *)CONFIG_SYS_LOAD_ADDR;
|
|
volumes[1].vol_id = CONFIG_SPL_UBI_LOAD_ARGS_ID;
|
|
volumes[1].load_addr = (void *)CONFIG_SYS_SPL_ARGS_ADDR;
|
|
|
|
ret = ubispl_load_volumes(&info, volumes, 2);
|
|
if (!ret) {
|
|
header = (struct image_header *)volumes[0].load_addr;
|
|
spl_parse_image_header(spl_image, header);
|
|
puts("Linux loaded.\n");
|
|
goto out;
|
|
}
|
|
puts("Loading Linux failed, falling back to U-Boot.\n");
|
|
}
|
|
#endif
|
|
header = (struct image_header *)
|
|
(CONFIG_SYS_TEXT_BASE - sizeof(struct image_header));
|
|
volumes[0].vol_id = CONFIG_SPL_UBI_LOAD_MONITOR_ID;
|
|
volumes[0].load_addr = (void *)header;
|
|
|
|
ret = ubispl_load_volumes(&info, volumes, 1);
|
|
if (!ret)
|
|
spl_parse_image_header(spl_image, header);
|
|
out:
|
|
#ifdef CONFIG_SPL_NAND_SUPPORT
|
|
if (bootdev->boot_device == BOOT_DEVICE_NAND)
|
|
nand_deselect();
|
|
#endif
|
|
return ret;
|
|
}
|
|
/* Use priorty 0 so that Ubi will override NAND and ONENAND methods */
|
|
SPL_LOAD_IMAGE_METHOD("NAND", 0, BOOT_DEVICE_NAND, spl_ubi_load_image);
|
|
SPL_LOAD_IMAGE_METHOD("OneNAND", 0, BOOT_DEVICE_ONENAND, spl_ubi_load_image);
|