blob: 44b7005d674f2eecfa8032a6b4a7bc5053559360 [file] [log] [blame]
Larry Bassel1daa0f02011-12-06 15:55:58 -08001/*
2 *
Larry Basselcf10e582012-02-02 09:09:43 -08003 * Copyright (c) 2011-2012, Code Aurora Forum. All rights reserved.
Larry Bassel1daa0f02011-12-06 15:55:58 -08004 *
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License version 2 and
7 * only version 2 as published by the Free Software Foundation.
8 *
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
13 *
14 */
15#ifndef _FMEM_H_
16#define _FMEM_H_
17
Laura Abbott77497922011-12-13 11:32:19 -080018#include <linux/vmalloc.h>
19
Larry Bassel1daa0f02011-12-06 15:55:58 -080020struct fmem_platform_data {
21 unsigned long phys;
22 unsigned long size;
Olav Hauganf6dc7742012-02-15 09:11:55 -080023 unsigned long reserved_size_low;
24 unsigned long reserved_size_high;
Larry Bassel1daa0f02011-12-06 15:55:58 -080025};
26
27struct fmem_data {
28 unsigned long phys;
29 void *virt;
Laura Abbott77497922011-12-13 11:32:19 -080030 struct vm_struct *area;
Larry Bassel1daa0f02011-12-06 15:55:58 -080031 unsigned long size;
Olav Hauganf6dc7742012-02-15 09:11:55 -080032 unsigned long reserved_size_low;
33 unsigned long reserved_size_high;
Larry Bassel1daa0f02011-12-06 15:55:58 -080034};
35
36enum fmem_state {
37 FMEM_UNINITIALIZED = 0,
38 FMEM_C_STATE,
39 FMEM_T_STATE,
40 FMEM_O_STATE,
41};
42
Laura Abbott99f87d22011-12-14 16:01:54 -080043#ifdef CONFIG_QCACHE
Larry Bassel1daa0f02011-12-06 15:55:58 -080044struct fmem_data *fmem_get_info(void);
45int fmem_set_state(enum fmem_state);
46void lock_fmem_state(void);
47void unlock_fmem_state(void);
Laura Abbott77497922011-12-13 11:32:19 -080048void *fmem_map_virtual_area(int cacheability);
49void fmem_unmap_virtual_area(void);
Laura Abbott99f87d22011-12-14 16:01:54 -080050#else
51static inline struct fmem_data *fmem_get_info(void) { return NULL; }
52static inline int fmem_set_state(enum fmem_state f) { return -ENODEV; }
53static inline void lock_fmem_state(void) { return; }
54static inline void unlock_fmem_state(void) { return; }
Laura Abbott77497922011-12-13 11:32:19 -080055static inline void *fmem_map_virtual_area(int cacheability) { return NULL; }
56static inline void fmem_unmap_virtual_area(void) { return; }
Laura Abbott99f87d22011-12-14 16:01:54 -080057#endif
58
Laura Abbottf637aff2011-12-14 14:16:17 -080059int request_fmem_c_region(void *unused);
60int release_fmem_c_region(void *unused);
Larry Bassel1daa0f02011-12-06 15:55:58 -080061#endif