spl_onenand.c 1.0 KB

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