Merge branch 'master' into for-3.19/drivers
This commit is contained in:
@@ -125,6 +125,7 @@ header-y += filter.h
|
||||
header-y += firewire-cdev.h
|
||||
header-y += firewire-constants.h
|
||||
header-y += flat.h
|
||||
header-y += fou.h
|
||||
header-y += fs.h
|
||||
header-y += fsl_hypervisor.h
|
||||
header-y += fuse.h
|
||||
@@ -141,6 +142,7 @@ header-y += hid.h
|
||||
header-y += hiddev.h
|
||||
header-y += hidraw.h
|
||||
header-y += hpet.h
|
||||
header-y += hsr_netlink.h
|
||||
header-y += hyperv.h
|
||||
header-y += hysdn_if.h
|
||||
header-y += i2c-dev.h
|
||||
@@ -251,6 +253,7 @@ header-y += mii.h
|
||||
header-y += minix_fs.h
|
||||
header-y += mman.h
|
||||
header-y += mmtimer.h
|
||||
header-y += mpls.h
|
||||
header-y += mqueue.h
|
||||
header-y += mroute.h
|
||||
header-y += mroute6.h
|
||||
@@ -374,6 +377,7 @@ header-y += swab.h
|
||||
header-y += synclink.h
|
||||
header-y += sysctl.h
|
||||
header-y += sysinfo.h
|
||||
header-y += target_core_user.h
|
||||
header-y += taskstats.h
|
||||
header-y += tcp.h
|
||||
header-y += tcp_metrics.h
|
||||
@@ -423,6 +427,7 @@ header-y += virtio_net.h
|
||||
header-y += virtio_pci.h
|
||||
header-y += virtio_ring.h
|
||||
header-y += virtio_rng.h
|
||||
header=y += vm_sockets.h
|
||||
header-y += vt.h
|
||||
header-y += wait.h
|
||||
header-y += wanrouter.h
|
||||
|
@@ -37,6 +37,7 @@
|
||||
|
||||
#define RENAME_NOREPLACE (1 << 0) /* Don't overwrite target */
|
||||
#define RENAME_EXCHANGE (1 << 1) /* Exchange source and dest */
|
||||
#define RENAME_WHITEOUT (1 << 2) /* Whiteout source */
|
||||
|
||||
struct fstrim_range {
|
||||
__u64 start;
|
||||
|
@@ -15,6 +15,7 @@
|
||||
|
||||
#include <linux/types.h>
|
||||
#include <linux/if_ether.h>
|
||||
#include <linux/in6.h>
|
||||
|
||||
#define SYSFS_BRIDGE_ATTR "bridge"
|
||||
#define SYSFS_BRIDGE_FDB "brforward"
|
||||
|
@@ -739,6 +739,13 @@ struct input_keymap_entry {
|
||||
#define KEY_BRIGHTNESS_MIN 0x250 /* Set Brightness to Minimum */
|
||||
#define KEY_BRIGHTNESS_MAX 0x251 /* Set Brightness to Maximum */
|
||||
|
||||
#define KEY_KBDINPUTASSIST_PREV 0x260
|
||||
#define KEY_KBDINPUTASSIST_NEXT 0x261
|
||||
#define KEY_KBDINPUTASSIST_PREVGROUP 0x262
|
||||
#define KEY_KBDINPUTASSIST_NEXTGROUP 0x263
|
||||
#define KEY_KBDINPUTASSIST_ACCEPT 0x264
|
||||
#define KEY_KBDINPUTASSIST_CANCEL 0x265
|
||||
|
||||
#define BTN_TRIGGER_HAPPY 0x2c0
|
||||
#define BTN_TRIGGER_HAPPY1 0x2c0
|
||||
#define BTN_TRIGGER_HAPPY2 0x2c1
|
||||
|
@@ -364,7 +364,7 @@ struct perf_event_mmap_page {
|
||||
/*
|
||||
* Bits needed to read the hw events in user-space.
|
||||
*
|
||||
* u32 seq, time_mult, time_shift, idx, width;
|
||||
* u32 seq, time_mult, time_shift, index, width;
|
||||
* u64 count, enabled, running;
|
||||
* u64 cyc, time_offset;
|
||||
* s64 pmc = 0;
|
||||
@@ -383,11 +383,11 @@ struct perf_event_mmap_page {
|
||||
* time_shift = pc->time_shift;
|
||||
* }
|
||||
*
|
||||
* idx = pc->index;
|
||||
* index = pc->index;
|
||||
* count = pc->offset;
|
||||
* if (pc->cap_usr_rdpmc && idx) {
|
||||
* if (pc->cap_user_rdpmc && index) {
|
||||
* width = pc->pmc_width;
|
||||
* pmc = rdpmc(idx - 1);
|
||||
* pmc = rdpmc(index - 1);
|
||||
* }
|
||||
*
|
||||
* barrier();
|
||||
@@ -415,7 +415,7 @@ struct perf_event_mmap_page {
|
||||
};
|
||||
|
||||
/*
|
||||
* If cap_usr_rdpmc this field provides the bit-width of the value
|
||||
* If cap_user_rdpmc this field provides the bit-width of the value
|
||||
* read using the rdpmc() or equivalent instruction. This can be used
|
||||
* to sign extend the result like:
|
||||
*
|
||||
@@ -439,10 +439,10 @@ struct perf_event_mmap_page {
|
||||
*
|
||||
* Where time_offset,time_mult,time_shift and cyc are read in the
|
||||
* seqcount loop described above. This delta can then be added to
|
||||
* enabled and possible running (if idx), improving the scaling:
|
||||
* enabled and possible running (if index), improving the scaling:
|
||||
*
|
||||
* enabled += delta;
|
||||
* if (idx)
|
||||
* if (index)
|
||||
* running += delta;
|
||||
*
|
||||
* quot = count / running;
|
||||
|
@@ -13,7 +13,7 @@
|
||||
#define CLONE_VFORK 0x00004000 /* set if the parent wants the child to wake it up on mm_release */
|
||||
#define CLONE_PARENT 0x00008000 /* set if we want to have the same parent as the cloner */
|
||||
#define CLONE_THREAD 0x00010000 /* Same thread group? */
|
||||
#define CLONE_NEWNS 0x00020000 /* New namespace group? */
|
||||
#define CLONE_NEWNS 0x00020000 /* New mount namespace group */
|
||||
#define CLONE_SYSVSEM 0x00040000 /* share system V SEM_UNDO semantics */
|
||||
#define CLONE_SETTLS 0x00080000 /* create a new TLS for the child */
|
||||
#define CLONE_PARENT_SETTID 0x00100000 /* set the TID in the parent */
|
||||
|
142
include/uapi/linux/target_core_user.h
Normal file
142
include/uapi/linux/target_core_user.h
Normal file
@@ -0,0 +1,142 @@
|
||||
#ifndef __TARGET_CORE_USER_H
|
||||
#define __TARGET_CORE_USER_H
|
||||
|
||||
/* This header will be used by application too */
|
||||
|
||||
#include <linux/types.h>
|
||||
#include <linux/uio.h>
|
||||
|
||||
#ifndef __packed
|
||||
#define __packed __attribute__((packed))
|
||||
#endif
|
||||
|
||||
#define TCMU_VERSION "1.0"
|
||||
|
||||
/*
|
||||
* Ring Design
|
||||
* -----------
|
||||
*
|
||||
* The mmaped area is divided into three parts:
|
||||
* 1) The mailbox (struct tcmu_mailbox, below)
|
||||
* 2) The command ring
|
||||
* 3) Everything beyond the command ring (data)
|
||||
*
|
||||
* The mailbox tells userspace the offset of the command ring from the
|
||||
* start of the shared memory region, and how big the command ring is.
|
||||
*
|
||||
* The kernel passes SCSI commands to userspace by putting a struct
|
||||
* tcmu_cmd_entry in the ring, updating mailbox->cmd_head, and poking
|
||||
* userspace via uio's interrupt mechanism.
|
||||
*
|
||||
* tcmu_cmd_entry contains a header. If the header type is PAD,
|
||||
* userspace should skip hdr->length bytes (mod cmdr_size) to find the
|
||||
* next cmd_entry.
|
||||
*
|
||||
* Otherwise, the entry will contain offsets into the mmaped area that
|
||||
* contain the cdb and data buffers -- the latter accessible via the
|
||||
* iov array. iov addresses are also offsets into the shared area.
|
||||
*
|
||||
* When userspace is completed handling the command, set
|
||||
* entry->rsp.scsi_status, fill in rsp.sense_buffer if appropriate,
|
||||
* and also set mailbox->cmd_tail equal to the old cmd_tail plus
|
||||
* hdr->length, mod cmdr_size. If cmd_tail doesn't equal cmd_head, it
|
||||
* should process the next packet the same way, and so on.
|
||||
*/
|
||||
|
||||
#define TCMU_MAILBOX_VERSION 1
|
||||
#define ALIGN_SIZE 64 /* Should be enough for most CPUs */
|
||||
|
||||
struct tcmu_mailbox {
|
||||
__u16 version;
|
||||
__u16 flags;
|
||||
__u32 cmdr_off;
|
||||
__u32 cmdr_size;
|
||||
|
||||
__u32 cmd_head;
|
||||
|
||||
/* Updated by user. On its own cacheline */
|
||||
__u32 cmd_tail __attribute__((__aligned__(ALIGN_SIZE)));
|
||||
|
||||
} __packed;
|
||||
|
||||
enum tcmu_opcode {
|
||||
TCMU_OP_PAD = 0,
|
||||
TCMU_OP_CMD,
|
||||
};
|
||||
|
||||
/*
|
||||
* Only a few opcodes, and length is 8-byte aligned, so use low bits for opcode.
|
||||
*/
|
||||
struct tcmu_cmd_entry_hdr {
|
||||
__u32 len_op;
|
||||
} __packed;
|
||||
|
||||
#define TCMU_OP_MASK 0x7
|
||||
|
||||
static inline enum tcmu_opcode tcmu_hdr_get_op(struct tcmu_cmd_entry_hdr *hdr)
|
||||
{
|
||||
return hdr->len_op & TCMU_OP_MASK;
|
||||
}
|
||||
|
||||
static inline void tcmu_hdr_set_op(struct tcmu_cmd_entry_hdr *hdr, enum tcmu_opcode op)
|
||||
{
|
||||
hdr->len_op &= ~TCMU_OP_MASK;
|
||||
hdr->len_op |= (op & TCMU_OP_MASK);
|
||||
}
|
||||
|
||||
static inline __u32 tcmu_hdr_get_len(struct tcmu_cmd_entry_hdr *hdr)
|
||||
{
|
||||
return hdr->len_op & ~TCMU_OP_MASK;
|
||||
}
|
||||
|
||||
static inline void tcmu_hdr_set_len(struct tcmu_cmd_entry_hdr *hdr, __u32 len)
|
||||
{
|
||||
hdr->len_op &= TCMU_OP_MASK;
|
||||
hdr->len_op |= len;
|
||||
}
|
||||
|
||||
/* Currently the same as SCSI_SENSE_BUFFERSIZE */
|
||||
#define TCMU_SENSE_BUFFERSIZE 96
|
||||
|
||||
struct tcmu_cmd_entry {
|
||||
struct tcmu_cmd_entry_hdr hdr;
|
||||
|
||||
uint16_t cmd_id;
|
||||
uint16_t __pad1;
|
||||
|
||||
union {
|
||||
struct {
|
||||
uint64_t cdb_off;
|
||||
uint64_t iov_cnt;
|
||||
struct iovec iov[0];
|
||||
} req;
|
||||
struct {
|
||||
uint8_t scsi_status;
|
||||
uint8_t __pad1;
|
||||
uint16_t __pad2;
|
||||
uint32_t __pad3;
|
||||
char sense_buffer[TCMU_SENSE_BUFFERSIZE];
|
||||
} rsp;
|
||||
};
|
||||
|
||||
} __packed;
|
||||
|
||||
#define TCMU_OP_ALIGN_SIZE sizeof(uint64_t)
|
||||
|
||||
enum tcmu_genl_cmd {
|
||||
TCMU_CMD_UNSPEC,
|
||||
TCMU_CMD_ADDED_DEVICE,
|
||||
TCMU_CMD_REMOVED_DEVICE,
|
||||
__TCMU_CMD_MAX,
|
||||
};
|
||||
#define TCMU_CMD_MAX (__TCMU_CMD_MAX - 1)
|
||||
|
||||
enum tcmu_genl_attr {
|
||||
TCMU_ATTR_UNSPEC,
|
||||
TCMU_ATTR_DEVICE,
|
||||
TCMU_ATTR_MINOR,
|
||||
__TCMU_ATTR_MAX,
|
||||
};
|
||||
#define TCMU_ATTR_MAX (__TCMU_ATTR_MAX - 1)
|
||||
|
||||
#endif
|
@@ -21,8 +21,17 @@
|
||||
#ifndef _V4L2_DV_TIMINGS_H
|
||||
#define _V4L2_DV_TIMINGS_H
|
||||
|
||||
#if __GNUC__ < 4 || (__GNUC__ == 4 && (__GNUC_MINOR__ < 6))
|
||||
/* Sadly gcc versions older than 4.6 have a bug in how they initialize
|
||||
anonymous unions where they require additional curly brackets.
|
||||
This violates the C1x standard. This workaround adds the curly brackets
|
||||
if needed. */
|
||||
#define V4L2_INIT_BT_TIMINGS(_width, args...) \
|
||||
{ .bt = { _width , ## args } }
|
||||
#else
|
||||
#define V4L2_INIT_BT_TIMINGS(_width, args...) \
|
||||
.bt = { _width , ## args }
|
||||
#endif
|
||||
|
||||
/* CEA-861-E timings (i.e. standard HDTV timings) */
|
||||
|
||||
|
Reference in New Issue
Block a user