1202a77d28ac251545f6f998a974690212309b927Iliyan Malchev/* 2a43fb8fce6d9be5577de1e0f49c99bd4fe2f6d44Duy Truong * Copyright (c) 2011-2012, The Linux Foundation. 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. 13a43fb8fce6d9be5577de1e0f49c99bd4fe2f6d44Duy Truong * * Neither the name of The Linux Foundation 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 33a4f41fae325499e6dcde7b6be4984bd9c28d96d3Naseer Ahmed#include <linux/msm_ion.h> 34202a77d28ac251545f6f998a974690212309b927Iliyan Malchev#include "memalloc.h" 3529a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed#include "gr.h" 36202a77d28ac251545f6f998a974690212309b927Iliyan Malchev 37202a77d28ac251545f6f998a974690212309b927Iliyan Malchevnamespace gralloc { 38202a77d28ac251545f6f998a974690212309b927Iliyan Malchev 3929a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmedclass IonAlloc : public IMemAlloc { 40202a77d28ac251545f6f998a974690212309b927Iliyan Malchev 4129a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed public: 4229a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed virtual int alloc_buffer(alloc_data& data); 43202a77d28ac251545f6f998a974690212309b927Iliyan Malchev 4429a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed virtual int free_buffer(void *base, size_t size, 4529a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed int offset, int fd); 46202a77d28ac251545f6f998a974690212309b927Iliyan Malchev 4729a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed virtual int map_buffer(void **pBase, size_t size, 4829a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed int offset, int fd); 49202a77d28ac251545f6f998a974690212309b927Iliyan Malchev 5029a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed virtual int unmap_buffer(void *base, size_t size, 5129a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed int offset); 52202a77d28ac251545f6f998a974690212309b927Iliyan Malchev 5329a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed virtual int clean_buffer(void*base, size_t size, 540b5054e40d055687b036b626538e79bf160beebbNaseer Ahmed int offset, int fd, int op); 55202a77d28ac251545f6f998a974690212309b927Iliyan Malchev 5629a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed IonAlloc() { mIonFd = FD_INIT; } 57202a77d28ac251545f6f998a974690212309b927Iliyan Malchev 5829a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed ~IonAlloc() { close_device(); } 59202a77d28ac251545f6f998a974690212309b927Iliyan Malchev 6029a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed private: 6129a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed int mIonFd; 62202a77d28ac251545f6f998a974690212309b927Iliyan Malchev 6329a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed int open_device(); 64202a77d28ac251545f6f998a974690212309b927Iliyan Malchev 6529a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed void close_device(); 66202a77d28ac251545f6f998a974690212309b927Iliyan Malchev 6729a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed mutable Locker mLock; 6829a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed 6929a26818d7294055539167b2fbfdaa168bcf725cNaseer Ahmed}; 70202a77d28ac251545f6f998a974690212309b927Iliyan Malchev 71202a77d28ac251545f6f998a974690212309b927Iliyan Malchev} 72202a77d28ac251545f6f998a974690212309b927Iliyan Malchev 73202a77d28ac251545f6f998a974690212309b927Iliyan Malchev#endif /* GRALLOC_IONALLOC_H */ 74202a77d28ac251545f6f998a974690212309b927Iliyan Malchev 75