1e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris/* 2e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris * drivers/staging/android/uapi/ion.h 3e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris * 4e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris * Copyright (C) 2011 Google, Inc. 5e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris * 6e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris * This software is licensed under the terms of the GNU General Public 7e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris * License version 2, as published by the Free Software Foundation, and 8e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris * may be copied, distributed, and modified under those terms. 9e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris * 10e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris * This program is distributed in the hope that it will be useful, 11e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris * but WITHOUT ANY WARRANTY; without even the implied warranty of 12e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris * GNU General Public License for more details. 14e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris * 15e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris */ 16e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris 17e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris#ifndef _UAPI_LINUX_ION_TEST_H 18e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris#define _UAPI_LINUX_ION_TEST_H 19e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris 20e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris#include <linux/ioctl.h> 21e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris#include <linux/types.h> 22e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris 23e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris/** 24e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris * struct ion_test_rw_data - metadata passed to the kernel to read handle 25e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris * @ptr: a pointer to an area at least as large as size 26e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris * @offset: offset into the ion buffer to start reading 27e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris * @size: size to read or write 28e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris * @write: 1 to write, 0 to read 29e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris */ 30e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferrisstruct ion_test_rw_data { 31e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris __u64 ptr; 32e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris __u64 offset; 33e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris __u64 size; 34e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris int write; 35e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris int __padding; 36e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris}; 37e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris 38e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris#define ION_IOC_MAGIC 'I' 39e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris 40e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris/** 41e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris * DOC: ION_IOC_TEST_SET_DMA_BUF - attach a dma buf to the test driver 42e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris * 43e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris * Attaches a dma buf fd to the test driver. Passing a second fd or -1 will 44e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris * release the first fd. 45e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris */ 46e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris#define ION_IOC_TEST_SET_FD \ 47e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris _IO(ION_IOC_MAGIC, 0xf0) 48e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris 49e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris/** 50e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris * DOC: ION_IOC_TEST_DMA_MAPPING - read or write memory from a handle as DMA 51e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris * 52e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris * Reads or writes the memory from a handle using an uncached mapping. Can be 53e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris * used by unit tests to emulate a DMA engine as close as possible. Only 54e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris * expected to be used for debugging and testing, may not always be available. 55e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris */ 56e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris#define ION_IOC_TEST_DMA_MAPPING \ 57e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris _IOW(ION_IOC_MAGIC, 0xf1, struct ion_test_rw_data) 58e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris 59e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris/** 60e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris * DOC: ION_IOC_TEST_KERNEL_MAPPING - read or write memory from a handle 61e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris * 62e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris * Reads or writes the memory from a handle using a kernel mapping. Can be 63e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris * used by unit tests to test heap map_kernel functions. Only expected to be 64e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris * used for debugging and testing, may not always be available. 65e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris */ 66e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris#define ION_IOC_TEST_KERNEL_MAPPING \ 67e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris _IOW(ION_IOC_MAGIC, 0xf2, struct ion_test_rw_data) 68e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris 69e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris 70e084501669a4e4931c9d648351ecd7d595b81b79Christopher Ferris#endif /* _UAPI_LINUX_ION_H */ 71