mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-24 13:44:26 -04:00
Merge branch 'master' of /home/davem/src/GIT/linux-2.6/
Conflicts: drivers/net/wimax/i2400m/usb-notif.c
This commit is contained in:
commit
08abe18af1
1630 changed files with 77672 additions and 47071 deletions
|
|
@ -89,6 +89,8 @@ enum {
|
|||
ATA_ID_DLF = 128,
|
||||
ATA_ID_CSFO = 129,
|
||||
ATA_ID_CFA_POWER = 160,
|
||||
ATA_ID_CFA_KEY_MGMT = 162,
|
||||
ATA_ID_CFA_MODES = 163,
|
||||
ATA_ID_ROT_SPEED = 217,
|
||||
ATA_ID_PIO4 = (1 << 1),
|
||||
|
||||
|
|
@ -106,6 +108,8 @@ enum {
|
|||
ATA_PIO5 = ATA_PIO4 | (1 << 5),
|
||||
ATA_PIO6 = ATA_PIO5 | (1 << 6),
|
||||
|
||||
ATA_PIO4_ONLY = (1 << 4),
|
||||
|
||||
ATA_SWDMA0 = (1 << 0),
|
||||
ATA_SWDMA1 = ATA_SWDMA0 | (1 << 1),
|
||||
ATA_SWDMA2 = ATA_SWDMA1 | (1 << 2),
|
||||
|
|
@ -115,6 +119,8 @@ enum {
|
|||
ATA_MWDMA0 = (1 << 0),
|
||||
ATA_MWDMA1 = ATA_MWDMA0 | (1 << 1),
|
||||
ATA_MWDMA2 = ATA_MWDMA1 | (1 << 2),
|
||||
ATA_MWDMA3 = ATA_MWDMA2 | (1 << 3),
|
||||
ATA_MWDMA4 = ATA_MWDMA3 | (1 << 4),
|
||||
|
||||
ATA_MWDMA12_ONLY = (1 << 1) | (1 << 2),
|
||||
ATA_MWDMA2_ONLY = (1 << 2),
|
||||
|
|
@ -129,6 +135,8 @@ enum {
|
|||
ATA_UDMA7 = ATA_UDMA6 | (1 << 7),
|
||||
/* ATA_UDMA7 is just for completeness... doesn't exist (yet?). */
|
||||
|
||||
ATA_UDMA24_ONLY = (1 << 2) | (1 << 4),
|
||||
|
||||
ATA_UDMA_MASK_40C = ATA_UDMA2, /* udma0-2 */
|
||||
|
||||
/* DMA-related */
|
||||
|
|
@ -242,8 +250,6 @@ enum {
|
|||
ATA_CMD_MEDIA_UNLOCK = 0xDF,
|
||||
/* marked obsolete in the ATA/ATAPI-7 spec */
|
||||
ATA_CMD_RESTORE = 0x10,
|
||||
/* EXABYTE specific */
|
||||
ATA_EXABYTE_ENABLE_NEST = 0xF0,
|
||||
|
||||
/* READ_LOG_EXT pages */
|
||||
ATA_LOG_SATA_NCQ = 0x10,
|
||||
|
|
|
|||
|
|
@ -36,7 +36,8 @@
|
|||
* 1500 - 1599 kernel LSPP events
|
||||
* 1600 - 1699 kernel crypto events
|
||||
* 1700 - 1799 kernel anomaly records
|
||||
* 1800 - 1999 future kernel use (maybe integrity labels and related events)
|
||||
* 1800 - 1899 kernel integrity events
|
||||
* 1900 - 1999 future kernel use
|
||||
* 2000 is for otherwise unclassified kernel audit messages (legacy)
|
||||
* 2001 - 2099 unused (kernel)
|
||||
* 2100 - 2199 user space anomaly records
|
||||
|
|
@ -125,6 +126,12 @@
|
|||
#define AUDIT_LAST_KERN_ANOM_MSG 1799
|
||||
#define AUDIT_ANOM_PROMISCUOUS 1700 /* Device changed promiscuous mode */
|
||||
#define AUDIT_ANOM_ABEND 1701 /* Process ended abnormally */
|
||||
#define AUDIT_INTEGRITY_DATA 1800 /* Data integrity verification */
|
||||
#define AUDIT_INTEGRITY_METADATA 1801 /* Metadata integrity verification */
|
||||
#define AUDIT_INTEGRITY_STATUS 1802 /* Integrity enable status */
|
||||
#define AUDIT_INTEGRITY_HASH 1803 /* Integrity HASH type */
|
||||
#define AUDIT_INTEGRITY_PCR 1804 /* PCR invalidation msgs */
|
||||
#define AUDIT_INTEGRITY_RULE 1805 /* policy rule */
|
||||
|
||||
#define AUDIT_KERNEL 2000 /* Asynchronous audit record. NOT A REQUEST. */
|
||||
|
||||
|
|
|
|||
|
|
@ -531,7 +531,7 @@ extern void bio_integrity_endio(struct bio *, int);
|
|||
extern void bio_integrity_advance(struct bio *, unsigned int);
|
||||
extern void bio_integrity_trim(struct bio *, unsigned int, unsigned int);
|
||||
extern void bio_integrity_split(struct bio *, struct bio_pair *, int);
|
||||
extern int bio_integrity_clone(struct bio *, struct bio *, struct bio_set *);
|
||||
extern int bio_integrity_clone(struct bio *, struct bio *, gfp_t, struct bio_set *);
|
||||
extern int bioset_integrity_create(struct bio_set *, int);
|
||||
extern void bioset_integrity_free(struct bio_set *);
|
||||
extern void bio_integrity_init_slab(void);
|
||||
|
|
@ -542,7 +542,7 @@ extern void bio_integrity_init_slab(void);
|
|||
#define bioset_integrity_create(a, b) (0)
|
||||
#define bio_integrity_prep(a) (0)
|
||||
#define bio_integrity_enabled(a) (0)
|
||||
#define bio_integrity_clone(a, b, c) (0)
|
||||
#define bio_integrity_clone(a, b, c,d ) (0)
|
||||
#define bioset_integrity_free(a) do { } while (0)
|
||||
#define bio_integrity_free(a, b) do { } while (0)
|
||||
#define bio_integrity_endio(a, b) do { } while (0)
|
||||
|
|
|
|||
|
|
@ -393,8 +393,10 @@ struct cpu_vfs_cap_data {
|
|||
# define CAP_FULL_SET ((kernel_cap_t){{ ~0, ~0 }})
|
||||
# define CAP_INIT_EFF_SET ((kernel_cap_t){{ ~CAP_TO_MASK(CAP_SETPCAP), ~0 }})
|
||||
# define CAP_FS_SET ((kernel_cap_t){{ CAP_FS_MASK_B0, CAP_FS_MASK_B1 } })
|
||||
# define CAP_NFSD_SET ((kernel_cap_t){{ CAP_FS_MASK_B0|CAP_TO_MASK(CAP_SYS_RESOURCE), \
|
||||
CAP_FS_MASK_B1 } })
|
||||
# define CAP_NFSD_SET ((kernel_cap_t){{ CAP_FS_MASK_B0 \
|
||||
| CAP_TO_MASK(CAP_SYS_RESOURCE) \
|
||||
| CAP_TO_MASK(CAP_MKNOD), \
|
||||
CAP_FS_MASK_B1 } })
|
||||
|
||||
#endif /* _KERNEL_CAPABILITY_U32S != 2 */
|
||||
|
||||
|
|
|
|||
|
|
@ -52,7 +52,15 @@
|
|||
#define __deprecated __attribute__((deprecated))
|
||||
#define __packed __attribute__((packed))
|
||||
#define __weak __attribute__((weak))
|
||||
#define __naked __attribute__((naked))
|
||||
|
||||
/*
|
||||
* it doesn't make sense on ARM (currently the only user of __naked) to trace
|
||||
* naked functions because then mcount is called without stack and frame pointer
|
||||
* being set up and there is no chance to restore the lr register to the value
|
||||
* before mcount was called.
|
||||
*/
|
||||
#define __naked __attribute__((naked)) notrace
|
||||
|
||||
#define __noreturn __attribute__((noreturn))
|
||||
|
||||
/*
|
||||
|
|
|
|||
|
|
@ -137,8 +137,8 @@ extern void resume_console(void);
|
|||
int mda_console_init(void);
|
||||
void prom_con_init(void);
|
||||
|
||||
void vcs_make_sysfs(struct tty_struct *tty);
|
||||
void vcs_remove_sysfs(struct tty_struct *tty);
|
||||
void vcs_make_sysfs(int index);
|
||||
void vcs_remove_sysfs(int index);
|
||||
|
||||
/* Some debug stub to catch some of the obvious races in the VT code */
|
||||
#if 1
|
||||
|
|
|
|||
|
|
@ -234,7 +234,6 @@ struct cpufreq_driver {
|
|||
int (*suspend) (struct cpufreq_policy *policy, pm_message_t pmsg);
|
||||
int (*resume) (struct cpufreq_policy *policy);
|
||||
struct freq_attr **attr;
|
||||
bool hide_interface;
|
||||
};
|
||||
|
||||
/* flags */
|
||||
|
|
|
|||
|
|
@ -40,6 +40,7 @@
|
|||
#define CRYPTO_ALG_TYPE_SHASH 0x00000009
|
||||
#define CRYPTO_ALG_TYPE_AHASH 0x0000000a
|
||||
#define CRYPTO_ALG_TYPE_RNG 0x0000000c
|
||||
#define CRYPTO_ALG_TYPE_PCOMPRESS 0x0000000f
|
||||
|
||||
#define CRYPTO_ALG_TYPE_HASH_MASK 0x0000000e
|
||||
#define CRYPTO_ALG_TYPE_AHASH_MASK 0x0000000c
|
||||
|
|
@ -548,9 +549,6 @@ struct crypto_attr_u32 {
|
|||
* Transform user interface.
|
||||
*/
|
||||
|
||||
struct crypto_tfm *crypto_alloc_tfm(const char *alg_name,
|
||||
const struct crypto_type *frontend,
|
||||
u32 type, u32 mask);
|
||||
struct crypto_tfm *crypto_alloc_base(const char *alg_name, u32 type, u32 mask);
|
||||
void crypto_destroy_tfm(void *mem, struct crypto_tfm *tfm);
|
||||
|
||||
|
|
|
|||
|
|
@ -28,6 +28,7 @@
|
|||
#define BUS_ID_SIZE 20
|
||||
|
||||
struct device;
|
||||
struct device_private;
|
||||
struct device_driver;
|
||||
struct driver_private;
|
||||
struct class;
|
||||
|
|
@ -147,7 +148,7 @@ extern void put_driver(struct device_driver *drv);
|
|||
extern struct device_driver *driver_find(const char *name,
|
||||
struct bus_type *bus);
|
||||
extern int driver_probe_done(void);
|
||||
extern int wait_for_device_probe(void);
|
||||
extern void wait_for_device_probe(void);
|
||||
|
||||
|
||||
/* sysfs interface for exporting driver attributes */
|
||||
|
|
@ -367,15 +368,11 @@ struct device_dma_parameters {
|
|||
};
|
||||
|
||||
struct device {
|
||||
struct klist klist_children;
|
||||
struct klist_node knode_parent; /* node in sibling list */
|
||||
struct klist_node knode_driver;
|
||||
struct klist_node knode_bus;
|
||||
struct device *parent;
|
||||
|
||||
struct device_private *p;
|
||||
|
||||
struct kobject kobj;
|
||||
char bus_id[BUS_ID_SIZE]; /* position on parent bus */
|
||||
unsigned uevent_suppress:1;
|
||||
const char *init_name; /* initial name of the device */
|
||||
struct device_type *type;
|
||||
|
||||
|
|
@ -387,8 +384,13 @@ struct device {
|
|||
struct device_driver *driver; /* which driver has allocated this
|
||||
device */
|
||||
void *driver_data; /* data private to the driver */
|
||||
void *platform_data; /* Platform specific data, device
|
||||
core doesn't touch it */
|
||||
|
||||
void *platform_data; /* We will remove platform_data
|
||||
field if all platform devices
|
||||
pass its platform specific data
|
||||
from platform_device->platform_data,
|
||||
other kind of devices should not
|
||||
use platform_data. */
|
||||
struct dev_pm_info power;
|
||||
|
||||
#ifdef CONFIG_NUMA
|
||||
|
|
@ -427,8 +429,7 @@ struct device {
|
|||
|
||||
static inline const char *dev_name(const struct device *dev)
|
||||
{
|
||||
/* will be changed into kobject_name(&dev->kobj) in the near future */
|
||||
return dev->bus_id;
|
||||
return kobject_name(&dev->kobj);
|
||||
}
|
||||
|
||||
extern int dev_set_name(struct device *dev, const char *name, ...)
|
||||
|
|
@ -463,6 +464,16 @@ static inline void dev_set_drvdata(struct device *dev, void *data)
|
|||
dev->driver_data = data;
|
||||
}
|
||||
|
||||
static inline unsigned int dev_get_uevent_suppress(const struct device *dev)
|
||||
{
|
||||
return dev->kobj.uevent_suppress;
|
||||
}
|
||||
|
||||
static inline void dev_set_uevent_suppress(struct device *dev, int val)
|
||||
{
|
||||
dev->kobj.uevent_suppress = val;
|
||||
}
|
||||
|
||||
static inline int device_is_registered(struct device *dev)
|
||||
{
|
||||
return dev->kobj.state_in_sysfs;
|
||||
|
|
@ -483,7 +494,8 @@ extern int device_for_each_child(struct device *dev, void *data,
|
|||
extern struct device *device_find_child(struct device *dev, void *data,
|
||||
int (*match)(struct device *dev, void *data));
|
||||
extern int device_rename(struct device *dev, char *new_name);
|
||||
extern int device_move(struct device *dev, struct device *new_parent);
|
||||
extern int device_move(struct device *dev, struct device *new_parent,
|
||||
enum dpm_order dpm_order);
|
||||
|
||||
/*
|
||||
* Root device objects for grouping under /sys/devices
|
||||
|
|
@ -570,7 +582,7 @@ extern const char *dev_driver_string(const struct device *dev);
|
|||
#if defined(DEBUG)
|
||||
#define dev_dbg(dev, format, arg...) \
|
||||
dev_printk(KERN_DEBUG , dev , format , ## arg)
|
||||
#elif defined(CONFIG_DYNAMIC_PRINTK_DEBUG)
|
||||
#elif defined(CONFIG_DYNAMIC_DEBUG)
|
||||
#define dev_dbg(dev, format, ...) do { \
|
||||
dynamic_dev_dbg(dev, format, ##__VA_ARGS__); \
|
||||
} while (0)
|
||||
|
|
|
|||
|
|
@ -97,7 +97,6 @@ typedef struct { DECLARE_BITMAP(bits, DMA_TX_TYPE_END); } dma_cap_mask_t;
|
|||
|
||||
/**
|
||||
* struct dma_chan_percpu - the per-CPU part of struct dma_chan
|
||||
* @refcount: local_t used for open-coded "bigref" counting
|
||||
* @memcpy_count: transaction counter
|
||||
* @bytes_transferred: byte counter
|
||||
*/
|
||||
|
|
@ -114,9 +113,6 @@ struct dma_chan_percpu {
|
|||
* @cookie: last cookie value returned to client
|
||||
* @chan_id: channel ID for sysfs
|
||||
* @dev: class device for sysfs
|
||||
* @refcount: kref, used in "bigref" slow-mode
|
||||
* @slow_ref: indicates that the DMA channel is free
|
||||
* @rcu: the DMA channel's RCU head
|
||||
* @device_node: used to add this to the device chan list
|
||||
* @local: per-cpu pointer to a struct dma_chan_percpu
|
||||
* @client-count: how many clients are using this channel
|
||||
|
|
@ -213,8 +209,6 @@ struct dma_async_tx_descriptor {
|
|||
* @global_node: list_head for global dma_device_list
|
||||
* @cap_mask: one or more dma_capability flags
|
||||
* @max_xor: maximum number of xor sources, 0 if no capability
|
||||
* @refcount: reference count
|
||||
* @done: IO completion struct
|
||||
* @dev_id: unique device ID
|
||||
* @dev: struct device reference for dma mapping api
|
||||
* @device_alloc_chan_resources: allocate resources and return the
|
||||
|
|
@ -227,6 +221,7 @@ struct dma_async_tx_descriptor {
|
|||
* @device_prep_dma_interrupt: prepares an end of chain interrupt operation
|
||||
* @device_prep_slave_sg: prepares a slave dma operation
|
||||
* @device_terminate_all: terminate all pending operations
|
||||
* @device_is_tx_complete: poll for transaction completion
|
||||
* @device_issue_pending: push pending transactions to hardware
|
||||
*/
|
||||
struct dma_device {
|
||||
|
|
|
|||
88
include/linux/dynamic_debug.h
Normal file
88
include/linux/dynamic_debug.h
Normal file
|
|
@ -0,0 +1,88 @@
|
|||
#ifndef _DYNAMIC_DEBUG_H
|
||||
#define _DYNAMIC_DEBUG_H
|
||||
|
||||
/* dynamic_printk_enabled, and dynamic_printk_enabled2 are bitmasks in which
|
||||
* bit n is set to 1 if any modname hashes into the bucket n, 0 otherwise. They
|
||||
* use independent hash functions, to reduce the chance of false positives.
|
||||
*/
|
||||
extern long long dynamic_debug_enabled;
|
||||
extern long long dynamic_debug_enabled2;
|
||||
|
||||
/*
|
||||
* An instance of this structure is created in a special
|
||||
* ELF section at every dynamic debug callsite. At runtime,
|
||||
* the special section is treated as an array of these.
|
||||
*/
|
||||
struct _ddebug {
|
||||
/*
|
||||
* These fields are used to drive the user interface
|
||||
* for selecting and displaying debug callsites.
|
||||
*/
|
||||
const char *modname;
|
||||
const char *function;
|
||||
const char *filename;
|
||||
const char *format;
|
||||
char primary_hash;
|
||||
char secondary_hash;
|
||||
unsigned int lineno:24;
|
||||
/*
|
||||
* The flags field controls the behaviour at the callsite.
|
||||
* The bits here are changed dynamically when the user
|
||||
* writes commands to <debugfs>/dynamic_debug/ddebug
|
||||
*/
|
||||
#define _DPRINTK_FLAGS_PRINT (1<<0) /* printk() a message using the format */
|
||||
#define _DPRINTK_FLAGS_DEFAULT 0
|
||||
unsigned int flags:8;
|
||||
} __attribute__((aligned(8)));
|
||||
|
||||
|
||||
int ddebug_add_module(struct _ddebug *tab, unsigned int n,
|
||||
const char *modname);
|
||||
|
||||
#if defined(CONFIG_DYNAMIC_DEBUG)
|
||||
extern int ddebug_remove_module(char *mod_name);
|
||||
|
||||
#define __dynamic_dbg_enabled(dd) ({ \
|
||||
int __ret = 0; \
|
||||
if (unlikely((dynamic_debug_enabled & (1LL << DEBUG_HASH)) && \
|
||||
(dynamic_debug_enabled2 & (1LL << DEBUG_HASH2)))) \
|
||||
if (unlikely(dd.flags)) \
|
||||
__ret = 1; \
|
||||
__ret; })
|
||||
|
||||
#define dynamic_pr_debug(fmt, ...) do { \
|
||||
static struct _ddebug descriptor \
|
||||
__used \
|
||||
__attribute__((section("__verbose"), aligned(8))) = \
|
||||
{ KBUILD_MODNAME, __func__, __FILE__, fmt, DEBUG_HASH, \
|
||||
DEBUG_HASH2, __LINE__, _DPRINTK_FLAGS_DEFAULT }; \
|
||||
if (__dynamic_dbg_enabled(descriptor)) \
|
||||
printk(KERN_DEBUG KBUILD_MODNAME ":" pr_fmt(fmt), \
|
||||
##__VA_ARGS__); \
|
||||
} while (0)
|
||||
|
||||
|
||||
#define dynamic_dev_dbg(dev, fmt, ...) do { \
|
||||
static struct _ddebug descriptor \
|
||||
__used \
|
||||
__attribute__((section("__verbose"), aligned(8))) = \
|
||||
{ KBUILD_MODNAME, __func__, __FILE__, fmt, DEBUG_HASH, \
|
||||
DEBUG_HASH2, __LINE__, _DPRINTK_FLAGS_DEFAULT }; \
|
||||
if (__dynamic_dbg_enabled(descriptor)) \
|
||||
dev_printk(KERN_DEBUG, dev, \
|
||||
KBUILD_MODNAME ": " pr_fmt(fmt),\
|
||||
##__VA_ARGS__); \
|
||||
} while (0)
|
||||
|
||||
#else
|
||||
|
||||
static inline int ddebug_remove_module(char *mod)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
#define dynamic_pr_debug(fmt, ...) do { } while (0)
|
||||
#define dynamic_dev_dbg(dev, format, ...) do { } while (0)
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
|
@ -1,93 +0,0 @@
|
|||
#ifndef _DYNAMIC_PRINTK_H
|
||||
#define _DYNAMIC_PRINTK_H
|
||||
|
||||
#define DYNAMIC_DEBUG_HASH_BITS 6
|
||||
#define DEBUG_HASH_TABLE_SIZE (1 << DYNAMIC_DEBUG_HASH_BITS)
|
||||
|
||||
#define TYPE_BOOLEAN 1
|
||||
|
||||
#define DYNAMIC_ENABLED_ALL 0
|
||||
#define DYNAMIC_ENABLED_NONE 1
|
||||
#define DYNAMIC_ENABLED_SOME 2
|
||||
|
||||
extern int dynamic_enabled;
|
||||
|
||||
/* dynamic_printk_enabled, and dynamic_printk_enabled2 are bitmasks in which
|
||||
* bit n is set to 1 if any modname hashes into the bucket n, 0 otherwise. They
|
||||
* use independent hash functions, to reduce the chance of false positives.
|
||||
*/
|
||||
extern long long dynamic_printk_enabled;
|
||||
extern long long dynamic_printk_enabled2;
|
||||
|
||||
struct mod_debug {
|
||||
char *modname;
|
||||
char *logical_modname;
|
||||
char *flag_names;
|
||||
int type;
|
||||
int hash;
|
||||
int hash2;
|
||||
} __attribute__((aligned(8)));
|
||||
|
||||
int register_dynamic_debug_module(char *mod_name, int type, char *share_name,
|
||||
char *flags, int hash, int hash2);
|
||||
|
||||
#if defined(CONFIG_DYNAMIC_PRINTK_DEBUG)
|
||||
extern int unregister_dynamic_debug_module(char *mod_name);
|
||||
extern int __dynamic_dbg_enabled_helper(char *modname, int type,
|
||||
int value, int hash);
|
||||
|
||||
#define __dynamic_dbg_enabled(module, type, value, level, hash) ({ \
|
||||
int __ret = 0; \
|
||||
if (unlikely((dynamic_printk_enabled & (1LL << DEBUG_HASH)) && \
|
||||
(dynamic_printk_enabled2 & (1LL << DEBUG_HASH2)))) \
|
||||
__ret = __dynamic_dbg_enabled_helper(module, type, \
|
||||
value, hash);\
|
||||
__ret; })
|
||||
|
||||
#define dynamic_pr_debug(fmt, ...) do { \
|
||||
static char mod_name[] \
|
||||
__attribute__((section("__verbose_strings"))) \
|
||||
= KBUILD_MODNAME; \
|
||||
static struct mod_debug descriptor \
|
||||
__used \
|
||||
__attribute__((section("__verbose"), aligned(8))) = \
|
||||
{ mod_name, mod_name, NULL, TYPE_BOOLEAN, DEBUG_HASH, DEBUG_HASH2 };\
|
||||
if (__dynamic_dbg_enabled(KBUILD_MODNAME, TYPE_BOOLEAN, \
|
||||
0, 0, DEBUG_HASH)) \
|
||||
printk(KERN_DEBUG KBUILD_MODNAME ":" fmt, \
|
||||
##__VA_ARGS__); \
|
||||
} while (0)
|
||||
|
||||
#define dynamic_dev_dbg(dev, format, ...) do { \
|
||||
static char mod_name[] \
|
||||
__attribute__((section("__verbose_strings"))) \
|
||||
= KBUILD_MODNAME; \
|
||||
static struct mod_debug descriptor \
|
||||
__used \
|
||||
__attribute__((section("__verbose"), aligned(8))) = \
|
||||
{ mod_name, mod_name, NULL, TYPE_BOOLEAN, DEBUG_HASH, DEBUG_HASH2 };\
|
||||
if (__dynamic_dbg_enabled(KBUILD_MODNAME, TYPE_BOOLEAN, \
|
||||
0, 0, DEBUG_HASH)) \
|
||||
dev_printk(KERN_DEBUG, dev, \
|
||||
KBUILD_MODNAME ": " format, \
|
||||
##__VA_ARGS__); \
|
||||
} while (0)
|
||||
|
||||
#else
|
||||
|
||||
static inline int unregister_dynamic_debug_module(const char *mod_name)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
static inline int __dynamic_dbg_enabled_helper(char *modname, int type,
|
||||
int value, int hash)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
#define __dynamic_dbg_enabled(module, type, value, level, hash) ({ 0; })
|
||||
#define dynamic_pr_debug(fmt, ...) do { } while (0)
|
||||
#define dynamic_dev_dbg(dev, format, ...) do { } while (0)
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
|
@ -141,6 +141,7 @@ struct inodes_stat_t {
|
|||
#define MS_RELATIME (1<<21) /* Update atime relative to mtime/ctime. */
|
||||
#define MS_KERNMOUNT (1<<22) /* this is a kern_mount call */
|
||||
#define MS_I_VERSION (1<<23) /* Update inode I_version field */
|
||||
#define MS_STRICTATIME (1<<24) /* Always perform atime updates */
|
||||
#define MS_ACTIVE (1<<30)
|
||||
#define MS_NOUSER (1<<31)
|
||||
|
||||
|
|
|
|||
|
|
@ -511,7 +511,6 @@ struct hd_driveid {
|
|||
unsigned short words69_70[2]; /* reserved words 69-70
|
||||
* future command overlap and queuing
|
||||
*/
|
||||
/* HDIO_GET_IDENTITY currently returns only words 0 through 70 */
|
||||
unsigned short words71_74[4]; /* reserved words 71-74
|
||||
* for IDENTIFY PACKET DEVICE command
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -26,7 +26,7 @@
|
|||
#include <asm/io.h>
|
||||
#include <asm/mutex.h>
|
||||
|
||||
#if defined(CONFIG_CRIS) || defined(CONFIG_FRV)
|
||||
#if defined(CONFIG_CRIS) || defined(CONFIG_FRV) || defined(CONFIG_MN10300)
|
||||
# define SUPPORT_VLB_SYNC 0
|
||||
#else
|
||||
# define SUPPORT_VLB_SYNC 1
|
||||
|
|
@ -193,24 +193,8 @@ static inline void ide_std_init_ports(hw_regs_t *hw,
|
|||
hw->io_ports.ctl_addr = ctl_addr;
|
||||
}
|
||||
|
||||
/* for IDE PCI controllers in legacy mode, temporary */
|
||||
static inline int __ide_default_irq(unsigned long base)
|
||||
{
|
||||
switch (base) {
|
||||
#ifdef CONFIG_IA64
|
||||
case 0x1f0: return isa_irq_to_vector(14);
|
||||
case 0x170: return isa_irq_to_vector(15);
|
||||
#else
|
||||
case 0x1f0: return 14;
|
||||
case 0x170: return 15;
|
||||
#endif
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
#if defined(CONFIG_ARM) || defined(CONFIG_FRV) || defined(CONFIG_M68K) || \
|
||||
defined(CONFIG_MIPS) || defined(CONFIG_MN10300) || defined(CONFIG_PARISC) \
|
||||
|| defined(CONFIG_PPC) || defined(CONFIG_SPARC) || defined(CONFIG_SPARC64)
|
||||
#if defined(CONFIG_ARM) || defined(CONFIG_M68K) || defined(CONFIG_MIPS) || \
|
||||
defined(CONFIG_PARISC) || defined(CONFIG_PPC) || defined(CONFIG_SPARC)
|
||||
#include <asm/ide.h>
|
||||
#else
|
||||
#include <asm-generic/ide_iops.h>
|
||||
|
|
@ -797,6 +781,7 @@ typedef struct hwif_s {
|
|||
struct scatterlist *sg_table;
|
||||
int sg_max_nents; /* Maximum number of entries in it */
|
||||
int sg_nents; /* Current number of entries in it */
|
||||
int orig_sg_nents;
|
||||
int sg_dma_direction; /* dma transfer direction */
|
||||
|
||||
/* data phase of the active command (currently only valid for PIO/DMA) */
|
||||
|
|
@ -865,7 +850,8 @@ struct ide_host {
|
|||
ide_hwif_t *ports[MAX_HOST_PORTS + 1];
|
||||
unsigned int n_ports;
|
||||
struct device *dev[2];
|
||||
unsigned int (*init_chipset)(struct pci_dev *);
|
||||
int (*init_chipset)(struct pci_dev *);
|
||||
irq_handler_t irq_handler;
|
||||
unsigned long host_flags;
|
||||
void *host_priv;
|
||||
ide_hwif_t *cur_port; /* for hosts requiring serialization */
|
||||
|
|
@ -1144,11 +1130,14 @@ int generic_ide_ioctl(ide_drive_t *, struct block_device *, unsigned, unsigned l
|
|||
extern int ide_vlb_clk;
|
||||
extern int ide_pci_clk;
|
||||
|
||||
extern int ide_end_request (ide_drive_t *drive, int uptodate, int nrsecs);
|
||||
int ide_end_dequeued_request(ide_drive_t *drive, struct request *rq,
|
||||
int uptodate, int nr_sectors);
|
||||
int ide_end_request(ide_drive_t *, int, int);
|
||||
int ide_end_dequeued_request(ide_drive_t *, struct request *, int, int);
|
||||
void ide_kill_rq(ide_drive_t *, struct request *);
|
||||
|
||||
extern void ide_set_handler (ide_drive_t *drive, ide_handler_t *handler, unsigned int timeout, ide_expiry_t *expiry);
|
||||
void __ide_set_handler(ide_drive_t *, ide_handler_t *, unsigned int,
|
||||
ide_expiry_t *);
|
||||
void ide_set_handler(ide_drive_t *, ide_handler_t *, unsigned int,
|
||||
ide_expiry_t *);
|
||||
|
||||
void ide_execute_command(ide_drive_t *, u8, ide_handler_t *, unsigned int,
|
||||
ide_expiry_t *);
|
||||
|
|
@ -1167,13 +1156,14 @@ int ide_busy_sleep(ide_hwif_t *, unsigned long, int);
|
|||
|
||||
int ide_wait_stat(ide_startstop_t *, ide_drive_t *, u8, u8, unsigned long);
|
||||
|
||||
ide_startstop_t ide_do_park_unpark(ide_drive_t *, struct request *);
|
||||
ide_startstop_t ide_do_devset(ide_drive_t *, struct request *);
|
||||
|
||||
extern ide_startstop_t ide_do_reset (ide_drive_t *);
|
||||
|
||||
extern int ide_devset_execute(ide_drive_t *drive,
|
||||
const struct ide_devset *setting, int arg);
|
||||
|
||||
extern void ide_do_drive_cmd(ide_drive_t *, struct request *);
|
||||
|
||||
extern void ide_end_drive_cmd(ide_drive_t *, u8, u8);
|
||||
|
||||
void ide_tf_dump(const char *, struct ide_taskfile *);
|
||||
|
|
@ -1198,10 +1188,6 @@ void SELECT_MASK(ide_drive_t *, int);
|
|||
u8 ide_read_error(ide_drive_t *);
|
||||
void ide_read_bcount_and_ireason(ide_drive_t *, u16 *, u8 *);
|
||||
|
||||
extern int drive_is_ready(ide_drive_t *);
|
||||
|
||||
void ide_pktcmd_tf_load(ide_drive_t *, u32, u16, u8);
|
||||
|
||||
int ide_check_atapi_device(ide_drive_t *, const char *);
|
||||
|
||||
void ide_init_pc(struct ide_atapi_pc *);
|
||||
|
|
@ -1249,6 +1235,8 @@ int ide_no_data_taskfile(ide_drive_t *, ide_task_t *);
|
|||
|
||||
int ide_taskfile_ioctl(ide_drive_t *, unsigned int, unsigned long);
|
||||
|
||||
int ide_dev_read_id(ide_drive_t *, u8, u16 *);
|
||||
|
||||
extern int ide_driveid_update(ide_drive_t *);
|
||||
extern int ide_config_drive_speed(ide_drive_t *, u8);
|
||||
extern u8 eighty_ninty_three (ide_drive_t *);
|
||||
|
|
@ -1278,7 +1266,7 @@ static inline int ide_pci_is_in_compatibility_mode(struct pci_dev *dev)
|
|||
return 0;
|
||||
}
|
||||
|
||||
void ide_pci_setup_ports(struct pci_dev *, const struct ide_port_info *, int,
|
||||
void ide_pci_setup_ports(struct pci_dev *, const struct ide_port_info *,
|
||||
hw_regs_t *, hw_regs_t **);
|
||||
void ide_setup_pci_noise(struct pci_dev *, const struct ide_port_info *);
|
||||
|
||||
|
|
@ -1347,10 +1335,6 @@ enum {
|
|||
IDE_HFLAG_ERROR_STOPS_FIFO = (1 << 19),
|
||||
/* serialize ports */
|
||||
IDE_HFLAG_SERIALIZE = (1 << 20),
|
||||
/* use legacy IRQs */
|
||||
IDE_HFLAG_LEGACY_IRQS = (1 << 21),
|
||||
/* force use of legacy IRQs */
|
||||
IDE_HFLAG_FORCE_LEGACY_IRQS = (1 << 22),
|
||||
/* host is TRM290 */
|
||||
IDE_HFLAG_TRM290 = (1 << 23),
|
||||
/* use 32-bit I/O ops */
|
||||
|
|
@ -1378,7 +1362,7 @@ enum {
|
|||
|
||||
struct ide_port_info {
|
||||
char *name;
|
||||
unsigned int (*init_chipset)(struct pci_dev *);
|
||||
int (*init_chipset)(struct pci_dev *);
|
||||
void (*init_iops)(ide_hwif_t *);
|
||||
void (*init_hwif)(ide_hwif_t *);
|
||||
int (*init_dma)(ide_hwif_t *,
|
||||
|
|
@ -1469,6 +1453,7 @@ static inline int config_drive_for_dma(ide_drive_t *drive) { return 0; }
|
|||
|
||||
void ide_dma_lost_irq(ide_drive_t *);
|
||||
void ide_dma_timeout(ide_drive_t *);
|
||||
ide_startstop_t ide_dma_timeout_retry(ide_drive_t *, int);
|
||||
|
||||
#else
|
||||
static inline int ide_id_dma_bug(ide_drive_t *drive) { return 0; }
|
||||
|
|
@ -1480,21 +1465,24 @@ static inline void ide_dma_on(ide_drive_t *drive) { ; }
|
|||
static inline void ide_dma_verbose(ide_drive_t *drive) { ; }
|
||||
static inline int ide_set_dma(ide_drive_t *drive) { return 1; }
|
||||
static inline void ide_check_dma_crc(ide_drive_t *drive) { ; }
|
||||
static inline ide_startstop_t ide_dma_timeout_retry(ide_drive_t *drive, int error) { return ide_stopped; }
|
||||
static inline void ide_release_dma_engine(ide_hwif_t *hwif) { ; }
|
||||
#endif /* CONFIG_BLK_DEV_IDEDMA */
|
||||
|
||||
#ifdef CONFIG_BLK_DEV_IDEACPI
|
||||
int ide_acpi_init(void);
|
||||
extern int ide_acpi_exec_tfs(ide_drive_t *drive);
|
||||
extern void ide_acpi_get_timing(ide_hwif_t *hwif);
|
||||
extern void ide_acpi_push_timing(ide_hwif_t *hwif);
|
||||
extern void ide_acpi_init(ide_hwif_t *hwif);
|
||||
void ide_acpi_init_port(ide_hwif_t *);
|
||||
void ide_acpi_port_init_devices(ide_hwif_t *);
|
||||
extern void ide_acpi_set_state(ide_hwif_t *hwif, int on);
|
||||
#else
|
||||
static inline int ide_acpi_init(void) { return 0; }
|
||||
static inline int ide_acpi_exec_tfs(ide_drive_t *drive) { return 0; }
|
||||
static inline void ide_acpi_get_timing(ide_hwif_t *hwif) { ; }
|
||||
static inline void ide_acpi_push_timing(ide_hwif_t *hwif) { ; }
|
||||
static inline void ide_acpi_init(ide_hwif_t *hwif) { ; }
|
||||
static inline void ide_acpi_init_port(ide_hwif_t *hwif) { ; }
|
||||
static inline void ide_acpi_port_init_devices(ide_hwif_t *hwif) { ; }
|
||||
static inline void ide_acpi_set_state(ide_hwif_t *hwif, int on) {}
|
||||
#endif
|
||||
|
|
@ -1528,9 +1516,7 @@ static inline void ide_set_hwifdata (ide_hwif_t * hwif, void *data)
|
|||
hwif->hwif_data = data;
|
||||
}
|
||||
|
||||
const char *ide_xfer_verbose(u8 mode);
|
||||
extern void ide_toggle_bounce(ide_drive_t *drive, int on);
|
||||
extern int ide_set_xfer_rate(ide_drive_t *drive, u8 rate);
|
||||
|
||||
u64 ide_get_lba_addr(struct ide_taskfile *, int);
|
||||
u8 ide_dump_status(ide_drive_t *, const char *, u8);
|
||||
|
|
@ -1569,14 +1555,18 @@ void ide_timing_merge(struct ide_timing *, struct ide_timing *,
|
|||
struct ide_timing *, unsigned int);
|
||||
int ide_timing_compute(ide_drive_t *, u8, struct ide_timing *, int, int);
|
||||
|
||||
#ifdef CONFIG_IDE_XFER_MODE
|
||||
int ide_scan_pio_blacklist(char *);
|
||||
|
||||
const char *ide_xfer_verbose(u8);
|
||||
u8 ide_get_best_pio_mode(ide_drive_t *, u8, u8);
|
||||
|
||||
int ide_set_pio_mode(ide_drive_t *, u8);
|
||||
int ide_set_dma_mode(ide_drive_t *, u8);
|
||||
|
||||
void ide_set_pio(ide_drive_t *, u8);
|
||||
int ide_set_xfer_rate(ide_drive_t *, u8);
|
||||
#else
|
||||
static inline void ide_set_pio(ide_drive_t *drive, u8 pio) { ; }
|
||||
static inline int ide_set_xfer_rate(ide_drive_t *drive, u8 rate) { return -1; }
|
||||
#endif
|
||||
|
||||
static inline void ide_set_max_pio(ide_drive_t *drive)
|
||||
{
|
||||
|
|
@ -1609,6 +1599,10 @@ static inline ide_drive_t *ide_get_pair_dev(ide_drive_t *drive)
|
|||
#define ide_port_for_each_dev(i, dev, port) \
|
||||
for ((i) = 0; ((dev) = (port)->devices[i]) || (i) < MAX_DRIVES; (i)++)
|
||||
|
||||
#define ide_port_for_each_present_dev(i, dev, port) \
|
||||
for ((i) = 0; ((dev) = (port)->devices[i]) || (i) < MAX_DRIVES; (i)++) \
|
||||
if ((dev)->dev_flags & IDE_DFLAG_PRESENT)
|
||||
|
||||
#define ide_host_for_each_port(i, port, host) \
|
||||
for ((i) = 0; ((port) = (host)->ports[i]) || (i) < MAX_HOST_PORTS; (i)++)
|
||||
|
||||
|
|
|
|||
61
include/linux/ima.h
Normal file
61
include/linux/ima.h
Normal file
|
|
@ -0,0 +1,61 @@
|
|||
/*
|
||||
* Copyright (C) 2008 IBM Corporation
|
||||
* Author: Mimi Zohar <zohar@us.ibm.com>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, version 2 of the License.
|
||||
*/
|
||||
|
||||
#ifndef _LINUX_IMA_H
|
||||
#define _LINUX_IMA_H
|
||||
|
||||
#include <linux/fs.h>
|
||||
struct linux_binprm;
|
||||
|
||||
#ifdef CONFIG_IMA
|
||||
extern int ima_bprm_check(struct linux_binprm *bprm);
|
||||
extern int ima_inode_alloc(struct inode *inode);
|
||||
extern void ima_inode_free(struct inode *inode);
|
||||
extern int ima_path_check(struct path *path, int mask);
|
||||
extern void ima_file_free(struct file *file);
|
||||
extern int ima_file_mmap(struct file *file, unsigned long prot);
|
||||
extern void ima_shm_check(struct file *file);
|
||||
|
||||
#else
|
||||
static inline int ima_bprm_check(struct linux_binprm *bprm)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline int ima_inode_alloc(struct inode *inode)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline void ima_inode_free(struct inode *inode)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
static inline int ima_path_check(struct path *path, int mask)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline void ima_file_free(struct file *file)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
static inline int ima_file_mmap(struct file *file, unsigned long prot)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline void ima_shm_check(struct file *file)
|
||||
{
|
||||
return;
|
||||
}
|
||||
#endif /* CONFIG_IMA_H */
|
||||
#endif /* _LINUX_IMA_H */
|
||||
|
|
@ -661,6 +661,7 @@ struct input_absinfo {
|
|||
#define SW_DOCK 0x05 /* set = plugged into dock */
|
||||
#define SW_LINEOUT_INSERT 0x06 /* set = inserted */
|
||||
#define SW_JACK_PHYSICAL_INSERT 0x07 /* set = mechanical switch set */
|
||||
#define SW_VIDEOOUT_INSERT 0x08 /* set = inserted */
|
||||
#define SW_MAX 0x0f
|
||||
#define SW_CNT (SW_MAX+1)
|
||||
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@
|
|||
#include <linux/log2.h>
|
||||
#include <linux/typecheck.h>
|
||||
#include <linux/ratelimit.h>
|
||||
#include <linux/dynamic_printk.h>
|
||||
#include <linux/dynamic_debug.h>
|
||||
#include <asm/byteorder.h>
|
||||
#include <asm/bug.h>
|
||||
|
||||
|
|
@ -358,9 +358,10 @@ static inline char *pack_hex_byte(char *buf, u8 byte)
|
|||
#if defined(DEBUG)
|
||||
#define pr_debug(fmt, ...) \
|
||||
printk(KERN_DEBUG pr_fmt(fmt), ##__VA_ARGS__)
|
||||
#elif defined(CONFIG_DYNAMIC_PRINTK_DEBUG)
|
||||
#elif defined(CONFIG_DYNAMIC_DEBUG)
|
||||
/* dynamic_pr_debug() uses pr_fmt() internally so we don't need it here */
|
||||
#define pr_debug(fmt, ...) do { \
|
||||
dynamic_pr_debug(pr_fmt(fmt), ##__VA_ARGS__); \
|
||||
dynamic_pr_debug(fmt, ##__VA_ARGS__); \
|
||||
} while (0)
|
||||
#else
|
||||
#define pr_debug(fmt, ...) \
|
||||
|
|
|
|||
|
|
@ -68,10 +68,13 @@ struct kobject {
|
|||
unsigned int state_in_sysfs:1;
|
||||
unsigned int state_add_uevent_sent:1;
|
||||
unsigned int state_remove_uevent_sent:1;
|
||||
unsigned int uevent_suppress:1;
|
||||
};
|
||||
|
||||
extern int kobject_set_name(struct kobject *kobj, const char *name, ...)
|
||||
__attribute__((format(printf, 2, 3)));
|
||||
extern int kobject_set_name_vargs(struct kobject *kobj, const char *fmt,
|
||||
va_list vargs);
|
||||
|
||||
static inline const char *kobject_name(const struct kobject *kobj)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -275,7 +275,7 @@ enum {
|
|||
* advised to wait only for the following duration before
|
||||
* doing SRST.
|
||||
*/
|
||||
ATA_TMOUT_PMP_SRST_WAIT = 1000,
|
||||
ATA_TMOUT_PMP_SRST_WAIT = 5000,
|
||||
|
||||
/* ATA bus states */
|
||||
BUS_UNKNOWN = 0,
|
||||
|
|
@ -530,6 +530,7 @@ struct ata_queued_cmd {
|
|||
unsigned long flags; /* ATA_QCFLAG_xxx */
|
||||
unsigned int tag;
|
||||
unsigned int n_elem;
|
||||
unsigned int orig_n_elem;
|
||||
|
||||
int dma_dir;
|
||||
|
||||
|
|
@ -750,7 +751,8 @@ struct ata_port {
|
|||
acpi_handle acpi_handle;
|
||||
struct ata_acpi_gtm __acpi_init_gtm; /* use ata_acpi_init_gtm() */
|
||||
#endif
|
||||
u8 sector_buf[ATA_SECT_SIZE]; /* owned by EH */
|
||||
/* owned by EH */
|
||||
u8 sector_buf[ATA_SECT_SIZE] ____cacheline_aligned;
|
||||
};
|
||||
|
||||
/* The following initializer overrides a method to NULL whether one of
|
||||
|
|
@ -793,6 +795,7 @@ struct ata_port_operations {
|
|||
ata_reset_fn_t pmp_hardreset;
|
||||
ata_postreset_fn_t pmp_postreset;
|
||||
void (*error_handler)(struct ata_port *ap);
|
||||
void (*lost_interrupt)(struct ata_port *ap);
|
||||
void (*post_internal_cmd)(struct ata_queued_cmd *qc);
|
||||
|
||||
/*
|
||||
|
|
@ -834,6 +837,8 @@ struct ata_port_operations {
|
|||
void (*bmdma_start)(struct ata_queued_cmd *qc);
|
||||
void (*bmdma_stop)(struct ata_queued_cmd *qc);
|
||||
u8 (*bmdma_status)(struct ata_port *ap);
|
||||
|
||||
void (*drain_fifo)(struct ata_queued_cmd *qc);
|
||||
#endif /* CONFIG_ATA_SFF */
|
||||
|
||||
ssize_t (*em_show)(struct ata_port *ap, char *buf);
|
||||
|
|
@ -1006,6 +1011,9 @@ extern int ata_cable_sata(struct ata_port *ap);
|
|||
extern int ata_cable_ignore(struct ata_port *ap);
|
||||
extern int ata_cable_unknown(struct ata_port *ap);
|
||||
|
||||
extern void ata_pio_queue_task(struct ata_port *ap, void *data,
|
||||
unsigned long delay);
|
||||
|
||||
/* Timing helpers */
|
||||
extern unsigned int ata_pio_need_iordy(const struct ata_device *);
|
||||
extern const struct ata_timing *ata_timing_find_mode(u8 xfer_mode);
|
||||
|
|
@ -1570,6 +1578,7 @@ extern bool ata_sff_qc_fill_rtf(struct ata_queued_cmd *qc);
|
|||
extern unsigned int ata_sff_host_intr(struct ata_port *ap,
|
||||
struct ata_queued_cmd *qc);
|
||||
extern irqreturn_t ata_sff_interrupt(int irq, void *dev_instance);
|
||||
extern void ata_sff_lost_interrupt(struct ata_port *ap);
|
||||
extern void ata_sff_freeze(struct ata_port *ap);
|
||||
extern void ata_sff_thaw(struct ata_port *ap);
|
||||
extern int ata_sff_prereset(struct ata_link *link, unsigned long deadline);
|
||||
|
|
@ -1582,6 +1591,7 @@ extern int ata_sff_softreset(struct ata_link *link, unsigned int *classes,
|
|||
extern int sata_sff_hardreset(struct ata_link *link, unsigned int *class,
|
||||
unsigned long deadline);
|
||||
extern void ata_sff_postreset(struct ata_link *link, unsigned int *classes);
|
||||
extern void ata_sff_drain_fifo(struct ata_queued_cmd *qc);
|
||||
extern void ata_sff_error_handler(struct ata_port *ap);
|
||||
extern void ata_sff_post_internal_cmd(struct ata_queued_cmd *qc);
|
||||
extern int ata_sff_port_start(struct ata_port *ap);
|
||||
|
|
|
|||
|
|
@ -1,277 +0,0 @@
|
|||
/*
|
||||
* Copyright (C) Sistina Software, Inc. 1997-2003 All rights reserved.
|
||||
* Copyright (C) 2004-2006 Red Hat, Inc. All rights reserved.
|
||||
*
|
||||
* This copyrighted material is made available to anyone wishing to use,
|
||||
* modify, copy, or redistribute it subject to the terms and conditions
|
||||
* of the GNU General Public License version 2.
|
||||
*/
|
||||
|
||||
#ifndef __LM_INTERFACE_DOT_H__
|
||||
#define __LM_INTERFACE_DOT_H__
|
||||
|
||||
|
||||
typedef void (*lm_callback_t) (void *ptr, unsigned int type, void *data);
|
||||
|
||||
/*
|
||||
* lm_mount() flags
|
||||
*
|
||||
* LM_MFLAG_SPECTATOR
|
||||
* GFS is asking to join the filesystem's lockspace, but it doesn't want to
|
||||
* modify the filesystem. The lock module shouldn't assign a journal to the FS
|
||||
* mount. It shouldn't send recovery callbacks to the FS mount. If the node
|
||||
* dies or withdraws, all locks can be wiped immediately.
|
||||
*
|
||||
* LM_MFLAG_CONV_NODROP
|
||||
* Do not allow the dlm to internally resolve conversion deadlocks by demoting
|
||||
* the lock to unlocked and then reacquiring it in the requested mode. Instead,
|
||||
* it should cancel the request and return LM_OUT_CONV_DEADLK.
|
||||
*/
|
||||
|
||||
#define LM_MFLAG_SPECTATOR 0x00000001
|
||||
#define LM_MFLAG_CONV_NODROP 0x00000002
|
||||
|
||||
/*
|
||||
* lm_lockstruct flags
|
||||
*
|
||||
* LM_LSFLAG_LOCAL
|
||||
* The lock_nolock module returns LM_LSFLAG_LOCAL to GFS, indicating that GFS
|
||||
* can make single-node optimizations.
|
||||
*/
|
||||
|
||||
#define LM_LSFLAG_LOCAL 0x00000001
|
||||
|
||||
/*
|
||||
* lm_lockname types
|
||||
*/
|
||||
|
||||
#define LM_TYPE_RESERVED 0x00
|
||||
#define LM_TYPE_NONDISK 0x01
|
||||
#define LM_TYPE_INODE 0x02
|
||||
#define LM_TYPE_RGRP 0x03
|
||||
#define LM_TYPE_META 0x04
|
||||
#define LM_TYPE_IOPEN 0x05
|
||||
#define LM_TYPE_FLOCK 0x06
|
||||
#define LM_TYPE_PLOCK 0x07
|
||||
#define LM_TYPE_QUOTA 0x08
|
||||
#define LM_TYPE_JOURNAL 0x09
|
||||
|
||||
/*
|
||||
* lm_lock() states
|
||||
*
|
||||
* SHARED is compatible with SHARED, not with DEFERRED or EX.
|
||||
* DEFERRED is compatible with DEFERRED, not with SHARED or EX.
|
||||
*/
|
||||
|
||||
#define LM_ST_UNLOCKED 0
|
||||
#define LM_ST_EXCLUSIVE 1
|
||||
#define LM_ST_DEFERRED 2
|
||||
#define LM_ST_SHARED 3
|
||||
|
||||
/*
|
||||
* lm_lock() flags
|
||||
*
|
||||
* LM_FLAG_TRY
|
||||
* Don't wait to acquire the lock if it can't be granted immediately.
|
||||
*
|
||||
* LM_FLAG_TRY_1CB
|
||||
* Send one blocking callback if TRY is set and the lock is not granted.
|
||||
*
|
||||
* LM_FLAG_NOEXP
|
||||
* GFS sets this flag on lock requests it makes while doing journal recovery.
|
||||
* These special requests should not be blocked due to the recovery like
|
||||
* ordinary locks would be.
|
||||
*
|
||||
* LM_FLAG_ANY
|
||||
* A SHARED request may also be granted in DEFERRED, or a DEFERRED request may
|
||||
* also be granted in SHARED. The preferred state is whichever is compatible
|
||||
* with other granted locks, or the specified state if no other locks exist.
|
||||
*
|
||||
* LM_FLAG_PRIORITY
|
||||
* Override fairness considerations. Suppose a lock is held in a shared state
|
||||
* and there is a pending request for the deferred state. A shared lock
|
||||
* request with the priority flag would be allowed to bypass the deferred
|
||||
* request and directly join the other shared lock. A shared lock request
|
||||
* without the priority flag might be forced to wait until the deferred
|
||||
* requested had acquired and released the lock.
|
||||
*/
|
||||
|
||||
#define LM_FLAG_TRY 0x00000001
|
||||
#define LM_FLAG_TRY_1CB 0x00000002
|
||||
#define LM_FLAG_NOEXP 0x00000004
|
||||
#define LM_FLAG_ANY 0x00000008
|
||||
#define LM_FLAG_PRIORITY 0x00000010
|
||||
|
||||
/*
|
||||
* lm_lock() and lm_async_cb return flags
|
||||
*
|
||||
* LM_OUT_ST_MASK
|
||||
* Masks the lower two bits of lock state in the returned value.
|
||||
*
|
||||
* LM_OUT_CACHEABLE
|
||||
* The lock hasn't been released so GFS can continue to cache data for it.
|
||||
*
|
||||
* LM_OUT_CANCELED
|
||||
* The lock request was canceled.
|
||||
*
|
||||
* LM_OUT_ASYNC
|
||||
* The result of the request will be returned in an LM_CB_ASYNC callback.
|
||||
*
|
||||
* LM_OUT_CONV_DEADLK
|
||||
* The lock request was canceled do to a conversion deadlock.
|
||||
*/
|
||||
|
||||
#define LM_OUT_ST_MASK 0x00000003
|
||||
#define LM_OUT_CANCELED 0x00000008
|
||||
#define LM_OUT_ASYNC 0x00000080
|
||||
#define LM_OUT_ERROR 0x00000100
|
||||
|
||||
/*
|
||||
* lm_callback_t types
|
||||
*
|
||||
* LM_CB_NEED_E LM_CB_NEED_D LM_CB_NEED_S
|
||||
* Blocking callback, a remote node is requesting the given lock in
|
||||
* EXCLUSIVE, DEFERRED, or SHARED.
|
||||
*
|
||||
* LM_CB_NEED_RECOVERY
|
||||
* The given journal needs to be recovered.
|
||||
*
|
||||
* LM_CB_ASYNC
|
||||
* The given lock has been granted.
|
||||
*/
|
||||
|
||||
#define LM_CB_NEED_E 257
|
||||
#define LM_CB_NEED_D 258
|
||||
#define LM_CB_NEED_S 259
|
||||
#define LM_CB_NEED_RECOVERY 260
|
||||
#define LM_CB_ASYNC 262
|
||||
|
||||
/*
|
||||
* lm_recovery_done() messages
|
||||
*/
|
||||
|
||||
#define LM_RD_GAVEUP 308
|
||||
#define LM_RD_SUCCESS 309
|
||||
|
||||
|
||||
struct lm_lockname {
|
||||
u64 ln_number;
|
||||
unsigned int ln_type;
|
||||
};
|
||||
|
||||
#define lm_name_equal(name1, name2) \
|
||||
(((name1)->ln_number == (name2)->ln_number) && \
|
||||
((name1)->ln_type == (name2)->ln_type)) \
|
||||
|
||||
struct lm_async_cb {
|
||||
struct lm_lockname lc_name;
|
||||
int lc_ret;
|
||||
};
|
||||
|
||||
struct lm_lockstruct;
|
||||
|
||||
struct lm_lockops {
|
||||
const char *lm_proto_name;
|
||||
|
||||
/*
|
||||
* Mount/Unmount
|
||||
*/
|
||||
|
||||
int (*lm_mount) (char *table_name, char *host_data,
|
||||
lm_callback_t cb, void *cb_data,
|
||||
unsigned int min_lvb_size, int flags,
|
||||
struct lm_lockstruct *lockstruct,
|
||||
struct kobject *fskobj);
|
||||
|
||||
void (*lm_others_may_mount) (void *lockspace);
|
||||
|
||||
void (*lm_unmount) (void *lockspace);
|
||||
|
||||
void (*lm_withdraw) (void *lockspace);
|
||||
|
||||
/*
|
||||
* Lock oriented operations
|
||||
*/
|
||||
|
||||
int (*lm_get_lock) (void *lockspace, struct lm_lockname *name, void **lockp);
|
||||
|
||||
void (*lm_put_lock) (void *lock);
|
||||
|
||||
unsigned int (*lm_lock) (void *lock, unsigned int cur_state,
|
||||
unsigned int req_state, unsigned int flags);
|
||||
|
||||
unsigned int (*lm_unlock) (void *lock, unsigned int cur_state);
|
||||
|
||||
void (*lm_cancel) (void *lock);
|
||||
|
||||
int (*lm_hold_lvb) (void *lock, char **lvbp);
|
||||
void (*lm_unhold_lvb) (void *lock, char *lvb);
|
||||
|
||||
/*
|
||||
* Posix Lock oriented operations
|
||||
*/
|
||||
|
||||
int (*lm_plock_get) (void *lockspace, struct lm_lockname *name,
|
||||
struct file *file, struct file_lock *fl);
|
||||
|
||||
int (*lm_plock) (void *lockspace, struct lm_lockname *name,
|
||||
struct file *file, int cmd, struct file_lock *fl);
|
||||
|
||||
int (*lm_punlock) (void *lockspace, struct lm_lockname *name,
|
||||
struct file *file, struct file_lock *fl);
|
||||
|
||||
/*
|
||||
* Client oriented operations
|
||||
*/
|
||||
|
||||
void (*lm_recovery_done) (void *lockspace, unsigned int jid,
|
||||
unsigned int message);
|
||||
|
||||
struct module *lm_owner;
|
||||
};
|
||||
|
||||
/*
|
||||
* lm_mount() return values
|
||||
*
|
||||
* ls_jid - the journal ID this node should use
|
||||
* ls_first - this node is the first to mount the file system
|
||||
* ls_lvb_size - size in bytes of lock value blocks
|
||||
* ls_lockspace - lock module's context for this file system
|
||||
* ls_ops - lock module's functions
|
||||
* ls_flags - lock module features
|
||||
*/
|
||||
|
||||
struct lm_lockstruct {
|
||||
unsigned int ls_jid;
|
||||
unsigned int ls_first;
|
||||
unsigned int ls_lvb_size;
|
||||
void *ls_lockspace;
|
||||
const struct lm_lockops *ls_ops;
|
||||
int ls_flags;
|
||||
};
|
||||
|
||||
/*
|
||||
* Lock module bottom interface. A lock module makes itself available to GFS
|
||||
* with these functions.
|
||||
*/
|
||||
|
||||
int gfs2_register_lockproto(const struct lm_lockops *proto);
|
||||
void gfs2_unregister_lockproto(const struct lm_lockops *proto);
|
||||
|
||||
/*
|
||||
* Lock module top interface. GFS calls these functions when mounting or
|
||||
* unmounting a file system.
|
||||
*/
|
||||
|
||||
int gfs2_mount_lockproto(char *proto_name, char *table_name, char *host_data,
|
||||
lm_callback_t cb, void *cb_data,
|
||||
unsigned int min_lvb_size, int flags,
|
||||
struct lm_lockstruct *lockstruct,
|
||||
struct kobject *fskobj);
|
||||
|
||||
void gfs2_unmount_lockproto(struct lm_lockstruct *lockstruct);
|
||||
|
||||
void gfs2_withdraw_lockproto(struct lm_lockstruct *lockstruct);
|
||||
|
||||
#endif /* __LM_INTERFACE_DOT_H__ */
|
||||
|
||||
|
|
@ -346,6 +346,7 @@ static inline int __nlm_cmp_addr4(const struct sockaddr *sap1,
|
|||
return sin1->sin_addr.s_addr == sin2->sin_addr.s_addr;
|
||||
}
|
||||
|
||||
#if defined(CONFIG_IPV6) || defined(CONFIG_IPV6_MODULE)
|
||||
static inline int __nlm_cmp_addr6(const struct sockaddr *sap1,
|
||||
const struct sockaddr *sap2)
|
||||
{
|
||||
|
|
@ -353,6 +354,13 @@ static inline int __nlm_cmp_addr6(const struct sockaddr *sap1,
|
|||
const struct sockaddr_in6 *sin2 = (const struct sockaddr_in6 *)sap2;
|
||||
return ipv6_addr_equal(&sin1->sin6_addr, &sin2->sin6_addr);
|
||||
}
|
||||
#else /* !(CONFIG_IPV6 || CONFIG_IPV6_MODULE) */
|
||||
static inline int __nlm_cmp_addr6(const struct sockaddr *sap1,
|
||||
const struct sockaddr *sap2)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
#endif /* !(CONFIG_IPV6 || CONFIG_IPV6_MODULE) */
|
||||
|
||||
/*
|
||||
* Compare two host addresses
|
||||
|
|
|
|||
|
|
@ -8,33 +8,49 @@ extern struct bus_type maple_bus_type;
|
|||
|
||||
/* Maple Bus command and response codes */
|
||||
enum maple_code {
|
||||
MAPLE_RESPONSE_FILEERR = -5,
|
||||
MAPLE_RESPONSE_AGAIN = -4, /* request should be retransmitted */
|
||||
MAPLE_RESPONSE_BADCMD = -3,
|
||||
MAPLE_RESPONSE_BADFUNC = -2,
|
||||
MAPLE_RESPONSE_NONE = -1, /* unit didn't respond at all */
|
||||
MAPLE_COMMAND_DEVINFO = 1,
|
||||
MAPLE_COMMAND_ALLINFO = 2,
|
||||
MAPLE_COMMAND_RESET = 3,
|
||||
MAPLE_COMMAND_KILL = 4,
|
||||
MAPLE_RESPONSE_DEVINFO = 5,
|
||||
MAPLE_RESPONSE_ALLINFO = 6,
|
||||
MAPLE_RESPONSE_OK = 7,
|
||||
MAPLE_RESPONSE_DATATRF = 8,
|
||||
MAPLE_COMMAND_GETCOND = 9,
|
||||
MAPLE_COMMAND_GETMINFO = 10,
|
||||
MAPLE_COMMAND_BREAD = 11,
|
||||
MAPLE_COMMAND_BWRITE = 12,
|
||||
MAPLE_COMMAND_SETCOND = 14
|
||||
MAPLE_RESPONSE_FILEERR = -5,
|
||||
MAPLE_RESPONSE_AGAIN, /* retransmit */
|
||||
MAPLE_RESPONSE_BADCMD,
|
||||
MAPLE_RESPONSE_BADFUNC,
|
||||
MAPLE_RESPONSE_NONE, /* unit didn't respond*/
|
||||
MAPLE_COMMAND_DEVINFO = 1,
|
||||
MAPLE_COMMAND_ALLINFO,
|
||||
MAPLE_COMMAND_RESET,
|
||||
MAPLE_COMMAND_KILL,
|
||||
MAPLE_RESPONSE_DEVINFO,
|
||||
MAPLE_RESPONSE_ALLINFO,
|
||||
MAPLE_RESPONSE_OK,
|
||||
MAPLE_RESPONSE_DATATRF,
|
||||
MAPLE_COMMAND_GETCOND,
|
||||
MAPLE_COMMAND_GETMINFO,
|
||||
MAPLE_COMMAND_BREAD,
|
||||
MAPLE_COMMAND_BWRITE,
|
||||
MAPLE_COMMAND_BSYNC,
|
||||
MAPLE_COMMAND_SETCOND,
|
||||
MAPLE_COMMAND_MICCONTROL
|
||||
};
|
||||
|
||||
enum maple_file_errors {
|
||||
MAPLE_FILEERR_INVALID_PARTITION = 0x01000000,
|
||||
MAPLE_FILEERR_PHASE_ERROR = 0x02000000,
|
||||
MAPLE_FILEERR_INVALID_BLOCK = 0x04000000,
|
||||
MAPLE_FILEERR_WRITE_ERROR = 0x08000000,
|
||||
MAPLE_FILEERR_INVALID_WRITE_LENGTH = 0x10000000,
|
||||
MAPLE_FILEERR_BAD_CRC = 0x20000000
|
||||
};
|
||||
|
||||
struct maple_buffer {
|
||||
char bufx[0x400];
|
||||
void *buf;
|
||||
};
|
||||
|
||||
struct mapleq {
|
||||
struct list_head list;
|
||||
struct maple_device *dev;
|
||||
void *sendbuf, *recvbuf, *recvbufdcsp;
|
||||
struct maple_buffer *recvbuf;
|
||||
void *sendbuf, *recvbuf_p2;
|
||||
unsigned char length;
|
||||
enum maple_code command;
|
||||
struct mutex mutex;
|
||||
};
|
||||
|
||||
struct maple_devinfo {
|
||||
|
|
@ -52,11 +68,15 @@ struct maple_device {
|
|||
struct maple_driver *driver;
|
||||
struct mapleq *mq;
|
||||
void (*callback) (struct mapleq * mq);
|
||||
void (*fileerr_handler)(struct maple_device *mdev, void *recvbuf);
|
||||
int (*can_unload)(struct maple_device *mdev);
|
||||
unsigned long when, interval, function;
|
||||
struct maple_devinfo devinfo;
|
||||
unsigned char port, unit;
|
||||
char product_name[32];
|
||||
char product_licence[64];
|
||||
atomic_t busy;
|
||||
wait_queue_head_t maple_wait;
|
||||
struct device dev;
|
||||
};
|
||||
|
||||
|
|
@ -72,7 +92,7 @@ void maple_getcond_callback(struct maple_device *dev,
|
|||
int maple_driver_register(struct maple_driver *);
|
||||
void maple_driver_unregister(struct maple_driver *);
|
||||
|
||||
int maple_add_packet_sleeps(struct maple_device *mdev, u32 function,
|
||||
int maple_add_packet(struct maple_device *mdev, u32 function,
|
||||
u32 command, u32 length, void *data);
|
||||
void maple_clear_dev(struct maple_device *mdev);
|
||||
|
||||
|
|
|
|||
|
|
@ -490,6 +490,7 @@
|
|||
/*
|
||||
* R231 (0xE7) - Jack Status
|
||||
*/
|
||||
#define WM8350_JACK_L_LVL 0x0800
|
||||
#define WM8350_JACK_R_LVL 0x0400
|
||||
|
||||
/*
|
||||
|
|
|
|||
|
|
@ -1181,6 +1181,7 @@
|
|||
#define WM8400_FLL_OUTDIV_SHIFT 0 /* FLL_OUTDIV - [2:0] */
|
||||
#define WM8400_FLL_OUTDIV_WIDTH 3 /* FLL_OUTDIV - [2:0] */
|
||||
|
||||
struct wm8400;
|
||||
void wm8400_reset_codec_reg_cache(struct wm8400 *wm8400);
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -276,4 +276,7 @@ struct mm_struct {
|
|||
#endif
|
||||
};
|
||||
|
||||
/* Future-safe accessor for struct mm_struct's cpu_vm_mask. */
|
||||
#define mm_cpumask(mm) (&(mm)->cpu_vm_mask)
|
||||
|
||||
#endif /* _LINUX_MM_TYPES_H */
|
||||
|
|
|
|||
|
|
@ -454,4 +454,13 @@ struct dmi_system_id {
|
|||
|
||||
#define DMI_MATCH(a, b) { a, b }
|
||||
|
||||
#define PLATFORM_NAME_SIZE 20
|
||||
#define PLATFORM_MODULE_PREFIX "platform:"
|
||||
|
||||
struct platform_device_id {
|
||||
char name[PLATFORM_NAME_SIZE];
|
||||
kernel_ulong_t driver_data
|
||||
__attribute__((aligned(sizeof(kernel_ulong_t))));
|
||||
};
|
||||
|
||||
#endif /* LINUX_MOD_DEVICETABLE_H */
|
||||
|
|
|
|||
|
|
@ -27,6 +27,7 @@ struct mnt_namespace;
|
|||
#define MNT_NODIRATIME 0x10
|
||||
#define MNT_RELATIME 0x20
|
||||
#define MNT_READONLY 0x40 /* does the user want this to be r/o? */
|
||||
#define MNT_STRICTATIME 0x80
|
||||
|
||||
#define MNT_SHRINKABLE 0x100
|
||||
#define MNT_IMBALANCED_WRITE_COUNT 0x200 /* just for debugging */
|
||||
|
|
|
|||
|
|
@ -406,6 +406,8 @@ struct nfs3_setaclargs {
|
|||
int mask;
|
||||
struct posix_acl * acl_access;
|
||||
struct posix_acl * acl_default;
|
||||
size_t len;
|
||||
unsigned int npages;
|
||||
struct page ** pages;
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -37,6 +37,9 @@
|
|||
#define NFSACL_MAXPAGES ((2*(8+12*NFS_ACL_MAX_ENTRIES) + PAGE_SIZE-1) \
|
||||
>> PAGE_SHIFT)
|
||||
|
||||
#define NFS_ACL_MAX_ENTRIES_INLINE (5)
|
||||
#define NFS_ACL_INLINE_BUFSIZE ((2*(2+3*NFS_ACL_MAX_ENTRIES_INLINE)) << 2)
|
||||
|
||||
static inline unsigned int
|
||||
nfsacl_size(struct posix_acl *acl_access, struct posix_acl *acl_default)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -2116,6 +2116,8 @@
|
|||
#define PCI_DEVICE_ID_MELLANOX_SINAI_OLD 0x5e8c
|
||||
#define PCI_DEVICE_ID_MELLANOX_SINAI 0x6274
|
||||
|
||||
#define PCI_VENDOR_ID_DFI 0x15bd
|
||||
|
||||
#define PCI_VENDOR_ID_QUICKNET 0x15e2
|
||||
#define PCI_DEVICE_ID_QUICKNET_XJ 0x0500
|
||||
|
||||
|
|
|
|||
|
|
@ -12,6 +12,7 @@
|
|||
#define _PLATFORM_DEVICE_H_
|
||||
|
||||
#include <linux/device.h>
|
||||
#include <linux/mod_devicetable.h>
|
||||
|
||||
struct platform_device {
|
||||
const char * name;
|
||||
|
|
@ -19,8 +20,13 @@ struct platform_device {
|
|||
struct device dev;
|
||||
u32 num_resources;
|
||||
struct resource * resource;
|
||||
void *platform_data;
|
||||
|
||||
struct platform_device_id *id_entry;
|
||||
};
|
||||
|
||||
#define platform_get_device_id(pdev) ((pdev)->id_entry)
|
||||
|
||||
#define to_platform_device(x) container_of((x), struct platform_device, dev)
|
||||
|
||||
extern int platform_device_register(struct platform_device *);
|
||||
|
|
@ -56,6 +62,7 @@ struct platform_driver {
|
|||
int (*resume_early)(struct platform_device *);
|
||||
int (*resume)(struct platform_device *);
|
||||
struct device_driver driver;
|
||||
struct platform_device_id *id_table;
|
||||
};
|
||||
|
||||
extern int platform_driver_register(struct platform_driver *);
|
||||
|
|
|
|||
|
|
@ -400,6 +400,9 @@ extern void __suspend_report_result(const char *function, void *fn, int ret);
|
|||
|
||||
#else /* !CONFIG_PM_SLEEP */
|
||||
|
||||
#define device_pm_lock() do {} while (0)
|
||||
#define device_pm_unlock() do {} while (0)
|
||||
|
||||
static inline int device_suspend(pm_message_t state)
|
||||
{
|
||||
return 0;
|
||||
|
|
@ -409,6 +412,14 @@ static inline int device_suspend(pm_message_t state)
|
|||
|
||||
#endif /* !CONFIG_PM_SLEEP */
|
||||
|
||||
/* How to reorder dpm_list after device_move() */
|
||||
enum dpm_order {
|
||||
DPM_ORDER_NONE,
|
||||
DPM_ORDER_DEV_AFTER_PARENT,
|
||||
DPM_ORDER_PARENT_BEFORE_DEV,
|
||||
DPM_ORDER_DEV_LAST,
|
||||
};
|
||||
|
||||
/*
|
||||
* Global Power Management flags
|
||||
* Used to keep APM and ACPI from both being active
|
||||
|
|
|
|||
|
|
@ -1175,6 +1175,8 @@ struct task_struct {
|
|||
/* ??? */
|
||||
unsigned int personality;
|
||||
unsigned did_exec:1;
|
||||
unsigned in_execve:1; /* Tell the LSMs that the process is doing an
|
||||
* execve */
|
||||
pid_t pid;
|
||||
pid_t tgid;
|
||||
|
||||
|
|
@ -1419,6 +1421,9 @@ struct task_struct {
|
|||
#endif
|
||||
};
|
||||
|
||||
/* Future-safe accessor for struct task_struct's cpus_allowed. */
|
||||
#define tsk_cpumask(tsk) (&(tsk)->cpus_allowed)
|
||||
|
||||
/*
|
||||
* Priority of a process goes from 0..MAX_PRIO-1, valid RT
|
||||
* priority is 0..MAX_RT_PRIO-1, and SCHED_NORMAL/SCHED_BATCH
|
||||
|
|
|
|||
|
|
@ -212,7 +212,7 @@ static inline void serio_unpin_driver(struct serio *serio)
|
|||
#define SERIO_FUJITSU 0x35
|
||||
#define SERIO_ZHENHUA 0x36
|
||||
#define SERIO_INEXIO 0x37
|
||||
#define SERIO_TOUCHIT213 0x37
|
||||
#define SERIO_TOUCHIT213 0x38
|
||||
#define SERIO_W8001 0x39
|
||||
|
||||
#endif
|
||||
|
|
|
|||
13
include/linux/sh_cmt.h
Normal file
13
include/linux/sh_cmt.h
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
#ifndef __SH_CMT_H__
|
||||
#define __SH_CMT_H__
|
||||
|
||||
struct sh_cmt_config {
|
||||
char *name;
|
||||
unsigned long channel_offset;
|
||||
int timer_bit;
|
||||
char *clk;
|
||||
unsigned long clockevent_rating;
|
||||
unsigned long clocksource_rating;
|
||||
};
|
||||
|
||||
#endif /* __SH_CMT_H__ */
|
||||
|
|
@ -85,6 +85,7 @@ struct intc_desc symbol __initdata = { \
|
|||
}
|
||||
#endif
|
||||
|
||||
unsigned int intc_evt2irq(unsigned int vector);
|
||||
void __init register_intc_controller(struct intc_desc *desc);
|
||||
int intc_set_priority(unsigned int irq, unsigned int prio);
|
||||
|
||||
|
|
|
|||
21
include/linux/timeriomem-rng.h
Normal file
21
include/linux/timeriomem-rng.h
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
/*
|
||||
* linux/include/linux/timeriomem-rng.h
|
||||
*
|
||||
* Copyright (c) 2009 Alexander Clouter <alex@digriz.org.uk>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License version 2 as
|
||||
* published by the Free Software Foundation.
|
||||
*/
|
||||
|
||||
#include <linux/completion.h>
|
||||
|
||||
struct timeriomem_rng_data {
|
||||
struct completion completion;
|
||||
unsigned int present:1;
|
||||
|
||||
u32 __iomem *address;
|
||||
|
||||
/* measures in usecs */
|
||||
unsigned int period;
|
||||
};
|
||||
35
include/linux/tpm.h
Normal file
35
include/linux/tpm.h
Normal file
|
|
@ -0,0 +1,35 @@
|
|||
/*
|
||||
* Copyright (C) 2004,2007,2008 IBM Corporation
|
||||
*
|
||||
* Authors:
|
||||
* Leendert van Doorn <leendert@watson.ibm.com>
|
||||
* Dave Safford <safford@watson.ibm.com>
|
||||
* Reiner Sailer <sailer@watson.ibm.com>
|
||||
* Kylene Hall <kjhall@us.ibm.com>
|
||||
* Debora Velarde <dvelarde@us.ibm.com>
|
||||
*
|
||||
* Maintained by: <tpmdd_devel@lists.sourceforge.net>
|
||||
*
|
||||
* Device driver for TCG/TCPA TPM (trusted platform module).
|
||||
* Specifications at www.trustedcomputinggroup.org
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation, version 2 of the
|
||||
* License.
|
||||
*
|
||||
*/
|
||||
#ifndef __LINUX_TPM_H__
|
||||
#define __LINUX_TPM_H__
|
||||
|
||||
/*
|
||||
* Chip num is this value or a valid tpm idx
|
||||
*/
|
||||
#define TPM_ANY_NUM 0xFFFF
|
||||
|
||||
#if defined(CONFIG_TCG_TPM)
|
||||
|
||||
extern int tpm_pcr_read(u32 chip_num, int pcr_idx, u8 *res_buf);
|
||||
extern int tpm_pcr_extend(u32 chip_num, int pcr_idx, const u8 *hash);
|
||||
#endif
|
||||
#endif
|
||||
|
|
@ -22,6 +22,7 @@ struct uio_map;
|
|||
|
||||
/**
|
||||
* struct uio_mem - description of a UIO memory region
|
||||
* @name: name of the memory region for identification
|
||||
* @addr: address of the device's memory
|
||||
* @size: size of IO
|
||||
* @memtype: type of memory addr points to
|
||||
|
|
@ -29,6 +30,7 @@ struct uio_map;
|
|||
* @map: for use by the UIO core only.
|
||||
*/
|
||||
struct uio_mem {
|
||||
const char *name;
|
||||
unsigned long addr;
|
||||
unsigned long size;
|
||||
int memtype;
|
||||
|
|
@ -42,12 +44,14 @@ struct uio_portio;
|
|||
|
||||
/**
|
||||
* struct uio_port - description of a UIO port region
|
||||
* @name: name of the port region for identification
|
||||
* @start: start of port region
|
||||
* @size: size of port region
|
||||
* @porttype: type of port (see UIO_PORT_* below)
|
||||
* @portio: for use by the UIO core only.
|
||||
*/
|
||||
struct uio_port {
|
||||
const char *name;
|
||||
unsigned long start;
|
||||
unsigned long size;
|
||||
int porttype;
|
||||
|
|
|
|||
|
|
@ -643,186 +643,6 @@ static inline int usb_make_path(struct usb_device *dev, char *buf, size_t size)
|
|||
|
||||
/*-------------------------------------------------------------------------*/
|
||||
|
||||
/**
|
||||
* usb_endpoint_num - get the endpoint's number
|
||||
* @epd: endpoint to be checked
|
||||
*
|
||||
* Returns @epd's number: 0 to 15.
|
||||
*/
|
||||
static inline int usb_endpoint_num(const struct usb_endpoint_descriptor *epd)
|
||||
{
|
||||
return epd->bEndpointAddress & USB_ENDPOINT_NUMBER_MASK;
|
||||
}
|
||||
|
||||
/**
|
||||
* usb_endpoint_type - get the endpoint's transfer type
|
||||
* @epd: endpoint to be checked
|
||||
*
|
||||
* Returns one of USB_ENDPOINT_XFER_{CONTROL, ISOC, BULK, INT} according
|
||||
* to @epd's transfer type.
|
||||
*/
|
||||
static inline int usb_endpoint_type(const struct usb_endpoint_descriptor *epd)
|
||||
{
|
||||
return epd->bmAttributes & USB_ENDPOINT_XFERTYPE_MASK;
|
||||
}
|
||||
|
||||
/**
|
||||
* usb_endpoint_dir_in - check if the endpoint has IN direction
|
||||
* @epd: endpoint to be checked
|
||||
*
|
||||
* Returns true if the endpoint is of type IN, otherwise it returns false.
|
||||
*/
|
||||
static inline int usb_endpoint_dir_in(const struct usb_endpoint_descriptor *epd)
|
||||
{
|
||||
return ((epd->bEndpointAddress & USB_ENDPOINT_DIR_MASK) == USB_DIR_IN);
|
||||
}
|
||||
|
||||
/**
|
||||
* usb_endpoint_dir_out - check if the endpoint has OUT direction
|
||||
* @epd: endpoint to be checked
|
||||
*
|
||||
* Returns true if the endpoint is of type OUT, otherwise it returns false.
|
||||
*/
|
||||
static inline int usb_endpoint_dir_out(
|
||||
const struct usb_endpoint_descriptor *epd)
|
||||
{
|
||||
return ((epd->bEndpointAddress & USB_ENDPOINT_DIR_MASK) == USB_DIR_OUT);
|
||||
}
|
||||
|
||||
/**
|
||||
* usb_endpoint_xfer_bulk - check if the endpoint has bulk transfer type
|
||||
* @epd: endpoint to be checked
|
||||
*
|
||||
* Returns true if the endpoint is of type bulk, otherwise it returns false.
|
||||
*/
|
||||
static inline int usb_endpoint_xfer_bulk(
|
||||
const struct usb_endpoint_descriptor *epd)
|
||||
{
|
||||
return ((epd->bmAttributes & USB_ENDPOINT_XFERTYPE_MASK) ==
|
||||
USB_ENDPOINT_XFER_BULK);
|
||||
}
|
||||
|
||||
/**
|
||||
* usb_endpoint_xfer_control - check if the endpoint has control transfer type
|
||||
* @epd: endpoint to be checked
|
||||
*
|
||||
* Returns true if the endpoint is of type control, otherwise it returns false.
|
||||
*/
|
||||
static inline int usb_endpoint_xfer_control(
|
||||
const struct usb_endpoint_descriptor *epd)
|
||||
{
|
||||
return ((epd->bmAttributes & USB_ENDPOINT_XFERTYPE_MASK) ==
|
||||
USB_ENDPOINT_XFER_CONTROL);
|
||||
}
|
||||
|
||||
/**
|
||||
* usb_endpoint_xfer_int - check if the endpoint has interrupt transfer type
|
||||
* @epd: endpoint to be checked
|
||||
*
|
||||
* Returns true if the endpoint is of type interrupt, otherwise it returns
|
||||
* false.
|
||||
*/
|
||||
static inline int usb_endpoint_xfer_int(
|
||||
const struct usb_endpoint_descriptor *epd)
|
||||
{
|
||||
return ((epd->bmAttributes & USB_ENDPOINT_XFERTYPE_MASK) ==
|
||||
USB_ENDPOINT_XFER_INT);
|
||||
}
|
||||
|
||||
/**
|
||||
* usb_endpoint_xfer_isoc - check if the endpoint has isochronous transfer type
|
||||
* @epd: endpoint to be checked
|
||||
*
|
||||
* Returns true if the endpoint is of type isochronous, otherwise it returns
|
||||
* false.
|
||||
*/
|
||||
static inline int usb_endpoint_xfer_isoc(
|
||||
const struct usb_endpoint_descriptor *epd)
|
||||
{
|
||||
return ((epd->bmAttributes & USB_ENDPOINT_XFERTYPE_MASK) ==
|
||||
USB_ENDPOINT_XFER_ISOC);
|
||||
}
|
||||
|
||||
/**
|
||||
* usb_endpoint_is_bulk_in - check if the endpoint is bulk IN
|
||||
* @epd: endpoint to be checked
|
||||
*
|
||||
* Returns true if the endpoint has bulk transfer type and IN direction,
|
||||
* otherwise it returns false.
|
||||
*/
|
||||
static inline int usb_endpoint_is_bulk_in(
|
||||
const struct usb_endpoint_descriptor *epd)
|
||||
{
|
||||
return (usb_endpoint_xfer_bulk(epd) && usb_endpoint_dir_in(epd));
|
||||
}
|
||||
|
||||
/**
|
||||
* usb_endpoint_is_bulk_out - check if the endpoint is bulk OUT
|
||||
* @epd: endpoint to be checked
|
||||
*
|
||||
* Returns true if the endpoint has bulk transfer type and OUT direction,
|
||||
* otherwise it returns false.
|
||||
*/
|
||||
static inline int usb_endpoint_is_bulk_out(
|
||||
const struct usb_endpoint_descriptor *epd)
|
||||
{
|
||||
return (usb_endpoint_xfer_bulk(epd) && usb_endpoint_dir_out(epd));
|
||||
}
|
||||
|
||||
/**
|
||||
* usb_endpoint_is_int_in - check if the endpoint is interrupt IN
|
||||
* @epd: endpoint to be checked
|
||||
*
|
||||
* Returns true if the endpoint has interrupt transfer type and IN direction,
|
||||
* otherwise it returns false.
|
||||
*/
|
||||
static inline int usb_endpoint_is_int_in(
|
||||
const struct usb_endpoint_descriptor *epd)
|
||||
{
|
||||
return (usb_endpoint_xfer_int(epd) && usb_endpoint_dir_in(epd));
|
||||
}
|
||||
|
||||
/**
|
||||
* usb_endpoint_is_int_out - check if the endpoint is interrupt OUT
|
||||
* @epd: endpoint to be checked
|
||||
*
|
||||
* Returns true if the endpoint has interrupt transfer type and OUT direction,
|
||||
* otherwise it returns false.
|
||||
*/
|
||||
static inline int usb_endpoint_is_int_out(
|
||||
const struct usb_endpoint_descriptor *epd)
|
||||
{
|
||||
return (usb_endpoint_xfer_int(epd) && usb_endpoint_dir_out(epd));
|
||||
}
|
||||
|
||||
/**
|
||||
* usb_endpoint_is_isoc_in - check if the endpoint is isochronous IN
|
||||
* @epd: endpoint to be checked
|
||||
*
|
||||
* Returns true if the endpoint has isochronous transfer type and IN direction,
|
||||
* otherwise it returns false.
|
||||
*/
|
||||
static inline int usb_endpoint_is_isoc_in(
|
||||
const struct usb_endpoint_descriptor *epd)
|
||||
{
|
||||
return (usb_endpoint_xfer_isoc(epd) && usb_endpoint_dir_in(epd));
|
||||
}
|
||||
|
||||
/**
|
||||
* usb_endpoint_is_isoc_out - check if the endpoint is isochronous OUT
|
||||
* @epd: endpoint to be checked
|
||||
*
|
||||
* Returns true if the endpoint has isochronous transfer type and OUT direction,
|
||||
* otherwise it returns false.
|
||||
*/
|
||||
static inline int usb_endpoint_is_isoc_out(
|
||||
const struct usb_endpoint_descriptor *epd)
|
||||
{
|
||||
return (usb_endpoint_xfer_isoc(epd) && usb_endpoint_dir_out(epd));
|
||||
}
|
||||
|
||||
/*-------------------------------------------------------------------------*/
|
||||
|
||||
#define USB_DEVICE_ID_MATCH_DEVICE \
|
||||
(USB_DEVICE_ID_MATCH_VENDOR | USB_DEVICE_ID_MATCH_PRODUCT)
|
||||
#define USB_DEVICE_ID_MATCH_DEV_RANGE \
|
||||
|
|
@ -1357,8 +1177,8 @@ struct urb {
|
|||
unsigned int transfer_flags; /* (in) URB_SHORT_NOT_OK | ...*/
|
||||
void *transfer_buffer; /* (in) associated data buffer */
|
||||
dma_addr_t transfer_dma; /* (in) dma addr for transfer_buffer */
|
||||
int transfer_buffer_length; /* (in) data buffer length */
|
||||
int actual_length; /* (return) actual transfer length */
|
||||
u32 transfer_buffer_length; /* (in) data buffer length */
|
||||
u32 actual_length; /* (return) actual transfer length */
|
||||
unsigned char *setup_packet; /* (in) setup packet (control only) */
|
||||
dma_addr_t setup_dma; /* (in) dma addr for setup_packet */
|
||||
int start_frame; /* (modify) start frame (ISO) */
|
||||
|
|
|
|||
|
|
@ -102,7 +102,7 @@
|
|||
#define USB_REQ_LOOPBACK_DATA_READ 0x16
|
||||
#define USB_REQ_SET_INTERFACE_DS 0x17
|
||||
|
||||
/* The Link Power Mangement (LPM) ECN defines USB_REQ_TEST_AND_SET command,
|
||||
/* The Link Power Management (LPM) ECN defines USB_REQ_TEST_AND_SET command,
|
||||
* used by hubs to put ports into a new L1 suspend state, except that it
|
||||
* forgot to define its number ...
|
||||
*/
|
||||
|
|
@ -353,6 +353,185 @@ struct usb_endpoint_descriptor {
|
|||
#define USB_ENDPOINT_XFER_INT 3
|
||||
#define USB_ENDPOINT_MAX_ADJUSTABLE 0x80
|
||||
|
||||
/*-------------------------------------------------------------------------*/
|
||||
|
||||
/**
|
||||
* usb_endpoint_num - get the endpoint's number
|
||||
* @epd: endpoint to be checked
|
||||
*
|
||||
* Returns @epd's number: 0 to 15.
|
||||
*/
|
||||
static inline int usb_endpoint_num(const struct usb_endpoint_descriptor *epd)
|
||||
{
|
||||
return epd->bEndpointAddress & USB_ENDPOINT_NUMBER_MASK;
|
||||
}
|
||||
|
||||
/**
|
||||
* usb_endpoint_type - get the endpoint's transfer type
|
||||
* @epd: endpoint to be checked
|
||||
*
|
||||
* Returns one of USB_ENDPOINT_XFER_{CONTROL, ISOC, BULK, INT} according
|
||||
* to @epd's transfer type.
|
||||
*/
|
||||
static inline int usb_endpoint_type(const struct usb_endpoint_descriptor *epd)
|
||||
{
|
||||
return epd->bmAttributes & USB_ENDPOINT_XFERTYPE_MASK;
|
||||
}
|
||||
|
||||
/**
|
||||
* usb_endpoint_dir_in - check if the endpoint has IN direction
|
||||
* @epd: endpoint to be checked
|
||||
*
|
||||
* Returns true if the endpoint is of type IN, otherwise it returns false.
|
||||
*/
|
||||
static inline int usb_endpoint_dir_in(const struct usb_endpoint_descriptor *epd)
|
||||
{
|
||||
return ((epd->bEndpointAddress & USB_ENDPOINT_DIR_MASK) == USB_DIR_IN);
|
||||
}
|
||||
|
||||
/**
|
||||
* usb_endpoint_dir_out - check if the endpoint has OUT direction
|
||||
* @epd: endpoint to be checked
|
||||
*
|
||||
* Returns true if the endpoint is of type OUT, otherwise it returns false.
|
||||
*/
|
||||
static inline int usb_endpoint_dir_out(
|
||||
const struct usb_endpoint_descriptor *epd)
|
||||
{
|
||||
return ((epd->bEndpointAddress & USB_ENDPOINT_DIR_MASK) == USB_DIR_OUT);
|
||||
}
|
||||
|
||||
/**
|
||||
* usb_endpoint_xfer_bulk - check if the endpoint has bulk transfer type
|
||||
* @epd: endpoint to be checked
|
||||
*
|
||||
* Returns true if the endpoint is of type bulk, otherwise it returns false.
|
||||
*/
|
||||
static inline int usb_endpoint_xfer_bulk(
|
||||
const struct usb_endpoint_descriptor *epd)
|
||||
{
|
||||
return ((epd->bmAttributes & USB_ENDPOINT_XFERTYPE_MASK) ==
|
||||
USB_ENDPOINT_XFER_BULK);
|
||||
}
|
||||
|
||||
/**
|
||||
* usb_endpoint_xfer_control - check if the endpoint has control transfer type
|
||||
* @epd: endpoint to be checked
|
||||
*
|
||||
* Returns true if the endpoint is of type control, otherwise it returns false.
|
||||
*/
|
||||
static inline int usb_endpoint_xfer_control(
|
||||
const struct usb_endpoint_descriptor *epd)
|
||||
{
|
||||
return ((epd->bmAttributes & USB_ENDPOINT_XFERTYPE_MASK) ==
|
||||
USB_ENDPOINT_XFER_CONTROL);
|
||||
}
|
||||
|
||||
/**
|
||||
* usb_endpoint_xfer_int - check if the endpoint has interrupt transfer type
|
||||
* @epd: endpoint to be checked
|
||||
*
|
||||
* Returns true if the endpoint is of type interrupt, otherwise it returns
|
||||
* false.
|
||||
*/
|
||||
static inline int usb_endpoint_xfer_int(
|
||||
const struct usb_endpoint_descriptor *epd)
|
||||
{
|
||||
return ((epd->bmAttributes & USB_ENDPOINT_XFERTYPE_MASK) ==
|
||||
USB_ENDPOINT_XFER_INT);
|
||||
}
|
||||
|
||||
/**
|
||||
* usb_endpoint_xfer_isoc - check if the endpoint has isochronous transfer type
|
||||
* @epd: endpoint to be checked
|
||||
*
|
||||
* Returns true if the endpoint is of type isochronous, otherwise it returns
|
||||
* false.
|
||||
*/
|
||||
static inline int usb_endpoint_xfer_isoc(
|
||||
const struct usb_endpoint_descriptor *epd)
|
||||
{
|
||||
return ((epd->bmAttributes & USB_ENDPOINT_XFERTYPE_MASK) ==
|
||||
USB_ENDPOINT_XFER_ISOC);
|
||||
}
|
||||
|
||||
/**
|
||||
* usb_endpoint_is_bulk_in - check if the endpoint is bulk IN
|
||||
* @epd: endpoint to be checked
|
||||
*
|
||||
* Returns true if the endpoint has bulk transfer type and IN direction,
|
||||
* otherwise it returns false.
|
||||
*/
|
||||
static inline int usb_endpoint_is_bulk_in(
|
||||
const struct usb_endpoint_descriptor *epd)
|
||||
{
|
||||
return (usb_endpoint_xfer_bulk(epd) && usb_endpoint_dir_in(epd));
|
||||
}
|
||||
|
||||
/**
|
||||
* usb_endpoint_is_bulk_out - check if the endpoint is bulk OUT
|
||||
* @epd: endpoint to be checked
|
||||
*
|
||||
* Returns true if the endpoint has bulk transfer type and OUT direction,
|
||||
* otherwise it returns false.
|
||||
*/
|
||||
static inline int usb_endpoint_is_bulk_out(
|
||||
const struct usb_endpoint_descriptor *epd)
|
||||
{
|
||||
return (usb_endpoint_xfer_bulk(epd) && usb_endpoint_dir_out(epd));
|
||||
}
|
||||
|
||||
/**
|
||||
* usb_endpoint_is_int_in - check if the endpoint is interrupt IN
|
||||
* @epd: endpoint to be checked
|
||||
*
|
||||
* Returns true if the endpoint has interrupt transfer type and IN direction,
|
||||
* otherwise it returns false.
|
||||
*/
|
||||
static inline int usb_endpoint_is_int_in(
|
||||
const struct usb_endpoint_descriptor *epd)
|
||||
{
|
||||
return (usb_endpoint_xfer_int(epd) && usb_endpoint_dir_in(epd));
|
||||
}
|
||||
|
||||
/**
|
||||
* usb_endpoint_is_int_out - check if the endpoint is interrupt OUT
|
||||
* @epd: endpoint to be checked
|
||||
*
|
||||
* Returns true if the endpoint has interrupt transfer type and OUT direction,
|
||||
* otherwise it returns false.
|
||||
*/
|
||||
static inline int usb_endpoint_is_int_out(
|
||||
const struct usb_endpoint_descriptor *epd)
|
||||
{
|
||||
return (usb_endpoint_xfer_int(epd) && usb_endpoint_dir_out(epd));
|
||||
}
|
||||
|
||||
/**
|
||||
* usb_endpoint_is_isoc_in - check if the endpoint is isochronous IN
|
||||
* @epd: endpoint to be checked
|
||||
*
|
||||
* Returns true if the endpoint has isochronous transfer type and IN direction,
|
||||
* otherwise it returns false.
|
||||
*/
|
||||
static inline int usb_endpoint_is_isoc_in(
|
||||
const struct usb_endpoint_descriptor *epd)
|
||||
{
|
||||
return (usb_endpoint_xfer_isoc(epd) && usb_endpoint_dir_in(epd));
|
||||
}
|
||||
|
||||
/**
|
||||
* usb_endpoint_is_isoc_out - check if the endpoint is isochronous OUT
|
||||
* @epd: endpoint to be checked
|
||||
*
|
||||
* Returns true if the endpoint has isochronous transfer type and OUT direction,
|
||||
* otherwise it returns false.
|
||||
*/
|
||||
static inline int usb_endpoint_is_isoc_out(
|
||||
const struct usb_endpoint_descriptor *epd)
|
||||
{
|
||||
return (usb_endpoint_xfer_isoc(epd) && usb_endpoint_dir_out(epd));
|
||||
}
|
||||
|
||||
/*-------------------------------------------------------------------------*/
|
||||
|
||||
|
|
@ -584,8 +763,8 @@ enum usb_device_state {
|
|||
/* chapter 9 and authentication (wireless) device states */
|
||||
USB_STATE_ATTACHED,
|
||||
USB_STATE_POWERED, /* wired */
|
||||
USB_STATE_UNAUTHENTICATED, /* auth */
|
||||
USB_STATE_RECONNECTING, /* auth */
|
||||
USB_STATE_UNAUTHENTICATED, /* auth */
|
||||
USB_STATE_DEFAULT, /* limited function */
|
||||
USB_STATE_ADDRESS,
|
||||
USB_STATE_CONFIGURED, /* most functions */
|
||||
|
|
|
|||
|
|
@ -244,6 +244,10 @@ int usb_add_config(struct usb_composite_dev *,
|
|||
* value; it should return zero on successful initialization.
|
||||
* @unbind: Reverses @bind(); called as a side effect of unregistering
|
||||
* this driver.
|
||||
* @suspend: Notifies when the host stops sending USB traffic,
|
||||
* after function notifications
|
||||
* @resume: Notifies configuration when the host restarts USB traffic,
|
||||
* before function notifications
|
||||
*
|
||||
* Devices default to reporting self powered operation. Devices which rely
|
||||
* on bus powered operation should report this in their @bind() method.
|
||||
|
|
@ -268,6 +272,10 @@ struct usb_composite_driver {
|
|||
|
||||
int (*bind)(struct usb_composite_dev *);
|
||||
int (*unbind)(struct usb_composite_dev *);
|
||||
|
||||
/* global suspend hooks */
|
||||
void (*suspend)(struct usb_composite_dev *);
|
||||
void (*resume)(struct usb_composite_dev *);
|
||||
};
|
||||
|
||||
extern int usb_composite_register(struct usb_composite_driver *);
|
||||
|
|
|
|||
|
|
@ -598,6 +598,7 @@ static inline int usb_gadget_clear_selfpowered(struct usb_gadget *gadget)
|
|||
/**
|
||||
* usb_gadget_vbus_connect - Notify controller that VBUS is powered
|
||||
* @gadget:The device which now has VBUS power.
|
||||
* Context: can sleep
|
||||
*
|
||||
* This call is used by a driver for an external transceiver (or GPIO)
|
||||
* that detects a VBUS power session starting. Common responses include
|
||||
|
|
@ -636,6 +637,7 @@ static inline int usb_gadget_vbus_draw(struct usb_gadget *gadget, unsigned mA)
|
|||
/**
|
||||
* usb_gadget_vbus_disconnect - notify controller about VBUS session end
|
||||
* @gadget:the device whose VBUS supply is being described
|
||||
* Context: can sleep
|
||||
*
|
||||
* This call is used by a driver for an external transceiver (or GPIO)
|
||||
* that detects a VBUS power session ending. Common responses include
|
||||
|
|
@ -792,19 +794,20 @@ struct usb_gadget_driver {
|
|||
/**
|
||||
* usb_gadget_register_driver - register a gadget driver
|
||||
* @driver:the driver being registered
|
||||
* Context: can sleep
|
||||
*
|
||||
* Call this in your gadget driver's module initialization function,
|
||||
* to tell the underlying usb controller driver about your driver.
|
||||
* The driver's bind() function will be called to bind it to a
|
||||
* gadget before this registration call returns. It's expected that
|
||||
* the bind() functions will be in init sections.
|
||||
* This function must be called in a context that can sleep.
|
||||
*/
|
||||
int usb_gadget_register_driver(struct usb_gadget_driver *driver);
|
||||
|
||||
/**
|
||||
* usb_gadget_unregister_driver - unregister a gadget driver
|
||||
* @driver:the driver being unregistered
|
||||
* Context: can sleep
|
||||
*
|
||||
* Call this in your gadget driver's module cleanup function,
|
||||
* to tell the underlying usb controller that your driver is
|
||||
|
|
@ -813,7 +816,6 @@ int usb_gadget_register_driver(struct usb_gadget_driver *driver);
|
|||
* to unbind() and clean up any device state, before this procedure
|
||||
* finally returns. It's expected that the unbind() functions
|
||||
* will in in exit sections, so may not be linked in some kernels.
|
||||
* This function must be called in a context that can sleep.
|
||||
*/
|
||||
int usb_gadget_unregister_driver(struct usb_gadget_driver *driver);
|
||||
|
||||
|
|
|
|||
|
|
@ -80,12 +80,17 @@ struct otg_transceiver {
|
|||
|
||||
/* for board-specific init logic */
|
||||
extern int otg_set_transceiver(struct otg_transceiver *);
|
||||
#ifdef CONFIG_NOP_USB_XCEIV
|
||||
extern void usb_nop_xceiv_register(void);
|
||||
extern void usb_nop_xceiv_unregister(void);
|
||||
#endif
|
||||
|
||||
|
||||
/* for usb host and peripheral controller drivers */
|
||||
extern struct otg_transceiver *otg_get_transceiver(void);
|
||||
extern void otg_put_transceiver(struct otg_transceiver *);
|
||||
|
||||
/* Context: can sleep */
|
||||
static inline int
|
||||
otg_start_hnp(struct otg_transceiver *otg)
|
||||
{
|
||||
|
|
@ -102,6 +107,8 @@ otg_set_host(struct otg_transceiver *otg, struct usb_bus *host)
|
|||
|
||||
|
||||
/* for usb peripheral controller drivers */
|
||||
|
||||
/* Context: can sleep */
|
||||
static inline int
|
||||
otg_set_peripheral(struct otg_transceiver *otg, struct usb_gadget *periph)
|
||||
{
|
||||
|
|
@ -114,6 +121,7 @@ otg_set_power(struct otg_transceiver *otg, unsigned mA)
|
|||
return otg->set_power(otg, mA);
|
||||
}
|
||||
|
||||
/* Context: can sleep */
|
||||
static inline int
|
||||
otg_set_suspend(struct otg_transceiver *otg, int suspend)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -16,4 +16,7 @@
|
|||
/* device can't handle Set-Interface requests */
|
||||
#define USB_QUIRK_NO_SET_INTF 0x00000004
|
||||
|
||||
/* device can't handle its Configuration or Interface strings */
|
||||
#define USB_QUIRK_CONFIG_INTF_STRINGS 0x00000008
|
||||
|
||||
#endif /* __LINUX_USB_QUIRKS_H */
|
||||
|
|
|
|||
|
|
@ -130,7 +130,8 @@ struct usb_serial {
|
|||
struct usb_device *dev;
|
||||
struct usb_serial_driver *type;
|
||||
struct usb_interface *interface;
|
||||
unsigned char disconnected;
|
||||
unsigned char disconnected:1;
|
||||
unsigned char suspending:1;
|
||||
unsigned char minor;
|
||||
unsigned char num_ports;
|
||||
unsigned char num_port_pointers;
|
||||
|
|
|
|||
|
|
@ -96,39 +96,26 @@ enum { US_DO_ALL_FLAGS };
|
|||
#define US_PR_CBI 0x00 /* Control/Bulk/Interrupt */
|
||||
#define US_PR_CB 0x01 /* Control/Bulk w/o interrupt */
|
||||
#define US_PR_BULK 0x50 /* bulk only */
|
||||
#ifdef CONFIG_USB_STORAGE_USBAT
|
||||
|
||||
#define US_PR_USBAT 0x80 /* SCM-ATAPI bridge */
|
||||
#endif
|
||||
#ifdef CONFIG_USB_STORAGE_SDDR09
|
||||
#define US_PR_EUSB_SDDR09 0x81 /* SCM-SCSI bridge for SDDR-09 */
|
||||
#endif
|
||||
#ifdef CONFIG_USB_STORAGE_SDDR55
|
||||
#define US_PR_SDDR55 0x82 /* SDDR-55 (made up) */
|
||||
#endif
|
||||
#define US_PR_DPCM_USB 0xf0 /* Combination CB/SDDR09 */
|
||||
#ifdef CONFIG_USB_STORAGE_FREECOM
|
||||
#define US_PR_FREECOM 0xf1 /* Freecom */
|
||||
#endif
|
||||
#ifdef CONFIG_USB_STORAGE_DATAFAB
|
||||
#define US_PR_DATAFAB 0xf2 /* Datafab chipsets */
|
||||
#endif
|
||||
#ifdef CONFIG_USB_STORAGE_JUMPSHOT
|
||||
#define US_PR_JUMPSHOT 0xf3 /* Lexar Jumpshot */
|
||||
#endif
|
||||
#ifdef CONFIG_USB_STORAGE_ALAUDA
|
||||
#define US_PR_ALAUDA 0xf4 /* Alauda chipsets */
|
||||
#endif
|
||||
#ifdef CONFIG_USB_STORAGE_KARMA
|
||||
#define US_PR_KARMA 0xf5 /* Rio Karma */
|
||||
#endif
|
||||
|
||||
#define US_PR_DEVICE 0xff /* Use device's value */
|
||||
|
||||
/*
|
||||
*/
|
||||
extern int usb_usual_ignore_device(struct usb_interface *intf);
|
||||
extern struct usb_device_id usb_storage_usb_ids[];
|
||||
|
||||
#ifdef CONFIG_USB_LIBUSUAL
|
||||
|
||||
extern struct usb_device_id storage_usb_ids[];
|
||||
extern void usb_usual_set_present(int type);
|
||||
extern void usb_usual_clear_present(int type);
|
||||
extern int usb_usual_check_type(const struct usb_device_id *, int type);
|
||||
|
|
|
|||
Loading…
Reference in a new issue