Makefile.testing 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168
  1. include Makefile
  2. # if building the kernel module in-tree, these config options
  3. # should be put into a Kconfig file.
  4. # if building out-of-tree, defining them here is as good as any.
  5. # CONFIG_VHA: build the VHA driver
  6. export CONFIG_VHA := m
  7. # hardware options:
  8. # CONFIG_VHA_DUMMY: driver runs without hardware
  9. # CONFIG_VHA_DUMMY_HW_SIM: driver runs without hardware but simulates hw processing time
  10. # CONFIG_VHA_PCI: driver runs with generic PCI hardware
  11. # CONFIG_VHA_EMU: driver runs with hardware emulator using legacy ICE interface
  12. # CONFIG_VHA_FROST: driver runs with hardware emulator using ICE2 interface
  13. # CONFIG_VHA_APOLLO: driver runs with IMG Apollo fpga baseboard
  14. # CONFIG_VHA_ORION: driver runs with IMG Orion/Sirius hardware
  15. # CONFIG_VHA_ODIN: driver runs with IMG Sleipnir/Odin fpga baseboard
  16. # CONFIG_VHA_NEXEF: driver runs with the 3NX-F base platform driver and Gyrus system configuration file
  17. # CONFIG_VHA_DT_EXAMPLE: driver example using a device tree
  18. # CONFIG_VHA_SERIES : either AX2 or AX3
  19. # CONFIG_HW_AX2: driver runs AX2145 and AX2185 hardware
  20. # CONFIG_HW_AX3: driver runs AX31xx/AX33xx/AX35xx hardware
  21. # CONFIG_HW_AX3_MC/CONFIG_HW_MULITCORE: driver runs AXAX3797 multicore hardware
  22. #
  23. # system configuration options
  24. # CONFIG_VHA_SYS_MIRAGE: driver runs with Mirage system configuration file. It is set by default when CONFIG_HW_AX2 is set.
  25. # CONFIG_VHA_SYS_AURA: driver runs with Aura system configuration file. It is set by default when CONFIG_HW_AX3 is set.
  26. # CONFIG_VHA_SYS_VAGUS: driver runs with Vagus system configuration file. Applicable when CONFIG_HW_AX3 is set.
  27. # CONFIG_VHA_SYS_MAGNA: driver runs with Magna system configuration file. It is set by default when CONFIG_HW_MULTICORE is set.
  28. # misc options:
  29. # CONFIG_TARGET_OSID: driver is compiled for selected OS id. Default: 0 (OS0), Applicable for CONFIG_HW_AX3 only.
  30. # CONFIG_VHA_MMU_MIRRORED_CTX: driver is compiled with mirrored MMU page tables regarding MODEL & IO. Default: enabled, Applicable for CONFIG_HW_AX3 only.
  31. # CONFIG_VHA_SCF: driver is compiled with safety critical features. Default: enabled, Applicable for CONFIG_VHA_SYS_VAGUS & CONFIG_VHA_SYS_MAGNA.
  32. # CONFIG_VHA_NCORES: driver is compiled for specified number of cores. Default: 6, Applicable for CONFIG_HW_MULITCORE.
  33. # CONFIG_VHA_ENHANCED_APM: driver is compiled to support Enhanced Active Power Management. Default: enabled, Applicable for CONFIG_HW_MULITCORE.
  34. # Aliases
  35. CONFIG_VHA_APOLLO := $(CONFIG_VHA_FPGA)
  36. CONFIG_HW_AX3_MC := $(CONFIG_HW_MULTICORE)
  37. subdir-ccflags-y += -Wall -g
  38. # this should not be needed, but on our fpga, ubuntu kernel 4.4.0-116 does not work without it
  39. subdir-ccflags-$(CONFIG_VHA_APOLLO) += -DRETPOLINE
  40. subdir-ccflags-$(CONFIG_VHA_ODIN) += -DRETPOLINE
  41. # fail if target not specified
  42. ifeq ($(CONFIG_VHA_PCI)$(CONFIG_VHA_EMU)$(CONFIG_VHA_FROST)$(CONFIG_VHA_APOLLO)$(CONFIG_VHA_DUMMY)$(CONFIG_VHA_DUMMY_HW_SIM)$(CONFIG_VHA_ORION)$(CONFIG_VHA_ODIN)$(CONFIG_VHA_DT_EXAMPLE)${CONFIG_VHA_NEXEF},)
  43. $(error no VHA platform specified. Try CONFIG_VHA_DUMMY=y or CONFIG_VHA_APOLLO=y or CONFIG_VHA_ODIN=y or CONFIG_VHA_ORION=y etc)
  44. endif
  45. #------------------------------------
  46. # for internal use
  47. #------------------------------------
  48. export CONFIG_FUNCTONAL_TEST_CONTROL := y
  49. export CONFIG_FORCE_IOREG_DEBUG := y
  50. ifeq ($(KERNELRELEASE),)
  51. KDIR ?= /lib/modules/$(shell uname -r)/build
  52. PWD := $(shell pwd)
  53. # Hardware variant
  54. ifeq ($(CONFIG_HW_AX2)$(CONFIG_HW_AX3)$(CONFIG_HW_AX3_MC),)
  55. $(info no HW variant specified. Defaulting to Mirage: CONFIG_HW_AX2=y. To build for Aura, please specify: CONFIG_HW_AX3=y, To build for Magna, please specify: CONFIG_HW_AX3_MC=y (or CONFIG_HW_MULTICORE=y))
  56. export CONFIG_HW_AX2 := y
  57. endif
  58. ifeq ($(CONFIG_HW_AX2), y)
  59. $(info Building Mirage target!)
  60. ifeq ($(CONFIG_VHA_SCF), y)
  61. $(error Safety cirtical features not supported by Mirage!)
  62. endif
  63. ifeq ($(CONFIG_VHA_LO_PRI_SUBSEGS), y)
  64. $(error Low priority subsegments not supported by Mirage!)
  65. endif
  66. export CONFIG_VHA_MMU_MIRRORED_CTX ?= n
  67. ifeq ($(CONFIG_VHA_MMU_MIRRORED_CTX),)
  68. $(error Separate MMU contexts not supported by Mirage!)
  69. endif
  70. endif
  71. ifeq ($(CONFIG_HW_AX3_MC), y)
  72. ifeq ($(CONFIG_VHA_LO_PRI_SUBSEGS), y)
  73. $(error Low priority subsegments not supported by Magna!)
  74. endif
  75. export CONFIG_HW_AX3 := y
  76. export CONFIG_VHA_MMU_MIRRORED_CTX := y
  77. export CONFIG_VHA_SYS_MAGNA := y
  78. export CONFIG_VHA_NCORES ?= 6
  79. export CONFIG_VHA_SCF ?= y
  80. export CONFIG_VHA_ENHANCED_APM ?= y
  81. $(info Building Magna target for $(CONFIG_VHA_NCORES) core(s)!)
  82. # Safety critical features
  83. ifeq ($(CONFIG_VHA_SCF), y)
  84. $(info Building with Magna safety cirtical features !)
  85. endif
  86. # Selective APM
  87. ifeq ($(CONFIG_VHA_ENHANCED_APM), y)
  88. $(info Building with Enhanced APM feature !)
  89. endif
  90. endif
  91. ifeq ($(CONFIG_HW_AX3), y)
  92. ifeq ($(CONFIG_HW_AX3_MC),)
  93. # Default OS target = 0
  94. export CONFIG_TARGET_OSID ?= 0
  95. export CONFIG_VHA_MMU_MIRRORED_CTX ?= y
  96. $(info Building Aura/Vagus target for OS$(CONFIG_TARGET_OSID) !)
  97. ifeq ($(CONFIG_VHA_MMU_MIRRORED_CTX),y)
  98. $(info Building target with mirrored mmu contexts!)
  99. else
  100. $(info Building target with separate mmu contexts!)
  101. endif
  102. # System config
  103. ifeq ($(CONFIG_VHA_SYS_AURA)$(CONFIG_VHA_SYS_VAGUS),)
  104. $(info no system config specified. Defaulting to Aura: CONFIG_VHA_SYS_AURA=y. To build for Vagus, please specify: CONFIG_VHA_SYS_VAGUS=y)
  105. export CONFIG_VHA_SYS_AURA := y
  106. endif
  107. ifeq ($(CONFIG_VHA_LO_PRI_SUBSEGS), y)
  108. $(info Building with Low priority subsegments QoS feature !)
  109. endif
  110. ifeq ($(CONFIG_VHA_SYS_VAGUS),)
  111. ifeq ($(CONFIG_VHA_SCF), y)
  112. # No safety critical features
  113. $(error Safety cirtical features not supported by Aura!)
  114. endif
  115. else
  116. export CONFIG_VHA_SCF ?= y
  117. # Safety critical features
  118. ifeq ($(CONFIG_VHA_SCF), y)
  119. $(info Building with Vagus safety cirtical features !)
  120. endif
  121. endif
  122. endif
  123. endif
  124. # kernel warning levels: as high as possible:
  125. # W=12 and W=123 seem to warn about linux kernel headers, so use W=1.
  126. KWARN := W=1
  127. ifneq (,$(shell which sparse))
  128. # C=1: use 'sparse' for extra warnings, if it is avail.
  129. SPARSE := C=1
  130. endif
  131. modules:
  132. $(MAKE) -C $(KDIR) M=$(PWD) $(SPARSE) $(KWARN) EXTRA_CFLAGS="$(EXTRA_CFLAGS)"
  133. clean:
  134. $(MAKE) -C $(KDIR) M=$(PWD) clean
  135. check:
  136. cd $(KDIR); scripts/checkpatch.pl -f `find $(PWD)/vha $(PWD)/include $(PWD)/img_mem -name "*\.[ch]"`
  137. endif # KERNELRELEASE