1/*
2 * Copyright 2011 James Simmons, 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 "Software"),
6 * to deal in the Software without restriction, including without limitation
7 * the rights to use, copy, modify, merge, publish, distribute, sub license,
8 * and/or sell copies of the Software, and to permit persons to whom the
9 * Software is furnished to do so, subject to the following conditions:
10 *
11 * The above copyright notice and this permission notice (including the
12 * next paragraph) shall be included in all copies or substantial portions
13 * of the Software.
14 *
15 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
18 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
20 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
21 * DEALINGS IN THE SOFTWARE.
22 */
23#ifndef _VIA_MEMMGR_H_
24#define _VIA_MEMMGR_H_
25
26#include <sys/mman.h>
27#include "xf86.h"
28
29#define TTM_PL_FLAG_SYSTEM	1
30#define TTM_PL_FLAG_TT		2
31#define TTM_PL_FLAG_VRAM	4
32
33struct buffer_object {
34    off_t           map_offset;
35    unsigned long   handle;
36    unsigned long   offset;             /* Offset into fb */
37    unsigned long   pitch;
38    unsigned long   size;
39    void            *ptr;
40    int             domain;
41};
42
43/* In via_memory.c */
44Bool drm_bo_manager_init(ScrnInfoPtr pScrn);
45
46struct buffer_object *
47drm_bo_alloc_surface(ScrnInfoPtr pScrn, unsigned int width, unsigned int height,
48                    int format, unsigned int alignment, int domain);
49struct buffer_object *
50drm_bo_alloc(ScrnInfoPtr pScrn, unsigned int size, unsigned int alignment,
51                int domain);
52void *drm_bo_map(ScrnInfoPtr pScrn, struct buffer_object *obj);
53void drm_bo_unmap(ScrnInfoPtr pScrn, struct buffer_object *obj);
54void drm_bo_free(ScrnInfoPtr pScrn, struct buffer_object *);
55
56#endif
57