bk4r1.h 7.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250
  1. /* SPDX-License-Identifier: GPL-2.0+ */
  2. /*
  3. * Copyright (C) 2018
  4. * Lukasz Majewski, DENX Software Engineering, lukma@denx.de
  5. *
  6. * Copyright 2016 3ADEV <http://3adev.com>
  7. * Written-by: Albert ARIBAUD <albert.aribaud@3adev.fr>
  8. *
  9. * Configuration settings for BK4R1.
  10. */
  11. #ifndef __CONFIG_H
  12. #define __CONFIG_H
  13. /* Define the BK4r1-specific env commands */
  14. #define BK4_EXTRA_ENV_SETTINGS \
  15. "bootlimit=3\0" \
  16. "eraseuserdata=false\0" \
  17. "altbootcmd=led 5 on; " \
  18. "boot\0" \
  19. "set_gpio103=mw 0x400ff0c4 0x0080; mw 0x4004819C 0x000011bf\0" \
  20. "set_gpio102=mw 0x400ff0c4 0x40; mw 0x40048198 0x000011bf\0" \
  21. "set_gpio96=mw 0x40048180 0x282; mw 0x400ff0c4 0x1\0"\
  22. "set_gpio122=mw 0x400481e8 0x0282; mw 0x400ff0c4 0x04000000\0"\
  23. "set_gpio6=mw 0x40048018 0x282; mw 0x400ff008 0x40\0"\
  24. "manage_userdata=" MANAGE_USERDATA "\0"\
  25. "ncenable=true\0"\
  26. "ncserverip=192.168.0.77\0"\
  27. "if_netconsole=ping $ncserverip\0"\
  28. "start_netconsole=setenv ncip $serverip; setenv bootdelay 10;" \
  29. "setenv stdin nc; setenv stdout nc; setenv stderr nc; version;\0" \
  30. "preboot=" BK4_NET_INIT \
  31. "if ${ncenable}; then run if_netconsole start_netconsole; fi\0"
  32. /* BK4r1 boot command sets GPIO103/PTC30 to force USB hub out of reset*/
  33. #define BK4_BOOTCOMMAND "run set_gpio122; run set_gpio96; sf probe; " \
  34. "run manage_userdata; "
  35. /* Enable PREBOOT variable */
  36. /* Set ARP_TIMEOUT to 500ms */
  37. #define CONFIG_ARP_TIMEOUT 500UL
  38. /* Set ARP_TIMEOUT_COUNT to 3 repetitions */
  39. #define CONFIG_NET_RETRY_COUNT 5
  40. /* BK4r1 net init sets GPIO122/PTE17 to enable Ethernet */
  41. #define BK4_NET_INIT "run set_gpio122;"
  42. /* Check if userdata volume shall be erased */
  43. #define MANAGE_USERDATA "if ${eraseuserdata}; " \
  44. "then ubi part system; " \
  45. "ubi remove userdata; " \
  46. "ubi create userdata; " \
  47. "ubi detach; " \
  48. "setenv eraseuserdata false; " \
  49. "saveenv; " \
  50. "fi; "
  51. #include <asm/arch/imx-regs.h>
  52. #include <linux/sizes.h>
  53. #define CONFIG_SKIP_LOWLEVEL_INIT
  54. /* Enable passing of ATAGs */
  55. #define CONFIG_CMDLINE_TAG
  56. /* Size of malloc() pool */
  57. #define CONFIG_SYS_MALLOC_LEN (CONFIG_ENV_SIZE + 4 * SZ_1M)
  58. /* NAND support */
  59. #define CONFIG_SYS_NAND_ONFI_DETECTION
  60. #define CONFIG_SYS_MAX_NAND_DEVICE 1
  61. #define IMX_FEC1_BASE ENET1_BASE_ADDR
  62. /* QSPI Configs*/
  63. #ifdef CONFIG_FSL_QSPI
  64. #define FSL_QSPI_FLASH_SIZE (SZ_16M)
  65. #define FSL_QSPI_FLASH_NUM 2
  66. #define CONFIG_SYS_FSL_QSPI_LE
  67. #endif
  68. #define CONFIG_LOADADDR 0x82000000
  69. /* We boot from the gfxRAM area of the OCRAM. */
  70. #define CONFIG_BOARD_SIZE_LIMIT 520192
  71. /* boot command, including the target-defined one if any */
  72. #define CONFIG_BOOTCOMMAND BK4_BOOTCOMMAND "run bootcmd_nand"
  73. /* Extra env settings (including the target-defined ones if any) */
  74. #define CONFIG_EXTRA_ENV_SETTINGS \
  75. BK4_EXTRA_ENV_SETTINGS \
  76. "autoload=no\0" \
  77. "fdt_high=0xffffffff\0" \
  78. "initrd_high=0xffffffff\0" \
  79. "blimg_file=u-boot.vyb\0" \
  80. "blimg_addr=0x81000000\0" \
  81. "dtbkernel_file=fitImage\0" \
  82. "dtbkernel_addr=0x82000000\0" \
  83. "ram_file=uRamdisk\0" \
  84. "ram_addr=0x83000000\0" \
  85. "filesys=rootfs.ubifs\0" \
  86. "sys_addr=0x81000000\0" \
  87. "nfs_root=/path/to/nfs/root\0" \
  88. "tftptimeout=1000\0" \
  89. "tftptimeoutcountmax=1000000\0" \
  90. "mtdparts=" CONFIG_MTDPARTS_DEFAULT "\0" \
  91. "ipaddr=192.168.0.60\0" \
  92. "serverip=192.168.0.1\0" \
  93. "bootargs_base=setenv bootargs rw " \
  94. "console=ttyLP1,115200n8\0" \
  95. "bootargs_sd=setenv bootargs ${bootargs} " \
  96. "root=/dev/mmcblk0p2 rootwait\0" \
  97. "bootargs_nand=setenv bootargs ${bootargs} " \
  98. "ubi.mtd=5 rootfstype=" \
  99. "ubifs root=ubi0:rootfs${active_workset}\0" \
  100. "bootargs_ram=setenv bootargs ${bootargs} " \
  101. "root=/dev/ram rw initrd=${ram_addr}\0" \
  102. "bootargs_mtd=setenv bootargs ${bootargs} ${mtdparts}\0" \
  103. "bootcmd_sd=run bootargs_base bootargs_sd bootargs_mtd; " \
  104. "fatload mmc 0:2 ${dtbkernel_addr} ${dtbkernel_file}; " \
  105. "bootm ${dtbkernel_addr}\0" \
  106. "bootcmd_nand=sf probe;run bootargs_base bootargs_nand bootargs_mtd; " \
  107. "ubi part dtbkernel; " \
  108. "ubi readvol ${dtbkernel_addr} dtbkernel${active_workset}; " \
  109. "led 0 on; " \
  110. "bootm ${dtbkernel_addr}\0" \
  111. "bootcmd_ram=run bootargs_base bootargs_ram bootargs_mtd; " \
  112. "nand read ${fdt_addr} dtb; " \
  113. "nand read ${kernel_addr} kernel; " \
  114. "nand read ${ram_addr} root; " \
  115. "bootz ${kernel_addr} ${ram_addr} ${fdt_addr}\0" \
  116. "update_bootloader_from_sd=if fatload mmc 0:2 ${blimg_addr} " \
  117. "${blimg_file}; " \
  118. "then sf probe; " \
  119. "mtdparts default; " \
  120. "nand erase.part bootloader; " \
  121. "nand write ${blimg_addr} bootloader ${filesize}; fi\0" \
  122. "update_bootloader_from_tftp=if tftp ${blimg_addr} "\
  123. "${tftpdir}${blimg_file}; "\
  124. "then sf probe; " \
  125. "mtdparts default; " \
  126. "nand erase.part bootloader; " \
  127. "nand write ${blimg_addr} bootloader ${filesize}; fi\0" \
  128. "update_dtbkernel_from_sd=if fatload mmc 0:2 ${dtbkernel_addr} " \
  129. "${dtbkernel_file}; " \
  130. "then sf probe; " \
  131. "ubi part dtbkernel; " \
  132. "ubi write ${dtbkernel_addr} dtbkernel${active_workset} " \
  133. "${filesize}; " \
  134. "ubi detach; fi\0" \
  135. "update_dtbkernel_from_tftp=if tftp ${dtbkernel_addr} " \
  136. "${tftpdir}${dtbkernel_file}; " \
  137. "then sf probe; " \
  138. "ubi part dtbkernel; " \
  139. "ubi write ${dtbkernel_addr} dtbkernel${active_workset} " \
  140. "${filesize}; " \
  141. "ubi detach; fi\0" \
  142. "update_ramdisk_from_sd=if fatload mmc 0:2 ${ram_addr} " \
  143. "${ram_file}; " \
  144. "then sf probe; " \
  145. "mtdparts default; " \
  146. "nand erase.part initrd; " \
  147. "nand write ${ram_addr} initrd ${filesize}; fi\0" \
  148. "update_ramdisk_from_tftp=if tftp ${ram_addr} ${tftpdir}${ram_file}; " \
  149. "then sf probe; " \
  150. "nand erase.part initrd; " \
  151. "nand write ${ram_addr} initrd ${filesize}; fi\0" \
  152. "update_rootfs_from_sd=if fatload mmc 0:2 ${sys_addr} " \
  153. "${filesys}; " \
  154. "then sf probe; " \
  155. "ubi part system; " \
  156. "ubi write ${sys_addr} rootfs${active_workset} ${filesize}; " \
  157. "ubi detach; fi\0" \
  158. "update_rootfs_from_tftp=if tftp ${sys_addr} ${tftpdir}${filesys}; " \
  159. "then sf probe; " \
  160. "ubi part system; " \
  161. "ubi write ${sys_addr} rootfs${active_workset} ${filesize}; " \
  162. "ubi detach; fi\0" \
  163. "setup_dtbkernel=nand erase.part dtbkernel; " \
  164. "ubi part dtbkernel; " \
  165. "ubi create dtbkernel1 972000 s; " \
  166. "ubi create dtbkernel2 972000 s; " \
  167. "ubi detach\0" \
  168. "setup_system=nand erase.part system; " \
  169. "ubi part system; " \
  170. "ubi create rootfs1 15E15000 d; " \
  171. "ubi create rootfs2 15E15000 d; " \
  172. "ubi create userdata; " \
  173. "ubi detach\0" \
  174. "setup_nor1=" BK4_NET_INIT \
  175. "if tftp ${sys_addr} ${tftpdir}ubinor1.img; " \
  176. "then sf probe 0:0; " \
  177. "sf erase 0 01000000; " \
  178. "mtdparts default; " \
  179. "ubi part nor; " \
  180. "ubi create nor1fs; " \
  181. "ubi write ${sys_addr} nor1fs ${filesize}; " \
  182. "ubi detach; fi\0" \
  183. "setup_nor2=" BK4_NET_INIT \
  184. "if tftp ${sys_addr} ${tftpdir}ubinor2.img; " \
  185. "then sf probe 0:1; " \
  186. "sf erase 0 01000000; " \
  187. "mtdparts default; " \
  188. "ubi part nor; " \
  189. "ubi create nor2fs; " \
  190. "ubi write ${sys_addr} nor2fs ${filesize}; " \
  191. "ubi detach; fi\0" \
  192. "prepare_install_bk4r1_envs=" \
  193. "echo 'Preparing envs for SD card recovery!';" \
  194. "setenv ipaddr 192.168.0.99;" \
  195. "setenv serverip 192.168.0.50;" \
  196. "\0" \
  197. "install_bk4r1rs="\
  198. "led 0 on; " \
  199. "nand erase.chip; mtdparts default; "\
  200. "led 1 on; "\
  201. "run setup_dtbkernel; " \
  202. "run setup_system; " \
  203. "led 2 on;" \
  204. "run update_bootloader_from_sd; "\
  205. "run update_dtbkernel_from_sd; "\
  206. "run update_rootfs_from_sd; "\
  207. "setenv bootcmd 'run bootcmd_nand'; "\
  208. "saveenv; " \
  209. "led 3 on; " \
  210. "echo Finished - Please Power off, REMOVE SDCARD and set boot" \
  211. "source to NAND\0" \
  212. "active_workset=1\0"
  213. /* Miscellaneous configurable options */
  214. #define CONFIG_SYS_LOAD_ADDR CONFIG_LOADADDR
  215. /* Physical memory map */
  216. #define PHYS_SDRAM (0x80000000)
  217. #define PHYS_SDRAM_SIZE (SZ_512M)
  218. #define CONFIG_SYS_SDRAM_BASE PHYS_SDRAM
  219. #define CONFIG_SYS_INIT_RAM_ADDR IRAM_BASE_ADDR
  220. #define CONFIG_SYS_INIT_RAM_SIZE IRAM_SIZE
  221. #define CONFIG_SYS_INIT_SP_OFFSET \
  222. (CONFIG_SYS_INIT_RAM_SIZE - GENERATED_GBL_DATA_SIZE)
  223. #define CONFIG_SYS_INIT_SP_ADDR \
  224. (CONFIG_SYS_INIT_RAM_ADDR + CONFIG_SYS_INIT_SP_OFFSET)
  225. #endif /* __CONFIG_H */