Merge branch 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jwessel...
[linux-2.6/linux-acpi-2.6/ibm-acpi-2.6.git] / drivers / staging / dream / include / linux / android_pmem.h
blob2fc05d7d335b9760cbb20cd85d95d2f40a176981
1 /* drivers/staging/dream/include/linux/android_pmem.h
3 * Copyright (C) 2007 Google, Inc.
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.
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.
16 #ifndef _ANDROID_PMEM_H_
17 #define _ANDROID_PMEM_H_
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
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).
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.
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)
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);
50 struct android_pmem_platform_data
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;
67 struct pmem_region {
68 unsigned long offset;
69 unsigned long len;
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 *));
76 int pmem_remap(struct pmem_region *region, struct file *file,
77 unsigned operation);
79 #endif //_ANDROID_PPP_H_