PD #88888: sync with opensource licence. rewrite for multi platform support.
authorKasin Lee <kasin.li@amlogic.com>
Wed, 8 Jan 2014 07:22:47 +0000 (15:22 +0800)
committerKasin Lee <kasin.li@amlogic.com>
Wed, 8 Jan 2014 07:22:47 +0000 (15:22 +0800)
193 files changed:
mali/Kbuild
mali/Kconfig
mali/Makefile
mali/common/mali_broadcast.c
mali/common/mali_broadcast.h
mali/common/mali_dlbu.c
mali/common/mali_dlbu.h
mali/common/mali_dma.c
mali/common/mali_dma.h
mali/common/mali_gp.c
mali/common/mali_gp.h
mali/common/mali_gp_job.c
mali/common/mali_gp_job.h
mali/common/mali_gp_scheduler.c
mali/common/mali_gp_scheduler.h
mali/common/mali_group.c
mali/common/mali_group.h
mali/common/mali_hw_core.c
mali/common/mali_hw_core.h
mali/common/mali_kernel_common.h
mali/common/mali_kernel_core.c
mali/common/mali_kernel_core.h
mali/common/mali_kernel_descriptor_mapping.c
mali/common/mali_kernel_descriptor_mapping.h
mali/common/mali_kernel_utilization.c
mali/common/mali_kernel_utilization.h
mali/common/mali_kernel_vsync.c
mali/common/mali_l2_cache.c
mali/common/mali_l2_cache.h
mali/common/mali_mem_validation.c
mali/common/mali_mem_validation.h
mali/common/mali_mmu.c
mali/common/mali_mmu.h
mali/common/mali_mmu_page_directory.c
mali/common/mali_mmu_page_directory.h
mali/common/mali_osk.h
mali/common/mali_osk_bitops.h
mali/common/mali_osk_list.h
mali/common/mali_osk_mali.h
mali/common/mali_osk_profiling.h
mali/common/mali_osk_types.h
mali/common/mali_pm.c
mali/common/mali_pm.h
mali/common/mali_pm_domain.c
mali/common/mali_pm_domain.h
mali/common/mali_pmu.c
mali/common/mali_pmu.h
mali/common/mali_pp.c
mali/common/mali_pp.h
mali/common/mali_pp_job.c
mali/common/mali_pp_job.h
mali/common/mali_pp_scheduler.c
mali/common/mali_pp_scheduler.h
mali/common/mali_scheduler.c
mali/common/mali_scheduler.h
mali/common/mali_scheduler_types.h
mali/common/mali_session.c
mali/common/mali_session.h
mali/common/mali_soft_job.c
mali/common/mali_soft_job.h
mali/common/mali_spinlock_reentrant.c
mali/common/mali_spinlock_reentrant.h
mali/common/mali_timeline.c
mali/common/mali_timeline.h
mali/common/mali_timeline_fence_wait.c
mali/common/mali_timeline_fence_wait.h
mali/common/mali_timeline_sync_fence.c
mali/common/mali_timeline_sync_fence.h
mali/common/mali_ukk.h
mali/common/mali_user_settings_db.c
mali/common/mali_user_settings_db.h
mali/include/linux/mali/mali_utgard.h
mali/include/linux/mali/mali_utgard_counters.h
mali/include/linux/mali/mali_utgard_ioctl.h
mali/include/linux/mali/mali_utgard_profiling_events.h
mali/include/linux/mali/mali_utgard_profiling_gator_api.h
mali/include/linux/mali/mali_utgard_uk_types.h
mali/linux/license/gpl/mali_kernel_license.h
mali/linux/mali_device_pause_resume.c
mali/linux/mali_kernel_linux.c
mali/linux/mali_kernel_linux.h
mali/linux/mali_kernel_sysfs.c
mali/linux/mali_kernel_sysfs.h
mali/linux/mali_linux_trace.h
mali/linux/mali_memory.c
mali/linux/mali_memory.h
mali/linux/mali_memory_block_alloc.c
mali/linux/mali_memory_block_alloc.h
mali/linux/mali_memory_dma_buf.c
mali/linux/mali_memory_dma_buf.h
mali/linux/mali_memory_external.c
mali/linux/mali_memory_os_alloc.c
mali/linux/mali_memory_os_alloc.h
mali/linux/mali_memory_types.h
mali/linux/mali_memory_ump.c
mali/linux/mali_osk_atomics.c
mali/linux/mali_osk_irq.c
mali/linux/mali_osk_locks.c
mali/linux/mali_osk_locks.h
mali/linux/mali_osk_low_level_mem.c
mali/linux/mali_osk_mali.c
mali/linux/mali_osk_math.c
mali/linux/mali_osk_memory.c
mali/linux/mali_osk_misc.c
mali/linux/mali_osk_notification.c
mali/linux/mali_osk_pm.c
mali/linux/mali_osk_profiling.c
mali/linux/mali_osk_specific.h
mali/linux/mali_osk_time.c
mali/linux/mali_osk_timers.c
mali/linux/mali_osk_wait_queue.c
mali/linux/mali_osk_wq.c
mali/linux/mali_pmu_power_up_down.c
mali/linux/mali_profiling_events.h
mali/linux/mali_profiling_gator_api.h
mali/linux/mali_profiling_internal.c
mali/linux/mali_profiling_internal.h
mali/linux/mali_sync.c
mali/linux/mali_sync.h
mali/linux/mali_uk_types.h
mali/linux/mali_ukk_core.c
mali/linux/mali_ukk_gp.c
mali/linux/mali_ukk_mem.c
mali/linux/mali_ukk_pp.c
mali/linux/mali_ukk_profiling.c
mali/linux/mali_ukk_soft_job.c
mali/linux/mali_ukk_timeline.c
mali/linux/mali_ukk_vsync.c
mali/linux/mali_ukk_wrappers.h
mali/platform/mali_clock.c [new file with mode: 0644]
mali/platform/mali_clock.h [new file with mode: 0644]
mali/platform/mali_platform.h
mali/platform/mali_pm_device.c [new file with mode: 0644]
mali/platform/mali_scaling.h [new file with mode: 0755]
mali/platform/meson_m400/mali_fix.c [new file with mode: 0644]
mali/platform/meson_m400/mali_fix.h [new file with mode: 0644]
mali/platform/meson_m400/mali_platform.c [new file with mode: 0644]
mali/platform/meson_m400/mali_platform.h [new file with mode: 0644]
mali/platform/meson_m400/mali_poweron_reg.h [new file with mode: 0644]
mali/platform/meson_m400/platform_mx.c [new file with mode: 0644]
mali/platform/meson_m450/platform_m6tvd.c [new file with mode: 0644]
mali/platform/meson_m450/platform_m8.c [new file with mode: 0644]
mali/platform/meson_m450/scaling_m8.c [new file with mode: 0755]
mali/platform/meson_main.c [new file with mode: 0755]
mali/platform/meson_main.h [new file with mode: 0644]
mali/platform/mpgpu.c
mali/readme.txt [new file with mode: 0755]
mali/regs/mali_200_regs.h
mali/regs/mali_gp_regs.h
mali/timestamp-arm11-cc/mali_timestamp.c
mali/timestamp-arm11-cc/mali_timestamp.h
mali/timestamp-default/mali_timestamp.c
mali/timestamp-default/mali_timestamp.h
ump/.version [new file with mode: 0755]
ump/Kbuild [changed mode: 0644->0755]
ump/Kconfig [changed mode: 0644->0755]
ump/Makefile [changed mode: 0644->0755]
ump/Makefile.common [changed mode: 0644->0755]
ump/arch-pb-virtex5/config.h [new file with mode: 0755]
ump/common/ump_kernel_api.c [changed mode: 0644->0755]
ump/common/ump_kernel_common.c [changed mode: 0644->0755]
ump/common/ump_kernel_common.h [changed mode: 0644->0755]
ump/common/ump_kernel_descriptor_mapping.c [changed mode: 0644->0755]
ump/common/ump_kernel_descriptor_mapping.h [changed mode: 0644->0755]
ump/common/ump_kernel_memory_backend.h [changed mode: 0644->0755]
ump/common/ump_kernel_ref_drv.c [changed mode: 0644->0755]
ump/common/ump_kernel_types.h [changed mode: 0644->0755]
ump/common/ump_osk.h [changed mode: 0644->0755]
ump/common/ump_uk_types.h [changed mode: 0644->0755]
ump/common/ump_ukk.h [changed mode: 0644->0755]
ump/include/ump/ump_kernel_interface.h [changed mode: 0644->0755]
ump/include/ump/ump_kernel_interface_ref_drv.h [changed mode: 0644->0755]
ump/include/ump/ump_kernel_platform.h [changed mode: 0644->0755]
ump/linux/license/gpl/ump_kernel_license.h [changed mode: 0644->0755]
ump/linux/ump_ioctl.h [changed mode: 0644->0755]
ump/linux/ump_kernel_linux.c [changed mode: 0644->0755]
ump/linux/ump_kernel_linux.h [changed mode: 0644->0755]
ump/linux/ump_kernel_memory_backend_dedicated.c [changed mode: 0644->0755]
ump/linux/ump_kernel_memory_backend_dedicated.h [changed mode: 0644->0755]
ump/linux/ump_kernel_memory_backend_os.c [changed mode: 0644->0755]
ump/linux/ump_kernel_memory_backend_os.h [changed mode: 0644->0755]
ump/linux/ump_memory_backend.c [changed mode: 0644->0755]
ump/linux/ump_osk_atomics.c [changed mode: 0644->0755]
ump/linux/ump_osk_low_level_mem.c [changed mode: 0644->0755]
ump/linux/ump_osk_misc.c [changed mode: 0644->0755]
ump/linux/ump_ukk_ref_wrappers.c [changed mode: 0644->0755]
ump/linux/ump_ukk_ref_wrappers.h [changed mode: 0644->0755]
ump/linux/ump_ukk_wrappers.c [changed mode: 0644->0755]
ump/linux/ump_ukk_wrappers.h [changed mode: 0644->0755]
ump/readme.txt [changed mode: 0644->0755]
umplock/Makefile [new file with mode: 0755]
umplock/umplock_driver.c [new file with mode: 0755]
umplock/umplock_ioctl.h [new file with mode: 0755]

index 4d74b7ba3c692f14f5b2e3eb2ed6149f0c7db63d..66063d3bda3b67c5d685452060177f4e1beaf0c8 100755 (executable)
@@ -1,18 +1,21 @@
 #
-# This confidential and proprietary software may be used only as
-# authorised by a licensing agreement from ARM Limited
-# (C) COPYRIGHT 2007-2011 ARM Limited
-# ALL RIGHTS RESERVED
-# The entire notice above must be reproduced on all authorised
-# copies and copies may only be made to the extent permitted
-# by a licensing agreement from ARM Limited.
+# Copyright (C) 2010-2011 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.
 ############## Kasin Added, for platform. ################
-TARGET_PLATFORM:=meson6pre
+TARGET_PLATFORM:=meson_m400
 ifeq ($(CONFIG_ARCH_MESON8),y)
-TARGET_PLATFORM:= meson8
+TARGET_PLATFORM:= meson_m450
+endif
+ifeq ($(CONFIG_ARCH_MESON6TVD),y)
+TARGET_PLATFORM:= meson_m450
 endif
 ##################### end Kasin Added. ###################
 
@@ -42,24 +45,31 @@ endif
 
 PROFILING_SKIP_PP_JOBS ?= 0
 PROFILING_SKIP_PP_AND_GP_JOBS ?= 0
+############## Kasin Added, for platform. ################
 ifeq ($(CONFIG_MALI400_DEBUG),y)
        BUILD ?= debug
 else
        BUILD ?= release
 endif
+##################### end Kasin Added. ###################
 
+############## Kasin Added, useless now. ################
 ifeq ($(USING_UMP),1)
        UMP_SYMVERS_FILE = ../ump/Module.symvers
        KBUILD_EXTRA_SYMBOLS = $(srctree)/$(src)/$(UMP_SYMVERS_FILE)
 endif
+##################### end Kasin Added. ###################
 
 MALI_PP_SCHEDULER_FORCE_NO_JOB_OVERLAP ?= 0
 MALI_PP_SCHEDULER_KEEP_SUB_JOB_STARTS_ALIGNED ?= 0
 MALI_PP_SCHEDULER_FORCE_NO_JOB_OVERLAP_BETWEEN_APPS ?= 0
 MALI_UPPER_HALF_SCHEDULING ?= 1
 
+############## Kasin Added, useless now. ################
 # Get path to driver source from Linux build system
 DRIVER_DIR=$(src)
+##################### end Kasin Added. ###################
+
 MALI_ENABLE_CPU_CYCLES ?= 0
 
 # For customer releases the Linux Device Drivers will be provided as ARM proprietary and GPL releases:
@@ -135,19 +145,26 @@ mali-y += \
        __malidrv_build_info.o
 
 ############## Kasin Added, for platform. ################
-ifeq ($(TARGET_PLATFORM),meson6pre)
-MALI_PLATFORM_FILES:= platform/meson6pre/mali_fix.c \
-                       platform/meson6pre/mali_platform.c \
-                       platform/meson6pre/meson_main.c \
-                       platform/meson6pre/mali_device_type.c
+mali-y += \
+       platform/meson_main.o \
+       platform/mali_pm_device.o \
+       platform/mali_clock.o \
+       platform/mpgpu.o \
+       
+
+ifeq ($(TARGET_PLATFORM),meson_m400)
+MALI_PLATFORM_FILES:= \
+       platform/meson_m400/mali_fix.o \
+       platform/meson_m400/mali_platform.o \
+       platform/meson_m400/platform_mx.o
 endif
 
-ifeq ($(TARGET_PLATFORM),meson8)
-MALI_PLATFORM_FILES:= platform/meson8/mali_scaling.c \
-                       platform/meson8/meson_main.c \
-                       platform/meson8/mali_clock.c \
-                       platform/meson8/mali_device_type.c \
-                       platform/mpgpu.c
+ifeq ($(TARGET_PLATFORM),meson_m450)
+MALI_PLATFORM_FILES:= \
+       platform/meson_m450/platform_m8.o \
+       platform/meson_m450/platform_m6tvd.o \
+       platform/meson_m450/scaling_m8.o \
+
 endif
 ##################### end Kasin Added. ###################
 
index 6bc7b1a897b03592fe2b959d2d7588d00c825873..4cff8ad799e126b922ec608639b4805be06bae8f 100644 (file)
@@ -67,14 +67,6 @@ config MALI400_POWER_PERFORMANCE_POLICY
        ---help---
          This enables support for dynamic performance scaling of Mali with the goal of lowering power consumption.
 
-
-config MALI400_UTILIZATION
-       bool "Enable Mali Utilization and Frequency and pp scaling."
-       depends on MALI400
-       default y
-       ---help---
-         This enables the frequency and pp scaling.
-  
 config MALI_DMA_BUF_MAP_ON_ATTACH
        bool "Map dma-buf attachments on attach"
        depends on MALI400 && DMA_SHARED_BUFFER
index 627884de91a67e0209949dfcb0688a524aa653c6..c1b00913436902622f1d06be7ed67595fb10010c 100644 (file)
@@ -1,11 +1,11 @@
 #
-# This confidential and proprietary software may be used only as
-# authorised by a licensing agreement from ARM Limited
-# (C) COPYRIGHT 2007-2013 ARM Limited
-# ALL RIGHTS RESERVED
-# The entire notice above must be reproduced on all authorised
-# copies and copies may only be made to the extent permitted
-# by a licensing agreement from ARM Limited.
+# Copyright (C) 2010-2013 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.
 #
 
 USE_UMPV2=0
@@ -47,13 +47,6 @@ ifneq ($(CPU),)
 $(warning "You have specified the CPU variable which is no longer in used. Use TARGET_PLATFORM instead.")
 endif
 
-# KDIR not set when included by modpost
-ifneq ($(KBUILD_EXTMOD),)
-       ifeq ($(KDIR),)
-               KDIR := $(KBUILD_SRC)
-       endif
-endif
-
 # Include the mapping between TARGET_PLATFORM and KDIR + MALI_PLATFORM
 -include MALI_CONFIGURATION
 export KDIR ?= $(KDIR-$(TARGET_PLATFORM))
@@ -86,11 +79,7 @@ endif
 # Define host system directory
 KDIR-$(shell uname -m):=/lib/modules/$(shell uname -r)/build
 
-# .config could be in an output directory, different than KDIR
-# and it's not needed during modpost
-ifeq ($(KBUILD_EXTMOD),)
-       include $(KDIR)/.config
-endif
+include $(KDIR)/.config
 
 ifeq ($(ARCH), arm)
 # when compiling for ARM we're cross compiling
index c8f4887587addb9a094bb92d0e38b84f7c40fcaf..83cb86953bf6326dc403786df2701e5575658ae0 100644 (file)
@@ -1,11 +1,11 @@
 /*
- * This confidential and proprietary software may be used only as
- * authorised by a licensing agreement from ARM Limited
- * (C) COPYRIGHT 2012-2013 ARM Limited
- * ALL RIGHTS RESERVED
- * The entire notice above must be reproduced on all authorised
- * copies and copies may only be made to the extent permitted
- * by a licensing agreement from ARM Limited.
+ * Copyright (C) 2012-2013 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.
  */
 
 #include "mali_broadcast.h"
index 472d9bc05407ecbe272ff30a66d1f0c885f23e60..95bc9bb4572a72cc58d0d13ffe730a2d10b3d9d7 100644 (file)
@@ -1,11 +1,11 @@
 /*
- * This confidential and proprietary software may be used only as
- * authorised by a licensing agreement from ARM Limited
- * (C) COPYRIGHT 2012-2013 ARM Limited
- * ALL RIGHTS RESERVED
- * The entire notice above must be reproduced on all authorised
- * copies and copies may only be made to the extent permitted
- * by a licensing agreement from ARM Limited.
+ * Copyright (C) 2012-2013 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.
  */
 
 /*
index 94cc5a7554fe3a19b94468f6d91e365c00a6d00d..0e41d93da33739873d8b368acaeb72dc333b254b 100644 (file)
@@ -1,11 +1,11 @@
 /*
- * This confidential and proprietary software may be used only as
- * authorised by a licensing agreement from ARM Limited
- * (C) COPYRIGHT 2012-2013 ARM Limited
- * ALL RIGHTS RESERVED
- * The entire notice above must be reproduced on all authorised
- * copies and copies may only be made to the extent permitted
- * by a licensing agreement from ARM Limited.
+ * Copyright (C) 2012-2013 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.
  */
 
 #include "mali_dlbu.h"
index 597a9088f54f97e87215b6a5865ad3380c0ae7dc..8fbfc35baf03f23369003b49ef18a23ee11ea79a 100644 (file)
@@ -1,11 +1,11 @@
 /*
- * This confidential and proprietary software may be used only as
- * authorised by a licensing agreement from ARM Limited
- * (C) COPYRIGHT 2012-2013 ARM Limited
- * ALL RIGHTS RESERVED
- * The entire notice above must be reproduced on all authorised
- * copies and copies may only be made to the extent permitted
- * by a licensing agreement from ARM Limited.
+ * Copyright (C) 2012-2013 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.
  */
 
 #ifndef __MALI_DLBU_H__
index 2fb8750b543e5b49bfdd1b8faf7f42bcf5c4b2e1..a5296264d00427ddd0e3ee8cebc49026a56f6a5d 100644 (file)
@@ -1,11 +1,11 @@
 /*
- * This confidential and proprietary software may be used only as
- * authorised by a licensing agreement from ARM Limited
- * (C) COPYRIGHT 2012-2013 ARM Limited
- * ALL RIGHTS RESERVED
- * The entire notice above must be reproduced on all authorised
- * copies and copies may only be made to the extent permitted
- * by a licensing agreement from ARM Limited.
+ * Copyright (C) 2012-2013 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.
  */
 
 #include "mali_kernel_common.h"
index e62b7b9f8644b2bbca12992d0c7a88cc2b8fa226..93b9ca006e9e68a3d86c45acc8ef6b896e000452 100644 (file)
@@ -1,11 +1,11 @@
 /*
- * This confidential and proprietary software may be used only as
- * authorised by a licensing agreement from ARM Limited
- * (C) COPYRIGHT 2012-2013 ARM Limited
- * ALL RIGHTS RESERVED
- * The entire notice above must be reproduced on all authorised
- * copies and copies may only be made to the extent permitted
- * by a licensing agreement from ARM Limited.
+ * Copyright (C) 2012-2013 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.
  */
 
 #ifndef __MALI_DMA_H__
index 0572fded0ee3991b360f854516bac9ec43016ef1..a3982b85cdb9446810aa8fa94d1627a81d20a875 100644 (file)
@@ -1,11 +1,11 @@
 /*
- * This confidential and proprietary software may be used only as
- * authorised by a licensing agreement from ARM Limited
- * (C) COPYRIGHT 2011-2013 ARM Limited
- * ALL RIGHTS RESERVED
- * The entire notice above must be reproduced on all authorised
- * copies and copies may only be made to the extent permitted
- * by a licensing agreement from ARM Limited.
+ * Copyright (C) 2011-2013 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.
  */
 
 #include "mali_gp.h"
index b9a2762df64a710c571a021bba226308357e3e05..5450c568ffc2ec93c23165946e9ac5f7172b0089 100644 (file)
@@ -1,11 +1,11 @@
 /*
- * This confidential and proprietary software may be used only as
- * authorised by a licensing agreement from ARM Limited
- * (C) COPYRIGHT 2011-2013 ARM Limited
- * ALL RIGHTS RESERVED
- * The entire notice above must be reproduced on all authorised
- * copies and copies may only be made to the extent permitted
- * by a licensing agreement from ARM Limited.
+ * Copyright (C) 2011-2013 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.
  */
 
 #ifndef __MALI_GP_H__
index 1e74d302326d834887a870a4273135420f83e75b..a966f57cae5adf4775ff8577f3f7aa2e1928ccf9 100644 (file)
@@ -1,11 +1,11 @@
 /*
- * This confidential and proprietary software may be used only as
- * authorised by a licensing agreement from ARM Limited
- * (C) COPYRIGHT 2011-2013 ARM Limited
- * ALL RIGHTS RESERVED
- * The entire notice above must be reproduced on all authorised
- * copies and copies may only be made to the extent permitted
- * by a licensing agreement from ARM Limited.
+ * Copyright (C) 2011-2013 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.
  */
 
 #include "mali_gp_job.h"
index b30bcfd589d6229f5b89d362466d4f3d805bb3e3..1813c9d8e0818e49354275bdeef20ceb97d7dc86 100644 (file)
@@ -1,11 +1,11 @@
 /*
- * This confidential and proprietary software may be used only as
- * authorised by a licensing agreement from ARM Limited
- * (C) COPYRIGHT 2011-2013 ARM Limited
- * ALL RIGHTS RESERVED
- * The entire notice above must be reproduced on all authorised
- * copies and copies may only be made to the extent permitted
- * by a licensing agreement from ARM Limited.
+ * Copyright (C) 2011-2013 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.
  */
 
 #ifndef __MALI_GP_JOB_H__
index a2c50bba185a57a555fdca7eea2d0cca088b56b1..36a29e31f4c114c8dd534eb2d56728de7e8de911 100644 (file)
@@ -1,11 +1,11 @@
 /*
- * This confidential and proprietary software may be used only as
- * authorised by a licensing agreement from ARM Limited
- * (C) COPYRIGHT 2012-2013 ARM Limited
- * ALL RIGHTS RESERVED
- * The entire notice above must be reproduced on all authorised
- * copies and copies may only be made to the extent permitted
- * by a licensing agreement from ARM Limited.
+ * Copyright (C) 2012-2013 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.
  */
 
 #include "mali_gp_scheduler.h"
index 9a98f0aa0f92b60f232fb4ea3ada4dbc5e308b93..8be9c47cb255dad294d5fe178741da380ff3bbbd 100644 (file)
@@ -1,11 +1,11 @@
 /*
- * This confidential and proprietary software may be used only as
- * authorised by a licensing agreement from ARM Limited
- * (C) COPYRIGHT 2012-2013 ARM Limited
- * ALL RIGHTS RESERVED
- * The entire notice above must be reproduced on all authorised
- * copies and copies may only be made to the extent permitted
- * by a licensing agreement from ARM Limited.
+ * Copyright (C) 2012-2013 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.
  */
 
 #ifndef __MALI_GP_SCHEDULER_H__
index c765de300afa2b1dd00472ac957155b6f11bf0bd..f1479e7d8d94ec9b9e6737294b6dc29ec258c89e 100755 (executable)
@@ -1,11 +1,11 @@
 /*
- * This confidential and proprietary software may be used only as
- * authorised by a licensing agreement from ARM Limited
- * (C) COPYRIGHT 2011-2013 ARM Limited
- * ALL RIGHTS RESERVED
- * The entire notice above must be reproduced on all authorised
- * copies and copies may only be made to the extent permitted
- * by a licensing agreement from ARM Limited.
+ * Copyright (C) 2011-2013 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.
  */
  
  //#if MESON_CPU_TYPE == MESON_CPU_TYPE_MESON6
index ba86796711b620a49b198cb796ab61172b1ab752..269403f2fd2aefca0418cac2a6a192e4209ba785 100755 (executable)
@@ -1,11 +1,11 @@
 /*
- * This confidential and proprietary software may be used only as
- * authorised by a licensing agreement from ARM Limited
- * (C) COPYRIGHT 2011-2013 ARM Limited
- * ALL RIGHTS RESERVED
- * The entire notice above must be reproduced on all authorised
- * copies and copies may only be made to the extent permitted
- * by a licensing agreement from ARM Limited.
+ * Copyright (C) 2011-2013 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.
  */
 
 #ifndef __MALI_GROUP_H__
index fcde1438e08ae05a917908a1e109a4720fdad72f..f8734206caad5433ced1acfb3c458db260fc8f0b 100644 (file)
@@ -1,11 +1,11 @@
 /*
- * This confidential and proprietary software may be used only as
- * authorised by a licensing agreement from ARM Limited
- * (C) COPYRIGHT 2011-2013 ARM Limited
- * ALL RIGHTS RESERVED
- * The entire notice above must be reproduced on all authorised
- * copies and copies may only be made to the extent permitted
- * by a licensing agreement from ARM Limited.
+ * Copyright (C) 2011-2013 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.
  */
 
 #include "mali_hw_core.h"
index 66e9b42fe0a4be92c31a22b538f4441fc9471b1f..d2c44a9d53796938fc586cfa2b24383f21cbe5d0 100644 (file)
@@ -1,11 +1,11 @@
 /*
- * This confidential and proprietary software may be used only as
- * authorised by a licensing agreement from ARM Limited
- * (C) COPYRIGHT 2011-2013 ARM Limited
- * ALL RIGHTS RESERVED
- * The entire notice above must be reproduced on all authorised
- * copies and copies may only be made to the extent permitted
- * by a licensing agreement from ARM Limited.
+ * Copyright (C) 2011-2013 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.
  */
 
 #ifndef __MALI_HW_CORE_H__
index 6ffa67c9a8674cf80f217225468ca22e2924d02d..fe57539fcda11c29307529a4345c56e7e8a443c1 100644 (file)
@@ -1,11 +1,11 @@
 /*
- * This confidential and proprietary software may be used only as
- * authorised by a licensing agreement from ARM Limited
- * (C) COPYRIGHT 2007-2010, 2012-2013 ARM Limited
- * ALL RIGHTS RESERVED
- * The entire notice above must be reproduced on all authorised
- * copies and copies may only be made to the extent permitted
- * by a licensing agreement from ARM Limited.
+ * Copyright (C) 2010, 2012-2013 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.
  */
 
 #ifndef __MALI_KERNEL_COMMON_H__
index 38b788485e69292792ea5a7e0341d35ec31f7df3..e0994246399e5b8d7d98d507a1043bfae3e56ea8 100644 (file)
@@ -1,11 +1,11 @@
 /*
- * This confidential and proprietary software may be used only as
- * authorised by a licensing agreement from ARM Limited
- * (C) COPYRIGHT 2007-2013 ARM Limited
- * ALL RIGHTS RESERVED
- * The entire notice above must be reproduced on all authorised
- * copies and copies may only be made to the extent permitted
- * by a licensing agreement from ARM Limited.
+ * Copyright (C) 2010-2013 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.
  */
 
 #include "mali_kernel_common.h"
index f0c0b0f69d7035b863e5b66a64a8cda7a4142d47..0bbdb612c4a80264f9705d16a18f2d70de7fcaf2 100644 (file)
@@ -1,11 +1,11 @@
 /*
- * This confidential and proprietary software may be used only as
- * authorised by a licensing agreement from ARM Limited
- * (C) COPYRIGHT 2007-2013 ARM Limited
- * ALL RIGHTS RESERVED
- * The entire notice above must be reproduced on all authorised
- * copies and copies may only be made to the extent permitted
- * by a licensing agreement from ARM Limited.
+ * Copyright (C) 2010-2013 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.
  */
 
 #ifndef __MALI_KERNEL_CORE_H__
index a3f70262f13bc70516bd95ed40dcaae0da91d94f..67b47b84168a643ca5e49c33fa841bc530bb77b4 100644 (file)
@@ -1,11 +1,11 @@
 /*
- * This confidential and proprietary software may be used only as
- * authorised by a licensing agreement from ARM Limited
- * (C) COPYRIGHT 2008-2010, 2012-2013 ARM Limited
- * ALL RIGHTS RESERVED
- * The entire notice above must be reproduced on all authorised
- * copies and copies may only be made to the extent permitted
- * by a licensing agreement from ARM Limited.
+ * Copyright (C) 2010, 2012-2013 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.
  */
 
 #include "mali_kernel_common.h"
index 59115bdd9bf73619b7fb052c4bea7dfb5d611a37..c7017e185432de7625784f5075d901cd9dfa8e13 100644 (file)
@@ -1,11 +1,11 @@
 /*
- * This confidential and proprietary software may be used only as
- * authorised by a licensing agreement from ARM Limited
- * (C) COPYRIGHT 2008-2010, 2012-2013 ARM Limited
- * ALL RIGHTS RESERVED
- * The entire notice above must be reproduced on all authorised
- * copies and copies may only be made to the extent permitted
- * by a licensing agreement from ARM Limited.
+ * Copyright (C) 2010, 2012-2013 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.
  */
 
 /**
index 8ad959fe5dfb25b63b8c6ddba6425d3a56b8673b..596015aad2b57c0e786d1bd47b15f6248ea86134 100644 (file)
@@ -1,11 +1,11 @@
 /*
- * This confidential and proprietary software may be used only as
- * authorised by a licensing agreement from ARM Limited
- * (C) COPYRIGHT 2010-2013 ARM Limited
- * ALL RIGHTS RESERVED
- * The entire notice above must be reproduced on all authorised
- * copies and copies may only be made to the extent permitted
- * by a licensing agreement from ARM Limited.
+ * Copyright (C) 2010-2013 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.
  */
 
 #include "mali_kernel_utilization.h"
index a249b3a6f193fcf25d36e190740bf55a6bdb23ea..3aa31483b4f4f3d1139551787da293cc210549c8 100755 (executable)
@@ -1,11 +1,11 @@
 /*
- * This confidential and proprietary software may be used only as
- * authorised by a licensing agreement from ARM Limited
- * (C) COPYRIGHT 2010-2013 ARM Limited
- * ALL RIGHTS RESERVED
- * The entire notice above must be reproduced on all authorised
- * copies and copies may only be made to the extent permitted
- * by a licensing agreement from ARM Limited.
+ * Copyright (C) 2010-2013 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.
  */
 
 #ifndef __MALI_KERNEL_UTILIZATION_H__
index e7dc3dd64dd3b9a95c6595fa1ffc8e247183e143..a329cb0025341e4dc0a06c4c38efbfcfb5d1a8a4 100644 (file)
@@ -1,11 +1,11 @@
 /*
- * This confidential and proprietary software may be used only as
- * authorised by a licensing agreement from ARM Limited
- * (C) COPYRIGHT 2011-2013 ARM Limited
- * ALL RIGHTS RESERVED
- * The entire notice above must be reproduced on all authorised
- * copies and copies may only be made to the extent permitted
- * by a licensing agreement from ARM Limited.
+ * Copyright (C) 2011-2013 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.
  */
 
 #include "mali_kernel_common.h"
index 5cca03b3f154ee76ebf20b3f49c835db067f3b19..df2c125831ccf93816b81361f3abd70ade796cd1 100755 (executable)
@@ -1,11 +1,11 @@
 /*
- * This confidential and proprietary software may be used only as
- * authorised by a licensing agreement from ARM Limited
- * (C) COPYRIGHT 2008-2013 ARM Limited
- * ALL RIGHTS RESERVED
- * The entire notice above must be reproduced on all authorised
- * copies and copies may only be made to the extent permitted
- * by a licensing agreement from ARM Limited.
+ * Copyright (C) 2010-2013 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.
  */
 #include "mali_kernel_common.h"
 #include "mali_osk.h"
index 5d979ad36176abb2ee4ae522bc8ed98a082e22c1..afa7b825afe18932b2726c27c30fbda2ed355c69 100755 (executable)
@@ -1,11 +1,11 @@
 /*
- * This confidential and proprietary software may be used only as
- * authorised by a licensing agreement from ARM Limited
- * (C) COPYRIGHT 2008-2013 ARM Limited
- * ALL RIGHTS RESERVED
- * The entire notice above must be reproduced on all authorised
- * copies and copies may only be made to the extent permitted
- * by a licensing agreement from ARM Limited.
+ * Copyright (C) 2010-2013 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.
  */
 
 #ifndef __MALI_KERNEL_L2_CACHE_H__
index 20221493509e69c7958519c0f7cd11bb183eba5d..5ee64a27dacd0dc58dc2670b88b650315122e0ac 100644 (file)
@@ -1,11 +1,11 @@
 /*
- * This confidential and proprietary software may be used only as
- * authorised by a licensing agreement from ARM Limited
- * (C) COPYRIGHT 2011-2013 ARM Limited
- * ALL RIGHTS RESERVED
- * The entire notice above must be reproduced on all authorised
- * copies and copies may only be made to the extent permitted
- * by a licensing agreement from ARM Limited.
+ * Copyright (C) 2011-2013 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.
  */
 
 #include "mali_mem_validation.h"
index 4a247ae79e3550e2875bc8316de32c3e96e84356..a9ab6d4ca7118f3bf9ead152b4492de06334ccb7 100644 (file)
@@ -1,11 +1,11 @@
 /*
- * This confidential and proprietary software may be used only as
- * authorised by a licensing agreement from ARM Limited
- * (C) COPYRIGHT 2011-2013 ARM Limited
- * ALL RIGHTS RESERVED
- * The entire notice above must be reproduced on all authorised
- * copies and copies may only be made to the extent permitted
- * by a licensing agreement from ARM Limited.
+ * Copyright (C) 2011-2013 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.
  */
 
 #ifndef __MALI_MEM_VALIDATION_H__
index d1f8bc1dc83aeaa5c73cdf9027cb67861ced71f6..6d73c022bdab7c9bfb132af3c7be7168ab1bc675 100644 (file)
@@ -1,11 +1,11 @@
 /*
- * This confidential and proprietary software may be used only as
- * authorised by a licensing agreement from ARM Limited
- * (C) COPYRIGHT 2007-2013 ARM Limited
- * ALL RIGHTS RESERVED
- * The entire notice above must be reproduced on all authorised
- * copies and copies may only be made to the extent permitted
- * by a licensing agreement from ARM Limited.
+ * Copyright (C) 2010-2013 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.
  */
 
 #include "mali_kernel_common.h"
index 28f28d2e0eb825078d1c1ec3429c3fe96fb58cab..3c76d98ecc3d9d53b695a4aeb8757610c2e3e45c 100644 (file)
@@ -1,11 +1,11 @@
 /*
- * This confidential and proprietary software may be used only as
- * authorised by a licensing agreement from ARM Limited
- * (C) COPYRIGHT 2007-2013 ARM Limited
- * ALL RIGHTS RESERVED
- * The entire notice above must be reproduced on all authorised
- * copies and copies may only be made to the extent permitted
- * by a licensing agreement from ARM Limited.
+ * Copyright (C) 2010-2013 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.
  */
 
 #ifndef __MALI_MMU_H__
index 1439d7b21c29acc9bae4a61529f565dd76fc58e2..3e82df24df593bec6ed6d8d44e1d4f38f163d746 100644 (file)
@@ -1,11 +1,11 @@
 /*
- * This confidential and proprietary software may be used only as
- * authorised by a licensing agreement from ARM Limited
- * (C) COPYRIGHT 2011-2013 ARM Limited
- * ALL RIGHTS RESERVED
- * The entire notice above must be reproduced on all authorised
- * copies and copies may only be made to the extent permitted
- * by a licensing agreement from ARM Limited.
+ * Copyright (C) 2011-2013 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.
  */
 
 #include "mali_kernel_common.h"
index 0db8a76f2ffc2d28318dcc7e3d30d1149a1e038d..2d29458dfefe0e86330f68d0b09d601a2db8278d 100644 (file)
@@ -1,11 +1,11 @@
 /*
- * This confidential and proprietary software may be used only as
- * authorised by a licensing agreement from ARM Limited
- * (C) COPYRIGHT 2011-2013 ARM Limited
- * ALL RIGHTS RESERVED
- * The entire notice above must be reproduced on all authorised
- * copies and copies may only be made to the extent permitted
- * by a licensing agreement from ARM Limited.
+ * Copyright (C) 2011-2013 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.
  */
 
 #ifndef __MALI_MMU_PAGE_DIRECTORY_H__
index ce403093406c109cebf67871625ace22f11fa3a8..5a9cf36fbe223ed18ceda033f51d4df0af40224e 100644 (file)
@@ -1,11 +1,11 @@
 /*
- * This confidential and proprietary software may be used only as
- * authorised by a licensing agreement from ARM Limited
- * (C) COPYRIGHT 2008-2013 ARM Limited
- * ALL RIGHTS RESERVED
- * The entire notice above must be reproduced on all authorised
- * copies and copies may only be made to the extent permitted
- * by a licensing agreement from ARM Limited.
+ * Copyright (C) 2010-2013 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.
  */
 
 /**
index f1ddc2ca1907db2bbaeeae4970f63a79ccbef0dd..35f2e67050f933d1cff0ec803148b8ce12b92d99 100644 (file)
@@ -1,11 +1,11 @@
 /*
- * This confidential and proprietary software may be used only as
- * authorised by a licensing agreement from ARM Limited
- * (C) COPYRIGHT 2008-2010, 2013 ARM Limited
- * ALL RIGHTS RESERVED
- * The entire notice above must be reproduced on all authorised
- * copies and copies may only be made to the extent permitted
- * by a licensing agreement from ARM Limited.
+ * Copyright (C) 2010, 2013 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.
  */
 
 /**
index c44013f67430424644f1f1e3358bbbb3204e114c..65a1d50b6dc7db0d599735048c60bd16aa545d81 100644 (file)
@@ -1,11 +1,11 @@
 /*
- * This confidential and proprietary software may be used only as
- * authorised by a licensing agreement from ARM Limited
- * (C) COPYRIGHT 2008-2013 ARM Limited
- * ALL RIGHTS RESERVED
- * The entire notice above must be reproduced on all authorised
- * copies and copies may only be made to the extent permitted
- * by a licensing agreement from ARM Limited.
+ * Copyright (C) 2010-2013 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.
  */
 
 /**
index b6e3c62e42aa9d1bce0177aa7e160bdc6a23cfef..7ed701cf77a704bf2419d8d6422504c105da14b3 100644 (file)
@@ -1,11 +1,11 @@
 /*
- * This confidential and proprietary software may be used only as
- * authorised by a licensing agreement from ARM Limited
- * (C) COPYRIGHT 2008-2013 ARM Limited
- * ALL RIGHTS RESERVED
- * The entire notice above must be reproduced on all authorised
- * copies and copies may only be made to the extent permitted
- * by a licensing agreement from ARM Limited.
+ * Copyright (C) 2010-2013 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.
  */
 
 /**
index a5136fd52733b14d7c02e23a5308b35f04b8646b..520cd5e96482e4ac940541cb7066fa1bed5eaa5a 100644 (file)
@@ -1,11 +1,11 @@
 /*
- * This confidential and proprietary software may be used only as
- * authorised by a licensing agreement from ARM Limited
- * (C) COPYRIGHT 2010-2013 ARM Limited
- * ALL RIGHTS RESERVED
- * The entire notice above must be reproduced on all authorised
- * copies and copies may only be made to the extent permitted
- * by a licensing agreement from ARM Limited.
+ * Copyright (C) 2010-2013 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.
  */
 
 #ifndef __MALI_OSK_PROFILING_H__
index 313c49a48a03987a083aa15fa8e5ed606af8e31a..6d64cd91fce47300795d4b2b5e78d9a05fc98749 100644 (file)
@@ -1,11 +1,11 @@
 /*
- * This confidential and proprietary software may be used only as
- * authorised by a licensing agreement from ARM Limited
- * (C) COPYRIGHT 2008-2013 ARM Limited
- * ALL RIGHTS RESERVED
- * The entire notice above must be reproduced on all authorised
- * copies and copies may only be made to the extent permitted
- * by a licensing agreement from ARM Limited.
+ * Copyright (C) 2010-2013 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.
  */
 
 /**
index 58e7b622cd8dfb0ead4f192ac415dbba60f1b34f..7ec2b092c84160efc66a425cd3580d4ac628ab64 100644 (file)
@@ -1,11 +1,11 @@
 /*
- * This confidential and proprietary software may be used only as
- * authorised by a licensing agreement from ARM Limited
- * (C) COPYRIGHT 2011-2013 ARM Limited
- * ALL RIGHTS RESERVED
- * The entire notice above must be reproduced on all authorised
- * copies and copies may only be made to the extent permitted
- * by a licensing agreement from ARM Limited.
+ * Copyright (C) 2011-2013 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.
  */
 
 #include "mali_pm.h"
index 2c1063ab4a8c63b0d518c2ac28cab3cf2ba83d8d..1c72aaf8e633441d1cef5606d21ca51b9fd921e1 100644 (file)
@@ -1,11 +1,11 @@
 /*
- * This confidential and proprietary software may be used only as
- * authorised by a licensing agreement from ARM Limited
- * (C) COPYRIGHT 2011-2013 ARM Limited
- * ALL RIGHTS RESERVED
- * The entire notice above must be reproduced on all authorised
- * copies and copies may only be made to the extent permitted
- * by a licensing agreement from ARM Limited.
+ * Copyright (C) 2011-2013 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.
  */
 
 #ifndef __MALI_PM_H__
index 486e8939f666779099a28d87d2dab720e7fc63b1..0e3f198b71748f17f1fa00bfd85dddb206e66716 100644 (file)
@@ -1,11 +1,11 @@
 /*
- * This confidential and proprietary software may be used only as
- * authorised by a licensing agreement from ARM Limited
- * (C) COPYRIGHT 2013 ARM Limited
- * ALL RIGHTS RESERVED
- * The entire notice above must be reproduced on all authorised
- * copies and copies may only be made to the extent permitted
- * by a licensing agreement from ARM Limited.
+ * Copyright (C) 2013 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.
  */
 
 #include "mali_kernel_common.h"
index c5776dd01dbda8055a5130d9c3e8141c79a46353..742f96ec80d4b24ce4e14b89355b9fddf927aa08 100644 (file)
@@ -1,11 +1,11 @@
 /*
- * This confidential and proprietary software may be used only as
- * authorised by a licensing agreement from ARM Limited
- * (C) COPYRIGHT 2013 ARM Limited
- * ALL RIGHTS RESERVED
- * The entire notice above must be reproduced on all authorised
- * copies and copies may only be made to the extent permitted
- * by a licensing agreement from ARM Limited.
+ * Copyright (C) 2013 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.
  */
 
 #ifndef __MALI_PM_DOMAIN_H__
index c1633191f67b920d1e177807dba255dde2acba1e..894a879029685701fdaafa476bfcea14d187e2cb 100644 (file)
@@ -1,11 +1,11 @@
 /*
- * This confidential and proprietary software may be used only as
- * authorised by a licensing agreement from ARM Limited
- * (C) COPYRIGHT 2009-2013 ARM Limited
- * ALL RIGHTS RESERVED
- * The entire notice above must be reproduced on all authorised
- * copies and copies may only be made to the extent permitted
- * by a licensing agreement from ARM Limited.
+ * Copyright (C) 2010-2013 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.
  */
 
 /**
index f2c87baaeaee5161a41defd02eedf876a782edb7..5c2def2e113e73e11f0efbd32ae48f7d80886d0e 100644 (file)
@@ -1,11 +1,11 @@
 /*
- * This confidential and proprietary software may be used only as
- * authorised by a licensing agreement from ARM Limited
- * (C) COPYRIGHT 2009-2013 ARM Limited
- * ALL RIGHTS RESERVED
- * The entire notice above must be reproduced on all authorised
- * copies and copies may only be made to the extent permitted
- * by a licensing agreement from ARM Limited.
+ * Copyright (C) 2010-2013 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.
  */
 
 /**
index 8fd9115e1485281122446511e0e333c99af3a0c0..0f481375e31bbcec2838f95d992eb82dc0e5a746 100644 (file)
@@ -1,11 +1,11 @@
 /*
- * This confidential and proprietary software may be used only as
- * authorised by a licensing agreement from ARM Limited
- * (C) COPYRIGHT 2011-2013 ARM Limited
- * ALL RIGHTS RESERVED
- * The entire notice above must be reproduced on all authorised
- * copies and copies may only be made to the extent permitted
- * by a licensing agreement from ARM Limited.
+ * Copyright (C) 2011-2013 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.
  */
 
 #include "mali_pp_job.h"
index 839b43ebbf3597eb87d5abe6a6ab5f3953325257..a7d595671d1f5b8bf208078b60c5770573517778 100644 (file)
@@ -1,11 +1,11 @@
 /*
- * This confidential and proprietary software may be used only as
- * authorised by a licensing agreement from ARM Limited
- * (C) COPYRIGHT 2011-2013 ARM Limited
- * ALL RIGHTS RESERVED
- * The entire notice above must be reproduced on all authorised
- * copies and copies may only be made to the extent permitted
- * by a licensing agreement from ARM Limited.
+ * Copyright (C) 2011-2013 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.
  */
 
 #ifndef __MALI_PP_H__
index ab4068b620801d4100f34bf022115ee170596422..af9cb54cfbfee832680f3df7993a3793136278eb 100644 (file)
@@ -1,11 +1,11 @@
 /*
- * This confidential and proprietary software may be used only as
- * authorised by a licensing agreement from ARM Limited
- * (C) COPYRIGHT 2011-2013 ARM Limited
- * ALL RIGHTS RESERVED
- * The entire notice above must be reproduced on all authorised
- * copies and copies may only be made to the extent permitted
- * by a licensing agreement from ARM Limited.
+ * Copyright (C) 2011-2013 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.
  */
 
 #include "mali_pp.h"
index 55b279a24bf87ad284565024badfe4dac362b0cc..4daa2aa442d146220341fd3fb9b983e11e9d35da 100755 (executable)
@@ -1,11 +1,11 @@
 /*
- * This confidential and proprietary software may be used only as
- * authorised by a licensing agreement from ARM Limited
- * (C) COPYRIGHT 2011-2013 ARM Limited
- * ALL RIGHTS RESERVED
- * The entire notice above must be reproduced on all authorised
- * copies and copies may only be made to the extent permitted
- * by a licensing agreement from ARM Limited.
+ * Copyright (C) 2011-2013 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.
  */
 
 #ifndef __MALI_PP_JOB_H__
index 6b985d05ca85a20ca3d1cb1959fbe3abe682b02b..8dd8e3e3988d6162eedf82cc9b54e8eea7625541 100644 (file)
@@ -1,11 +1,11 @@
 /*
- * This confidential and proprietary software may be used only as
- * authorised by a licensing agreement from ARM Limited
- * (C) COPYRIGHT 2012-2013 ARM Limited
- * ALL RIGHTS RESERVED
- * The entire notice above must be reproduced on all authorised
- * copies and copies may only be made to the extent permitted
- * by a licensing agreement from ARM Limited.
+ * Copyright (C) 2012-2013 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.
  */
 
 #include "mali_pp_scheduler.h"
index 6167d8c25ace82f2359fcfe1776749f593a51c28..e414dff6731e10da37de0002a2c17daede2783c5 100644 (file)
@@ -1,11 +1,11 @@
 /*
- * This confidential and proprietary software may be used only as
- * authorised by a licensing agreement from ARM Limited
- * (C) COPYRIGHT 2012-2013 ARM Limited
- * ALL RIGHTS RESERVED
- * The entire notice above must be reproduced on all authorised
- * copies and copies may only be made to the extent permitted
- * by a licensing agreement from ARM Limited.
+ * Copyright (C) 2012-2013 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.
  */
 
 #ifndef __MALI_PP_SCHEDULER_H__
index 2daa2e46946b0cbacd786e3983443314bd1dd748..1e070ce8bc0d810aced3ad363b74e4c35ebbf158 100644 (file)
@@ -1,11 +1,11 @@
 /*
- * This confidential and proprietary software may be used only as
- * authorised by a licensing agreement from ARM Limited
- * (C) COPYRIGHT 2012-2013 ARM Limited
- * ALL RIGHTS RESERVED
- * The entire notice above must be reproduced on all authorised
- * copies and copies may only be made to the extent permitted
- * by a licensing agreement from ARM Limited.
+ * Copyright (C) 2012-2013 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.
  */
 
 #include "mali_scheduler.h"
index 07252004b04af40358406f39d5b6785f34d7cde8..738605315696040207cbfb53f3f0f5dab68d9fc7 100644 (file)
@@ -1,11 +1,11 @@
 /*
- * This confidential and proprietary software may be used only as
- * authorised by a licensing agreement from ARM Limited
- * (C) COPYRIGHT 2012-2013 ARM Limited
- * ALL RIGHTS RESERVED
- * The entire notice above must be reproduced on all authorised
- * copies and copies may only be made to the extent permitted
- * by a licensing agreement from ARM Limited.
+ * Copyright (C) 2012-2013 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.
  */
 
 #ifndef __MALI_SCHEDULER_H__
index 5cbf598bfdce83f270bc3f699f0afa8e45023379..02490c20a39f3b54617465a3a8bee6140a04e7ac 100644 (file)
@@ -1,11 +1,11 @@
 /*
- * This confidential and proprietary software may be used only as
- * authorised by a licensing agreement from ARM Limited
- * (C) COPYRIGHT 2013 ARM Limited
- * ALL RIGHTS RESERVED
- * The entire notice above must be reproduced on all authorised
- * copies and copies may only be made to the extent permitted
- * by a licensing agreement from ARM Limited.
+ * Copyright (C) 2013 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.
  */
 
 #ifndef __MALI_SCHEDULER_TYPES_H__
index 852f1e1953929d79f30382b0fdbe6c042f17f737..812dbf86364b13a9bc8786d1ffd6c8fa48004e4b 100644 (file)
@@ -1,11 +1,11 @@
 /*
- * This confidential and proprietary software may be used only as
- * authorised by a licensing agreement from ARM Limited
- * (C) COPYRIGHT 2012-2013 ARM Limited
- * ALL RIGHTS RESERVED
- * The entire notice above must be reproduced on all authorised
- * copies and copies may only be made to the extent permitted
- * by a licensing agreement from ARM Limited.
+ * Copyright (C) 2012-2013 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.
  */
 
 #include "mali_osk.h"
index ef8d5f5c9c89b4b80ac1daaead516bf3fa9a08ad..0060406852f15038dd094cfb01fcbc42947220f5 100644 (file)
@@ -1,11 +1,11 @@
 /*
- * This confidential and proprietary software may be used only as
- * authorised by a licensing agreement from ARM Limited
- * (C) COPYRIGHT 2008-2013 ARM Limited
- * ALL RIGHTS RESERVED
- * The entire notice above must be reproduced on all authorised
- * copies and copies may only be made to the extent permitted
- * by a licensing agreement from ARM Limited.
+ * Copyright (C) 2010-2013 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.
  */
 
 #ifndef __MALI_SESSION_H__
index b2bb8e389a92c91af810f6a6859bfb7a5acea626..e21f4c169788dfc32af443812c9c6f7dec3283a9 100644 (file)
@@ -1,11 +1,11 @@
 /*
- * This confidential and proprietary software may be used only as
- * authorised by a licensing agreement from ARM Limited
- * (C) COPYRIGHT 2013 ARM Limited
- * ALL RIGHTS RESERVED
- * The entire notice above must be reproduced on all authorised
- * copies and copies may only be made to the extent permitted
- * by a licensing agreement from ARM Limited.
+ * Copyright (C) 2013 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.
  */
 
 #include "mali_soft_job.h"
index 1a50dc168add38c9198b195fb598e3f7145fd6bc..af978ab730481d64eec4701fe5fa7aad3dca2aa1 100644 (file)
@@ -1,11 +1,11 @@
 /*
- * This confidential and proprietary software may be used only as
- * authorised by a licensing agreement from ARM Limited
- * (C) COPYRIGHT 2013 ARM Limited
- * ALL RIGHTS RESERVED
- * The entire notice above must be reproduced on all authorised
- * copies and copies may only be made to the extent permitted
- * by a licensing agreement from ARM Limited.
+ * Copyright (C) 2013 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.
  */
 
 #ifndef __MALI_SOFT_JOB_H__
index e11feee30b8788357b9c681e151b9a1db45d7ef6..bad217f65dde9367cd7ff63b77470c166a0d4a59 100644 (file)
@@ -1,11 +1,11 @@
 /*
- * This confidential and proprietary software may be used only as
- * authorised by a licensing agreement from ARM Limited
- * (C) COPYRIGHT 2013 ARM Limited
- * ALL RIGHTS RESERVED
- * The entire notice above must be reproduced on all authorised
- * copies and copies may only be made to the extent permitted
- * by a licensing agreement from ARM Limited.
+ * Copyright (C) 2013 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.
  */
 
 #include "mali_spinlock_reentrant.h"
index 2dc7ab98670253d7bd703dfdc1204f3c044bec87..16e99b7ff5159a56dd8f1b697a17fdc3dd549de9 100644 (file)
@@ -1,11 +1,11 @@
 /*
- * This confidential and proprietary software may be used only as
- * authorised by a licensing agreement from ARM Limited
- * (C) COPYRIGHT 2013 ARM Limited
- * ALL RIGHTS RESERVED
- * The entire notice above must be reproduced on all authorised
- * copies and copies may only be made to the extent permitted
- * by a licensing agreement from ARM Limited.
+ * Copyright (C) 2013 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.
  */
 
 #ifndef __MALI_SPINLOCK_REENTRANT_H__
index c7b18b561f9eb863bfb396255cf8fda8db7fd39c..955c74802ccb33cb9a2a2e264bf2e39f9b2e166e 100644 (file)
@@ -1,11 +1,11 @@
 /*
- * This confidential and proprietary software may be used only as
- * authorised by a licensing agreement from ARM Limited
- * (C) COPYRIGHT 2013 ARM Limited
- * ALL RIGHTS RESERVED
- * The entire notice above must be reproduced on all authorised
- * copies and copies may only be made to the extent permitted
- * by a licensing agreement from ARM Limited.
+ * Copyright (C) 2013 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.
  */
 
 #include "mali_timeline.h"
index a5f167853357ea6bd52cffad00591a202fcb15ff..e014637bf7d4c89dd9c2845db48a3f78bfc6552b 100644 (file)
@@ -1,11 +1,11 @@
 /*
- * This confidential and proprietary software may be used only as
- * authorised by a licensing agreement from ARM Limited
- * (C) COPYRIGHT 2013 ARM Limited
- * ALL RIGHTS RESERVED
- * The entire notice above must be reproduced on all authorised
- * copies and copies may only be made to the extent permitted
- * by a licensing agreement from ARM Limited.
+ * Copyright (C) 2013 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.
  */
 
 #ifndef __MALI_TIMELINE_H__
index ab5cb00a40faf44e1cae0bc2fb4464e3745d1876..752bec7a21cf37e788d82229b8b32af35e3d14d0 100644 (file)
@@ -1,11 +1,11 @@
 /*
- * This confidential and proprietary software may be used only as
- * authorised by a licensing agreement from ARM Limited
- * (C) COPYRIGHT 2013 ARM Limited
- * ALL RIGHTS RESERVED
- * The entire notice above must be reproduced on all authorised
- * copies and copies may only be made to the extent permitted
- * by a licensing agreement from ARM Limited.
+ * Copyright (C) 2013 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.
  */
 
 #include "mali_timeline_fence_wait.h"
index 16d2f2c0cd47df853b522eeb193a7121b1af01cb..b73e60899ce1224cd6b177e9698be04ffdfd3875 100644 (file)
@@ -1,11 +1,11 @@
 /*
- * This confidential and proprietary software may be used only as
- * authorised by a licensing agreement from ARM Limited
- * (C) COPYRIGHT 2013 ARM Limited
- * ALL RIGHTS RESERVED
- * The entire notice above must be reproduced on all authorised
- * copies and copies may only be made to the extent permitted
- * by a licensing agreement from ARM Limited.
+ * Copyright (C) 2013 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.
  */
 
 /**
index e63e5ae8ee5c593ede864cff905e0d303674fec3..c1ad291ee2e8fd3aa2657e6a25feee9399a065c7 100644 (file)
@@ -1,11 +1,11 @@
 /*
- * This confidential and proprietary software may be used only as
- * authorised by a licensing agreement from ARM Limited
- * (C) COPYRIGHT 2013 ARM Limited
- * ALL RIGHTS RESERVED
- * The entire notice above must be reproduced on all authorised
- * copies and copies may only be made to the extent permitted
- * by a licensing agreement from ARM Limited.
+ * Copyright (C) 2013 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.
  */
 
 #include "mali_timeline_sync_fence.h"
index 3d8e3a1cad8349129aeeff143240bb38afa41fa1..ec28019738e161e8c282afdf2332fe967b80c997 100644 (file)
@@ -1,11 +1,11 @@
 /*
- * This confidential and proprietary software may be used only as
- * authorised by a licensing agreement from ARM Limited
- * (C) COPYRIGHT 2013 ARM Limited
- * ALL RIGHTS RESERVED
- * The entire notice above must be reproduced on all authorised
- * copies and copies may only be made to the extent permitted
- * by a licensing agreement from ARM Limited.
+ * Copyright (C) 2013 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.
  */
 
 /**
index 5bc8e1b0491e1c8c899709b07092e8ecd3135064..80ef64dc5e770679f7a6f56d5d56d0ee742ce236 100644 (file)
@@ -1,11 +1,11 @@
 /*
- * This confidential and proprietary software may be used only as
- * authorised by a licensing agreement from ARM Limited
- * (C) COPYRIGHT 2008-2013 ARM Limited
- * ALL RIGHTS RESERVED
- * The entire notice above must be reproduced on all authorised
- * copies and copies may only be made to the extent permitted
- * by a licensing agreement from ARM Limited.
+ * Copyright (C) 2010-2013 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.
  */
 
 /**
index c28a8d6317cfb9305d3f0d89209220309e083230..e14c91ae4863f8483ab568e2563057f3fb9a6e84 100644 (file)
@@ -1,11 +1,11 @@
 /**
- * This confidential and proprietary software may be used only as
- * authorised by a licensing agreement from ARM Limited
- * (C) COPYRIGHT 2012-2013 ARM Limited
- * ALL RIGHTS RESERVED
- * The entire notice above must be reproduced on all authorised
- * copies and copies may only be made to the extent permitted
- * by a licensing agreement from ARM Limited.
+ * Copyright (C) 2012-2013 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.
  */
 
 #include "mali_osk.h"
index 547ffeeaf0659b7a4829639ba90bbf5d31b74e46..0b5127392ff19d5efc1b18328ff8a0866eed52c5 100644 (file)
@@ -1,11 +1,11 @@
 /**
- * This confidential and proprietary software may be used only as
- * authorised by a licensing agreement from ARM Limited
- * (C) COPYRIGHT 2012-2013 ARM Limited
- * ALL RIGHTS RESERVED
- * The entire notice above must be reproduced on all authorised
- * copies and copies may only be made to the extent permitted
- * by a licensing agreement from ARM Limited.
+ * Copyright (C) 2012-2013 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.
  */
 
 #ifndef __MALI_USER_SETTINGS_DB_H__
index 16dd5e4596f095cb8db7c5cc916567bc65747f16..b7a9133691b9f010ddae5874ea8093be16c6aba4 100644 (file)
@@ -1,11 +1,11 @@
 /*
- * This confidential and proprietary software may be used only as
- * authorised by a licensing agreement from ARM Limited
- * (C) COPYRIGHT 2012-2013 ARM Limited
- * ALL RIGHTS RESERVED
- * The entire notice above must be reproduced on all authorised
- * copies and copies may only be made to the extent permitted
- * by a licensing agreement from ARM Limited.
+ * Copyright (C) 2012-2013 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.
  */
 
 /**
index 7ea190ff87f2395464b8eb23dd12c99e964fad64..5da13c838da561c9c371ddae9658d9d125e62873 100644 (file)
@@ -1,11 +1,11 @@
 /*
- * This confidential and proprietary software may be used only as
- * authorised by a licensing agreement from ARM Limited
- * (C) COPYRIGHT 2007-2013 ARM Limited
- * ALL RIGHTS RESERVED
- * The entire notice above must be reproduced on all authorised
- * copies and copies may only be made to the extent permitted
- * by a licensing agreement from ARM Limited.
+ * Copyright (C) 2010-2013 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.
  */
 
 #ifndef _MALI_UTGARD_COUNTERS_H_
index 0838868364208f5daf7dced1f9cc4bf3f974d7e2..f0ea29381211990e5b5937fdcbec4a1f7d14b62c 100644 (file)
@@ -1,11 +1,11 @@
 /*
- * This confidential and proprietary software may be used only as
- * authorised by a licensing agreement from ARM Limited
- * (C) COPYRIGHT 2007-2013 ARM Limited
- * ALL RIGHTS RESERVED
- * The entire notice above must be reproduced on all authorised
- * copies and copies may only be made to the extent permitted
- * by a licensing agreement from ARM Limited.
+ * Copyright (C) 2010-2013 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.
  */
 
 #ifndef __MALI_UTGARD_IOCTL_H__
index 0bc62d4279b5e291cd4677fdfa5d8083b830ff3d..5cdd8eef0e25e27349ed80efce9966566018c616 100644 (file)
@@ -1,11 +1,11 @@
 /*
- * This confidential and proprietary software may be used only as
- * authorised by a licensing agreement from ARM Limited
- * (C) COPYRIGHT 2010-2013 ARM Limited
- * ALL RIGHTS RESERVED
- * The entire notice above must be reproduced on all authorised
- * copies and copies may only be made to the extent permitted
- * by a licensing agreement from ARM Limited.
+ * Copyright (C) 2010-2013 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.
  */
 
 #ifndef _MALI_UTGARD_PROFILING_EVENTS_H_
index 918a3f328366b5f3eab9c1f960be5505123c12f4..f8af3e49e9bbc23178b5f4e89092b20f7b6fae3b 100644 (file)
@@ -1,11 +1,11 @@
 /*
- * This confidential and proprietary software may be used only as
- * authorised by a licensing agreement from ARM Limited
- * (C) COPYRIGHT 2013 ARM Limited
- * ALL RIGHTS RESERVED
- * The entire notice above must be reproduced on all authorised
- * copies and copies may only be made to the extent permitted
- * by a licensing agreement from ARM Limited.
+ * Copyright (C) 2013 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.
  */
 
 #ifndef __MALI_UTGARD_PROFILING_GATOR_API_H__
index 817f5a7b2401e43443e421428f2ca3c3fcaac594..d032f9d58d6351c910abe38e094d7f3201dc8098 100644 (file)
@@ -1,11 +1,11 @@
 /*
- * This confidential and proprietary software may be used only as
- * authorised by a licensing agreement from ARM Limited
- * (C) COPYRIGHT 2008-2013 ARM Limited
- * ALL RIGHTS RESERVED
- * The entire notice above must be reproduced on all authorised
- * copies and copies may only be made to the extent permitted
- * by a licensing agreement from ARM Limited.
+ * Copyright (C) 2010-2013 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.
  */
 
 /**
index 3791cfe2d60e019791933c6798056e99249b6821..009acc4c3ff9465aa591b0c1ffa2518cd9de759e 100644 (file)
@@ -17,8 +17,7 @@
 #define __MALI_KERNEL_LICENSE_H__
 
 #ifdef __cplusplus
-extern "C"
-{
+extern "C" {
 #endif
 
 #define MALI_KERNEL_LINUX_LICENSE     "GPL"
index 68a28f41aacc1c855e05144b4a1c786e8667d7ae..440602e44932a5c305b95f7756ffd34114ed9688 100644 (file)
@@ -1,11 +1,11 @@
 /**
- * This confidential and proprietary software may be used only as
- * authorised by a licensing agreement from ARM Limited
- * (C) COPYRIGHT 2010-2013 ARM Limited
- * ALL RIGHTS RESERVED
- * The entire notice above must be reproduced on all authorised
- * copies and copies may only be made to the extent permitted
- * by a licensing agreement from ARM Limited.
+ * Copyright (C) 2010-2013 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.
  */
 
 /**
index 442cdcece615a0d6ec4e11226a84ae3da69d8136..871516564909f6dd32c8983bc3faa43095043c7f 100755 (executable)
@@ -1,11 +1,11 @@
 /**
- * This confidential and proprietary software may be used only as
- * authorised by a licensing agreement from ARM Limited
- * (C) COPYRIGHT 2008-2013 ARM Limited
- * ALL RIGHTS RESERVED
- * The entire notice above must be reproduced on all authorised
- * copies and copies may only be made to the extent permitted
- * by a licensing agreement from ARM Limited.
+ * Copyright (C) 2010-2013 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.
  */
 
 /**
index 149e4353f0e1773eecb28e9a52d75cdb7ae458cf..cf8e2564c154cbac4450bed7e6f461fff32ac85c 100755 (executable)
@@ -1,11 +1,11 @@
 /*
- * This confidential and proprietary software may be used only as
- * authorised by a licensing agreement from ARM Limited
- * (C) COPYRIGHT 2008-2013 ARM Limited
- * ALL RIGHTS RESERVED
- * The entire notice above must be reproduced on all authorised
- * copies and copies may only be made to the extent permitted
- * by a licensing agreement from ARM Limited.
+ * Copyright (C) 2010-2013 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.
  */
 
 #ifndef __MALI_KERNEL_LINUX_H__
index 4426b0c53b342b1155894f726ab89d96de725c97..0d44d8c1f57c6d6709a99f9b0629e37513b1971b 100755 (executable)
@@ -1,11 +1,11 @@
 /**
- * This confidential and proprietary software may be used only as
- * authorised by a licensing agreement from ARM Limited
- * (C) COPYRIGHT 2011-2013 ARM Limited
- * ALL RIGHTS RESERVED
- * The entire notice above must be reproduced on all authorised
- * copies and copies may only be made to the extent permitted
- * by a licensing agreement from ARM Limited.
+ * Copyright (C) 2011-2013 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.
  */
 
 
@@ -1149,352 +1149,6 @@ static const struct file_operations pp_core_scaling_enabled_fops = {
        .llseek = default_llseek,
 };
 
-#if MESON_CPU_TYPE == MESON_CPU_TYPE_MESON8
-extern u32 get_mali_default_clock_idx(void);
-extern void set_mali_freq_idx(u32 idx);
-extern u32 get_mali_qq_for_sched(void);
-extern void set_mali_qq_for_sched(u32 pp_num);
-extern u32 get_mali_schel_mode(void);
-extern void set_mali_schel_mode(u32 mode);
-extern u32 get_max_pp_num(void);
-extern u32 set_max_pp_num(u32 num);
-extern u32 get_min_pp_num(void);
-extern u32 set_min_pp_num(u32 num);
-extern u32 get_max_mali_freq(void);
-extern u32 set_max_mali_freq(u32 idx);
-extern u32 get_min_mali_freq(void);
-extern u32 set_min_mali_freq(u32 idx);
-
-extern void enable_clock(void);
-extern void disable_clock(void);
-
-static ssize_t pp_for_sched_read(struct file *filp, char __user *buf, size_t count, loff_t *offp)
-{
-       int r;
-       char buffer[64];
-       r = sprintf(buffer, "%d\n", get_mali_qq_for_sched());
-
-       return simple_read_from_buffer(buf, count, offp, buffer, r);
-}
-
-static ssize_t pp_for_sched_write(struct file *filp, const char __user *buf, size_t count, loff_t *offp)
-{
-       int ret;
-       char buffer[32];
-       unsigned long val;
-
-       if (count >= sizeof(buffer))
-       {
-               return -ENOMEM;
-       }
-
-       if (copy_from_user(&buffer[0], buf, count))
-       {
-               return -EFAULT;
-       }
-       buffer[count] = '\0';
-
-       ret = strict_strtoul(&buffer[0], 10, &val);
-       if (0 != ret)
-       {
-               return -EINVAL;
-       }
-
-       set_mali_qq_for_sched(val);
-
-       *offp += count;
-       return count;
-}
-
-static const struct file_operations pp_for_sched_fops = {
-       .owner = THIS_MODULE,
-       .read = pp_for_sched_read,
-       .write = pp_for_sched_write,
-};
-
-static ssize_t cur_freq_read (struct file *filp, char __user *buf, size_t count, loff_t *offp)
-{
-       int r;
-       char buffer[64];
-       r = sprintf(buffer, "%d\n", get_mali_default_clock_idx());
-
-       return simple_read_from_buffer(buf, count, offp, buffer, r);
-}
-
-static ssize_t cur_freq_write (struct file *filp, const char __user *buf, size_t count, loff_t *offp)
-{
-       int ret;
-       char buffer[32];
-       unsigned long val;
-
-       if (count >= sizeof(buffer))
-       {
-               return -ENOMEM;
-       }
-
-       if (copy_from_user(&buffer[0], buf, count))
-       {
-               return -EFAULT;
-       }
-       buffer[count] = '\0';
-
-       ret = strict_strtoul(&buffer[0], 10, &val);
-       if (0 != ret)
-       {
-               return -EINVAL;
-       }
-
-       set_mali_freq_idx(val);
-
-       *offp += count;
-       return count;
-}
-
-static const struct file_operations cur_freq_fops = {
-       .owner = THIS_MODULE,
-       .read = cur_freq_read,
-       .write = cur_freq_write,
-};
-
-static ssize_t scale_mode_read(struct file *filp, char __user *buf, size_t count, loff_t *offp)
-{
-       int r;
-       char buffer[64];
-       r = sprintf(buffer, "%d\n", get_mali_schel_mode());
-
-       return simple_read_from_buffer(buf, count, offp, buffer, r);
-}
-
-static ssize_t scale_mode_write(struct file *filp, const char __user *buf, size_t count, loff_t *offp)
-{
-       int ret;
-       char buffer[32];
-       unsigned long val;
-
-       if (count >= sizeof(buffer))
-       {
-               return -ENOMEM;
-       }
-
-       if (copy_from_user(&buffer[0], buf, count))
-       {
-               return -EFAULT;
-       }
-       buffer[count] = '\0';
-
-       ret = strict_strtoul(&buffer[0], 10, &val);
-       if (0 != ret)
-       {
-               return -EINVAL;
-       }
-
-       set_mali_schel_mode(val);
-
-       *offp += count;
-       return count;
-}
-
-static const struct file_operations scale_mode_fops = {
-       .owner = THIS_MODULE,
-       .read = scale_mode_read,
-       .write = scale_mode_write
-};
-
-static ssize_t domain_stat_read(struct file *filp, char __user *buf, size_t count, loff_t *offp)
-{
-       int r;
-       char buffer[64];
-       r = sprintf(buffer, "%x\n", mali_pmu_get_status());
-
-       return simple_read_from_buffer(buf, count, offp, buffer, r);
-}
-
-static const struct file_operations domain_stat_fops = {
-       .owner = THIS_MODULE,
-       .read = domain_stat_read,
-};
-
-static ssize_t max_pp_read(struct file *filp, char __user *buf, size_t count, loff_t *offp)
-{
-       int r;
-       char buffer[64];
-       r = sprintf(buffer, "%d\n", get_max_pp_num());
-
-       return simple_read_from_buffer(buf, count, offp, buffer, r);
-}
-
-static ssize_t max_pp_write(struct file *filp, const char __user *buf, size_t count, loff_t *offp)
-{
-       int ret;
-       char buffer[32];
-       unsigned long val;
-
-       if (count >= sizeof(buffer))
-       {
-               return -ENOMEM;
-       }
-
-       if (copy_from_user(&buffer[0], buf, count))
-       {
-               return -EFAULT;
-       }
-       buffer[count] = '\0';
-
-       ret = strict_strtoul(&buffer[0], 10, &val);
-       if (0 != ret)
-       {
-               return -EINVAL;
-       }
-
-       ret = set_max_pp_num(val);
-
-       *offp += count;
-       return count;
-}
-
-static const struct file_operations max_pp_fops = {
-       .owner = THIS_MODULE,
-       .read = max_pp_read,
-       .write = max_pp_write
-};
-
-static ssize_t min_pp_read(struct file *filp, char __user *buf, size_t count, loff_t *offp)
-{
-       int r;
-       char buffer[64];
-       r = sprintf(buffer, "%d\n", get_min_pp_num());
-
-       return simple_read_from_buffer(buf, count, offp, buffer, r);
-}
-
-static ssize_t min_pp_write(struct file *filp, const char __user *buf, size_t count, loff_t *offp)
-{
-       int ret;
-       char buffer[32];
-       unsigned long val;
-
-       if (count >= sizeof(buffer))
-       {
-               return -ENOMEM;
-       }
-
-       if (copy_from_user(&buffer[0], buf, count))
-       {
-               return -EFAULT;
-       }
-       buffer[count] = '\0';
-
-       ret = strict_strtoul(&buffer[0], 10, &val);
-       if (0 != ret)
-       {
-               return -EINVAL;
-       }
-
-       ret = set_min_pp_num(val);
-
-       *offp += count;
-       return count;
-}
-
-static const struct file_operations min_pp_fops = {
-       .owner = THIS_MODULE,
-       .read = min_pp_read,
-       .write = min_pp_write
-};
-
-
-static ssize_t max_freq_read(struct file *filp, char __user *buf, size_t count, loff_t *offp)
-{
-       int r;
-       char buffer[64];
-       r = sprintf(buffer, "%d\n", get_max_mali_freq());
-
-       return simple_read_from_buffer(buf, count, offp, buffer, r);
-}
-
-static ssize_t max_freq_write(struct file *filp, const char __user *buf, size_t count, loff_t *offp)
-{
-       int ret;
-       char buffer[32];
-       unsigned long val;
-
-       if (count >= sizeof(buffer))
-       {
-               return -ENOMEM;
-       }
-
-       if (copy_from_user(&buffer[0], buf, count))
-       {
-               return -EFAULT;
-       }
-       buffer[count] = '\0';
-
-       ret = strict_strtoul(&buffer[0], 10, &val);
-       if (0 != ret)
-       {
-               return -EINVAL;
-       }
-
-       ret = set_max_mali_freq(val);
-
-       *offp += count;
-       return count;
-}
-
-static const struct file_operations max_freq_fops = {
-       .owner = THIS_MODULE,
-       .read = max_freq_read,
-       .write = max_freq_write
-};
-
-
-static ssize_t min_freq_read(struct file *filp, char __user *buf, size_t count, loff_t *offp)
-{
-       int r;
-       char buffer[64];
-       r = sprintf(buffer, "%d\n", get_min_mali_freq());
-
-       return simple_read_from_buffer(buf, count, offp, buffer, r);
-}
-
-static ssize_t min_freq_write(struct file *filp, const char __user *buf, size_t count, loff_t *offp)
-{
-       int ret;
-       char buffer[32];
-       unsigned long val;
-
-       if (count >= sizeof(buffer))
-       {
-               return -ENOMEM;
-       }
-
-       if (copy_from_user(&buffer[0], buf, count))
-       {
-               return -EFAULT;
-       }
-       buffer[count] = '\0';
-
-       ret = strict_strtoul(&buffer[0], 10, &val);
-       if (0 != ret)
-       {
-               return -EINVAL;
-       }
-
-       ret = set_min_mali_freq(val);
-
-       *offp += count;
-       return count;
-}
-
-static const struct file_operations min_freq_fops = {
-       .owner = THIS_MODULE,
-       .read = min_freq_read,
-       .write = min_freq_write
-};
-
-
-#endif /* MESON_CPU_TYPE_MESON8 */
-
 static ssize_t version_read(struct file *filp, char __user *buf, size_t count, loff_t *offp)
 {
        int r = 0;
@@ -1703,26 +1357,6 @@ int mali_sysfs_register(const char *mali_dev_name)
 #if MALI_STATE_TRACKING
                        debugfs_create_file("state_dump", 0400, mali_debugfs_dir, NULL, &mali_seq_internal_state_fops);
 #endif
-
-#if MESON_CPU_TYPE == MESON_CPU_TYPE_MESON8
-                       /* kasin.li@amlogic.com. misc setting. */
-                       {
-                               struct dentry *mali_misc_setting_dir = debugfs_create_dir("misc", mali_debugfs_dir);
-                               if (mali_misc_setting_dir != NULL)
-                               {
-                                       debugfs_create_file("pp_for_sched", 0600, mali_misc_setting_dir, NULL, &pp_for_sched_fops);
-                                       debugfs_create_file("cur_freq", 0600, mali_misc_setting_dir, NULL, &cur_freq_fops);
-                                       debugfs_create_file("scale_mode", 0600, mali_misc_setting_dir, NULL, &scale_mode_fops);
-                                       debugfs_create_file("domain_stat", 0600, mali_misc_setting_dir, NULL, &domain_stat_fops);
-                                       debugfs_create_file("max_pp", 0600, mali_misc_setting_dir, NULL, &max_pp_fops);
-                                       debugfs_create_file("min_pp", 0600, mali_misc_setting_dir, NULL, &min_pp_fops);
-                                       debugfs_create_file("max_freq", 0600, mali_misc_setting_dir, NULL, &max_freq_fops);
-                                       debugfs_create_file("min_freq", 0600, mali_misc_setting_dir, NULL, &min_freq_fops);
-
-                               }
-                       }
-#endif /* MESON_CPU_TYPE_MESON8 */
-
                        if (mali_sysfs_user_settings_register()) {
                                /* Failed to create the debugfs entries for the user settings DB. */
                                MALI_DEBUG_PRINT(2, ("Failed to create user setting debugfs files. Ignoring...\n"));
index ab35087deed9a71b4f26ad147e18bc54c71b9d40..af1ddde9a5969f1aa0f57c4d42a0c43d7a0a6e97 100755 (executable)
@@ -1,11 +1,11 @@
 /*
- * This confidential and proprietary software may be used only as
- * authorised by a licensing agreement from ARM Limited
- * (C) COPYRIGHT 2011-2013 ARM Limited
- * ALL RIGHTS RESERVED
- * The entire notice above must be reproduced on all authorised
- * copies and copies may only be made to the extent permitted
- * by a licensing agreement from ARM Limited.
+ * Copyright (C) 2011-2013 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.
  */
 
 #ifndef __MALI_KERNEL_SYSFS_H__
index fcd7966de52063c33f07e8514e4dc1f3523bd08a..6c20250c1e8d3ba1c30c670603afdecdaf842e6c 100644 (file)
@@ -1,11 +1,11 @@
 /*
- * This confidential and proprietary software may be used only as
- * authorised by a licensing agreement from ARM Limited
- * (C) COPYRIGHT 2012-2013 ARM Limited
- * ALL RIGHTS RESERVED
- * The entire notice above must be reproduced on all authorised
- * copies and copies may only be made to the extent permitted
- * by a licensing agreement from ARM Limited.
+ * Copyright (C) 2012-2013 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.
  */
 
 #if !defined (MALI_LINUX_TRACE_H) || defined (TRACE_HEADER_MULTI_READ)
index b84c82a17ae9120ae80cf14128079e81736eff1e..f0c465806c7ae877e220201968bc7f59f5dfed7e 100644 (file)
@@ -1,11 +1,11 @@
 /*
- * This confidential and proprietary software may be used only as
- * authorised by a licensing agreement from ARM Limited
- * (C) COPYRIGHT 2013 ARM Limited
- * ALL RIGHTS RESERVED
- * The entire notice above must be reproduced on all authorised
- * copies and copies may only be made to the extent permitted
- * by a licensing agreement from ARM Limited.
+ * Copyright (C) 2013 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.
  */
 
 #include <linux/list.h>
index 95aeba4f17105ea93b7e20307267f04f7b661a7c..a5a02167426d27169e32b62b6079ad594609220e 100644 (file)
@@ -1,11 +1,11 @@
 /*
- * This confidential and proprietary software may be used only as
- * authorised by a licensing agreement from ARM Limited
- * (C) COPYRIGHT 2013 ARM Limited
- * ALL RIGHTS RESERVED
- * The entire notice above must be reproduced on all authorised
- * copies and copies may only be made to the extent permitted
- * by a licensing agreement from ARM Limited.
+ * Copyright (C) 2013 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.
  */
 
 #ifndef __MALI_MEMORY_H__
index e8c890e9a16bb031ff3865dd4b7cdf2d66705866..2847893dcd2d40239f1fbb88d84544cd489c4a80 100644 (file)
@@ -1,11 +1,11 @@
 /*
- * This confidential and proprietary software may be used only as
- * authorised by a licensing agreement from ARM Limited
- * (C) COPYRIGHT 2008-2013 ARM Limited
- * ALL RIGHTS RESERVED
- * The entire notice above must be reproduced on all authorised
- * copies and copies may only be made to the extent permitted
- * by a licensing agreement from ARM Limited.
+ * Copyright (C) 2010-2013 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.
  */
 #include "mali_kernel_common.h"
 #include "mali_memory.h"
index c0d412dc8010da2cb9cf6a6bcdc49faa0f1b693e..89bd541e4dc6c2b91cf75ac1382a3fae294b1bf4 100644 (file)
@@ -1,11 +1,11 @@
 /*
- * This confidential and proprietary software may be used only as
- * authorised by a licensing agreement from ARM Limited
- * (C) COPYRIGHT 2008-2010, 2013 ARM Limited
- * ALL RIGHTS RESERVED
- * The entire notice above must be reproduced on all authorised
- * copies and copies may only be made to the extent permitted
- * by a licensing agreement from ARM Limited.
+ * Copyright (C) 2010, 2013 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.
  */
 
 #ifndef __MALI_BLOCK_ALLOCATOR_H__
index 960531279f384be81880e89c70a8f5177a37566a..60cae152351593929e3632abd71d5ff132d62c1a 100644 (file)
@@ -1,11 +1,11 @@
 /*
- * This confidential and proprietary software may be used only as
- * authorised by a licensing agreement from ARM Limited
- * (C) COPYRIGHT 2012-2013 ARM Limited
- * ALL RIGHTS RESERVED
- * The entire notice above must be reproduced on all authorised
- * copies and copies may only be made to the extent permitted
- * by a licensing agreement from ARM Limited.
+ * Copyright (C) 2012-2013 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.
  */
 
 #include <linux/fs.h>     /* file system operations */
index c34edd8936b3418fff82c3e3eb9ea9d43e995566..7ee4dc54350a2d9266c25bb0d63f7f735672dd12 100644 (file)
@@ -1,11 +1,11 @@
 /*
- * This confidential and proprietary software may be used only as
- * authorised by a licensing agreement from ARM Limited
- * (C) COPYRIGHT 2011-2013 ARM Limited
- * ALL RIGHTS RESERVED
- * The entire notice above must be reproduced on all authorised
- * copies and copies may only be made to the extent permitted
- * by a licensing agreement from ARM Limited.
+ * Copyright (C) 2011-2013 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.
  */
 
 #ifndef __MALI_MEMORY_DMA_BUF_H__
index 0f09eedaffff7f9ad4aba96c242242a99a3ffcca..6d8e7922f1af08d12ca1a6a8511e9147b4ce70d4 100644 (file)
@@ -1,11 +1,11 @@
 /*
- * This confidential and proprietary software may be used only as
- * authorised by a licensing agreement from ARM Limited
- * (C) COPYRIGHT 2013 ARM Limited
- * ALL RIGHTS RESERVED
- * The entire notice above must be reproduced on all authorised
- * copies and copies may only be made to the extent permitted
- * by a licensing agreement from ARM Limited.
+ * Copyright (C) 2013 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.
  */
 
 #include "mali_osk.h"
index 7188b8169a0befc1999318cb5f3ce6962b2f4d5c..a9b20354f46689b89d377f98e8475cbcb7720526 100644 (file)
@@ -1,11 +1,11 @@
 /*
- * This confidential and proprietary software may be used only as
- * authorised by a licensing agreement from ARM Limited
- * (C) COPYRIGHT 2013 ARM Limited
- * ALL RIGHTS RESERVED
- * The entire notice above must be reproduced on all authorised
- * copies and copies may only be made to the extent permitted
- * by a licensing agreement from ARM Limited.
+ * Copyright (C) 2013 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.
  */
 
 #include <linux/list.h>
index 76f8ecfbfae487133a8e33007cb985452b0305e4..12d3f4f5a006e8a3ef1b385d96b1258550e35923 100644 (file)
@@ -1,11 +1,11 @@
 /*
- * This confidential and proprietary software may be used only as
- * authorised by a licensing agreement from ARM Limited
- * (C) COPYRIGHT 2013 ARM Limited
- * ALL RIGHTS RESERVED
- * The entire notice above must be reproduced on all authorised
- * copies and copies may only be made to the extent permitted
- * by a licensing agreement from ARM Limited.
+ * Copyright (C) 2013 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.
  */
 
 #ifndef __MALI_MEMORY_OS_ALLOC_H__
index 97db7e981b2579589062be78ea84874b972c875b..10672785a2339bb11a9c0f3708fc3d221c04a447 100644 (file)
@@ -1,11 +1,11 @@
 /*
- * This confidential and proprietary software may be used only as
- * authorised by a licensing agreement from ARM Limited
- * (C) COPYRIGHT 2013 ARM Limited
- * ALL RIGHTS RESERVED
- * The entire notice above must be reproduced on all authorised
- * copies and copies may only be made to the extent permitted
- * by a licensing agreement from ARM Limited.
+ * Copyright (C) 2013 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.
  */
 
 #ifndef __MALI_MEMORY_TYPES_H__
index 2a95ae7403a5dad9f70bb72dd1de01bbb24554dc..1115c1d1add0bc78d1e3d683b5f1b867483a190d 100644 (file)
@@ -1,11 +1,11 @@
 /*
- * This confidential and proprietary software may be used only as
- * authorised by a licensing agreement from ARM Limited
- * (C) COPYRIGHT 2012-2013 ARM Limited
- * ALL RIGHTS RESERVED
- * The entire notice above must be reproduced on all authorised
- * copies and copies may only be made to the extent permitted
- * by a licensing agreement from ARM Limited.
+ * Copyright (C) 2012-2013 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.
  */
 
 #include "mali_ukk.h"
index a6231126f130f27bff62f0e1eebdef2e330d58f7..7b34ee2f35f912a67e566e24777a43373401edc3 100644 (file)
@@ -1,11 +1,11 @@
 /*
- * This confidential and proprietary software may be used only as
- * authorised by a licensing agreement from ARM Limited
- * (C) COPYRIGHT 2008-2010, 2013 ARM Limited
- * ALL RIGHTS RESERVED
- * The entire notice above must be reproduced on all authorised
- * copies and copies may only be made to the extent permitted
- * by a licensing agreement from ARM Limited.
+ * Copyright (C) 2010, 2013 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.
  */
 
 /**
index 2a307101d60f4eb2746285fd875319299aa0e715..357659984bd44763bba2c10fec3bd0e282360d00 100644 (file)
@@ -1,11 +1,11 @@
 /*
- * This confidential and proprietary software may be used only as
- * authorised by a licensing agreement from ARM Limited
- * (C) COPYRIGHT 2008-2013 ARM Limited
- * ALL RIGHTS RESERVED
- * The entire notice above must be reproduced on all authorised
- * copies and copies may only be made to the extent permitted
- * by a licensing agreement from ARM Limited.
+ * Copyright (C) 2010-2013 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.
  */
 
 /**
index c4d8a235bd4e28a3a5055bf75c1ba7458cb9694b..5ad3f98e0f9982e790fc4d1e950c138315ac6eb2 100644 (file)
@@ -1,11 +1,11 @@
 /*
- * This confidential and proprietary software may be used only as
- * authorised by a licensing agreement from ARM Limited
- * (C) COPYRIGHT 2008-2013 ARM Limited
- * ALL RIGHTS RESERVED
- * The entire notice above must be reproduced on all authorised
- * copies and copies may only be made to the extent permitted
- * by a licensing agreement from ARM Limited.
+ * Copyright (C) 2010-2013 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.
  */
 
 /**
index ddef3c99a4a59cc36c2720d3893d44faf4a93013..f5c45f7d391427a597b95cf9691dd7ee285f3056 100644 (file)
@@ -1,11 +1,11 @@
 /*
- * This confidential and proprietary software may be used only as
- * authorised by a licensing agreement from ARM Limited
- * (C) COPYRIGHT 2008-2013 ARM Limited
- * ALL RIGHTS RESERVED
- * The entire notice above must be reproduced on all authorised
- * copies and copies may only be made to the extent permitted
- * by a licensing agreement from ARM Limited.
+ * Copyright (C) 2010-2013 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.
  */
 
 /**
index f600b540d294496a9ef1861eb457d9bf4df46ffa..2fa7b1a011523a02e37a4c105d4c91530fda07e9 100644 (file)
@@ -1,11 +1,11 @@
 /*
- * This confidential and proprietary software may be used only as
- * authorised by a licensing agreement from ARM Limited
- * (C) COPYRIGHT 2008-2013 ARM Limited
- * ALL RIGHTS RESERVED
- * The entire notice above must be reproduced on all authorised
- * copies and copies may only be made to the extent permitted
- * by a licensing agreement from ARM Limited.
+ * Copyright (C) 2010-2013 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.
  */
 
 /**
index f59d12ef9ed43b83ef2fc830a78286bfe796b635..626c35fd0e11d5b45df7f4dc1ff6d80c7dac23aa 100644 (file)
@@ -1,11 +1,11 @@
 /*
- * This confidential and proprietary software may be used only as
- * authorised by a licensing agreement from ARM Limited
- * (C) COPYRIGHT 2008-2013 ARM Limited
- * ALL RIGHTS RESERVED
- * The entire notice above must be reproduced on all authorised
- * copies and copies may only be made to the extent permitted
- * by a licensing agreement from ARM Limited.
+ * Copyright (C) 2010-2013 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.
  */
 
 /**
index 08d4ced5e19be3baa832c409b56b011b5e69944b..c097fcc774218d7d500c75a1f2492befbed9d579 100644 (file)
@@ -1,11 +1,11 @@
 /*
- * This confidential and proprietary software may be used only as
- * authorised by a licensing agreement from ARM Limited
- * (C) COPYRIGHT 2008-2010, 2013 ARM Limited
- * ALL RIGHTS RESERVED
- * The entire notice above must be reproduced on all authorised
- * copies and copies may only be made to the extent permitted
- * by a licensing agreement from ARM Limited.
+ * Copyright (C) 2010, 2013 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.
  */
 
 /**
index 97742940d5a93691bfbc9468d044bbb782eec30b..64d8951709f0b363888cf090a8a9776d3e3f98c5 100644 (file)
@@ -1,11 +1,11 @@
 /*
- * This confidential and proprietary software may be used only as
- * authorised by a licensing agreement from ARM Limited
- * (C) COPYRIGHT 2008-2011, 2013 ARM Limited
- * ALL RIGHTS RESERVED
- * The entire notice above must be reproduced on all authorised
- * copies and copies may only be made to the extent permitted
- * by a licensing agreement from ARM Limited.
+ * Copyright (C) 2010-2011, 2013 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.
  */
 
 /**
index 81bf5f96264b8d0616cdb7049f9fdf9995f6b187..28ea90a03ba8a872d83f8921150728aa1d313d18 100644 (file)
@@ -1,11 +1,11 @@
 /*
- * This confidential and proprietary software may be used only as
- * authorised by a licensing agreement from ARM Limited
- * (C) COPYRIGHT 2008-2013 ARM Limited
- * ALL RIGHTS RESERVED
- * The entire notice above must be reproduced on all authorised
- * copies and copies may only be made to the extent permitted
- * by a licensing agreement from ARM Limited.
+ * Copyright (C) 2010-2013 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.
  */
 
 /**
index 0afcb76318cf032609e0de2815c1de1e92c12b90..3738ad35260772cea1543b6aba3dec607c1958d1 100644 (file)
@@ -1,11 +1,11 @@
 /*
- * This confidential and proprietary software may be used only as
- * authorised by a licensing agreement from ARM Limited
- * (C) COPYRIGHT 2008-2013 ARM Limited
- * ALL RIGHTS RESERVED
- * The entire notice above must be reproduced on all authorised
- * copies and copies may only be made to the extent permitted
- * by a licensing agreement from ARM Limited.
+ * Copyright (C) 2010-2013 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.
  */
 
 /**
index b1152676a357bfd36e8dfaad9fd4709526ec3339..f8769b189a09cf4edd6ec8b976fed5bbd51d5591 100644 (file)
@@ -1,11 +1,11 @@
 /**
- * This confidential and proprietary software may be used only as
- * authorised by a licensing agreement from ARM Limited
- * (C) COPYRIGHT 2010-2013 ARM Limited
- * ALL RIGHTS RESERVED
- * The entire notice above must be reproduced on all authorised
- * copies and copies may only be made to the extent permitted
- * by a licensing agreement from ARM Limited.
+ * Copyright (C) 2010-2013 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.
  */
 
 /**
index bb89be6bb4cccecc7b47e319af3812ae795463c7..0c1ff3b7f213cc4d517bf6e6fd75f864df719560 100644 (file)
@@ -1,11 +1,11 @@
 /*
- * This confidential and proprietary software may be used only as
- * authorised by a licensing agreement from ARM Limited
- * (C) COPYRIGHT 2012-2013 ARM Limited
- * ALL RIGHTS RESERVED
- * The entire notice above must be reproduced on all authorised
- * copies and copies may only be made to the extent permitted
- * by a licensing agreement from ARM Limited.
+ * Copyright (C) 2012-2013 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.
  */
 
 #include <linux/module.h>
index c0d4f5d6dc627162ef9663879ac7604bc11f1ae9..eca873f19dc2d414d4aa781ee6002961de25ea0e 100644 (file)
@@ -1,11 +1,11 @@
 /*
- * This confidential and proprietary software may be used only as
- * authorised by a licensing agreement from ARM Limited
- * (C) COPYRIGHT 2008-2010, 2012-2013 ARM Limited
- * ALL RIGHTS RESERVED
- * The entire notice above must be reproduced on all authorised
- * copies and copies may only be made to the extent permitted
- * by a licensing agreement from ARM Limited.
+ * Copyright (C) 2010, 2012-2013 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.
  */
 
 /**
index 3a0b354c95837e89e27fd2d7962767a0e2ce2adf..2f1160c006b8fdb52746e4ce46630a23b2b7bf3e 100644 (file)
@@ -1,11 +1,11 @@
 /*
- * This confidential and proprietary software may be used only as
- * authorised by a licensing agreement from ARM Limited
- * (C) COPYRIGHT 2008-2010, 2013 ARM Limited
- * ALL RIGHTS RESERVED
- * The entire notice above must be reproduced on all authorised
- * copies and copies may only be made to the extent permitted
- * by a licensing agreement from ARM Limited.
+ * Copyright (C) 2010, 2013 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.
  */
 
 /**
index e1f0df75f5cf1e27401829c22ac16e8d65b7ae55..3f179be63caf859b375762af3367185419aa6625 100644 (file)
@@ -1,11 +1,11 @@
 /*
- * This confidential and proprietary software may be used only as
- * authorised by a licensing agreement from ARM Limited
- * (C) COPYRIGHT 2008-2013 ARM Limited
- * ALL RIGHTS RESERVED
- * The entire notice above must be reproduced on all authorised
- * copies and copies may only be made to the extent permitted
- * by a licensing agreement from ARM Limited.
+ * Copyright (C) 2010-2013 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.
  */
 
 /**
index fe2cc8bbe09ad53d5cdb009a13d4f8efa0e9bcc5..ab803b1d6cc19e6582ef667a762c45ca0d3c3df7 100644 (file)
@@ -1,11 +1,11 @@
 /*
- * This confidential and proprietary software may be used only as
- * authorised by a licensing agreement from ARM Limited
- * (C) COPYRIGHT 2012-2013 ARM Limited
- * ALL RIGHTS RESERVED
- * The entire notice above must be reproduced on all authorised
- * copies and copies may only be made to the extent permitted
- * by a licensing agreement from ARM Limited.
+ * Copyright (C) 2012-2013 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.
  */
 
 /**
index 5467dcd6b77430ad339c072922b72ff2d60aa56e..d07977ae42a5ef142a3098aafc3ef3c28d9c21e0 100644 (file)
@@ -1,11 +1,11 @@
 /*
- * This confidential and proprietary software may be used only as
- * authorised by a licensing agreement from ARM Limited
- * (C) COPYRIGHT 2008-2013 ARM Limited
- * ALL RIGHTS RESERVED
- * The entire notice above must be reproduced on all authorised
- * copies and copies may only be made to the extent permitted
- * by a licensing agreement from ARM Limited.
+ * Copyright (C) 2010-2013 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.
  */
 
 /**
index 7ad03de8b88642d842688b175ace07d92ee95c9f..0c313a311b0b25babef5db0dd054d5636d344c8a 100644 (file)
@@ -1,11 +1,11 @@
 /**
- * This confidential and proprietary software may be used only as
- * authorised by a licensing agreement from ARM Limited
- * (C) COPYRIGHT 2010, 2012-2013 ARM Limited
- * ALL RIGHTS RESERVED
- * The entire notice above must be reproduced on all authorised
- * copies and copies may only be made to the extent permitted
- * by a licensing agreement from ARM Limited.
+ * Copyright (C) 2010, 2012-2013 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.
  */
 
 /**
index 0164e8135f67d92770aae7c6cdc4bfda19d182ab..2639a404d47578c7f477f2c9261a88e951227701 100644 (file)
@@ -1,11 +1,11 @@
 /*
- * This confidential and proprietary software may be used only as
- * authorised by a licensing agreement from ARM Limited
- * (C) COPYRIGHT 2012 ARM Limited
- * ALL RIGHTS RESERVED
- * The entire notice above must be reproduced on all authorised
- * copies and copies may only be made to the extent permitted
- * by a licensing agreement from ARM Limited.
+ * Copyright (C) 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.
  */
 
 #ifndef __MALI_PROFILING_EVENTS_H__
index 9736b4af4c4bae28ed8ebcc9f07121cd4f320923..e3d836fedef765a6727ef753e4f8d1cb98c23fe2 100644 (file)
@@ -1,11 +1,11 @@
 /*
- * This confidential and proprietary software may be used only as
- * authorised by a licensing agreement from ARM Limited
- * (C) COPYRIGHT 2012-2013 ARM Limited
- * ALL RIGHTS RESERVED
- * The entire notice above must be reproduced on all authorised
- * copies and copies may only be made to the extent permitted
- * by a licensing agreement from ARM Limited.
+ * Copyright (C) 2012-2013 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.
  */
 
 #ifndef __MALI_PROFILING_GATOR_API_H__
index 90dce622f4e0d3ef716a796bb4e60617ed1de9b5..c05028bb9579bf8727471f523689c5de01f95e72 100644 (file)
@@ -1,11 +1,11 @@
 /*
- * This confidential and proprietary software may be used only as
- * authorised by a licensing agreement from ARM Limited
- * (C) COPYRIGHT 2010-2013 ARM Limited
- * ALL RIGHTS RESERVED
- * The entire notice above must be reproduced on all authorised
- * copies and copies may only be made to the extent permitted
- * by a licensing agreement from ARM Limited.
+ * Copyright (C) 2010-2013 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.
  */
 
 #include "mali_kernel_common.h"
index 07ffbb5026a2c6c1ea671754e06bcb40cbfb910d..3c86e077bcd94836d5a516150f20b92b7f8fd945 100644 (file)
@@ -1,11 +1,11 @@
 /*
- * This confidential and proprietary software may be used only as
- * authorised by a licensing agreement from ARM Limited
- * (C) COPYRIGHT 2012-2013 ARM Limited
- * ALL RIGHTS RESERVED
- * The entire notice above must be reproduced on all authorised
- * copies and copies may only be made to the extent permitted
- * by a licensing agreement from ARM Limited.
+ * Copyright (C) 2012-2013 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.
  */
 
 #ifndef __MALI_PROFILING_INTERNAL_H__
index 9542eb1ae30f164de89919f2e9e8ce12c9ec482e..d85d5bbe27658671115ed344e420bd5078b895ac 100644 (file)
@@ -1,11 +1,11 @@
 /*
- * This confidential and proprietary software may be used only as
- * authorised by a licensing agreement from ARM Limited
- * (C) COPYRIGHT 2012-2013 ARM Limited
- * ALL RIGHTS RESERVED
- * The entire notice above must be reproduced on all authorised
- * copies and copies may only be made to the extent permitted
- * by a licensing agreement from ARM Limited.
+ * Copyright (C) 2012-2013 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.
  */
 
 #include "mali_sync.h"
index ff9160578c8638ac65234ea53d79109ded29305d..768f2f8275abe34bf345fe53275ce23babb3d4f4 100644 (file)
@@ -1,11 +1,11 @@
 /*
- * This confidential and proprietary software may be used only as
- * authorised by a licensing agreement from ARM Limited
- * (C) COPYRIGHT 2012-2013 ARM Limited
- * ALL RIGHTS RESERVED
- * The entire notice above must be reproduced on all authorised
- * copies and copies may only be made to the extent permitted
- * by a licensing agreement from ARM Limited.
+ * Copyright (C) 2012-2013 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.
  */
 
 /**
index fac43ae4a848a1261187e95c596ad0d0cdd40400..fbe902a02d43296a603cf17c36fe13ea39c95c27 100644 (file)
@@ -1,11 +1,11 @@
 /*
- * This confidential and proprietary software may be used only as
- * authorised by a licensing agreement from ARM Limited
- * (C) COPYRIGHT 2012 ARM Limited
- * ALL RIGHTS RESERVED
- * The entire notice above must be reproduced on all authorised
- * copies and copies may only be made to the extent permitted
- * by a licensing agreement from ARM Limited.
+ * Copyright (C) 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.
  */
 
 #ifndef __MALI_UK_TYPES_H__
index 281089b4e1b5684a653cbaf747c88b678d17024e..c0372d719865914adff9355cc871584966899923 100644 (file)
@@ -1,11 +1,11 @@
 /*
- * This confidential and proprietary software may be used only as
- * authorised by a licensing agreement from ARM Limited
- * (C) COPYRIGHT 2008-2013 ARM Limited
- * ALL RIGHTS RESERVED
- * The entire notice above must be reproduced on all authorised
- * copies and copies may only be made to the extent permitted
- * by a licensing agreement from ARM Limited.
+ * Copyright (C) 2010-2013 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.
  */
 #include <linux/fs.h>       /* file system operations */
 #include <linux/slab.h>     /* memort allocation functions */
index d3992d1f8fa997d58e1c8860e8a811b4b8809ecc..32b148b1856bce19a7e36c306f5938c788d3bef5 100644 (file)
@@ -1,11 +1,11 @@
 /*
- * This confidential and proprietary software may be used only as
- * authorised by a licensing agreement from ARM Limited
- * (C) COPYRIGHT 2008-2010, 2012-2013 ARM Limited
- * ALL RIGHTS RESERVED
- * The entire notice above must be reproduced on all authorised
- * copies and copies may only be made to the extent permitted
- * by a licensing agreement from ARM Limited.
+ * Copyright (C) 2010, 2012-2013 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.
  */
 #include <linux/fs.h>       /* file system operations */
 #include <asm/uaccess.h>    /* user space access */
index 6baf151a615a0e08047498ccb721202be306e4a4..083c909ab09ef1adaafe206d994ae12a1f5fd034 100644 (file)
@@ -1,11 +1,11 @@
 /*
- * This confidential and proprietary software may be used only as
- * authorised by a licensing agreement from ARM Limited
- * (C) COPYRIGHT 2008-2013 ARM Limited
- * ALL RIGHTS RESERVED
- * The entire notice above must be reproduced on all authorised
- * copies and copies may only be made to the extent permitted
- * by a licensing agreement from ARM Limited.
+ * Copyright (C) 2010-2013 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.
  */
 #include <linux/fs.h>       /* file system operations */
 #include <asm/uaccess.h>    /* user space access */
index 1519230b8be085bd6ee47aac3fe217c757ae23c1..e5126ec713d2f0a04c6adcdb104eb9d4fc51373a 100644 (file)
@@ -1,11 +1,11 @@
 /*
- * This confidential and proprietary software may be used only as
- * authorised by a licensing agreement from ARM Limited
- * (C) COPYRIGHT 2008-2010, 2012-2013 ARM Limited
- * ALL RIGHTS RESERVED
- * The entire notice above must be reproduced on all authorised
- * copies and copies may only be made to the extent permitted
- * by a licensing agreement from ARM Limited.
+ * Copyright (C) 2010, 2012-2013 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.
  */
 #include <linux/fs.h>       /* file system operations */
 #include <asm/uaccess.h>    /* user space access */
index d77ca2517dd2b630fee757b2155f8e4ec19de4c3..8423f28b7f553ea6da37c6e8b82844be87bd77f8 100644 (file)
@@ -1,11 +1,11 @@
 /*
- * This confidential and proprietary software may be used only as
- * authorised by a licensing agreement from ARM Limited
- * (C) COPYRIGHT 2010-2013 ARM Limited
- * ALL RIGHTS RESERVED
- * The entire notice above must be reproduced on all authorised
- * copies and copies may only be made to the extent permitted
- * by a licensing agreement from ARM Limited.
+ * Copyright (C) 2010-2013 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.
  */
 #include <linux/fs.h>       /* file system operations */
 #include <asm/uaccess.h>    /* user space access */
index 4dd005dca253067578bb03194028b10bb0a074c9..51ef4664787218fe469bf4f6d11b9298160344fc 100644 (file)
@@ -1,11 +1,11 @@
 /*
- * This confidential and proprietary software may be used only as
- * authorised by a licensing agreement from ARM Limited
- * (C) COPYRIGHT 2013 ARM Limited
- * ALL RIGHTS RESERVED
- * The entire notice above must be reproduced on all authorised
- * copies and copies may only be made to the extent permitted
- * by a licensing agreement from ARM Limited.
+ * Copyright (C) 2013 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.
  */
 #include <linux/fs.h>       /* file system operations */
 #include <asm/uaccess.h>    /* user space access */
index e227002a4b1a2f6375e85bab26b53498e5dfb530..dd72dee86970b96a2cefeb47b1b2bfae13f70381 100644 (file)
@@ -1,11 +1,11 @@
 /*
- * This confidential and proprietary software may be used only as
- * authorised by a licensing agreement from ARM Limited
- * (C) COPYRIGHT 2013 ARM Limited
- * ALL RIGHTS RESERVED
- * The entire notice above must be reproduced on all authorised
- * copies and copies may only be made to the extent permitted
- * by a licensing agreement from ARM Limited.
+ * Copyright (C) 2013 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.
  */
 #include <linux/fs.h>       /* file system operations */
 #include <asm/uaccess.h>    /* user space access */
index 18fdef68d780cc06b96aea45ff807560cf6eb4d4..276a147bfdc5b7d08abf39ee0e454cc3cb002932 100644 (file)
@@ -1,11 +1,11 @@
 /*
- * This confidential and proprietary software may be used only as
- * authorised by a licensing agreement from ARM Limited
- * (C) COPYRIGHT 2011-2013 ARM Limited
- * ALL RIGHTS RESERVED
- * The entire notice above must be reproduced on all authorised
- * copies and copies may only be made to the extent permitted
- * by a licensing agreement from ARM Limited.
+ * Copyright (C) 2011-2013 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.
  */
 #include <linux/fs.h>       /* file system operations */
 #include <asm/uaccess.h>    /* user space access */
index c28e554a56fb16d86b69eecfbec6b43b186c51df..0883b6c0d7b7cca447a3b3daf5a335cf8e750d7f 100644 (file)
@@ -1,11 +1,11 @@
 /*
- * This confidential and proprietary software may be used only as
- * authorised by a licensing agreement from ARM Limited
- * (C) COPYRIGHT 2008-2013 ARM Limited
- * ALL RIGHTS RESERVED
- * The entire notice above must be reproduced on all authorised
- * copies and copies may only be made to the extent permitted
- * by a licensing agreement from ARM Limited.
+ * Copyright (C) 2010-2013 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.
  */
 
 /**
diff --git a/mali/platform/mali_clock.c b/mali/platform/mali_clock.c
new file mode 100644 (file)
index 0000000..139bf52
--- /dev/null
@@ -0,0 +1,70 @@
+#include <linux/platform_device.h>
+#include <linux/version.h>
+#include <linux/pm.h>
+#include <mach/register.h>
+#include <mach/irqs.h>
+#include <linux/io.h>
+#include <mach/io.h>
+#include <plat/io.h>
+#include <asm/io.h>
+
+#include "meson_main.h"
+
+static DEFINE_SPINLOCK(lock);
+
+int mali_clock_init(u32 def_clk_idx)
+{
+       mali_clock_set(def_clk_idx);
+       return 0;
+}
+
+int mali_clock_critical(critical_t critical, u64 param)
+{
+       int ret = 0;
+       unsigned long flags;
+       
+       spin_lock_irqsave(&lock, flags);
+       ret = critical(param);
+       spin_unlock_irqrestore(&lock, flags);
+       return ret;
+}
+
+static int critical_clock_set(u64 param)
+{
+       unsigned int idx = param;
+       clrbits_le32((u32)P_HHI_MALI_CLK_CNTL, 1 << 8);
+       clrbits_le32((u32)P_HHI_MALI_CLK_CNTL, (0x7F | (0x7 << 9)));
+       writel(mali_dvfs_clk[idx], (u32*)P_HHI_MALI_CLK_CNTL); /* set clock to 333MHZ.*/
+       setbits_le32((u32)P_HHI_MALI_CLK_CNTL, 1 << 8);
+       return 0;
+}
+
+int mali_clock_set(unsigned int  clock) 
+{
+       return mali_clock_critical(critical_clock_set, (u64)clock);
+}
+
+void disable_clock(void)
+{
+       unsigned long flags;
+       spin_lock_irqsave(&lock, flags);
+       clrbits_le32((u32)P_HHI_MALI_CLK_CNTL, 1 << 8);
+       spin_unlock_irqrestore(&lock, flags);
+       printk("## mali clock off----\n");
+}
+
+void enable_clock(void)
+{
+       u32 ret = 0;
+       unsigned long flags;
+       spin_lock_irqsave(&lock, flags);
+       setbits_le32((u32)P_HHI_MALI_CLK_CNTL, 1 << 8);
+       ret = readl((u32 *)P_HHI_MALI_CLK_CNTL) & (1 << 8);
+       spin_unlock_irqrestore(&lock, flags);
+       printk("## mali clock on :%x++++\n", ret);
+}
+
+u32 get_mali_freq(u32 idx)
+{
+       return mali_dvfs_clk_sample[idx];
+}
diff --git a/mali/platform/mali_clock.h b/mali/platform/mali_clock.h
new file mode 100644 (file)
index 0000000..4e85d87
--- /dev/null
@@ -0,0 +1,12 @@
+#ifndef _MALI_CLOCK_H_
+#define _MALI_CLOCK_H_
+
+typedef int (*critical_t)(u64 param);
+int mali_clock_critical(critical_t critical, u64 param);
+
+int mali_clock_init(u32 def_clk_idx);
+int mali_clock_set(unsigned int index);
+void disable_clock(void);
+void enable_clock(void);
+u32 get_mali_freq(u32 idx);
+#endif /* _MALI_CLOCK_H_ */
index 4728e9df813d2172e9ead68fc61b6287cdd41100..d2cef163e6253c44d4a9300f0b7b8938497509d0 100644 (file)
@@ -9,10 +9,6 @@
 #ifndef MALI_PLATFORM_H_
 #define MALI_PLATFORM_H_
 
-#if MESON_CPU_TYPE < MESON_CPU_TYPE_MESON8
-#else
-#include "meson8/platform_api.h"
-#endif
 
 
 #endif /* MALI_PLATFORM_H_ */
diff --git a/mali/platform/mali_pm_device.c b/mali/platform/mali_pm_device.c
new file mode 100644 (file)
index 0000000..0c33f66
--- /dev/null
@@ -0,0 +1,129 @@
+#include <linux/platform_device.h>
+#include <linux/version.h>
+#include <linux/pm.h>
+#include <linux/of.h>
+#include <linux/module.h>            /* kernel module definitions */
+#include <linux/ioport.h>            /* request_mem_region */
+#include <linux/slab.h>
+#include <mach/register.h>
+#include <mach/irqs.h>
+#include <mach/io.h>
+#include "meson_main.h"
+#include <common/mali_kernel_common.h>
+#include <common/mali_osk_profiling.h>
+#include <common/mali_pmu.h>
+
+static int mali_os_suspend(struct device *device)
+{
+       int ret = 0;
+
+       MALI_DEBUG_PRINT(4, ("mali_os_suspend() called\n"));
+       ret = mali_deep_suspend(device);
+
+       return ret;
+}
+
+static int mali_os_resume(struct device *device)
+{
+       int ret = 0;
+
+       MALI_DEBUG_PRINT(4, ("mali_os_resume() called\n"));
+       ret = mali_deep_resume(device);
+
+       return ret;
+}
+
+static int mali_os_freeze(struct device *device)
+{
+       int ret = 0;
+
+       MALI_DEBUG_PRINT(4, ("mali_os_freeze() called\n"));
+
+       if (NULL != device->driver &&
+           NULL != device->driver->pm &&
+           NULL != device->driver->pm->freeze)
+       {
+               /* Need to notify Mali driver about this event */
+               ret = device->driver->pm->freeze(device);
+       }
+
+       return ret;
+}
+
+static int mali_os_thaw(struct device *device)
+{
+       int ret = 0;
+
+       MALI_DEBUG_PRINT(4, ("mali_os_thaw() called\n"));
+
+       if (NULL != device->driver &&
+           NULL != device->driver->pm &&
+           NULL != device->driver->pm->thaw)
+       {
+               /* Need to notify Mali driver about this event */
+               ret = device->driver->pm->thaw(device);
+       }
+
+       return ret;
+}
+
+#ifdef CONFIG_PM_RUNTIME
+static int mali_runtime_suspend(struct device *device)
+{
+       int ret = 0;
+
+       MALI_DEBUG_PRINT(4, ("mali_runtime_suspend() called\n"));
+       ret = mali_light_suspend(device);
+
+       return ret;
+}
+
+static int mali_runtime_resume(struct device *device)
+{
+       int ret = 0;
+
+       MALI_DEBUG_PRINT(4, ("mali_run  time_resume() called\n"));
+       ret = mali_light_resume(device);
+
+       return ret;
+}
+
+static int mali_runtime_idle(struct device *device)
+{
+       MALI_DEBUG_PRINT(4, ("mali_runtime_idle() called\n"));
+
+       if (NULL != device->driver &&
+           NULL != device->driver->pm &&
+           NULL != device->driver->pm->runtime_idle)
+       {
+               /* Need to notify Mali driver about this event */
+               int ret = device->driver->pm->runtime_idle(device);
+               if (0 != ret)
+               {
+                       return ret;
+               }
+       }
+
+       pm_runtime_suspend(device);
+
+       return 0;
+}
+#endif
+
+static struct dev_pm_ops mali_gpu_device_type_pm_ops =
+{
+       .suspend = mali_os_suspend,
+       .resume = mali_os_resume,
+       .freeze = mali_os_freeze,
+       .thaw = mali_os_thaw,
+#ifdef CONFIG_PM_RUNTIME
+       .runtime_suspend = mali_runtime_suspend,
+       .runtime_resume = mali_runtime_resume,
+       .runtime_idle = mali_runtime_idle,
+#endif
+};
+
+struct device_type mali_pm_device =
+{
+       .pm = &mali_gpu_device_type_pm_ops,
+};
diff --git a/mali/platform/mali_scaling.h b/mali/platform/mali_scaling.h
new file mode 100755 (executable)
index 0000000..563f23f
--- /dev/null
@@ -0,0 +1,74 @@
+/*
+ * Copyright (C) 2013 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.
+ */
+
+/**
+ * @file arm_core_scaling.h
+ * Example core scaling policy.
+ */
+
+#ifndef __ARM_CORE_SCALING_H__
+#define __ARM_CORE_SCALING_H__
+
+typedef struct mali_dvfs_threshold_table {
+       unsigned int freq_index;
+       unsigned int voltage;
+       unsigned int keep_count;
+       unsigned int downthreshold;
+       unsigned int upthreshold;
+} mali_dvfs_threshold_table_t;
+
+/**
+ * Initialize core scaling policy.
+ *
+ * @note The core scaling policy will assume that all PP cores are on initially.
+ *
+ * @param num_pp_cores Total number of PP cores.
+ */
+void mali_core_scaling_init(int pp, int clock_idx);
+
+/**
+ * Terminate core scaling policy.
+ */
+void mali_core_scaling_term(void);
+
+/**
+ * Update core scaling policy with new utilization data.
+ *
+ * @param data Utilization data.
+ */
+
+/**
+ * cancel and flush scaling job queue.
+ */
+void flush_scaling_job(void);
+
+u32 set_mali_dvfs_tbl_size(u32 size);
+u32 get_max_dvfs_tbl_size(void);
+uint32_t* get_mali_dvfs_tbl_addr(void);
+
+/* get or set the max/min number of pp cores. */ 
+u32 get_max_pp_num(void);
+u32 set_max_pp_num(u32 num);
+u32 get_min_pp_num(void);
+u32 set_min_pp_num(u32 num);
+
+/* get or set the max/min frequency of GPU. */ 
+u32 get_max_mali_freq(void);
+u32 set_max_mali_freq(u32 idx);
+u32 get_min_mali_freq(void);
+u32 set_min_mali_freq(u32 idx);
+
+/* get or set the scale mode. */ 
+u32 get_mali_schel_mode(void);
+void set_mali_schel_mode(u32 mode);
+
+/* preheat of the GPU. */ 
+void mali_plat_preheat(void);
+#endif /* __ARM_CORE_SCALING_H__ */
diff --git a/mali/platform/meson_m400/mali_fix.c b/mali/platform/meson_m400/mali_fix.c
new file mode 100644 (file)
index 0000000..db99ace
--- /dev/null
@@ -0,0 +1,177 @@
+/*
+ * AMLOGIC Mali fix driver.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the named License,
+ * or any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA
+ *
+ * Author:  Tim Yao <timyao@amlogic.com>
+ *
+ */
+
+#include <linux/kernel.h>
+#include <linux/module.h>
+#include <linux/types.h>
+#include <linux/timer.h>
+#include <asm/io.h>
+#include <linux/ioport.h>
+#include <linux/dma-mapping.h>
+
+#include <linux/module.h>
+
+#include <mach/am_regs.h>
+#include <mach/clock.h>
+
+#include "mali_kernel_common.h"
+#include "mali_osk.h"
+#include "mali_platform.h"
+#include "mali_fix.h"
+
+#define MALI_MM1_REG_ADDR 0xd0064000
+#define MALI_MMU_REGISTER_INT_STATUS     0x0008
+#define MALI_MM2_REG_ADDR 0xd0065000
+#define MALI_MMU_REGISTER_INT_STATUS     0x0008
+#define MALI_MM_REG_SIZE 0x1000
+
+#define READ_MALI_MMU1_REG(r) (ioread32(((u8*)mali_mm1_regs) + r))
+#define READ_MALI_MMU2_REG(r) (ioread32(((u8*)mali_mm2_regs) + r))
+
+extern int mali_PP0_int_cnt(void);
+extern int mali_PP1_int_cnt(void);
+static ulong * mali_mm1_regs = NULL;
+static ulong * mali_mm2_regs = NULL;
+static struct timer_list timer;
+
+static u32 mali_pp1_int_count = 0;
+static u32 mali_pp2_int_count = 0;
+static u32 mali_pp1_mmu_int_count = 0;
+static u32 mali_pp2_mmu_int_count = 0;
+static u32 mali_mmu_int_process_state[2];
+
+static void timer_callback(ulong data)
+{
+       unsigned long mali_flags;
+
+       mali_pp1_int_count = mali_PP0_int_cnt();
+       mali_pp2_int_count = mali_PP1_int_cnt();
+
+       /* lock mali_clock_gating when access Mali registers */
+       mali_flags = mali_clock_gating_lock();
+
+       if (READ_CBUS_REG(HHI_MALI_CLK_CNTL) & 0x100) {
+               /* polling for PP1 MMU interrupt */
+               if (mali_mmu_int_process_state[0] == MMU_INT_NONE) {
+                       if (READ_MALI_MMU1_REG(MALI_MMU_REGISTER_INT_STATUS) != 0) {
+                               mali_pp1_mmu_int_count++;
+                               MALI_DEBUG_PRINT(3, ("Mali MMU: core0 page fault emit \n"));
+                               mali_mmu_int_process_state[0] = MMU_INT_HIT;
+                               __raw_writel(1, P_ISA_TIMERC);
+                       }
+               }
+
+               /* polling for PP2 MMU interrupt */
+               if (mali_mmu_int_process_state[1] == MMU_INT_NONE) {
+                       if (READ_MALI_MMU2_REG(MALI_MMU_REGISTER_INT_STATUS) != 0) {
+                               mali_pp2_mmu_int_count++;
+                               MALI_DEBUG_PRINT(3, ("Mali MMU: core1 page fault emit \n"));
+                               mali_mmu_int_process_state[1] = MMU_INT_HIT;
+                               __raw_writel(1, P_ISA_TIMERC);
+                       }
+               }
+       }
+
+       mali_clock_gating_unlock(mali_flags);
+
+       timer.expires = jiffies + HZ/100;
+
+       add_timer(&timer);
+}
+
+void malifix_set_mmu_int_process_state(int index, int state)
+{
+       if (index < 2)
+               mali_mmu_int_process_state[index] = state;
+}
+
+int malifix_get_mmu_int_process_state(int index)
+{
+       if (index < 2)
+               return mali_mmu_int_process_state[index];
+       return 0;
+}
+
+void malifix_init(void)
+{
+#if MESON_CPU_TYPE == MESON_CPU_TYPE_MESON6
+       if (!mali_meson_is_revb())
+               return;
+
+       if ((mali_mm1_regs) && (mali_mm2_regs)) return;
+       mali_mmu_int_process_state[0] = 0;
+       mali_mmu_int_process_state[1] = 0;
+
+       /* set up Timer C as a 1uS one-shot timer */
+       aml_clr_reg32_mask(P_ISA_TIMER_MUX, (1<<18)|(1<<14)|(3<<4));
+       aml_set_reg32_mask(P_ISA_TIMER_MUX,     (1<<18)|(0<<14)|(0<<4));
+
+       setup_timer(&timer, timer_callback, 0);
+
+       mali_mm1_regs = (ulong *)ioremap_nocache(MALI_MM1_REG_ADDR, MALI_MM_REG_SIZE);
+       if (mali_mm1_regs)
+               printk("Mali pp1 MMU register mapped at %p...\n", mali_mm1_regs);
+
+       mali_mm2_regs = (ulong *)ioremap_nocache(MALI_MM2_REG_ADDR, MALI_MM_REG_SIZE);
+       if (mali_mm2_regs)
+               printk("Mali pp2 MMU register mapped at %p...\n", mali_mm2_regs);
+
+       if ((mali_mm1_regs != NULL) && (mali_mm2_regs != NULL))
+               mod_timer(&timer, jiffies + HZ/100);
+#endif
+}
+
+void malifix_exit(void)
+{
+#if MESON_CPU_TYPE == MESON_CPU_TYPE_MESON6
+       if (!mali_meson_is_revb())
+               return;
+
+       del_timer(&timer);
+
+       if (mali_mm1_regs != NULL)
+               iounmap(mali_mm1_regs);
+       mali_mm1_regs = NULL;
+
+       if (mali_mm2_regs != NULL)
+               iounmap(mali_mm2_regs);
+       mali_mm2_regs = NULL;
+
+#endif
+       return;
+}
+
+module_param(mali_pp1_int_count, uint, 0664);
+MODULE_PARM_DESC(mali_pp1_int_count, "Mali PP1 interrupt count\n");
+
+module_param(mali_pp2_int_count, uint, 0664);
+MODULE_PARM_DESC(mali_pp2_int_count, "Mali PP1 interrupt count\n");
+
+module_param(mali_pp1_mmu_int_count, uint, 0664);
+MODULE_PARM_DESC(mali_pp1_mmu_int_count, "Mali PP1 mmu interrupt count\n");
+
+module_param(mali_pp2_mmu_int_count, uint, 0664);
+MODULE_PARM_DESC(mali_pp2_mmu_int_count, "Mali PP2 mmu interrupt count\n");
+
+MODULE_DESCRIPTION("AMLOGIC mali fix driver");
+MODULE_LICENSE("GPL");
+MODULE_AUTHOR("Tim Yao <timyao@amlogic.com>");
diff --git a/mali/platform/meson_m400/mali_fix.h b/mali/platform/meson_m400/mali_fix.h
new file mode 100644 (file)
index 0000000..9da11e6
--- /dev/null
@@ -0,0 +1,15 @@
+#ifndef MALI_FIX_H\r
+#define MALI_FIX_H\r
+\r
+#define MMU_INT_NONE 0\r
+#define MMU_INT_HIT  1\r
+#define MMU_INT_TOP  2\r
+#define MMU_INT_BOT  3\r
+\r
+extern void malifix_init(void);\r
+extern void malifix_exit(void);\r
+extern void malifix_set_mmu_int_process_state(int, int);\r
+extern int  malifix_get_mmu_int_process_state(int);\r
+extern int mali_meson_is_revb(void);\r
+\r
+#endif /* MALI_FIX_H */\r
diff --git a/mali/platform/meson_m400/mali_platform.c b/mali/platform/meson_m400/mali_platform.c
new file mode 100644 (file)
index 0000000..48e04c3
--- /dev/null
@@ -0,0 +1,354 @@
+/*
+ * This confidential and proprietary software may be used only as
+ * authorised by a licensing agreement from AMLOGIC, INC.
+ * (C) COPYRIGHT 2011 AMLOGIC, INC.
+ * ALL RIGHTS RESERVED
+ * The entire notice above must be reproduced on all authorised
+ * copies and copies may only be made to the extent permitted
+ * by a licensing agreement from AMLOGIC, INC.
+ */
+
+/**
+ * @file mali_platform.c
+ * Platform specific Mali driver functions for meson platform
+ */
+#include <linux/kernel.h>
+#include <linux/types.h>
+#include <linux/slab.h>
+#include <linux/dma-mapping.h>
+#include <linux/spinlock.h>
+#include <linux/spinlock_types.h>
+#include <linux/delay.h>
+#include <linux/clk.h>
+#include <mach/am_regs.h>
+#include <mach/clock.h>
+
+#include "mali_kernel_common.h"
+#include "mali_osk.h"
+#include "mali_platform.h"
+#include "mali_poweron_reg.h"
+#include "mali_fix.h"
+#include "mali_platform.h"
+
+static int last_power_mode = -1;
+static int mali_init_flag = 0;
+static const u32 poweron_data[] =
+{
+/* commands */
+/* 000 */ 0x00000040, 0x20400000, 0x00000300, 0x30040000,
+/* 010 */ 0x00000400, 0x400a0000, 0x0f000033, 0x10000042,
+/* 020 */ 0x00300c00, 0x10000040, 0x4c000001, 0x00000000,
+/* 030 */ 0x00000000, 0x60000000, 0x00000000, 0x00000000,
+/* 040 */ 0x00004000, 0x00002000, 0x00000210, 0x0000203f,
+/* 050 */ 0x00000220, 0x0000203f, 0x00000230, 0x0000203f,
+/* 060 */ 0x00000240, 0x0000203f, 0x00000250, 0x0000203f,
+/* 070 */ 0x00000260, 0x0000203f, 0x00000270, 0x0000203f,
+/* 080 */ 0x00000280, 0x0000203f, 0x00000290, 0x0000203f,
+/* 090 */ 0x000002a0, 0x0000203f, 0x000002b0, 0x0000203f,
+/* 0a0 */ 0x000002c0, 0x0000203f, 0x000002d0, 0x0000203f,
+/* 0b0 */ 0x000002e0, 0x0000203f, 0x000002f0, 0x0000203f,
+/* 0c0 */ 0x00002000, 0x00002000, 0x00002010, 0x0000203f,
+/* 0d0 */ 0x00002020, 0x0000203f, 0x00002030, 0x0000203f,
+/* 0e0 */ 0x00002040, 0x0000203f, 0x00002050, 0x0000203f,
+/* 0f0 */ 0x00002060, 0x0000203f, 0x00002070, 0x0000203f,
+/* 100 */ 0x00002080, 0x0000203f, 0x00002090, 0x0000203f,
+/* 110 */ 0x000020a0, 0x0000203f, 0x000020b0, 0x0000203f,
+/* 120 */ 0x000020c0, 0x0000203f, 0x000020d0, 0x0000203f,
+/* 130 */ 0x000020e0, 0x0000203f, 0x000020f0, 0x0000203f,
+/* 140 */ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+/* 150 */ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+/* 160 */ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+/* 170 */ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+/* 180 */ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+/* 190 */ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+/* 1a0 */ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+/* 1b0 */ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+/* 1c0 */ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+/* 1d0 */ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+/* 1e0 */ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+/* 1f0 */ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+/* 200 */ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+/* 210 */ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+/* 220 */ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+/* 230 */ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+/* 240 */ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+/* 250 */ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+/* 260 */ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+/* 270 */ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+/* 280 */ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+/* 290 */ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+/* 2a0 */ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+/* 2b0 */ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+/* 2c0 */ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+/* 2d0 */ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+/* 2e0 */ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+/* 2f0 */ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+/* const */
+/* 300 */ 0x3f2a6400, 0xbf317600, 0x3e8d8e00, 0x00000000,
+/* 310 */ 0x3f2f7000, 0x3f36e200, 0x3e10c500, 0x00000000,
+/* 320 */ 0xbe974e00, 0x3dc35300, 0x3f735800, 0x00000000,
+/* 330 */ 0x00000000, 0x00000000, 0x00000000, 0x3f800000,
+/* 340 */ 0x42b00000, 0x42dc0000, 0x3f800000, 0x3f800000,
+/* 350 */ 0x42b00000, 0x42dc0000, 0x00000000, 0x00000000,
+/* 360 */ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+/* 370 */ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+/* 380 */ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+/* 390 */ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+/* 3a0 */ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+/* 3b0 */ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+/* 3c0 */ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+/* 3d0 */ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+/* 3e0 */ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+/* 3f0 */ 0x00000000, 0x00000000, 0x00000000, 0x00000000,
+/* inst */
+/* 400 */ 0xad4ad6b5, 0x438002b5, 0x0007ffe0, 0x00001e00,
+/* 410 */ 0xad4ad694, 0x038002b5, 0x0087ffe0, 0x00005030,
+/* 420 */ 0xad4bda56, 0x038002b5, 0x0007ffe0, 0x00001c10,
+/* 430 */ 0xad4ad6b5, 0x038002b5, 0x4007fee0, 0x00001c00
+};
+static DEFINE_SPINLOCK(lock);
+static struct clk *mali_clk = NULL;
+
+#if MESON_CPU_TYPE <= MESON_CPU_TYPE_MESON6
+
+#define OFFSET_MMU_DTE          0
+#define OFFSET_MMU_PTE          4096
+#define OFFSET_MMU_VIRTUAL_ZERO 8192
+
+#define INT_MALI_GP_BITS     (1<<16)
+#define INT_MALI_PP_BITS     (1<<18)
+#define INT_MALI_PP_MMU_BITS (1<<19)
+#define INT_ALL              (0xffffffff)
+
+#define INT_MALI_PP_MMU_PAGE_FAULT (1<<0)
+
+#define MMU_FLAG_DTE_PRESENT            0x01
+#define MMU_FLAG_PTE_PAGE_PRESENT       0x01
+#define MMU_FLAG_PTE_RD_PERMISSION      0x02
+#define MMU_FLAG_PTE_WR_PERMISSION      0x04
+
+//static int mali_revb_flag = -1;
+extern int mali_revb_flag;
+int mali_meson_is_revb(void)
+{
+       printk("mail version=%d\n",mali_revb_flag);
+       if (mali_revb_flag == -1)
+               mali_revb_flag = 1;
+       else if (mali_revb_flag == 0)
+           panic("rev-a! you should neet earlier version of mali_driver.!\n");
+    
+    return mali_revb_flag;
+}
+
+static void mali_meson_poweron(int first_poweron)
+{
+       unsigned long flags;
+       u32 p, p_aligned;
+       dma_addr_t p_phy;
+       int i;
+       unsigned int_mask;
+
+       if(!first_poweron) {
+               if ((last_power_mode != -1) && (last_power_mode != MALI_POWER_MODE_DEEP_SLEEP)) {
+                        MALI_DEBUG_PRINT(3, ("Maybe your system not deep sleep now.......\n"));
+                       //printk("Maybe your system not deep sleep now.......\n");
+                       return;
+               }
+       }
+       
+       MALI_DEBUG_PRINT(2, ("mali_meson_poweron: Mali APB bus accessing\n"));
+       if (READ_MALI_REG(MALI_PP_PP_VERSION) != MALI_PP_PP_VERSION_MAGIC) {
+       MALI_DEBUG_PRINT(3, ("mali_meson_poweron: Mali APB bus access failed\n"));
+       //printk("mali_meson_poweron: Mali APB bus access failed.");
+       return;
+       }
+       MALI_DEBUG_PRINT(2, ("..........accessing done.\n"));
+       if (READ_MALI_REG(MALI_MMU_DTE_ADDR) != 0) {
+               MALI_DEBUG_PRINT(3, ("mali_meson_poweron: Mali is not really powered off\n"));
+               //printk("mali_meson_poweron: Mali is not really powered off.");
+               return;
+       }
+
+       p = (u32)kcalloc(4096 * 4, 1, GFP_KERNEL);
+       if (!p) {
+               printk("mali_meson_poweron: NOMEM in meson_poweron\n");
+               return;
+       }
+
+       p_aligned = __ALIGN_MASK(p, 4096);
+
+       /* DTE */
+       *(u32 *)(p_aligned) = (virt_to_phys((void *)p_aligned) + OFFSET_MMU_PTE) | MMU_FLAG_DTE_PRESENT;
+       /* PTE */
+       for (i=0; i<1024; i++) {
+               *(u32 *)(p_aligned + OFFSET_MMU_PTE + i*4) =
+                   (virt_to_phys((void *)p_aligned) + OFFSET_MMU_VIRTUAL_ZERO + 4096 * i) |
+                   MMU_FLAG_PTE_PAGE_PRESENT |
+                   MMU_FLAG_PTE_RD_PERMISSION;
+       }
+
+       /* command & data */
+       memcpy((void *)(p_aligned + OFFSET_MMU_VIRTUAL_ZERO), poweron_data, 4096);
+
+       p_phy = dma_map_single(NULL, (void *)p_aligned, 4096 * 3, DMA_TO_DEVICE);
+
+       /* Set up Mali GP MMU */
+       WRITE_MALI_REG(MALI_MMU_DTE_ADDR, p_phy);
+       WRITE_MALI_REG(MALI_MMU_CMD, 0);
+
+       if ((READ_MALI_REG(MALI_MMU_STATUS) & 1) != 1)
+               printk("mali_meson_poweron: MMU enabling failed.\n");
+
+       /* Set up Mali command registers */
+       WRITE_MALI_REG(MALI_APB_GP_VSCL_START, 0);
+       WRITE_MALI_REG(MALI_APB_GP_VSCL_END, 0x38);
+
+       spin_lock_irqsave(&lock, flags);
+
+       int_mask = READ_MALI_REG(MALI_APB_GP_INT_MASK);
+       WRITE_MALI_REG(MALI_APB_GP_INT_CLEAR, 0x707bff);
+       WRITE_MALI_REG(MALI_APB_GP_INT_MASK, 0);
+
+       /* Start GP */
+       WRITE_MALI_REG(MALI_APB_GP_CMD, 1);
+
+       for (i = 0; i<100; i++)
+               udelay(500);
+
+       /* check Mali GP interrupt */
+       if (READ_MALI_REG(MALI_APB_GP_INT_RAWSTAT) & 0x707bff)
+               printk("mali_meson_poweron: Interrupt received.\n");
+       else
+               printk("mali_meson_poweron: No interrupt received.\n");
+
+       /* force reset GP */
+       WRITE_MALI_REG(MALI_APB_GP_CMD, 1 << 5);
+
+       /* stop MMU paging and reset */
+       WRITE_MALI_REG(MALI_MMU_CMD, 1);
+       WRITE_MALI_REG(MALI_MMU_CMD, 6);
+
+       for (i = 0; i<100; i++)
+               udelay(500);
+
+       WRITE_MALI_REG(MALI_APB_GP_INT_CLEAR, 0x3ff);
+       WRITE_MALI_REG(MALI_MMU_INT_CLEAR, INT_ALL);
+       WRITE_MALI_REG(MALI_MMU_INT_MASK, 0);
+
+       WRITE_MALI_REG(MALI_APB_GP_INT_CLEAR, 0x707bff);
+       WRITE_MALI_REG(MALI_APB_GP_INT_MASK, int_mask);
+
+       spin_unlock_irqrestore(&lock, flags);
+
+       dma_unmap_single(NULL, p_phy, 4096 * 3, DMA_TO_DEVICE);
+
+       kfree((void *)p);
+
+       /* Mali revision detection */
+       if (last_power_mode == -1)
+               mali_revb_flag = mali_meson_is_revb();
+}
+#else
+static void mali_meson_poweron(int first_poweron) {
+       return;
+}
+#endif /*MESON_CPU_TYPE <= MESON_CPU_TYPE_MESON6 */
+
+_mali_osk_errcode_t mali_platform_init(void)
+{
+       mali_clk = clk_get_sys("mali", "pll_fixed");
+
+       if (mali_clk ) {
+               if (!mali_init_flag) {
+                       clk_set_rate(mali_clk, 333000000);
+                       mali_clk->enable(mali_clk);
+                       malifix_init();
+                       mali_meson_poweron(1);
+                       mali_init_flag = 1;
+               }
+               MALI_SUCCESS;
+       }
+
+#if MESON_CPU_TYPE >= MESON_CPU_TYPE_MESON6
+    MALI_PRINT_ERROR(("Failed to lookup mali clock"));
+       MALI_ERROR(_MALI_OSK_ERR_FAULT);
+#else
+       MALI_SUCCESS;
+#endif /* CONFIG_ARCH_MESON6 */
+}
+
+_mali_osk_errcode_t mali_platform_deinit(void)
+{
+       mali_init_flag =0;
+       printk("MALI:mali_platform_deinit\n");
+       malifix_exit();
+
+       MALI_SUCCESS;
+}
+
+_mali_osk_errcode_t mali_platform_power_mode_change(mali_power_mode power_mode)
+{
+       unsigned long flags;
+       unsigned cpu_divider, mali_divider;
+       unsigned ddr_pll_setting, sys_pll_setting;
+       unsigned cpu_freq, ddr_freq;
+       int mali_flag;
+    
+       MALI_DEBUG_PRINT(3, ( "mali_platform_power_mode_change power_mode=%d\n", power_mode));
+
+       switch (power_mode) {
+       case MALI_POWER_MODE_LIGHT_SLEEP:
+       case MALI_POWER_MODE_DEEP_SLEEP:
+               /* Turn off mali clock gating */
+               if (mali_clk) {
+                       mali_clk->disable(mali_clk);
+               } else {
+                       spin_lock_irqsave(&lock, flags);
+                       CLEAR_CBUS_REG_MASK(HHI_MALI_CLK_CNTL, 1 << 8);
+                       spin_unlock_irqrestore(&lock, flags);
+               }
+               break;
+
+        case MALI_POWER_MODE_ON:
+               /* Turn on MALI clock gating */
+               if (mali_clk) {
+                       mali_clk->enable(mali_clk);
+               }
+               else {
+                       spin_lock_irqsave(&lock, flags);
+                       CLEAR_CBUS_REG_MASK(HHI_MALI_CLK_CNTL, 1 << 8);
+
+                       sys_pll_setting = READ_MPEG_REG(HHI_SYS_PLL_CNTL);
+                       cpu_freq = ((sys_pll_setting&0x1ff)*24)>>(sys_pll_setting>>16); // assume 24M xtal
+                       cpu_divider = READ_MPEG_REG_BITS(HHI_SYS_CPU_CLK_CNTL, 2, 2);
+                       if (cpu_divider == 3)
+                               cpu_divider = 2; // now fix at /4
+                               cpu_freq >>= cpu_divider;
+
+                               ddr_pll_setting = READ_MPEG_REG(HHI_DDR_PLL_CNTL);
+                               ddr_freq = ((ddr_pll_setting&0x1ff)*24)>>((ddr_pll_setting>>16)&3);
+
+                               mali_divider = 1;
+                               while ((mali_divider * cpu_freq < ddr_freq) || (264 * mali_divider < ddr_freq)) // assume mali max 264M
+                                       mali_divider++;
+                               mali_flag = ((mali_divider-1) != (READ_MPEG_REG(HHI_MALI_CLK_CNTL)&0x7f));
+                               if (mali_flag){
+                                       WRITE_CBUS_REG(HHI_MALI_CLK_CNTL,
+                                                       (3 << 9)    |                   // select ddr pll as clock source
+                                                       ((mali_divider-1) << 0)); // ddr clk / divider
+                                       READ_CBUS_REG(HHI_MALI_CLK_CNTL); // delay
+                               }
+                               SET_CBUS_REG_MASK(HHI_MALI_CLK_CNTL, 1 << 8);
+                               spin_unlock_irqrestore(&lock, flags);
+
+                               if (mali_flag)
+                                       MALI_DEBUG_PRINT(3, ("(CTS_MALI_CLK) = %d/%d = %dMHz --- when mali gate on\n", ddr_freq, mali_divider, ddr_freq/mali_divider));
+
+               }
+               mali_meson_poweron(0);
+               break;
+       }
+       last_power_mode = power_mode;
+       MALI_SUCCESS;
+}
+
diff --git a/mali/platform/meson_m400/mali_platform.h b/mali/platform/meson_m400/mali_platform.h
new file mode 100644 (file)
index 0000000..c902cf5
--- /dev/null
@@ -0,0 +1,73 @@
+/*
+ * 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.
+ */
+
+/**
+ * @file mali_platform.h
+ * Platform specific Mali driver functions
+ */
+
+#ifndef __MALI_PLATFORM_H__
+#define __MALI_PLATFORM_H__
+
+#include "mali_osk.h"
+
+/** @brief description of power change reasons
+ */
+typedef enum mali_power_mode_tag
+{
+       MALI_POWER_MODE_ON,           /**< Power Mali on */
+       MALI_POWER_MODE_LIGHT_SLEEP,  /**< Mali has been idle for a short time, or runtime PM suspend */
+       MALI_POWER_MODE_DEEP_SLEEP,   /**< Mali has been idle for a long time, or OS suspend */
+} mali_power_mode;
+
+/** @brief Platform specific setup and initialisation of MALI
+ *
+ * This is called from the entrypoint of the driver to initialize the platform
+ *
+ * @return _MALI_OSK_ERR_OK on success otherwise, a suitable _mali_osk_errcode_t error.
+ */
+_mali_osk_errcode_t mali_platform_init(void);
+
+/** @brief Platform specific deinitialisation of MALI
+ *
+ * This is called on the exit of the driver to terminate the platform
+ *
+ * @return _MALI_OSK_ERR_OK on success otherwise, a suitable _mali_osk_errcode_t error.
+ */
+_mali_osk_errcode_t mali_platform_deinit(void);
+
+/** @brief Platform specific powerdown sequence of MALI
+ *
+ * Notification from the Mali device driver stating the new desired power mode.
+ * MALI_POWER_MODE_ON must be obeyed, while the other modes are optional.
+ * @param power_mode defines the power modes
+ * @return _MALI_OSK_ERR_OK on success otherwise, a suitable _mali_osk_errcode_t error.
+ */
+_mali_osk_errcode_t mali_platform_power_mode_change(mali_power_mode power_mode);
+
+
+/** @brief Platform specific handling of GPU utilization data
+ *
+ * When GPU utilization data is enabled, this function will be
+ * periodically called.
+ *
+ * @param utilization The workload utilization of the Mali GPU. 0 = no utilization, 256 = full utilization.
+ */
+void mali_gpu_utilization_handler(u32 utilization);
+
+/** @brief Setting the power domain of MALI
+ *
+ * This function sets the power domain of MALI if Linux run time power management is enabled
+ *
+ * @param dev Reference to struct platform_device (defined in linux) used by MALI GPU
+ */
+void set_mali_parent_power_domain(void* dev);
+
+#endif
diff --git a/mali/platform/meson_m400/mali_poweron_reg.h b/mali/platform/meson_m400/mali_poweron_reg.h
new file mode 100644 (file)
index 0000000..7d3d34d
--- /dev/null
@@ -0,0 +1,68 @@
+/*
+ * This confidential and proprietary software may be used only as
+ * authorised by a licensing agreement from AMLOGIC, INC.
+ * (C) COPYRIGHT 2011 AMLOGIC, INC.
+ * ALL RIGHTS RESERVED
+ * The entire notice above must be reproduced on all authorised
+ * copies and copies may only be made to the extent permitted
+ * by a licensing agreement from AMLOGIC, INC.
+ */
+
+#ifndef MALI_POWERON_REG_H
+#define MALI_POWERON_REG_H
+
+#define MALI_PP_PP_VERSION_MAGIC      0xCD070100UL
+
+#if defined(IO_APB2_BUS_PHY_BASE)
+#define WRITE_MALI_REG(reg, val) \
+    __raw_writel(val, reg - IO_APB2_BUS_PHY_BASE + IO_APB2_BUS_BASE)
+#define READ_MALI_REG(reg) \
+    __raw_readl(reg - IO_APB2_BUS_PHY_BASE + IO_APB2_BUS_BASE)
+#else
+#define WRITE_MALI_REG(reg, val) \
+    __raw_writel(val, reg - IO_APB_BUS_PHY_BASE + IO_APB_BUS_BASE)
+#define READ_MALI_REG(reg) \
+    __raw_readl(reg - IO_APB_BUS_PHY_BASE + IO_APB_BUS_BASE)
+#endif
+
+#define MALI_APB_GP_VSCL_START        0xd0060000
+#define MALI_APB_GP_VSCL_END          0xd0060004
+#define MALI_APB_GP_CMD               0xd0060020
+#define MALI_APB_GP_INT_RAWSTAT       0xd0060024
+#define MALI_APB_GP_INT_CLEAR         0xd0060028
+#define MALI_APB_GP_INT_MASK          0xd006002c
+#define MALI_APB_GP_INT_STAT          0xd0060030
+
+#define MALI_MMU_DTE_ADDR             0xd0063000
+#define MALI_MMU_STATUS               0xd0063004
+#define MALI_MMU_CMD                  0xd0063008
+#define MALI_MMU_RAW_STATUS           0xd0064014
+#define MALI_MMU_INT_CLEAR            0xd0064018
+#define MALI_MMU_INT_MASK             0xd006401c
+#define MALI_MMU_INT_STATUS           0xd0064020
+
+#define MALI_PP_MMU_DTE_ADDR          0xd0064000
+#define MALI_PP_MMU_STATUS            0xd0064004
+#define MALI_PP_MMU_CMD               0xd0064008
+#define MALI_PP_MMU_RAW_STATUS        0xd0064014
+#define MALI_PP_MMU_INT_CLEAR         0xd0064018
+#define MALI_PP_MMU_INT_MASK          0xd006401c
+#define MALI_PP_MMU_INT_STATUS        0xd0064020
+
+#define MALI_APB_PP_REND_LIST_ADDR    0xd0068000
+#define MALI_APB_PP_REND_RSW_BASE     0xd0068004
+#define MALI_APB_PP_REND_VERTEX_BASE  0xd0068008
+#define MALI_APB_PPSUBPIXEL_SPECIFIER 0xd0068048
+#define MALI_APB_WB0_SOURCE_SELECT    0xd0068100
+#define MALI_APB_WB0_TARGET_ADDR      0xd0068104
+#define MALI_APB_WB0_TARGET_SCANLINE_LENGTH 0xd0068114
+
+#define MALI_PP_PP_VERSION            0xd0069000
+#define MALI_PP_STATUS                0xd0069008
+#define MALI_PP_CTRL_MGMT             0xd006900C
+#define MALI_PP_INT_RAWSTAT           0xd0069020
+#define MALI_PP_INT_CLEAR             0xd0069024
+#define MALI_PP_INT_MASK              0xd0069028
+#define MALI_PP_INT_STAT              0xd006902C
+
+#endif /* MALI_POWERON_REG_H */
diff --git a/mali/platform/meson_m400/platform_mx.c b/mali/platform/meson_m400/platform_mx.c
new file mode 100644 (file)
index 0000000..bc4bdbd
--- /dev/null
@@ -0,0 +1,197 @@
+/*
+ * platform.c
+ * 
+ * clock source setting and resource config
+ *
+ *  Created on: Dec 4, 2013
+ *      Author: amlogic
+ */
+
+#include <linux/platform_device.h>
+#include <linux/version.h>
+#include <linux/pm.h>
+#include <linux/of.h>
+#include <linux/module.h>
+#include <linux/ioport.h>
+#include <linux/slab.h>
+#include <mach/register.h>
+#include <mach/irqs.h>
+#include <mach/io.h>
+#include <asm/io.h>
+#include <linux/mali/mali_utgard.h>
+
+#include <common/mali_kernel_common.h>
+#include <common/mali_osk_profiling.h>
+#include <common/mali_pmu.h>
+
+#include "meson_main.h"
+#include "mali_fix.h"
+#include "mali_platform.h"
+
+/**
+ *    For Meson 6tvd. 
+ * 
+ */
+
+#if MESON_CPU_TYPE <= MESON_CPU_TYPE_MESON6TV
+
+#if MESON_CPU_TYPE == MESON_CPU_TYPE_MESON6TV
+
+#define INT_MALI_GP      (48+32)
+#define INT_MALI_GP_MMU  (49+32)
+#define INT_MALI_PP      (50+32)
+#define INT_MALI_PP2     (58+32)
+#define INT_MALI_PP3     (60+32)
+#define INT_MALI_PP4     (62+32)
+#define INT_MALI_PP_MMU  (51+32)
+#define INT_MALI_PP2_MMU (59+32)
+#define INT_MALI_PP3_MMU (61+32)
+#define INT_MALI_PP4_MMU (63+32)
+
+#ifndef CONFIG_MALI400_4_PP
+static struct resource meson_mali_resources[] =
+{
+       MALI_GPU_RESOURCES_MALI400_MP2(0xd0060000, 
+                       INT_MALI_GP, INT_MALI_GP_MMU, 
+                       INT_MALI_PP, INT_MALI_PP_MMU, 
+                       INT_MALI_PP2, INT_MALI_PP2_MMU)
+};
+#else
+static struct resource meson_mali_resources[] =
+{
+       MALI_GPU_RESOURCES_MALI400_MP4(0xd0060000, 
+                       INT_MALI_GP, INT_MALI_GP_MMU, 
+                       INT_MALI_PP, INT_MALI_PP_MMU, 
+                       INT_MALI_PP2, INT_MALI_PP2_MMU,
+                       INT_MALI_PP3, INT_MALI_PP3_MMU,
+                       INT_MALI_PP4, INT_MALI_PP4_MMU
+                       )
+};
+#endif
+
+#elif MESON_CPU_TYPE == MESON_CPU_TYPE_MESON6
+
+int static_pp_mmu_cnt;
+
+#define INT_MALI_GP      (48+32)
+#define INT_MALI_GP_MMU  (49+32)
+#define INT_MALI_PP      (50+32)
+#define INT_MALI_PP_MMU  (51+32)
+#define INT_MALI_PP2_MMU ( 6+32)
+
+static struct resource meson_mali_resources[] =
+{
+       MALI_GPU_RESOURCES_MALI400_MP2(0xd0060000, 
+                       INT_MALI_GP, INT_MALI_GP_MMU, 
+                       INT_MALI_PP, INT_MALI_PP2_MMU, 
+                       INT_MALI_PP_MMU, INT_MALI_PP2_MMU)
+};
+
+#else  /* MESON_CPU_TYPE == MESON_CPU_TYPE_MESON3 */
+
+#define INT_MALI_GP    48
+#define INT_MALI_GP_MMU 49
+#define INT_MALI_PP    50
+#define INT_MALI_PP_MMU 51
+
+static struct resource meson_mali_resources[] =
+{
+       MALI_GPU_RESOURCES_MALI400_MP1(0xd0060000, 
+                       INT_MALI_GP, INT_MALI_GP_MMU, INT_MALI_PP, INT_MALI_PP_MMU)
+};
+#endif /* MESON_CPU_TYPE == MESON_CPU_TYPE_MESON6TV */
+
+void mali_gpu_utilization_callback(struct mali_gpu_utilization_data *data)
+{
+
+}
+
+int mali_meson_init_start(struct platform_device* ptr_plt_dev)
+{
+       /* for mali platform data. */
+       pdev->utilization_interval = 1000,
+       pdev->utilization_callback = mali_gpu_utilization_callback,
+       
+       /* for resource data. */        
+       ptr_plt_dev->num_resources = ARRAY_SIZE(mali_gpu_resources);
+       ptr_plt_dev->resource = mali_gpu_resources;
+       return 0;
+}
+
+int mali_meson_init_finish(struct platform_device* ptr_plt_dev)
+{
+       mali_platform_init();
+       return 0;
+}
+
+int mali_meson_uninit(struct platform_device* ptr_plt_dev)
+{
+       mali_platform_deinit();
+       return 0;
+}
+
+int mali_light_suspend(struct device *device)
+{
+       int ret = 0;
+
+       if (NULL != device->driver &&
+           NULL != device->driver->pm &&
+           NULL != device->driver->pm->runtime_suspend)
+       {
+               /* Need to notify Mali driver about this event */
+               ret = device->driver->pm->runtime_suspend(device);
+       }
+
+       mali_platform_power_mode_change(MALI_POWER_MODE_LIGHT_SLEEP);
+       return ret;
+}
+
+int mali_light_resume(struct device *device)
+{
+       int ret = 0;
+
+       mali_platform_power_mode_change(MALI_POWER_MODE_ON);
+
+       if (NULL != device->driver &&
+           NULL != device->driver->pm &&
+           NULL != device->driver->pm->runtime_resume)
+       {
+               /* Need to notify Mali driver about this event */
+               ret = device->driver->pm->runtime_resume(device);
+       }
+       return ret;     
+}
+
+int mali_deep_suspend(struct device *device)
+{
+       int ret = 0;
+       
+       if (NULL != device->driver &&
+           NULL != device->driver->pm &&
+           NULL != device->driver->pm->suspend)
+       {
+               /* Need to notify Mali driver about this event */
+               ret = device->driver->pm->suspend(device);
+       }
+
+       mali_platform_power_mode_change(MALI_POWER_MODE_DEEP_SLEEP);
+       return ret;
+}
+
+int mali_deep_resume(struct device *device)
+{
+       int ret = 0;
+       
+       mali_platform_power_mode_change(MALI_POWER_MODE_ON);
+
+       if (NULL != device->driver &&
+           NULL != device->driver->pm &&
+           NULL != device->driver->pm->resume)
+       {
+               /* Need to notify Mali driver about this event */
+               ret = device->driver->pm->resume(device);
+       }
+       return ret;
+
+}
+#endif /* MESON_CPU_TYPE <= MESON_CPU_TYPE_MESON6 */
diff --git a/mali/platform/meson_m450/platform_m6tvd.c b/mali/platform/meson_m450/platform_m6tvd.c
new file mode 100644 (file)
index 0000000..04a5832
--- /dev/null
@@ -0,0 +1,186 @@
+/*
+ * platform.c
+ * 
+ * clock source setting and resource config
+ *
+ *  Created on: Dec 4, 2013
+ *      Author: amlogic
+ */
+
+#include <linux/platform_device.h>
+#include <linux/version.h>
+#include <linux/pm.h>
+#include <linux/of.h>
+#include <linux/module.h>            /* kernel module definitions */
+#include <linux/ioport.h>            /* request_mem_region */
+#include <linux/slab.h>
+#include <mach/register.h>
+#include <mach/irqs.h>
+#include <mach/io.h>
+#include <asm/io.h>
+#include <linux/mali/mali_utgard.h>
+
+#include <common/mali_kernel_common.h>
+#include <common/mali_osk_profiling.h>
+#include <common/mali_pmu.h>
+
+#include "meson_main.h"
+
+/**
+ *    For Meson 6tvd. 
+ * 
+ */
+
+#ifdef MESON_CPU_TYPE_MESON6TVD
+#if MESON_CPU_TYPE == MESON_CPU_TYPE_MESON6TVD
+
+u32 mali_clock_max_index = 3;
+u32 mali_default_clock_idx = 3;
+u32 mali_up_clock_idx = 3;
+
+/* fclk is 2Ghz. */
+#define FCLK_DEV5 (7 << 9)             /*      400   Mhz  */   
+#define FCLK_DEV3 (6 << 9)             /*      666   Mhz  */
+#define FCLK_DEV2 (5 << 9)             /*      1000  Mhz  */
+#define FCLK_DEV7 (4 << 9)             /*      285   Mhz  */
+
+u32 mali_dvfs_clk[] = {
+       FCLK_DEV7 | 9,     /* 100 Mhz */
+       FCLK_DEV2 | 4,     /* 200 Mhz */
+       FCLK_DEV3 | 1,     /* 333 Mhz */
+       FCLK_DEV5 | 0,     /* 400 Mhz */
+};
+
+u32 mali_dvfs_clk_sample[] = {
+       182,     /* 182.1 Mhz */
+       319,     /* 318.7 Mhz */
+       425,     /* 425 Mhz */
+       510,     /* 510 Mhz */
+       637,     /* 637.5 Mhz */
+};
+
+#define MALI_PP_NUMBER 2
+#define MALI_USER_PP0  AM_IRQ4(31)
+
+static struct resource mali_gpu_resources[] =
+{
+MALI_GPU_RESOURCES_MALI450_MP2_PMU(0xC9140000, INT_MALI_GP, INT_MALI_GP_MMU, 
+                               MALI_USER_PP0, INT_MALI_PP_MMU, 
+                               INT_MALI_PP1, INT_MALI_PP_MMU1, 
+                               INT_MALI_PP)
+};
+
+int mali_meson_init_start(struct platform_device* ptr_plt_dev)
+{      
+       ptr_plt_dev->num_resources = ARRAY_SIZE(mali_gpu_resources);
+       ptr_plt_dev->resource = mali_gpu_resources;
+       return mali_clock_init(mali_default_clock_idx);
+}
+
+int mali_meson_init_finish(struct platform_device* ptr_plt_dev)
+{
+       return 0;
+}
+
+int mali_meson_uninit(struct platform_device* ptr_plt_dev)
+{
+       return 0;
+}
+
+static int mali_cri_pmu_on_off(u64 param)
+{
+       struct mali_pmu_core *pmu;
+
+       MALI_DEBUG_PRINT(4, ("mali_os_suspend() called\n"));
+       pmu = mali_pmu_get_global_pmu_core();
+       if (param == 0)
+               mali_pmu_power_down_all(pmu);
+       else 
+               mali_pmu_power_up_all(pmu);
+       return 0;
+}
+
+int mali_light_suspend(struct device *device)
+{
+       int ret = 0;
+#ifdef CONFIG_MALI400_PROFILING
+       _mali_osk_profiling_add_event(MALI_PROFILING_EVENT_TYPE_SINGLE |
+                                       MALI_PROFILING_EVENT_CHANNEL_GPU |
+                                       MALI_PROFILING_EVENT_REASON_SINGLE_GPU_FREQ_VOLT_CHANGE,
+                                       0, 0,   0,      0,      0);
+#endif
+       if (NULL != device->driver &&
+           NULL != device->driver->pm &&
+           NULL != device->driver->pm->runtime_suspend)
+       {
+               /* Need to notify Mali driver about this event */
+               ret = device->driver->pm->runtime_suspend(device);
+       }
+
+       /* clock scaling. Kasin..*/
+       mali_clock_critical(mali_cri_pmu_on_off, 0);
+       disable_clock();
+       return ret;
+}
+
+int mali_light_resume(struct device *device)
+{
+       int ret = 0;
+       /* clock scaling. Kasin..*/
+       enable_clock();
+
+       mali_clock_critical(mali_cri_pmu_on_off, 1);
+#ifdef CONFIG_MALI400_PROFILING
+       _mali_osk_profiling_add_event(MALI_PROFILING_EVENT_TYPE_SINGLE |
+                                       MALI_PROFILING_EVENT_CHANNEL_GPU |
+                                       MALI_PROFILING_EVENT_REASON_SINGLE_GPU_FREQ_VOLT_CHANGE,
+                                       get_current_frequency(), 0,     0,      0,      0);
+#endif
+
+       if (NULL != device->driver &&
+           NULL != device->driver->pm &&
+           NULL != device->driver->pm->runtime_resume)
+       {
+               /* Need to notify Mali driver about this event */
+               ret = device->driver->pm->runtime_resume(device);
+       }
+       return ret;     
+}
+
+int mali_deep_suspend(struct device *device)
+{
+       int ret = 0;
+       //enable_clock();
+       //flush_scaling_job();
+       if (NULL != device->driver &&
+           NULL != device->driver->pm &&
+           NULL != device->driver->pm->suspend)
+       {
+               /* Need to notify Mali driver about this event */
+               ret = device->driver->pm->suspend(device);
+       }
+
+       /* clock scaling off. Kasin... */
+       mali_clock_critical(mali_cri_pmu_on_off, 0);
+       disable_clock();
+       return ret;
+}
+
+int mali_deep_resume(struct device *device)
+{
+       int ret = 0;
+       /* clock scaling up. Kasin.. */
+       enable_clock();
+       mali_clock_critical(mali_cri_pmu_on_off, 1);
+       if (NULL != device->driver &&
+           NULL != device->driver->pm &&
+           NULL != device->driver->pm->resume)
+       {
+               /* Need to notify Mali driver about this event */
+               ret = device->driver->pm->resume(device);
+       }
+       return ret;
+
+}
+#endif /* MESON_CPU_TYPE == MESON_CPU_TYPE_MESON8 */
+#endif /* define MESON_CPU_TYPE_MESON6TVD */
diff --git a/mali/platform/meson_m450/platform_m8.c b/mali/platform/meson_m450/platform_m8.c
new file mode 100644 (file)
index 0000000..5bae445
--- /dev/null
@@ -0,0 +1,198 @@
+/*
+ * platform.c
+ * 
+ * clock source setting and resource config
+ *
+ *  Created on: Dec 4, 2013
+ *      Author: amlogic
+ */
+
+#include <linux/platform_device.h>
+#include <linux/version.h>
+#include <linux/pm.h>
+#include <linux/of.h>
+#include <linux/module.h>            /* kernel module definitions */
+#include <linux/ioport.h>            /* request_mem_region */
+#include <linux/slab.h>
+#include <mach/register.h>
+#include <mach/irqs.h>
+#include <mach/io.h>
+#include <asm/io.h>
+#include <linux/mali/mali_utgard.h>
+
+#include <common/mali_kernel_common.h>
+#include <common/mali_osk_profiling.h>
+#include <common/mali_pmu.h>
+
+#include "meson_main.h"
+
+/**
+ *    For Meson 8. 
+ * 
+ */
+#if MESON_CPU_TYPE == MESON_CPU_TYPE_MESON8
+u32 mali_clock_max_index = 4;
+u32 mali_default_clock_idx = 0;
+u32 mali_up_clock_idx = 3;
+
+/* fclk is 2550Mhz. */
+#define FCLK_DEV3 (6 << 9)             /*      850   Mhz  */
+#define FCLK_DEV4 (5 << 9)             /*      637.5 Mhz  */
+#define FCLK_DEV5 (7 << 9)             /*      510   Mhz  */
+#define FCLK_DEV7 (4 << 9)             /*      364.3 Mhz  */
+
+u32 mali_dvfs_clk[] = {
+       FCLK_DEV7 | 1,     /* 182.1 Mhz */
+       FCLK_DEV4 | 1,     /* 318.7 Mhz */
+       FCLK_DEV3 | 1,     /* 425 Mhz */
+       FCLK_DEV5 | 0,     /* 510 Mhz */
+       FCLK_DEV4 | 0,     /* 637.5 Mhz */
+};
+
+u32 mali_dvfs_clk_sample[] = {
+       182,     /* 182.1 Mhz */
+       319,     /* 318.7 Mhz */
+       425,     /* 425 Mhz */
+       510,     /* 510 Mhz */
+       637,     /* 637.5 Mhz */
+};
+
+#define MALI_PP_NUMBER 6
+
+static struct resource mali_gpu_resources[] =
+{
+       MALI_GPU_RESOURCES_MALI450_MP6_PMU(IO_MALI_APB_PHY_BASE, INT_MALI_GP, INT_MALI_GP_MMU, 
+                               INT_MALI_PP0, INT_MALI_PP0_MMU, 
+                               INT_MALI_PP1, INT_MALI_PP1_MMU, 
+                               INT_MALI_PP2, INT_MALI_PP2_MMU, 
+                               INT_MALI_PP4, INT_MALI_PP4_MMU, 
+                               INT_MALI_PP5, INT_MALI_PP5_MMU,
+                               INT_MALI_PP6, INT_MALI_PP6_MMU, 
+                               INT_MALI_PP)
+};
+
+void mali_gpu_utilization_callback(struct mali_gpu_utilization_data *data);
+int mali_meson_init_start(struct platform_device* ptr_plt_dev)
+{      
+       
+       struct mali_gpu_device_data* pdev = ptr_plt_dev->dev.platform_data;
+       
+       /* for mali platform data. */
+       pdev->utilization_interval = 500,
+       pdev->utilization_callback = mali_gpu_utilization_callback,
+       
+       /* for resource data. */
+       ptr_plt_dev->num_resources = ARRAY_SIZE(mali_gpu_resources);
+       ptr_plt_dev->resource = mali_gpu_resources;
+       return mali_clock_init(mali_default_clock_idx);
+}
+
+int mali_meson_init_finish(struct platform_device* ptr_plt_dev)
+{
+       mali_core_scaling_init(MALI_PP_NUMBER, mali_default_clock_idx);
+       return 0;
+}
+
+int mali_meson_uninit(struct platform_device* ptr_plt_dev)
+{
+       return 0;
+}
+
+static int mali_cri_pmu_on_off(u64 param)
+{
+       struct mali_pmu_core *pmu;
+
+       MALI_DEBUG_PRINT(4, ("mali_os_suspend() called\n"));
+       pmu = mali_pmu_get_global_pmu_core();
+       if (param == 0)
+               mali_pmu_power_down_all(pmu);
+       else 
+               mali_pmu_power_up_all(pmu);
+       return 0;
+}
+
+int mali_light_suspend(struct device *device)
+{
+       int ret = 0;
+#ifdef CONFIG_MALI400_PROFILING
+       _mali_osk_profiling_add_event(MALI_PROFILING_EVENT_TYPE_SINGLE |
+                                       MALI_PROFILING_EVENT_CHANNEL_GPU |
+                                       MALI_PROFILING_EVENT_REASON_SINGLE_GPU_FREQ_VOLT_CHANGE,
+                                       0, 0,   0,      0,      0);
+#endif
+       if (NULL != device->driver &&
+           NULL != device->driver->pm &&
+           NULL != device->driver->pm->runtime_suspend)
+       {
+               /* Need to notify Mali driver about this event */
+               ret = device->driver->pm->runtime_suspend(device);
+       }
+
+       /* clock scaling. Kasin..*/
+       mali_clock_critical(mali_cri_pmu_on_off, 0);
+       //disable_clock();
+       return ret;
+}
+
+int mali_light_resume(struct device *device)
+{
+       int ret = 0;
+       /* clock scaling. Kasin..*/
+       //enable_clock();
+
+       mali_clock_critical(mali_cri_pmu_on_off, 1);
+#ifdef CONFIG_MALI400_PROFILING
+       _mali_osk_profiling_add_event(MALI_PROFILING_EVENT_TYPE_SINGLE |
+                                       MALI_PROFILING_EVENT_CHANNEL_GPU |
+                                       MALI_PROFILING_EVENT_REASON_SINGLE_GPU_FREQ_VOLT_CHANGE,
+                                       get_current_frequency(), 0,     0,      0,      0);
+#endif
+
+       if (NULL != device->driver &&
+           NULL != device->driver->pm &&
+           NULL != device->driver->pm->runtime_resume)
+       {
+               /* Need to notify Mali driver about this event */
+               ret = device->driver->pm->runtime_resume(device);
+       }
+       return ret;     
+}
+
+int mali_deep_suspend(struct device *device)
+{
+       int ret = 0;
+       enable_clock();
+       flush_scaling_job();
+       if (NULL != device->driver &&
+           NULL != device->driver->pm &&
+           NULL != device->driver->pm->suspend)
+       {
+               /* Need to notify Mali driver about this event */
+               ret = device->driver->pm->suspend(device);
+       }
+
+       /* clock scaling off. Kasin... */
+       mali_clock_critical(mali_cri_pmu_on_off, 0);
+       disable_clock();
+       return ret;
+}
+
+int mali_deep_resume(struct device *device)
+{
+       int ret = 0;
+       /* clock scaling up. Kasin.. */
+       enable_clock();
+       mali_clock_critical(mali_cri_pmu_on_off, 1);
+       if (NULL != device->driver &&
+           NULL != device->driver->pm &&
+           NULL != device->driver->pm->resume)
+       {
+               /* Need to notify Mali driver about this event */
+               ret = device->driver->pm->resume(device);
+       }
+       return ret;
+
+}
+#endif /* MESON_CPU_TYPE == MESON_CPU_TYPE_MESON8 */
+
diff --git a/mali/platform/meson_m450/scaling_m8.c b/mali/platform/meson_m450/scaling_m8.c
new file mode 100755 (executable)
index 0000000..4f8e368
--- /dev/null
@@ -0,0 +1,410 @@
+/*
+ * Copyright (C) 2013 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.
+ */
+
+/**
+ * @file arm_core_scaling.c
+ * Example core scaling policy.
+ */
+#include <linux/workqueue.h>
+#include <linux/mali/mali_utgard.h>
+#include <mach/smp.h>
+#include "mali_kernel_common.h"
+#include "common/mali_osk_profiling.h"
+#include "common/mali_kernel_utilization.h"
+#include "common/mali_pp_scheduler.h"
+
+#include "meson_main.h"
+
+#define MALI_TABLE_SIZE 6
+
+static int num_cores_total;
+static int num_cores_enabled;
+static int currentStep;
+static int lastStep;
+static struct work_struct wq_work;
+static u32 mali_turbo_mode = 0;
+
+unsigned int min_mali_clock = 0;
+unsigned int max_mali_clock = 3;
+unsigned int min_pp_num = 1;
+
+/* Configure dvfs mode */
+enum mali_scale_mode_t {
+       MALI_PP_SCALING,
+       MALI_PP_FS_SCALING,
+       MALI_SCALING_DISABLE,
+       MALI_TURBO_MODE,
+       MALI_SCALING_MODE_MAX
+};
+
+static int reseted_for_turbo = 0;
+
+static int  scaling_mode = MALI_PP_FS_SCALING;
+module_param(scaling_mode, int, 0664);
+MODULE_PARM_DESC(scaling_mode, "0 disable, 1 pp, 2 fs, 4 double");
+
+enum mali_pp_scale_threshold_t {
+       MALI_PP_THRESHOLD_20,
+       MALI_PP_THRESHOLD_30,
+       MALI_PP_THRESHOLD_40,
+       MALI_PP_THRESHOLD_50,
+       MALI_PP_THRESHOLD_60,
+       MALI_PP_THRESHOLD_80,
+       MALI_PP_THRESHOLD_90,
+       MALI_PP_THRESHOLD_MAX,
+};
+static u32 mali_pp_scale_threshold [] = {
+       51,  /* 20% */
+       77,  /* 30% */
+       102, /* 40% */
+       128, /* 50% */
+       154, /* 60% */
+       205, /* 80% */
+       230, /* 90% */
+};
+
+
+static u32 mali_dvfs_table_size = MALI_TABLE_SIZE;
+
+static struct mali_dvfs_threshold_table mali_dvfs_threshold[MALI_TABLE_SIZE]={
+               { 0, 0, 2, 0  , 200}, /* for 182.1  */
+               { 1, 1, 2, 152, 205}, /* for 318.7  */
+               { 2, 2, 2, 180, 212}, /* for 425.0  */
+               { 3, 3, 2, 205, 236}, /* for 510.0  */
+               { 4, 4, 2, 230, 256},  /* for 637.5  */
+               { 0, 0, 2,   0,   0}
+};
+
+u32 set_mali_dvfs_tbl_size(u32 size)
+{
+       if (size <= 0 && size > MALI_TABLE_SIZE) return -1;
+       mali_dvfs_table_size = size;
+       return 0;
+}
+
+u32 get_max_dvfs_tbl_size(void)
+{
+       return MALI_TABLE_SIZE;
+}
+
+uint32_t* get_mali_dvfs_tbl_addr(void)
+{
+       return (uint32_t*)mali_dvfs_threshold;
+}
+
+static void do_scaling(struct work_struct *work)
+{
+       int err = mali_perf_set_num_pp_cores(num_cores_enabled);
+       MALI_DEBUG_ASSERT(0 == err);
+       MALI_IGNORE(err);
+       if (mali_dvfs_threshold[currentStep].freq_index != mali_dvfs_threshold[lastStep].freq_index) {
+               mali_dev_pause();
+               mali_clock_set(mali_dvfs_threshold[currentStep].freq_index);
+               mali_dev_resume();
+               lastStep = currentStep;
+       }
+#ifdef CONFIG_MALI400_PROFILING
+       _mali_osk_profiling_add_event(MALI_PROFILING_EVENT_TYPE_SINGLE |
+                                       MALI_PROFILING_EVENT_CHANNEL_GPU |
+                                       MALI_PROFILING_EVENT_REASON_SINGLE_GPU_FREQ_VOLT_CHANGE,
+                                       get_mali_freq(),
+                                       0,      0,      0,      0);
+#endif
+}
+
+void flush_scaling_job(void)
+{
+       cancel_work_sync(&wq_work);
+}
+
+static u32 enable_one_core(void)
+{
+       u32 ret = 0;
+       if (num_cores_enabled < num_cores_total)
+       {
+               ++num_cores_enabled;
+               ret = 1;
+               MALI_DEBUG_PRINT(3, ("Core scaling: Enabling one more core\n"));
+       }
+
+       MALI_DEBUG_ASSERT(              1 <= num_cores_enabled);
+       MALI_DEBUG_ASSERT(num_cores_total >= num_cores_enabled);
+       return ret;
+}
+
+static u32 disable_one_core(void)
+{
+       u32 ret = 0;
+       if (min_pp_num < num_cores_enabled)
+       {
+               --num_cores_enabled;
+               ret = 1;
+               MALI_DEBUG_PRINT(3, ("Core scaling: Disabling one core\n"));
+       }
+
+       MALI_DEBUG_ASSERT(min_pp_num <= num_cores_enabled);
+       MALI_DEBUG_ASSERT(num_cores_total >= num_cores_enabled);
+       return ret;
+}
+
+static u32 enable_max_num_cores(void)
+{
+       u32 ret = 0;
+       if (num_cores_enabled < num_cores_total)
+       {
+               num_cores_enabled = num_cores_total;
+               ret = 1;
+               MALI_DEBUG_PRINT(3, ("Core scaling: Enabling maximum number of cores\n"));
+       }
+
+       MALI_DEBUG_ASSERT(num_cores_total == num_cores_enabled);
+       return ret;
+}
+
+void mali_core_scaling_init(int pp, int clock_idx)
+{
+       INIT_WORK(&wq_work, do_scaling);
+
+       num_cores_total   = pp;
+       num_cores_enabled = num_cores_total;
+       
+       currentStep = clock_idx;
+       lastStep = currentStep;
+       /* NOTE: Mali is not fully initialized at this point. */
+}
+
+void mali_core_scaling_term(void)
+{
+       flush_scheduled_work();
+}
+
+void mali_pp_scaling_update(struct mali_gpu_utilization_data *data)
+{
+       int ret = 0;
+       currentStep = mali_up_clock_idx;
+
+       MALI_DEBUG_PRINT(3, ("Utilization: (%3d, %3d, %3d), cores enabled: %d/%d\n", data->utilization_gpu, data->utilization_gp, data->utilization_pp, num_cores_enabled, num_cores_total));
+
+       /* NOTE: this function is normally called directly from the utilization callback which is in
+        * timer context. */
+
+       if (mali_pp_scale_threshold[MALI_PP_THRESHOLD_90] < data->utilization_pp)
+       {
+               ret = enable_max_num_cores();
+       }
+       else if (mali_pp_scale_threshold[MALI_PP_THRESHOLD_50]< data->utilization_pp)
+       {
+               ret = enable_one_core();
+       }
+       else if (mali_pp_scale_threshold[MALI_PP_THRESHOLD_40]< data->utilization_pp)
+       {
+               #if 0
+               currentStep = MALI_CLOCK_425;
+               schedule_work(&wq_work);
+               #endif
+       }
+       else if (0 < data->utilization_pp)
+       {
+               ret = disable_one_core();
+       }
+       else
+       {
+               /* do nothing */
+       }
+       if (ret == 1)
+               schedule_work(&wq_work);
+}
+
+void mali_pp_fs_scaling_update(struct mali_gpu_utilization_data *data)
+{
+       u32 ret = 0;
+       u32 utilization = data->utilization_gpu;
+       //(data->utilization_pp < data->utilization_gp)?data->utilization_gp:data->utilization_pp;
+       u32 loading_complete = (1<<16);//mali_utilization_bw_get_period();
+       u32 mali_up_limit = mali_turbo_mode ? mali_clock_max_index : max_mali_clock;
+
+       if (loading_complete > (2<<16) &&
+                       currentStep > min_mali_clock) {
+               currentStep --;
+               MALI_DEBUG_PRINT(3, (" active time vs command complete:%d\n", loading_complete));
+               goto exit;
+       }
+
+       if (utilization >= mali_dvfs_threshold[currentStep].upthreshold) {
+               if (utilization < mali_pp_scale_threshold[MALI_PP_THRESHOLD_80] && currentStep < mali_up_limit)
+                       currentStep ++;
+               else
+                       currentStep = mali_up_limit;
+
+               if (data->utilization_pp > MALI_PP_THRESHOLD_80) {
+                       enable_max_num_cores();
+               } else {
+                       enable_one_core();
+               }
+               MALI_DEBUG_PRINT(3, ("  > utilization:%d  currentStep:%d.pp:%d. upthreshold:%d.\n",
+                                       utilization, currentStep, num_cores_enabled, mali_dvfs_threshold[currentStep].upthreshold ));
+       } else if (utilization < mali_dvfs_threshold[currentStep].downthreshold && currentStep > min_mali_clock) {
+               currentStep--;
+               MALI_DEBUG_PRINT(3, (" <  utilization:%d  currentStep:%d. downthreshold:%d.\n",
+                                       utilization, currentStep,mali_dvfs_threshold[currentStep].downthreshold ));
+       } else {
+               if (data->utilization_pp < mali_pp_scale_threshold[MALI_PP_THRESHOLD_30])
+                       ret = disable_one_core();
+               MALI_DEBUG_PRINT(3, (" <  utilization:%d  currentStep:%d. downthreshold:%d.pp:%d\n",
+                                       utilization, currentStep,mali_dvfs_threshold[currentStep].downthreshold, num_cores_enabled));
+       }
+
+exit:
+       if ((num_cores_enabled != num_cores_total) ||
+                       (mali_dvfs_threshold[currentStep].freq_index != mali_dvfs_threshold[lastStep].freq_index))
+               schedule_work(&wq_work);
+#ifdef CONFIG_MALI400_PROFILING
+       else
+               _mali_osk_profiling_add_event(MALI_PROFILING_EVENT_TYPE_SINGLE |
+                                               MALI_PROFILING_EVENT_CHANNEL_GPU |
+                                               MALI_PROFILING_EVENT_REASON_SINGLE_GPU_FREQ_VOLT_CHANGE,
+                                               get_mali_freq(),
+                                               0,      0,      0,      0);
+#endif
+}
+
+void reset_mali_scaling_stat(void)
+{
+       if (mali_turbo_mode)
+               currentStep = mali_clock_max_index;
+       else
+               currentStep = max_mali_clock;
+       enable_max_num_cores();
+       schedule_work(&wq_work);
+}
+
+u32 get_max_pp_num(void)
+{
+       return num_cores_total; 
+}
+u32 set_max_pp_num(u32 num)
+{
+       if (num < min_pp_num)
+               return -1;
+       num_cores_total = num;
+       if (num_cores_enabled > num_cores_total) {
+               num_cores_enabled = num_cores_total;
+               schedule_work(&wq_work);
+       }
+       
+       return 0;       
+}
+
+u32 get_min_pp_num(void)
+{
+       return min_pp_num;      
+}
+u32 set_min_pp_num(u32 num)
+{
+       if (num > num_cores_total)
+               return -1;
+       min_pp_num = num;
+       if (num_cores_enabled < min_pp_num) {
+               num_cores_enabled = min_pp_num;
+               schedule_work(&wq_work);
+       }
+       
+       return 0;       
+}
+
+u32 get_max_mali_freq(void)
+{
+       return max_mali_clock;  
+}
+u32 set_max_mali_freq(u32 idx)
+{
+       if (idx >= mali_clock_max_index || idx < min_mali_clock )
+               return -1;
+       max_mali_clock = idx;
+       if (currentStep > max_mali_clock) {
+               currentStep = max_mali_clock;
+               schedule_work(&wq_work);
+       }
+       
+       return 0;       
+}
+
+u32 get_min_mali_freq(void)
+{
+       return min_mali_clock;  
+}
+u32 set_min_mali_freq(u32 idx)
+{
+       if (idx > max_mali_clock)
+               return -1;
+       min_mali_clock = idx;
+       if (currentStep < min_mali_clock) {
+               currentStep = min_mali_clock;
+               schedule_work(&wq_work);
+       }
+       
+       return 0;       
+}
+
+void mali_plat_preheat(void)
+{
+       //printk(" aml mali test*************\n");
+       int ret;
+       ret = enable_max_num_cores();
+       if (ret)
+               schedule_work(&wq_work);
+}
+
+void set_turbo_mode(u32 mode) 
+{
+       mali_turbo_mode = mode;
+}
+
+void mali_gpu_utilization_callback(struct mali_gpu_utilization_data *data)
+{
+       switch (scaling_mode) {
+       case MALI_PP_FS_SCALING:
+               reseted_for_turbo = 0;
+               set_turbo_mode(0);
+               mali_pp_fs_scaling_update(data);
+               break;
+       case MALI_PP_SCALING:
+               reseted_for_turbo = 0;
+               set_turbo_mode(0);
+               mali_pp_scaling_update(data);
+               break;
+       case MALI_TURBO_MODE:
+               set_turbo_mode(1);
+               //mali_pp_fs_scaling_update(data);
+               if (reseted_for_turbo == 0) {
+                       reseted_for_turbo = 1;
+                       reset_mali_scaling_stat();
+               }
+               break;
+       default:
+               set_turbo_mode(0);
+               reseted_for_turbo = 0;
+       }
+}
+
+u32 get_mali_schel_mode(void)
+{
+       return scaling_mode;
+}
+
+void set_mali_schel_mode(u32 mode)
+{
+       MALI_DEBUG_ASSERT(mode < MALI_SCALING_MODE_MAX);
+       if (mode >= MALI_SCALING_MODE_MAX)return;
+       scaling_mode = mode;
+       reset_mali_scaling_stat();
+}
+
+
diff --git a/mali/platform/meson_main.c b/mali/platform/meson_main.c
new file mode 100755 (executable)
index 0000000..840b9b8
--- /dev/null
@@ -0,0 +1,142 @@
+/*
+ * Copyright (C) 2010, 2012-2013 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.
+ */
+
+#include <linux/version.h>
+#include <linux/dma-mapping.h>
+#include <linux/module.h>
+#include <linux/moduleparam.h>
+#include <linux/pm.h>
+#include <linux/of.h>
+#include <linux/ioport.h>
+#include <linux/slab.h>
+#include <mach/register.h>
+#include <mach/irqs.h>
+#include <mach/io.h>
+#include <asm/io.h>
+
+#include "meson_main.h"
+#include <linux/mali/mali_utgard.h>
+#include "mali_kernel_common.h"
+#include "common/mali_pmu.h"
+#include "common/mali_osk_profiling.h"
+
+static void mali_platform_device_release(struct device *device);
+
+static struct mali_gpu_device_data mali_gpu_data =
+{
+       .shared_mem_size = 1024 * 1024 * 1024,
+       .max_job_runtime = 60000, /* 60 seconds */
+       .pmu_switch_delay = 0xFFFF, /* do not have to be this high on FPGA, but it is good for testing to have a delay */
+       .pmu_domain_config = {0x1, 0x2, 0x4, 0x4, 0x4, 0x8, 0x8, 0x8, 0x8, 0x1, 0x2, 0x8},
+};
+
+static struct platform_device mali_gpu_device =
+{
+       .name = MALI_GPU_NAME_UTGARD,
+       .id = 0,
+       .dev.release = mali_platform_device_release,
+       .dev.coherent_dma_mask = DMA_BIT_MASK(32),
+       .dev.platform_data = &mali_gpu_data,
+       .dev.type = &mali_pm_device, /* We should probably use the pm_domain instead of type on newer kernels */
+};
+
+int mali_pdev_pre_init(struct platform_device* ptr_plt_dev)
+{
+       MALI_DEBUG_PRINT(4, ("mali_platform_device_register() called\n"));
+       if (mali_gpu_data.shared_mem_size < 10) {
+               MALI_DEBUG_PRINT(2, ("mali os memory didn't configered, set to default(512M)\n"));
+               mali_gpu_data.shared_mem_size = 1024 * 1024 *1024;
+       }
+       return mali_meson_init_start(ptr_plt_dev);
+}
+
+void mali_pdev_post_init(struct platform_device* pdev)
+{
+#ifdef CONFIG_PM_RUNTIME
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,37))
+       pm_runtime_set_autosuspend_delay(&(pdev->dev), 1000);
+       pm_runtime_use_autosuspend(&(pdev->dev));
+#endif
+       pm_runtime_enable(&(pdev->dev));
+#endif
+       mali_meson_init_finish(pdev);
+}
+
+int mali_pdev_dts_init(struct platform_device* mali_gpu_device)
+{
+       struct device_node     *cfg_node = mali_gpu_device->dev.of_node;
+       struct device_node     *child;
+       u32 prop_value;
+       int err;
+       mali_dvfs_threshold_table_t* tbl = NULL;
+       u32 tbl_size;
+       u32 tbl_size_in_byte;
+
+       for_each_child_of_node(cfg_node, child) {
+       err = of_property_read_u32(child, "shared_memory", &prop_value);
+       if (err == 0) {
+               MALI_DEBUG_PRINT(2, ("shared_memory configurate  %d\n", prop_value));
+               mali_gpu_data.shared_mem_size = prop_value * 1024 * 1024;
+       }
+
+       err = of_property_read_u32(child, "dvfs_size", &prop_value);
+       if (err != 0 || prop_value < 0 || prop_value > get_max_dvfs_tbl_size()) {
+               MALI_DEBUG_PRINT(2, ("invalid recorde_number is.\n"));
+               goto def_start;
+       }
+
+       tbl_size = sizeof(mali_dvfs_threshold_table_t) * prop_value;
+       tbl_size_in_byte = tbl_size / sizeof(u32);
+       tbl = kzalloc(tbl_size, GFP_KERNEL);
+               if (!tbl)
+                       goto def_start;
+
+               err = of_property_read_u32_array(child,
+                                               "dvfs_table",
+                                               (u32*)tbl,
+                                               tbl_size_in_byte);
+               if (err == 0) {
+                       memcpy(get_mali_dvfs_tbl_addr(), tbl, tbl_size);
+                       set_mali_dvfs_tbl_size(prop_value);
+                       kfree(tbl);
+               }
+       }
+
+def_start:
+       err = mali_pdev_pre_init(mali_gpu_device);
+       if (err == 0)
+               mali_pdev_post_init(mali_gpu_device);
+       return err;
+}
+
+int mali_platform_device_register(void)
+{
+       int err = -1;
+       err = mali_pdev_pre_init(&mali_gpu_device);
+       if (err == 0) {
+               err = platform_device_register(&mali_gpu_device);
+               if (0 == err)
+                       mali_pdev_post_init(&mali_gpu_device);
+       }
+       return err;
+}
+
+void mali_platform_device_unregister(void)
+{
+       MALI_DEBUG_PRINT(4, ("mali_platform_device_unregister() called\n"));
+       
+       platform_device_unregister(&mali_gpu_device);
+       platform_device_put(&mali_gpu_device);
+}
+
+static void mali_platform_device_release(struct device *device)
+{
+       MALI_DEBUG_PRINT(4, ("mali_platform_device_release() called\n"));
+}
diff --git a/mali/platform/meson_main.h b/mali/platform/meson_main.h
new file mode 100644 (file)
index 0000000..8b89de8
--- /dev/null
@@ -0,0 +1,35 @@
+/*
+ * mali_platform.h
+ *
+ *  Created on: Nov 8, 2013
+ *      Author: amlogic
+ */
+
+#ifndef MESON_MAIN_H_
+#define MESON_MAIN_H_
+#include <linux/kernel.h>
+#include <linux/platform_device.h>
+#ifdef CONFIG_PM_RUNTIME
+#include <linux/pm_runtime.h>
+#endif
+#include <mach/cpu.h>
+
+#include "mali_scaling.h"
+#include "mali_clock.h"
+
+extern struct device_type mali_pm_device;
+extern u32 mali_dvfs_clk[];
+extern u32 mali_dvfs_clk_sample[];
+extern u32 mali_clock_max_index;
+extern u32 mali_default_clock_idx;
+extern u32 mali_up_clock_idx;
+
+int mali_meson_init_start(struct platform_device* ptr_plt_dev);
+int mali_meson_init_finish(struct platform_device* ptr_plt_dev);
+int mali_meson_uninit(struct platform_device* ptr_plt_dev);
+int mali_light_suspend(struct device *device);
+int mali_light_resume(struct device *device);
+int mali_deep_suspend(struct device *device);
+int mali_deep_resume(struct device *device);
+
+#endif /* MESON_MAIN_H_ */
index 7257c1589ada6bb0938c18f9a772755adfa22597..f5c2431fc9d67ec08108be648abcb01deaee7657 100755 (executable)
@@ -9,6 +9,8 @@
  *\r
  *******************************************************************/\r
 /* Standard Linux headers */\r
+#include <linux/platform_device.h>\r
+#include <linux/version.h>\r
 #include <linux/types.h>\r
 #include <linux/init.h>\r
 #include <linux/module.h>\r
 #include <linux/slab.h>\r
 #include <linux/list.h>\r
 \r
+#include <asm/io.h>\r
 \r
-static ssize_t mpgpu_show(struct class *class,\r
-    struct class_attribute *attr, char *buf)\r
+#include <linux/mali/mali_utgard.h>\r
+#include <common/mali_kernel_common.h>\r
+#include <common/mali_pmu.h>\r
+#include "meson_main.h"\r
+\r
+static ssize_t domain_stat_read(struct class *class, \r
+                       struct class_attribute *attr, char *buf)\r
+{\r
+       return sprintf(buf, "%x\n", mali_pmu_get_status());\r
+}\r
+\r
+#if MESON_CPU_TYPE == MESON_CPU_TYPE_MESON8\r
+static ssize_t mpgpu_read(struct class *class, \r
+                       struct class_attribute *attr, char *buf)\r
 {\r
     return 0;\r
 }\r
 \r
 #define PREHEAT_CMD "preheat"\r
 \r
-void mali_plat_preheat(void);\r
-static ssize_t mpgpu_store(struct class *class,\r
-    struct class_attribute *attr, const char *buf, size_t count)\r
+static ssize_t mpgpu_write(struct class *class,\r
+                       struct class_attribute *attr, const char *buf, size_t count)\r
 {\r
        if(!strncmp(buf,PREHEAT_CMD,strlen(PREHEAT_CMD)))\r
                mali_plat_preheat();\r
        return count;\r
 }\r
 \r
-static CLASS_ATTR(mpgpucmd, 0644, mpgpu_show, mpgpu_store);\r
+static ssize_t scale_mode_read(struct class *class, \r
+                       struct class_attribute *attr, char *buf)\r
+{\r
+       return sprintf(buf, "%d\n", get_mali_schel_mode());\r
+}\r
+\r
+static ssize_t scale_mode_write(struct class *class,\r
+                       struct class_attribute *attr, const char *buf, size_t count)\r
+{\r
+       int ret;\r
+       unsigned int val;\r
+\r
+       ret = kstrtouint(buf, 10, &val);\r
+       if (0 != ret)\r
+       {\r
+               return -EINVAL;\r
+       }\r
+       set_mali_schel_mode(val);\r
+\r
+       return count;\r
+}\r
+\r
+static ssize_t max_pp_read(struct class *class, \r
+                       struct class_attribute *attr, char *buf)\r
+{\r
+       return sprintf(buf, "%d\n", get_max_pp_num());\r
+}\r
+\r
+static ssize_t max_pp_write(struct class *class,\r
+                       struct class_attribute *attr, const char *buf, size_t count)\r
+{\r
+       int ret;\r
+       unsigned int val;\r
+\r
+       ret = kstrtouint(buf, 10, &val);\r
+       if (0 != ret)\r
+       {\r
+               return -EINVAL;\r
+       }\r
+       ret = set_max_pp_num(val);\r
+\r
+       return count;\r
+}\r
+\r
+static ssize_t min_pp_read(struct class *class, \r
+                       struct class_attribute *attr, char *buf)\r
+{\r
+\r
+       return sprintf(buf, "%d\n", get_min_pp_num());\r
+}\r
+\r
+static ssize_t min_pp_write(struct class *class,\r
+                       struct class_attribute *attr, const char *buf, size_t count)\r
+{\r
+       int ret;\r
+       unsigned int val;\r
+\r
+       ret = kstrtouint(buf, 10, &val);\r
+       if (0 != ret)\r
+       {\r
+               return -EINVAL;\r
+       }\r
+       ret = set_min_pp_num(val);\r
+\r
+       return count;\r
+}\r
+\r
+static ssize_t max_freq_read(struct class *class, \r
+                       struct class_attribute *attr, char *buf)\r
+{\r
+       return sprintf(buf, "%d\n", get_max_mali_freq());\r
+}\r
+\r
+static ssize_t max_freq_write(struct class *class,\r
+                       struct class_attribute *attr, const char *buf, size_t count)\r
+{\r
+       int ret;\r
+       unsigned int val;\r
+\r
+       ret = kstrtouint(buf, 10, &val);\r
+       if (0 != ret)\r
+       {\r
+               return -EINVAL;\r
+       }\r
+       ret = set_max_mali_freq(val);\r
+\r
+       return count;\r
+}\r
+\r
+static ssize_t min_freq_read(struct class *class, \r
+                       struct class_attribute *attr, char *buf)\r
+{\r
+       return sprintf(buf, "%d\n", get_min_mali_freq());\r
+}\r
+\r
+static ssize_t min_freq_write(struct class *class,\r
+                       struct class_attribute *attr, const char *buf, size_t count)\r
+{\r
+       int ret;\r
+       unsigned int val;\r
+\r
+       ret = kstrtouint(buf, 10, &val);\r
+       if (0 != ret)\r
+       {\r
+               return -EINVAL;\r
+       }\r
+       ret = set_min_mali_freq(val);\r
+       \r
+       return count;\r
+}\r
+#endif\r
+\r
+\r
+static struct class_attribute mali_class_attrs[] = {\r
+       __ATTR(domain_stat,     0644, domain_stat_read, NULL),\r
+#if MESON_CPU_TYPE == MESON_CPU_TYPE_MESON8\r
+       __ATTR(mpgpucmd,        0644, mpgpu_read,       mpgpu_write),\r
+       __ATTR(scale_mode,      0644, scale_mode_read,  scale_mode_write),\r
+       __ATTR(min_freq,        0644, min_freq_read,    min_freq_write),\r
+       __ATTR(max_freq,        0644, max_freq_read,    max_freq_write),\r
+       __ATTR(min_pp,          0644, min_pp_read,      min_pp_write),\r
+       __ATTR(max_pp,          0644, max_pp_read,      max_pp_write),\r
+#endif\r
+};\r
 \r
 static struct class mpgpu_class = {\r
        .name = "mpgpu",\r
@@ -44,21 +181,22 @@ static struct class mpgpu_class = {
 \r
 int mpgpu_class_init(void)\r
 {\r
-       int error;\r
+       int ret = 0;\r
+       int i;\r
+       int attr_num =  ARRAY_SIZE(mali_class_attrs);\r
        \r
-       error = class_register(&mpgpu_class);\r
-       if (error) {\r
+       ret = class_register(&mpgpu_class);\r
+       if (ret) {\r
                printk(KERN_ERR "%s: class_register failed\n", __func__);\r
-               return error;\r
+               return ret;\r
        }\r
-       error = class_create_file(&mpgpu_class, &class_attr_mpgpucmd);\r
-       if (error) {\r
-               printk(KERN_ERR "%s: class_create_file failed\n", __func__);\r
-               class_unregister(&mpgpu_class);\r
+       for (i = 0; i< attr_num; i++) {\r
+               ret = class_create_file(&mpgpu_class, &mali_class_attrs[i]);\r
+               if (ret) {\r
+                       printk(KERN_ERR "%d ST: class item failed to register\n", i);\r
+               }       \r
        }\r
-\r
-       return error;\r
-\r
+       return ret;\r
 }\r
 \r
 void  mpgpu_class_exit(void)\r
@@ -66,7 +204,7 @@ void  mpgpu_class_exit(void)
        class_unregister(&mpgpu_class);\r
 }\r
 \r
-\r
+#if 0\r
 static int __init mpgpu_init(void)\r
 {\r
        return mpgpu_class_init();\r
@@ -77,7 +215,6 @@ static void __exit mpgpu_exit(void)
        mpgpu_class_exit();\r
 }\r
 \r
-#ifndef MODULE\r
 fs_initcall(mpgpu_init);\r
 module_exit(mpgpu_exit);\r
 \r
diff --git a/mali/readme.txt b/mali/readme.txt
new file mode 100755 (executable)
index 0000000..2609506
--- /dev/null
@@ -0,0 +1,24 @@
+Building the Mali Device Driver for Linux
+-----------------------------------------
+
+Build the Mali Device Driver for Linux by running the following make command:
+
+KDIR=<kdir_path> USING_UMP=<ump_option> BUILD=<build_option> make
+
+where
+    kdir_path: Path to your Linux Kernel directory
+    ump_option: 1 = Enable UMP support(*)
+                0 = disable UMP support
+    build_option: debug = debug build of driver
+                  release = release build of driver
+
+(*)  For newer Linux Kernels, the Module.symvers file for the UMP device driver
+     must be available. The UMP_SYMVERS_FILE variable in the Makefile should
+     point to this file. This file is generated when the UMP driver is built.
+
+The result will be a mali.ko file, which can be loaded into the Linux kernel
+by using the insmod command.
+
+The kernel needs to be provided with a platform_device struct for the Mali GPU
+device. See the mali_utgard.h header file for how to set up the Mali GPU
+resources.
index 1aa67e74ba805d21b3c6039dd5836dca37fde7ea..31c0d827a654898c30401f7508ad53f649009fd9 100644 (file)
@@ -1,11 +1,11 @@
 /*
- * This confidential and proprietary software may be used only as
- * authorised by a licensing agreement from ARM Limited
- * (C) COPYRIGHT 2007-2010, 2012-2013 ARM Limited
- * ALL RIGHTS RESERVED
- * The entire notice above must be reproduced on all authorised
- * copies and copies may only be made to the extent permitted
- * by a licensing agreement from ARM Limited.
+ * Copyright (C) 2010, 2012-2013 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.
  */
 
 #ifndef _MALI200_REGS_H_
index e865e13bbb8c9e586ee3b837b4d98bcc0040159d..04598e56ca7ebd92c0df0fe6d393cef032a7942b 100644 (file)
@@ -1,11 +1,11 @@
 /*
- * This confidential and proprietary software may be used only as
- * authorised by a licensing agreement from ARM Limited
- * (C) COPYRIGHT 2007-2010, 2012-2013 ARM Limited
- * ALL RIGHTS RESERVED
- * The entire notice above must be reproduced on all authorised
- * copies and copies may only be made to the extent permitted
- * by a licensing agreement from ARM Limited.
+ * Copyright (C) 2010, 2012-2013 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.
  */
 
 #ifndef _MALIGP2_CONROL_REGS_H_
index dc44c4b16b03b5a4bce05633dc1f4611c0028c01..86c8e31fe485f7ee58732b0eaf440a9a562ef4b3 100644 (file)
@@ -1,11 +1,11 @@
 /*
- * This confidential and proprietary software may be used only as
- * authorised by a licensing agreement from ARM Limited
- * (C) COPYRIGHT 2010-2011, 2013 ARM Limited
- * ALL RIGHTS RESERVED
- * The entire notice above must be reproduced on all authorised
- * copies and copies may only be made to the extent permitted
- * by a licensing agreement from ARM Limited.
+ * Copyright (C) 2010-2011, 2013 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.
  */
 
 #include "mali_timestamp.h"
index 0b53257210aee9fa4432107731afc048afd6a7c5..175205be3c918509243119dbf9385ce3c0f6ef06 100644 (file)
@@ -1,11 +1,11 @@
 /*
- * This confidential and proprietary software may be used only as
- * authorised by a licensing agreement from ARM Limited
- * (C) COPYRIGHT 2010-2011, 2013 ARM Limited
- * ALL RIGHTS RESERVED
- * The entire notice above must be reproduced on all authorised
- * copies and copies may only be made to the extent permitted
- * by a licensing agreement from ARM Limited.
+ * Copyright (C) 2010-2011, 2013 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.
  */
 
 #ifndef __MALI_TIMESTAMP_H__
index dc44c4b16b03b5a4bce05633dc1f4611c0028c01..86c8e31fe485f7ee58732b0eaf440a9a562ef4b3 100644 (file)
@@ -1,11 +1,11 @@
 /*
- * This confidential and proprietary software may be used only as
- * authorised by a licensing agreement from ARM Limited
- * (C) COPYRIGHT 2010-2011, 2013 ARM Limited
- * ALL RIGHTS RESERVED
- * The entire notice above must be reproduced on all authorised
- * copies and copies may only be made to the extent permitted
- * by a licensing agreement from ARM Limited.
+ * Copyright (C) 2010-2011, 2013 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.
  */
 
 #include "mali_timestamp.h"
index a059ebb77830301e9197de32e00067ebae6add61..c3a3e1c975a7a87219448e50d2d799ebba030d38 100644 (file)
@@ -1,11 +1,11 @@
 /*
- * This confidential and proprietary software may be used only as
- * authorised by a licensing agreement from ARM Limited
- * (C) COPYRIGHT 2010-2011, 2013 ARM Limited
- * ALL RIGHTS RESERVED
- * The entire notice above must be reproduced on all authorised
- * copies and copies may only be made to the extent permitted
- * by a licensing agreement from ARM Limited.
+ * Copyright (C) 2010-2011, 2013 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.
  */
 
 #ifndef __MALI_TIMESTAMP_H__
diff --git a/ump/.version b/ump/.version
new file mode 100755 (executable)
index 0000000..f555ed9
--- /dev/null
@@ -0,0 +1 @@
+r4p0-00rel0
old mode 100644 (file)
new mode 100755 (executable)
index 69cc667..5713bf6
@@ -38,7 +38,9 @@ ccflags-y += -DSVN_REV=$(SVN_REV)
 ccflags-y += -DSVN_REV_STRING=\"$(SVN_REV)\"
 
 ccflags-y += -I$(src) -I$(TOP_KBUILD_SRC)$(src)/common -I$(TOP_KBUILD_SRC)$(src)/linux -I$(TOP_KBUILD_SRC)$(src)/../mali/common -I$(src)/../mali/linux -I$(src)/../ump/include/ump
+ccflags-y += -I$(srctree)/drivers/staging/android
 ccflags-y += -DMALI_STATE_TRACKING=0
+ccflags-y += -DMALI_ENABLE_CPU_CYCLES=0
 ccflags-$(CONFIG_UMP_DEBUG) += -DDEBUG
 
 # For customer releases the Linux Device Drivers will be provided as ARM proprietary and GPL releases:
old mode 100644 (file)
new mode 100755 (executable)
index cb68555..69ea877
@@ -1,6 +1,7 @@
 menu "Mali 400 UMP device driver"
 config UMP
        tristate "UMP support"
+       depends on m
        default n
        ---help---
          This enables support for the UMP memory allocation and sharing API.
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
diff --git a/ump/arch-pb-virtex5/config.h b/ump/arch-pb-virtex5/config.h
new file mode 100755 (executable)
index 0000000..850e28d
--- /dev/null
@@ -0,0 +1,18 @@
+/*
+ * Copyright (C) 2010-2013 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.
+ */
+
+#ifndef __ARCH_CONFIG_H__
+#define __ARCH_CONFIG_H__
+
+#define ARCH_UMP_BACKEND_DEFAULT          0
+#define ARCH_UMP_MEMORY_ADDRESS_DEFAULT   0xE1000000
+#define ARCH_UMP_MEMORY_SIZE_DEFAULT 16UL * 1024UL * 1024UL
+
+#endif /* __ARCH_CONFIG_H__ */
old mode 100644 (file)
new mode 100755 (executable)
index c662566..000a912
@@ -38,19 +38,18 @@ UMP_KERNEL_API_EXPORT ump_dd_handle ump_dd_handle_create_from_secure_id(ump_secu
 {
        ump_dd_mem * mem;
 
-       _mali_osk_lock_wait(device.secure_id_map_lock, _MALI_OSK_LOCKMODE_RW);
+       _mali_osk_mutex_wait(device.secure_id_map_lock);
 
        DBG_MSG(5, ("Getting handle from secure ID. ID: %u\n", secure_id));
-       if (0 != ump_descriptor_mapping_get(device.secure_id_map, (int)secure_id, (void**)&mem))
-       {
-               _mali_osk_lock_signal(device.secure_id_map_lock, _MALI_OSK_LOCKMODE_RW);
+       if (0 != ump_descriptor_mapping_get(device.secure_id_map, (int)secure_id, (void**)&mem)) {
+               _mali_osk_mutex_signal(device.secure_id_map_lock);
                DBG_MSG(1, ("Secure ID not found. ID: %u\n", secure_id));
                return UMP_DD_HANDLE_INVALID;
        }
 
        ump_dd_reference_add(mem);
 
-       _mali_osk_lock_signal(device.secure_id_map_lock, _MALI_OSK_LOCKMODE_RW);
+       _mali_osk_mutex_signal(device.secure_id_map_lock);
 
        return (ump_dd_handle)mem;
 }
@@ -74,14 +73,12 @@ UMP_KERNEL_API_EXPORT ump_dd_status_code ump_dd_phys_blocks_get(ump_dd_handle me
 
        DEBUG_ASSERT_POINTER(mem);
 
-       if (blocks == NULL)
-       {
+       if (blocks == NULL) {
                DBG_MSG(1, ("NULL parameter in ump_dd_phys_blocks_get()\n"));
                return UMP_DD_INVALID;
        }
 
-       if (mem->nr_blocks != num_blocks)
-       {
+       if (mem->nr_blocks != num_blocks) {
                DBG_MSG(1, ("Specified number of blocks do not match actual number of blocks\n"));
                return UMP_DD_INVALID;
        }
@@ -101,14 +98,12 @@ UMP_KERNEL_API_EXPORT ump_dd_status_code ump_dd_phys_block_get(ump_dd_handle mem
 
        DEBUG_ASSERT_POINTER(mem);
 
-       if (block == NULL)
-       {
+       if (block == NULL) {
                DBG_MSG(1, ("NULL parameter in ump_dd_phys_block_get()\n"));
                return UMP_DD_INVALID;
        }
 
-       if (index >= mem->nr_blocks)
-       {
+       if (index >= mem->nr_blocks) {
                DBG_MSG(5, ("Invalid index specified in ump_dd_phys_block_get()\n"));
                return UMP_DD_INVALID;
        }
@@ -160,25 +155,22 @@ UMP_KERNEL_API_EXPORT void ump_dd_reference_release(ump_dd_handle memh)
        that elements in the ump_descriptor_mapping table is always valid.  If they
        are not, userspace may accidently map in this secure_ids right before its freed
        giving a mapped backdoor into unallocated memory.*/
-       _mali_osk_lock_wait(device.secure_id_map_lock, _MALI_OSK_LOCKMODE_RW);
+       _mali_osk_mutex_wait(device.secure_id_map_lock);
 
        new_ref = _ump_osk_atomic_dec_and_read(&mem->ref_count);
 
        DBG_MSG(5, ("Memory reference decremented. ID: %u, new value: %d\n", mem->secure_id, new_ref));
 
-       if (0 == new_ref)
-       {
+       if (0 == new_ref) {
                DBG_MSG(3, ("Final release of memory. ID: %u\n", mem->secure_id));
 
                ump_descriptor_mapping_free(device.secure_id_map, (int)mem->secure_id);
 
-               _mali_osk_lock_signal(device.secure_id_map_lock, _MALI_OSK_LOCKMODE_RW);
+               _mali_osk_mutex_signal(device.secure_id_map_lock);
                mem->release_func(mem->ctx, mem);
                _mali_osk_free(mem);
-       }
-       else
-       {
-               _mali_osk_lock_signal(device.secure_id_map_lock, _MALI_OSK_LOCKMODE_RW);
+       } else {
+               _mali_osk_mutex_signal(device.secure_id_map_lock);
        }
 }
 
@@ -197,20 +189,15 @@ _mali_osk_errcode_t _ump_uku_get_api_version( _ump_uk_api_version_s *args )
        session_data = (ump_session_data *)args->ctx;
 
        /* check compatability */
-       if (args->version == UMP_IOCTL_API_VERSION)
-       {
+       if (args->version == UMP_IOCTL_API_VERSION) {
                DBG_MSG(3, ("API version set to newest %d (compatible)\n", GET_VERSION(args->version)));
                args->compatible = 1;
                session_data->api_version = args->version;
-       }
-       else if (args->version == MAKE_VERSION_ID(1))
-       {
+       } else if (args->version == MAKE_VERSION_ID(1)) {
                DBG_MSG(2, ("API version set to depricated: %d (compatible)\n", GET_VERSION(args->version)));
                args->compatible = 1;
                session_data->api_version = args->version;
-       }
-       else
-       {
+       } else {
                DBG_MSG(2, ("API version set to %d (incompatible with client version %d)\n", GET_VERSION(UMP_IOCTL_API_VERSION), GET_VERSION(args->version)));
                args->compatible = 0;
                args->version = UMP_IOCTL_API_VERSION; /* report our version */
@@ -242,11 +229,9 @@ _mali_osk_errcode_t _ump_ukk_release( _ump_uk_release_s *release_info )
        DBG_MSG(4, ("Releasing memory with IOCTL, ID: %u\n", secure_id));
 
        /* Iterate through the memory list looking for the requested secure ID */
-       _mali_osk_lock_wait(session_data->lock, _MALI_OSK_LOCKMODE_RW);
-       _MALI_OSK_LIST_FOREACHENTRY(session_memory_element, tmp, &session_data->list_head_session_memory_list, ump_session_memory_list_element, list)
-       {
-               if ( session_memory_element->mem->secure_id == secure_id)
-               {
+       _mali_osk_mutex_wait(session_data->lock);
+       _MALI_OSK_LIST_FOREACHENTRY(session_memory_element, tmp, &session_data->list_head_session_memory_list, ump_session_memory_list_element, list) {
+               if ( session_memory_element->mem->secure_id == secure_id) {
                        ump_dd_mem *release_mem;
 
                        release_mem = session_memory_element->mem;
@@ -259,8 +244,8 @@ _mali_osk_errcode_t _ump_ukk_release( _ump_uk_release_s *release_info )
                }
        }
 
-       _mali_osk_lock_signal(session_data->lock, _MALI_OSK_LOCKMODE_RW);
-       DBG_MSG_IF(1, _MALI_OSK_ERR_OK != ret, ("UMP memory with ID %u does not belong to this session.\n", secure_id));
+       _mali_osk_mutex_signal(session_data->lock);
+       DBG_MSG_IF(1, _MALI_OSK_ERR_OK != ret, ("UMP memory with ID %u does not belong to this session.\n", secure_id));
 
        DBG_MSG(4, ("_ump_ukk_release() returning 0x%x\n", ret));
        return ret;
@@ -274,20 +259,17 @@ _mali_osk_errcode_t _ump_ukk_size_get( _ump_uk_size_get_s *user_interaction )
        DEBUG_ASSERT_POINTER( user_interaction );
 
        /* We lock the mappings so things don't get removed while we are looking for the memory */
-       _mali_osk_lock_wait(device.secure_id_map_lock, _MALI_OSK_LOCKMODE_RW);
-       if (0 == ump_descriptor_mapping_get(device.secure_id_map, (int)user_interaction->secure_id, (void**)&mem))
-       {
+       _mali_osk_mutex_wait(device.secure_id_map_lock);
+       if (0 == ump_descriptor_mapping_get(device.secure_id_map, (int)user_interaction->secure_id, (void**)&mem)) {
                user_interaction->size = mem->size_bytes;
                DBG_MSG(4, ("Returning size. ID: %u, size: %lu ", (ump_secure_id)user_interaction->secure_id, (unsigned long)user_interaction->size));
                ret = _MALI_OSK_ERR_OK;
-       }
-       else
-       {
-                user_interaction->size = 0;
+       } else {
+               user_interaction->size = 0;
                DBG_MSG(1, ("Failed to look up mapping in ump_ioctl_size_get(). ID: %u\n", (ump_secure_id)user_interaction->secure_id));
        }
 
-       _mali_osk_lock_signal(device.secure_id_map_lock, _MALI_OSK_LOCKMODE_RW);
+       _mali_osk_mutex_signal(device.secure_id_map_lock);
        return ret;
 }
 
@@ -300,56 +282,50 @@ void _ump_ukk_msync( _ump_uk_msync_s *args )
        u32 size = 0;
        u32 offset = 0;
 
-       _mali_osk_lock_wait(device.secure_id_map_lock, _MALI_OSK_LOCKMODE_RW);
+       _mali_osk_mutex_wait(device.secure_id_map_lock);
        ump_descriptor_mapping_get(device.secure_id_map, (int)args->secure_id, (void**)&mem);
 
-       if (NULL == mem)
-       {
-               _mali_osk_lock_signal(device.secure_id_map_lock, _MALI_OSK_LOCKMODE_RW);
+       if (NULL == mem) {
+               _mali_osk_mutex_signal(device.secure_id_map_lock);
                DBG_MSG(1, ("Failed to look up mapping in _ump_ukk_msync(). ID: %u\n", (ump_secure_id)args->secure_id));
                return;
        }
        /* Ensure the memory doesn't dissapear when we are flushing it. */
        ump_dd_reference_add(mem);
-       _mali_osk_lock_signal(device.secure_id_map_lock, _MALI_OSK_LOCKMODE_RW);
+       _mali_osk_mutex_signal(device.secure_id_map_lock);
 
        /* Returns the cache settings back to Userspace */
        args->is_cached=mem->is_cached;
 
        /* If this flag is the only one set, we should not do the actual flush, only the readout */
-       if ( _UMP_UK_MSYNC_READOUT_CACHE_ENABLED==args->op )
-       {
+       if ( _UMP_UK_MSYNC_READOUT_CACHE_ENABLED==args->op ) {
                DBG_MSG(3, ("_ump_ukk_msync READOUT  ID: %u Enabled: %d\n", (ump_secure_id)args->secure_id, mem->is_cached));
                goto msync_release_and_return;
        }
 
        /* Nothing to do if the memory is not caches */
-       if ( 0==mem->is_cached )
-       {
+       if ( 0==mem->is_cached ) {
                DBG_MSG(3, ("_ump_ukk_msync IGNORING ID: %u Enabled: %d  OP: %d\n", (ump_secure_id)args->secure_id, mem->is_cached, args->op));
                goto msync_release_and_return;
        }
        DBG_MSG(3, ("UMP[%02u] _ump_ukk_msync  Flush  OP: %d Address: 0x%08x Mapping: 0x%08x\n",
                    (ump_secure_id)args->secure_id, args->op, args->address, args->mapping));
 
-       if ( args->address )
-       {
+       if ( args->address ) {
                virtual = (void *)((u32)args->address);
                offset = (u32)((args->address) - (args->mapping));
        } else {
                /* Flush entire mapping when no address is specified. */
                virtual = args->mapping;
        }
-       if ( args->size )
-       {
+       if ( args->size ) {
                size = args->size;
        } else {
                /* Flush entire mapping when no size is specified. */
                size = mem->size_bytes - offset;
        }
 
-       if ( (offset + size) > mem->size_bytes )
-       {
+       if ( (offset + size) > mem->size_bytes ) {
                DBG_MSG(1, ("Trying to flush more than the entire UMP allocation: offset: %u + size: %u > %u\n", offset, size, mem->size_bytes));
                goto msync_release_and_return;
        }
@@ -373,37 +349,30 @@ void _ump_ukk_cache_operations_control(_ump_uk_cache_operations_control_s* args)
        op = args->op;
        session_data = (ump_session_data *)args->ctx;
 
-       _mali_osk_lock_wait(session_data->lock, _MALI_OSK_LOCKMODE_RW);
-       if ( op== _UMP_UK_CACHE_OP_START )
-       {
+       _mali_osk_mutex_wait(session_data->lock);
+       if ( op== _UMP_UK_CACHE_OP_START ) {
                session_data->cache_operations_ongoing++;
                DBG_MSG(4, ("Cache ops start\n" ));
-               if ( session_data->cache_operations_ongoing != 1 )
-               {
+               if ( session_data->cache_operations_ongoing != 1 ) {
                        DBG_MSG(2, ("UMP: Number of simultanious cache control ops: %d\n", session_data->cache_operations_ongoing) );
                }
-       }
-       else if ( op== _UMP_UK_CACHE_OP_FINISH )
-       {
+       } else if ( op== _UMP_UK_CACHE_OP_FINISH ) {
                DBG_MSG(4, ("Cache ops finish\n"));
                session_data->cache_operations_ongoing--;
-               #if 0
-               if ( session_data->has_pending_level1_cache_flush)
-               {
+#if 0
+               if ( session_data->has_pending_level1_cache_flush) {
                        /* This function will set has_pending_level1_cache_flush=0 */
                        _ump_osk_msync( NULL, NULL, 0, 0, _UMP_UK_MSYNC_FLUSH_L1, session_data);
                }
-               #endif
+#endif
 
                /* to be on the safe side: always flush l1 cache when cache operations are done */
                _ump_osk_msync( NULL, NULL, 0, 0, _UMP_UK_MSYNC_FLUSH_L1, session_data);
                DBG_MSG(4, ("Cache ops finish end\n" ));
-       }
-       else
-       {
+       } else {
                DBG_MSG(1, ("Illegal call to %s at line %d\n", __FUNCTION__, __LINE__));
        }
-       _mali_osk_lock_signal(session_data->lock, _MALI_OSK_LOCKMODE_RW);
+       _mali_osk_mutex_signal(session_data->lock);
 
 }
 
@@ -419,12 +388,11 @@ void _ump_ukk_switch_hw_usage(_ump_uk_switch_hw_usage_s *args )
 
        session_data = (ump_session_data *)args->ctx;
 
-       _mali_osk_lock_wait(device.secure_id_map_lock, _MALI_OSK_LOCKMODE_RW);
+       _mali_osk_mutex_wait(device.secure_id_map_lock);
        ump_descriptor_mapping_get(device.secure_id_map, (int)args->secure_id, (void**)&mem);
 
-       if (NULL == mem)
-       {
-               _mali_osk_lock_signal(device.secure_id_map_lock, _MALI_OSK_LOCKMODE_RW);
+       if (NULL == mem) {
+               _mali_osk_mutex_signal(device.secure_id_map_lock);
                DBG_MSG(1, ("Failed to look up mapping in _ump_ukk_switch_hw_usage(). ID: %u\n", (ump_secure_id)args->secure_id));
                return;
        }
@@ -434,49 +402,45 @@ void _ump_ukk_switch_hw_usage(_ump_uk_switch_hw_usage_s *args )
 
        DBG_MSG(3, ("UMP[%02u] Switch usage  Start  New: %s  Prev: %s.\n", (ump_secure_id)args->secure_id, args->new_user?"MALI":"CPU",old_user?"MALI":"CPU"));
 
-       if ( ! mem->is_cached )
-       {
-               _mali_osk_lock_signal(device.secure_id_map_lock, _MALI_OSK_LOCKMODE_RW);
+       if ( ! mem->is_cached ) {
+               _mali_osk_mutex_signal(device.secure_id_map_lock);
                DBG_MSG(3, ("UMP[%02u] Changing owner of uncached memory. Cache flushing not needed.\n", (ump_secure_id)args->secure_id));
                return;
        }
 
-       if ( old_user == args->new_user)
-       {
-               _mali_osk_lock_signal(device.secure_id_map_lock, _MALI_OSK_LOCKMODE_RW);
+       if ( old_user == args->new_user) {
+               _mali_osk_mutex_signal(device.secure_id_map_lock);
                DBG_MSG(4, ("UMP[%02u] Setting the new_user equal to previous for. Cache flushing not needed.\n", (ump_secure_id)args->secure_id));
                return;
        }
        if (
-                /* Previous AND new is both different from CPU */
-                (old_user != _UMP_UK_USED_BY_CPU) && (args->new_user != _UMP_UK_USED_BY_CPU  )
-          )
-       {
-               _mali_osk_lock_signal(device.secure_id_map_lock, _MALI_OSK_LOCKMODE_RW);
+           /* Previous AND new is both different from CPU */
+           (old_user != _UMP_UK_USED_BY_CPU) && (args->new_user != _UMP_UK_USED_BY_CPU  )
+       ) {
+               _mali_osk_mutex_signal(device.secure_id_map_lock);
                DBG_MSG(4, ("UMP[%02u] Previous and new user is not CPU. Cache flushing not needed.\n", (ump_secure_id)args->secure_id));
                return;
        }
 
-       if ( (old_user != _UMP_UK_USED_BY_CPU ) && (args->new_user==_UMP_UK_USED_BY_CPU) )
-       {
+       if ( (old_user != _UMP_UK_USED_BY_CPU ) && (args->new_user==_UMP_UK_USED_BY_CPU) ) {
                cache_op =_UMP_UK_MSYNC_INVALIDATE;
                DBG_MSG(4, ("UMP[%02u] Cache invalidation needed\n", (ump_secure_id)args->secure_id));
 #ifdef UMP_SKIP_INVALIDATION
 #error
-               _mali_osk_lock_signal(device.secure_id_map_lock, _MALI_OSK_LOCKMODE_RW);
+               _mali_osk_mutex_signal(device.secure_id_map_lock);
                DBG_MSG(4, ("UMP[%02u] Performing Cache invalidation SKIPPED\n", (ump_secure_id)args->secure_id));
                return;
 #endif
        }
        /* Ensure the memory doesn't dissapear when we are flushing it. */
        ump_dd_reference_add(mem);
-       _mali_osk_lock_signal(device.secure_id_map_lock, _MALI_OSK_LOCKMODE_RW);
+       _mali_osk_mutex_signal(device.secure_id_map_lock);
 
        /* Take lock to protect: session->cache_operations_ongoing and session->has_pending_level1_cache_flush */
-       _mali_osk_lock_wait(session_data->lock, _MALI_OSK_LOCKMODE_RW);
+       _mali_osk_mutex_wait(session_data->lock);
        /* Actual cache flush */
        _ump_osk_msync( mem, NULL, 0, mem->size_bytes, cache_op, session_data);
-       _mali_osk_lock_signal(session_data->lock, _MALI_OSK_LOCKMODE_RW);
+       _mali_osk_mutex_signal(session_data->lock);
 
        ump_dd_reference_release(mem);
        DBG_MSG(4, ("UMP[%02u] Switch usage  Finish\n", (ump_secure_id)args->secure_id));
@@ -487,17 +451,16 @@ void _ump_ukk_lock(_ump_uk_lock_s *args )
 {
        ump_dd_mem * mem = NULL;
 
-       _mali_osk_lock_wait(device.secure_id_map_lock, _MALI_OSK_LOCKMODE_RW);
+       _mali_osk_mutex_wait(device.secure_id_map_lock);
        ump_descriptor_mapping_get(device.secure_id_map, (int)args->secure_id, (void**)&mem);
 
-       if (NULL == mem)
-       {
-               _mali_osk_lock_signal(device.secure_id_map_lock, _MALI_OSK_LOCKMODE_RW);
+       if (NULL == mem) {
+               _mali_osk_mutex_signal(device.secure_id_map_lock);
                DBG_MSG(1, ("UMP[%02u] Failed to look up mapping in _ump_ukk_lock(). ID: %u\n", (ump_secure_id)args->secure_id));
                return;
        }
        ump_dd_reference_add(mem);
-       _mali_osk_lock_signal(device.secure_id_map_lock, _MALI_OSK_LOCKMODE_RW);
+       _mali_osk_mutex_signal(device.secure_id_map_lock);
 
        DBG_MSG(1, ("UMP[%02u] Lock. New lock flag: %d. Old Lock flag:\n", (u32)args->secure_id, (u32)args->lock_usage, (u32) mem->lock_usage ));
 
@@ -510,17 +473,16 @@ void _ump_ukk_unlock(_ump_uk_unlock_s *args )
 {
        ump_dd_mem * mem = NULL;
 
-       _mali_osk_lock_wait(device.secure_id_map_lock, _MALI_OSK_LOCKMODE_RW);
+       _mali_osk_mutex_wait(device.secure_id_map_lock);
        ump_descriptor_mapping_get(device.secure_id_map, (int)args->secure_id, (void**)&mem);
 
-       if (NULL == mem)
-       {
-               _mali_osk_lock_signal(device.secure_id_map_lock, _MALI_OSK_LOCKMODE_RW);
+       if (NULL == mem) {
+               _mali_osk_mutex_signal(device.secure_id_map_lock);
                DBG_MSG(1, ("Failed to look up mapping in _ump_ukk_unlock(). ID: %u\n", (ump_secure_id)args->secure_id));
                return;
        }
        ump_dd_reference_add(mem);
-       _mali_osk_lock_signal(device.secure_id_map_lock, _MALI_OSK_LOCKMODE_RW);
+       _mali_osk_mutex_signal(device.secure_id_map_lock);
 
        DBG_MSG(1, ("UMP[%02u] Unlocking. Old Lock flag:\n", (u32)args->secure_id, (u32) mem->lock_usage ));
 
old mode 100644 (file)
new mode 100755 (executable)
index 0f5afc3..e207eea
@@ -45,8 +45,7 @@ _mali_osk_errcode_t ump_kernel_constructor(void)
 
        /* Perform OS Specific initialization */
        err = _ump_osk_init();
-       if( _MALI_OSK_ERR_OK != err )
-       {
+       if( _MALI_OSK_ERR_OK != err ) {
                MSG_ERR(("Failed to initiaze the UMP Device Driver"));
                return err;
        }
@@ -55,27 +54,24 @@ _mali_osk_errcode_t ump_kernel_constructor(void)
        _mali_osk_memset(&device, 0, sizeof(device) );
 
        /* Create the descriptor map, which will be used for mapping secure ID to ump_dd_mem structs */
-       device.secure_id_map_lock = _mali_osk_lock_init(_MALI_OSK_LOCKFLAG_NONINTERRUPTABLE, 0 , 0);
-       if (NULL == device.secure_id_map_lock)
-       {
+       device.secure_id_map_lock = _mali_osk_mutex_init(_MALI_OSK_LOCKFLAG_UNORDERED, 0);
+       if (NULL == device.secure_id_map_lock) {
                MSG_ERR(("Failed to create OSK lock for secure id lookup table\n"));
                return _MALI_OSK_ERR_NOMEM;
        }
 
        device.secure_id_map = ump_descriptor_mapping_create(UMP_SECURE_ID_TABLE_ENTRIES_INITIAL, UMP_SECURE_ID_TABLE_ENTRIES_MAXIMUM);
-       if (NULL == device.secure_id_map)
-       {
-               _mali_osk_lock_term(device.secure_id_map_lock);
+       if (NULL == device.secure_id_map) {
+               _mali_osk_mutex_term(device.secure_id_map_lock);
                MSG_ERR(("Failed to create secure id lookup table\n"));
                return _MALI_OSK_ERR_NOMEM;
        }
 
        /* Init memory backend */
        device.backend = ump_memory_backend_create();
-       if (NULL == device.backend)
-       {
+       if (NULL == device.backend) {
                MSG_ERR(("Failed to create memory backend\n"));
-               _mali_osk_lock_term(device.secure_id_map_lock);
+               _mali_osk_mutex_term(device.secure_id_map_lock);
                ump_descriptor_mapping_destroy(device.secure_id_map);
                return _MALI_OSK_ERR_NOMEM;
        }
@@ -88,7 +84,7 @@ void ump_kernel_destructor(void)
        DEBUG_ASSERT_POINTER(device.secure_id_map);
        DEBUG_ASSERT_POINTER(device.secure_id_map_lock);
 
-       _mali_osk_lock_term(device.secure_id_map_lock);
+       _mali_osk_mutex_term(device.secure_id_map_lock);
        device.secure_id_map_lock = NULL;
 
        ump_descriptor_mapping_destroy(device.secure_id_map);
@@ -110,15 +106,13 @@ _mali_osk_errcode_t _ump_ukk_open( void** context )
 
        /* allocated struct to track this session */
        session_data = (struct ump_session_data *)_mali_osk_malloc(sizeof(struct ump_session_data));
-       if (NULL == session_data)
-       {
+       if (NULL == session_data) {
                MSG_ERR(("Failed to allocate ump_session_data in ump_file_open()\n"));
                return _MALI_OSK_ERR_NOMEM;
        }
 
-       session_data->lock = _mali_osk_lock_init(_MALI_OSK_LOCKFLAG_NONINTERRUPTABLE, 0, 0);
-       if( NULL == session_data->lock )
-       {
+       session_data->lock = _mali_osk_mutex_init(_MALI_OSK_LOCKFLAG_UNORDERED, 0);
+       if( NULL == session_data->lock ) {
                MSG_ERR(("Failed to initialize lock for ump_session_data in ump_file_open()\n"));
                _mali_osk_free(session_data);
                return _MALI_OSK_ERR_NOMEM;
@@ -126,11 +120,10 @@ _mali_osk_errcode_t _ump_ukk_open( void** context )
 
        session_data->cookies_map = ump_descriptor_mapping_create( UMP_COOKIES_PER_SESSION_INITIAL, UMP_COOKIES_PER_SESSION_MAXIMUM );
 
-       if ( NULL == session_data->cookies_map )
-       {
+       if ( NULL == session_data->cookies_map ) {
                MSG_ERR(("Failed to create descriptor mapping for _ump_ukk_map_mem cookies\n"));
 
-               _mali_osk_lock_term( session_data->lock );
+               _mali_osk_mutex_term(session_data->lock);
                _mali_osk_free( session_data );
                return _MALI_OSK_ERR_NOMEM;
        }
@@ -162,23 +155,20 @@ _mali_osk_errcode_t _ump_ukk_close( void** context )
        ump_session_memory_list_element * tmp;
 
        session_data = (struct ump_session_data *)*context;
-       if (NULL == session_data)
-       {
+       if (NULL == session_data) {
                MSG_ERR(("Session data is NULL in _ump_ukk_close()\n"));
                return _MALI_OSK_ERR_INVALID_ARGS;
        }
 
        /* Unmap any descriptors mapped in. */
-       if (0 == _mali_osk_list_empty(&session_data->list_head_session_memory_mappings_list))
-       {
+       if (0 == _mali_osk_list_empty(&session_data->list_head_session_memory_mappings_list)) {
                ump_memory_allocation *descriptor;
                ump_memory_allocation *temp;
 
                DBG_MSG(1, ("Memory mappings found on session usage list during session termination\n"));
 
                /* use the 'safe' list iterator, since freeing removes the active block from the list we're iterating */
-               _MALI_OSK_LIST_FOREACHENTRY(descriptor, temp, &session_data->list_head_session_memory_mappings_list, ump_memory_allocation, list)
-               {
+               _MALI_OSK_LIST_FOREACHENTRY(descriptor, temp, &session_data->list_head_session_memory_mappings_list, ump_memory_allocation, list) {
                        _ump_uk_unmap_mem_s unmap_args;
                        DBG_MSG(4, ("Freeing block with phys address 0x%x size 0x%x mapped in user space at 0x%x\n",
                                    descriptor->phys_addr, descriptor->size, descriptor->mapping));
@@ -197,8 +187,7 @@ _mali_osk_errcode_t _ump_ukk_close( void** context )
         * can fail silently. */
        DEBUG_ASSERT( _mali_osk_list_empty(&session_data->list_head_session_memory_mappings_list) );
 
-       _MALI_OSK_LIST_FOREACHENTRY(item, tmp, &session_data->list_head_session_memory_list, ump_session_memory_list_element, list)
-       {
+       _MALI_OSK_LIST_FOREACHENTRY(item, tmp, &session_data->list_head_session_memory_list, ump_session_memory_list_element, list) {
                _mali_osk_list_del(&item->list);
                DBG_MSG(2, ("Releasing UMP memory %u as part of file close\n", item->mem->secure_id));
                ump_dd_reference_release(item->mem);
@@ -207,7 +196,7 @@ _mali_osk_errcode_t _ump_ukk_close( void** context )
 
        ump_descriptor_mapping_destroy( session_data->cookies_map );
 
-       _mali_osk_lock_term(session_data->lock);
+       _mali_osk_mutex_term(session_data->lock);
        _mali_osk_free(session_data);
 
        DBG_MSG(2, ("Session closed\n"));
@@ -228,22 +217,19 @@ _mali_osk_errcode_t _ump_ukk_map_mem( _ump_uk_map_mem_s *args )
        int map_id;
 
        session_data = (ump_session_data *)args->ctx;
-       if( NULL == session_data )
-       {
+       if( NULL == session_data ) {
                MSG_ERR(("Session data is NULL in _ump_ukk_map_mem()\n"));
                return _MALI_OSK_ERR_INVALID_ARGS;
        }
 
        descriptor = (ump_memory_allocation*) _mali_osk_calloc( 1, sizeof(ump_memory_allocation));
-       if (NULL == descriptor)
-       {
+       if (NULL == descriptor) {
                MSG_ERR(("ump_ukk_map_mem: descriptor allocation failed\n"));
                return _MALI_OSK_ERR_NOMEM;
        }
 
        handle = ump_dd_handle_create_from_secure_id(args->secure_id);
-       if ( UMP_DD_HANDLE_INVALID == handle)
-       {
+       if ( UMP_DD_HANDLE_INVALID == handle) {
                _mali_osk_free(descriptor);
                DBG_MSG(1, ("Trying to map unknown secure ID %u\n", args->secure_id));
                return _MALI_OSK_ERR_FAULT;
@@ -251,8 +237,7 @@ _mali_osk_errcode_t _ump_ukk_map_mem( _ump_uk_map_mem_s *args )
 
        mem = (ump_dd_mem*)handle;
        DEBUG_ASSERT(mem);
-       if (mem->size_bytes != args->size)
-       {
+       if (mem->size_bytes != args->size) {
                _mali_osk_free(descriptor);
                ump_dd_reference_release(handle);
                DBG_MSG(1, ("Trying to map too much or little. ID: %u, virtual size=%lu, UMP size: %lu\n", args->secure_id, args->size, mem->size_bytes));
@@ -261,8 +246,7 @@ _mali_osk_errcode_t _ump_ukk_map_mem( _ump_uk_map_mem_s *args )
 
        map_id = ump_descriptor_mapping_allocate_mapping( session_data->cookies_map, (void*) descriptor );
 
-       if (map_id < 0)
-       {
+       if (map_id < 0) {
                _mali_osk_free(descriptor);
                ump_dd_reference_release(handle);
                DBG_MSG(1, ("ump_ukk_map_mem: unable to allocate a descriptor_mapping for return cookie\n"));
@@ -277,14 +261,11 @@ _mali_osk_errcode_t _ump_ukk_map_mem( _ump_uk_map_mem_s *args )
        descriptor->ump_session = session_data;
        descriptor->cookie = (u32)map_id;
 
-       if ( mem->is_cached )
-       {
+       if ( mem->is_cached ) {
                descriptor->is_cached = 1;
                args->is_cached       = 1;
                DBG_MSG(3, ("Mapping UMP secure_id: %d as cached.\n", args->secure_id));
-       }
-       else
-       {
+       } else {
                descriptor->is_cached = 0;
                args->is_cached       = 0;
                DBG_MSG(3, ("Mapping UMP secure_id: %d  as Uncached.\n", args->secure_id));
@@ -293,8 +274,7 @@ _mali_osk_errcode_t _ump_ukk_map_mem( _ump_uk_map_mem_s *args )
        _mali_osk_list_init( &descriptor->list );
 
        err = _ump_osk_mem_mapregion_init( descriptor );
-       if( _MALI_OSK_ERR_OK != err )
-       {
+       if( _MALI_OSK_ERR_OK != err ) {
                DBG_MSG(1, ("Failed to initialize memory mapping in _ump_ukk_map_mem(). ID: %u\n", args->secure_id));
                ump_descriptor_mapping_free( session_data->cookies_map, map_id );
                _mali_osk_free(descriptor);
@@ -303,28 +283,23 @@ _mali_osk_errcode_t _ump_ukk_map_mem( _ump_uk_map_mem_s *args )
        }
 
        DBG_MSG(4, ("Mapping virtual to physical memory: ID: %u, size:%lu, first physical addr: 0x%08lx, number of regions: %lu\n",
-               mem->secure_id,
-               mem->size_bytes,
-               ((NULL != mem->block_array) ? mem->block_array->addr : 0),
-               mem->nr_blocks));
+                   mem->secure_id,
+                   mem->size_bytes,
+                   ((NULL != mem->block_array) ? mem->block_array->addr : 0),
+                   mem->nr_blocks));
 
        left = descriptor->size;
        /* loop over all blocks and map them in */
-       for (block = 0; block < mem->nr_blocks; block++)
-       {
+       for (block = 0; block < mem->nr_blocks; block++) {
                unsigned long size_to_map;
 
-               if (left >  mem->block_array[block].size)
-               {
+               if (left >  mem->block_array[block].size) {
                        size_to_map = mem->block_array[block].size;
-               }
-               else
-               {
+               } else {
                        size_to_map = left;
                }
 
-               if (_MALI_OSK_ERR_OK != _ump_osk_mem_mapregion_map(descriptor, offset, (u32 *)&(mem->block_array[block].addr), size_to_map ) )
-               {
+               if (_MALI_OSK_ERR_OK != _ump_osk_mem_mapregion_map(descriptor, offset, (u32 *)&(mem->block_array[block].addr), size_to_map ) ) {
                        DBG_MSG(1, ("WARNING: _ump_ukk_map_mem failed to map memory into userspace\n"));
                        ump_descriptor_mapping_free( session_data->cookies_map, map_id );
                        ump_dd_reference_release(mem);
@@ -337,9 +312,9 @@ _mali_osk_errcode_t _ump_ukk_map_mem( _ump_uk_map_mem_s *args )
        }
 
        /* Add to the ump_memory_allocation tracking list */
-       _mali_osk_lock_wait(session_data->lock, _MALI_OSK_LOCKMODE_RW);
+       _mali_osk_mutex_wait(session_data->lock);
        _mali_osk_list_add( &descriptor->list, &session_data->list_head_session_memory_mappings_list );
-       _mali_osk_lock_signal(session_data->lock, _MALI_OSK_LOCKMODE_RW);
+       _mali_osk_mutex_signal(session_data->lock);
 
        args->mapping = descriptor->mapping;
        args->cookie = descriptor->cookie;
@@ -355,14 +330,12 @@ void _ump_ukk_unmap_mem( _ump_uk_unmap_mem_s *args )
 
        session_data = (ump_session_data *)args->ctx;
 
-       if( NULL == session_data )
-       {
+       if( NULL == session_data ) {
                MSG_ERR(("Session data is NULL in _ump_ukk_map_mem()\n"));
                return;
        }
 
-       if (0 != ump_descriptor_mapping_get( session_data->cookies_map, (int)args->cookie, (void**)&descriptor) )
-       {
+       if (0 != ump_descriptor_mapping_get( session_data->cookies_map, (int)args->cookie, (void**)&descriptor) ) {
                MSG_ERR(("_ump_ukk_map_mem: cookie 0x%X not found for this session\n", args->cookie ));
                return;
        }
@@ -370,16 +343,15 @@ void _ump_ukk_unmap_mem( _ump_uk_unmap_mem_s *args )
        DEBUG_ASSERT_POINTER(descriptor);
 
        handle = descriptor->handle;
-       if ( UMP_DD_HANDLE_INVALID == handle)
-       {
+       if ( UMP_DD_HANDLE_INVALID == handle) {
                DBG_MSG(1, ("WARNING: Trying to unmap unknown handle: UNKNOWN\n"));
                return;
        }
 
        /* Remove the ump_memory_allocation from the list of tracked mappings */
-       _mali_osk_lock_wait(session_data->lock, _MALI_OSK_LOCKMODE_RW);
+       _mali_osk_mutex_wait(session_data->lock);
        _mali_osk_list_del( &descriptor->list );
-       _mali_osk_lock_signal(session_data->lock, _MALI_OSK_LOCKMODE_RW);
+       _mali_osk_mutex_signal(session_data->lock);
 
        ump_descriptor_mapping_free( session_data->cookies_map, (int)args->cookie );
 
old mode 100644 (file)
new mode 100755 (executable)
index 7c9d278..fa4639f
 
 
 #ifdef DEBUG
-       extern int ump_debug_level;
-       #define UMP_DEBUG_PRINT(args) _mali_osk_dbgmsg args
-       #define UMP_DEBUG_CODE(args) args
-       #define DBG_MSG(level,args)  do { /* args should be in brackets */ \
+extern int ump_debug_level;
+#define UMP_DEBUG_PRINT(args) _mali_osk_dbgmsg args
+#define UMP_DEBUG_CODE(args) args
+#define DBG_MSG(level,args)  do { /* args should be in brackets */ \
                ((level) <=  ump_debug_level)?\
                UMP_DEBUG_PRINT(("UMP<" #level ">: ")), \
                UMP_DEBUG_PRINT(args):0; \
                } while (0)
 
-       #define DBG_MSG_IF(level,condition,args) /* args should be in brackets */ \
+#define DBG_MSG_IF(level,condition,args) /* args should be in brackets */ \
                if((condition)&&((level) <=  ump_debug_level)) {\
                UMP_DEBUG_PRINT(("UMP<" #level ">: ")); \
                UMP_DEBUG_PRINT(args); \
                }
 
-       #define DBG_MSG_ELSE(level,args) /* args should be in brackets */ \
+#define DBG_MSG_ELSE(level,args) /* args should be in brackets */ \
                else if((level) <=  ump_debug_level) { \
                UMP_DEBUG_PRINT(("UMP<" #level ">: ")); \
                UMP_DEBUG_PRINT(args); \
                }
 
-       #define DEBUG_ASSERT_POINTER(pointer) do  {if( (pointer)== NULL) MSG_ERR(("NULL pointer " #pointer)); } while(0)
-       #define DEBUG_ASSERT(condition) do  {if(!(condition)) MSG_ERR(("ASSERT failed: " #condition)); } while(0)
+#define DEBUG_ASSERT_POINTER(pointer) do  {if( (pointer)== NULL) MSG_ERR(("NULL pointer " #pointer)); } while(0)
+#define DEBUG_ASSERT(condition) do  {if(!(condition)) MSG_ERR(("ASSERT failed: " #condition)); } while(0)
 #else /* DEBUG */
-       #define UMP_DEBUG_PRINT(args) do {} while(0)
-       #define UMP_DEBUG_CODE(args)
-       #define DBG_MSG(level,args) do {} while(0)
-       #define DBG_MSG_IF(level,condition,args) do {} while(0)
-       #define DBG_MSG_ELSE(level,args) do {} while(0)
-       #define DEBUG_ASSERT(condition) do {} while(0)
-       #define DEBUG_ASSERT_POINTER(pointer) do  {} while(0)
+#define UMP_DEBUG_PRINT(args) do {} while(0)
+#define UMP_DEBUG_CODE(args)
+#define DBG_MSG(level,args) do {} while(0)
+#define DBG_MSG_IF(level,condition,args) do {} while(0)
+#define DBG_MSG_ELSE(level,args) do {} while(0)
+#define DEBUG_ASSERT(condition) do {} while(0)
+#define DEBUG_ASSERT_POINTER(pointer) do  {} while(0)
 #endif /* DEBUG */
 
 #define MSG_ERR(args) do{ /* args should be in brackets */ \
  * A session is created when someone open() the device, and
  * closed when someone close() it or the user space application terminates.
  */
-typedef struct ump_session_data
-{
+typedef struct ump_session_data {
        _mali_osk_list_t list_head_session_memory_list;  /**< List of ump allocations made by the process (elements are ump_session_memory_list_element) */
        _mali_osk_list_t list_head_session_memory_mappings_list; /**< List of ump_memory_allocations mapped in */
        int api_version;
-       _mali_osk_lock_t * lock;
+       _mali_osk_mutex_t *lock;
        ump_descriptor_mapping * cookies_map; /**< Secure mapping of cookies from _ump_ukk_map_mem() */
        int cache_operations_ongoing;
        int has_pending_level1_cache_flush;
@@ -88,8 +87,7 @@ typedef struct ump_session_data
  * We need to track this in order to be able to clean up after user space processes
  * which don't do it themself (e.g. due to a crash or premature termination).
  */
-typedef struct ump_session_memory_list_element
-{
+typedef struct ump_session_memory_list_element {
        struct ump_dd_mem * mem;
        _mali_osk_list_t list;
 } ump_session_memory_list_element;
@@ -99,9 +97,8 @@ typedef struct ump_session_memory_list_element
 /*
  * Device specific data, created when device driver is loaded, and then kept as the global variable device.
  */
-typedef struct ump_dev
-{
-       _mali_osk_lock_t * secure_id_map_lock;
+typedef struct ump_dev {
+       _mali_osk_mutex_t *secure_id_map_lock;
        ump_descriptor_mapping * secure_id_map;
        ump_memory_backend * backend;
 } ump_dev;
old mode 100644 (file)
new mode 100755 (executable)
index f34a124..ab4e01e
@@ -36,14 +36,11 @@ ump_descriptor_mapping * ump_descriptor_mapping_create(int init_entries, int max
        init_entries = MALI_PAD_INT(init_entries);
        max_entries = MALI_PAD_INT(max_entries);
 
-       if (NULL != map)
-       {
+       if (NULL != map) {
                map->table = descriptor_table_alloc(init_entries);
-               if (NULL != map->table)
-               {
-                       map->lock = _mali_osk_lock_init(_MALI_OSK_LOCKFLAG_NONINTERRUPTABLE | _MALI_OSK_LOCKFLAG_READERWRITER, 0 , 0);
-                       if ( NULL != map->lock )
-                       {
+               if (NULL != map->table) {
+                       map->lock = _mali_osk_mutex_rw_init(_MALI_OSK_LOCKFLAG_UNORDERED, 0);
+                       if ( NULL != map->lock ) {
                                _mali_osk_set_nonatomic_bit(0, map->table->usage); /* reserve bit 0 to prevent NULL/zero logic to kick in */
                                map->max_nr_mappings_allowed = max_entries;
                                map->current_nr_mappings = init_entries;
@@ -59,38 +56,35 @@ ump_descriptor_mapping * ump_descriptor_mapping_create(int init_entries, int max
 void ump_descriptor_mapping_destroy(ump_descriptor_mapping * map)
 {
        descriptor_table_free(map->table);
-       _mali_osk_lock_term( map->lock );
+       _mali_osk_mutex_rw_term(map->lock);
        _mali_osk_free(map);
 }
 
 int ump_descriptor_mapping_allocate_mapping(ump_descriptor_mapping * map, void * target)
 {
-       int descriptor = -1;/*-EFAULT;*/
-       _mali_osk_lock_wait(map->lock, _MALI_OSK_LOCKMODE_RW);
-       descriptor = _mali_osk_find_first_zero_bit(map->table->usage, map->current_nr_mappings);
-       if (descriptor == map->current_nr_mappings)
-       {
+       int descriptor = -1;/*-EFAULT;*/
+       _mali_osk_mutex_rw_wait(map->lock, _MALI_OSK_LOCKMODE_RW);
+       descriptor = _mali_osk_find_first_zero_bit(map->table->usage, map->current_nr_mappings);
+       if (descriptor == map->current_nr_mappings) {
                int nr_mappings_new;
                /* no free descriptor, try to expand the table */
                ump_descriptor_table * new_table;
                ump_descriptor_table * old_table = map->table;
                nr_mappings_new= map->current_nr_mappings *2;
 
-               if (map->current_nr_mappings >= map->max_nr_mappings_allowed)
-               {
+               if (map->current_nr_mappings >= map->max_nr_mappings_allowed) {
                        descriptor = -1;
                        goto unlock_and_exit;
                }
 
                new_table = descriptor_table_alloc(nr_mappings_new);
-               if (NULL == new_table)
-               {
+               if (NULL == new_table) {
                        descriptor = -1;
                        goto unlock_and_exit;
                }
 
-               _mali_osk_memcpy(new_table->usage, old_table->usage, (sizeof(unsigned long)*map->current_nr_mappings) / BITS_PER_LONG);
-               _mali_osk_memcpy(new_table->mappings, old_table->mappings, map->current_nr_mappings * sizeof(void*));
+               _mali_osk_memcpy(new_table->usage, old_table->usage, (sizeof(unsigned long)*map->current_nr_mappings) / BITS_PER_LONG);
+               _mali_osk_memcpy(new_table->mappings, old_table->mappings, map->current_nr_mappings * sizeof(void*));
                map->table = new_table;
                map->current_nr_mappings = nr_mappings_new;
                descriptor_table_free(old_table);
@@ -101,47 +95,43 @@ int ump_descriptor_mapping_allocate_mapping(ump_descriptor_mapping * map, void *
        map->table->mappings[descriptor] = target;
 
 unlock_and_exit:
-       _mali_osk_lock_signal(map->lock, _MALI_OSK_LOCKMODE_RW);
+       _mali_osk_mutex_rw_signal(map->lock, _MALI_OSK_LOCKMODE_RW);
        return descriptor;
 }
 
 int ump_descriptor_mapping_get(ump_descriptor_mapping * map, int descriptor, void** target)
 {
-       int result = -1;/*-EFAULT;*/
-       DEBUG_ASSERT(map);
-       _mali_osk_lock_wait(map->lock, _MALI_OSK_LOCKMODE_RO);
-       if ( (descriptor >= 0) && (descriptor < map->current_nr_mappings) && _mali_osk_test_bit(descriptor, map->table->usage) )
-       {
+       int result = -1;/*-EFAULT;*/
+       DEBUG_ASSERT(map);
+       _mali_osk_mutex_rw_wait(map->lock, _MALI_OSK_LOCKMODE_RO);
+       if ((descriptor > 0) && (descriptor < map->current_nr_mappings) && _mali_osk_test_bit(descriptor, map->table->usage)) {
                *target = map->table->mappings[descriptor];
                result = 0;
-       }
-       else *target = NULL;
-       _mali_osk_lock_signal(map->lock, _MALI_OSK_LOCKMODE_RO);
+       } else *target = NULL;
+       _mali_osk_mutex_rw_signal(map->lock, _MALI_OSK_LOCKMODE_RO);
        return result;
 }
 
 int ump_descriptor_mapping_set(ump_descriptor_mapping * map, int descriptor, void * target)
 {
-       int result = -1;/*-EFAULT;*/
-       _mali_osk_lock_wait(map->lock, _MALI_OSK_LOCKMODE_RO);
-       if ( (descriptor >= 0) && (descriptor < map->current_nr_mappings) && _mali_osk_test_bit(descriptor, map->table->usage) )
-       {
+       int result = -1;/*-EFAULT;*/
+       _mali_osk_mutex_rw_wait(map->lock, _MALI_OSK_LOCKMODE_RO);
+       if ((descriptor > 0) && (descriptor < map->current_nr_mappings) && _mali_osk_test_bit(descriptor, map->table->usage)) {
                map->table->mappings[descriptor] = target;
                result = 0;
        }
-       _mali_osk_lock_signal(map->lock, _MALI_OSK_LOCKMODE_RO);
+       _mali_osk_mutex_rw_signal(map->lock, _MALI_OSK_LOCKMODE_RO);
        return result;
 }
 
 void ump_descriptor_mapping_free(ump_descriptor_mapping * map, int descriptor)
 {
-       _mali_osk_lock_wait(map->lock, _MALI_OSK_LOCKMODE_RW);
-       if ( (descriptor >= 0) && (descriptor < map->current_nr_mappings) && _mali_osk_test_bit(descriptor, map->table->usage) )
-       {
+       _mali_osk_mutex_rw_wait(map->lock, _MALI_OSK_LOCKMODE_RW);
+       if ((descriptor > 0) && (descriptor < map->current_nr_mappings) && _mali_osk_test_bit(descriptor, map->table->usage)) {
                map->table->mappings[descriptor] = NULL;
                _mali_osk_clear_nonatomic_bit(descriptor, map->table->usage);
        }
-       _mali_osk_lock_signal(map->lock, _MALI_OSK_LOCKMODE_RW);
+       _mali_osk_mutex_rw_signal(map->lock, _MALI_OSK_LOCKMODE_RW);
 }
 
 static ump_descriptor_table * descriptor_table_alloc(int count)
@@ -150,8 +140,7 @@ static ump_descriptor_table * descriptor_table_alloc(int count)
 
        table = _mali_osk_calloc(1, sizeof(ump_descriptor_table) + ((sizeof(unsigned long) * count)/BITS_PER_LONG) + (sizeof(void*) * count) );
 
-       if (NULL != table)
-       {
+       if (NULL != table) {
                table->usage = (u32*)((u8*)table + sizeof(ump_descriptor_table));
                table->mappings = (void**)((u8*)table + sizeof(ump_descriptor_table) + ((sizeof(unsigned long) * count)/BITS_PER_LONG));
        }
old mode 100644 (file)
new mode 100755 (executable)
index e9c4b26..a351d3a
@@ -20,8 +20,7 @@
 /**
  * The actual descriptor mapping table, never directly accessed by clients
  */
-typedef struct ump_descriptor_table
-{
+typedef struct ump_descriptor_table {
        u32 * usage; /**< Pointer to bitpattern indicating if a descriptor is valid/used or not */
        void** mappings; /**< Array of the pointers the descriptors map to */
 } ump_descriptor_table;
@@ -30,9 +29,8 @@ typedef struct ump_descriptor_table
  * The descriptor mapping object
  * Provides a separate namespace where we can map an integer to a pointer
  */
-typedef struct ump_descriptor_mapping
-{
-       _mali_osk_lock_t *lock; /**< Lock protecting access to the mapping object */
+typedef struct ump_descriptor_mapping {
+       _mali_osk_mutex_rw_t *lock; /**< Lock protecting access to the mapping object */
        int max_nr_mappings_allowed; /**< Max number of mappings to support in this namespace */
        int current_nr_mappings; /**< Current number of possible mappings */
        ump_descriptor_table * table; /**< Pointer to the current mapping table */
old mode 100644 (file)
new mode 100755 (executable)
index b613153..705c705
@@ -19,8 +19,7 @@
 #include "ump_kernel_types.h"
 
 
-typedef struct ump_memory_allocation
-{
+typedef struct ump_memory_allocation {
        void                    * phys_addr;
        void                    * mapping;
        unsigned long             size;
@@ -32,8 +31,7 @@ typedef struct ump_memory_allocation
        u32 is_cached;
 } ump_memory_allocation;
 
-typedef struct ump_memory_backend
-{
+typedef struct ump_memory_backend {
        int  (*allocate)(void* ctx, ump_dd_mem * descriptor);
        void (*release)(void* ctx, ump_dd_mem * descriptor);
        void (*shutdown)(struct ump_memory_backend * backend);
old mode 100644 (file)
new mode 100755 (executable)
index 857b676..99eb172
@@ -31,22 +31,19 @@ UMP_KERNEL_API_EXPORT ump_dd_handle ump_dd_handle_create_from_phys_blocks(ump_dd
        u32 i;
 
        /* Go through the input blocks and verify that they are sane */
-       for (i=0; i < num_blocks; i++)
-       {
+       for (i=0; i < num_blocks; i++) {
                unsigned long addr = blocks[i].addr;
                unsigned long size = blocks[i].size;
 
                DBG_MSG(5, ("Adding physical memory to new handle. Address: 0x%08lx, size: %lu\n", addr, size));
                size_total += blocks[i].size;
 
-               if (0 != UMP_ADDR_ALIGN_OFFSET(addr))
-               {
+               if (0 != UMP_ADDR_ALIGN_OFFSET(addr)) {
                        MSG_ERR(("Trying to create UMP memory from unaligned physical address. Address: 0x%08lx\n", addr));
                        return UMP_DD_HANDLE_INVALID;
                }
 
-               if (0 != UMP_ADDR_ALIGN_OFFSET(size))
-               {
+               if (0 != UMP_ADDR_ALIGN_OFFSET(size)) {
                        MSG_ERR(("Trying to create UMP memory with unaligned size. Size: %lu\n", size));
                        return UMP_DD_HANDLE_INVALID;
                }
@@ -54,19 +51,17 @@ UMP_KERNEL_API_EXPORT ump_dd_handle ump_dd_handle_create_from_phys_blocks(ump_dd
 
        /* Allocate the ump_dd_mem struct for this allocation */
        mem = _mali_osk_malloc(sizeof(*mem));
-       if (NULL == mem)
-       {
+       if (NULL == mem) {
                DBG_MSG(1, ("Could not allocate ump_dd_mem in ump_dd_handle_create_from_phys_blocks()\n"));
                return UMP_DD_HANDLE_INVALID;
        }
 
        /* Find a secure ID for this allocation */
-       _mali_osk_lock_wait(device.secure_id_map_lock, _MALI_OSK_LOCKMODE_RW);
+       _mali_osk_mutex_wait(device.secure_id_map_lock);
        map_id = ump_descriptor_mapping_allocate_mapping(device.secure_id_map, (void*) mem);
 
-       if (map_id < 0)
-       {
-               _mali_osk_lock_signal(device.secure_id_map_lock, _MALI_OSK_LOCKMODE_RW);
+       if (map_id < 0) {
+               _mali_osk_mutex_signal(device.secure_id_map_lock);
                _mali_osk_free(mem);
                DBG_MSG(1, ("Failed to allocate secure ID in ump_dd_handle_create_from_phys_blocks()\n"));
                return UMP_DD_HANDLE_INVALID;
@@ -74,10 +69,9 @@ UMP_KERNEL_API_EXPORT ump_dd_handle ump_dd_handle_create_from_phys_blocks(ump_dd
 
        /* Now, make a copy of the block information supplied by the user */
        mem->block_array = _mali_osk_malloc(sizeof(ump_dd_physical_block)* num_blocks);
-       if (NULL == mem->block_array)
-       {
+       if (NULL == mem->block_array) {
                ump_descriptor_mapping_free(device.secure_id_map, map_id);
-               _mali_osk_lock_signal(device.secure_id_map_lock, _MALI_OSK_LOCKMODE_RW);
+               _mali_osk_mutex_signal(device.secure_id_map_lock);
                _mali_osk_free(mem);
                DBG_MSG(1, ("Could not allocate a mem handle for function ump_dd_handle_create_from_phys_blocks().\n"));
                return UMP_DD_HANDLE_INVALID;
@@ -98,7 +92,7 @@ UMP_KERNEL_API_EXPORT ump_dd_handle ump_dd_handle_create_from_phys_blocks(ump_dd
        mem->hw_device = _UMP_UK_USED_BY_CPU;
        mem->lock_usage = UMP_NOT_LOCKED;
 
-       _mali_osk_lock_signal(device.secure_id_map_lock, _MALI_OSK_LOCKMODE_RW);
+       _mali_osk_mutex_signal(device.secure_id_map_lock);
        DBG_MSG(3, ("UMP memory created. ID: %u, size: %lu\n", mem->secure_id, mem->size_bytes));
 
        return (ump_dd_handle)mem;
@@ -123,28 +117,25 @@ _mali_osk_errcode_t _ump_ukk_allocate( _ump_uk_allocate_s *user_interaction )
        session_data = (ump_session_data *) user_interaction->ctx;
 
        session_memory_element = _mali_osk_calloc( 1, sizeof(ump_session_memory_list_element));
-       if (NULL == session_memory_element)
-       {
+       if (NULL == session_memory_element) {
                DBG_MSG(1, ("Failed to allocate ump_session_memory_list_element in ump_ioctl_allocate()\n"));
                return _MALI_OSK_ERR_NOMEM;
        }
 
 
        new_allocation = _mali_osk_calloc( 1, sizeof(ump_dd_mem));
-       if (NULL==new_allocation)
-       {
+       if (NULL==new_allocation) {
                _mali_osk_free(session_memory_element);
                DBG_MSG(1, ("Failed to allocate ump_dd_mem in _ump_ukk_allocate()\n"));
                return _MALI_OSK_ERR_NOMEM;
        }
 
        /* Create a secure ID for this allocation */
-       _mali_osk_lock_wait(device.secure_id_map_lock, _MALI_OSK_LOCKMODE_RW);
+       _mali_osk_mutex_wait(device.secure_id_map_lock);
        map_id = ump_descriptor_mapping_allocate_mapping(device.secure_id_map, (void*)new_allocation);
 
-       if (map_id < 0)
-       {
-               _mali_osk_lock_signal(device.secure_id_map_lock, _MALI_OSK_LOCKMODE_RW);
+       if (map_id < 0) {
+               _mali_osk_mutex_signal(device.secure_id_map_lock);
                _mali_osk_free(session_memory_element);
                _mali_osk_free(new_allocation);
                DBG_MSG(1, ("Failed to allocate secure ID in ump_ioctl_allocate()\n"));
@@ -155,12 +146,11 @@ _mali_osk_errcode_t _ump_ukk_allocate( _ump_uk_allocate_s *user_interaction )
        new_allocation->secure_id = (ump_secure_id)map_id;
        _mali_osk_atomic_init(&new_allocation->ref_count,1);
        if ( 0==(UMP_REF_DRV_UK_CONSTRAINT_USE_CACHE & user_interaction->constraints) )
-                new_allocation->is_cached = 0;
+               new_allocation->is_cached = 0;
        else new_allocation->is_cached = 1;
 
        /* special case a size of 0, we should try to emulate what malloc does in this case, which is to return a valid pointer that must be freed, but can't be dereferences */
-       if (0 == user_interaction->size)
-       {
+       if (0 == user_interaction->size) {
                user_interaction->size = 1; /* emulate by actually allocating the minimum block size */
        }
 
@@ -168,11 +158,10 @@ _mali_osk_errcode_t _ump_ukk_allocate( _ump_uk_allocate_s *user_interaction )
        new_allocation->lock_usage = UMP_NOT_LOCKED;
 
        /* Now, ask the active memory backend to do the actual memory allocation */
-       if (!device.backend->allocate( device.backend->ctx, new_allocation ) )
-       {
+       if (!device.backend->allocate( device.backend->ctx, new_allocation ) ) {
                DBG_MSG(3, ("OOM: No more UMP memory left. Failed to allocate memory in ump_ioctl_allocate(). Size: %lu, requested size: %lu\n", new_allocation->size_bytes, (unsigned long)user_interaction->size));
                ump_descriptor_mapping_free(device.secure_id_map, map_id);
-               _mali_osk_lock_signal(device.secure_id_map_lock, _MALI_OSK_LOCKMODE_RW);
+               _mali_osk_mutex_signal(device.secure_id_map_lock);
                _mali_osk_free(new_allocation);
                _mali_osk_free(session_memory_element);
                return _MALI_OSK_ERR_INVALID_FUNC;
@@ -181,13 +170,13 @@ _mali_osk_errcode_t _ump_ukk_allocate( _ump_uk_allocate_s *user_interaction )
        new_allocation->ctx = device.backend->ctx;
        new_allocation->release_func = device.backend->release;
 
-       _mali_osk_lock_signal(device.secure_id_map_lock, _MALI_OSK_LOCKMODE_RW);
+       _mali_osk_mutex_signal(device.secure_id_map_lock);
 
        /* Initialize the session_memory_element, and add it to the session object */
        session_memory_element->mem = new_allocation;
-       _mali_osk_lock_wait(session_data->lock, _MALI_OSK_LOCKMODE_RW);
+       _mali_osk_mutex_wait(session_data->lock);
        _mali_osk_list_add(&(session_memory_element->list), &(session_data->list_head_session_memory_list));
-       _mali_osk_lock_signal(session_data->lock, _MALI_OSK_LOCKMODE_RW);
+       _mali_osk_mutex_signal(session_data->lock);
 
        user_interaction->secure_id = new_allocation->secure_id;
        user_interaction->size = new_allocation->size_bytes;
old mode 100644 (file)
new mode 100755 (executable)
index ffa3727..08704ab
 #include "mali_osk.h"
 
 
-typedef enum
-{
+typedef enum {
        UMP_USED_BY_CPU = 0,
        UMP_USED_BY_MALI = 1,
        UMP_USED_BY_UNKNOWN_DEVICE= 100,
 } ump_hw_usage;
 
-typedef enum
-{
+typedef enum {
        UMP_NOT_LOCKED = 0,
        UMP_READ = 1,
        UMP_READ_WRITE = 3,
@@ -33,8 +31,7 @@ typedef enum
 /*
  * This struct is what is "behind" a ump_dd_handle
  */
-typedef struct ump_dd_mem
-{
+typedef struct ump_dd_mem {
        ump_secure_id secure_id;
        _mali_osk_atomic_t ref_count;
        unsigned long size_bytes;
old mode 100644 (file)
new mode 100755 (executable)
index 99363a8..9b048aa
@@ -22,8 +22,7 @@
 #include "ump_kernel_common.h"
 
 #ifdef __cplusplus
-extern "C"
-{
+extern "C" {
 #endif
 
 _mali_osk_errcode_t _ump_osk_init( void );
old mode 100644 (file)
new mode 100755 (executable)
index 3d65d17..ead1258
@@ -17,8 +17,7 @@
 #define __UMP_UK_TYPES_H__
 
 #ifdef __cplusplus
-extern "C"
-{
+extern "C" {
 #endif
 
 /* Helpers for API version handling */
@@ -49,7 +48,7 @@ typedef enum
        _UMP_IOC_SWITCH_HW_USAGE,
        _UMP_IOC_LOCK,
        _UMP_IOC_UNLOCK,
-}_ump_uk_functions;
+} _ump_uk_functions;
 
 typedef enum
 {
@@ -83,7 +82,7 @@ typedef enum
 {
        _UMP_UK_USED_BY_CPU = 0,
        _UMP_UK_USED_BY_MALI = 1,
-       _UMP_UK_USED_BY_UNKNOWN_DEVICE= 100,
+       _UMP_UK_USED_BY_UNKNOWN_DEVICE = 100,
 } ump_uk_user;
 
 /**
@@ -133,7 +132,7 @@ typedef struct _ump_uk_map_mem_s
        void *phys_addr;                /**< [in] physical address */
        unsigned long size;             /**< [in] size */
        u32 secure_id;                  /**< [in] secure_id to assign to mapping */
-       void * _ukk_private;            /**< Only used inside linux port between kernel frontend and common part to store vma */
+       void *_ukk_private;             /**< Only used inside linux port between kernel frontend and common part to store vma */
        u32 cookie;
        u32 is_cached;            /**< [in,out] caching of CPU mappings */
 } _ump_uk_map_mem_s;
@@ -143,7 +142,7 @@ typedef struct _ump_uk_unmap_mem_s
        void *ctx;            /**< [in,out] user-kernel context (trashed on output) */
        void *mapping;
        u32 size;
-       void * _ukk_private;
+       void *_ukk_private;
        u32 cookie;
 } _ump_uk_unmap_mem_s;
 
old mode 100644 (file)
new mode 100755 (executable)
index b285cf9..568a428
@@ -21,8 +21,7 @@
 
 
 #ifdef __cplusplus
-extern "C"
-{
+extern "C" {
 #endif
 
 
old mode 100644 (file)
new mode 100755 (executable)
index 067b30b..99cc697
 
 
 #ifdef __cplusplus
-extern "C"
-{
+extern "C" {
 #endif
 
 
 /**
  * External representation of a UMP handle in kernel space.
  */
-typedef void * ump_dd_handle;
+typedef void *ump_dd_handle;
 
 /**
  * Typedef for a secure ID, a system wide identificator for UMP memory buffers.
@@ -150,7 +149,7 @@ UMP_KERNEL_API_EXPORT unsigned long ump_dd_phys_block_count_get(ump_dd_handle me
  *
  * @return UMP_DD_SUCCESS indicates success, UMP_DD_INVALID indicates failure.
  */
-UMP_KERNEL_API_EXPORT ump_dd_status_code ump_dd_phys_blocks_get(ump_dd_handle mem, ump_dd_physical_block * blocks, unsigned long num_blocks);
+UMP_KERNEL_API_EXPORT ump_dd_status_code ump_dd_phys_blocks_get(ump_dd_handle mem, ump_dd_physical_block *blocks, unsigned long num_blocks);
 
 
 /**
@@ -168,7 +167,7 @@ UMP_KERNEL_API_EXPORT ump_dd_status_code ump_dd_phys_blocks_get(ump_dd_handle me
  *
  * @return UMP_DD_SUCCESS indicates success, UMP_DD_INVALID indicates failure.
  */
-UMP_KERNEL_API_EXPORT ump_dd_status_code ump_dd_phys_block_get(ump_dd_handle mem, unsigned long index, ump_dd_physical_block * block);
+UMP_KERNEL_API_EXPORT ump_dd_status_code ump_dd_phys_block_get(ump_dd_handle mem, unsigned long index, ump_dd_physical_block *block);
 
 
 /**
old mode 100644 (file)
new mode 100755 (executable)
index 0225130..8a65302
@@ -22,7 +22,7 @@ extern "C" {
 #endif
 
 /** Turn specified physical memory into UMP memory. */
-UMP_KERNEL_API_EXPORT ump_dd_handle ump_dd_handle_create_from_phys_blocks(ump_dd_physical_block * blocks, unsigned long num_blocks);
+UMP_KERNEL_API_EXPORT ump_dd_handle ump_dd_handle_create_from_phys_blocks(ump_dd_physical_block *blocks, unsigned long num_blocks);
 
 #ifdef __cplusplus
 }
old mode 100644 (file)
new mode 100755 (executable)
index 5322aa2..1b5af40
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2010, 2013 ARM Limited. All rights reserved.
+ * Copyright (C) 2010 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.
old mode 100644 (file)
new mode 100755 (executable)
index 0eb758d..4db4538
@@ -17,8 +17,7 @@
 #define __UMP_KERNEL_LICENSE_H__
 
 #ifdef __cplusplus
-extern "C"
-{
+extern "C" {
 #endif
 
 #define UMP_KERNEL_LINUX_LICENSE     "GPL"
old mode 100644 (file)
new mode 100755 (executable)
index b88a341..51787f6
@@ -12,8 +12,7 @@
 #define __UMP_IOCTL_H__
 
 #ifdef __cplusplus
-extern "C"
-{
+extern "C" {
 #endif
 
 #include <linux/types.h>
old mode 100644 (file)
new mode 100755 (executable)
index 7e017af..b22585d
@@ -59,14 +59,12 @@ static struct dentry *ump_debugfs_dir = NULL;
  * Each memory mapping has a reference to the UMP memory it maps.
  * We release this reference when the last memory mapping is unmapped.
  */
-typedef struct ump_vma_usage_tracker
-{
+typedef struct ump_vma_usage_tracker {
        int references;
        ump_dd_handle handle;
 } ump_vma_usage_tracker;
 
-struct ump_device
-{
+struct ump_device {
        struct cdev cdev;
 #if UMP_LICENSE_IS_GPL
        struct class * ump_class;
@@ -89,8 +87,7 @@ static int ump_file_mmap(struct file * filp, struct vm_area_struct * vma);
 
 
 /* This variable defines the file operations this UMP device driver offer */
-static struct file_operations ump_fops =
-{
+static struct file_operations ump_fops = {
        .owner   = THIS_MODULE,
        .open    = ump_file_open,
        .release = ump_file_release,
@@ -113,8 +110,7 @@ static int ump_initialize_module(void)
        DBG_MSG(2, ("Inserting UMP device driver. Compiled: %s, time: %s\n", __DATE__, __TIME__));
 
        err = ump_kernel_constructor();
-       if (_MALI_OSK_ERR_OK != err)
-       {
+       if (_MALI_OSK_ERR_OK != err) {
                MSG_ERR(("UMP device driver init failed\n"));
                return map_errcode(err);
        }
@@ -140,17 +136,17 @@ static void ump_cleanup_module(void)
 
 static ssize_t ump_memory_used_read(struct file *filp, char __user *ubuf, size_t cnt, loff_t *ppos)
 {
-        char buf[64];
-        size_t r;
-        u32 mem = _ump_ukk_report_memory_usage();
+       char buf[64];
+       size_t r;
+       u32 mem = _ump_ukk_report_memory_usage();
 
-        r = snprintf(buf, 64, "%u\n", mem);
-        return simple_read_from_buffer(ubuf, cnt, ppos, buf, r);
+       r = snprintf(buf, 64, "%u\n", mem);
+       return simple_read_from_buffer(ubuf, cnt, ppos, buf, r);
 }
 
 static const struct file_operations ump_memory_usage_fops = {
-        .owner = THIS_MODULE,
-        .read = ump_memory_used_read,
+       .owner = THIS_MODULE,
+       .read = ump_memory_used_read,
 };
 
 /*
@@ -162,31 +158,24 @@ int ump_kernel_device_initialize(void)
        dev_t dev = 0;
 #if UMP_LICENSE_IS_GPL
        ump_debugfs_dir = debugfs_create_dir(ump_dev_name, NULL);
-       if (ERR_PTR(-ENODEV) == ump_debugfs_dir)
-       {
-                       ump_debugfs_dir = NULL;
-       }
-       else
-       {
+       if (ERR_PTR(-ENODEV) == ump_debugfs_dir) {
+               ump_debugfs_dir = NULL;
+       } else {
                debugfs_create_file("memory_usage", 0400, ump_debugfs_dir, NULL, &ump_memory_usage_fops);
        }
 #endif
 
-       if (0 == ump_major)
-       {
+       if (0 == ump_major) {
                /* auto select a major */
                err = alloc_chrdev_region(&dev, 0, 1, ump_dev_name);
                ump_major = MAJOR(dev);
-       }
-       else
-       {
+       } else {
                /* use load time defined major number */
                dev = MKDEV(ump_major, 0);
                err = register_chrdev_region(dev, 1, ump_dev_name);
        }
 
-       if (0 == err)
-       {
+       if (0 == err) {
                memset(&ump_device, 0, sizeof(ump_device));
 
                /* initialize our char dev data */
@@ -196,21 +185,16 @@ int ump_kernel_device_initialize(void)
 
                /* register char dev with the kernel */
                err = cdev_add(&ump_device.cdev, dev, 1/*count*/);
-               if (0 == err)
-               {
+               if (0 == err) {
 
 #if UMP_LICENSE_IS_GPL
                        ump_device.ump_class = class_create(THIS_MODULE, ump_dev_name);
-                       if (IS_ERR(ump_device.ump_class))
-                       {
+                       if (IS_ERR(ump_device.ump_class)) {
                                err = PTR_ERR(ump_device.ump_class);
-                       }
-                       else
-                       {
+                       } else {
                                struct device * mdev;
                                mdev = device_create(ump_device.ump_class, NULL, dev, NULL, ump_dev_name);
-                               if (!IS_ERR(mdev))
-                               {
+                               if (!IS_ERR(mdev)) {
                                        return 0;
                                }
 
@@ -263,16 +247,14 @@ static int ump_file_open(struct inode *inode, struct file *filp)
        _mali_osk_errcode_t err;
 
        /* input validation */
-       if (0 != MINOR(inode->i_rdev))
-       {
+       if (0 != MINOR(inode->i_rdev)) {
                MSG_ERR(("Minor not zero in ump_file_open()\n"));
                return -ENODEV;
        }
 
        /* Call the OS-Independent UMP Open function */
        err = _ump_ukk_open((void**) &session_data );
-       if( _MALI_OSK_ERR_OK != err )
-       {
+       if( _MALI_OSK_ERR_OK != err ) {
                MSG_ERR(("Ump failed to open a new session\n"));
                return map_errcode( err );
        }
@@ -293,8 +275,7 @@ static int ump_file_release(struct inode *inode, struct file *filp)
        _mali_osk_errcode_t err;
 
        err = _ump_ukk_close((void**) &filp->private_data );
-       if( _MALI_OSK_ERR_OK != err )
-       {
+       if( _MALI_OSK_ERR_OK != err ) {
                return map_errcode( err );
        }
 
@@ -321,8 +302,7 @@ static int ump_file_ioctl(struct inode *inode, struct file *filp, unsigned int c
 #endif
 
        session_data = (struct ump_session_data *)filp->private_data;
-       if (NULL == session_data)
-       {
+       if (NULL == session_data) {
                MSG_ERR(("No session data attached to file object\n"));
                return -ENOTTY;
        }
@@ -330,48 +310,47 @@ static int ump_file_ioctl(struct inode *inode, struct file *filp, unsigned int c
        /* interpret the argument as a user pointer to something */
        argument = (void __user *)arg;
 
-       switch (cmd)
-       {
-               case UMP_IOC_QUERY_API_VERSION:
-                       err = ump_get_api_version_wrapper((u32 __user *)argument, session_data);
-                       break;
+       switch (cmd) {
+       case UMP_IOC_QUERY_API_VERSION:
+               err = ump_get_api_version_wrapper((u32 __user *)argument, session_data);
+               break;
 
-               case UMP_IOC_ALLOCATE :
-                       err = ump_allocate_wrapper((u32 __user *)argument, session_data);
-                       break;
+       case UMP_IOC_ALLOCATE :
+               err = ump_allocate_wrapper((u32 __user *)argument, session_data);
+               break;
 
-               case UMP_IOC_RELEASE:
-                       err = ump_release_wrapper((u32 __user *)argument, session_data);
-                       break;
+       case UMP_IOC_RELEASE:
+               err = ump_release_wrapper((u32 __user *)argument, session_data);
+               break;
 
-               case UMP_IOC_SIZE_GET:
-                       err = ump_size_get_wrapper((u32 __user *)argument, session_data);
-                       break;
+       case UMP_IOC_SIZE_GET:
+               err = ump_size_get_wrapper((u32 __user *)argument, session_data);
+               break;
 
-               case UMP_IOC_MSYNC:
-                       err = ump_msync_wrapper((u32 __user *)argument, session_data);
-                       break;
+       case UMP_IOC_MSYNC:
+               err = ump_msync_wrapper((u32 __user *)argument, session_data);
+               break;
 
-               case UMP_IOC_CACHE_OPERATIONS_CONTROL:
-                       err = ump_cache_operations_control_wrapper((u32 __user *)argument, session_data);
-                       break;
+       case UMP_IOC_CACHE_OPERATIONS_CONTROL:
+               err = ump_cache_operations_control_wrapper((u32 __user *)argument, session_data);
+               break;
 
-               case UMP_IOC_SWITCH_HW_USAGE:
-                       err = ump_switch_hw_usage_wrapper((u32 __user *)argument, session_data);
-                       break;
+       case UMP_IOC_SWITCH_HW_USAGE:
+               err = ump_switch_hw_usage_wrapper((u32 __user *)argument, session_data);
+               break;
 
-               case UMP_IOC_LOCK:
-                       err = ump_lock_wrapper((u32 __user *)argument, session_data);
-                       break;
+       case UMP_IOC_LOCK:
+               err = ump_lock_wrapper((u32 __user *)argument, session_data);
+               break;
 
-               case UMP_IOC_UNLOCK:
-                       err = ump_unlock_wrapper((u32 __user *)argument, session_data);
-                       break;
+       case UMP_IOC_UNLOCK:
+               err = ump_unlock_wrapper((u32 __user *)argument, session_data);
+               break;
 
-               default:
-                       DBG_MSG(1, ("No handler for IOCTL. cmd: 0x%08x, arg: 0x%08lx\n", cmd, arg));
-                       err = -EFAULT;
-                       break;
+       default:
+               DBG_MSG(1, ("No handler for IOCTL. cmd: 0x%08x, arg: 0x%08lx\n", cmd, arg));
+               err = -EFAULT;
+               break;
        }
 
        return err;
@@ -379,18 +358,26 @@ static int ump_file_ioctl(struct inode *inode, struct file *filp, unsigned int c
 
 int map_errcode( _mali_osk_errcode_t err )
 {
-    switch(err)
-    {
-        case _MALI_OSK_ERR_OK : return 0;
-        case _MALI_OSK_ERR_FAULT: return -EFAULT;
-        case _MALI_OSK_ERR_INVALID_FUNC: return -ENOTTY;
-        case _MALI_OSK_ERR_INVALID_ARGS: return -EINVAL;
-        case _MALI_OSK_ERR_NOMEM: return -ENOMEM;
-        case _MALI_OSK_ERR_TIMEOUT: return -ETIMEDOUT;
-        case _MALI_OSK_ERR_RESTARTSYSCALL: return -ERESTARTSYS;
-        case _MALI_OSK_ERR_ITEM_NOT_FOUND: return -ENOENT;
-        default: return -EFAULT;
-    }
+       switch(err) {
+       case _MALI_OSK_ERR_OK :
+               return 0;
+       case _MALI_OSK_ERR_FAULT:
+               return -EFAULT;
+       case _MALI_OSK_ERR_INVALID_FUNC:
+               return -ENOTTY;
+       case _MALI_OSK_ERR_INVALID_ARGS:
+               return -EINVAL;
+       case _MALI_OSK_ERR_NOMEM:
+               return -ENOMEM;
+       case _MALI_OSK_ERR_TIMEOUT:
+               return -ETIMEDOUT;
+       case _MALI_OSK_ERR_RESTARTSYSCALL:
+               return -ERESTARTSYS;
+       case _MALI_OSK_ERR_ITEM_NOT_FOUND:
+               return -ENOENT;
+       default:
+               return -EFAULT;
+       }
 }
 
 /*
@@ -404,8 +391,7 @@ static int ump_file_mmap(struct file * filp, struct vm_area_struct * vma)
 
        /* Validate the session data */
        session_data = (struct ump_session_data *)filp->private_data;
-       if (NULL == session_data)
-       {
+       if (NULL == session_data) {
                MSG_ERR(("mmap() called without any session data available\n"));
                return -EFAULT;
        }
@@ -418,8 +404,7 @@ static int ump_file_mmap(struct file * filp, struct vm_area_struct * vma)
        args.secure_id = vma->vm_pgoff;
        args.is_cached = 0;
 
-       if (!(vma->vm_flags & VM_SHARED))
-       {
+       if (!(vma->vm_flags & VM_SHARED)) {
                args.is_cached = 1;
                vma->vm_flags = vma->vm_flags | VM_SHARED | VM_MAYSHARE  ;
                DBG_MSG(3, ("UMP Map function: Forcing the CPU to use cache\n"));
@@ -431,8 +416,7 @@ static int ump_file_mmap(struct file * filp, struct vm_area_struct * vma)
 
        /* Call the common mmap handler */
        err = _ump_ukk_map_mem( &args );
-       if ( _MALI_OSK_ERR_OK != err)
-       {
+       if ( _MALI_OSK_ERR_OK != err) {
                MSG_ERR(("_ump_ukk_map_mem() failed in function ump_file_mmap()"));
                return map_errcode( err );
        }
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
index 7ca406e..ca276c8
 
 
 
-typedef struct block_info
-{
+typedef struct block_info {
        struct block_info * next;
 } block_info;
 
 
 
-typedef struct block_allocator
-{
+typedef struct block_allocator {
        struct semaphore mutex;
        block_info * all_blocks;
        block_info * first_free;
@@ -69,8 +67,7 @@ ump_memory_backend * ump_block_allocator_create(u32 base_address, u32 size)
        usable_size = (size + UMP_BLOCK_SIZE - 1) & ~(UMP_BLOCK_SIZE - 1);
        num_blocks = usable_size / UMP_BLOCK_SIZE;
 
-       if (0 == usable_size)
-       {
+       if (0 == usable_size) {
                DBG_MSG(1, ("Memory block of size %u is unusable\n", size));
                return NULL;
        }
@@ -79,14 +76,11 @@ ump_memory_backend * ump_block_allocator_create(u32 base_address, u32 size)
        DBG_MSG(6, ("%u usable bytes which becomes %u blocks\n", usable_size, num_blocks));
 
        backend = kzalloc(sizeof(ump_memory_backend), GFP_KERNEL);
-       if (NULL != backend)
-       {
+       if (NULL != backend) {
                allocator = kmalloc(sizeof(block_allocator), GFP_KERNEL);
-               if (NULL != allocator)
-               {
-                       allocator->all_blocks = kmalloc(sizeof(block_allocator) * num_blocks, GFP_KERNEL);
-                       if (NULL != allocator->all_blocks)
-                       {
+               if (NULL != allocator) {
+                       allocator->all_blocks = kmalloc(sizeof(block_info) * num_blocks, GFP_KERNEL);
+                       if (NULL != allocator->all_blocks) {
                                int i;
 
                                allocator->first_free = NULL;
@@ -95,8 +89,7 @@ ump_memory_backend * ump_block_allocator_create(u32 base_address, u32 size)
                                allocator->base = base_address;
                                sema_init(&allocator->mutex, 1);
 
-                               for (i = 0; i < num_blocks; i++)
-                               {
+                               for (i = 0; i < num_blocks; i++) {
                                        allocator->all_blocks[i].next = allocator->first_free;
                                        allocator->first_free = &allocator->all_blocks[i];
                                }
@@ -160,22 +153,19 @@ static int block_allocator_allocate(void* ctx, ump_dd_mem * mem)
 
        mem->nr_blocks = ((left + UMP_BLOCK_SIZE - 1) & ~(UMP_BLOCK_SIZE - 1)) / UMP_BLOCK_SIZE;
        mem->block_array = (ump_dd_physical_block*)vmalloc(sizeof(ump_dd_physical_block) * mem->nr_blocks);
-       if (NULL == mem->block_array)
-       {
+       if (NULL == mem->block_array) {
                MSG_ERR(("Failed to allocate block array\n"));
                return 0;
        }
 
-       if (down_interruptible(&allocator->mutex))
-       {
+       if (down_interruptible(&allocator->mutex)) {
                MSG_ERR(("Could not get mutex to do block_allocate\n"));
                return 0;
        }
 
        mem->size_bytes = 0;
 
-       while ((left > 0) && (allocator->first_free))
-       {
+       while ((left > 0) && (allocator->first_free)) {
                block_info * block;
 
                block = allocator->first_free;
@@ -194,12 +184,10 @@ static int block_allocator_allocate(void* ctx, ump_dd_mem * mem)
                else left -= UMP_BLOCK_SIZE;
        }
 
-       if (left)
-       {
+       if (left) {
                block_info * block;
                /* release all memory back to the pool */
-               while (last_allocated)
-               {
+               while (last_allocated) {
                        block = last_allocated->next;
                        last_allocated->next = allocator->first_free;
                        allocator->first_free = last_allocated;
@@ -239,14 +227,12 @@ static void block_allocator_release(void * ctx, ump_dd_mem * handle)
        block = (block_info*)handle->backend_info;
        BUG_ON(!block);
 
-       if (down_interruptible(&allocator->mutex))
-       {
+       if (down_interruptible(&allocator->mutex)) {
                MSG_ERR(("Allocator release: Failed to get mutex - memory leak\n"));
                return;
        }
 
-       while (block)
-       {
+       while (block) {
                next = block->next;
 
                BUG_ON( (block < allocator->all_blocks) || (block > (allocator->all_blocks + allocator->num_blocks)));
old mode 100644 (file)
new mode 100755 (executable)
index 8494887..fa4bdcc
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2010, 2013 ARM Limited. All rights reserved.
+ * Copyright (C) 2010 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.
old mode 100644 (file)
new mode 100755 (executable)
index e362fac..61817c7
@@ -28,8 +28,7 @@
 
 
 
-typedef struct os_allocator
-{
+typedef struct os_allocator {
        struct semaphore mutex;
        u32 num_pages_max;       /**< Maximum number of pages to allocate from the OS */
        u32 num_pages_allocated; /**< Number of pages allocated from the OS */
@@ -53,8 +52,7 @@ ump_memory_backend * ump_os_memory_backend_create(const int max_allocation)
        os_allocator * info;
 
        info = kmalloc(sizeof(os_allocator), GFP_KERNEL);
-       if (NULL == info)
-       {
+       if (NULL == info) {
                return NULL;
        }
 
@@ -64,8 +62,7 @@ ump_memory_backend * ump_os_memory_backend_create(const int max_allocation)
        sema_init(&info->mutex, 1);
 
        backend = kmalloc(sizeof(ump_memory_backend), GFP_KERNEL);
-       if (NULL == backend)
-       {
+       if (NULL == backend) {
                kfree(info);
                return NULL;
        }
@@ -115,8 +112,7 @@ static int os_allocate(void* ctx, ump_dd_mem * descriptor)
        left = descriptor->size_bytes;
        is_cached = descriptor->is_cached;
 
-       if (down_interruptible(&info->mutex))
-       {
+       if (down_interruptible(&info->mutex)) {
                DBG_MSG(1, ("Failed to get mutex in os_free\n"));
                return 0; /* failure */
        }
@@ -127,48 +123,38 @@ static int os_allocate(void* ctx, ump_dd_mem * descriptor)
        DBG_MSG(5, ("Allocating page array. Size: %lu\n", descriptor->nr_blocks * sizeof(ump_dd_physical_block)));
 
        descriptor->block_array = (ump_dd_physical_block *)vmalloc(sizeof(ump_dd_physical_block) * descriptor->nr_blocks);
-       if (NULL == descriptor->block_array)
-       {
+       if (NULL == descriptor->block_array) {
                up(&info->mutex);
                DBG_MSG(1, ("Block array could not be allocated\n"));
                return 0; /* failure */
        }
 
-       while (left > 0 && ((info->num_pages_allocated + pages_allocated) < info->num_pages_max))
-       {
+       while (left > 0 && ((info->num_pages_allocated + pages_allocated) < info->num_pages_max)) {
                struct page * new_page;
 
-               if (is_cached)
-               {
+               if (is_cached) {
                        new_page = alloc_page(GFP_HIGHUSER | __GFP_ZERO | __GFP_REPEAT | __GFP_NOWARN);
-               } else
-               {
+               } else {
                        new_page = alloc_page(GFP_HIGHUSER | __GFP_ZERO | __GFP_REPEAT | __GFP_NOWARN | __GFP_COLD);
                }
-               if (NULL == new_page)
-               {
+               if (NULL == new_page) {
                        break;
                }
 
                /* Ensure page caches are flushed. */
-               if ( is_cached )
-               {
+               if ( is_cached ) {
                        descriptor->block_array[pages_allocated].addr = page_to_phys(new_page);
                        descriptor->block_array[pages_allocated].size = PAGE_SIZE;
-               } else
-               {
+               } else {
                        descriptor->block_array[pages_allocated].addr = dma_map_page(NULL, new_page, 0, PAGE_SIZE, DMA_BIDIRECTIONAL );
                        descriptor->block_array[pages_allocated].size = PAGE_SIZE;
                }
 
                DBG_MSG(5, ("Allocated page 0x%08lx cached: %d\n", descriptor->block_array[pages_allocated].addr, is_cached));
 
-               if (left < PAGE_SIZE)
-               {
+               if (left < PAGE_SIZE) {
                        left = 0;
-               }
-               else
-               {
+               } else {
                        left -= PAGE_SIZE;
                }
 
@@ -177,15 +163,12 @@ static int os_allocate(void* ctx, ump_dd_mem * descriptor)
 
        DBG_MSG(5, ("Alloce for ID:%2d got %d pages, cached: %d\n", descriptor->secure_id,  pages_allocated));
 
-       if (left)
-       {
+       if (left) {
                DBG_MSG(1, ("Failed to allocate needed pages\n"));
 
-               while(pages_allocated)
-               {
+               while(pages_allocated) {
                        pages_allocated--;
-                       if ( !is_cached )
-                       {
+                       if ( !is_cached ) {
                                dma_unmap_page(NULL, descriptor->block_array[pages_allocated].addr, PAGE_SIZE, DMA_BIDIRECTIONAL);
                        }
                        __free_page(pfn_to_page(descriptor->block_array[pages_allocated].addr >> PAGE_SHIFT) );
@@ -221,8 +204,7 @@ static void os_free(void* ctx, ump_dd_mem * descriptor)
 
        BUG_ON(descriptor->nr_blocks > info->num_pages_allocated);
 
-       if (down_interruptible(&info->mutex))
-       {
+       if (down_interruptible(&info->mutex)) {
                DBG_MSG(1, ("Failed to get mutex in os_free\n"));
                return;
        }
@@ -233,11 +215,9 @@ static void os_free(void* ctx, ump_dd_mem * descriptor)
 
        up(&info->mutex);
 
-       for ( i = 0; i < descriptor->nr_blocks; i++)
-       {
+       for ( i = 0; i < descriptor->nr_blocks; i++) {
                DBG_MSG(6, ("Freeing physical page. Address: 0x%08lx\n", descriptor->block_array[i].addr));
-               if ( ! descriptor->is_cached)
-               {
+               if ( ! descriptor->is_cached) {
                        dma_unmap_page(NULL, descriptor->block_array[i].addr, PAGE_SIZE, DMA_BIDIRECTIONAL);
                }
                __free_page(pfn_to_page(descriptor->block_array[i].addr>>PAGE_SHIFT) );
old mode 100644 (file)
new mode 100755 (executable)
index 5bb3f10..f924705
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2010, 2013 ARM Limited. All rights reserved.
+ * Copyright (C) 2010 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.
old mode 100644 (file)
new mode 100755 (executable)
index d138f11..e7f84db
@@ -38,21 +38,17 @@ ump_memory_backend* ump_memory_backend_create ( void )
        ump_memory_backend * backend = NULL;
 
        /* Create the dynamic memory allocator backend */
-       if (0 == ump_backend)
-       {
+       if (0 == ump_backend) {
                DBG_MSG(2, ("Using dedicated memory backend\n"));
 
                DBG_MSG(2, ("Requesting dedicated memory: 0x%08x, size: %u\n", ump_memory_address, ump_memory_size));
                /* Ask the OS if we can use the specified physical memory */
-               if (NULL == request_mem_region(ump_memory_address, ump_memory_size, "UMP Memory"))
-               {
+               if (NULL == request_mem_region(ump_memory_address, ump_memory_size, "UMP Memory")) {
                        MSG_ERR(("Failed to request memory region (0x%08X - 0x%08X). Is Mali DD already loaded?\n", ump_memory_address, ump_memory_address + ump_memory_size - 1));
                        return NULL;
                }
                backend = ump_block_allocator_create(ump_memory_address, ump_memory_size);
-       }
-       else if (1 == ump_backend)
-       {
+       } else if (1 == ump_backend) {
                DBG_MSG(2, ("Using OS memory backend, allocation limit: %d\n", ump_memory_size));
                backend = ump_os_memory_backend_create(ump_memory_size);
        }
@@ -62,8 +58,7 @@ ump_memory_backend* ump_memory_backend_create ( void )
 
 void ump_memory_backend_destroy( void )
 {
-       if (0 == ump_backend)
-       {
+       if (0 == ump_backend) {
                DBG_MSG(2, ("Releasing dedicated memory: 0x%08x\n", ump_memory_address));
                release_mem_region(ump_memory_address, ump_memory_size);
        }
old mode 100644 (file)
new mode 100755 (executable)
index 1e048b1..ef1902e
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2010, 2013 ARM Limited. All rights reserved.
+ * Copyright (C) 2010 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.
old mode 100644 (file)
new mode 100755 (executable)
index 2f8aeaa..0736c93
@@ -30,8 +30,7 @@
 #include <asm/cacheflush.h>
 #include <linux/dma-mapping.h>
 
-typedef struct ump_vma_usage_tracker
-{
+typedef struct ump_vma_usage_tracker {
        atomic_t references;
        ump_memory_allocation *descriptor;
 } ump_vma_usage_tracker;
@@ -44,8 +43,7 @@ static int ump_cpu_page_fault_handler(struct vm_area_struct *vma, struct vm_faul
 static unsigned long ump_cpu_page_fault_handler(struct vm_area_struct * vma, unsigned long address);
 #endif
 
-static struct vm_operations_struct ump_vm_ops =
-{
+static struct vm_operations_struct ump_vm_ops = {
        .open = ump_vma_open,
        .close = ump_vma_close,
 #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,26)
@@ -105,8 +103,7 @@ static void ump_vma_close(struct vm_area_struct * vma)
 
        DBG_MSG(4, ("VMA close, VMA reference count decremented. VMA: 0x%08lx, reference count: %d\n", (unsigned long)vma, new_val));
 
-       if (0 == new_val)
-       {
+       if (0 == new_val) {
                ump_memory_allocation * descriptor;
 
                descriptor = vma_usage_tracker->descriptor;
@@ -133,15 +130,13 @@ _mali_osk_errcode_t _ump_osk_mem_mapregion_init( ump_memory_allocation * descrip
        if (NULL == descriptor) return _MALI_OSK_ERR_FAULT;
 
        vma_usage_tracker = kmalloc(sizeof(ump_vma_usage_tracker), GFP_KERNEL);
-       if (NULL == vma_usage_tracker)
-       {
+       if (NULL == vma_usage_tracker) {
                DBG_MSG(1, ("Failed to allocate memory for ump_vma_usage_tracker in _mali_osk_mem_mapregion_init\n"));
                return -_MALI_OSK_ERR_FAULT;
        }
 
        vma = (struct vm_area_struct*)descriptor->process_mapping_info;
-       if (NULL == vma )
-       {
+       if (NULL == vma ) {
                kfree(vma_usage_tracker);
                return _MALI_OSK_ERR_FAULT;
        }
@@ -157,8 +152,7 @@ _mali_osk_errcode_t _ump_osk_mem_mapregion_init( ump_memory_allocation * descrip
 #endif
 
 
-       if (0==descriptor->is_cached)
-       {
+       if (0==descriptor->is_cached) {
                vma->vm_page_prot = pgprot_writecombine(vma->vm_page_prot);
        }
        DBG_MSG(3, ("Mapping with page_prot: 0x%x\n", vma->vm_page_prot ));
@@ -206,13 +200,13 @@ _mali_osk_errcode_t _ump_osk_mem_mapregion_map( ump_memory_allocation * descript
 
        retval = remap_pfn_range( vma, ((u32)descriptor->mapping) + offset, (*phys_addr) >> PAGE_SHIFT, size, vma->vm_page_prot) ? _MALI_OSK_ERR_FAULT : _MALI_OSK_ERR_OK;;
 
-               DBG_MSG(4, ("Mapping virtual to physical memory. ID: %u, vma: 0x%08lx, virtual addr:0x%08lx, physical addr: 0x%08lx, size:%lu, prot:0x%x, vm_flags:0x%x RETVAL: 0x%x\n",
-                       ump_dd_secure_id_get(descriptor->handle),
-                       (unsigned long)vma,
-                       (unsigned long)(vma->vm_start + offset),
-                       (unsigned long)*phys_addr,
-                       size,
-                       (unsigned int)vma->vm_page_prot, vma->vm_flags, retval));
+       DBG_MSG(4, ("Mapping virtual to physical memory. ID: %u, vma: 0x%08lx, virtual addr:0x%08lx, physical addr: 0x%08lx, size:%lu, prot:0x%x, vm_flags:0x%x RETVAL: 0x%x\n",
+                   ump_dd_secure_id_get(descriptor->handle),
+                   (unsigned long)vma,
+                   (unsigned long)(vma->vm_start + offset),
+                   (unsigned long)*phys_addr,
+                   size,
+                   (unsigned int)vma->vm_page_prot, vma->vm_flags, retval));
 
        return retval;
 }
@@ -229,38 +223,26 @@ void _ump_osk_msync( ump_dd_mem * mem, void * virt, u32 offset, u32 size, ump_uk
 
        /* Flush L1 using virtual address, the entire range in one go.
         * Only flush if user space process has a valid write mapping on given address. */
-       if( (mem) && (virt!=NULL) && (access_ok(VERIFY_WRITE, virt, size)) )
-       {
+       if( (mem) && (virt!=NULL) && (access_ok(VERIFY_WRITE, virt, size)) ) {
                __cpuc_flush_dcache_area(virt, size);
                DBG_MSG(3, ("UMP[%02u] Flushing CPU L1 Cache. CPU address: %x, size: %x\n", mem->secure_id, virt, size));
-       }
-       else
-       {
-               if (session_data)
-               {
-                       if (op == _UMP_UK_MSYNC_FLUSH_L1  )
-                       {
+       } else {
+               if (session_data) {
+                       if (op == _UMP_UK_MSYNC_FLUSH_L1  ) {
                                DBG_MSG(4, ("UMP Pending L1 cache flushes: %d\n", session_data->has_pending_level1_cache_flush));
                                session_data->has_pending_level1_cache_flush = 0;
                                level1_cache_flush_all();
                                return;
-                       }
-                       else
-                       {
-                               if (session_data->cache_operations_ongoing)
-                               {
+                       } else {
+                               if (session_data->cache_operations_ongoing) {
                                        session_data->has_pending_level1_cache_flush++;
                                        DBG_MSG(4, ("UMP[%02u] Defering the L1 flush. Nr pending:%d\n", mem->secure_id, session_data->has_pending_level1_cache_flush) );
-                               }
-                               else
-                               {
+                               } else {
                                        /* Flushing the L1 cache for each switch_user() if ump_cache_operations_control(START) is not called */
                                        level1_cache_flush_all();
                                }
                        }
-               }
-               else
-               {
+               } else {
                        DBG_MSG(4, ("Unkown state %s %d\n", __FUNCTION__, __LINE__));
                        level1_cache_flush_all();
                }
@@ -268,77 +250,61 @@ void _ump_osk_msync( ump_dd_mem * mem, void * virt, u32 offset, u32 size, ump_uk
 
        if ( NULL == mem ) return;
 
-       if ( mem->size_bytes==size)
-       {
+       if ( mem->size_bytes==size) {
                DBG_MSG(3, ("UMP[%02u] Flushing CPU L2 Cache\n",mem->secure_id));
-       }
-       else
-       {
+       } else {
                DBG_MSG(3, ("UMP[%02u] Flushing CPU L2 Cache. Blocks:%u, TotalSize:%u. FlushSize:%u Offset:0x%x FirstPaddr:0x%08x\n",
-                   mem->secure_id, mem->nr_blocks, mem->size_bytes, size, offset, mem->block_array[0].addr));
+                           mem->secure_id, mem->nr_blocks, mem->size_bytes, size, offset, mem->block_array[0].addr));
        }
 
 
        /* Flush L2 using physical addresses, block for block. */
-       for (i=0 ; i < mem->nr_blocks; i++)
-       {
+       for (i=0 ; i < mem->nr_blocks; i++) {
                u32 start_p, end_p;
                ump_dd_physical_block *block;
                block = &mem->block_array[i];
 
-               if(offset >= block->size)
-               {
+               if(offset >= block->size) {
                        offset -= block->size;
                        continue;
                }
 
-               if(offset)
-               {
+               if(offset) {
                        start_p = (u32)block->addr + offset;
                        /* We'll zero the offset later, after using it to calculate end_p. */
-               }
-               else
-               {
+               } else {
                        start_p = (u32)block->addr;
                }
 
-               if(size < block->size - offset)
-               {
+               if(size < block->size - offset) {
                        end_p = start_p + size - 1;
                        size = 0;
-               }
-               else
-               {
-                       if(offset)
-                       {
+               } else {
+                       if(offset) {
                                end_p = start_p + (block->size - offset - 1);
                                size -= block->size - offset;
                                offset = 0;
-                       }
-                       else
-                       {
+                       } else {
                                end_p = start_p + block->size - 1;
                                size -= block->size;
                        }
                }
 
-               switch(op)
-               {
-                               case _UMP_UK_MSYNC_CLEAN:
-                                               outer_clean_range(start_p, end_p);
-                                               break;
-                               case _UMP_UK_MSYNC_CLEAN_AND_INVALIDATE:
-                                               outer_flush_range(start_p, end_p);
-                                               break;
-                               case _UMP_UK_MSYNC_INVALIDATE:
-                                               outer_inv_range(start_p, end_p);
-                                               break;
-                               default:
-                                               break;
+               switch(op) {
+               case _UMP_UK_MSYNC_CLEAN:
+                       outer_clean_range(start_p, end_p);
+                       break;
+               case _UMP_UK_MSYNC_CLEAN_AND_INVALIDATE:
+                       outer_flush_range(start_p, end_p);
+                       break;
+               case _UMP_UK_MSYNC_INVALIDATE:
+                       outer_inv_range(start_p, end_p);
+                       break;
+               default:
+                       break;
                }
 
-               if(0 == size)
-               {
+               if(0 == size) {
                        /* Nothing left to flush. */
                        break;
                }
old mode 100644 (file)
new mode 100755 (executable)
index 775c648..ddbce84
@@ -22,8 +22,7 @@
 /* is called from ump_kernel_constructor in common code */
 _mali_osk_errcode_t _ump_osk_init( void )
 {
-       if (0 != ump_kernel_device_initialize())
-       {
+       if (0 != ump_kernel_device_initialize()) {
                return _MALI_OSK_ERR_FAULT;
        }
 
old mode 100644 (file)
new mode 100755 (executable)
index aaf112c..8cbe538
@@ -30,15 +30,13 @@ int ump_allocate_wrapper(u32 __user * argument, struct ump_session_data  * sessi
        _mali_osk_errcode_t err;
 
        /* Sanity check input parameters */
-       if (NULL == argument || NULL == session_data)
-       {
+       if (NULL == argument || NULL == session_data) {
                MSG_ERR(("NULL parameter in ump_ioctl_allocate()\n"));
                return -ENOTTY;
        }
 
        /* Copy the user space memory to kernel space (so we safely can read it) */
-       if (0 != copy_from_user(&user_interaction, argument, sizeof(user_interaction)))
-       {
+       if (0 != copy_from_user(&user_interaction, argument, sizeof(user_interaction))) {
                MSG_ERR(("copy_from_user() in ump_ioctl_allocate()\n"));
                return -EFAULT;
        }
@@ -46,15 +44,13 @@ int ump_allocate_wrapper(u32 __user * argument, struct ump_session_data  * sessi
        user_interaction.ctx = (void *) session_data;
 
        err = _ump_ukk_allocate( &user_interaction );
-       if( _MALI_OSK_ERR_OK != err )
-       {
+       if( _MALI_OSK_ERR_OK != err ) {
                DBG_MSG(1, ("_ump_ukk_allocate() failed in ump_ioctl_allocate()\n"));
                return map_errcode(err);
        }
        user_interaction.ctx = NULL;
 
-       if (0 != copy_to_user(argument, &user_interaction, sizeof(user_interaction)))
-       {
+       if (0 != copy_to_user(argument, &user_interaction, sizeof(user_interaction))) {
                /* If the copy fails then we should release the memory. We can use the IOCTL release to accomplish this */
                _ump_uk_release_s release_args;
 
@@ -64,8 +60,7 @@ int ump_allocate_wrapper(u32 __user * argument, struct ump_session_data  * sessi
                release_args.secure_id = user_interaction.secure_id;
 
                err = _ump_ukk_release( &release_args );
-               if(_MALI_OSK_ERR_OK != err)
-               {
+               if(_MALI_OSK_ERR_OK != err) {
                        MSG_ERR(("_ump_ukk_release() also failed when trying to release newly allocated memory in ump_ioctl_allocate()\n"));
                }
 
old mode 100644 (file)
new mode 100755 (executable)
index 878359a..43dabd4
@@ -20,8 +20,7 @@
 #include "ump_kernel_common.h"
 
 #ifdef __cplusplus
-extern "C"
-{
+extern "C" {
 #endif
 
 
old mode 100644 (file)
new mode 100755 (executable)
index aec6dd7..6c1831e
@@ -29,23 +29,20 @@ int ump_get_api_version_wrapper(u32 __user * argument, struct ump_session_data *
        _mali_osk_errcode_t err;
 
        /* Sanity check input parameters */
-       if (NULL == argument || NULL == session_data)
-       {
+       if (NULL == argument || NULL == session_data) {
                MSG_ERR(("NULL parameter in ump_ioctl_get_api_version()\n"));
                return -ENOTTY;
        }
 
        /* Copy the user space memory to kernel space (so we safely can read it) */
-       if (0 != copy_from_user(&version_info, argument, sizeof(version_info)))
-       {
+       if (0 != copy_from_user(&version_info, argument, sizeof(version_info))) {
                MSG_ERR(("copy_from_user() in ump_ioctl_get_api_version()\n"));
                return -EFAULT;
        }
 
        version_info.ctx = (void*) session_data;
        err = _ump_uku_get_api_version( &version_info );
-       if( _MALI_OSK_ERR_OK != err )
-       {
+       if( _MALI_OSK_ERR_OK != err ) {
                MSG_ERR(("_ump_uku_get_api_version() failed in ump_ioctl_get_api_version()\n"));
                return map_errcode(err);
        }
@@ -53,8 +50,7 @@ int ump_get_api_version_wrapper(u32 __user * argument, struct ump_session_data *
        version_info.ctx = NULL;
 
        /* Copy ouput data back to user space */
-       if (0 != copy_to_user(argument, &version_info, sizeof(version_info)))
-       {
+       if (0 != copy_to_user(argument, &version_info, sizeof(version_info))) {
                MSG_ERR(("copy_to_user() failed in ump_ioctl_get_api_version()\n"));
                return -EFAULT;
        }
@@ -72,23 +68,20 @@ int ump_release_wrapper(u32 __user * argument, struct ump_session_data  * sessio
        _mali_osk_errcode_t err;
 
        /* Sanity check input parameters */
-       if (NULL == session_data)
-       {
+       if (NULL == session_data) {
                MSG_ERR(("NULL parameter in ump_ioctl_release()\n"));
                return -ENOTTY;
        }
 
        /* Copy the user space memory to kernel space (so we safely can read it) */
-       if (0 != copy_from_user(&release_args, argument, sizeof(release_args)))
-       {
+       if (0 != copy_from_user(&release_args, argument, sizeof(release_args))) {
                MSG_ERR(("copy_from_user() in ump_ioctl_get_api_version()\n"));
                return -EFAULT;
        }
 
        release_args.ctx = (void*) session_data;
        err = _ump_ukk_release( &release_args );
-       if( _MALI_OSK_ERR_OK != err )
-       {
+       if( _MALI_OSK_ERR_OK != err ) {
                MSG_ERR(("_ump_ukk_release() failed in ump_ioctl_release()\n"));
                return map_errcode(err);
        }
@@ -106,30 +99,26 @@ int ump_size_get_wrapper(u32 __user * argument, struct ump_session_data  * sessi
        _mali_osk_errcode_t err;
 
        /* Sanity check input parameters */
-       if (NULL == argument || NULL == session_data)
-       {
+       if (NULL == argument || NULL == session_data) {
                MSG_ERR(("NULL parameter in ump_ioctl_size_get()\n"));
                return -ENOTTY;
        }
 
-       if (0 != copy_from_user(&user_interaction, argument, sizeof(user_interaction)))
-       {
+       if (0 != copy_from_user(&user_interaction, argument, sizeof(user_interaction))) {
                MSG_ERR(("copy_from_user() in ump_ioctl_size_get()\n"));
                return -EFAULT;
        }
 
        user_interaction.ctx = (void *) session_data;
        err = _ump_ukk_size_get( &user_interaction );
-       if( _MALI_OSK_ERR_OK != err )
-       {
+       if( _MALI_OSK_ERR_OK != err ) {
                MSG_ERR(("_ump_ukk_size_get() failed in ump_ioctl_size_get()\n"));
                return map_errcode(err);
        }
 
        user_interaction.ctx = NULL;
 
-       if (0 != copy_to_user(argument, &user_interaction, sizeof(user_interaction)))
-       {
+       if (0 != copy_to_user(argument, &user_interaction, sizeof(user_interaction))) {
                MSG_ERR(("copy_to_user() failed in ump_ioctl_size_get()\n"));
                return -EFAULT;
        }
@@ -145,14 +134,12 @@ int ump_msync_wrapper(u32 __user * argument, struct ump_session_data  * session_
        _ump_uk_msync_s user_interaction;
 
        /* Sanity check input parameters */
-       if (NULL == argument || NULL == session_data)
-       {
+       if (NULL == argument || NULL == session_data) {
                MSG_ERR(("NULL parameter in ump_ioctl_size_get()\n"));
                return -ENOTTY;
        }
 
-       if (0 != copy_from_user(&user_interaction, argument, sizeof(user_interaction)))
-       {
+       if (0 != copy_from_user(&user_interaction, argument, sizeof(user_interaction))) {
                MSG_ERR(("copy_from_user() in ump_ioctl_msync()\n"));
                return -EFAULT;
        }
@@ -163,8 +150,7 @@ int ump_msync_wrapper(u32 __user * argument, struct ump_session_data  * session_
 
        user_interaction.ctx = NULL;
 
-       if (0 != copy_to_user(argument, &user_interaction, sizeof(user_interaction)))
-       {
+       if (0 != copy_to_user(argument, &user_interaction, sizeof(user_interaction))) {
                MSG_ERR(("copy_to_user() failed in ump_ioctl_msync()\n"));
                return -EFAULT;
        }
@@ -176,14 +162,12 @@ int ump_cache_operations_control_wrapper(u32 __user * argument, struct ump_sessi
        _ump_uk_cache_operations_control_s user_interaction;
 
        /* Sanity check input parameters */
-       if (NULL == argument || NULL == session_data)
-       {
+       if (NULL == argument || NULL == session_data) {
                MSG_ERR(("NULL parameter in ump_ioctl_size_get()\n"));
                return -ENOTTY;
        }
 
-       if (0 != copy_from_user(&user_interaction, argument, sizeof(user_interaction)))
-       {
+       if (0 != copy_from_user(&user_interaction, argument, sizeof(user_interaction))) {
                MSG_ERR(("copy_from_user() in ump_ioctl_cache_operations_control()\n"));
                return -EFAULT;
        }
@@ -195,8 +179,7 @@ int ump_cache_operations_control_wrapper(u32 __user * argument, struct ump_sessi
        user_interaction.ctx = NULL;
 
 #if 0  /* No data to copy back */
-       if (0 != copy_to_user(argument, &user_interaction, sizeof(user_interaction)))
-       {
+       if (0 != copy_to_user(argument, &user_interaction, sizeof(user_interaction))) {
                MSG_ERR(("copy_to_user() failed in ump_ioctl_cache_operations_control()\n"));
                return -EFAULT;
        }
@@ -209,14 +192,12 @@ int ump_switch_hw_usage_wrapper(u32 __user * argument, struct ump_session_data
        _ump_uk_switch_hw_usage_s user_interaction;
 
        /* Sanity check input parameters */
-       if (NULL == argument || NULL == session_data)
-       {
+       if (NULL == argument || NULL == session_data) {
                MSG_ERR(("NULL parameter in ump_ioctl_size_get()\n"));
                return -ENOTTY;
        }
 
-       if (0 != copy_from_user(&user_interaction, argument, sizeof(user_interaction)))
-       {
+       if (0 != copy_from_user(&user_interaction, argument, sizeof(user_interaction))) {
                MSG_ERR(("copy_from_user() in ump_ioctl_switch_hw_usage()\n"));
                return -EFAULT;
        }
@@ -228,8 +209,7 @@ int ump_switch_hw_usage_wrapper(u32 __user * argument, struct ump_session_data
        user_interaction.ctx = NULL;
 
 #if 0  /* No data to copy back */
-       if (0 != copy_to_user(argument, &user_interaction, sizeof(user_interaction)))
-       {
+       if (0 != copy_to_user(argument, &user_interaction, sizeof(user_interaction))) {
                MSG_ERR(("copy_to_user() failed in ump_ioctl_switch_hw_usage()\n"));
                return -EFAULT;
        }
@@ -242,14 +222,12 @@ int ump_lock_wrapper(u32 __user * argument, struct ump_session_data  * session_d
        _ump_uk_lock_s user_interaction;
 
        /* Sanity check input parameters */
-       if (NULL == argument || NULL == session_data)
-       {
+       if (NULL == argument || NULL == session_data) {
                MSG_ERR(("NULL parameter in ump_ioctl_size_get()\n"));
                return -ENOTTY;
        }
 
-       if (0 != copy_from_user(&user_interaction, argument, sizeof(user_interaction)))
-       {
+       if (0 != copy_from_user(&user_interaction, argument, sizeof(user_interaction))) {
                MSG_ERR(("copy_from_user() in ump_ioctl_switch_hw_usage()\n"));
                return -EFAULT;
        }
@@ -261,8 +239,7 @@ int ump_lock_wrapper(u32 __user * argument, struct ump_session_data  * session_d
        user_interaction.ctx = NULL;
 
 #if 0  /* No data to copy back */
-       if (0 != copy_to_user(argument, &user_interaction, sizeof(user_interaction)))
-       {
+       if (0 != copy_to_user(argument, &user_interaction, sizeof(user_interaction))) {
                MSG_ERR(("copy_to_user() failed in ump_ioctl_switch_hw_usage()\n"));
                return -EFAULT;
        }
@@ -276,14 +253,12 @@ int ump_unlock_wrapper(u32 __user * argument, struct ump_session_data  * session
        _ump_uk_unlock_s user_interaction;
 
        /* Sanity check input parameters */
-       if (NULL == argument || NULL == session_data)
-       {
+       if (NULL == argument || NULL == session_data) {
                MSG_ERR(("NULL parameter in ump_ioctl_size_get()\n"));
                return -ENOTTY;
        }
 
-       if (0 != copy_from_user(&user_interaction, argument, sizeof(user_interaction)))
-       {
+       if (0 != copy_from_user(&user_interaction, argument, sizeof(user_interaction))) {
                MSG_ERR(("copy_from_user() in ump_ioctl_switch_hw_usage()\n"));
                return -EFAULT;
        }
@@ -295,8 +270,7 @@ int ump_unlock_wrapper(u32 __user * argument, struct ump_session_data  * session
        user_interaction.ctx = NULL;
 
 #if 0  /* No data to copy back */
-       if (0 != copy_to_user(argument, &user_interaction, sizeof(user_interaction)))
-       {
+       if (0 != copy_to_user(argument, &user_interaction, sizeof(user_interaction))) {
                MSG_ERR(("copy_to_user() failed in ump_ioctl_switch_hw_usage()\n"));
                return -EFAULT;
        }
old mode 100644 (file)
new mode 100755 (executable)
index 6465b71..ba76e3d
@@ -20,8 +20,7 @@
 #include "ump_kernel_common.h"
 
 #ifdef __cplusplus
-extern "C"
-{
+extern "C" {
 #endif
 
 
old mode 100644 (file)
new mode 100755 (executable)
diff --git a/umplock/Makefile b/umplock/Makefile
new file mode 100755 (executable)
index 0000000..d1d5c4c
--- /dev/null
@@ -0,0 +1,69 @@
+#
+# Copyright (C) 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.
+#
+
+# default to building for the host
+ARCH ?= $(shell uname -m)
+
+# linux build system integration
+
+ifneq ($(KERNELRELEASE),)
+# Inside the kernel build system
+
+EXTRA_CFLAGS += -I$(KBUILD_EXTMOD)
+
+SRC =  umplock_driver.c
+
+MODULE:=umplock.ko
+
+obj-m := $(MODULE:.ko=.o)
+$(MODULE:.ko=-y) := $(SRC:.c=.o)
+
+$(MODULE:.ko=-objs) := $(SRC:.c=.o) 
+
+else
+# Outside the kernel build system
+#
+#
+
+# Get any user defined KDIR-<names> or maybe even a hardcoded KDIR
+-include KDIR_CONFIGURATION
+
+# Define host system directory
+KDIR-$(shell uname -m):=/lib/modules/$(shell uname -r)/build
+
+ifeq ($(ARCH), arm)
+       # when compiling for ARM we're cross compiling
+       export CROSS_COMPILE ?= arm-none-linux-gnueabi-
+       CONFIG ?= arm
+else
+       # Compiling for the host
+       CONFIG ?= $(shell uname -m)
+endif
+
+# default cpu to select
+CPU ?= $(shell uname -m)
+
+# look up KDIR based om CPU selection
+KDIR ?= $(KDIR-$(CPU))
+
+ifeq ($(KDIR),)
+$(error No KDIR found for platform $(CPU))
+endif
+
+all:
+       $(MAKE) ARCH=$(ARCH) -C $(KDIR) M=$(CURDIR)
+
+kernelrelease:
+       $(MAKE) -C $(KDIR) kernelrelease
+
+clean:
+       $(MAKE) ARCH=$(ARCH) -C $(KDIR) M=$(CURDIR) clean
+
+endif
diff --git a/umplock/umplock_driver.c b/umplock/umplock_driver.c
new file mode 100755 (executable)
index 0000000..bd537b3
--- /dev/null
@@ -0,0 +1,598 @@
+/*
+ * Copyright (C) 2012-2013 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.
+ */
+
+#include <linux/init.h>
+#include <linux/module.h>
+#include <linux/fs.h>
+#include <linux/slab.h>
+#include <linux/cdev.h>
+#include <linux/device.h>
+#include <asm/uaccess.h>
+#include "umplock_ioctl.h"
+#include <linux/sched.h>
+
+#define MAX_ITEMS 1024
+#define MAX_PIDS 128
+
+typedef struct lock_cmd_priv {
+       uint32_t msg[128];    /*ioctl args*/
+       u32 pid;                          /*process id*/
+} _lock_cmd_priv;
+
+typedef struct lock_ref {
+       int ref_count;
+       u32 pid;
+} _lock_ref;
+
+typedef struct umplock_item {
+       u32 secure_id;
+       /*u32 references;*/
+       _lock_access_usage usage;
+       _lock_ref references[MAX_PIDS];
+       struct semaphore item_lock;
+} umplock_item;
+
+typedef struct umplock_device_private {
+       struct mutex item_list_lock;
+       atomic_t sessions;
+       umplock_item items[MAX_ITEMS];
+       u32 pids[MAX_PIDS];
+} umplock_device_private;
+
+struct umplock_device {
+       struct cdev cdev;
+       struct class *umplock_class;
+};
+
+static char umplock_dev_name[] = "umplock";
+
+int umplock_major = 0;
+module_param(umplock_major, int, S_IRUGO); /* r--r--r-- */
+MODULE_PARM_DESC(umplock_major, "Device major number");
+
+static int  umplock_driver_open( struct inode *inode, struct file *filp );
+static int  umplock_driver_release( struct inode *inode, struct file *filp );
+static long umplock_driver_ioctl( struct file *f, unsigned int cmd, unsigned long arg );
+
+static struct file_operations umplock_fops = {
+       .owner   = THIS_MODULE,
+       .open    = umplock_driver_open,
+       .release = umplock_driver_release,
+       .unlocked_ioctl = umplock_driver_ioctl,
+};
+
+static struct umplock_device umplock_device;
+static umplock_device_private device;
+
+void umplock_init_locklist( void )
+{
+       memset(&device.items, 0, sizeof(umplock_item)*MAX_ITEMS);
+       atomic_set(&device.sessions, 0);
+}
+
+void umplock_deinit_locklist( void )
+{
+       memset(&device.items, 0, sizeof(umplock_item)*MAX_ITEMS);
+}
+
+int umplock_device_initialize( void )
+{
+       int err;
+       dev_t dev = 0;
+
+       if ( 0 == umplock_major ) {
+               err = alloc_chrdev_region(&dev, 0, 1, umplock_dev_name);
+               umplock_major = MAJOR(dev);
+       } else {
+               dev = MKDEV(umplock_major, 0);
+               err = register_chrdev_region(dev, 1, umplock_dev_name);
+       }
+
+       if ( 0 == err ) {
+               memset(&umplock_device, 0, sizeof(umplock_device));
+               cdev_init(&umplock_device.cdev, &umplock_fops);
+               umplock_device.cdev.owner = THIS_MODULE;
+               umplock_device.cdev.ops = &umplock_fops;
+
+               err = cdev_add(&umplock_device.cdev, dev, 1);
+               if ( 0 == err ) {
+                       umplock_device.umplock_class = class_create(THIS_MODULE, umplock_dev_name);
+                       if ( IS_ERR(umplock_device.umplock_class ) ) {
+                               err = PTR_ERR(umplock_device.umplock_class);
+                       } else {
+                               struct device *mdev;
+                               mdev = device_create(umplock_device.umplock_class, NULL, dev, NULL, umplock_dev_name);
+                               if ( !IS_ERR(mdev) ) {
+                                       return 0; /* all ok */
+                               }
+
+                               err = PTR_ERR(mdev);
+                               class_destroy(umplock_device.umplock_class);
+                       }
+                       cdev_del(&umplock_device.cdev);
+               }
+
+               unregister_chrdev_region(dev, 1);
+       }
+
+       return 1;
+}
+
+void umplock_device_terminate(void)
+{
+       dev_t dev = MKDEV(umplock_major, 0);
+
+       device_destroy(umplock_device.umplock_class, dev);
+       class_destroy(umplock_device.umplock_class);
+
+       cdev_del(&umplock_device.cdev);
+       unregister_chrdev_region(dev, 1);
+}
+
+int umplock_constructor(void)
+{
+       mutex_init(&device.item_list_lock);
+       if ( !umplock_device_initialize() ) return 1;
+       umplock_init_locklist();
+
+       return 0;
+}
+
+void umplock_destructor(void)
+{
+       umplock_deinit_locklist();
+       umplock_device_terminate();
+       mutex_destroy(&device.item_list_lock);
+}
+
+int umplock_find_item( u32 secure_id )
+{
+       int i;
+       for ( i=0; i<MAX_ITEMS; i++ ) {
+               if ( device.items[i].secure_id == secure_id ) return i;
+       }
+
+       return -1;
+}
+
+int umplock_find_slot( void )
+{
+       int i;
+       for ( i=0; i<MAX_ITEMS; i++ ) {
+               if ( device.items[i].secure_id == 0 ) return i;
+       }
+
+       return -1;
+}
+
+static int umplock_find_item_by_pid( _lock_cmd_priv *lock_cmd, int *item_slot, int *ref_slot)
+{
+       _lock_item_s *lock_item;
+       int i,j;
+
+       lock_item = (_lock_item_s *)&lock_cmd->msg;
+
+       i = umplock_find_item(lock_item->secure_id);
+
+       if ( i < 0)
+               return -1;
+
+       for(j=0; j<MAX_PIDS; j++) {
+               if(device.items[i].references[j].pid == lock_cmd->pid) {
+                       *item_slot = i;
+                       *ref_slot = j;
+                       return 0;
+               }
+       }
+       return -1 ;
+}
+
+static int umplock_find_client_valid(u32 pid)
+{
+       int i;
+
+       if(pid == 0)
+               return -1;
+
+       for(i=0; i<MAX_PIDS; i++) {
+               if(device.pids[i] == pid) return i;
+       }
+
+       return -1;
+}
+
+static int do_umplock_create_locked( _lock_cmd_priv *lock_cmd)
+{
+       int i_index,ref_index;
+       int ret;
+       _lock_item_s *lock_item = (_lock_item_s *)&lock_cmd->msg;
+
+       i_index = ref_index = -1;
+
+#if 0
+       if ( lock_item->usage == 1 ) printk( KERN_DEBUG "UMPLOCK: C 0x%x GPU SURFACE\n", lock_item->secure_id );
+       else if ( lock_item->usage == 2 ) printk( KERN_DEBUG "UMPLOCK: C 0x%x GPU TEXTURE\n", lock_item->secure_id );
+       else printk( KERN_DEBUG "UMPLOCK: C 0x%x CPU\n", lock_item->secure_id );
+#endif
+
+       ret = umplock_find_client_valid( lock_cmd->pid );
+       if( ret < 0 ) {
+               /*lock request from an invalid client pid, do nothing*/
+               return 0;
+       }
+
+       ret = umplock_find_item_by_pid( lock_cmd, &i_index, &ref_index );
+       if ( ret >= 0 ) {
+               if (device.items[i_index].references[ref_index].ref_count == 0)
+                       device.items[i_index].references[ref_index].ref_count = 1;
+       } else if ( (i_index = umplock_find_item( lock_item->secure_id)) >= 0 ) {
+               for ( ref_index = 0; ref_index < MAX_PIDS; ref_index++) {
+                       if (device.items[i_index].references[ref_index].pid == 0) break;
+               }
+               if ( ref_index < MAX_PIDS ) {
+                       device.items[i_index].references[ref_index].pid = lock_cmd->pid;
+                       device.items[i_index].references[ref_index].ref_count = 1;
+               } else {
+                       printk( KERN_ERR "UMPLOCK: whoops, item ran out of available reference slot\n" );
+               }
+       } else {
+               i_index = umplock_find_slot();
+
+               if ( i_index >= 0 ) {
+                       device.items[i_index].secure_id = lock_item->secure_id;
+                       device.items[i_index].usage = lock_item->usage;
+                       device.items[i_index].references[0].pid = lock_cmd->pid;
+                       device.items[i_index].references[0].ref_count = 1;
+                       sema_init(&device.items[i_index].item_lock, 1);
+               } else {
+                       printk( KERN_ERR "UMPLOCK: whoops, ran out of available slots\n" );
+               }
+       }
+
+       return 0;
+}
+/** IOCTLs **/
+
+static int do_umplock_create(_lock_cmd_priv *lock_cmd)
+{
+       int ret = 0;
+       mutex_lock(&device.item_list_lock);
+       ret = do_umplock_create_locked(lock_cmd);
+       mutex_unlock(&device.item_list_lock);
+       return ret;
+}
+
+static int do_umplock_process( _lock_cmd_priv *lock_cmd )
+{
+       int ret, i_index, ref_index, ref_count;
+       _lock_item_s *lock_item = (_lock_item_s *)&lock_cmd->msg;
+
+       mutex_lock(&device.item_list_lock);
+
+       do_umplock_create_locked(lock_cmd);
+
+       ret = umplock_find_client_valid( lock_cmd->pid );
+       if( ret < 0 ) {
+               /*lock request from an invalid client pid, do nothing*/
+               mutex_unlock(&device.item_list_lock);
+               return 0;
+       }
+
+       ret = umplock_find_item_by_pid( lock_cmd, &i_index, &ref_index );
+       ref_count = device.items[i_index].references[ref_index].ref_count;
+       if ( ret >= 0 ) {
+               if (ref_count == 1) {
+                       /*add ref before down to wait for the umplock*/
+                       device.items[i_index].references[ref_index].ref_count++;
+                       mutex_unlock(&device.item_list_lock);
+                       if ( down_interruptible(&device.items[i_index].item_lock) ) {
+                               /*wait up without hold the umplock. restore previous state and return*/
+                               mutex_lock(&device.item_list_lock);
+                               device.items[i_index].references[ref_index].ref_count--;
+                               mutex_unlock(&device.item_list_lock);
+                               return -ERESTARTSYS;
+                       }
+                       mutex_lock(&device.item_list_lock);
+               } else {
+                       /*already got the umplock, add ref*/
+                       device.items[i_index].references[ref_index].ref_count++;
+               }
+#if 0
+               if ( lock_item->usage == 1 ) printk( KERN_DEBUG "UMPLOCK:  P 0x%x GPU SURFACE\n", lock_item->secure_id );
+               else if ( lock_item->usage == 2 ) printk( KERN_DEBUG "UMPLOCK:  P 0x%x GPU TEXTURE\n", lock_item->secure_id );
+               else printk( KERN_DEBUG "UMPLOCK:  P 0x%x CPU\n", lock_item->secure_id );
+#endif
+       } else {
+               /*fail to find a item*/
+               printk(KERN_ERR "UMPLOCK: IOCTL_UMPLOCK_PROCESS called with invalid parameter\n");
+               mutex_unlock(&device.item_list_lock);
+               return -EINVAL;
+       }
+       mutex_unlock(&device.item_list_lock);
+       return 0;
+}
+
+static int do_umplock_release( _lock_cmd_priv *lock_cmd )
+{
+       int i_index,ref_index, ref_count;
+       int ret;
+       _lock_item_s *lock_item = (_lock_item_s *)&lock_cmd->msg;
+
+       mutex_lock(&device.item_list_lock);
+       ret = umplock_find_client_valid( lock_cmd->pid );
+       if( ret < 0 ) {
+               /*lock request from an invalid client pid, do nothing*/
+               mutex_unlock(&device.item_list_lock);
+               return 0;
+       }
+
+       i_index = ref_index = -1;
+
+       ret = umplock_find_item_by_pid( lock_cmd, &i_index, &ref_index );
+
+       if ( ret >= 0 ) {
+               device.items[i_index].references[ref_index].ref_count--;
+               ref_count = device.items[i_index].references[ref_index].ref_count;
+
+#if 0
+               if ( lock_item->usage == 1 ) printk( KERN_DEBUG "UMPLOCK:   R 0x%x GPU SURFACE\n", lock_item->secure_id );
+               else if ( lock_item->usage == 2 ) printk( KERN_DEBUG "UMPLOCK:   R 0x%x GPU TEXTURE\n", lock_item->secure_id );
+               else printk( KERN_DEBUG "UMPLOCK:   R 0x%x CPU\n", lock_item->secure_id );
+#endif
+               /*reached the last reference to the umplock*/
+               if ( ref_count == 1 ) {
+                       /*release the umplock*/
+                       up( &device.items[i_index].item_lock );
+
+                       device.items[i_index].references[ref_index].ref_count = 0;
+                       device.items[i_index].references[ref_index].pid = 0;
+               }
+       } else {
+               /*fail to find item*/
+               printk(KERN_ERR "UMPLOCK: IOCTL_UMPLOCK_RELEASE called with invalid parameter\n");
+               mutex_unlock(&device.item_list_lock);
+               return -EINVAL;
+       }
+       mutex_unlock(&device.item_list_lock);
+       return 0;
+}
+
+static int do_umplock_zap( void )
+{
+       int i;
+
+       printk( KERN_DEBUG "UMPLOCK: ZAP ALL ENTRIES!\n" );
+
+       mutex_lock(&device.item_list_lock);
+
+       for ( i=0; i<MAX_ITEMS; i++ ) {
+               device.items[i].secure_id = 0;
+               memset(&device.items[i].references, 0, sizeof(_lock_ref)*MAX_PIDS);
+               sema_init(&device.items[i].item_lock, 1);
+       }
+       mutex_unlock(&device.item_list_lock);
+
+       for ( i=0; i<MAX_PIDS; i++) {
+               device.pids[i] = 0;
+       }
+       return 0;
+}
+
+static int do_umplock_dump( void )
+{
+       int i, j;
+
+       printk("dump all the items\n");
+
+       mutex_lock(&device.item_list_lock);
+       for (i = 0; i < MAX_ITEMS; i++) {
+               for (j = 0; j < MAX_PIDS; j++) {
+                       if (device.items[i].secure_id != 0 && device.items[i].references[j].pid != 0) {
+                               printk("item[%d]->secure_id=%d\t reference[%d].ref_count=%d.pid=%d\n",
+                                      i,
+                                      device.items[i].secure_id,
+                                      j,
+                                      device.items[i].references[j].ref_count,
+                                      device.items[i].references[j].pid);
+                       }
+               }
+       }
+       mutex_unlock(&device.item_list_lock);
+
+       return 0;
+}
+
+int do_umplock_client_add (_lock_cmd_priv *lock_cmd )
+{
+       int i;
+       mutex_lock(&device.item_list_lock);
+       for ( i= 0; i<MAX_PIDS; i++) {
+               if(device.pids[i] == lock_cmd->pid) {
+                       return 0;
+               }
+       }
+       for ( i=0; i<MAX_PIDS; i++) {
+               if(device.pids[i]==0) {
+                       device.pids[i] = lock_cmd->pid;
+                       break;
+               }
+       }
+       mutex_unlock(&device.item_list_lock);
+       if( i==MAX_PIDS) {
+               printk(KERN_ERR "Oops, Run out of cient slots\n ");
+       }
+       return 0;
+}
+
+int do_umplock_client_delete (_lock_cmd_priv *lock_cmd )
+{
+       int p_index=-1, i_index=-1,ref_index=-1;
+       int ret;
+       _lock_item_s *lock_item;
+       lock_item = (_lock_item_s *)&lock_cmd->msg;
+
+       mutex_lock(&device.item_list_lock);
+       p_index = umplock_find_client_valid( lock_cmd->pid );
+       /*lock item pid is not valid.*/
+       if ( p_index<0 ) {
+               mutex_unlock(&device.item_list_lock);
+               return 0;
+       }
+
+       /*walk through umplock item list and release reference attached to this client*/
+       for(i_index = 0; i_index< MAX_ITEMS; i_index++ ) {
+               lock_item->secure_id = device.items[i_index].secure_id;
+               /*find the item index and reference slot for the lock_item*/
+               ret = umplock_find_item_by_pid(lock_cmd, &i_index, &ref_index);
+
+               if(ret < 0) {
+                       /*client has no reference on this umplock item, skip*/
+                       continue;
+               }
+               while(device.items[i_index].references[ref_index].ref_count) {
+                       /*release references on this client*/
+                       mutex_unlock(&device.item_list_lock);
+                       do_umplock_release(lock_cmd);
+                       mutex_lock(&device.item_list_lock);
+               }
+       }
+
+       /*remove the pid from umplock valid pid list*/
+       device.pids[p_index] = 0;
+       mutex_unlock(&device.item_list_lock);
+
+       return 0;
+}
+
+static long umplock_driver_ioctl( struct file *f, unsigned int cmd, unsigned long arg )
+{
+       int ret;
+       uint32_t size = _IOC_SIZE(cmd);
+       _lock_cmd_priv lock_cmd ;
+
+       if (_IOC_TYPE(cmd) != LOCK_IOCTL_GROUP ) {
+               return -ENOTTY;
+       }
+
+       if (_IOC_NR(cmd) >= LOCK_IOCTL_MAX_CMDS ) {
+               return -ENOTTY;
+       }
+
+       switch ( cmd ) {
+       case LOCK_IOCTL_CREATE:
+               if (size != sizeof(_lock_item_s)) {
+                       return -ENOTTY;
+               }
+
+               if (copy_from_user(&lock_cmd.msg, (void __user *)arg, size)) {
+                       return -EFAULT;
+               }
+               lock_cmd.pid = (u32)current->tgid;
+               ret = do_umplock_create(&lock_cmd);
+               if (ret) {
+                       return ret;
+               }
+               return 0;
+
+       case LOCK_IOCTL_PROCESS:
+               if (size != sizeof(_lock_item_s)) {
+                       return -ENOTTY;
+               }
+
+               if (copy_from_user(&lock_cmd.msg, (void __user *)arg, size)) {
+                       return -EFAULT;
+               }
+               lock_cmd.pid = (u32)current->tgid;
+               return do_umplock_process(&lock_cmd);
+
+       case LOCK_IOCTL_RELEASE:
+               if (size != sizeof(_lock_item_s)) {
+                       return -ENOTTY;
+               }
+
+               if (copy_from_user(&lock_cmd.msg, (void __user *)arg, size)) {
+                       return -EFAULT;
+               }
+               lock_cmd.pid = (u32)current->tgid;
+               ret = do_umplock_release( &lock_cmd );
+               if (ret) {
+                       return ret;
+               }
+               return 0;
+
+       case LOCK_IOCTL_ZAP:
+               do_umplock_zap();
+               return 0;
+
+       case LOCK_IOCTL_DUMP:
+               do_umplock_dump();
+               return 0;
+       }
+
+       return -ENOIOCTLCMD;
+}
+
+static int umplock_driver_open( struct inode *inode, struct file *filp )
+{
+       _lock_cmd_priv lock_cmd;
+
+       atomic_inc(&device.sessions);
+       printk( KERN_DEBUG "UMPLOCK: OPEN SESSION (%i references)\n", atomic_read(&device.sessions) );
+
+       lock_cmd.pid = (u32)current->tgid;
+       do_umplock_client_add(&lock_cmd);
+
+       return 0;
+}
+
+static int umplock_driver_release( struct inode *inode, struct file *filp )
+{
+       _lock_cmd_priv lock_cmd;
+
+       lock_cmd.pid = (u32)current->tgid;
+       do_umplock_client_delete(&lock_cmd);
+
+       atomic_dec(&device.sessions);
+       printk( KERN_DEBUG "UMPLOCK: CLOSE SESSION (%i references)\n", atomic_read(&device.sessions) );
+       if ( atomic_read(&device.sessions) == 0 ) {
+               do_umplock_zap();
+       }
+
+       return 0;
+}
+
+static int __init umplock_initialize_module( void )
+{
+       printk( KERN_DEBUG "Inserting UMP lock device driver. Compiled: %s, time: %s\n", __DATE__, __TIME__ );
+
+       if ( !umplock_constructor() ) {
+               printk( KERN_ERR "UMP lock device driver init failed\n");
+               return -ENOTTY;
+       }
+
+       printk( KERN_DEBUG "UMP lock device driver loaded\n" );
+
+       return 0;
+}
+
+static void __exit umplock_cleanup_module( void )
+{
+       printk( KERN_DEBUG "unloading UMP lock module\n" );
+       umplock_destructor();
+       printk( KERN_DEBUG "UMP lock module unloaded\n" );
+}
+
+module_init(umplock_initialize_module);
+module_exit(umplock_cleanup_module);
+
+
+MODULE_LICENSE("GPL");
+MODULE_AUTHOR("ARM Ltd.");
+MODULE_DESCRIPTION("ARM UMP locker");
diff --git a/umplock/umplock_ioctl.h b/umplock/umplock_ioctl.h
new file mode 100755 (executable)
index 0000000..88b0a46
--- /dev/null
@@ -0,0 +1,66 @@
+/*
+ * Copyright (C) 2012-2013 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.
+ */
+
+#ifndef __UMPLOCK_IOCTL_H__
+#define __UMPLOCK_IOCTL_H__
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <linux/types.h>
+#include <linux/ioctl.h>
+
+#ifndef __user
+#define __user
+#endif
+
+
+/**
+ * @file umplock_ioctl.h
+ * This file describes the interface needed to use the Linux device driver.
+ * The interface is used by the userpace Mali DDK.
+ */
+
+typedef enum {
+       _LOCK_ACCESS_RENDERABLE = 1,
+       _LOCK_ACCESS_TEXTURE,
+       _LOCK_ACCESS_CPU_WRITE,
+       _LOCK_ACCESS_CPU_READ,
+} _lock_access_usage;
+
+typedef struct _lock_item_s {
+       unsigned int secure_id;
+       _lock_access_usage usage;
+} _lock_item_s;
+
+
+#define LOCK_IOCTL_GROUP 0x91
+
+#define _LOCK_IOCTL_CREATE_CMD  0   /* create kernel lock item        */
+#define _LOCK_IOCTL_PROCESS_CMD 1   /* process kernel lock item       */
+#define _LOCK_IOCTL_RELEASE_CMD 2   /* release kernel lock item       */
+#define _LOCK_IOCTL_ZAP_CMD     3   /* clean up all kernel lock items */
+#define _LOCK_IOCTL_DUMP_CMD    4   /* dump all the items */
+
+#define LOCK_IOCTL_MAX_CMDS     5
+
+#define LOCK_IOCTL_CREATE  _IOW( LOCK_IOCTL_GROUP, _LOCK_IOCTL_CREATE_CMD,  _lock_item_s )
+#define LOCK_IOCTL_PROCESS _IOW( LOCK_IOCTL_GROUP, _LOCK_IOCTL_PROCESS_CMD, _lock_item_s )
+#define LOCK_IOCTL_RELEASE _IOW( LOCK_IOCTL_GROUP, _LOCK_IOCTL_RELEASE_CMD, _lock_item_s )
+#define LOCK_IOCTL_ZAP     _IO ( LOCK_IOCTL_GROUP, _LOCK_IOCTL_ZAP_CMD )
+#define LOCK_IOCTL_DUMP    _IO ( LOCK_IOCTL_GROUP, _LOCK_IOCTL_DUMP_CMD )
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __UMPLOCK_IOCTL_H__ */
+