2 * Copyright (C) 2011 Nokia Corporation
3 * Author: Imre Deak <imre.deak@nokia.com>
5 * This program is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License as published by the
7 * Free Software Foundation; either version 2 of the License, or (at your
8 * option) any later version.
10 * This program is distributed in the hope that it will be useful, but
11 * WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 * General Public License for more details.
15 * You should have received a copy of the GNU General Public License along
16 * with this program; if not, write to the Free Software Foundation, Inc.,
17 * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
20 #ifndef __PVR_TRACE_CMD_H__
21 #define __PVR_TRACE_CMD_H__
23 #include <linux/mutex.h>
25 #include "servicesint.h"
26 #include "sgxapi_km.h"
30 PVR_TRCMD_SGX_FIRSTKICK,
33 PVR_TRCMD_SGX_QBLT_SYNREQ,
34 PVR_TRCMD_SGX_QBLT_SYNCHK,
35 PVR_TRCMD_SGX_QBLT_FLPREQ,
36 PVR_TRCMD_SGX_QBLT_UPDREQ,
37 PVR_TRCMD_SGX_QBLT_SYNCOMP,
38 PVR_TRCMD_SGX_QBLT_FLPCOMP,
39 PVR_TRCMD_SGX_QBLT_UPDCOMP,
44 struct pvr_trcmd_syn {
45 unsigned long rd_pend;
46 unsigned long rd_comp;
47 unsigned long wr_pend;
48 unsigned long wr_comp;
52 struct pvr_trcmd_sgxkick {
53 struct pvr_trcmd_syn tatq_syn;
54 struct pvr_trcmd_syn _3dtq_syn;
55 struct pvr_trcmd_syn src_syn[SGX_MAX_SRC_SYNCS];
56 struct pvr_trcmd_syn dst_syn;
57 struct pvr_trcmd_syn ta3d_syn;
61 struct pvr_trcmd_sgxtransfer {
62 struct pvr_trcmd_syn ta_syn;
63 struct pvr_trcmd_syn _3d_syn;
64 struct pvr_trcmd_syn src_syn;
65 struct pvr_trcmd_syn dst_syn;
69 #ifdef CONFIG_PVR_TRACE_CMD
71 void *pvr_trcmd_alloc(unsigned type, int pid, const char *pname, size_t size);
73 extern struct mutex pvr_trcmd_mutex;
75 static inline void pvr_trcmd_lock(void)
77 mutex_lock(&pvr_trcmd_mutex);
80 static inline void pvr_trcmd_unlock(void)
82 mutex_unlock(&pvr_trcmd_mutex);
85 int pvr_trcmd_create_snapshot(u8 **snapshot_ret, size_t *snapshot_size);
86 void pvr_trcmd_destroy_snapshot(void *snapshot);
88 size_t pvr_trcmd_print(char *dst, size_t dst_size, const u8 *snapshot,
89 size_t snapshot_size, loff_t *snapshot_ofs);
91 void pvr_trcmd_set_syn(struct pvr_trcmd_syn *ts,
92 const struct PVRSRV_KERNEL_SYNC_INFO *si);
94 static inline void pvr_trcmd_set_data(unsigned long *a, unsigned long val)
99 static inline void pvr_trcmd_clear_syn(struct pvr_trcmd_syn *ts)
101 memset(ts, 0, sizeof(*ts));
107 pvr_trcmd_alloc(unsigned type, int pid, const char *pname, size_t size)
112 static inline void pvr_trcmd_lock(void)
116 static inline void pvr_trcmd_unlock(void)
121 pvr_trcmd_create_snapshot(u8 **snapshot_ret, size_t *snapshot_size)
126 static inline void pvr_trcmd_destroy_snapshot(void *snapshot)
131 pvr_trcmd_print(char *dst, size_t dst_size, const u8 *snapshot,
132 size_t snapshot_size, loff_t *snapshot_ofs)
138 pvr_trcmd_set_syn(struct pvr_trcmd_syn *ts,
139 const struct PVRSRV_KERNEL_SYNC_INFO *si)
143 static inline void pvr_trcmd_set_data(unsigned long *a, unsigned long val)
147 static inline void pvr_trcmd_clear_syn(struct pvr_trcmd_syn *ts)
151 #endif /* CONFIG_PVR_SYNC_CNT */