100-18-board-mt7629-add-support-for-booting-from-SPI-NAND.patch 6.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274
  1. From 452dc98572f8353f77551bcce5a2ca8cd050f498 Mon Sep 17 00:00:00 2001
  2. From: Weijie Gao <[email protected]>
  3. Date: Wed, 3 Mar 2021 10:48:53 +0800
  4. Subject: [PATCH 53/71] board: mt7629: add support for booting from SPI-NAND
  5. Add support for mt7629 to boot from SPI-NAND.
  6. Add a new defconfig for mt7629+spi-nand configuration.
  7. Signed-off-by: Weijie Gao <[email protected]>
  8. ---
  9. arch/arm/dts/mt7629-rfb-u-boot.dtsi | 8 ++
  10. arch/arm/dts/mt7629-rfb.dts | 10 +++
  11. arch/arm/dts/mt7629.dtsi | 16 ++++
  12. arch/arm/mach-mediatek/Kconfig | 4 +-
  13. board/mediatek/mt7629/Kconfig | 40 ++++++++++
  14. board/mediatek/mt7629/mt7629_rfb.c | 5 ++
  15. configs/mt7629_nand_rfb_defconfig | 113 ++++++++++++++++++++++++++++
  16. 7 files changed, 195 insertions(+), 1 deletion(-)
  17. create mode 100644 board/mediatek/mt7629/Kconfig
  18. create mode 100644 configs/mt7629_nand_rfb_defconfig
  19. --- a/arch/arm/dts/mt7629-rfb-u-boot.dtsi
  20. +++ b/arch/arm/dts/mt7629-rfb-u-boot.dtsi
  21. @@ -40,3 +40,11 @@
  22. &snfi {
  23. bootph-all;
  24. };
  25. +
  26. +&pinctrl {
  27. + u-boot,dm-pre-reloc;
  28. +};
  29. +
  30. +&snand {
  31. + u-boot,dm-pre-reloc;
  32. +};
  33. --- a/arch/arm/dts/mt7629-rfb.dts
  34. +++ b/arch/arm/dts/mt7629-rfb.dts
  35. @@ -47,9 +47,12 @@
  36. };
  37. snfi_pins: snfi-pins {
  38. + u-boot,dm-pre-reloc;
  39. +
  40. mux {
  41. function = "flash";
  42. groups = "snfi";
  43. + u-boot,dm-pre-reloc;
  44. };
  45. };
  46. @@ -102,6 +105,13 @@
  47. };
  48. };
  49. +&snand {
  50. + pinctrl-names = "default";
  51. + pinctrl-0 = <&snfi_pins>;
  52. + status = "okay";
  53. + quad-spi;
  54. +};
  55. +
  56. &uart0 {
  57. pinctrl-names = "default";
  58. pinctrl-0 = <&uart0_pins>;
  59. --- a/arch/arm/dts/mt7629.dtsi
  60. +++ b/arch/arm/dts/mt7629.dtsi
  61. @@ -229,6 +229,22 @@
  62. #size-cells = <0>;
  63. };
  64. + snand: snand@1100d000 {
  65. + compatible = "mediatek,mt7629-snand";
  66. + reg = <0x1100d000 0x1000>,
  67. + <0x1100e000 0x1000>;
  68. + reg-names = "nfi", "ecc";
  69. + clocks = <&pericfg CLK_PERI_NFI_PD>,
  70. + <&pericfg CLK_PERI_SNFI_PD>,
  71. + <&pericfg CLK_PERI_NFIECC_PD>;
  72. + clock-names = "nfi_clk", "pad_clk", "ecc_clk";
  73. + assigned-clocks = <&topckgen CLK_TOP_AXI_SEL>,
  74. + <&topckgen CLK_TOP_NFI_INFRA_SEL>;
  75. + assigned-clock-parents = <&topckgen CLK_TOP_SYSPLL1_D2>,
  76. + <&topckgen CLK_TOP_UNIVPLL2_D8>;
  77. + status = "disabled";
  78. + };
  79. +
  80. snor: snor@11014000 {
  81. compatible = "mediatek,mtk-snor";
  82. reg = <0x11014000 0x1000>;
  83. --- a/arch/arm/mach-mediatek/Kconfig
  84. +++ b/arch/arm/mach-mediatek/Kconfig
  85. @@ -133,9 +133,11 @@ config SYS_CONFIG_NAME
  86. config MTK_BROM_HEADER_INFO
  87. string
  88. - default "media=nor" if TARGET_MT8518 || TARGET_MT8512 || TARGET_MT7629 || TARGET_MT7622
  89. + default "media=nor" if TARGET_MT8518 || TARGET_MT8512 || TARGET_MT7622
  90. default "media=emmc" if TARGET_MT8516 || TARGET_MT8365 || TARGET_MT8183
  91. default "media=snand;nandinfo=2k+64" if TARGET_MT7981 || TARGET_MT7986
  92. default "lk=1" if TARGET_MT7623
  93. +source "board/mediatek/mt7629/Kconfig"
  94. +
  95. endif
  96. --- /dev/null
  97. +++ b/board/mediatek/mt7629/Kconfig
  98. @@ -0,0 +1,40 @@
  99. +if TARGET_MT7629
  100. +
  101. +config MTK_BROM_HEADER_INFO
  102. + string
  103. + default "media=nor" if BOOT_FROM_SNOR
  104. + default "media=snand;nandinfo=2k+64" if BOOT_FROM_SNAND_2K_64
  105. + default "media=snand;nandinfo=2k+128" if BOOT_FROM_SNAND_2K_128
  106. + default "media=snand;nandinfo=4k+128" if BOOT_FROM_SNAND_4K_128
  107. + default "media=snand;nandinfo=4k+256" if BOOT_FROM_SNAND_4K_256
  108. +
  109. +choice
  110. + prompt "Boot device"
  111. + default BOOT_FROM_SNOR
  112. +
  113. +config BOOT_FROM_SNOR
  114. + bool "SPI-NOR"
  115. +
  116. +config BOOT_FROM_SNAND_2K_64
  117. + bool "SPI-NAND (2K+64)"
  118. + select MT7629_BOOT_FROM_SNAND
  119. +
  120. +config BOOT_FROM_SNAND_2K_128
  121. + bool "SPI-NAND (2K+128)"
  122. + select MT7629_BOOT_FROM_SNAND
  123. +
  124. +config BOOT_FROM_SNAND_4K_128
  125. + bool "SPI-NAND (4K+128)"
  126. + select MT7629_BOOT_FROM_SNAND
  127. +
  128. +config BOOT_FROM_SNAND_4K_256
  129. + bool "SPI-NAND (4K+256)"
  130. + select MT7629_BOOT_FROM_SNAND
  131. +
  132. +endchoice
  133. +
  134. +config MT7629_BOOT_FROM_SNAND
  135. + bool
  136. + default n
  137. +
  138. +endif
  139. --- a/board/mediatek/mt7629/mt7629_rfb.c
  140. +++ b/board/mediatek/mt7629/mt7629_rfb.c
  141. @@ -15,3 +15,8 @@ int board_init(void)
  142. return 0;
  143. }
  144. +
  145. +uint32_t spl_nand_get_uboot_raw_page(void)
  146. +{
  147. + return CONFIG_SPL_PAD_TO;
  148. +}
  149. --- /dev/null
  150. +++ b/configs/mt7629_nand_rfb_defconfig
  151. @@ -0,0 +1,113 @@
  152. +CONFIG_ARM=y
  153. +CONFIG_SYS_ARCH_TIMER=y
  154. +CONFIG_SYS_THUMB_BUILD=y
  155. +CONFIG_ARCH_MEDIATEK=y
  156. +CONFIG_TEXT_BASE=0x41e00000
  157. +CONFIG_SYS_MALLOC_F_LEN=0x4000
  158. +CONFIG_NR_DRAM_BANKS=1
  159. +CONFIG_ENV_SIZE=0x20000
  160. +CONFIG_ENV_OFFSET=0x0
  161. +CONFIG_DEFAULT_DEVICE_TREE="mt7629-rfb"
  162. +CONFIG_SPL_TEXT_BASE=0x201000
  163. +CONFIG_TARGET_MT7629=y
  164. +CONFIG_BOOT_FROM_SNAND_2K_64=y
  165. +CONFIG_SPL_SERIAL=y
  166. +CONFIG_SPL_STACK_R_ADDR=0x40800000
  167. +CONFIG_SYS_LOAD_ADDR=0x42007f1c
  168. +CONFIG_SPL_PAYLOAD="u-boot.img"
  169. +CONFIG_BUILD_TARGET="u-boot-mtk.bin"
  170. +CONFIG_HAS_CUSTOM_SYS_INIT_SP_ADDR=y
  171. +CONFIG_CUSTOM_SYS_INIT_SP_ADDR=0x41fffef0
  172. +CONFIG_SPL_IMAGE="spl/u-boot-spl-mtk.bin"
  173. +CONFIG_FIT=y
  174. +# CONFIG_AUTOBOOT is not set
  175. +CONFIG_DEFAULT_FDT_FILE="mt7629-rfb"
  176. +CONFIG_SYS_CONSOLE_IS_IN_ENV=y
  177. +# CONFIG_DISPLAY_BOARDINFO is not set
  178. +CONFIG_SPL_MAX_SIZE=0x20000
  179. +CONFIG_SPL_FOOTPRINT_LIMIT=y
  180. +CONFIG_SPL_MAX_FOOTPRINT=0x20000
  181. +CONFIG_SPL_SYS_MALLOC_SIMPLE=y
  182. +# CONFIG_SPL_SHARES_INIT_SP_ADDR is not set
  183. +CONFIG_SPL_STACK=0x106000
  184. +CONFIG_SPL_STACK_R=y
  185. +CONFIG_SPL_MTD_SUPPORT=y
  186. +CONFIG_SPL_NAND_SUPPORT=y
  187. +CONFIG_SPL_WATCHDOG=y
  188. +CONFIG_HUSH_PARSER=y
  189. +CONFIG_SYS_PROMPT="U-Boot> "
  190. +# CONFIG_BOOTM_NETBSD is not set
  191. +# CONFIG_BOOTM_PLAN9 is not set
  192. +# CONFIG_BOOTM_RTEMS is not set
  193. +# CONFIG_BOOTM_VXWORKS is not set
  194. +CONFIG_SYS_BOOTM_LEN=0x4000000
  195. +CONFIG_CMD_BOOTMENU=y
  196. +# CONFIG_CMD_ELF is not set
  197. +# CONFIG_CMD_XIMG is not set
  198. +CONFIG_CMD_BIND=y
  199. +CONFIG_CMD_DM=y
  200. +# CONFIG_CMD_FLASH is not set
  201. +CONFIG_CMD_GPIO=y
  202. +CONFIG_CMD_MTD=y
  203. +CONFIG_CMD_USB=y
  204. +# CONFIG_CMD_SETEXPR is not set
  205. +# CONFIG_CMD_NFS is not set
  206. +CONFIG_CMD_PING=y
  207. +CONFIG_CMD_FAT=y
  208. +CONFIG_CMD_FS_GENERIC=y
  209. +CONFIG_CMD_LOG=y
  210. +CONFIG_OF_SPL_REMOVE_PROPS="interrupt-parent assigned-clocks assigned-clock-parents"
  211. +CONFIG_ENV_OVERWRITE=y
  212. +CONFIG_ENV_IS_IN_MTD=y
  213. +CONFIG_ENV_MTD_NAME="u-boot-env"
  214. +CONFIG_ENV_SIZE_REDUND=0x40000
  215. +CONFIG_SYS_RELOC_GD_ENV_ADDR=y
  216. +CONFIG_NET_RANDOM_ETHADDR=y
  217. +CONFIG_SPL_DM_SEQ_ALIAS=y
  218. +CONFIG_REGMAP=y
  219. +CONFIG_SPL_REGMAP=y
  220. +CONFIG_SYSCON=y
  221. +CONFIG_SPL_SYSCON=y
  222. +CONFIG_CLK=y
  223. +CONFIG_SPL_CLK=y
  224. +# CONFIG_MMC is not set
  225. +CONFIG_MTD=y
  226. +CONFIG_DM_MTD=y
  227. +CONFIG_MTK_SPI_NAND=y
  228. +CONFIG_MTK_SPI_NAND_MTD=y
  229. +CONFIG_SPL_MTK_SPI_NAND=y
  230. +CONFIG_DM_ETH=y
  231. +CONFIG_MEDIATEK_ETH=y
  232. +CONFIG_PHY=y
  233. +CONFIG_PHY_MTK_TPHY=y
  234. +CONFIG_PINCTRL=y
  235. +CONFIG_PINCONF=y
  236. +CONFIG_SPL_PINCTRL=y
  237. +CONFIG_SPL_PINCONF=y
  238. +CONFIG_PINCTRL_MT7629=y
  239. +CONFIG_POWER_DOMAIN=y
  240. +CONFIG_MTK_POWER_DOMAIN=y
  241. +CONFIG_DM_REGULATOR=y
  242. +CONFIG_DM_REGULATOR_FIXED=y
  243. +CONFIG_RAM=y
  244. +CONFIG_SPL_RAM=y
  245. +CONFIG_DM_SERIAL=y
  246. +CONFIG_MTK_SERIAL=y
  247. +CONFIG_SPI=y
  248. +CONFIG_DM_SPI=y
  249. +CONFIG_SPI_MEM=y
  250. +CONFIG_MTK_SNFI_SPI=y
  251. +CONFIG_SYSRESET=y
  252. +CONFIG_SPL_SYSRESET=y
  253. +CONFIG_SYSRESET_WATCHDOG=y
  254. +CONFIG_USB=y
  255. +# CONFIG_SPL_DM_USB is not set
  256. +CONFIG_USB_XHCI_HCD=y
  257. +CONFIG_USB_XHCI_MTK=y
  258. +CONFIG_USB_STORAGE=y
  259. +CONFIG_WDT_MTK=y
  260. +# CONFIG_SHA256 is not set
  261. +# CONFIG_SPL_SHA1 is not set
  262. +CONFIG_LZMA=y
  263. +CONFIG_SPL_LZMA=y
  264. +# CONFIG_EFI_LOADER is not set