cdaea188ebf23335cce0b429be2e354d3c1f5e25
[linux-2.6.git] / drivers / video / tegra / host / gr3d / gr3d.h
1 /*
2  * drivers/video/tegra/host/gr3d/gr3d.h
3  *
4  * Tegra Graphics Host 3D
5  *
6  * Copyright (c) 2011, NVIDIA Corporation.
7  *
8  * This program is free software; you can redistribute it and/or modify
9  * it under the terms of the GNU General Public License as published by
10  * the Free Software Foundation; either version 2 of the License, or
11  * (at your option) any later version.
12  *
13  * This program is distributed in the hope that it will be useful, but WITHOUT
14  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
15  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
16  * more details.
17  *
18  * You should have received a copy of the GNU General Public License along
19  * with this program; if not, write to the Free Software Foundation, Inc.,
20  * 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
21  */
22
23 #ifndef __NVHOST_GR3D_GR3D_H
24 #define __NVHOST_GR3D_GR3D_H
25
26 #include <linux/types.h>
27
28 /* Registers of 3D unit */
29
30 #define AR3D_PSEQ_QUAD_ID 0x545
31 #define AR3D_DW_MEMORY_OUTPUT_ADDRESS 0x904
32 #define AR3D_DW_MEMORY_OUTPUT_DATA 0x905
33 #define AR3D_GSHIM_WRITE_MASK 0xb00
34 #define AR3D_GSHIM_READ_SELECT 0xb01
35 #define AR3D_GLOBAL_MEMORY_OUTPUT_READS 0xe40
36
37 /* Internal variables used by common 3D context switch functions */
38 extern unsigned int nvhost_3dctx_restore_size;
39 extern unsigned int nvhost_3dctx_restore_incrs;
40 extern struct nvmap_handle_ref *nvhost_3dctx_save_buf;
41 extern unsigned int nvhost_3dctx_save_incrs;
42 extern unsigned int nvhost_3dctx_save_thresh;
43 extern unsigned int nvhost_3dctx_save_slots;
44
45 struct nvhost_hwctx;
46 struct nvhost_channel;
47 struct kref;
48
49 /* Functions used commonly by all 3D context switch modules */
50 void nvhost_3dctx_restore_begin(u32 *ptr);
51 void nvhost_3dctx_restore_direct(u32 *ptr, u32 start_reg, u32 count);
52 void nvhost_3dctx_restore_indirect(u32 *ptr, u32 offset_reg,
53                 u32 offset,     u32 data_reg, u32 count);
54 void nvhost_3dctx_restore_end(u32 *ptr);
55 struct nvhost_hwctx *nvhost_3dctx_alloc_common(
56                 struct nvhost_channel *ch, bool map_restore);
57 void nvhost_3dctx_get(struct nvhost_hwctx *ctx);
58 void nvhost_3dctx_free(struct kref *ref);
59 void nvhost_3dctx_put(struct nvhost_hwctx *ctx);
60 int nvhost_gr3d_prepare_power_off(struct nvhost_module *mod);
61
62 #endif