spl_onenand.c 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. /*
  2. * Copyright (C) 2013
  3. * ISEE 2007 SL - Enric Balletbo i Serra <eballetbo@iseebcn.com>
  4. *
  5. * Based on common/spl/spl_nand.c
  6. * Copyright (C) 2011
  7. * Corscience GmbH & Co. KG - Simon Schwarz <schwarz@corscience.de>
  8. *
  9. * SPDX-License-Identifier: GPL-2.0+
  10. */
  11. #include <common.h>
  12. #include <config.h>
  13. #include <spl.h>
  14. #include <asm/io.h>
  15. #include <onenand_uboot.h>
  16. static int spl_onenand_load_image(struct spl_image_info *spl_image,
  17. struct spl_boot_device *bootdev)
  18. {
  19. struct image_header *header;
  20. int ret;
  21. debug("spl: onenand\n");
  22. /*use CONFIG_SYS_TEXT_BASE as temporary storage area */
  23. header = (struct image_header *)(CONFIG_SYS_TEXT_BASE);
  24. /* Load u-boot */
  25. onenand_spl_load_image(CONFIG_SYS_ONENAND_U_BOOT_OFFS,
  26. CONFIG_SYS_ONENAND_PAGE_SIZE, (void *)header);
  27. ret = spl_parse_image_header(spl_image, header);
  28. if (ret)
  29. return ret;
  30. onenand_spl_load_image(CONFIG_SYS_ONENAND_U_BOOT_OFFS,
  31. spl_image->size, (void *)spl_image->load_addr);
  32. return 0;
  33. }
  34. /* Use priorty 1 so that Ubi can override this */
  35. SPL_LOAD_IMAGE_METHOD("OneNAND", 1, BOOT_DEVICE_ONENAND,
  36. spl_onenand_load_image);