Home | History | Annotate | Download | only in src
      1 /*
      2  * Copyright (c) 2011 Intel Corporation. All Rights Reserved.
      3  *
      4  * Permission is hereby granted, free of charge, to any person obtaining a
      5  * copy of this software and associated documentation files (the
      6  * "Software"), to deal in the Software without restriction, including
      7  * without limitation the rights to use, copy, modify, merge, publish,
      8  * distribute, sub license, and/or sell copies of the Software, and to
      9  * permit persons to whom the Software is furnished to do so, subject to
     10  * the following conditions:
     11  *
     12  * The above copyright notice and this permission notice (including the
     13  * next paragraph) shall be included in all copies or substantial portions
     14  * of the Software.
     15  *
     16  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
     17  * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
     18  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
     19  * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
     20  * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
     21  * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
     22  * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
     23  *
     24  * Authors:
     25  *    Fei Jiang <fei.jiang (at) intel.com>
     26  *
     27  */
     28 
     29 #ifndef _PSB_DEBUG_H_
     30 #define _PSB_DEBUG_H_
     31 
     32 #include <assert.h>
     33 #include <string.h>
     34 #include <stdio.h>
     35 #include <stdarg.h>
     36 #include <time.h>
     37 #include <unistd.h>
     38 #include "psb_buffer.h"
     39 
     40 /* #define VA_EMULATOR 1 */
     41 
     42 #ifdef DEBUG_TRACE
     43 #ifndef ASSERT
     44 #define ASSERT  assert
     45 #endif
     46 
     47 #ifndef IMG_ASSERT
     48 #define IMG_ASSERT  assert
     49 #endif
     50 
     51 #else /* DEBUG_TRACE */
     52 
     53 #undef ASSERT
     54 #undef IMG_ASSERT
     55 #define ASSERT(x)
     56 #define IMG_ASSERT(x)
     57 
     58 #endif /* DEBUG_TRACE */
     59 
     60 /****************************
     61  * debug level structures
     62  ****************************/
     63 typedef enum
     64 {
     65     VIDEO_DEBUG_ERROR	    =   0x1,
     66     VIDEO_DEBUG_WARNING	    =   0x2,
     67     VIDEO_DEBUG_GENERAL	    =   0x4,
     68     VIDEO_DEBUG_INIT        =   0x8,
     69     VIDEO_DEBUG_ENTRY       =   0x10,
     70     VIDEO_DECODE_DEBUG      =   0x100,
     71     VIDEO_ENCODE_DEBUG      =   0x200,
     72     VIDEO_DISPLAY_DEBUG     =   0x400,
     73 
     74     VIDEO_ENCODE_PDUMP     =   0x1000,
     75     VIDEO_ENCODE_HEADER    =   0x2000,
     76 } DEBUG_LEVEL;
     77 
     78 /****************************
     79  * trace level structures
     80  ****************************/
     81 typedef enum
     82 {
     83     VABUF_TRACE		=   0x1,
     84     CMDMSG_TRACE	=   0x2,
     85     LLDMA_TRACE	    =   0x4,
     86     AUXBUF_TRACE    =   0x8,
     87 } TRACE_LEVEL;
     88 
     89 /****************************
     90  * debug-trace option structures
     91  ****************************/
     92 typedef enum
     93 {
     94     TIME_DEBUG		=   0x1,
     95     THREAD_DEBUG    =   0x2,
     96     PRINT_TO_LOGCAT	=   0x10,
     97     PRINT_TO_FILE   =   0x20,
     98 } DEBUG_TRACE_OPTION;
     99 
    100 FILE *psb_video_debug_fp;
    101 int  debug_fp_count;
    102 int psb_video_debug_level;
    103 int psb_video_debug_option;
    104 
    105 FILE *psb_video_trace_fp;
    106 int psb_video_trace_level;
    107 int psb_video_trace_option;
    108 
    109 FILE *psb_dump_vabuf_fp;
    110 FILE *psb_dump_vabuf_verbose_fp;
    111 FILE *psb_dump_yuvbuf_fp;
    112 
    113 int psb_video_dump_cmdbuf;
    114 uint32_t g_hexdump_offset;
    115 
    116 void psb__debug_w(uint32_t val, char *fmt, uint32_t bit_to, uint32_t bit_from);
    117 
    118 #define DW(wd, sym, to, from) psb__debug_w(((uint32_t *)pasDmaList)[wd], "LLDMA: " #sym " = %d\n", to, from);
    119 #define DWH(wd, sym, to, from) psb__debug_w(((uint32_t *)pasDmaList)[wd], "LLDMA: " #sym " = %08x\n", to, from);
    120 
    121 void psb__open_log(void);
    122 void psb__close_log(void);
    123 int psb_parse_config(char *env, char *env_value);
    124 void drv_debug_msg(DEBUG_LEVEL debug_level, const char *msg, ...);
    125 void psb__trace_message(const char *msg, ...);
    126 
    127 /*
    128  * Dump contents of buffer object after command submission
    129  */
    130 void psb__debug_schedule_hexdump(const char *name, psb_buffer_p buf, uint32_t offset, uint32_t size);
    131 void psb__hexdump(unsigned char *addr, int size);
    132 
    133 void debug_dump_cmdbuf(uint32_t *cmd_idx, uint32_t cmd_size_in_bytes);
    134 
    135 #define DEBUG_FAILURE           while(vaStatus) {drv_debug_msg(VIDEO_DEBUG_ERROR, "%s fails with '%d' at %s:%d\n", __FUNCTION__, vaStatus, __FILE__, __LINE__);break;}
    136 #define DEBUG_FAILURE_RET       while(ret)      {drv_debug_msg(VIDEO_DEBUG_ERROR, "%s fails with '%s' at %s:%d\n", __FUNCTION__, strerror(ret < 0 ? -ret : ret), __FILE__, __LINE__);break;}
    137 
    138 #define DEBUG_FUNC_ENTER while(1) {drv_debug_msg(VIDEO_DEBUG_ENTRY, "%s enter.\n", __FUNCTION__); break;}
    139 #define DEBUG_FUNC_EXIT while(1) {drv_debug_msg(VIDEO_DEBUG_ENTRY, "%s exit.\n", __FUNCTION__); break;}
    140 
    141 uint32_t debug_cmd_start[MAX_CMD_COUNT];
    142 uint32_t debug_cmd_size[MAX_CMD_COUNT];
    143 uint32_t debug_cmd_count;
    144 uint32_t debug_lldma_count;
    145 uint32_t debug_lldma_start;
    146 
    147 #define MAX_DUMP_COUNT  20
    148 const char * debug_dump_name[MAX_DUMP_COUNT];
    149 psb_buffer_p debug_dump_buf[MAX_DUMP_COUNT];
    150 uint32_t     debug_dump_offset[MAX_DUMP_COUNT];
    151 uint32_t     debug_dump_size[MAX_DUMP_COUNT];
    152 uint32_t     debug_dump_count;
    153 
    154 int psb_cmdbuf_dump(unsigned int *buffer, int byte_size);
    155 int psb__dump_va_buffers(object_buffer_p obj_buffer);
    156 int psb__dump_va_buffers_verbose(object_buffer_p obj_buffer);
    157 
    158 #endif /* _PSB_DEBUG_H_ */
    159