mirror of
https://github.com/thead-yocto-mirror/npu-ax3386-kernel
synced 2026-06-21 08:52:21 +02:00
169 lines
6.6 KiB
Makefile
169 lines
6.6 KiB
Makefile
include Makefile
|
|
|
|
# if building the kernel module in-tree, these config options
|
|
# should be put into a Kconfig file.
|
|
# if building out-of-tree, defining them here is as good as any.
|
|
# CONFIG_VHA: build the VHA driver
|
|
export CONFIG_VHA := m
|
|
|
|
# hardware options:
|
|
# CONFIG_VHA_DUMMY: driver runs without hardware
|
|
# CONFIG_VHA_DUMMY_HW_SIM: driver runs without hardware but simulates hw processing time
|
|
# CONFIG_VHA_PCI: driver runs with generic PCI hardware
|
|
# CONFIG_VHA_EMU: driver runs with hardware emulator using legacy ICE interface
|
|
# CONFIG_VHA_FROST: driver runs with hardware emulator using ICE2 interface
|
|
# CONFIG_VHA_APOLLO: driver runs with IMG Apollo fpga baseboard
|
|
# CONFIG_VHA_ORION: driver runs with IMG Orion/Sirius hardware
|
|
# CONFIG_VHA_ODIN: driver runs with IMG Sleipnir/Odin fpga baseboard
|
|
# CONFIG_VHA_NEXEF: driver runs with the 3NX-F base platform driver and Gyrus system configuration file
|
|
# CONFIG_VHA_DT_EXAMPLE: driver example using a device tree
|
|
|
|
# CONFIG_VHA_SERIES : either AX2 or AX3
|
|
# CONFIG_HW_AX2: driver runs AX2145 and AX2185 hardware
|
|
# CONFIG_HW_AX3: driver runs AX31xx/AX33xx/AX35xx hardware
|
|
# CONFIG_HW_AX3_MC/CONFIG_HW_MULITCORE: driver runs AXAX3797 multicore hardware
|
|
#
|
|
# system configuration options
|
|
# CONFIG_VHA_SYS_MIRAGE: driver runs with Mirage system configuration file. It is set by default when CONFIG_HW_AX2 is set.
|
|
# CONFIG_VHA_SYS_AURA: driver runs with Aura system configuration file. It is set by default when CONFIG_HW_AX3 is set.
|
|
# CONFIG_VHA_SYS_VAGUS: driver runs with Vagus system configuration file. Applicable when CONFIG_HW_AX3 is set.
|
|
# CONFIG_VHA_SYS_MAGNA: driver runs with Magna system configuration file. It is set by default when CONFIG_HW_MULTICORE is set.
|
|
|
|
# misc options:
|
|
# CONFIG_TARGET_OSID: driver is compiled for selected OS id. Default: 0 (OS0), Applicable for CONFIG_HW_AX3 only.
|
|
# CONFIG_VHA_MMU_MIRRORED_CTX: driver is compiled with mirrored MMU page tables regarding MODEL & IO. Default: enabled, Applicable for CONFIG_HW_AX3 only.
|
|
# CONFIG_VHA_SCF: driver is compiled with safety critical features. Default: enabled, Applicable for CONFIG_VHA_SYS_VAGUS & CONFIG_VHA_SYS_MAGNA.
|
|
# CONFIG_VHA_NCORES: driver is compiled for specified number of cores. Default: 6, Applicable for CONFIG_HW_MULITCORE.
|
|
# CONFIG_VHA_ENHANCED_APM: driver is compiled to support Enhanced Active Power Management. Default: enabled, Applicable for CONFIG_HW_MULITCORE.
|
|
|
|
# Aliases
|
|
CONFIG_VHA_APOLLO := $(CONFIG_VHA_FPGA)
|
|
CONFIG_HW_AX3_MC := $(CONFIG_HW_MULTICORE)
|
|
|
|
subdir-ccflags-y += -Wall -g
|
|
# this should not be needed, but on our fpga, ubuntu kernel 4.4.0-116 does not work without it
|
|
subdir-ccflags-$(CONFIG_VHA_APOLLO) += -DRETPOLINE
|
|
subdir-ccflags-$(CONFIG_VHA_ODIN) += -DRETPOLINE
|
|
|
|
# fail if target not specified
|
|
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},)
|
|
$(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)
|
|
endif
|
|
|
|
#------------------------------------
|
|
# for internal use
|
|
#------------------------------------
|
|
export CONFIG_FUNCTONAL_TEST_CONTROL := y
|
|
export CONFIG_FORCE_IOREG_DEBUG := y
|
|
|
|
ifeq ($(KERNELRELEASE),)
|
|
|
|
KDIR ?= /lib/modules/$(shell uname -r)/build
|
|
PWD := $(shell pwd)
|
|
|
|
# Hardware variant
|
|
ifeq ($(CONFIG_HW_AX2)$(CONFIG_HW_AX3)$(CONFIG_HW_AX3_MC),)
|
|
$(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))
|
|
export CONFIG_HW_AX2 := y
|
|
endif
|
|
|
|
ifeq ($(CONFIG_HW_AX2), y)
|
|
$(info Building Mirage target!)
|
|
|
|
ifeq ($(CONFIG_VHA_SCF), y)
|
|
$(error Safety cirtical features not supported by Mirage!)
|
|
endif
|
|
|
|
ifeq ($(CONFIG_VHA_LO_PRI_SUBSEGS), y)
|
|
$(error Low priority subsegments not supported by Mirage!)
|
|
endif
|
|
|
|
export CONFIG_VHA_MMU_MIRRORED_CTX ?= n
|
|
|
|
ifeq ($(CONFIG_VHA_MMU_MIRRORED_CTX),)
|
|
$(error Separate MMU contexts not supported by Mirage!)
|
|
endif
|
|
endif
|
|
|
|
ifeq ($(CONFIG_HW_AX3_MC), y)
|
|
ifeq ($(CONFIG_VHA_LO_PRI_SUBSEGS), y)
|
|
$(error Low priority subsegments not supported by Magna!)
|
|
endif
|
|
|
|
export CONFIG_HW_AX3 := y
|
|
export CONFIG_VHA_MMU_MIRRORED_CTX := y
|
|
export CONFIG_VHA_SYS_MAGNA := y
|
|
export CONFIG_VHA_NCORES ?= 6
|
|
export CONFIG_VHA_SCF ?= y
|
|
export CONFIG_VHA_ENHANCED_APM ?= y
|
|
|
|
$(info Building Magna target for $(CONFIG_VHA_NCORES) core(s)!)
|
|
|
|
# Safety critical features
|
|
ifeq ($(CONFIG_VHA_SCF), y)
|
|
$(info Building with Magna safety cirtical features !)
|
|
endif
|
|
|
|
# Selective APM
|
|
ifeq ($(CONFIG_VHA_ENHANCED_APM), y)
|
|
$(info Building with Enhanced APM feature !)
|
|
endif
|
|
endif
|
|
|
|
ifeq ($(CONFIG_HW_AX3), y)
|
|
ifeq ($(CONFIG_HW_AX3_MC),)
|
|
# Default OS target = 0
|
|
export CONFIG_TARGET_OSID ?= 0
|
|
export CONFIG_VHA_MMU_MIRRORED_CTX ?= y
|
|
|
|
$(info Building Aura/Vagus target for OS$(CONFIG_TARGET_OSID) !)
|
|
|
|
ifeq ($(CONFIG_VHA_MMU_MIRRORED_CTX),y)
|
|
$(info Building target with mirrored mmu contexts!)
|
|
else
|
|
$(info Building target with separate mmu contexts!)
|
|
endif
|
|
|
|
# System config
|
|
ifeq ($(CONFIG_VHA_SYS_AURA)$(CONFIG_VHA_SYS_VAGUS),)
|
|
$(info no system config specified. Defaulting to Aura: CONFIG_VHA_SYS_AURA=y. To build for Vagus, please specify: CONFIG_VHA_SYS_VAGUS=y)
|
|
export CONFIG_VHA_SYS_AURA := y
|
|
endif
|
|
|
|
ifeq ($(CONFIG_VHA_LO_PRI_SUBSEGS), y)
|
|
$(info Building with Low priority subsegments QoS feature !)
|
|
endif
|
|
|
|
ifeq ($(CONFIG_VHA_SYS_VAGUS),)
|
|
ifeq ($(CONFIG_VHA_SCF), y)
|
|
# No safety critical features
|
|
$(error Safety cirtical features not supported by Aura!)
|
|
endif
|
|
else
|
|
export CONFIG_VHA_SCF ?= y
|
|
# Safety critical features
|
|
ifeq ($(CONFIG_VHA_SCF), y)
|
|
$(info Building with Vagus safety cirtical features !)
|
|
endif
|
|
endif
|
|
endif
|
|
endif
|
|
|
|
# kernel warning levels: as high as possible:
|
|
# W=12 and W=123 seem to warn about linux kernel headers, so use W=1.
|
|
KWARN := W=1
|
|
|
|
ifneq (,$(shell which sparse))
|
|
# C=1: use 'sparse' for extra warnings, if it is avail.
|
|
SPARSE := C=1
|
|
endif
|
|
|
|
modules:
|
|
$(MAKE) -C $(KDIR) M=$(PWD) $(SPARSE) $(KWARN) EXTRA_CFLAGS="$(EXTRA_CFLAGS)"
|
|
clean:
|
|
$(MAKE) -C $(KDIR) M=$(PWD) clean
|
|
check:
|
|
cd $(KDIR); scripts/checkpatch.pl -f `find $(PWD)/vha $(PWD)/include $(PWD)/img_mem -name "*\.[ch]"`
|
|
|
|
endif # KERNELRELEASE
|