]>
Commit | Line | Data |
---|---|---|
e79753ed PM |
1 | /* drivers/staging/dream/include/linux/android_pmem.h |
2 | * | |
3 | * Copyright (C) 2007 Google, Inc. | |
4 | * | |
5 | * This software is licensed under the terms of the GNU General Public | |
6 | * License version 2, as published by the Free Software Foundation, and | |
7 | * may be copied, distributed, and modified under those terms. | |
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 | ||
16 | #ifndef _ANDROID_PMEM_H_ | |
17 | #define _ANDROID_PMEM_H_ | |
18 | ||
19 | #define PMEM_IOCTL_MAGIC 'p' | |
20 | #define PMEM_GET_PHYS _IOW(PMEM_IOCTL_MAGIC, 1, unsigned int) | |
21 | #define PMEM_MAP _IOW(PMEM_IOCTL_MAGIC, 2, unsigned int) | |
22 | #define PMEM_GET_SIZE _IOW(PMEM_IOCTL_MAGIC, 3, unsigned int) | |
23 | #define PMEM_UNMAP _IOW(PMEM_IOCTL_MAGIC, 4, unsigned int) | |
24 | /* This ioctl will allocate pmem space, backing the file, it will fail | |
25 | * if the file already has an allocation, pass it the len as the argument | |
26 | * to the ioctl */ | |
27 | #define PMEM_ALLOCATE _IOW(PMEM_IOCTL_MAGIC, 5, unsigned int) | |
28 | /* This will connect a one pmem file to another, pass the file that is already | |
29 | * backed in memory as the argument to the ioctl | |
30 | */ | |
31 | #define PMEM_CONNECT _IOW(PMEM_IOCTL_MAGIC, 6, unsigned int) | |
32 | /* Returns the total size of the pmem region it is sent to as a pmem_region | |
33 | * struct (with offset set to 0). | |
34 | */ | |
35 | #define PMEM_GET_TOTAL_SIZE _IOW(PMEM_IOCTL_MAGIC, 7, unsigned int) | |
36 | /* Revokes gpu registers and resets the gpu. Pass a pointer to the | |
37 | * start of the mapped gpu regs (the vaddr returned by mmap) as the argument. | |
38 | */ | |
39 | #define HW3D_REVOKE_GPU _IOW(PMEM_IOCTL_MAGIC, 8, unsigned int) | |
40 | #define HW3D_GRANT_GPU _IOW(PMEM_IOCTL_MAGIC, 9, unsigned int) | |
41 | #define HW3D_WAIT_FOR_INTERRUPT _IOW(PMEM_IOCTL_MAGIC, 10, unsigned int) | |
42 | ||
43 | int get_pmem_file(int fd, unsigned long *start, unsigned long *vstart, | |
44 | unsigned long *end, struct file **filp); | |
45 | int get_pmem_user_addr(struct file *file, unsigned long *start, | |
46 | unsigned long *end); | |
47 | void put_pmem_file(struct file* file); | |
48 | void flush_pmem_file(struct file *file, unsigned long start, unsigned long len); | |
49 | ||
50 | struct android_pmem_platform_data | |
51 | { | |
52 | const char* name; | |
53 | /* starting physical address of memory region */ | |
54 | unsigned long start; | |
55 | /* size of memory region */ | |
56 | unsigned long size; | |
57 | /* set to indicate the region should not be managed with an allocator */ | |
58 | unsigned no_allocator; | |
59 | /* set to indicate maps of this region should be cached, if a mix of | |
60 | * cached and uncached is desired, set this and open the device with | |
61 | * O_SYNC to get an uncached region */ | |
62 | unsigned cached; | |
63 | /* The MSM7k has bits to enable a write buffer in the bus controller*/ | |
64 | unsigned buffered; | |
65 | }; | |
66 | ||
67 | struct pmem_region { | |
68 | unsigned long offset; | |
69 | unsigned long len; | |
70 | }; | |
71 | ||
72 | int pmem_setup(struct android_pmem_platform_data *pdata, | |
73 | long (*ioctl)(struct file *, unsigned int, unsigned long), | |
74 | int (*release)(struct inode *, struct file *)); | |
75 | ||
76 | int pmem_remap(struct pmem_region *region, struct file *file, | |
77 | unsigned operation); | |
78 | ||
79 | #endif //_ANDROID_PPP_H_ | |
80 |