ionalloc.h revision 202a77d28ac251545f6f998a974690212309b927
1202a77d28ac251545f6f998a974690212309b927Iliyan Malchev/*
2202a77d28ac251545f6f998a974690212309b927Iliyan Malchev * Copyright (c) 2011, Code Aurora Forum. All rights reserved.
3202a77d28ac251545f6f998a974690212309b927Iliyan Malchev
4202a77d28ac251545f6f998a974690212309b927Iliyan Malchev * Redistribution and use in source and binary forms, with or without
5202a77d28ac251545f6f998a974690212309b927Iliyan Malchev * modification, are permitted provided that the following conditions are
6202a77d28ac251545f6f998a974690212309b927Iliyan Malchev * met:
7202a77d28ac251545f6f998a974690212309b927Iliyan Malchev *   * Redistributions of source code must retain the above copyright
8202a77d28ac251545f6f998a974690212309b927Iliyan Malchev *     notice, this list of conditions and the following disclaimer.
9202a77d28ac251545f6f998a974690212309b927Iliyan Malchev *   * Redistributions in binary form must reproduce the above
10202a77d28ac251545f6f998a974690212309b927Iliyan Malchev *     copyright notice, this list of conditions and the following
11202a77d28ac251545f6f998a974690212309b927Iliyan Malchev *     disclaimer in the documentation and/or other materials provided
12202a77d28ac251545f6f998a974690212309b927Iliyan Malchev *     with the distribution.
13202a77d28ac251545f6f998a974690212309b927Iliyan Malchev *   * Neither the name of Code Aurora Forum, Inc. nor the names of its
14202a77d28ac251545f6f998a974690212309b927Iliyan Malchev *     contributors may be used to endorse or promote products derived
15202a77d28ac251545f6f998a974690212309b927Iliyan Malchev *     from this software without specific prior written permission.
16202a77d28ac251545f6f998a974690212309b927Iliyan Malchev *
17202a77d28ac251545f6f998a974690212309b927Iliyan Malchev * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
18202a77d28ac251545f6f998a974690212309b927Iliyan Malchev * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
19202a77d28ac251545f6f998a974690212309b927Iliyan Malchev * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
20202a77d28ac251545f6f998a974690212309b927Iliyan Malchev * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
21202a77d28ac251545f6f998a974690212309b927Iliyan Malchev * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
22202a77d28ac251545f6f998a974690212309b927Iliyan Malchev * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
23202a77d28ac251545f6f998a974690212309b927Iliyan Malchev * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
24202a77d28ac251545f6f998a974690212309b927Iliyan Malchev * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
25202a77d28ac251545f6f998a974690212309b927Iliyan Malchev * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
26202a77d28ac251545f6f998a974690212309b927Iliyan Malchev * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
27202a77d28ac251545f6f998a974690212309b927Iliyan Malchev * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28202a77d28ac251545f6f998a974690212309b927Iliyan Malchev */
29202a77d28ac251545f6f998a974690212309b927Iliyan Malchev
30202a77d28ac251545f6f998a974690212309b927Iliyan Malchev#ifndef GRALLOC_IONALLOC_H
31202a77d28ac251545f6f998a974690212309b927Iliyan Malchev#define GRALLOC_IONALLOC_H
32202a77d28ac251545f6f998a974690212309b927Iliyan Malchev
33202a77d28ac251545f6f998a974690212309b927Iliyan Malchev#include "memalloc.h"
34202a77d28ac251545f6f998a974690212309b927Iliyan Malchev#include "ion_msm.h"
35202a77d28ac251545f6f998a974690212309b927Iliyan Malchev
36202a77d28ac251545f6f998a974690212309b927Iliyan Malchevnamespace gralloc {
37202a77d28ac251545f6f998a974690212309b927Iliyan Malchev
38202a77d28ac251545f6f998a974690212309b927Iliyan Malchev    class IonAlloc : public IMemAlloc  {
39202a77d28ac251545f6f998a974690212309b927Iliyan Malchev
40202a77d28ac251545f6f998a974690212309b927Iliyan Malchev        public:
41202a77d28ac251545f6f998a974690212309b927Iliyan Malchev            virtual int alloc_buffer(alloc_data& data);
42202a77d28ac251545f6f998a974690212309b927Iliyan Malchev
43202a77d28ac251545f6f998a974690212309b927Iliyan Malchev            virtual int free_buffer(void *base, size_t size,
44202a77d28ac251545f6f998a974690212309b927Iliyan Malchev                    int offset, int fd);
45202a77d28ac251545f6f998a974690212309b927Iliyan Malchev
46202a77d28ac251545f6f998a974690212309b927Iliyan Malchev            virtual int map_buffer(void **pBase, size_t size,
47202a77d28ac251545f6f998a974690212309b927Iliyan Malchev                    int offset, int fd);
48202a77d28ac251545f6f998a974690212309b927Iliyan Malchev
49202a77d28ac251545f6f998a974690212309b927Iliyan Malchev            virtual int unmap_buffer(void *base, size_t size,
50202a77d28ac251545f6f998a974690212309b927Iliyan Malchev                    int offset);
51202a77d28ac251545f6f998a974690212309b927Iliyan Malchev
52202a77d28ac251545f6f998a974690212309b927Iliyan Malchev            virtual int clean_buffer(void*base, size_t size,
53202a77d28ac251545f6f998a974690212309b927Iliyan Malchev                    int offset, int fd);
54202a77d28ac251545f6f998a974690212309b927Iliyan Malchev
55202a77d28ac251545f6f998a974690212309b927Iliyan Malchev            IonAlloc() { mIonFd = FD_INIT; }
56202a77d28ac251545f6f998a974690212309b927Iliyan Malchev
57202a77d28ac251545f6f998a974690212309b927Iliyan Malchev            ~IonAlloc() { close_device(); }
58202a77d28ac251545f6f998a974690212309b927Iliyan Malchev
59202a77d28ac251545f6f998a974690212309b927Iliyan Malchev        private:
60202a77d28ac251545f6f998a974690212309b927Iliyan Malchev            int mIonFd;
61202a77d28ac251545f6f998a974690212309b927Iliyan Malchev
62202a77d28ac251545f6f998a974690212309b927Iliyan Malchev            int open_device();
63202a77d28ac251545f6f998a974690212309b927Iliyan Malchev
64202a77d28ac251545f6f998a974690212309b927Iliyan Malchev            void close_device();
65202a77d28ac251545f6f998a974690212309b927Iliyan Malchev
66202a77d28ac251545f6f998a974690212309b927Iliyan Malchev    };
67202a77d28ac251545f6f998a974690212309b927Iliyan Malchev
68202a77d28ac251545f6f998a974690212309b927Iliyan Malchev}
69202a77d28ac251545f6f998a974690212309b927Iliyan Malchev
70202a77d28ac251545f6f998a974690212309b927Iliyan Malchev#endif /* GRALLOC_IONALLOC_H */
71202a77d28ac251545f6f998a974690212309b927Iliyan Malchev
72