| /* | 
|  * | 
|  * (C) COPYRIGHT 2011-2014 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. | 
|  * | 
|  */ | 
|   | 
|   | 
|   | 
|   | 
|   | 
| /* ***** IMPORTANT: THIS IS NOT A NORMAL HEADER FILE         ***** | 
|  * *****            DO NOT INCLUDE DIRECTLY                  ***** | 
|  * *****            THE LACK OF HEADER GUARDS IS INTENTIONAL ***** */ | 
|   | 
| /* | 
|  * The purpose of this header file is just to contain a list of trace code idenitifers | 
|  * | 
|  * Each identifier is wrapped in a macro, so that its string form and enum form can be created | 
|  * | 
|  * Each macro is separated with a comma, to allow insertion into an array initializer or enum definition block. | 
|  * | 
|  * This allows automatic creation of an enum and a corresponding array of strings | 
|  * | 
|  * Before #including, the includer MUST #define KBASE_TRACE_CODE_MAKE_CODE. | 
|  * After #including, the includer MUST #under KBASE_TRACE_CODE_MAKE_CODE. | 
|  * | 
|  * e.g.: | 
|  * #define KBASE_TRACE_CODE( X ) KBASE_TRACE_CODE_ ## X | 
|  * typedef enum | 
|  * { | 
|  * #define KBASE_TRACE_CODE_MAKE_CODE( X ) KBASE_TRACE_CODE( X ) | 
|  * #include "mali_kbase_trace_defs.h" | 
|  * #undef  KBASE_TRACE_CODE_MAKE_CODE | 
|  * } kbase_trace_code; | 
|  * | 
|  * IMPORTANT: THIS FILE MUST NOT BE USED FOR ANY OTHER PURPOSE OTHER THAN THE ABOVE | 
|  * | 
|  * | 
|  * The use of the macro here is: | 
|  * - KBASE_TRACE_CODE_MAKE_CODE( X ) | 
|  * | 
|  * Which produces: | 
|  * - For an enum, KBASE_TRACE_CODE_X | 
|  * - For a string, "X" | 
|  * | 
|  * | 
|  * For example: | 
|  * - KBASE_TRACE_CODE_MAKE_CODE( JM_JOB_COMPLETE ) expands to: | 
|  *  - KBASE_TRACE_CODE_JM_JOB_COMPLETE for the enum | 
|  *  - "JM_JOB_COMPLETE" for the string | 
|  * - To use it to trace an event, do: | 
|  *  - KBASE_TRACE_ADD( kbdev, JM_JOB_COMPLETE, subcode, kctx, uatom, val ); | 
|  */ | 
|   | 
| #if 0 /* Dummy section to avoid breaking formatting */ | 
| int dummy_array[] = { | 
| #endif | 
|   | 
| /* | 
|  * Core events | 
|  */ | 
|     /* no info_val, no gpu_addr, no atom */ | 
|     KBASE_TRACE_CODE_MAKE_CODE(CORE_CTX_DESTROY), | 
|     /* no info_val, no gpu_addr, no atom */ | 
|     KBASE_TRACE_CODE_MAKE_CODE(CORE_CTX_HWINSTR_TERM), | 
|     /* info_val == GPU_IRQ_STATUS register */ | 
|     KBASE_TRACE_CODE_MAKE_CODE(CORE_GPU_IRQ), | 
|     /* info_val == bits cleared */ | 
|     KBASE_TRACE_CODE_MAKE_CODE(CORE_GPU_IRQ_CLEAR), | 
|     /* info_val == GPU_IRQ_STATUS register */ | 
|     KBASE_TRACE_CODE_MAKE_CODE(CORE_GPU_IRQ_DONE), | 
|     KBASE_TRACE_CODE_MAKE_CODE(CORE_GPU_SOFT_RESET), | 
|     KBASE_TRACE_CODE_MAKE_CODE(CORE_GPU_HARD_RESET), | 
|     KBASE_TRACE_CODE_MAKE_CODE(CORE_GPU_PRFCNT_CLEAR), | 
|     /* GPU addr==dump address */ | 
|     KBASE_TRACE_CODE_MAKE_CODE(CORE_GPU_PRFCNT_SAMPLE), | 
|     KBASE_TRACE_CODE_MAKE_CODE(CORE_GPU_CLEAN_INV_CACHES), | 
| /* | 
|  * Job Slot management events | 
|  */ | 
|     /* info_val==irq rawstat at start */ | 
|     KBASE_TRACE_CODE_MAKE_CODE(JM_IRQ), | 
|     /* info_val==jobs processed */ | 
|     KBASE_TRACE_CODE_MAKE_CODE(JM_IRQ_END), | 
| /* In the following: | 
|  * | 
|  * - ctx is set if a corresponding job found (NULL otherwise, e.g. some soft-stop cases) | 
|  * - uatom==kernel-side mapped uatom address (for correlation with user-side) | 
|  */ | 
|     /* info_val==exit code; gpu_addr==chain gpuaddr */ | 
|     KBASE_TRACE_CODE_MAKE_CODE(JM_JOB_DONE), | 
|     /* gpu_addr==JS_HEAD_NEXT written, info_val==lower 32 bits of affinity */ | 
|     KBASE_TRACE_CODE_MAKE_CODE(JM_SUBMIT), | 
|     /* gpu_addr is as follows: | 
|      * - If JS_STATUS active after soft-stop, val==gpu addr written to | 
|      *   JS_HEAD on submit | 
|      * - otherwise gpu_addr==0 */ | 
|     KBASE_TRACE_CODE_MAKE_CODE(JM_SOFTSTOP), | 
|     KBASE_TRACE_CODE_MAKE_CODE(JM_SOFTSTOP_0), | 
|     KBASE_TRACE_CODE_MAKE_CODE(JM_SOFTSTOP_1), | 
|     /* gpu_addr==JS_HEAD read */ | 
|     KBASE_TRACE_CODE_MAKE_CODE(JM_HARDSTOP), | 
|     /* gpu_addr==JS_HEAD read */ | 
|     KBASE_TRACE_CODE_MAKE_CODE(JM_HARDSTOP_0), | 
|     /* gpu_addr==JS_HEAD read */ | 
|     KBASE_TRACE_CODE_MAKE_CODE(JM_HARDSTOP_1), | 
|     /* gpu_addr==JS_TAIL read */ | 
|     KBASE_TRACE_CODE_MAKE_CODE(JM_UPDATE_HEAD), | 
| /* gpu_addr is as follows: | 
|  * - If JS_STATUS active before soft-stop, val==JS_HEAD | 
|  * - otherwise gpu_addr==0 | 
|  */ | 
|     /* gpu_addr==JS_HEAD read */ | 
|     KBASE_TRACE_CODE_MAKE_CODE(JM_CHECK_HEAD), | 
|     KBASE_TRACE_CODE_MAKE_CODE(JM_FLUSH_WORKQS), | 
|     KBASE_TRACE_CODE_MAKE_CODE(JM_FLUSH_WORKQS_DONE), | 
|     /* info_val == is_scheduled */ | 
|     KBASE_TRACE_CODE_MAKE_CODE(JM_ZAP_NON_SCHEDULED), | 
|     /* info_val == is_scheduled */ | 
|     KBASE_TRACE_CODE_MAKE_CODE(JM_ZAP_SCHEDULED), | 
|     KBASE_TRACE_CODE_MAKE_CODE(JM_ZAP_DONE), | 
|     /* info_val == nr jobs submitted */ | 
|     KBASE_TRACE_CODE_MAKE_CODE(JM_SLOT_SOFT_OR_HARD_STOP), | 
|     /* gpu_addr==JS_HEAD_NEXT last written */ | 
|     KBASE_TRACE_CODE_MAKE_CODE(JM_SLOT_EVICT), | 
|     KBASE_TRACE_CODE_MAKE_CODE(JM_SUBMIT_AFTER_RESET), | 
|     KBASE_TRACE_CODE_MAKE_CODE(JM_BEGIN_RESET_WORKER), | 
|     KBASE_TRACE_CODE_MAKE_CODE(JM_END_RESET_WORKER), | 
| /* | 
|  * Job dispatch events | 
|  */ | 
|     /* gpu_addr==value to write into JS_HEAD */ | 
|     KBASE_TRACE_CODE_MAKE_CODE(JD_DONE), | 
|     /* gpu_addr==value to write into JS_HEAD */ | 
|     KBASE_TRACE_CODE_MAKE_CODE(JD_DONE_WORKER), | 
|     /* gpu_addr==value to write into JS_HEAD */ | 
|     KBASE_TRACE_CODE_MAKE_CODE(JD_DONE_WORKER_END), | 
|     /* gpu_addr==value to write into JS_HEAD */ | 
|     KBASE_TRACE_CODE_MAKE_CODE(JD_DONE_TRY_RUN_NEXT_JOB), | 
|     /* gpu_addr==0, info_val==0, uatom==0 */ | 
|     KBASE_TRACE_CODE_MAKE_CODE(JD_ZAP_CONTEXT), | 
|     /* gpu_addr==value to write into JS_HEAD */ | 
|     KBASE_TRACE_CODE_MAKE_CODE(JD_CANCEL), | 
|     /* gpu_addr==value to write into JS_HEAD */ | 
|     KBASE_TRACE_CODE_MAKE_CODE(JD_CANCEL_WORKER), | 
| /* | 
|  * Scheduler Core events | 
|  */ | 
|     KBASE_TRACE_CODE_MAKE_CODE(JS_RETAIN_CTX_NOLOCK), | 
|     /* gpu_addr==value to write into JS_HEAD */ | 
|     KBASE_TRACE_CODE_MAKE_CODE(JS_ADD_JOB), | 
|     /* gpu_addr==last value written/would be written to JS_HEAD */ | 
|     KBASE_TRACE_CODE_MAKE_CODE(JS_REMOVE_JOB), | 
|     KBASE_TRACE_CODE_MAKE_CODE(JS_RETAIN_CTX), | 
|     KBASE_TRACE_CODE_MAKE_CODE(JS_RELEASE_CTX), | 
|     KBASE_TRACE_CODE_MAKE_CODE(JS_TRY_SCHEDULE_HEAD_CTX), | 
|     /* gpu_addr==value to write into JS_HEAD */ | 
|     KBASE_TRACE_CODE_MAKE_CODE(JS_JOB_DONE_TRY_RUN_NEXT_JOB), | 
|     /* gpu_addr==value to write into JS_HEAD */ | 
|     KBASE_TRACE_CODE_MAKE_CODE(JS_JOB_DONE_RETRY_NEEDED), | 
|     /* kctx is the one being evicted, info_val == kctx to put in  */ | 
|     KBASE_TRACE_CODE_MAKE_CODE(JS_FAST_START_EVICTS_CTX), | 
|     KBASE_TRACE_CODE_MAKE_CODE(JS_AFFINITY_SUBMIT_TO_BLOCKED), | 
|     /* info_val == lower 32 bits of affinity */ | 
|     KBASE_TRACE_CODE_MAKE_CODE(JS_AFFINITY_CURRENT), | 
|     /* info_val == lower 32 bits of affinity */ | 
|     KBASE_TRACE_CODE_MAKE_CODE(JS_CORE_REF_REQUEST_CORES_FAILED), | 
|     /* info_val == lower 32 bits of affinity */ | 
|     KBASE_TRACE_CODE_MAKE_CODE(JS_CORE_REF_REGISTER_INUSE_FAILED), | 
|     /* info_val == lower 32 bits of rechecked affinity */ | 
|     KBASE_TRACE_CODE_MAKE_CODE(JS_CORE_REF_REQUEST_ON_RECHECK_FAILED), | 
|     /* info_val == lower 32 bits of rechecked affinity */ | 
|     KBASE_TRACE_CODE_MAKE_CODE(JS_CORE_REF_REGISTER_ON_RECHECK_FAILED), | 
|     /* info_val == lower 32 bits of affinity */ | 
|     KBASE_TRACE_CODE_MAKE_CODE(JS_CORE_REF_AFFINITY_WOULD_VIOLATE), | 
|     /* info_val == the ctx attribute now on ctx */ | 
|     KBASE_TRACE_CODE_MAKE_CODE(JS_CTX_ATTR_NOW_ON_CTX), | 
|     /* info_val == the ctx attribute now on runpool */ | 
|     KBASE_TRACE_CODE_MAKE_CODE(JS_CTX_ATTR_NOW_ON_RUNPOOL), | 
|     /* info_val == the ctx attribute now off ctx */ | 
|     KBASE_TRACE_CODE_MAKE_CODE(JS_CTX_ATTR_NOW_OFF_CTX), | 
|     /* info_val == the ctx attribute now off runpool */ | 
|     KBASE_TRACE_CODE_MAKE_CODE(JS_CTX_ATTR_NOW_OFF_RUNPOOL), | 
| /* | 
|  * Scheduler Policy events | 
|  */ | 
|     KBASE_TRACE_CODE_MAKE_CODE(JS_POLICY_INIT_CTX), | 
|     KBASE_TRACE_CODE_MAKE_CODE(JS_POLICY_TERM_CTX), | 
|     /* info_val == whether it was evicted */ | 
|     KBASE_TRACE_CODE_MAKE_CODE(JS_POLICY_TRY_EVICT_CTX), | 
|     KBASE_TRACE_CODE_MAKE_CODE(JS_POLICY_FOREACH_CTX_JOBS), | 
|     KBASE_TRACE_CODE_MAKE_CODE(JS_POLICY_ENQUEUE_CTX), | 
|     KBASE_TRACE_CODE_MAKE_CODE(JS_POLICY_DEQUEUE_HEAD_CTX), | 
|     KBASE_TRACE_CODE_MAKE_CODE(JS_POLICY_RUNPOOL_ADD_CTX), | 
|     KBASE_TRACE_CODE_MAKE_CODE(JS_POLICY_RUNPOOL_REMOVE_CTX), | 
|     KBASE_TRACE_CODE_MAKE_CODE(JS_POLICY_DEQUEUE_JOB), | 
|     KBASE_TRACE_CODE_MAKE_CODE(JS_POLICY_DEQUEUE_JOB_IRQ), | 
|     /* gpu_addr==JS_HEAD to write if the job were run */ | 
|     KBASE_TRACE_CODE_MAKE_CODE(JS_POLICY_ENQUEUE_JOB), | 
|     KBASE_TRACE_CODE_MAKE_CODE(JS_POLICY_TIMER_START), | 
|     KBASE_TRACE_CODE_MAKE_CODE(JS_POLICY_TIMER_END), | 
| /* | 
|  * Power Management Events | 
|  */ | 
|     KBASE_TRACE_CODE_MAKE_CODE(PM_JOB_SUBMIT_AFTER_POWERING_UP), | 
|     KBASE_TRACE_CODE_MAKE_CODE(PM_JOB_SUBMIT_AFTER_POWERED_UP), | 
|     KBASE_TRACE_CODE_MAKE_CODE(PM_PWRON), | 
|     KBASE_TRACE_CODE_MAKE_CODE(PM_PWRON_TILER), | 
|     KBASE_TRACE_CODE_MAKE_CODE(PM_PWRON_L2), | 
|     KBASE_TRACE_CODE_MAKE_CODE(PM_PWROFF), | 
|     KBASE_TRACE_CODE_MAKE_CODE(PM_PWROFF_TILER), | 
|     KBASE_TRACE_CODE_MAKE_CODE(PM_PWROFF_L2), | 
|     KBASE_TRACE_CODE_MAKE_CODE(PM_CORES_POWERED), | 
|     KBASE_TRACE_CODE_MAKE_CODE(PM_CORES_POWERED_TILER), | 
|     KBASE_TRACE_CODE_MAKE_CODE(PM_CORES_POWERED_L2), | 
|     KBASE_TRACE_CODE_MAKE_CODE(PM_CORES_CHANGE_DESIRED), | 
|     KBASE_TRACE_CODE_MAKE_CODE(PM_CORES_CHANGE_DESIRED_TILER), | 
|     KBASE_TRACE_CODE_MAKE_CODE(PM_CORES_CHANGE_AVAILABLE), | 
|     KBASE_TRACE_CODE_MAKE_CODE(PM_CORES_CHANGE_AVAILABLE_TILER), | 
|     KBASE_TRACE_CODE_MAKE_CODE(PM_CORES_AVAILABLE), | 
|     KBASE_TRACE_CODE_MAKE_CODE(PM_CORES_AVAILABLE_TILER), | 
|     /* PM_DESIRED_REACHED: gpu_addr == pm.gpu_in_desired_state */ | 
|     KBASE_TRACE_CODE_MAKE_CODE(PM_DESIRED_REACHED), | 
|     KBASE_TRACE_CODE_MAKE_CODE(PM_DESIRED_REACHED_TILER), | 
|     KBASE_TRACE_CODE_MAKE_CODE(PM_REGISTER_CHANGE_SHADER_INUSE), | 
|     KBASE_TRACE_CODE_MAKE_CODE(PM_REGISTER_CHANGE_TILER_INUSE), | 
|     KBASE_TRACE_CODE_MAKE_CODE(PM_REGISTER_CHANGE_SHADER_NEEDED), | 
|     KBASE_TRACE_CODE_MAKE_CODE(PM_REGISTER_CHANGE_TILER_NEEDED), | 
|     KBASE_TRACE_CODE_MAKE_CODE(PM_RELEASE_CHANGE_SHADER_INUSE), | 
|     KBASE_TRACE_CODE_MAKE_CODE(PM_RELEASE_CHANGE_TILER_INUSE), | 
|     KBASE_TRACE_CODE_MAKE_CODE(PM_UNREQUEST_CHANGE_SHADER_NEEDED), | 
|     KBASE_TRACE_CODE_MAKE_CODE(PM_UNREQUEST_CHANGE_TILER_NEEDED), | 
|     KBASE_TRACE_CODE_MAKE_CODE(PM_REQUEST_CHANGE_SHADER_NEEDED), | 
|     KBASE_TRACE_CODE_MAKE_CODE(PM_REQUEST_CHANGE_TILER_NEEDED), | 
|     KBASE_TRACE_CODE_MAKE_CODE(PM_WAKE_WAITERS), | 
|     KBASE_TRACE_CODE_MAKE_CODE(PM_CONTEXT_ACTIVE), | 
|     KBASE_TRACE_CODE_MAKE_CODE(PM_CONTEXT_IDLE), | 
|     KBASE_TRACE_CODE_MAKE_CODE(PM_GPU_ON), | 
|     KBASE_TRACE_CODE_MAKE_CODE(PM_GPU_OFF), | 
|     /* info_val == policy number, or -1 for "Already changing" */ | 
|     KBASE_TRACE_CODE_MAKE_CODE(PM_SET_POLICY), | 
|     KBASE_TRACE_CODE_MAKE_CODE(PM_CA_SET_POLICY), | 
|     /* info_val == policy number */ | 
|     KBASE_TRACE_CODE_MAKE_CODE(PM_CURRENT_POLICY_INIT), | 
|     /* info_val == policy number */ | 
|     KBASE_TRACE_CODE_MAKE_CODE(PM_CURRENT_POLICY_TERM), | 
| /* Unused code just to make it easier to not have a comma at the end. | 
|  * All other codes MUST come before this */ | 
|     KBASE_TRACE_CODE_MAKE_CODE(DUMMY) | 
|   | 
| #if 0 /* Dummy section to avoid breaking formatting */ | 
| }; | 
| #endif | 
|   | 
| /* ***** THE LACK OF HEADER GUARDS IS INTENTIONAL ***** */ |