xilinx-prebuilt.mk 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  1. ################################################################################
  2. #
  3. # xilinx-prebuilt
  4. #
  5. ################################################################################
  6. XILINX_PREBUILT_VERSION = $(call qstrip,$(BR2_TARGET_XILINX_PREBUILT_VERSION))
  7. ifeq ($(BR2_TARGET_XILINX_PREBUILT_VERSAL_XSA),y)
  8. XILINX_PREBUILT_FILE = $(call qstrip,$(BR2_TARGET_XILINX_PREBUILT_VERSAL_XSA_LOCATION))
  9. XILINX_PREBUILT_SITE = $(patsubst %/,%,$(dir $(XILINX_PREBUILT_FILE)))
  10. XILINX_PREBUILT_SOURCE = $(notdir $(XILINX_PREBUILT_FILE))
  11. define XILINX_PREBUILT_EXTRACT_CMDS
  12. $(UNZIP) $(XILINX_PREBUILT_DL_DIR)/$(XILINX_PREBUILT_SOURCE) -d $(@D)
  13. endef
  14. else # BR2_TARGET_XILINX_PREBUILT_VERSAL_XSA
  15. XILINX_PREBUILT_SITE = $(call github,Xilinx,soc-prebuilt-firmware,$(XILINX_PREBUILT_VERSION))
  16. XILINX_PREBUILT_LICENSE = MIT
  17. XILINX_PREBUILT_LICENSE_FILES = LICENSE
  18. endif # BR2_TARGET_XILINX_PREBUILT_VERSAL_XSA
  19. XILINX_PREBUILT_INSTALL_IMAGES = YES
  20. XILINX_PREBUILT_FAMILY = $(call qstrip,$(BR2_TARGET_XILINX_PREBUILT_FAMILY))
  21. XILINX_PREBUILT_BOARD = $(call qstrip,$(BR2_TARGET_XILINX_PREBUILT_BOARD))
  22. XILINX_PREBUILT_BOARD_DIR = $(@D)/$(XILINX_PREBUILT_BOARD)-$(XILINX_PREBUILT_FAMILY)
  23. ifeq ($(BR2_TARGET_XILINX_PREBUILT_VERSAL),y)
  24. ifeq ($(BR2_TARGET_XILINX_PREBUILT_VERSAL_XSA),y)
  25. XILINX_PREBUILT_PLM = $(@D)/pdi_files/gen_files/plm.elf
  26. # Unlike the psmfw.elf file for Xilinx development boards,
  27. # AMD Vivado Design Suite currently generates a file named psm_fw.elf.
  28. # Future versions of AMD Vivado will generate a file named psmfw.elf,
  29. # so to support current and future AMD Vivado versions, the filename
  30. # psm*fw.elf is used.
  31. XILINX_PREBUILT_PSMFW = $(@D)/pdi_files/static_files/psm*fw.elf
  32. # We need the *.pdi glob, because the file has different names for the
  33. # different boards, and it has to be named boot.pdi when installed.
  34. # If Segmented Configuration is used, there will be two pdi files and we need
  35. # the file that has "_boot.pdi" in the filename.
  36. define XILINX_PREBUILT_INSTALL_VERSAL_XSA_BOOT_PDI
  37. $(INSTALL) -D -m 0644 \
  38. $(if $(wildcard $(@D)/*_boot.pdi), \
  39. $(@D)/*_boot.pdi, \
  40. $(@D)/*.pdi \
  41. ) \
  42. $(BINARIES_DIR)/boot.pdi
  43. endef
  44. ifeq ($(BR2_TARGET_XILINX_PREBUILT_VERSAL_PLD_PDI),y)
  45. # Install pld.pdi in target file system for run-time loading when using
  46. # Versal Segmented Configuration.
  47. define XILINX_PREBUILT_INSTALL_VERSAL_XSA_PLD_PDI
  48. $(if $(wildcard $(@D)/*_pld.pdi),
  49. mkdir -p $(TARGET_DIR)/lib/firmware/xilinx && \
  50. $(INSTALL) -D -m 0644 $(@D)/*_pld.pdi \
  51. $(TARGET_DIR)/lib/firmware/xilinx
  52. )
  53. endef
  54. endif # BR2_TARGET_XILINX_PREBUILT_VERSAL_PLD_PDI
  55. else # BR2_TARGET_XILINX_PREBUILT_VERSAL_XSA
  56. XILINX_PREBUILT_PLM = $(XILINX_PREBUILT_BOARD_DIR)/plm.elf
  57. XILINX_PREBUILT_PSMFW = $(XILINX_PREBUILT_BOARD_DIR)/psmfw.elf
  58. # We need the *.pdi glob, because the file has different names for the
  59. # different boards, and it has to be named boot.pdi when installed.
  60. # If Segmented Configuration is used, there will be two pdi files and we need
  61. # the file that has "_boot.pdi" in the filename.
  62. define XILINX_PREBUILT_INSTALL_VERSAL_BOOT_PDI
  63. $(INSTALL) -D -m 0644 \
  64. $(if $(wildcard $(XILINX_PREBUILT_BOARD_DIR)/*_boot.pdi), \
  65. $(XILINX_PREBUILT_BOARD_DIR)/*_boot.pdi, \
  66. $(XILINX_PREBUILT_BOARD_DIR)/*.pdi \
  67. ) \
  68. $(BINARIES_DIR)/boot.pdi
  69. endef
  70. ifeq ($(BR2_TARGET_XILINX_PREBUILT_VERSAL_PLD_PDI),y)
  71. # Install pld.pdi in target file system for run-time loading when using
  72. # Versal Segmented Configuration.
  73. define XILINX_PREBUILT_INSTALL_VERSAL_PLD_PDI
  74. $(if $(wildcard $(XILINX_PREBUILT_BOARD_DIR)/*_pld.pdi),
  75. mkdir -p $(TARGET_DIR)/lib/firmware/xilinx && \
  76. $(INSTALL) -D -m 0644 $(XILINX_PREBUILT_BOARD_DIR)/*_pld.pdi \
  77. $(TARGET_DIR)/lib/firmware/xilinx
  78. )
  79. endef
  80. endif # BR2_TARGET_XILINX_PREBUILT_VERSAL_PLD_PDI
  81. endif # BR2_TARGET_XILINX_PREBUILT_VERSAL_XSA
  82. ifneq ($(BR2_TARGET_XILINX_EMBEDDEDSW_VERSAL_PLM),y)
  83. define XILINX_PREBUILT_INSTALL_VERSAL_PLM
  84. $(INSTALL) -D -m 0755 $(XILINX_PREBUILT_PLM) \
  85. $(BINARIES_DIR)/plm.elf
  86. endef
  87. endif # !BR2_TARGET_XILINX_EMBEDDEDSW_VERSAL_PLM
  88. ifneq ($(BR2_TARGET_XILINX_EMBEDDEDSW_VERSAL_PSMFW),y)
  89. define XILINX_PREBUILT_INSTALL_VERSAL_PSMFW
  90. $(INSTALL) -D -m 0755 $(XILINX_PREBUILT_PSMFW) \
  91. $(BINARIES_DIR)/psmfw.elf
  92. endef
  93. endif # !BR2_TARGET_XILINX_EMBEDDEDSW_VERSAL_PSMFW
  94. else # BR2_TARGET_XILINX_PREBUILT_VERSAL
  95. ifneq ($(BR2_TARGET_XILINX_EMBEDDEDSW_ZYNQMP_PMUFW),y)
  96. define XILINX_PREBUILT_INSTALL_ZYNQMP_PMUFW
  97. $(INSTALL) -D -m 0755 $(XILINX_PREBUILT_BOARD_DIR)/pmufw.elf \
  98. $(BINARIES_DIR)/pmufw.elf
  99. endef
  100. endif # !BR2_TARGET_XILINX_EMBEDDEDSW_ZYNQMP_PMUFW
  101. endif # BR2_TARGET_XILINX_PREBUILT_VERSAL
  102. define XILINX_PREBUILT_INSTALL_IMAGES_CMDS
  103. $(XILINX_PREBUILT_INSTALL_VERSAL_PLM)
  104. $(XILINX_PREBUILT_INSTALL_VERSAL_PSMFW)
  105. $(XILINX_PREBUILT_INSTALL_VERSAL_BOOT_PDI)
  106. $(XILINX_PREBUILT_INSTALL_VERSAL_XSA_BOOT_PDI)
  107. $(XILINX_PREBUILT_INSTALL_ZYNQMP_PMUFW)
  108. endef
  109. define XILINX_PREBUILT_INSTALL_TARGET_CMDS
  110. $(XILINX_PREBUILT_INSTALL_VERSAL_PLD_PDI)
  111. $(XILINX_PREBUILT_INSTALL_VERSAL_XSA_PLD_PDI)
  112. endef
  113. $(eval $(generic-package))