| /** |
| * Copyright (C) ARM Limited 2012-2014. All rights reserved. |
| * |
| * This program is free software; you can redistribute it and/or modify |
| * it under the terms of the GNU General Public License version 2 as |
| * published by the Free Software Foundation. |
| * |
| */ |
| |
| #if !defined(GATOR_EVENTS_MALI_COMMON_H) |
| #define GATOR_EVENTS_MALI_COMMON_H |
| |
| #include "gator.h" |
| |
| #include <linux/module.h> |
| #include <linux/time.h> |
| #include <linux/math64.h> |
| #include <linux/slab.h> |
| #include <asm/io.h> |
| |
| /* Device codes for each known GPU */ |
| #define MALI_4xx (0x0b07) |
| #define MALI_T6xx (0x0056) |
| |
| /* Ensure that MALI_SUPPORT has been defined to something. */ |
| #ifndef MALI_SUPPORT |
| #error MALI_SUPPORT not defined! |
| #endif |
| |
| /* Values for the supported activity event types */ |
| #define ACTIVITY_START (1) |
| #define ACTIVITY_STOP (2) |
| |
| /* |
| * Runtime state information for a counter. |
| */ |
| typedef struct { |
| unsigned long key; /* 'key' (a unique id set by gatord and returned by gator.ko) */ |
| unsigned long enabled; /* counter enable state */ |
| } mali_counter; |
| |
| /* |
| * Mali-4xx |
| */ |
| typedef int mali_profiling_set_event_type(unsigned int, int); |
| typedef void mali_profiling_control_type(unsigned int, unsigned int); |
| typedef void mali_profiling_get_counters_type(unsigned int *, unsigned int *, unsigned int *, unsigned int *); |
| |
| /* |
| * Driver entry points for functions called directly by gator. |
| */ |
| extern int _mali_profiling_set_event(unsigned int, int); |
| extern void _mali_profiling_control(unsigned int, unsigned int); |
| extern void _mali_profiling_get_counters(unsigned int *, unsigned int *, unsigned int *, unsigned int *); |
| |
| /** |
| * Returns a name which identifies the GPU type (eg Mali-4xx, Mali-T6xx). |
| * |
| * @return The name as a constant string. |
| */ |
| extern const char *gator_mali_get_mali_name(void); |
| |
| /** |
| * Creates a filesystem entry under /dev/gator relating to the specified event name and key, and |
| * associate the key/enable values with this entry point. |
| * |
| * @param mali_name A name related to the type of GPU, obtained from a call to gator_mali_get_mali_name() |
| * @param event_name The name of the event. |
| * @param sb Linux super block |
| * @param root Directory under which the entry will be created. |
| * @param counter_key Ptr to location which will be associated with the counter key. |
| * @param counter_enabled Ptr to location which will be associated with the counter enable state. |
| * |
| * @return 0 if entry point was created, non-zero if not. |
| */ |
| extern int gator_mali_create_file_system(const char *mali_name, const char *event_name, struct super_block *sb, struct dentry *root, mali_counter *counter, unsigned long *event); |
| |
| /** |
| * Initializes the counter array. |
| * |
| * @param keys The array of counters |
| * @param n_counters The number of entries in each of the arrays. |
| */ |
| extern void gator_mali_initialise_counters(mali_counter counters[], unsigned int n_counters); |
| |
| #endif /* GATOR_EVENTS_MALI_COMMON_H */ |