mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-09 04:10:18 +09:00
Merge branch 'linaro-fixes/android-3.10' into linaro-android-3.10-lsk
This commit is contained in:
34
Documentation/arm64/tagged-pointers.txt
Normal file
34
Documentation/arm64/tagged-pointers.txt
Normal file
@@ -0,0 +1,34 @@
|
||||
Tagged virtual addresses in AArch64 Linux
|
||||
=========================================
|
||||
|
||||
Author: Will Deacon <will.deacon@arm.com>
|
||||
Date : 12 June 2013
|
||||
|
||||
This document briefly describes the provision of tagged virtual
|
||||
addresses in the AArch64 translation system and their potential uses
|
||||
in AArch64 Linux.
|
||||
|
||||
The kernel configures the translation tables so that translations made
|
||||
via TTBR0 (i.e. userspace mappings) have the top byte (bits 63:56) of
|
||||
the virtual address ignored by the translation hardware. This frees up
|
||||
this byte for application use, with the following caveats:
|
||||
|
||||
(1) The kernel requires that all user addresses passed to EL1
|
||||
are tagged with tag 0x00. This means that any syscall
|
||||
parameters containing user virtual addresses *must* have
|
||||
their top byte cleared before trapping to the kernel.
|
||||
|
||||
(2) Non-zero tags are not preserved when delivering signals.
|
||||
This means that signal handlers in applications making use
|
||||
of tags cannot rely on the tag information for user virtual
|
||||
addresses being maintained for fields inside siginfo_t.
|
||||
One exception to this rule is for signals raised in response
|
||||
to watchpoint debug exceptions, where the tag information
|
||||
will be preserved.
|
||||
|
||||
(3) Special care should be taken when using tagged pointers,
|
||||
since it is likely that C compilers will not hazard two
|
||||
virtual addresses differing only in the upper byte.
|
||||
|
||||
The architecture prevents the use of a tagged PC, so the upper byte will
|
||||
be set to a sign-extension of bit 55 on exception return.
|
||||
@@ -17,7 +17,6 @@ CONFIG_CGROUP_FREEZER=y
|
||||
CONFIG_CGROUP_SCHED=y
|
||||
CONFIG_DM_CRYPT=y
|
||||
CONFIG_EMBEDDED=y
|
||||
CONFIG_EXPERIMENTAL=y
|
||||
CONFIG_FB=y
|
||||
CONFIG_HIGH_RES_TIMERS=y
|
||||
CONFIG_INET6_AH=y
|
||||
@@ -35,6 +34,7 @@ CONFIG_IPV6_MIP6=y
|
||||
CONFIG_IPV6_MULTIPLE_TABLES=y
|
||||
CONFIG_IPV6_OPTIMISTIC_DAD=y
|
||||
CONFIG_IPV6_PRIVACY=y
|
||||
CONFIG_IPV6_ROUTE_INFO=y
|
||||
CONFIG_IPV6_ROUTER_PREF=y
|
||||
CONFIG_IP_ADVANCED_ROUTER=y
|
||||
CONFIG_IP_MULTIPLE_TABLES=y
|
||||
@@ -82,6 +82,7 @@ CONFIG_NETFILTER_XT_MATCH_TIME=y
|
||||
CONFIG_NETFILTER_XT_MATCH_U32=y
|
||||
CONFIG_NETFILTER_XT_TARGET_CLASSIFY=y
|
||||
CONFIG_NETFILTER_XT_TARGET_CONNMARK=y
|
||||
CONFIG_NETFILTER_XT_TARGET_IDLETIMER=y
|
||||
CONFIG_NETFILTER_XT_TARGET_MARK=y
|
||||
CONFIG_NETFILTER_XT_TARGET_NFLOG=y
|
||||
CONFIG_NETFILTER_XT_TARGET_NFQUEUE=y
|
||||
|
||||
@@ -5,7 +5,6 @@
|
||||
# CONFIG_NF_CONNTRACK_SIP is not set
|
||||
# CONFIG_PM_WAKELOCKS_GC is not set
|
||||
# CONFIG_VT is not set
|
||||
CONFIG_ANDROID_RAM_CONSOLE=y
|
||||
CONFIG_ANDROID_TIMED_GPIO=y
|
||||
CONFIG_BACKLIGHT_LCD_SUPPORT=y
|
||||
CONFIG_BLK_DEV_LOOP=y
|
||||
@@ -95,6 +94,9 @@ CONFIG_PM_DEBUG=y
|
||||
CONFIG_PM_RUNTIME=y
|
||||
CONFIG_PM_WAKELOCKS_LIMIT=0
|
||||
CONFIG_POWER_SUPPLY=y
|
||||
CONFIG_PSTORE=y
|
||||
CONFIG_PSTORE_CONSOLE=y
|
||||
CONFIG_PSTORE_RAM=y
|
||||
CONFIG_SCHEDSTATS=y
|
||||
CONFIG_SMARTJOYPLUS_FF=y
|
||||
CONFIG_SND=y
|
||||
|
||||
@@ -92,5 +92,6 @@
|
||||
#define TCR_TG1_64K (UL(1) << 30)
|
||||
#define TCR_IPS_40BIT (UL(2) << 32)
|
||||
#define TCR_ASID16 (UL(1) << 36)
|
||||
#define TCR_TBI0 (UL(1) << 37)
|
||||
|
||||
#endif
|
||||
|
||||
@@ -423,6 +423,7 @@ el0_da:
|
||||
* Data abort handling
|
||||
*/
|
||||
mrs x0, far_el1
|
||||
bic x0, x0, #(0xff << 56)
|
||||
disable_step x1
|
||||
isb
|
||||
enable_dbg
|
||||
|
||||
@@ -151,7 +151,7 @@ ENTRY(__cpu_setup)
|
||||
* both user and kernel.
|
||||
*/
|
||||
ldr x10, =TCR_TxSZ(VA_BITS) | TCR_FLAGS | TCR_IPS_40BIT | \
|
||||
TCR_ASID16 | (1 << 31)
|
||||
TCR_ASID16 | TCR_TBI0 | (1 << 31)
|
||||
#ifdef CONFIG_ARM64_64K_PAGES
|
||||
orr x10, x10, TCR_TG0_64K
|
||||
orr x10, x10, TCR_TG1_64K
|
||||
|
||||
@@ -1178,13 +1178,6 @@ static int cpufreq_governor_interactive(struct cpufreq_policy *policy,
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
||||
rc = sysfs_create_group(get_governor_parent_kobj(policy),
|
||||
get_sysfs_attr());
|
||||
if (rc) {
|
||||
kfree(tunables);
|
||||
return rc;
|
||||
}
|
||||
|
||||
tunables->usage_count = 1;
|
||||
tunables->above_hispeed_delay = default_above_hispeed_delay;
|
||||
tunables->nabove_hispeed_delay =
|
||||
@@ -1200,16 +1193,26 @@ static int cpufreq_governor_interactive(struct cpufreq_policy *policy,
|
||||
spin_lock_init(&tunables->target_loads_lock);
|
||||
spin_lock_init(&tunables->above_hispeed_delay_lock);
|
||||
|
||||
policy->governor_data = tunables;
|
||||
if (!have_governor_per_policy())
|
||||
common_tunables = tunables;
|
||||
|
||||
rc = sysfs_create_group(get_governor_parent_kobj(policy),
|
||||
get_sysfs_attr());
|
||||
if (rc) {
|
||||
kfree(tunables);
|
||||
policy->governor_data = NULL;
|
||||
if (!have_governor_per_policy())
|
||||
common_tunables = NULL;
|
||||
return rc;
|
||||
}
|
||||
|
||||
if (!policy->governor->initialized) {
|
||||
idle_notifier_register(&cpufreq_interactive_idle_nb);
|
||||
cpufreq_register_notifier(&cpufreq_notifier_block,
|
||||
CPUFREQ_TRANSITION_NOTIFIER);
|
||||
}
|
||||
|
||||
policy->governor_data = tunables;
|
||||
if (!have_governor_per_policy())
|
||||
common_tunables = tunables;
|
||||
|
||||
break;
|
||||
|
||||
case CPUFREQ_GOV_POLICY_EXIT:
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -35,9 +35,14 @@ struct compat_ion_custom_data {
|
||||
compat_ulong_t arg;
|
||||
};
|
||||
|
||||
struct compat_ion_handle_data {
|
||||
compat_int_t handle;
|
||||
};
|
||||
|
||||
#define COMPAT_ION_IOC_ALLOC _IOWR(ION_IOC_MAGIC, 0, \
|
||||
struct compat_ion_allocation_data)
|
||||
#define COMPAT_ION_IOC_FREE _IOWR(ION_IOC_MAGIC, 1, struct ion_handle_data)
|
||||
#define COMPAT_ION_IOC_FREE _IOWR(ION_IOC_MAGIC, 1, \
|
||||
struct compat_ion_handle_data)
|
||||
#define COMPAT_ION_IOC_CUSTOM _IOWR(ION_IOC_MAGIC, 6, \
|
||||
struct compat_ion_custom_data)
|
||||
|
||||
@@ -64,6 +69,19 @@ static int compat_get_ion_allocation_data(
|
||||
return err;
|
||||
}
|
||||
|
||||
static int compat_get_ion_handle_data(
|
||||
struct compat_ion_handle_data __user *data32,
|
||||
struct ion_handle_data __user *data)
|
||||
{
|
||||
compat_int_t i;
|
||||
int err;
|
||||
|
||||
err = get_user(i, &data32->handle);
|
||||
err |= put_user(i, &data->handle);
|
||||
|
||||
return err;
|
||||
}
|
||||
|
||||
static int compat_put_ion_allocation_data(
|
||||
struct compat_ion_allocation_data __user *data32,
|
||||
struct ion_allocation_data __user *data)
|
||||
@@ -132,8 +150,8 @@ long compat_ion_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
|
||||
}
|
||||
case COMPAT_ION_IOC_FREE:
|
||||
{
|
||||
struct compat_ion_allocation_data __user *data32;
|
||||
struct ion_allocation_data __user *data;
|
||||
struct compat_ion_handle_data __user *data32;
|
||||
struct ion_handle_data __user *data;
|
||||
int err;
|
||||
|
||||
data32 = compat_ptr(arg);
|
||||
@@ -141,7 +159,7 @@ long compat_ion_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
|
||||
if (data == NULL)
|
||||
return -EFAULT;
|
||||
|
||||
err = compat_get_ion_allocation_data(data32, data);
|
||||
err = compat_get_ion_handle_data(data32, data);
|
||||
if (err)
|
||||
return err;
|
||||
|
||||
|
||||
@@ -21,6 +21,9 @@
|
||||
#define _UAPI_LINUX_BINDER_H
|
||||
|
||||
#include <linux/ioctl.h>
|
||||
#ifdef CONFIG_COMPAT
|
||||
#include <linux/compat.h>
|
||||
#endif
|
||||
|
||||
#define B_PACK_CHARS(c1, c2, c3, c4) \
|
||||
((((c1)<<24)) | (((c2)<<16)) | (((c3)<<8)) | (c4))
|
||||
@@ -48,13 +51,13 @@ enum {
|
||||
*/
|
||||
struct flat_binder_object {
|
||||
/* 8 bytes for large_flat_header. */
|
||||
unsigned long type;
|
||||
unsigned long flags;
|
||||
__u32 type;
|
||||
__u32 flags;
|
||||
|
||||
/* 8 bytes of data. */
|
||||
union {
|
||||
void __user *binder; /* local object */
|
||||
signed long handle; /* remote object */
|
||||
__u32 handle; /* remote object */
|
||||
};
|
||||
|
||||
/* extra data associated with local object */
|
||||
@@ -67,18 +70,18 @@ struct flat_binder_object {
|
||||
*/
|
||||
|
||||
struct binder_write_read {
|
||||
signed long write_size; /* bytes to write */
|
||||
signed long write_consumed; /* bytes consumed by driver */
|
||||
size_t write_size; /* bytes to write */
|
||||
size_t write_consumed; /* bytes consumed by driver */
|
||||
unsigned long write_buffer;
|
||||
signed long read_size; /* bytes to read */
|
||||
signed long read_consumed; /* bytes consumed by driver */
|
||||
size_t read_size; /* bytes to read */
|
||||
size_t read_consumed; /* bytes consumed by driver */
|
||||
unsigned long read_buffer;
|
||||
};
|
||||
|
||||
/* Use with BINDER_VERSION, driver fills in fields. */
|
||||
struct binder_version {
|
||||
/* driver protocol version -- increment with incompatible change */
|
||||
signed long protocol_version;
|
||||
__s32 protocol_version;
|
||||
};
|
||||
|
||||
/* This is the current protocol version. */
|
||||
@@ -86,7 +89,7 @@ struct binder_version {
|
||||
|
||||
#define BINDER_WRITE_READ _IOWR('b', 1, struct binder_write_read)
|
||||
#define BINDER_SET_IDLE_TIMEOUT _IOW('b', 3, __s64)
|
||||
#define BINDER_SET_MAX_THREADS _IOW('b', 5, size_t)
|
||||
#define BINDER_SET_MAX_THREADS _IOW('b', 5, __u32)
|
||||
#define BINDER_SET_IDLE_PRIORITY _IOW('b', 6, __s32)
|
||||
#define BINDER_SET_CONTEXT_MGR _IOW('b', 7, __s32)
|
||||
#define BINDER_THREAD_EXIT _IOW('b', 8, __s32)
|
||||
@@ -119,14 +122,14 @@ struct binder_transaction_data {
|
||||
* identifying the target and contents of the transaction.
|
||||
*/
|
||||
union {
|
||||
size_t handle; /* target descriptor of command transaction */
|
||||
__u32 handle; /* target descriptor of command transaction */
|
||||
void *ptr; /* target descriptor of return transaction */
|
||||
} target;
|
||||
void *cookie; /* target object cookie */
|
||||
unsigned int code; /* transaction command */
|
||||
__u32 code; /* transaction command */
|
||||
|
||||
/* General information about the transaction. */
|
||||
unsigned int flags;
|
||||
__u32 flags;
|
||||
pid_t sender_pid;
|
||||
uid_t sender_euid;
|
||||
size_t data_size; /* number of bytes of data */
|
||||
@@ -143,7 +146,7 @@ struct binder_transaction_data {
|
||||
/* offsets from buffer to flat_binder_object structs */
|
||||
const void __user *offsets;
|
||||
} ptr;
|
||||
uint8_t buf[8];
|
||||
__u8 buf[8];
|
||||
} data;
|
||||
};
|
||||
|
||||
@@ -152,19 +155,24 @@ struct binder_ptr_cookie {
|
||||
void *cookie;
|
||||
};
|
||||
|
||||
struct binder_handle_cookie {
|
||||
__u32 handle;
|
||||
void *cookie;
|
||||
} __attribute__((packed));
|
||||
|
||||
struct binder_pri_desc {
|
||||
int priority;
|
||||
int desc;
|
||||
__s32 priority;
|
||||
__u32 desc;
|
||||
};
|
||||
|
||||
struct binder_pri_ptr_cookie {
|
||||
int priority;
|
||||
__s32 priority;
|
||||
void *ptr;
|
||||
void *cookie;
|
||||
};
|
||||
|
||||
enum binder_driver_return_protocol {
|
||||
BR_ERROR = _IOR('r', 0, int),
|
||||
BR_ERROR = _IOR('r', 0, __s32),
|
||||
/*
|
||||
* int: error code
|
||||
*/
|
||||
@@ -178,7 +186,7 @@ enum binder_driver_return_protocol {
|
||||
* binder_transaction_data: the received command.
|
||||
*/
|
||||
|
||||
BR_ACQUIRE_RESULT = _IOR('r', 4, int),
|
||||
BR_ACQUIRE_RESULT = _IOR('r', 4, __s32),
|
||||
/*
|
||||
* not currently supported
|
||||
* int: 0 if the last bcATTEMPT_ACQUIRE was not successful.
|
||||
@@ -258,22 +266,22 @@ enum binder_driver_command_protocol {
|
||||
* binder_transaction_data: the sent command.
|
||||
*/
|
||||
|
||||
BC_ACQUIRE_RESULT = _IOW('c', 2, int),
|
||||
BC_ACQUIRE_RESULT = _IOW('c', 2, __s32),
|
||||
/*
|
||||
* not currently supported
|
||||
* int: 0 if the last BR_ATTEMPT_ACQUIRE was not successful.
|
||||
* Else you have acquired a primary reference on the object.
|
||||
*/
|
||||
|
||||
BC_FREE_BUFFER = _IOW('c', 3, int),
|
||||
BC_FREE_BUFFER = _IOW('c', 3, void *),
|
||||
/*
|
||||
* void *: ptr to transaction data received on a read
|
||||
*/
|
||||
|
||||
BC_INCREFS = _IOW('c', 4, int),
|
||||
BC_ACQUIRE = _IOW('c', 5, int),
|
||||
BC_RELEASE = _IOW('c', 6, int),
|
||||
BC_DECREFS = _IOW('c', 7, int),
|
||||
BC_INCREFS = _IOW('c', 4, __u32),
|
||||
BC_ACQUIRE = _IOW('c', 5, __u32),
|
||||
BC_RELEASE = _IOW('c', 6, __u32),
|
||||
BC_DECREFS = _IOW('c', 7, __u32),
|
||||
/*
|
||||
* int: descriptor
|
||||
*/
|
||||
@@ -308,15 +316,15 @@ enum binder_driver_command_protocol {
|
||||
* of looping threads it has available.
|
||||
*/
|
||||
|
||||
BC_REQUEST_DEATH_NOTIFICATION = _IOW('c', 14, struct binder_ptr_cookie),
|
||||
BC_REQUEST_DEATH_NOTIFICATION = _IOW('c', 14, struct binder_handle_cookie),
|
||||
/*
|
||||
* void *: ptr to binder
|
||||
* int: handle
|
||||
* void *: cookie
|
||||
*/
|
||||
|
||||
BC_CLEAR_DEATH_NOTIFICATION = _IOW('c', 15, struct binder_ptr_cookie),
|
||||
BC_CLEAR_DEATH_NOTIFICATION = _IOW('c', 15, struct binder_handle_cookie),
|
||||
/*
|
||||
* void *: ptr to binder
|
||||
* int: handle
|
||||
* void *: cookie
|
||||
*/
|
||||
|
||||
@@ -326,5 +334,111 @@ enum binder_driver_command_protocol {
|
||||
*/
|
||||
};
|
||||
|
||||
/* Support for 32bit userspace on a 64bit system */
|
||||
#ifdef CONFIG_COMPAT
|
||||
struct compat_flat_binder_object {
|
||||
/* 8 bytes for large_flat_header. */
|
||||
__u32 type;
|
||||
__u32 flags;
|
||||
|
||||
/* 8 bytes of data. */
|
||||
union {
|
||||
compat_uptr_t binder; /* local object */
|
||||
__u32 handle; /* remote object */
|
||||
};
|
||||
|
||||
/* extra data associated with local object */
|
||||
compat_uptr_t cookie;
|
||||
};
|
||||
|
||||
struct compat_binder_write_read {
|
||||
compat_size_t write_size; /* bytes to write */
|
||||
compat_size_t write_consumed; /* bytes consumed by driver */
|
||||
compat_ulong_t write_buffer;
|
||||
compat_size_t read_size; /* bytes to read */
|
||||
compat_size_t read_consumed; /* bytes consumed by driver */
|
||||
compat_ulong_t read_buffer;
|
||||
};
|
||||
|
||||
#define COMPAT_BINDER_WRITE_READ _IOWR('b', 1, struct compat_binder_write_read)
|
||||
|
||||
struct compat_binder_transaction_data {
|
||||
/* The first two are only used for bcTRANSACTION and brTRANSACTION,
|
||||
* identifying the target and contents of the transaction.
|
||||
*/
|
||||
union {
|
||||
__u32 handle; /* target descriptor of command transaction */
|
||||
compat_uptr_t ptr; /* target descriptor of return transaction */
|
||||
} target;
|
||||
compat_uptr_t cookie; /* target object cookie */
|
||||
__u32 code; /* transaction command */
|
||||
|
||||
/* General information about the transaction. */
|
||||
__u32 flags;
|
||||
pid_t sender_pid;
|
||||
uid_t sender_euid;
|
||||
compat_size_t data_size; /* number of bytes of data */
|
||||
compat_size_t offsets_size; /* number of bytes of offsets */
|
||||
|
||||
/* If this transaction is inline, the data immediately
|
||||
* follows here; otherwise, it ends with a pointer to
|
||||
* the data buffer.
|
||||
*/
|
||||
union {
|
||||
struct {
|
||||
/* transaction data */
|
||||
compat_uptr_t buffer;
|
||||
/* offsets from buffer to flat_binder_object structs */
|
||||
compat_uptr_t offsets;
|
||||
} ptr;
|
||||
__u8 buf[8];
|
||||
} data;
|
||||
};
|
||||
|
||||
struct compat_binder_ptr_cookie {
|
||||
compat_uptr_t ptr;
|
||||
compat_uptr_t cookie;
|
||||
};
|
||||
|
||||
/* legacy - not used anymore */
|
||||
struct compat_binder_pri_ptr_cookie {
|
||||
__s32 priority;
|
||||
compat_uptr_t ptr;
|
||||
compat_uptr_t cookie;
|
||||
};
|
||||
|
||||
enum compat_binder_driver_return_protocol {
|
||||
COMPAT_BR_TRANSACTION = _IOR('r', 2, struct compat_binder_transaction_data),
|
||||
COMPAT_BR_REPLY = _IOR('r', 3, struct compat_binder_transaction_data),
|
||||
|
||||
COMPAT_BR_INCREFS = _IOR('r', 7, struct compat_binder_ptr_cookie),
|
||||
COMPAT_BR_ACQUIRE = _IOR('r', 8, struct compat_binder_ptr_cookie),
|
||||
COMPAT_BR_RELEASE = _IOR('r', 9, struct compat_binder_ptr_cookie),
|
||||
COMPAT_BR_DECREFS = _IOR('r', 10, struct compat_binder_ptr_cookie),
|
||||
|
||||
/* legacy - not used anymore */
|
||||
COMPAT_BR_ATTEMPT_ACQUIRE = _IOR('r', 11, struct compat_binder_pri_ptr_cookie),
|
||||
|
||||
COMPAT_BR_DEAD_BINDER = _IOR('r', 15, compat_uptr_t),
|
||||
COMPAT_BR_CLEAR_DEATH_NOTIFICATION_DONE = _IOR('r', 16, compat_uptr_t),
|
||||
};
|
||||
|
||||
enum compat_binder_driver_command_protocol {
|
||||
COMPAT_BC_TRANSACTION = _IOW('c', 0, struct compat_binder_transaction_data),
|
||||
COMPAT_BC_REPLY = _IOW('c', 1, struct compat_binder_transaction_data),
|
||||
|
||||
COMPAT_BC_FREE_BUFFER = _IOW('c', 3, compat_uptr_t),
|
||||
|
||||
COMPAT_BC_INCREFS_DONE = _IOW('c', 8, struct compat_binder_ptr_cookie),
|
||||
COMPAT_BC_ACQUIRE_DONE = _IOW('c', 9, struct compat_binder_ptr_cookie),
|
||||
|
||||
COMPAT_BC_REQUEST_DEATH_NOTIFICATION = _IOW('c', 14, struct compat_binder_ptr_cookie),
|
||||
COMPAT_BC_CLEAR_DEATH_NOTIFICATION = _IOW('c', 15, struct compat_binder_ptr_cookie),
|
||||
|
||||
COMPAT_BC_DEAD_BINDER_DONE = _IOW('c', 16, compat_uptr_t),
|
||||
};
|
||||
#endif /* CONFIG_COMPAT */
|
||||
|
||||
|
||||
#endif /* _UAPI_LINUX_BINDER_H */
|
||||
|
||||
|
||||
@@ -295,17 +295,27 @@ struct adf_overlay_engine_data {
|
||||
};
|
||||
#define ADF_MAX_SUPPORTED_FORMATS (4096 / sizeof(__u32))
|
||||
|
||||
#define ADF_SET_EVENT _IOW('D', 0, struct adf_set_event)
|
||||
#define ADF_BLANK _IOW('D', 1, __u8)
|
||||
#define ADF_POST_CONFIG _IOW('D', 2, struct adf_post_config)
|
||||
#define ADF_SET_MODE _IOW('D', 3, struct drm_mode_modeinfo)
|
||||
#define ADF_GET_DEVICE_DATA _IOR('D', 4, struct adf_device_data)
|
||||
#define ADF_GET_INTERFACE_DATA _IOR('D', 5, struct adf_interface_data)
|
||||
#define ADF_IOCTL_TYPE 'D'
|
||||
#define ADF_IOCTL_NR_CUSTOM 128
|
||||
|
||||
#define ADF_SET_EVENT _IOW(ADF_IOCTL_TYPE, 0, struct adf_set_event)
|
||||
#define ADF_BLANK _IOW(ADF_IOCTL_TYPE, 1, __u8)
|
||||
#define ADF_POST_CONFIG _IOW(ADF_IOCTL_TYPE, 2, struct adf_post_config)
|
||||
#define ADF_SET_MODE _IOW(ADF_IOCTL_TYPE, 3, \
|
||||
struct drm_mode_modeinfo)
|
||||
#define ADF_GET_DEVICE_DATA _IOR(ADF_IOCTL_TYPE, 4, struct adf_device_data)
|
||||
#define ADF_GET_INTERFACE_DATA _IOR(ADF_IOCTL_TYPE, 5, \
|
||||
struct adf_interface_data)
|
||||
#define ADF_GET_OVERLAY_ENGINE_DATA \
|
||||
_IOR('D', 6, struct adf_overlay_engine_data)
|
||||
#define ADF_SIMPLE_POST_CONFIG _IOW('D', 7, struct adf_simple_post_config)
|
||||
#define ADF_SIMPLE_BUFFER_ALLOC _IOW('D', 8, struct adf_simple_buffer_alloc)
|
||||
#define ADF_ATTACH _IOW('D', 9, struct adf_attachment_config)
|
||||
#define ADF_DETACH _IOW('D', 10, struct adf_attachment_config)
|
||||
_IOR(ADF_IOCTL_TYPE, 6, \
|
||||
struct adf_overlay_engine_data)
|
||||
#define ADF_SIMPLE_POST_CONFIG _IOW(ADF_IOCTL_TYPE, 7, \
|
||||
struct adf_simple_post_config)
|
||||
#define ADF_SIMPLE_BUFFER_ALLOC _IOW(ADF_IOCTL_TYPE, 8, \
|
||||
struct adf_simple_buffer_alloc)
|
||||
#define ADF_ATTACH _IOW(ADF_IOCTL_TYPE, 9, \
|
||||
struct adf_attachment_config)
|
||||
#define ADF_DETACH _IOW(ADF_IOCTL_TYPE, 10, \
|
||||
struct adf_attachment_config)
|
||||
|
||||
#endif /* _UAPI_VIDEO_ADF_H_ */
|
||||
|
||||
Reference in New Issue
Block a user