diff options
author | Philippe Langlais <philippe.langlais@stericsson.com> | 2012-04-06 11:44:14 +0200 |
---|---|---|
committer | Philippe Langlais <philippe.langlais@stericsson.com> | 2012-04-06 11:44:14 +0200 |
commit | 70526554173aa46c8b13a59992b6fbc555fd4ee0 (patch) | |
tree | 21f0af1030935e2841b1427861905fef216e149f /drivers/gpu/mali/mali400ko/driver/src/devicedrv/mali/Kbuild | |
parent | 2ee8379b83e5afb57dd19192109380736c1c4431 (diff) | |
parent | a613e39784b04863a3e885be0b21b5966b7ff174 (diff) |
Merge branch 'mali-android' into stable-android-ux500-3.3-1
Diffstat (limited to 'drivers/gpu/mali/mali400ko/driver/src/devicedrv/mali/Kbuild')
-rw-r--r-- | drivers/gpu/mali/mali400ko/driver/src/devicedrv/mali/Kbuild | 272 |
1 files changed, 272 insertions, 0 deletions
diff --git a/drivers/gpu/mali/mali400ko/driver/src/devicedrv/mali/Kbuild b/drivers/gpu/mali/mali400ko/driver/src/devicedrv/mali/Kbuild new file mode 100644 index 00000000000..e90137714d2 --- /dev/null +++ b/drivers/gpu/mali/mali400ko/driver/src/devicedrv/mali/Kbuild @@ -0,0 +1,272 @@ +# +# Copyright (C) 2010-2012 ARM Limited. All rights reserved. +# +# This program is free software and is provided to you under the terms of the GNU General Public License version 2 +# as published by the Free Software Foundation, and any use by you of this program is subject to the terms of such GNU licence. +# +# A copy of the licence is included with the program, and can also be obtained from Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# + +# This file is called by the Linux build system. + +OSKOS=linux +FILES_PREFIX= + +# Get path to driver source from Linux build system +DRIVER_DIR=$(srctree)/$(src) + +include $(DRIVER_DIR)/Makefile.platform + +# set up defaults if not defined by the user +USING_UMP ?= 0 +USING_HWMEM ?= 0 +USING_OS_MEMORY ?= 0 +USING_MALI_PMU ?= 0 +USING_PMM ?= 1 +USING_GPU_UTILIZATION ?= 0 +USING_MALI_RUN_TIME_PM ?= 1 +USING_MALI_PMM_TESTSUITE ?= 0 +OS_MEMORY_KERNEL_BUFFER_SIZE_IN_MB ?= 6 +USING_PROFILING ?= 1 +USING_INTERNAL_PROFILING ?= 0 +DISABLE_PP0 ?= 0 +DISABLE_PP1 ?= 0 +DISABLE_PP2 ?= 0 +DISABLE_PP3 ?= 0 +TIMESTAMP ?= default +BUILD ?= debug +TARGET_PLATFORM ?= default +KERNEL_RUNTIME_PM_ENABLED ?= 0 +CONFIG ?= pb-virtex5-m200 + +MALI_RELEASE_NAME=$(shell cat $(DRIVER_DIR)/.version 2> /dev/null) +include $(DRIVER_DIR)/Makefile.common + +# Validate selected config +ifneq ($(shell [ -d $(DRIVER_DIR)/arch-$(CONFIG) ] && [ -f $(DRIVER_DIR)/arch-$(CONFIG)/config.h ] && echo "OK"), OK) +$(warning Current directory is $(shell pwd)) +$(error No configuration found for config $(CONFIG). Check that arch-$(CONFIG)/config.h exists) +else +# Link arch to the selected arch-config directory +$(shell [ -L $(DRIVER_DIR)/arch ] && rm $(DRIVER_DIR)/arch) +$(shell ln -sf arch-$(CONFIG) $(DRIVER_DIR)/arch) +$(shell touch $(DRIVER_DIR)/arch/config.h) +endif + +# Set up our defines, which will be passed to gcc +DEFINES += -DUSING_OS_MEMORY=$(USING_OS_MEMORY) +DEFINES += -DUSING_MMU=1 +DEFINES += -DUSING_UMP=$(USING_UMP) +DEFINES += -DUSING_HWMEM=$(USING_HWMEM) +DEFINES += -D_MALI_OSK_SPECIFIC_INDIRECT_MMAP +DEFINES += -DMALI_TIMELINE_PROFILING_ENABLED=$(USING_PROFILING) +DEFINES += -DMALI_INTERNAL_TIMELINE_PROFILING_ENABLED=$(USING_INTERNAL_PROFILING) +DEFINES += -DDISABLE_PP0=$(DISABLE_PP0) +DEFINES += -DDISABLE_PP1=$(DISABLE_PP1) +DEFINES += -DDISABLE_PP2=$(DISABLE_PP2) +DEFINES += -DDISABLE_PP3=$(DISABLE_PP3) +DEFINES += -DMALI_POWER_MGMT_TEST_SUITE=$(USING_MALI_PMM_TESTSUITE) +ifeq ($(shell test $(SUBLEVEL) -gt 32 -a $(PATCHLEVEL) = 6 -a $(VERSION) = 2 -o $(VERSION) -gt 2 && echo "OK"),OK) +# MALI_STATE_TRACKING is only supported on Linux kernels from version 2.6.32. +DEFINES += -DMALI_STATE_TRACKING=1 +else +DEFINES += -DMALI_STATE_TRACKING=0 +endif +DEFINES += -DMALI_OS_MEMORY_KERNEL_BUFFER_SIZE_IN_MB=$(OS_MEMORY_KERNEL_BUFFER_SIZE_IN_MB) + +MALI_PLATFORM_FILE = platform/$(TARGET_PLATFORM)/mali_platform.c + +DEFINES += -DUSING_MALI_PMM=$(USING_PMM) +DEFINES += -DMALI_GPU_UTILIZATION=$(USING_GPU_UTILIZATION) + +ifneq ($(call submodule_enabled, $(DRIVER_DIR), PMU),0) + USING_MALI_PMU = 1 +endif + +ifeq ($(USING_MALI_RUN_TIME_PM),1) +ifdef CONFIG_PM +ifdef CONFIG_PM_RUNTIME + KERNEL_RUNTIME_PM_ENABLED = 1 +endif +endif +endif + +DEFINES += -DUSING_MALI_PMU=$(USING_MALI_PMU) +DEFINES += -DMALI_PMM_RUNTIME_JOB_CONTROL_ON=$(KERNEL_RUNTIME_PM_ENABLED) + +ifeq ($(BUILD), debug) +DEFINES += -DDEBUG +endif +DEFINES += -DSVN_REV=$(SVN_REV) +DEFINES += -DSVN_REV_STRING=\"$(SVN_REV)\" + +# Linux has its own mmap cleanup handlers (see mali_kernel_mem_mmu.c) +DEFINES += -DMALI_UKK_HAS_IMPLICIT_MMAP_CLEANUP + +ifeq ($(USING_UMP),1) + DEFINES += -DMALI_USE_UNIFIED_MEMORY_PROVIDER=1 + ccflags-y += -I$(DRIVER_DIR)/../../ump/include/ump +else + DEFINES += -DMALI_USE_UNIFIED_MEMORY_PROVIDER=0 +endif + +# Use our defines when compiling +ccflags-y += $(DEFINES) -I$(DRIVER_DIR) -I$(DRIVER_DIR)/common -I$(DRIVER_DIR)/linux -I$(DRIVER_DIR)/platform + +# For customer releases the Linux Device Drivers will be provided as ARM proprietary and GPL releases: +# The ARM proprietary product will only include the license/proprietary directory +# The GPL product will only include the license/gpl directory + +ifeq ($(wildcard $(DRIVER_DIR)/linux/license/gpl/*),) +ccflags-y += -I$(DRIVER_DIR)/linux/license/proprietary +else +ccflags-y += -I$(DRIVER_DIR)/linux/license/gpl +endif +ccflags-y += -I$(DRIVER_DIR)/common/pmm + +# Source files which always are included in a build +SRC = \ + common/mali_kernel_core.c \ + linux/mali_kernel_linux.c \ + $(OSKOS)/mali_osk_indir_mmap.c \ + common/mali_kernel_rendercore.c \ + common/mali_kernel_descriptor_mapping.c \ + common/mali_kernel_vsync.c \ + linux/mali_ukk_vsync.c \ + linux/mali_kernel_sysfs.c \ + common/mali_kernel_mem_mmu.c \ + common/mali_kernel_memory_engine.c \ + common/mali_block_allocator.c \ + common/mali_kernel_mem_os.c \ + $(MALI_PLATFORM_FILE) \ + $(OSKFILES) \ + $(UKKFILES) \ + __malidrv_build_info.c + +# Selecting files to compile by parsing the config file + +# Use Gator profiling by default +ifeq ($(USING_PROFILING),1) +PROFILING_BACKEND_SOURCES = \ + linux/mali_osk_profiling_gator.c +endif + +# If internal profiling is selected, overwrite the PROFILING_BACKEND_SOURCES +# to use it instead. +ifeq ($(USING_INTERNAL_PROFILING),1) +PROFILING_BACKEND_SOURCES = \ + linux/mali_osk_profiling_internal.c \ + timestamp-$(TIMESTAMP)/mali_timestamp.c +ccflags-y += -I$(DRIVER_DIR)/timestamp-$(TIMESTAMP) +endif + +# Add the profiling sources +SRC += $(PROFILING_BACKEND_SOURCES) + +ifeq ($(USING_PMM),1) +ifeq ($(USING_MALI_PMU),1) +SRC += \ + common/pmm/mali_pmm_pmu.c +endif +SRC += \ + common/pmm/mali_pmm.c \ + common/pmm/mali_pmm_policy.c \ + common/pmm/mali_pmm_policy_alwayson.c \ + common/pmm/mali_pmm_policy_jobcontrol.c \ + common/pmm/mali_pmm_state.c \ + linux/mali_kernel_pm.c \ + linux/mali_osk_pm.c \ + linux/mali_device_pause_resume.c +endif + +ifeq ($(USING_MALI_PMM_TESTSUITE),1) +ccflags-y += -I$(DRIVER_DIR)/platform/mali_pmu_testing +ifeq ($(USING_MALI_PMU),0) +SRC += \ + platform/mali_pmu_testing/mali_platform_pmu_internal_testing.c +endif +endif + +ifeq ($(USING_GPU_UTILIZATION),1) +SRC += \ + common/mali_kernel_utilization.c +endif + +ifneq ($(call submodule_enabled, $(DRIVER_DIR), MALI400PP),0) + # Mali-400 PP in use + ccflags-y += -DUSING_MALI400 + SRC += common/mali_kernel_MALI200.c +endif + +ifneq ($(call submodule_enabled, $(DRIVER_DIR), MALI400GP),0) + # Mali-400 GP in use + SRC += common/mali_kernel_GP2.c +endif + +ifneq ($(call submodule_enabled, $(DRIVER_DIR), MALI300PP),0) + # Mali-400 PP in use + ccflags-y += -DUSING_MALI400 + SRC += common/mali_kernel_MALI200.c +endif + +ifneq ($(call submodule_enabled, $(DRIVER_DIR), MALI300GP),0) + # Mali-400 GP in use + SRC += common/mali_kernel_GP2.c +endif + +ifneq ($(call submodule_enabled, $(DRIVER_DIR), MALI200),0) + # Mali200 in use + ccflags-y += -DUSING_MALI200 + SRC += common/mali_kernel_MALI200.c +endif + +ifneq ($(call submodule_enabled, $(DRIVER_DIR), MALIGP2),0) + # MaliGP2 in use + SRC += common/mali_kernel_GP2.c +endif + +ifneq ($(call submodule_enabled, $(DRIVER_DIR), MALI400L2),0) + # Mali Level2 cache in use + ccflags-y += -DUSING_MALI400_L2_CACHE + SRC += common/mali_kernel_l2_cache.c +endif + +ifneq ($(call submodule_enabled, $(DRIVER_DIR), MALI300L2),0) + # Mali Level2 cache in use + ccflags-y += -DUSING_MALI400_L2_CACHE + SRC += common/mali_kernel_l2_cache.c +endif + +ifeq ($(USING_HWMEM),1) + # HWMEM used as backend for UMP api + EXTRA_CFLAGS += -I$(DRIVER_DIR)/../ump/common + SRC += platform/ux500/ump_kernel_api_hwmem.c +endif + +# Tell the Linux build system from which .o file to create the kernel module +obj-$(CONFIG_GPU_MALI) := mali.o +# Tell the Linux build system to enable building of our .c files +mali-y := $(SRC:.c=.o) + +# Extend common version-string +VERSION_STRINGS += BUILD=$(shell echo $(BUILD) | tr a-z A-Z) +VERSION_STRINGS += CPU=$(CPU) +VERSION_STRINGS += USING_UMP=$(USING_UMP) +VERSION_STRINGS += USING_HWMEM=$(USING_HWMEM) +VERSION_STRINGS += USING_PMM=$(USING_PMM) +VERSION_STRINGS += USING_MALI200=$(call submodule_enabled, $(DRIVER_DIR), MALI200) +VERSION_STRINGS += USING_MALI400=$(call submodule_enabled, $(DRIVER_DIR), MALI400) +VERSION_STRINGS += USING_MALI400_L2_CACHE=$(call submodule_enabled, $(DRIVER_DIR), MALI400L2) +VERSION_STRINGS += USING_GP2=$(call submodule_enabled, $(DRIVER_DIR), MALIGP2) +VERSION_STRINGS += KDIR=$(KDIR) +VERSION_STRINGS += MALI_PLATFORM_FILE=$(MALI_PLATFORM_FILE) +VERSION_STRINGS += OS_MEMORY_KERNEL_BUFFER_SIZE_IN_MB=$(OS_MEMORY_KERNEL_BUFFER_SIZE_IN_MB) +VERSION_STRINGS += USING_PROFILING=$(USING_PROFILING) +VERSION_STRINGS += USING_INTERNAL_PROFILING=$(USING_INTERNAL_PROFILING) +VERSION_STRINGS += USING_GPU_UTILIZATION=$(USING_GPU_UTILIZATION) +VERSION_STRINGS += USING_MALI_RUN_TIME_PM=$(USING_MALI_RUN_TIME_PM) + +# Create file with Mali driver configuration +$(DRIVER_DIR)/__malidrv_build_info.c: + @echo 'const char *__malidrv_build_info(void) { return "malidrv: $(VERSION_STRINGS)";}' > $(DRIVER_DIR)/__malidrv_build_info.c |