ublimage.h 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. /* SPDX-License-Identifier: GPL-2.0+ */
  2. /*
  3. * (C) Copyright 2011
  4. * Heiko Schocher, DENX Software Engineering, hs@denx.de.
  5. *
  6. * Vased on:
  7. * (C) Copyright 2009
  8. * Stefano Babic, DENX Software Engineering, sbabic@denx.de.
  9. */
  10. #ifndef _UBLIMAGE_H_
  11. #define _UBLIMAGE_H_
  12. enum ublimage_cmd {
  13. CMD_INVALID,
  14. CMD_BOOT_MODE,
  15. CMD_ENTRY,
  16. CMD_PAGE,
  17. CMD_ST_BLOCK,
  18. CMD_ST_PAGE,
  19. CMD_LD_ADDR
  20. };
  21. enum ublimage_fld_types {
  22. CFG_INVALID = -1,
  23. CFG_COMMAND,
  24. CFG_REG_VALUE
  25. };
  26. /*
  27. * from sprufg5a.pdf Table 110
  28. * Used by RBL when doing NAND boot
  29. */
  30. #define UBL_MAGIC_BASE (0xA1ACED00)
  31. /* Safe boot mode */
  32. #define UBL_MAGIC_SAFE (0x00)
  33. /* DMA boot mode */
  34. #define UBL_MAGIC_DMA (0x11)
  35. /* I Cache boot mode */
  36. #define UBL_MAGIC_IC (0x22)
  37. /* Fast EMIF boot mode */
  38. #define UBL_MAGIC_FAST (0x33)
  39. /* DMA + ICache boot mode */
  40. #define UBL_MAGIC_DMA_IC (0x44)
  41. /* DMA + ICache + Fast EMIF boot mode */
  42. #define UBL_MAGIC_DMA_IC_FAST (0x55)
  43. /* Define max UBL image size */
  44. #define UBL_IMAGE_SIZE (0x00003800u)
  45. /* one NAND block */
  46. #define UBL_BLOCK_SIZE 2048
  47. /* from sprufg5a.pdf Table 109 */
  48. struct ubl_header {
  49. uint32_t magic; /* Magic Number, see UBL_* defines */
  50. uint32_t entry; /* entry point address for bootloader */
  51. uint32_t pages; /* number of pages (size of bootloader) */
  52. uint32_t block; /*
  53. * blocknumber where user bootloader is
  54. * present
  55. */
  56. uint32_t page; /*
  57. * page number where user bootloader is
  58. * present.
  59. */
  60. uint32_t pll_m; /*
  61. * PLL setting -Multiplier (only valid if
  62. * Magic Number indicates PLL enable).
  63. */
  64. uint32_t pll_n; /*
  65. * PLL setting -Divider (only valid if
  66. * Magic Number indicates PLL enable).
  67. */
  68. uint32_t emif; /*
  69. * fast EMIF setting (only valid if
  70. * Magic Number indicates fast EMIF boot).
  71. */
  72. /* to fit in one nand block */
  73. unsigned char res[UBL_BLOCK_SIZE - 8 * 4];
  74. };
  75. #endif /* _UBLIMAGE_H_ */