/*************************************************************************/ /*!
|
@File htbuffer_sf.h
|
@Title Host Trace Buffer interface string format specifiers
|
@Copyright Copyright (c) Imagination Technologies Ltd. All Rights Reserved
|
@Description Header for the Host Trace Buffer logging messages. The following
|
list are the messages the host driver prints. Changing anything
|
but the first column or spelling mistakes in the strings will
|
break compatibility with log files created with older/newer
|
driver versions.
|
@License Dual MIT/GPLv2
|
|
The contents of this file are subject to the MIT license as set out below.
|
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
of this software and associated documentation files (the "Software"), to deal
|
in the Software without restriction, including without limitation the rights
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
copies of the Software, and to permit persons to whom the Software is
|
furnished to do so, subject to the following conditions:
|
|
The above copyright notice and this permission notice shall be included in
|
all copies or substantial portions of the Software.
|
|
Alternatively, the contents of this file may be used under the terms of
|
the GNU General Public License Version 2 ("GPL") in which case the provisions
|
of GPL are applicable instead of those above.
|
|
If you wish to allow use of your version of this file only under the terms of
|
GPL, and not to allow others to use your version of this file under the terms
|
of the MIT license, indicate your decision by deleting the provisions above
|
and replace them with the notice and other provisions required by GPL as set
|
out in the file called "GPL-COPYING" included in this distribution. If you do
|
not delete the provisions above, a recipient may use your version of this file
|
under the terms of either the MIT license or GPL.
|
|
This License is also included in this distribution in the file called
|
"MIT-COPYING".
|
|
EXCEPT AS OTHERWISE STATED IN A NEGOTIATED AGREEMENT: (A) THE SOFTWARE IS
|
PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
|
BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
|
PURPOSE AND NONINFRINGEMENT; AND (B) IN NO EVENT SHALL THE AUTHORS OR
|
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
*/ /**************************************************************************/
|
#ifndef __HTBUFFER_SF_H__
|
#define __HTBUFFER_SF_H__
|
|
#if defined (__cplusplus)
|
extern "C" {
|
#endif
|
|
|
/*****************************************************************************
|
* *DO*NOT* rearrange or delete lines in SFIDLIST or SFGROUPLIST or you
|
* WILL BREAK host tracing message compatibility with previous
|
* driver versions. Only add new ones, if so required.
|
****************************************************************************/
|
|
|
/* String used in pvrdebug -h output */
|
#define HTB_LOG_GROUPS_STRING_LIST "ctrl,mmu,sync,main,brg"
|
|
/* Used in print statements to display log group state, one %s per group defined */
|
#define HTB_LOG_ENABLED_GROUPS_LIST_PFSPEC "%s%s%s%s%s"
|
|
/* Available log groups - Master template
|
*
|
* Group usage is as follows:
|
* CTRL - Internal Host Trace information and synchronisation data
|
* MMU - MMU page mapping information
|
* SYNC - Synchronisation debug
|
* MAIN - Data master kicks, etc. tying in with the MAIN group in FWTrace
|
* DBG - Temporary debugging group, logs not to be left in the driver
|
*
|
*/
|
#define HTB_LOG_SFGROUPLIST \
|
X( HTB_GROUP_NONE, NONE ) \
|
/* gid, group flag / apphint name */ \
|
X( HTB_GROUP_CTRL, CTRL ) \
|
X( HTB_GROUP_MMU, MMU ) \
|
X( HTB_GROUP_SYNC, SYNC ) \
|
X( HTB_GROUP_MAIN, MAIN ) \
|
X( HTB_GROUP_BRG, BRG ) \
|
/* Debug group HTB_GROUP_DBG must always be last */ \
|
X( HTB_GROUP_DBG, DBG )
|
|
|
/* Table of String Format specifiers, the group they belong and the number of
|
* arguments each expects. Xmacro styled macros are used to generate what is
|
* needed without requiring hand editing.
|
*
|
* id : unique id within a group
|
* gid : group id as defined above
|
* sym name : symbolic name of enumerations used to identify message strings
|
* string : Actual string
|
* #args : number of arguments the string format requires
|
*/
|
#define HTB_LOG_SFIDLIST \
|
/*id, gid, sym name, string, # arguments */ \
|
X( 0, HTB_GROUP_NONE, HTB_SF_FIRST, "You should not use this string", 0) \
|
\
|
X( 1, HTB_GROUP_CTRL, HTB_SF_CTRL_LOGMODE, "HTB log mode set to %d (1- all PID, 2 - restricted PID)\n", 1) \
|
X( 2, HTB_GROUP_CTRL, HTB_SF_CTRL_ENABLE_PID, "HTB enable logging for PID %d\n", 1) \
|
X( 3, HTB_GROUP_CTRL, HTB_SF_CTRL_ENABLE_GROUP, "HTB enable logging groups 0x%08x\n", 1) \
|
X( 4, HTB_GROUP_CTRL, HTB_SF_CTRL_LOG_LEVEL, "HTB log level set to %d\n", 1) \
|
X( 5, HTB_GROUP_CTRL, HTB_SF_CTRL_OPMODE, "HTB operating mode set to %d (1 - droplatest, 2 - drop oldest, 3 - block)\n", 1) \
|
X( 6, HTB_GROUP_CTRL, HTB_SF_CTRL_FWSYNC_SCALE, "HTBFWSync OSTS=%08x%08x CRTS=%08x%08x CalcClkSpd=%d\n", 5) \
|
X( 7, HTB_GROUP_CTRL, HTB_SF_CTRL_FWSYNC_SCALE_RPT, "FW Sync scale info OSTS=%08x%08x CRTS=%08x%08x CalcClkSpd=%d\n", 5) \
|
X( 8, HTB_GROUP_CTRL, HTB_SF_CTRL_FWSYNC_MARK, "FW Sync Partition marker: %d\n", 1) \
|
X( 9, HTB_GROUP_CTRL, HTB_SF_CTRL_FWSYNC_MARK_RPT, "FW Sync Partition repeat: %d\n", 1) \
|
\
|
X( 1, HTB_GROUP_MMU, HTB_SF_MMU_PAGE_OP_TABLE, "MMU page op table entry page_id=%08x%08x index=%d level=%d val=%08x%08x map=%d\n", 7) \
|
X( 2, HTB_GROUP_MMU, HTB_SF_MMU_PAGE_OP_ALLOC, "MMU allocating DevVAddr from %08x%08x to %08x%08x\n", 4) \
|
X( 3, HTB_GROUP_MMU, HTB_SF_MMU_PAGE_OP_FREE, "MMU freeing DevVAddr from %08x%08x to %08x%08x\n", 4) \
|
X( 4, HTB_GROUP_MMU, HTB_SF_MMU_PAGE_OP_MAP, "MMU mapping DevVAddr %08x%08x to DevPAddr %08x%08x\n", 4) \
|
X( 5, HTB_GROUP_MMU, HTB_SF_MMU_PAGE_OP_PMRMAP, "MMU mapping PMR DevVAddr %08x%08x to DevPAddr %08x%08x\n", 4) \
|
X( 6, HTB_GROUP_MMU, HTB_SF_MMU_PAGE_OP_UNMAP, "MMU unmapping DevVAddr %08x%08x\n", 2) \
|
\
|
X( 1, HTB_GROUP_SYNC, HTB_SF_SYNC_SERVER_ALLOC, "Server sync allocation [%08X]\n", 1) \
|
X( 2, HTB_GROUP_SYNC, HTB_SF_SYNC_SERVER_UNREF, "Server sync unreferenced [%08X]\n", 1) \
|
X( 3, HTB_GROUP_SYNC, HTB_SF_SYNC_PRIM_OP_CREATE, "Sync OP create 0x%08x, block count=%d, server syncs=%d, client syncs=%d\n", 4) \
|
X( 4, HTB_GROUP_SYNC, HTB_SF_SYNC_PRIM_OP_TAKE, "Sync OP take 0x%08x server syncs=%d, client syncs=%d\n", 3) \
|
X( 5, HTB_GROUP_SYNC, HTB_SF_SYNC_PRIM_OP_COMPLETE, "Sync OP complete 0x%08x\n", 1) \
|
X( 6, HTB_GROUP_SYNC, HTB_SF_SYNC_PRIM_OP_DESTROY, "Sync OP destroy 0x%08x\n", 1) \
|
\
|
X( 1, HTB_GROUP_MAIN, HTB_SF_MAIN_KICK_TA, "Kick TA: FWCtx %08X @ %d\n", 2) \
|
X( 2, HTB_GROUP_MAIN, HTB_SF_MAIN_KICK_3D, "Kick 3D: FWCtx %08X @ %d\n", 2) \
|
X( 3, HTB_GROUP_MAIN, HTB_SF_MAIN_KICK_CDM, "Kick CDM: FWCtx %08X @ %d\n", 2) \
|
X( 4, HTB_GROUP_MAIN, HTB_SF_MAIN_KICK_RTU, "Kick RTU: FWCtx %08X @ %d\n", 2) \
|
X( 5, HTB_GROUP_MAIN, HTB_SF_MAIN_KICK_SHG, "Kick SHG: FWCtx %08X @ %d\n", 2) \
|
X( 6, HTB_GROUP_MAIN, HTB_SF_MAIN_KICK_2D, "Kick 2D: FWCtx %08X @ %d\n", 2) \
|
X( 7, HTB_GROUP_MAIN, HTB_SF_MAIN_KICK_UNCOUNTED, "Kick (uncounted) for all DMs\n", 0) \
|
X( 8, HTB_GROUP_MAIN, HTB_SF_MAIN_FWCCB_CMD, "FW CCB Cmd: %d\n", 1) \
|
\
|
X( 1, HTB_GROUP_BRG, HTB_SF_BRG_BRIDGE_CALL, "Bridge call: start: %010u: bid %03d fid %d\n", 3) \
|
X( 2, HTB_GROUP_BRG, HTB_SF_BRG_BRIDGE_CALL_ERR, "Bridge call: start: %010u: bid %03d fid %d error %d\n", 4) \
|
\
|
X( 1, HTB_GROUP_DBG, HTB_SF_DBG_INTPAIR, "0x%8.8x 0x%8.8x\n", 2) \
|
\
|
X( 65535, HTB_GROUP_NONE, HTB_SF_LAST, "You should not use this string\n", 15)
|
|
|
|
/* gid - Group numbers */
|
typedef enum _HTB_LOG_SFGROUPS {
|
#define X(A,B) A,
|
HTB_LOG_SFGROUPLIST
|
#undef X
|
} HTB_LOG_SFGROUPS;
|
|
|
/* group flags are stored in an array of elements */
|
/* each of which have a certain number of bits */
|
#define HTB_FLAG_EL_T IMG_UINT32
|
#define HTB_FLAG_NUM_BITS_IN_EL ( sizeof(HTB_FLAG_EL_T) * 8 )
|
|
#define HTB_LOG_GROUP_FLAG_GROUP(gid) ( (gid-1) / HTB_FLAG_NUM_BITS_IN_EL )
|
#define HTB_LOG_GROUP_FLAG(gid) (gid? (0x1 << ((gid-1)%HTB_FLAG_NUM_BITS_IN_EL)): 0)
|
#define HTB_LOG_GROUP_FLAG_NAME(gid) HTB_LOG_TYPE_ ## gid
|
|
/* group enable flags */
|
typedef enum _HTB_LOG_TYPE {
|
#define X(a, b) HTB_LOG_GROUP_FLAG_NAME(b) = HTB_LOG_GROUP_FLAG(a),
|
HTB_LOG_SFGROUPLIST
|
#undef X
|
} HTB_LOG_TYPE;
|
|
|
|
/* The symbolic names found in the table above are assigned an ui32 value of
|
* the following format:
|
* 31 30 28 27 20 19 16 15 12 11 0 bits
|
* - --- ---- ---- ---- ---- ---- ---- ----
|
* 0-11: id number
|
* 12-15: group id number
|
* 16-19: number of parameters
|
* 20-27: unused
|
* 28-30: active: identify SF packet, otherwise regular int32
|
* 31: reserved for signed/unsigned compatibility
|
*
|
* The following macro assigns those values to the enum generated SF ids list.
|
*/
|
#define HTB_LOG_IDMARKER (0x70000000)
|
#define HTB_LOG_CREATESFID(a,b,e) ((a) | (b<<12) | (e<<16)) | HTB_LOG_IDMARKER
|
|
#define HTB_LOG_IDMASK (0xFFF00000)
|
#define HTB_LOG_VALIDID(I) ( ((I) & HTB_LOG_IDMASK) == HTB_LOG_IDMARKER )
|
|
typedef enum HTB_LOG_SFids {
|
#define X(a, b, c, d, e) c = HTB_LOG_CREATESFID(a,b,e),
|
HTB_LOG_SFIDLIST
|
#undef X
|
} HTB_LOG_SFids;
|
|
/* Return the group id that the given (enum generated) id belongs to */
|
#define HTB_SF_GID(x) (((x)>>12) & 0xf)
|
/* future improvement to support log levels */
|
#define HTB_SF_LVL(x) (0)
|
/* Returns how many arguments the SF(string format) for the given (enum generated) id requires */
|
#define HTB_SF_PARAMNUM(x) (((x)>>16) & 0xf)
|
|
/* format of messages is: SF:PID:TIME:[PARn]*
|
*/
|
#define HTB_LOG_HEADER_SIZE 3
|
#define HTB_LOG_MAX_PARAMS 15
|
|
#if defined (__cplusplus)
|
}
|
#endif
|
|
#endif /* __HTBUFFER_SF_H__ */
|
/*****************************************************************************
|
End of file (htbuffer_sf.h)
|
*****************************************************************************/
|