Merge master.kernel.org:/pub/scm/linux/kernel/git/torvalds/linux-2.6
Conflicts: drivers/usb/input/Makefile drivers/usb/input/gtco.c
This commit is contained in:
@@ -69,9 +69,7 @@ header-y += hdsmart.h
|
||||
header-y += hysdn_if.h
|
||||
header-y += i2c-dev.h
|
||||
header-y += i8k.h
|
||||
header-y += icmp.h
|
||||
header-y += if_arcnet.h
|
||||
header-y += if_arp.h
|
||||
header-y += if_bonding.h
|
||||
header-y += if_cablemodem.h
|
||||
header-y += if_fc.h
|
||||
@@ -88,7 +86,6 @@ header-y += if_tunnel.h
|
||||
header-y += in6.h
|
||||
header-y += in_route.h
|
||||
header-y += ioctl.h
|
||||
header-y += ip.h
|
||||
header-y += ipmi_msgdefs.h
|
||||
header-y += ip_mp_alg.h
|
||||
header-y += ipsec.h
|
||||
@@ -116,6 +113,7 @@ header-y += netrom.h
|
||||
header-y += nfs2.h
|
||||
header-y += nfs4_mount.h
|
||||
header-y += nfs_mount.h
|
||||
header-y += nl80211.h
|
||||
header-y += oom.h
|
||||
header-y += param.h
|
||||
header-y += pci_regs.h
|
||||
@@ -210,8 +208,10 @@ unifdef-y += hiddev.h
|
||||
unifdef-y += hpet.h
|
||||
unifdef-y += i2c.h
|
||||
unifdef-y += i2o-dev.h
|
||||
unifdef-y += icmp.h
|
||||
unifdef-y += icmpv6.h
|
||||
unifdef-y += if_addr.h
|
||||
unifdef-y += if_arp.h
|
||||
unifdef-y += if_bridge.h
|
||||
unifdef-y += if_ec.h
|
||||
unifdef-y += if_eql.h
|
||||
@@ -231,6 +231,7 @@ unifdef-y += inet_diag.h
|
||||
unifdef-y += in.h
|
||||
unifdef-y += inotify.h
|
||||
unifdef-y += input.h
|
||||
unifdef-y += ip.h
|
||||
unifdef-y += ipc.h
|
||||
unifdef-y += ipmi.h
|
||||
unifdef-y += ipv6.h
|
||||
|
@@ -75,7 +75,7 @@ enum acpi_address_range_id {
|
||||
|
||||
typedef int (*acpi_table_handler) (struct acpi_table_header *table);
|
||||
|
||||
typedef int (*acpi_madt_entry_handler) (struct acpi_subtable_header *header, const unsigned long end);
|
||||
typedef int (*acpi_table_entry_handler) (struct acpi_subtable_header *header, const unsigned long end);
|
||||
|
||||
char * __acpi_map_table (unsigned long phys_addr, unsigned long size);
|
||||
unsigned long acpi_find_rsdp (void);
|
||||
@@ -85,8 +85,10 @@ int acpi_numa_init (void);
|
||||
|
||||
int acpi_table_init (void);
|
||||
int acpi_table_parse (char *id, acpi_table_handler handler);
|
||||
int acpi_table_parse_madt (enum acpi_madt_type id, acpi_madt_entry_handler handler, unsigned int max_entries);
|
||||
int acpi_table_parse_srat (enum acpi_srat_type id, acpi_madt_entry_handler handler, unsigned int max_entries);
|
||||
int __init acpi_table_parse_entries(char *id, unsigned long table_size,
|
||||
int entry_id, acpi_table_entry_handler handler, unsigned int max_entries);
|
||||
int acpi_table_parse_madt (enum acpi_madt_type id, acpi_table_entry_handler handler, unsigned int max_entries);
|
||||
int acpi_table_parse_srat (enum acpi_srat_type id, acpi_table_entry_handler handler, unsigned int max_entries);
|
||||
int acpi_parse_mcfg (struct acpi_table_header *header);
|
||||
void acpi_table_print_madt_entry (struct acpi_subtable_header *madt);
|
||||
void acpi_table_print_srat_entry (struct acpi_subtable_header *srat);
|
||||
|
@@ -40,6 +40,7 @@ enum {
|
||||
ATA_MAX_DEVICES = 2, /* per bus/port */
|
||||
ATA_MAX_PRD = 256, /* we could make these 256/256 */
|
||||
ATA_SECT_SIZE = 512,
|
||||
ATA_MAX_SECTORS_128 = 128,
|
||||
ATA_MAX_SECTORS = 256,
|
||||
ATA_MAX_SECTORS_LBA48 = 65535,/* TODO: 65536? */
|
||||
|
||||
@@ -158,11 +159,19 @@ enum {
|
||||
ATA_CMD_INIT_DEV_PARAMS = 0x91,
|
||||
ATA_CMD_READ_NATIVE_MAX = 0xF8,
|
||||
ATA_CMD_READ_NATIVE_MAX_EXT = 0x27,
|
||||
ATA_CMD_SET_MAX = 0xF9,
|
||||
ATA_CMD_SET_MAX_EXT = 0x37,
|
||||
ATA_CMD_READ_LOG_EXT = 0x2f,
|
||||
|
||||
/* READ_LOG_EXT pages */
|
||||
ATA_LOG_SATA_NCQ = 0x10,
|
||||
|
||||
/* READ/WRITE LONG (obsolete) */
|
||||
ATA_CMD_READ_LONG = 0x22,
|
||||
ATA_CMD_READ_LONG_ONCE = 0x23,
|
||||
ATA_CMD_WRITE_LONG = 0x32,
|
||||
ATA_CMD_WRITE_LONG_ONCE = 0x33,
|
||||
|
||||
/* SETFEATURES stuff */
|
||||
SETFEATURES_XFER = 0x03,
|
||||
XFER_UDMA_7 = 0x47,
|
||||
@@ -193,6 +202,8 @@ enum {
|
||||
SETFEATURES_WC_ON = 0x02, /* Enable write cache */
|
||||
SETFEATURES_WC_OFF = 0x82, /* Disable write cache */
|
||||
|
||||
SETFEATURES_SPINUP = 0x07, /* Spin-up drive */
|
||||
|
||||
/* ATAPI stuff */
|
||||
ATAPI_PKT_DMA = (1 << 0),
|
||||
ATAPI_DMADIR = (1 << 2), /* ATAPI data dir:
|
||||
@@ -282,7 +293,6 @@ struct ata_taskfile {
|
||||
};
|
||||
|
||||
#define ata_id_is_ata(id) (((id)[0] & (1 << 15)) == 0)
|
||||
#define ata_id_is_sata(id) ((id)[93] == 0)
|
||||
#define ata_id_rahead_enabled(id) ((id)[85] & (1 << 6))
|
||||
#define ata_id_wcache_enabled(id) ((id)[85] & (1 << 5))
|
||||
#define ata_id_hpa_enabled(id) ((id)[85] & (1 << 10))
|
||||
@@ -324,6 +334,11 @@ static inline unsigned int ata_id_major_version(const u16 *id)
|
||||
return mver;
|
||||
}
|
||||
|
||||
static inline int ata_id_is_sata(const u16 *id)
|
||||
{
|
||||
return ata_id_major_version(id) >= 5 && id[93] == 0;
|
||||
}
|
||||
|
||||
static inline int ata_id_current_chs_valid(const u16 *id)
|
||||
{
|
||||
/* For ATA-1 devices, if the INITIALIZE DEVICE PARAMETERS command
|
||||
@@ -350,7 +365,7 @@ static inline int ata_id_is_cfa(const u16 *id)
|
||||
|
||||
static inline int ata_drive_40wire(const u16 *dev_id)
|
||||
{
|
||||
if (ata_id_major_version(dev_id) >= 5 && ata_id_is_sata(dev_id))
|
||||
if (ata_id_is_sata(dev_id))
|
||||
return 0; /* SATA */
|
||||
if ((dev_id[93] & 0xE000) == 0x6000)
|
||||
return 0; /* 80 wire */
|
||||
|
@@ -101,7 +101,7 @@ struct ddpehdr {
|
||||
|
||||
static __inline__ struct ddpehdr *ddp_hdr(struct sk_buff *skb)
|
||||
{
|
||||
return (struct ddpehdr *)skb->h.raw;
|
||||
return (struct ddpehdr *)skb_transport_header(skb);
|
||||
}
|
||||
|
||||
/* AppleTalk AARP headers */
|
||||
@@ -129,7 +129,7 @@ struct elapaarp {
|
||||
|
||||
static __inline__ struct elapaarp *aarp_hdr(struct sk_buff *skb)
|
||||
{
|
||||
return (struct elapaarp *)skb->h.raw;
|
||||
return (struct elapaarp *)skb_transport_header(skb);
|
||||
}
|
||||
|
||||
/* Not specified - how long till we drop a resolved entry */
|
||||
|
36
include/linux/atmel_pdc.h
Normal file
36
include/linux/atmel_pdc.h
Normal file
@@ -0,0 +1,36 @@
|
||||
/*
|
||||
* include/linux/atmel_pdc.h
|
||||
*
|
||||
* Copyright (C) 2005 Ivan Kokshaysky
|
||||
* Copyright (C) SAN People
|
||||
*
|
||||
* Peripheral Data Controller (PDC) registers.
|
||||
* Based on AT91RM9200 datasheet revision E.
|
||||
*
|
||||
* 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; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*/
|
||||
|
||||
#ifndef ATMEL_PDC_H
|
||||
#define ATMEL_PDC_H
|
||||
|
||||
#define ATMEL_PDC_RPR 0x100 /* Receive Pointer Register */
|
||||
#define ATMEL_PDC_RCR 0x104 /* Receive Counter Register */
|
||||
#define ATMEL_PDC_TPR 0x108 /* Transmit Pointer Register */
|
||||
#define ATMEL_PDC_TCR 0x10c /* Transmit Counter Register */
|
||||
#define ATMEL_PDC_RNPR 0x110 /* Receive Next Pointer Register */
|
||||
#define ATMEL_PDC_RNCR 0x114 /* Receive Next Counter Register */
|
||||
#define ATMEL_PDC_TNPR 0x118 /* Transmit Next Pointer Register */
|
||||
#define ATMEL_PDC_TNCR 0x11c /* Transmit Next Counter Register */
|
||||
|
||||
#define ATMEL_PDC_PTCR 0x120 /* Transfer Control Register */
|
||||
#define ATMEL_PDC_RXTEN (1 << 0) /* Receiver Transfer Enable */
|
||||
#define ATMEL_PDC_RXTDIS (1 << 1) /* Receiver Transfer Disable */
|
||||
#define ATMEL_PDC_TXTEN (1 << 8) /* Transmitter Transfer Enable */
|
||||
#define ATMEL_PDC_TXTDIS (1 << 9) /* Transmitter Transfer Disable */
|
||||
|
||||
#define ATMEL_PDC_PTSR 0x124 /* Transfer Status Register */
|
||||
|
||||
#endif
|
@@ -24,6 +24,7 @@
|
||||
#ifndef _LINUX_AUDIT_H_
|
||||
#define _LINUX_AUDIT_H_
|
||||
|
||||
#include <linux/types.h>
|
||||
#include <linux/elf-em.h>
|
||||
|
||||
/* The netlink messages for the audit system is divided into blocks:
|
||||
@@ -89,6 +90,7 @@
|
||||
#define AUDIT_MQ_NOTIFY 1314 /* POSIX MQ notify record type */
|
||||
#define AUDIT_MQ_GETSETATTR 1315 /* POSIX MQ get/set attribute record type */
|
||||
#define AUDIT_KERNEL_OTHER 1316 /* For use by 3rd party modules */
|
||||
#define AUDIT_FD_PAIR 1317 /* audit record for pipe/socketpair */
|
||||
|
||||
#define AUDIT_AVC 1400 /* SE Linux avc denial or grant */
|
||||
#define AUDIT_SELINUX_ERR 1401 /* Internal SE Linux Errors */
|
||||
@@ -387,6 +389,7 @@ extern int __audit_ipc_set_perm(unsigned long qbytes, uid_t uid, gid_t gid, mode
|
||||
extern int audit_bprm(struct linux_binprm *bprm);
|
||||
extern int audit_socketcall(int nargs, unsigned long *args);
|
||||
extern int audit_sockaddr(int len, void *addr);
|
||||
extern int __audit_fd_pair(int fd1, int fd2);
|
||||
extern int audit_avc_path(struct dentry *dentry, struct vfsmount *mnt);
|
||||
extern int audit_set_macxattr(const char *name);
|
||||
extern int __audit_mq_open(int oflag, mode_t mode, struct mq_attr __user *u_attr);
|
||||
@@ -401,6 +404,12 @@ static inline int audit_ipc_obj(struct kern_ipc_perm *ipcp)
|
||||
return __audit_ipc_obj(ipcp);
|
||||
return 0;
|
||||
}
|
||||
static inline int audit_fd_pair(int fd1, int fd2)
|
||||
{
|
||||
if (unlikely(!audit_dummy_context()))
|
||||
return __audit_fd_pair(fd1, fd2);
|
||||
return 0;
|
||||
}
|
||||
static inline int audit_ipc_set_perm(unsigned long qbytes, uid_t uid, gid_t gid, mode_t mode)
|
||||
{
|
||||
if (unlikely(!audit_dummy_context()))
|
||||
@@ -459,6 +468,7 @@ extern int audit_n_rules;
|
||||
#define audit_ipc_set_perm(q,u,g,m) ({ 0; })
|
||||
#define audit_bprm(p) ({ 0; })
|
||||
#define audit_socketcall(n,a) ({ 0; })
|
||||
#define audit_fd_pair(n,a) ({ 0; })
|
||||
#define audit_sockaddr(len, addr) ({ 0; })
|
||||
#define audit_avc_path(dentry, mnt) ({ 0; })
|
||||
#define audit_set_macxattr(n) do { ; } while (0)
|
||||
|
@@ -59,6 +59,13 @@ struct autofs_packet_expire_multi {
|
||||
char name[NAME_MAX+1];
|
||||
};
|
||||
|
||||
union autofs_packet_union {
|
||||
struct autofs_packet_hdr hdr;
|
||||
struct autofs_packet_missing missing;
|
||||
struct autofs_packet_expire expire;
|
||||
struct autofs_packet_expire_multi expire_multi;
|
||||
};
|
||||
|
||||
/* autofs v5 common packet struct */
|
||||
struct autofs_v5_packet {
|
||||
struct autofs_packet_hdr hdr;
|
||||
@@ -78,12 +85,13 @@ typedef struct autofs_v5_packet autofs_packet_expire_indirect_t;
|
||||
typedef struct autofs_v5_packet autofs_packet_missing_direct_t;
|
||||
typedef struct autofs_v5_packet autofs_packet_expire_direct_t;
|
||||
|
||||
union autofs_packet_union {
|
||||
union autofs_v5_packet_union {
|
||||
struct autofs_packet_hdr hdr;
|
||||
struct autofs_packet_missing missing;
|
||||
struct autofs_packet_expire expire;
|
||||
struct autofs_packet_expire_multi expire_multi;
|
||||
struct autofs_v5_packet v5_packet;
|
||||
autofs_packet_missing_indirect_t missing_indirect;
|
||||
autofs_packet_expire_indirect_t expire_indirect;
|
||||
autofs_packet_missing_direct_t missing_direct;
|
||||
autofs_packet_expire_direct_t expire_direct;
|
||||
};
|
||||
|
||||
#define AUTOFS_IOC_EXPIRE_MULTI _IOW(0x93,0x66,int)
|
||||
|
@@ -93,6 +93,7 @@ static inline int bdi_rw_congested(struct backing_dev_info *bdi)
|
||||
void clear_bdi_congested(struct backing_dev_info *bdi, int rw);
|
||||
void set_bdi_congested(struct backing_dev_info *bdi, int rw);
|
||||
long congestion_wait(int rw, long timeout);
|
||||
long congestion_wait_interruptible(int rw, long timeout);
|
||||
void congestion_end(int rw);
|
||||
|
||||
#define bdi_cap_writeback_dirty(bdi) \
|
||||
|
@@ -9,17 +9,28 @@
|
||||
#define _LINUX_BACKLIGHT_H
|
||||
|
||||
#include <linux/device.h>
|
||||
#include <linux/mutex.h>
|
||||
#include <linux/notifier.h>
|
||||
|
||||
/* Notes on locking:
|
||||
*
|
||||
* backlight_device->ops_lock is an internal backlight lock protecting the
|
||||
* ops pointer and no code outside the core should need to touch it.
|
||||
*
|
||||
* Access to update_status() is serialised by the update_lock mutex since
|
||||
* most drivers seem to need this and historically get it wrong.
|
||||
*
|
||||
* Most drivers don't need locking on their get_brightness() method.
|
||||
* If yours does, you need to implement it in the driver. You can use the
|
||||
* update_lock mutex if appropriate.
|
||||
*
|
||||
* Any other use of the locks below is probably wrong.
|
||||
*/
|
||||
|
||||
struct backlight_device;
|
||||
struct fb_info;
|
||||
|
||||
/* This structure defines all the properties of a backlight
|
||||
(usually attached to a LCD). */
|
||||
struct backlight_properties {
|
||||
/* Owner module */
|
||||
struct module *owner;
|
||||
|
||||
struct backlight_ops {
|
||||
/* Notify the backlight driver some property has changed */
|
||||
int (*update_status)(struct backlight_device *);
|
||||
/* Return the current backlight brightness (accounting for power,
|
||||
@@ -28,7 +39,10 @@ struct backlight_properties {
|
||||
/* Check if given framebuffer device is the one bound to this backlight;
|
||||
return 0 if not, !=0 if it is. If NULL, backlight always matches the fb. */
|
||||
int (*check_fb)(struct fb_info *);
|
||||
};
|
||||
|
||||
/* This structure defines all the properties of a backlight */
|
||||
struct backlight_properties {
|
||||
/* Current User requested brightness (0 - max_brightness) */
|
||||
int brightness;
|
||||
/* Maximal value for brightness (read-only) */
|
||||
@@ -41,20 +55,34 @@ struct backlight_properties {
|
||||
};
|
||||
|
||||
struct backlight_device {
|
||||
/* This protects the 'props' field. If 'props' is NULL, the driver that
|
||||
/* Backlight properties */
|
||||
struct backlight_properties props;
|
||||
|
||||
/* Serialise access to update_status method */
|
||||
struct mutex update_lock;
|
||||
|
||||
/* This protects the 'ops' field. If 'ops' is NULL, the driver that
|
||||
registered this device has been unloaded, and if class_get_devdata()
|
||||
points to something in the body of that driver, it is also invalid. */
|
||||
struct semaphore sem;
|
||||
/* If this is NULL, the backing module is unloaded */
|
||||
struct backlight_properties *props;
|
||||
struct mutex ops_lock;
|
||||
struct backlight_ops *ops;
|
||||
|
||||
/* The framebuffer notifier block */
|
||||
struct notifier_block fb_notif;
|
||||
/* The class device structure */
|
||||
struct class_device class_dev;
|
||||
};
|
||||
|
||||
static inline void backlight_update_status(struct backlight_device *bd)
|
||||
{
|
||||
mutex_lock(&bd->update_lock);
|
||||
if (bd->ops && bd->ops->update_status)
|
||||
bd->ops->update_status(bd);
|
||||
mutex_unlock(&bd->update_lock);
|
||||
}
|
||||
|
||||
extern struct backlight_device *backlight_device_register(const char *name,
|
||||
struct device *dev,void *devdata,struct backlight_properties *bp);
|
||||
struct device *dev, void *devdata, struct backlight_ops *ops);
|
||||
extern void backlight_device_unregister(struct backlight_device *bd);
|
||||
|
||||
#define to_backlight_device(obj) container_of(obj, struct backlight_device, class_dev)
|
||||
|
@@ -276,7 +276,7 @@ extern struct bio_pair *bio_split(struct bio *bi, mempool_t *pool,
|
||||
extern mempool_t *bio_split_pool;
|
||||
extern void bio_pair_release(struct bio_pair *dbio);
|
||||
|
||||
extern struct bio_set *bioset_create(int, int, int);
|
||||
extern struct bio_set *bioset_create(int, int);
|
||||
extern void bioset_free(struct bio_set *);
|
||||
|
||||
extern struct bio *bio_alloc(gfp_t, int);
|
||||
|
@@ -116,6 +116,7 @@ struct io_context {
|
||||
|
||||
struct as_io_context *aic;
|
||||
struct rb_root cic_root;
|
||||
void *ioc_data;
|
||||
};
|
||||
|
||||
void put_io_context(struct io_context *ioc);
|
||||
|
@@ -108,7 +108,7 @@ static inline void *alloc_remap(int nid, unsigned long size)
|
||||
#endif /* CONFIG_HAVE_ARCH_ALLOC_REMAP */
|
||||
|
||||
extern unsigned long __meminitdata nr_kernel_pages;
|
||||
extern unsigned long nr_all_pages;
|
||||
extern unsigned long __meminitdata nr_all_pages;
|
||||
|
||||
extern void *alloc_large_system_hash(const char *tablename,
|
||||
unsigned long bucketsize,
|
||||
|
@@ -939,7 +939,7 @@ struct cdrom_device_info {
|
||||
int speed; /* maximum speed for reading data */
|
||||
int capacity; /* number of discs in jukebox */
|
||||
/* device-related storage */
|
||||
int options : 30; /* options flags */
|
||||
unsigned int options : 30; /* options flags */
|
||||
unsigned mc_flags : 2; /* media change buffer flags */
|
||||
int use_count; /* number of times device opened */
|
||||
char name[20]; /* name of the device type */
|
||||
|
@@ -73,5 +73,10 @@ extern void cfag12864b_disable(void);
|
||||
*/
|
||||
extern unsigned char cfag12864b_isenabled(void);
|
||||
|
||||
/*
|
||||
* Is the module inited?
|
||||
*/
|
||||
extern unsigned char cfag12864b_isinited(void);
|
||||
|
||||
#endif /* _CFAG12864B_H_ */
|
||||
|
||||
|
@@ -234,5 +234,24 @@ asmlinkage long compat_sys_migrate_pages(compat_pid_t pid,
|
||||
compat_ulong_t maxnode, const compat_ulong_t __user *old_nodes,
|
||||
const compat_ulong_t __user *new_nodes);
|
||||
|
||||
/*
|
||||
* epoll (fs/eventpoll.c) compat bits follow ...
|
||||
*/
|
||||
#ifndef CONFIG_HAS_COMPAT_EPOLL_EVENT
|
||||
struct epoll_event;
|
||||
#define compat_epoll_event epoll_event
|
||||
#else
|
||||
asmlinkage long compat_sys_epoll_ctl(int epfd, int op, int fd,
|
||||
struct compat_epoll_event __user *event);
|
||||
asmlinkage long compat_sys_epoll_wait(int epfd,
|
||||
struct compat_epoll_event __user *events,
|
||||
int maxevents, int timeout);
|
||||
#endif
|
||||
asmlinkage long compat_sys_epoll_pwait(int epfd,
|
||||
struct compat_epoll_event __user *events,
|
||||
int maxevents, int timeout,
|
||||
const compat_sigset_t __user *sigmask,
|
||||
compat_size_t sigsetsize);
|
||||
|
||||
#endif /* CONFIG_COMPAT */
|
||||
#endif /* _LINUX_COMPAT_H */
|
||||
|
@@ -15,8 +15,8 @@
|
||||
# define __acquire(x) __context__(x,1)
|
||||
# define __release(x) __context__(x,-1)
|
||||
# define __cond_lock(x,c) ((c) ? ({ __acquire(x); 1; }) : 0)
|
||||
extern void __chk_user_ptr(void __user *);
|
||||
extern void __chk_io_ptr(void __iomem *);
|
||||
extern void __chk_user_ptr(const void __user *);
|
||||
extern void __chk_io_ptr(const void __iomem *);
|
||||
#else
|
||||
# define __user
|
||||
# define __kernel
|
||||
|
@@ -127,9 +127,13 @@ static inline int cpu_is_offline(int cpu) { return 0; }
|
||||
#endif /* CONFIG_HOTPLUG_CPU */
|
||||
|
||||
#ifdef CONFIG_SUSPEND_SMP
|
||||
extern int suspend_cpu_hotplug;
|
||||
|
||||
extern int disable_nonboot_cpus(void);
|
||||
extern void enable_nonboot_cpus(void);
|
||||
#else
|
||||
#define suspend_cpu_hotplug 0
|
||||
|
||||
static inline int disable_nonboot_cpus(void) { return 0; }
|
||||
static inline void enable_nonboot_cpus(void) {}
|
||||
#endif
|
||||
|
@@ -398,11 +398,11 @@ extern cpumask_t cpu_present_map;
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_SMP
|
||||
int highest_possible_processor_id(void);
|
||||
extern int nr_cpu_ids;
|
||||
#define any_online_cpu(mask) __any_online_cpu(&(mask))
|
||||
int __any_online_cpu(const cpumask_t *mask);
|
||||
#else
|
||||
#define highest_possible_processor_id() 0
|
||||
#define nr_cpu_ids 1
|
||||
#define any_online_cpu(mask) 0
|
||||
#endif
|
||||
|
||||
|
@@ -260,19 +260,20 @@ enum {
|
||||
|
||||
static inline struct dccp_hdr *dccp_hdr(const struct sk_buff *skb)
|
||||
{
|
||||
return (struct dccp_hdr *)skb->h.raw;
|
||||
return (struct dccp_hdr *)skb_transport_header(skb);
|
||||
}
|
||||
|
||||
static inline struct dccp_hdr *dccp_zeroed_hdr(struct sk_buff *skb, int headlen)
|
||||
{
|
||||
skb->h.raw = skb_push(skb, headlen);
|
||||
memset(skb->h.raw, 0, headlen);
|
||||
return dccp_hdr(skb);
|
||||
skb_push(skb, headlen);
|
||||
skb_reset_transport_header(skb);
|
||||
return memset(skb_transport_header(skb), 0, headlen);
|
||||
}
|
||||
|
||||
static inline struct dccp_hdr_ext *dccp_hdrx(const struct sk_buff *skb)
|
||||
{
|
||||
return (struct dccp_hdr_ext *)(skb->h.raw + sizeof(struct dccp_hdr));
|
||||
return (struct dccp_hdr_ext *)(skb_transport_header(skb) +
|
||||
sizeof(struct dccp_hdr));
|
||||
}
|
||||
|
||||
static inline unsigned int __dccp_basic_hdr_len(const struct dccp_hdr *dh)
|
||||
@@ -301,12 +302,14 @@ static inline __u64 dccp_hdr_seq(const struct sk_buff *skb)
|
||||
|
||||
static inline struct dccp_hdr_request *dccp_hdr_request(struct sk_buff *skb)
|
||||
{
|
||||
return (struct dccp_hdr_request *)(skb->h.raw + dccp_basic_hdr_len(skb));
|
||||
return (struct dccp_hdr_request *)(skb_transport_header(skb) +
|
||||
dccp_basic_hdr_len(skb));
|
||||
}
|
||||
|
||||
static inline struct dccp_hdr_ack_bits *dccp_hdr_ack_bits(const struct sk_buff *skb)
|
||||
{
|
||||
return (struct dccp_hdr_ack_bits *)(skb->h.raw + dccp_basic_hdr_len(skb));
|
||||
return (struct dccp_hdr_ack_bits *)(skb_transport_header(skb) +
|
||||
dccp_basic_hdr_len(skb));
|
||||
}
|
||||
|
||||
static inline u64 dccp_hdr_ack_seq(const struct sk_buff *skb)
|
||||
@@ -317,12 +320,14 @@ static inline u64 dccp_hdr_ack_seq(const struct sk_buff *skb)
|
||||
|
||||
static inline struct dccp_hdr_response *dccp_hdr_response(struct sk_buff *skb)
|
||||
{
|
||||
return (struct dccp_hdr_response *)(skb->h.raw + dccp_basic_hdr_len(skb));
|
||||
return (struct dccp_hdr_response *)(skb_transport_header(skb) +
|
||||
dccp_basic_hdr_len(skb));
|
||||
}
|
||||
|
||||
static inline struct dccp_hdr_reset *dccp_hdr_reset(struct sk_buff *skb)
|
||||
{
|
||||
return (struct dccp_hdr_reset *)(skb->h.raw + dccp_basic_hdr_len(skb));
|
||||
return (struct dccp_hdr_reset *)(skb_transport_header(skb) +
|
||||
dccp_basic_hdr_len(skb));
|
||||
}
|
||||
|
||||
static inline unsigned int __dccp_hdr_len(const struct dccp_hdr *dh)
|
||||
@@ -460,26 +465,27 @@ struct dccp_ackvec;
|
||||
* @dccps_service_list - second .. last service code on passive socket
|
||||
* @dccps_timestamp_time - time of latest TIMESTAMP option
|
||||
* @dccps_timestamp_echo - latest timestamp received on a TIMESTAMP option
|
||||
* @dccps_l_ack_ratio -
|
||||
* @dccps_r_ack_ratio -
|
||||
* @dccps_l_ack_ratio - feature-local Ack Ratio
|
||||
* @dccps_r_ack_ratio - feature-remote Ack Ratio
|
||||
* @dccps_pcslen - sender partial checksum coverage (via sockopt)
|
||||
* @dccps_pcrlen - receiver partial checksum coverage (via sockopt)
|
||||
* @dccps_ndp_count - number of Non Data Packets since last data packet
|
||||
* @dccps_mss_cache -
|
||||
* @dccps_minisock -
|
||||
* @dccps_mss_cache - current value of MSS (path MTU minus header sizes)
|
||||
* @dccps_minisock - associated minisock (accessed via dccp_msk)
|
||||
* @dccps_hc_rx_ackvec - rx half connection ack vector
|
||||
* @dccps_hc_rx_ccid -
|
||||
* @dccps_hc_tx_ccid -
|
||||
* @dccps_options_received -
|
||||
* @dccps_epoch -
|
||||
* @dccps_role - Role of this sock, one of %dccp_role
|
||||
* @dccps_hc_rx_insert_options -
|
||||
* @dccps_hc_tx_insert_options -
|
||||
* @dccps_hc_rx_ccid - CCID used for the receiver (or receiving half-connection)
|
||||
* @dccps_hc_tx_ccid - CCID used for the sender (or sending half-connection)
|
||||
* @dccps_options_received - parsed set of retrieved options
|
||||
* @dccps_role - role of this sock, one of %dccp_role
|
||||
* @dccps_hc_rx_insert_options - receiver wants to add options when acking
|
||||
* @dccps_hc_tx_insert_options - sender wants to add options when sending
|
||||
* @dccps_xmit_timer - timer for when CCID is not ready to send
|
||||
* @dccps_syn_rtt - RTT sample from Request/Response exchange (in usecs)
|
||||
*/
|
||||
struct dccp_sock {
|
||||
/* inet_connection_sock has to be the first member of dccp_sock */
|
||||
struct inet_connection_sock dccps_inet_connection;
|
||||
#define dccps_syn_rtt dccps_inet_connection.icsk_ack.lrcvtime
|
||||
__u64 dccps_swl;
|
||||
__u64 dccps_swh;
|
||||
__u64 dccps_awl;
|
||||
|
@@ -33,6 +33,9 @@ struct dentry *debugfs_create_file(const char *name, mode_t mode,
|
||||
|
||||
struct dentry *debugfs_create_dir(const char *name, struct dentry *parent);
|
||||
|
||||
struct dentry *debugfs_create_symlink(const char *name, struct dentry *parent,
|
||||
const char *dest);
|
||||
|
||||
void debugfs_remove(struct dentry *dentry);
|
||||
|
||||
struct dentry *debugfs_create_u8(const char *name, mode_t mode,
|
||||
@@ -41,6 +44,8 @@ struct dentry *debugfs_create_u16(const char *name, mode_t mode,
|
||||
struct dentry *parent, u16 *value);
|
||||
struct dentry *debugfs_create_u32(const char *name, mode_t mode,
|
||||
struct dentry *parent, u32 *value);
|
||||
struct dentry *debugfs_create_u64(const char *name, mode_t mode,
|
||||
struct dentry *parent, u64 *value);
|
||||
struct dentry *debugfs_create_bool(const char *name, mode_t mode,
|
||||
struct dentry *parent, u32 *value);
|
||||
|
||||
@@ -70,6 +75,13 @@ static inline struct dentry *debugfs_create_dir(const char *name,
|
||||
return ERR_PTR(-ENODEV);
|
||||
}
|
||||
|
||||
static inline struct dentry *debugfs_create_symlink(const char *name,
|
||||
struct dentry *parent,
|
||||
const char *dest)
|
||||
{
|
||||
return ERR_PTR(-ENODEV);
|
||||
}
|
||||
|
||||
static inline void debugfs_remove(struct dentry *dentry)
|
||||
{ }
|
||||
|
||||
@@ -94,6 +106,13 @@ static inline struct dentry *debugfs_create_u32(const char *name, mode_t mode,
|
||||
return ERR_PTR(-ENODEV);
|
||||
}
|
||||
|
||||
static inline struct dentry *debugfs_create_u64(const char *name, mode_t mode,
|
||||
struct dentry *parent,
|
||||
u64 *value)
|
||||
{
|
||||
return ERR_PTR(-ENODEV);
|
||||
}
|
||||
|
||||
static inline struct dentry *debugfs_create_bool(const char *name, mode_t mode,
|
||||
struct dentry *parent,
|
||||
u32 *value)
|
||||
|
@@ -2,6 +2,7 @@
|
||||
* device.h - generic, centralized driver model
|
||||
*
|
||||
* Copyright (c) 2001-2003 Patrick Mochel <mochel@osdl.org>
|
||||
* Copyright (c) 2004-2007 Greg Kroah-Hartman <gregkh@suse.de>
|
||||
*
|
||||
* This file is released under the GPLv2
|
||||
*
|
||||
@@ -33,9 +34,24 @@ struct device;
|
||||
struct device_driver;
|
||||
struct class;
|
||||
struct class_device;
|
||||
struct bus_type;
|
||||
|
||||
struct bus_attribute {
|
||||
struct attribute attr;
|
||||
ssize_t (*show)(struct bus_type *, char * buf);
|
||||
ssize_t (*store)(struct bus_type *, const char * buf, size_t count);
|
||||
};
|
||||
|
||||
#define BUS_ATTR(_name,_mode,_show,_store) \
|
||||
struct bus_attribute bus_attr_##_name = __ATTR(_name,_mode,_show,_store)
|
||||
|
||||
extern int __must_check bus_create_file(struct bus_type *,
|
||||
struct bus_attribute *);
|
||||
extern void bus_remove_file(struct bus_type *, struct bus_attribute *);
|
||||
|
||||
struct bus_type {
|
||||
const char * name;
|
||||
struct module * owner;
|
||||
|
||||
struct subsystem subsys;
|
||||
struct kset drivers;
|
||||
@@ -48,6 +64,8 @@ struct bus_type {
|
||||
struct bus_attribute * bus_attrs;
|
||||
struct device_attribute * dev_attrs;
|
||||
struct driver_attribute * drv_attrs;
|
||||
struct bus_attribute drivers_autoprobe_attr;
|
||||
struct bus_attribute drivers_probe_attr;
|
||||
|
||||
int (*match)(struct device * dev, struct device_driver * drv);
|
||||
int (*uevent)(struct device *dev, char **envp,
|
||||
@@ -60,6 +78,9 @@ struct bus_type {
|
||||
int (*suspend_late)(struct device * dev, pm_message_t state);
|
||||
int (*resume_early)(struct device * dev);
|
||||
int (*resume)(struct device * dev);
|
||||
|
||||
unsigned int drivers_autoprobe:1;
|
||||
unsigned int multithread_probe:1;
|
||||
};
|
||||
|
||||
extern int __must_check bus_register(struct bus_type * bus);
|
||||
@@ -101,40 +122,23 @@ extern int bus_unregister_notifier(struct bus_type *bus,
|
||||
#define BUS_NOTIFY_UNBIND_DRIVER 0x00000004 /* driver about to be
|
||||
unbound */
|
||||
|
||||
/* driverfs interface for exporting bus attributes */
|
||||
|
||||
struct bus_attribute {
|
||||
struct attribute attr;
|
||||
ssize_t (*show)(struct bus_type *, char * buf);
|
||||
ssize_t (*store)(struct bus_type *, const char * buf, size_t count);
|
||||
};
|
||||
|
||||
#define BUS_ATTR(_name,_mode,_show,_store) \
|
||||
struct bus_attribute bus_attr_##_name = __ATTR(_name,_mode,_show,_store)
|
||||
|
||||
extern int __must_check bus_create_file(struct bus_type *,
|
||||
struct bus_attribute *);
|
||||
extern void bus_remove_file(struct bus_type *, struct bus_attribute *);
|
||||
|
||||
struct device_driver {
|
||||
const char * name;
|
||||
struct bus_type * bus;
|
||||
|
||||
struct completion unloaded;
|
||||
struct kobject kobj;
|
||||
struct klist klist_devices;
|
||||
struct klist_node knode_bus;
|
||||
|
||||
struct module * owner;
|
||||
const char * mod_name; /* used for built-in modules */
|
||||
struct module_kobject * mkobj;
|
||||
|
||||
int (*probe) (struct device * dev);
|
||||
int (*remove) (struct device * dev);
|
||||
void (*shutdown) (struct device * dev);
|
||||
int (*suspend) (struct device * dev, pm_message_t state);
|
||||
int (*resume) (struct device * dev);
|
||||
|
||||
unsigned int multithread_probe:1;
|
||||
};
|
||||
|
||||
|
||||
@@ -146,7 +150,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);
|
||||
|
||||
/* driverfs interface for exporting driver attributes */
|
||||
/* sysfs interface for exporting driver attributes */
|
||||
|
||||
struct driver_attribute {
|
||||
struct attribute attr;
|
||||
@@ -179,10 +183,9 @@ struct class {
|
||||
struct list_head children;
|
||||
struct list_head devices;
|
||||
struct list_head interfaces;
|
||||
struct kset class_dirs;
|
||||
struct semaphore sem; /* locks both the children and interfaces lists */
|
||||
|
||||
struct kobject *virtual_dir;
|
||||
|
||||
struct class_attribute * class_attrs;
|
||||
struct class_device_attribute * class_dev_attrs;
|
||||
struct device_attribute * dev_attrs;
|
||||
@@ -293,8 +296,6 @@ extern void class_device_initialize(struct class_device *);
|
||||
extern int __must_check class_device_add(struct class_device *);
|
||||
extern void class_device_del(struct class_device *);
|
||||
|
||||
extern int class_device_rename(struct class_device *, char *);
|
||||
|
||||
extern struct class_device * class_device_get(struct class_device *);
|
||||
extern void class_device_put(struct class_device *);
|
||||
|
||||
@@ -328,11 +329,23 @@ extern struct class_device *class_device_create(struct class *cls,
|
||||
__attribute__((format(printf,5,6)));
|
||||
extern void class_device_destroy(struct class *cls, dev_t devt);
|
||||
|
||||
/*
|
||||
* The type of device, "struct device" is embedded in. A class
|
||||
* or bus can contain devices of different types
|
||||
* like "partitions" and "disks", "mouse" and "event".
|
||||
* This identifies the device type and carries type-specific
|
||||
* information, equivalent to the kobj_type of a kobject.
|
||||
* If "name" is specified, the uevent will contain it in
|
||||
* the DEVTYPE variable.
|
||||
*/
|
||||
struct device_type {
|
||||
struct device_attribute *attrs;
|
||||
const char *name;
|
||||
struct attribute_group **groups;
|
||||
int (*uevent)(struct device *dev, char **envp, int num_envp,
|
||||
char *buffer, int buffer_size);
|
||||
void (*release)(struct device *dev);
|
||||
int (*suspend)(struct device * dev, pm_message_t state);
|
||||
int (*resume)(struct device * dev);
|
||||
};
|
||||
|
||||
/* interface for exporting device attributes */
|
||||
@@ -354,6 +367,12 @@ extern int __must_check device_create_bin_file(struct device *dev,
|
||||
struct bin_attribute *attr);
|
||||
extern void device_remove_bin_file(struct device *dev,
|
||||
struct bin_attribute *attr);
|
||||
extern int device_schedule_callback_owner(struct device *dev,
|
||||
void (*func)(struct device *), struct module *owner);
|
||||
|
||||
/* This is a macro to avoid include problems with THIS_MODULE */
|
||||
#define device_schedule_callback(dev, func) \
|
||||
device_schedule_callback_owner(dev, func, THIS_MODULE)
|
||||
|
||||
/* device resource management */
|
||||
typedef void (*dr_release_t)(struct device *dev, void *res);
|
||||
@@ -552,7 +571,11 @@ extern const char *dev_driver_string(struct device *dev);
|
||||
#define dev_dbg(dev, format, arg...) \
|
||||
dev_printk(KERN_DEBUG , dev , format , ## arg)
|
||||
#else
|
||||
#define dev_dbg(dev, format, arg...) do { (void)(dev); } while (0)
|
||||
static inline int __attribute__ ((format (printf, 2, 3)))
|
||||
dev_dbg(struct device * dev, const char * fmt, ...)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
#define dev_err(dev, format, arg...) \
|
||||
|
@@ -1,53 +0,0 @@
|
||||
/*
|
||||
* ds1742rtc.h - register definitions for the Real-Time-Clock / CMOS RAM
|
||||
*
|
||||
* Copyright (C) 1999-2001 Toshiba Corporation
|
||||
* Copyright (C) 2003 Ralf Baechle (ralf@linux-mips.org)
|
||||
*
|
||||
* Permission is hereby granted to copy, modify and redistribute this code
|
||||
* in terms of the GNU Library General Public License, Version 2 or later,
|
||||
* at your option.
|
||||
*/
|
||||
#ifndef __LINUX_DS1742RTC_H
|
||||
#define __LINUX_DS1742RTC_H
|
||||
|
||||
#include <asm/ds1742.h>
|
||||
|
||||
#define RTC_BRAM_SIZE 0x800
|
||||
#define RTC_OFFSET 0x7f8
|
||||
|
||||
/*
|
||||
* Register summary
|
||||
*/
|
||||
#define RTC_CONTROL (RTC_OFFSET + 0)
|
||||
#define RTC_CENTURY (RTC_OFFSET + 0)
|
||||
#define RTC_SECONDS (RTC_OFFSET + 1)
|
||||
#define RTC_MINUTES (RTC_OFFSET + 2)
|
||||
#define RTC_HOURS (RTC_OFFSET + 3)
|
||||
#define RTC_DAY (RTC_OFFSET + 4)
|
||||
#define RTC_DATE (RTC_OFFSET + 5)
|
||||
#define RTC_MONTH (RTC_OFFSET + 6)
|
||||
#define RTC_YEAR (RTC_OFFSET + 7)
|
||||
|
||||
#define RTC_CENTURY_MASK 0x3f
|
||||
#define RTC_SECONDS_MASK 0x7f
|
||||
#define RTC_DAY_MASK 0x07
|
||||
|
||||
/*
|
||||
* Bits in the Control/Century register
|
||||
*/
|
||||
#define RTC_WRITE 0x80
|
||||
#define RTC_READ 0x40
|
||||
|
||||
/*
|
||||
* Bits in the Seconds register
|
||||
*/
|
||||
#define RTC_STOP 0x80
|
||||
|
||||
/*
|
||||
* Bits in the Day register
|
||||
*/
|
||||
#define RTC_BATT_FLAG 0x80
|
||||
#define RTC_FREQ_TEST 0x40
|
||||
|
||||
#endif /* __LINUX_DS1742RTC_H */
|
@@ -47,7 +47,9 @@ typedef enum {
|
||||
typedef enum {
|
||||
AUDIO_STEREO,
|
||||
AUDIO_MONO_LEFT,
|
||||
AUDIO_MONO_RIGHT
|
||||
AUDIO_MONO_RIGHT,
|
||||
AUDIO_MONO,
|
||||
AUDIO_STEREO_SWAPPED
|
||||
} audio_channel_select_t;
|
||||
|
||||
|
||||
@@ -133,5 +135,6 @@ typedef uint16_t audio_attributes_t;
|
||||
* extracted by the PES parser.
|
||||
*/
|
||||
#define AUDIO_GET_PTS _IOR('o', 19, __u64)
|
||||
#define AUDIO_BILINGUAL_CHANNEL_SELECT _IO('o', 20)
|
||||
|
||||
#endif /* _DVBAUDIO_H_ */
|
||||
|
@@ -24,6 +24,6 @@
|
||||
#define _DVBVERSION_H_
|
||||
|
||||
#define DVB_API_VERSION 3
|
||||
#define DVB_API_VERSION_MINOR 1
|
||||
#define DVB_API_VERSION_MINOR 2
|
||||
|
||||
#endif /*_DVBVERSION_H_*/
|
||||
|
@@ -80,14 +80,70 @@ typedef enum {
|
||||
} video_play_state_t;
|
||||
|
||||
|
||||
/* Decoder commands */
|
||||
#define VIDEO_CMD_PLAY (0)
|
||||
#define VIDEO_CMD_STOP (1)
|
||||
#define VIDEO_CMD_FREEZE (2)
|
||||
#define VIDEO_CMD_CONTINUE (3)
|
||||
|
||||
/* Flags for VIDEO_CMD_FREEZE */
|
||||
#define VIDEO_CMD_FREEZE_TO_BLACK (1 << 0)
|
||||
|
||||
/* Flags for VIDEO_CMD_STOP */
|
||||
#define VIDEO_CMD_STOP_TO_BLACK (1 << 0)
|
||||
#define VIDEO_CMD_STOP_IMMEDIATELY (1 << 1)
|
||||
|
||||
/* Play input formats: */
|
||||
/* The decoder has no special format requirements */
|
||||
#define VIDEO_PLAY_FMT_NONE (0)
|
||||
/* The decoder requires full GOPs */
|
||||
#define VIDEO_PLAY_FMT_GOP (1)
|
||||
|
||||
/* The structure must be zeroed before use by the application
|
||||
This ensures it can be extended safely in the future. */
|
||||
struct video_command {
|
||||
__u32 cmd;
|
||||
__u32 flags;
|
||||
union {
|
||||
struct {
|
||||
__u64 pts;
|
||||
} stop;
|
||||
|
||||
struct {
|
||||
/* 0 or 1000 specifies normal speed,
|
||||
1 specifies forward single stepping,
|
||||
-1 specifies backward single stepping,
|
||||
>1: playback at speed/1000 of the normal speed,
|
||||
<-1: reverse playback at (-speed/1000) of the normal speed. */
|
||||
__s32 speed;
|
||||
__u32 format;
|
||||
} play;
|
||||
|
||||
struct {
|
||||
__u32 data[16];
|
||||
} raw;
|
||||
};
|
||||
};
|
||||
|
||||
/* FIELD_UNKNOWN can be used if the hardware does not know whether
|
||||
the Vsync is for an odd, even or progressive (i.e. non-interlaced)
|
||||
field. */
|
||||
#define VIDEO_VSYNC_FIELD_UNKNOWN (0)
|
||||
#define VIDEO_VSYNC_FIELD_ODD (1)
|
||||
#define VIDEO_VSYNC_FIELD_EVEN (2)
|
||||
#define VIDEO_VSYNC_FIELD_PROGRESSIVE (3)
|
||||
|
||||
struct video_event {
|
||||
int32_t type;
|
||||
#define VIDEO_EVENT_SIZE_CHANGED 1
|
||||
#define VIDEO_EVENT_FRAME_RATE_CHANGED 2
|
||||
#define VIDEO_EVENT_DECODER_STOPPED 3
|
||||
#define VIDEO_EVENT_VSYNC 4
|
||||
time_t timestamp;
|
||||
union {
|
||||
video_size_t size;
|
||||
unsigned int frame_rate; /* in frames per 1000sec */
|
||||
unsigned char vsync_field; /* unknown/odd/even/progressive */
|
||||
} u;
|
||||
};
|
||||
|
||||
@@ -213,4 +269,10 @@ typedef uint16_t video_attributes_t;
|
||||
*/
|
||||
#define VIDEO_GET_PTS _IOR('o', 57, __u64)
|
||||
|
||||
/* Read the number of displayed frames since the decoder was started */
|
||||
#define VIDEO_GET_FRAME_COUNT _IOR('o', 58, __u64)
|
||||
|
||||
#define VIDEO_COMMAND _IOWR('o', 59, struct video_command)
|
||||
#define VIDEO_TRY_COMMAND _IOWR('o', 60, struct video_command)
|
||||
|
||||
#endif /*_DVBVIDEO_H_*/
|
||||
|
@@ -31,12 +31,19 @@
|
||||
/*
|
||||
* On x86-64 make the 64bit structure have the same alignment as the
|
||||
* 32bit structure. This makes 32bit emulation easier.
|
||||
*
|
||||
* UML/x86_64 needs the same packing as x86_64 - UML + UML_X86 +
|
||||
* 64_BIT adds up to UML/x86_64.
|
||||
*/
|
||||
#ifdef __x86_64__
|
||||
#define EPOLL_PACKED __attribute__((packed))
|
||||
#else
|
||||
#if defined(CONFIG_UML) && defined(CONFIG_UML_X86) && defined(CONFIG_64BIT)
|
||||
#define EPOLL_PACKED __attribute__((packed))
|
||||
#else
|
||||
#define EPOLL_PACKED
|
||||
#endif
|
||||
#endif
|
||||
|
||||
struct epoll_event {
|
||||
__u32 events;
|
||||
|
@@ -22,12 +22,12 @@
|
||||
#include <linux/ext4_fs.h>
|
||||
|
||||
/*
|
||||
* With AGRESSIVE_TEST defined, the capacity of index/leaf blocks
|
||||
* With AGGRESSIVE_TEST defined, the capacity of index/leaf blocks
|
||||
* becomes very small, so index split, in-depth growing and
|
||||
* other hard changes happen much more often.
|
||||
* This is for debug purposes only.
|
||||
*/
|
||||
#define AGRESSIVE_TEST_
|
||||
#define AGGRESSIVE_TEST_
|
||||
|
||||
/*
|
||||
* With EXTENTS_STATS defined, the number of blocks and extents
|
||||
|
@@ -516,13 +516,15 @@ struct fb_cursor_user {
|
||||
#define FB_EVENT_GET_CONSOLE_MAP 0x07
|
||||
/* CONSOLE-SPECIFIC: set console to framebuffer mapping */
|
||||
#define FB_EVENT_SET_CONSOLE_MAP 0x08
|
||||
/* A display blank is requested */
|
||||
/* A hardware display blank change occured */
|
||||
#define FB_EVENT_BLANK 0x09
|
||||
/* Private modelist is to be replaced */
|
||||
#define FB_EVENT_NEW_MODELIST 0x0A
|
||||
/* The resolution of the passed in fb_info about to change and
|
||||
all vc's should be changed */
|
||||
#define FB_EVENT_MODE_CHANGE_ALL 0x0B
|
||||
/* A software display blank change occured */
|
||||
#define FB_EVENT_CONBLANK 0x0C
|
||||
|
||||
struct fb_event {
|
||||
struct fb_info *info;
|
||||
@@ -767,16 +769,13 @@ struct fb_info {
|
||||
struct fb_videomode *mode; /* current mode */
|
||||
|
||||
#ifdef CONFIG_FB_BACKLIGHT
|
||||
/* Lock ordering:
|
||||
* bl_mutex (protects bl_dev and bl_curve)
|
||||
* bl_dev->sem (backlight class)
|
||||
*/
|
||||
struct mutex bl_mutex;
|
||||
|
||||
/* assigned backlight device */
|
||||
/* set before framebuffer registration,
|
||||
remove after unregister */
|
||||
struct backlight_device *bl_dev;
|
||||
|
||||
/* Backlight level curve */
|
||||
struct mutex bl_curve_mutex;
|
||||
u8 bl_curve[FB_BACKLIGHT_LEVELS];
|
||||
#endif
|
||||
|
||||
|
@@ -5,8 +5,13 @@
|
||||
#include <linux/rtnetlink.h>
|
||||
|
||||
/* rule is permanent, and cannot be deleted */
|
||||
#define FIB_RULE_PERMANENT 1
|
||||
#define FIB_RULE_INVERT 2
|
||||
#define FIB_RULE_PERMANENT 0x00000001
|
||||
#define FIB_RULE_INVERT 0x00000002
|
||||
#define FIB_RULE_UNRESOLVED 0x00000004
|
||||
#define FIB_RULE_DEV_DETACHED 0x00000008
|
||||
|
||||
/* try to find source address in routing lookups */
|
||||
#define FIB_RULE_FIND_SADDR 0x00010000
|
||||
|
||||
struct fib_rule_hdr
|
||||
{
|
||||
@@ -29,7 +34,7 @@ enum
|
||||
FRA_DST, /* destination address */
|
||||
FRA_SRC, /* source address */
|
||||
FRA_IFNAME, /* interface name */
|
||||
FRA_UNUSED1,
|
||||
FRA_GOTO, /* target to jump to (FR_ACT_GOTO) */
|
||||
FRA_UNUSED2,
|
||||
FRA_PRIORITY, /* priority/preference */
|
||||
FRA_UNUSED3,
|
||||
@@ -51,8 +56,8 @@ enum
|
||||
{
|
||||
FR_ACT_UNSPEC,
|
||||
FR_ACT_TO_TBL, /* Pass to fixed table */
|
||||
FR_ACT_RES1,
|
||||
FR_ACT_RES2,
|
||||
FR_ACT_GOTO, /* Jump to another rule */
|
||||
FR_ACT_NOP, /* No operation */
|
||||
FR_ACT_RES3,
|
||||
FR_ACT_RES4,
|
||||
FR_ACT_BLACKHOLE, /* Drop without notification */
|
||||
|
@@ -843,8 +843,13 @@ extern int fcntl_setlease(unsigned int fd, struct file *filp, long arg);
|
||||
extern int fcntl_getlease(struct file *filp);
|
||||
|
||||
/* fs/sync.c */
|
||||
extern int do_sync_file_range(struct file *file, loff_t offset, loff_t endbyte,
|
||||
unsigned int flags);
|
||||
extern int do_sync_mapping_range(struct address_space *mapping, loff_t offset,
|
||||
loff_t endbyte, unsigned int flags);
|
||||
static inline int do_sync_file_range(struct file *file, loff_t offset,
|
||||
loff_t endbyte, unsigned int flags)
|
||||
{
|
||||
return do_sync_mapping_range(file->f_mapping, offset, endbyte, flags);
|
||||
}
|
||||
|
||||
/* fs/locks.c */
|
||||
extern void locks_init_lock(struct file_lock *);
|
||||
|
@@ -120,44 +120,5 @@ struct fsl_spi_platform_data {
|
||||
u32 sysclk;
|
||||
};
|
||||
|
||||
/* Ethernet interface (phy management and speed)
|
||||
*/
|
||||
enum enet_interface {
|
||||
ENET_10_MII, /* 10 Base T, MII interface */
|
||||
ENET_10_RMII, /* 10 Base T, RMII interface */
|
||||
ENET_10_RGMII, /* 10 Base T, RGMII interface */
|
||||
ENET_100_MII, /* 100 Base T, MII interface */
|
||||
ENET_100_RMII, /* 100 Base T, RMII interface */
|
||||
ENET_100_RGMII, /* 100 Base T, RGMII interface */
|
||||
ENET_1000_GMII, /* 1000 Base T, GMII interface */
|
||||
ENET_1000_RGMII, /* 1000 Base T, RGMII interface */
|
||||
ENET_1000_TBI, /* 1000 Base T, TBI interface */
|
||||
ENET_1000_RTBI /* 1000 Base T, RTBI interface */
|
||||
};
|
||||
|
||||
struct ucc_geth_platform_data {
|
||||
/* device specific information */
|
||||
u32 device_flags;
|
||||
u32 phy_reg_addr;
|
||||
|
||||
/* board specific information */
|
||||
u32 board_flags;
|
||||
u8 rx_clock;
|
||||
u8 tx_clock;
|
||||
u32 phy_id;
|
||||
enum enet_interface phy_interface;
|
||||
u32 phy_interrupt;
|
||||
u8 mac_addr[6];
|
||||
};
|
||||
|
||||
/* Flags related to UCC Gigabit Ethernet device features */
|
||||
#define FSL_UGETH_DEV_HAS_GIGABIT 0x00000001
|
||||
#define FSL_UGETH_DEV_HAS_COALESCE 0x00000002
|
||||
#define FSL_UGETH_DEV_HAS_RMON 0x00000004
|
||||
|
||||
/* Flags in ucc_geth_platform_data */
|
||||
#define FSL_UGETH_BRD_HAS_PHY_INTR 0x00000001
|
||||
/* if not set use a timer */
|
||||
|
||||
#endif /* _FSL_DEVICE_H_ */
|
||||
#endif /* __KERNEL__ */
|
||||
|
17
include/linux/gpio_keys.h
Normal file
17
include/linux/gpio_keys.h
Normal file
@@ -0,0 +1,17 @@
|
||||
#ifndef _GPIO_KEYS_H
|
||||
#define _GPIO_KEYS_H
|
||||
|
||||
struct gpio_keys_button {
|
||||
/* Configuration parameters */
|
||||
int keycode;
|
||||
int gpio;
|
||||
int active_low;
|
||||
char *desc;
|
||||
};
|
||||
|
||||
struct gpio_keys_platform_data {
|
||||
struct gpio_keys_button *buttons;
|
||||
int nbuttons;
|
||||
};
|
||||
|
||||
#endif
|
@@ -43,8 +43,7 @@ struct hdlc_proto {
|
||||
void (*stop)(struct net_device *dev); /* if open & !DCD */
|
||||
void (*detach)(struct net_device *dev);
|
||||
int (*ioctl)(struct net_device *dev, struct ifreq *ifr);
|
||||
unsigned short (*type_trans)(struct sk_buff *skb,
|
||||
struct net_device *dev);
|
||||
__be16 (*type_trans)(struct sk_buff *skb, struct net_device *dev);
|
||||
struct module *module;
|
||||
struct hdlc_proto *next; /* next protocol in the list */
|
||||
};
|
||||
@@ -132,8 +131,8 @@ static __inline__ __be16 hdlc_type_trans(struct sk_buff *skb,
|
||||
{
|
||||
hdlc_device *hdlc = dev_to_hdlc(dev);
|
||||
|
||||
skb->mac.raw = skb->data;
|
||||
skb->dev = dev;
|
||||
skb->dev = dev;
|
||||
skb_reset_mac_header(skb);
|
||||
|
||||
if (hdlc->proto->type_trans)
|
||||
return hdlc->proto->type_trans(skb, dev);
|
||||
|
@@ -6,7 +6,7 @@
|
||||
*
|
||||
* Copyright (c) 1999 Andreas Gal
|
||||
* Copyright (c) 2000-2001 Vojtech Pavlik
|
||||
* Copyright (c) 2006 Jiri Kosina
|
||||
* Copyright (c) 2006-2007 Jiri Kosina
|
||||
*/
|
||||
|
||||
/*
|
||||
@@ -247,6 +247,11 @@ struct hid_item {
|
||||
* HID device quirks.
|
||||
*/
|
||||
|
||||
/*
|
||||
* Increase this if you need to configure more HID quirks at module load time
|
||||
*/
|
||||
#define MAX_USBHID_BOOT_QUIRKS 4
|
||||
|
||||
#define HID_QUIRK_INVERT 0x00000001
|
||||
#define HID_QUIRK_NOTOUCH 0x00000002
|
||||
#define HID_QUIRK_IGNORE 0x00000004
|
||||
@@ -267,6 +272,9 @@ struct hid_item {
|
||||
#define HID_QUIRK_SKIP_OUTPUT_REPORTS 0x00020000
|
||||
#define HID_QUIRK_IGNORE_MOUSE 0x00040000
|
||||
#define HID_QUIRK_SONY_PS3_CONTROLLER 0x00080000
|
||||
#define HID_QUIRK_LOGITECH_DESCRIPTOR 0x00100000
|
||||
#define HID_QUIRK_DUPLICATE_USAGES 0x00200000
|
||||
#define HID_QUIRK_RESET_LEDS 0x00400000
|
||||
|
||||
/*
|
||||
* This is the global environment of the parser. This information is
|
||||
@@ -292,7 +300,7 @@ struct hid_global {
|
||||
*/
|
||||
|
||||
#define HID_MAX_DESCRIPTOR_SIZE 4096
|
||||
#define HID_MAX_USAGES 1024
|
||||
#define HID_MAX_USAGES 8192
|
||||
#define HID_DEFAULT_NUM_COLLECTIONS 16
|
||||
|
||||
struct hid_local {
|
||||
@@ -492,6 +500,12 @@ void hid_output_report(struct hid_report *report, __u8 *data);
|
||||
void hid_free_device(struct hid_device *device);
|
||||
struct hid_device *hid_parse_report(__u8 *start, unsigned size);
|
||||
|
||||
/* HID quirks API */
|
||||
u32 usbhid_lookup_quirk(const u16 idVendor, const u16 idProduct);
|
||||
int usbhid_modify_dquirk(const u16 idVendor, const u16 idProduct, const u32 quirks);
|
||||
int usbhid_quirks_init(char **quirks_param);
|
||||
void usbhid_quirks_exit(void);
|
||||
|
||||
#ifdef CONFIG_HID_FF
|
||||
int hid_ff_init(struct hid_device *hid);
|
||||
|
||||
|
@@ -47,7 +47,7 @@ enum hrtimer_restart {
|
||||
* HRTIMER_CB_IRQSAFE: Callback may run in hardirq context
|
||||
* HRTIMER_CB_IRQSAFE_NO_RESTART: Callback may run in hardirq context and
|
||||
* does not restart the timer
|
||||
* HRTIMER_CB_IRQSAFE_NO_SOFTIRQ: Callback must run in softirq context
|
||||
* HRTIMER_CB_IRQSAFE_NO_SOFTIRQ: Callback must run in hardirq context
|
||||
* Special mode for tick emultation
|
||||
*/
|
||||
enum hrtimer_cb_mode {
|
||||
@@ -139,7 +139,8 @@ struct hrtimer_sleeper {
|
||||
};
|
||||
|
||||
/**
|
||||
* struct hrtimer_base - the timer base for a specific clock
|
||||
* struct hrtimer_clock_base - the timer base for a specific clock
|
||||
* @cpu_base: per cpu clock base
|
||||
* @index: clock type index for per_cpu support when moving a
|
||||
* timer to a base on another cpu.
|
||||
* @active: red black tree root node for the active timers
|
||||
@@ -205,6 +206,7 @@ struct hrtimer_cpu_base {
|
||||
struct clock_event_device;
|
||||
|
||||
extern void clock_was_set(void);
|
||||
extern void hres_timers_resume(void);
|
||||
extern void hrtimer_interrupt(struct clock_event_device *dev);
|
||||
|
||||
/*
|
||||
@@ -235,6 +237,8 @@ static inline ktime_t hrtimer_cb_get_time(struct hrtimer *timer)
|
||||
*/
|
||||
static inline void clock_was_set(void) { }
|
||||
|
||||
static inline void hres_timers_resume(void) { }
|
||||
|
||||
/*
|
||||
* In non high resolution mode the time reference is taken from
|
||||
* the base softirq time variable.
|
||||
|
@@ -4,6 +4,7 @@
|
||||
#ifdef CONFIG_HUGETLB_PAGE
|
||||
|
||||
#include <linux/mempolicy.h>
|
||||
#include <linux/shm.h>
|
||||
#include <asm/tlbflush.h>
|
||||
|
||||
struct ctl_table;
|
||||
@@ -168,7 +169,12 @@ void hugetlb_put_quota(struct address_space *mapping);
|
||||
|
||||
static inline int is_file_hugepages(struct file *file)
|
||||
{
|
||||
return file->f_op == &hugetlbfs_file_operations;
|
||||
if (file->f_op == &hugetlbfs_file_operations)
|
||||
return 1;
|
||||
if (is_file_shm_hugepages(file))
|
||||
return 1;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline void set_file_hugepages(struct file *file)
|
||||
|
@@ -82,6 +82,15 @@ struct icmphdr {
|
||||
} un;
|
||||
};
|
||||
|
||||
#ifdef __KERNEL__
|
||||
#include <linux/skbuff.h>
|
||||
|
||||
static inline struct icmphdr *icmp_hdr(const struct sk_buff *skb)
|
||||
{
|
||||
return (struct icmphdr *)skb_transport_header(skb);
|
||||
}
|
||||
#endif
|
||||
|
||||
/*
|
||||
* constants for (set|get)sockopt
|
||||
*/
|
||||
|
@@ -75,6 +75,15 @@ struct icmp6hdr {
|
||||
#define icmp6_router_pref icmp6_dataun.u_nd_ra.router_pref
|
||||
};
|
||||
|
||||
#ifdef __KERNEL__
|
||||
#include <linux/skbuff.h>
|
||||
|
||||
static inline struct icmp6hdr *icmp6_hdr(const struct sk_buff *skb)
|
||||
{
|
||||
return (struct icmp6hdr *)skb_transport_header(skb);
|
||||
}
|
||||
#endif
|
||||
|
||||
#define ICMPV6_ROUTER_PREF_LOW 0x3
|
||||
#define ICMPV6_ROUTER_PREF_MEDIUM 0x0
|
||||
#define ICMPV6_ROUTER_PREF_HIGH 0x1
|
||||
|
@@ -615,6 +615,7 @@ typedef struct ide_drive_s {
|
||||
u8 init_speed; /* transfer rate set at boot */
|
||||
u8 pio_speed; /* unused by core, used by some drivers for fallback from DMA */
|
||||
u8 current_speed; /* current transfer rate set */
|
||||
u8 desired_speed; /* desired transfer rate set */
|
||||
u8 dn; /* now wide spread use */
|
||||
u8 wcache; /* status of write cache */
|
||||
u8 acoustic; /* acoustic management */
|
||||
@@ -636,7 +637,6 @@ typedef struct ide_drive_s {
|
||||
unsigned int bios_cyl; /* BIOS/fdisk/LILO number of cyls */
|
||||
unsigned int cyl; /* "real" number of cyls */
|
||||
unsigned int drive_data; /* use by tuneproc/selectproc */
|
||||
unsigned int usage; /* current "open()" count for drive */
|
||||
unsigned int failures; /* current failure count */
|
||||
unsigned int max_failures; /* maximum allowed failure count */
|
||||
u64 probed_capacity;/* initial reported media capacity (ide-cd only currently) */
|
||||
@@ -736,23 +736,22 @@ typedef struct hwif_s {
|
||||
int (*ide_dma_end)(ide_drive_t *drive);
|
||||
int (*ide_dma_check)(ide_drive_t *drive);
|
||||
int (*ide_dma_on)(ide_drive_t *drive);
|
||||
int (*ide_dma_off_quietly)(ide_drive_t *drive);
|
||||
void (*dma_off_quietly)(ide_drive_t *drive);
|
||||
int (*ide_dma_test_irq)(ide_drive_t *drive);
|
||||
int (*ide_dma_host_on)(ide_drive_t *drive);
|
||||
int (*ide_dma_host_off)(ide_drive_t *drive);
|
||||
void (*ide_dma_clear_irq)(ide_drive_t *drive);
|
||||
void (*dma_host_on)(ide_drive_t *drive);
|
||||
void (*dma_host_off)(ide_drive_t *drive);
|
||||
int (*ide_dma_lostirq)(ide_drive_t *drive);
|
||||
int (*ide_dma_timeout)(ide_drive_t *drive);
|
||||
|
||||
void (*OUTB)(u8 addr, unsigned long port);
|
||||
void (*OUTBSYNC)(ide_drive_t *drive, u8 addr, unsigned long port);
|
||||
void (*OUTW)(u16 addr, unsigned long port);
|
||||
void (*OUTL)(u32 addr, unsigned long port);
|
||||
void (*OUTSW)(unsigned long port, void *addr, u32 count);
|
||||
void (*OUTSL)(unsigned long port, void *addr, u32 count);
|
||||
|
||||
u8 (*INB)(unsigned long port);
|
||||
u16 (*INW)(unsigned long port);
|
||||
u32 (*INL)(unsigned long port);
|
||||
void (*INSW)(unsigned long port, void *addr, u32 count);
|
||||
void (*INSL)(unsigned long port, void *addr, u32 count);
|
||||
|
||||
@@ -774,7 +773,6 @@ typedef struct hwif_s {
|
||||
unsigned int cursg;
|
||||
unsigned int cursg_ofs;
|
||||
|
||||
int mmio; /* hosts iomio (0) or custom (2) select */
|
||||
int rqsize; /* max sectors per request */
|
||||
int irq; /* our irq number */
|
||||
|
||||
@@ -802,12 +800,11 @@ typedef struct hwif_s {
|
||||
unsigned udma_four : 1; /* 1=ATA-66 capable, 0=default */
|
||||
unsigned no_lba48 : 1; /* 1 = cannot do LBA48 */
|
||||
unsigned no_lba48_dma : 1; /* 1 = cannot do LBA48 DMA */
|
||||
unsigned no_dsc : 1; /* 0 default, 1 dsc_overlap disabled */
|
||||
unsigned auto_poll : 1; /* supports nop auto-poll */
|
||||
unsigned sg_mapped : 1; /* sg_table and sg_nents are ready */
|
||||
unsigned no_io_32bit : 1; /* 1 = can not do 32-bit IO ops */
|
||||
unsigned err_stops_fifo : 1; /* 1=data FIFO is cleared by an error */
|
||||
unsigned atapi_irq_bogon : 1; /* Generates spurious DMA interrupts in PIO mode */
|
||||
unsigned mmio : 1; /* host uses MMIO */
|
||||
|
||||
struct device gendev;
|
||||
struct completion gendev_rel_comp; /* To deal with device release() */
|
||||
@@ -864,6 +861,8 @@ typedef struct hwgroup_s {
|
||||
int (*expiry)(ide_drive_t *);
|
||||
/* ide_system_bus_speed */
|
||||
int pio_clock;
|
||||
int req_gen;
|
||||
int req_gen_timer;
|
||||
|
||||
unsigned char cmd_buf[4];
|
||||
} ide_hwgroup_t;
|
||||
@@ -1280,8 +1279,9 @@ int ide_in_drive_list(struct hd_driveid *, const struct drive_list_entry *);
|
||||
int __ide_dma_bad_drive(ide_drive_t *);
|
||||
int __ide_dma_good_drive(ide_drive_t *);
|
||||
int ide_use_dma(ide_drive_t *);
|
||||
int __ide_dma_off(ide_drive_t *);
|
||||
void ide_dma_off(ide_drive_t *);
|
||||
void ide_dma_verbose(ide_drive_t *);
|
||||
int ide_set_dma(ide_drive_t *);
|
||||
ide_startstop_t ide_dma_intr(ide_drive_t *);
|
||||
|
||||
#ifdef CONFIG_BLK_DEV_IDEDMA_PCI
|
||||
@@ -1291,9 +1291,9 @@ extern void ide_destroy_dmatable(ide_drive_t *);
|
||||
extern int ide_release_dma(ide_hwif_t *);
|
||||
extern void ide_setup_dma(ide_hwif_t *, unsigned long, unsigned int);
|
||||
|
||||
extern int __ide_dma_host_off(ide_drive_t *);
|
||||
extern int __ide_dma_off_quietly(ide_drive_t *);
|
||||
extern int __ide_dma_host_on(ide_drive_t *);
|
||||
void ide_dma_host_off(ide_drive_t *);
|
||||
void ide_dma_off_quietly(ide_drive_t *);
|
||||
void ide_dma_host_on(ide_drive_t *);
|
||||
extern int __ide_dma_on(ide_drive_t *);
|
||||
extern int __ide_dma_check(ide_drive_t *);
|
||||
extern int ide_dma_setup(ide_drive_t *);
|
||||
@@ -1305,8 +1305,9 @@ extern int __ide_dma_timeout(ide_drive_t *);
|
||||
|
||||
#else
|
||||
static inline int ide_use_dma(ide_drive_t *drive) { return 0; }
|
||||
static inline int __ide_dma_off(ide_drive_t *drive) { return 0; }
|
||||
static inline void ide_dma_off(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; }
|
||||
#endif /* CONFIG_BLK_DEV_IDEDMA */
|
||||
|
||||
#ifndef CONFIG_BLK_DEV_IDEDMA_PCI
|
||||
@@ -1354,20 +1355,21 @@ extern int ide_dma_enable(ide_drive_t *drive);
|
||||
extern char *ide_xfer_verbose(u8 xfer_rate);
|
||||
extern void ide_toggle_bounce(ide_drive_t *drive, int on);
|
||||
extern int ide_set_xfer_rate(ide_drive_t *drive, u8 rate);
|
||||
int ide_use_fast_pio(ide_drive_t *);
|
||||
|
||||
u8 ide_dump_status(ide_drive_t *, const char *, u8);
|
||||
|
||||
typedef struct ide_pio_timings_s {
|
||||
int setup_time; /* Address setup (ns) minimum */
|
||||
int active_time; /* Active pulse (ns) minimum */
|
||||
int cycle_time; /* Cycle time (ns) minimum = (setup + active + recovery) */
|
||||
int cycle_time; /* Cycle time (ns) minimum = */
|
||||
/* active + recovery (+ setup for some chips) */
|
||||
} ide_pio_timings_t;
|
||||
|
||||
typedef struct ide_pio_data_s {
|
||||
u8 pio_mode;
|
||||
u8 use_iordy;
|
||||
u8 overridden;
|
||||
u8 blacklisted;
|
||||
unsigned int cycle_time;
|
||||
} ide_pio_data_t;
|
||||
|
||||
|
@@ -39,6 +39,7 @@ enum
|
||||
#define IFA_F_TEMPORARY IFA_F_SECONDARY
|
||||
|
||||
#define IFA_F_NODAD 0x02
|
||||
#define IFA_F_OPTIMISTIC 0x04
|
||||
#define IFA_F_HOMEADDRESS 0x10
|
||||
#define IFA_F_DEPRECATED 0x20
|
||||
#define IFA_F_TENTATIVE 0x40
|
||||
|
@@ -148,4 +148,13 @@ struct arphdr
|
||||
|
||||
};
|
||||
|
||||
#ifdef __KERNEL__
|
||||
#include <linux/skbuff.h>
|
||||
|
||||
static inline struct arphdr *arp_hdr(const struct sk_buff *skb)
|
||||
{
|
||||
return (struct arphdr *)skb_network_header(skb);
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* _LINUX_IF_ARP_H */
|
||||
|
@@ -105,7 +105,8 @@ struct __fdb_entry
|
||||
#include <linux/netdevice.h>
|
||||
|
||||
extern void brioctl_set(int (*ioctl_hook)(unsigned int, void __user *));
|
||||
extern int (*br_handle_frame_hook)(struct net_bridge_port *p, struct sk_buff **pskb);
|
||||
extern struct sk_buff *(*br_handle_frame_hook)(struct net_bridge_port *p,
|
||||
struct sk_buff *skb);
|
||||
extern int (*br_should_route_hook)(struct sk_buff **pskb);
|
||||
|
||||
#endif
|
||||
|
@@ -61,6 +61,7 @@
|
||||
#define ETH_P_8021Q 0x8100 /* 802.1Q VLAN Extended Header */
|
||||
#define ETH_P_IPX 0x8137 /* IPX over DIX */
|
||||
#define ETH_P_IPV6 0x86DD /* IPv6 over bluebook */
|
||||
#define ETH_P_PAUSE 0x8808 /* IEEE Pause frames. See 802.3 31B */
|
||||
#define ETH_P_SLOW 0x8809 /* Slow Protocol. See 802.3ad 43B */
|
||||
#define ETH_P_WCCP 0x883E /* Web-cache coordination protocol
|
||||
* defined in draft-wilson-wrec-wccp-v2-00.txt */
|
||||
@@ -112,7 +113,7 @@ struct ethhdr {
|
||||
|
||||
static inline struct ethhdr *eth_hdr(const struct sk_buff *skb)
|
||||
{
|
||||
return (struct ethhdr *)skb->mac.raw;
|
||||
return (struct ethhdr *)skb_mac_header(skb);
|
||||
}
|
||||
|
||||
#ifdef CONFIG_SYSCTL
|
||||
|
@@ -126,6 +126,7 @@ enum
|
||||
IFLA_INET6_STATS, /* statistics */
|
||||
IFLA_INET6_MCAST, /* MC things. What of them? */
|
||||
IFLA_INET6_CACHEINFO, /* time values and max reasm size */
|
||||
IFLA_INET6_ICMP6STATS, /* statistics (icmpv6) */
|
||||
__IFLA_INET6_MAX
|
||||
};
|
||||
|
||||
|
@@ -42,6 +42,7 @@ struct sockaddr_ll
|
||||
#define PACKET_STATISTICS 6
|
||||
#define PACKET_COPY_THRESH 7
|
||||
#define PACKET_AUXDATA 8
|
||||
#define PACKET_ORIGDEV 9
|
||||
|
||||
struct tpacket_stats
|
||||
{
|
||||
|
@@ -111,9 +111,20 @@ struct pppoe_hdr {
|
||||
struct pppoe_tag tag[0];
|
||||
} __attribute__ ((packed));
|
||||
|
||||
/* Length of entire PPPoE + PPP header */
|
||||
#define PPPOE_SES_HLEN 8
|
||||
|
||||
#ifdef __KERNEL__
|
||||
#include <linux/skbuff.h>
|
||||
|
||||
static inline struct pppoe_hdr *pppoe_hdr(const struct sk_buff *skb)
|
||||
{
|
||||
return (struct pppoe_hdr *)skb_network_header(skb);
|
||||
}
|
||||
|
||||
struct pppoe_opt {
|
||||
struct net_device *dev; /* device associated with socket*/
|
||||
int ifindex; /* ifindex of device associated with socket */
|
||||
struct pppoe_addr pa; /* what this socket is bound to*/
|
||||
struct sockaddr_pppox relay; /* what socket data will be
|
||||
relayed to (PPPoE relaying) */
|
||||
@@ -132,6 +143,7 @@ struct pppox_sock {
|
||||
unsigned short num;
|
||||
};
|
||||
#define pppoe_dev proto.pppoe.dev
|
||||
#define pppoe_ifindex proto.pppoe.ifindex
|
||||
#define pppoe_pa proto.pppoe.pa
|
||||
#define pppoe_relay proto.pppoe.relay
|
||||
|
||||
|
@@ -47,7 +47,7 @@ struct trh_hdr {
|
||||
|
||||
static inline struct trh_hdr *tr_hdr(const struct sk_buff *skb)
|
||||
{
|
||||
return (struct trh_hdr *)skb->mac.raw;
|
||||
return (struct trh_hdr *)skb_mac_header(skb);
|
||||
}
|
||||
#ifdef CONFIG_SYSCTL
|
||||
extern struct ctl_table tr_table[];
|
||||
|
@@ -51,7 +51,7 @@ struct vlan_ethhdr {
|
||||
|
||||
static inline struct vlan_ethhdr *vlan_eth_hdr(const struct sk_buff *skb)
|
||||
{
|
||||
return (struct vlan_ethhdr *)skb->mac.raw;
|
||||
return (struct vlan_ethhdr *)skb_mac_header(skb);
|
||||
}
|
||||
|
||||
struct vlan_hdr {
|
||||
@@ -70,15 +70,34 @@ extern void vlan_ioctl_set(int (*hook)(void __user *));
|
||||
* depends on completely exhausting the VLAN identifier space. Thus
|
||||
* it gives constant time look-up, but in many cases it wastes memory.
|
||||
*/
|
||||
#define VLAN_GROUP_ARRAY_LEN 4096
|
||||
#define VLAN_GROUP_ARRAY_LEN 4096
|
||||
#define VLAN_GROUP_ARRAY_SPLIT_PARTS 8
|
||||
#define VLAN_GROUP_ARRAY_PART_LEN (VLAN_GROUP_ARRAY_LEN/VLAN_GROUP_ARRAY_SPLIT_PARTS)
|
||||
|
||||
struct vlan_group {
|
||||
int real_dev_ifindex; /* The ifindex of the ethernet(like) device the vlan is attached to. */
|
||||
struct hlist_node hlist; /* linked list */
|
||||
struct net_device *vlan_devices[VLAN_GROUP_ARRAY_LEN];
|
||||
struct net_device **vlan_devices_arrays[VLAN_GROUP_ARRAY_SPLIT_PARTS];
|
||||
struct rcu_head rcu;
|
||||
};
|
||||
|
||||
static inline struct net_device *vlan_group_get_device(struct vlan_group *vg, int vlan_id)
|
||||
{
|
||||
struct net_device **array;
|
||||
array = vg->vlan_devices_arrays[vlan_id / VLAN_GROUP_ARRAY_PART_LEN];
|
||||
return array[vlan_id % VLAN_GROUP_ARRAY_PART_LEN];
|
||||
}
|
||||
|
||||
static inline void vlan_group_set_device(struct vlan_group *vg, int vlan_id,
|
||||
struct net_device *dev)
|
||||
{
|
||||
struct net_device **array;
|
||||
if (!vg)
|
||||
return;
|
||||
array = vg->vlan_devices_arrays[vlan_id / VLAN_GROUP_ARRAY_PART_LEN];
|
||||
array[vlan_id % VLAN_GROUP_ARRAY_PART_LEN] = dev;
|
||||
}
|
||||
|
||||
struct vlan_priority_tci_mapping {
|
||||
unsigned long priority;
|
||||
unsigned short vlan_qos; /* This should be shifted when first set, so we only do it
|
||||
@@ -160,7 +179,7 @@ static inline int __vlan_hwaccel_rx(struct sk_buff *skb,
|
||||
return NET_RX_DROP;
|
||||
}
|
||||
|
||||
skb->dev = grp->vlan_devices[vlan_tag & VLAN_VID_MASK];
|
||||
skb->dev = vlan_group_get_device(grp, vlan_tag & VLAN_VID_MASK);
|
||||
if (skb->dev == NULL) {
|
||||
dev_kfree_skb_any(skb);
|
||||
|
||||
@@ -256,8 +275,8 @@ static inline struct sk_buff *__vlan_put_tag(struct sk_buff *skb, unsigned short
|
||||
veth->h_vlan_TCI = htons(tag);
|
||||
|
||||
skb->protocol = __constant_htons(ETH_P_8021Q);
|
||||
skb->mac.raw -= VLAN_HLEN;
|
||||
skb->nh.raw -= VLAN_HLEN;
|
||||
skb->mac_header -= VLAN_HLEN;
|
||||
skb->network_header -= VLAN_HLEN;
|
||||
|
||||
return skb;
|
||||
}
|
||||
|
@@ -1,58 +0,0 @@
|
||||
/*****************************************************************************
|
||||
* if_wanipe_common.h Sangoma Driver/Socket common area definitions.
|
||||
*
|
||||
* Author: Nenad Corbic <ncorbic@sangoma.com>
|
||||
*
|
||||
* Copyright: (c) 2000 Sangoma Technologies Inc.
|
||||
*
|
||||
* 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; either version
|
||||
* 2 of the License, or (at your option) any later version.
|
||||
* ============================================================================
|
||||
* Jan 13, 2000 Nenad Corbic Initial version
|
||||
*****************************************************************************/
|
||||
|
||||
|
||||
#ifndef _WANPIPE_SOCK_DRIVER_COMMON_H
|
||||
#define _WANPIPE_SOCK_DRIVER_COMMON_H
|
||||
|
||||
typedef struct {
|
||||
struct net_device *slave;
|
||||
atomic_t packet_sent;
|
||||
atomic_t receive_block;
|
||||
atomic_t command;
|
||||
atomic_t disconnect;
|
||||
atomic_t driver_busy;
|
||||
long common_critical;
|
||||
struct timer_list *tx_timer;
|
||||
struct sock *sk; /* Wanpipe Sock bind's here */
|
||||
int (*func)(struct sk_buff *skb, struct net_device *dev,
|
||||
struct sock *sk);
|
||||
|
||||
struct work_struct wanpipe_work; /* deferred keventd work */
|
||||
unsigned char rw_bind; /* Sock bind state */
|
||||
unsigned char usedby;
|
||||
unsigned char state;
|
||||
unsigned char svc;
|
||||
unsigned short lcn;
|
||||
void *mbox;
|
||||
} wanpipe_common_t;
|
||||
|
||||
|
||||
enum {
|
||||
WANSOCK_UNCONFIGURED, /* link/channel is not configured */
|
||||
WANSOCK_DISCONNECTED, /* link/channel is disconnected */
|
||||
WANSOCK_CONNECTING, /* connection is in progress */
|
||||
WANSOCK_CONNECTED, /* link/channel is operational */
|
||||
WANSOCK_LIMIT, /* for verification only */
|
||||
WANSOCK_DUALPORT, /* for Dual Port cards */
|
||||
WANSOCK_DISCONNECTING,
|
||||
WANSOCK_BINDED,
|
||||
WANSOCK_BIND_LISTEN,
|
||||
WANSOCK_LISTEN
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
|
@@ -80,6 +80,27 @@ struct igmpv3_query {
|
||||
__be32 srcs[0];
|
||||
};
|
||||
|
||||
#ifdef __KERNEL__
|
||||
#include <linux/skbuff.h>
|
||||
|
||||
static inline struct igmphdr *igmp_hdr(const struct sk_buff *skb)
|
||||
{
|
||||
return (struct igmphdr *)skb_transport_header(skb);
|
||||
}
|
||||
|
||||
static inline struct igmpv3_report *
|
||||
igmpv3_report_hdr(const struct sk_buff *skb)
|
||||
{
|
||||
return (struct igmpv3_report *)skb_transport_header(skb);
|
||||
}
|
||||
|
||||
static inline struct igmpv3_query *
|
||||
igmpv3_query_hdr(const struct sk_buff *skb)
|
||||
{
|
||||
return (struct igmpv3_query *)skb_transport_header(skb);
|
||||
}
|
||||
#endif
|
||||
|
||||
#define IGMP_HOST_MEMBERSHIP_QUERY 0x11 /* From RFC1112 */
|
||||
#define IGMP_HOST_MEMBERSHIP_REPORT 0x12 /* Ditto */
|
||||
#define IGMP_DVMRP 0x13 /* DVMRP routing */
|
||||
@@ -218,5 +239,7 @@ extern void ip_mc_up(struct in_device *);
|
||||
extern void ip_mc_down(struct in_device *);
|
||||
extern void ip_mc_dec_group(struct in_device *in_dev, __be32 addr);
|
||||
extern void ip_mc_inc_group(struct in_device *in_dev, __be32 addr);
|
||||
extern void ip_mc_rejoin_group(struct ip_mc_list *im);
|
||||
|
||||
#endif
|
||||
#endif
|
||||
|
@@ -83,6 +83,7 @@ struct in_addr {
|
||||
#define IP_PMTUDISC_DONT 0 /* Never send DF frames */
|
||||
#define IP_PMTUDISC_WANT 1 /* Use per route hints */
|
||||
#define IP_PMTUDISC_DO 2 /* Always DF */
|
||||
#define IP_PMTUDISC_PROBE 3 /* Ignore dst pmtu */
|
||||
|
||||
#define IP_MULTICAST_IF 32
|
||||
#define IP_MULTICAST_TTL 33
|
||||
|
@@ -44,10 +44,8 @@ struct in6_addr
|
||||
* NOTE: Be aware the IN6ADDR_* constants and in6addr_* externals are defined
|
||||
* in network byte order, not in host byte order as are the IPv4 equivalents
|
||||
*/
|
||||
#if 0
|
||||
extern const struct in6_addr in6addr_any;
|
||||
#define IN6ADDR_ANY_INIT { { { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 } } }
|
||||
#endif
|
||||
extern const struct in6_addr in6addr_loopback;
|
||||
#define IN6ADDR_LOOPBACK_INIT { { { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1 } } }
|
||||
|
||||
@@ -179,6 +177,7 @@ struct in6_flowlabel_req
|
||||
#define IPV6_PMTUDISC_DONT 0
|
||||
#define IPV6_PMTUDISC_WANT 1
|
||||
#define IPV6_PMTUDISC_DO 2
|
||||
#define IPV6_PMTUDISC_PROBE 3
|
||||
|
||||
/* Flowlabel */
|
||||
#define IPV6_FLOWLABEL_MGR 32
|
||||
|
@@ -423,4 +423,13 @@ extern int probe_irq_off(unsigned long); /* returns 0 or negative on failure */
|
||||
extern unsigned int probe_irq_mask(unsigned long); /* returns mask of ISA interrupts */
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_PROC_FS
|
||||
/* Initialize /proc/irq/ */
|
||||
extern void init_irq_proc(void);
|
||||
#else
|
||||
static inline void init_irq_proc(void)
|
||||
{
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
@@ -33,9 +33,22 @@ int ioremap_page_range(unsigned long addr, unsigned long end,
|
||||
/*
|
||||
* Managed iomap interface
|
||||
*/
|
||||
#ifdef CONFIG_HAS_IOPORT
|
||||
void __iomem * devm_ioport_map(struct device *dev, unsigned long port,
|
||||
unsigned int nr);
|
||||
void devm_ioport_unmap(struct device *dev, void __iomem *addr);
|
||||
#else
|
||||
static inline void __iomem *devm_ioport_map(struct device *dev,
|
||||
unsigned long port,
|
||||
unsigned int nr)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static inline void devm_ioport_unmap(struct device *dev, void __iomem *addr)
|
||||
{
|
||||
}
|
||||
#endif
|
||||
|
||||
void __iomem * devm_ioremap(struct device *dev, unsigned long offset,
|
||||
unsigned long size);
|
||||
|
@@ -99,7 +99,6 @@ extern struct resource ioport_resource;
|
||||
extern struct resource iomem_resource;
|
||||
|
||||
extern int request_resource(struct resource *root, struct resource *new);
|
||||
extern struct resource * ____request_resource(struct resource *root, struct resource *new);
|
||||
extern int release_resource(struct resource *new);
|
||||
extern int insert_resource(struct resource *parent, struct resource *new);
|
||||
extern int allocate_resource(struct resource *root, struct resource *new,
|
||||
|
@@ -104,6 +104,20 @@ struct iphdr {
|
||||
/*The options start here. */
|
||||
};
|
||||
|
||||
#ifdef __KERNEL__
|
||||
#include <linux/skbuff.h>
|
||||
|
||||
static inline struct iphdr *ip_hdr(const struct sk_buff *skb)
|
||||
{
|
||||
return (struct iphdr *)skb_network_header(skb);
|
||||
}
|
||||
|
||||
static inline struct iphdr *ipip_hdr(const struct sk_buff *skb)
|
||||
{
|
||||
return (struct iphdr *)skb_transport_header(skb);
|
||||
}
|
||||
#endif
|
||||
|
||||
struct ip_auth_hdr {
|
||||
__u8 nexthdr;
|
||||
__u8 hdrlen; /* This one is measured in 32 bit units! */
|
||||
|
@@ -92,19 +92,16 @@ extern struct ipc_namespace init_ipc_ns;
|
||||
|
||||
#ifdef CONFIG_SYSVIPC
|
||||
#define INIT_IPC_NS(ns) .ns = &init_ipc_ns,
|
||||
extern int copy_ipcs(unsigned long flags, struct task_struct *tsk);
|
||||
#else
|
||||
#define INIT_IPC_NS(ns)
|
||||
static inline int copy_ipcs(unsigned long flags, struct task_struct *tsk)
|
||||
{ return 0; }
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_IPC_NS
|
||||
extern void free_ipc_ns(struct kref *kref);
|
||||
extern int copy_ipcs(unsigned long flags, struct task_struct *tsk);
|
||||
extern int unshare_ipcs(unsigned long flags, struct ipc_namespace **ns);
|
||||
#else
|
||||
static inline int copy_ipcs(unsigned long flags, struct task_struct *tsk)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
static inline struct ipc_namespace *get_ipc_ns(struct ipc_namespace *ns)
|
||||
|
@@ -177,6 +177,10 @@ struct ipv6_devconf {
|
||||
#endif
|
||||
#endif
|
||||
__s32 proxy_ndp;
|
||||
__s32 accept_source_route;
|
||||
#ifdef CONFIG_IPV6_OPTIMISTIC_DAD
|
||||
__s32 optimistic_dad;
|
||||
#endif
|
||||
void *sysctl;
|
||||
};
|
||||
|
||||
@@ -205,6 +209,9 @@ enum {
|
||||
DEVCONF_RTR_PROBE_INTERVAL,
|
||||
DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN,
|
||||
DEVCONF_PROXY_NDP,
|
||||
__DEVCONF_OPTIMISTIC_DAD,
|
||||
DEVCONF_ACCEPT_SOURCE_ROUTE,
|
||||
DEVCONF_OPTIMISTIC_DAD,
|
||||
DEVCONF_MAX
|
||||
};
|
||||
|
||||
@@ -216,6 +223,16 @@ enum {
|
||||
#include <net/if_inet6.h> /* struct ipv6_mc_socklist */
|
||||
#include <net/inet_sock.h>
|
||||
|
||||
static inline struct ipv6hdr *ipv6_hdr(const struct sk_buff *skb)
|
||||
{
|
||||
return (struct ipv6hdr *)skb_network_header(skb);
|
||||
}
|
||||
|
||||
static inline struct ipv6hdr *ipipv6_hdr(const struct sk_buff *skb)
|
||||
{
|
||||
return (struct ipv6hdr *)skb_transport_header(skb);
|
||||
}
|
||||
|
||||
/*
|
||||
This structure contains results of exthdrs parsing
|
||||
as offsets from skb->nh.
|
||||
|
@@ -18,6 +18,7 @@
|
||||
#include <linux/spinlock.h>
|
||||
#include <linux/cpumask.h>
|
||||
#include <linux/irqreturn.h>
|
||||
#include <linux/errno.h>
|
||||
|
||||
#include <asm/irq.h>
|
||||
#include <asm/ptrace.h>
|
||||
@@ -199,17 +200,6 @@ extern int setup_irq(unsigned int irq, struct irqaction *new);
|
||||
# define handle_dynamic_tick(a) do { } while (0)
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_SMP
|
||||
static inline void set_native_irq_info(int irq, cpumask_t mask)
|
||||
{
|
||||
irq_desc[irq].affinity = mask;
|
||||
}
|
||||
#else
|
||||
static inline void set_native_irq_info(int irq, cpumask_t mask)
|
||||
{
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_SMP
|
||||
|
||||
#if defined(CONFIG_GENERIC_PENDING_IRQ) || defined(CONFIG_IRQBALANCE)
|
||||
@@ -328,9 +318,6 @@ extern void note_interrupt(unsigned int irq, struct irq_desc *desc,
|
||||
/* Resending of interrupts :*/
|
||||
void check_irq_resend(struct irq_desc *desc, unsigned int irq);
|
||||
|
||||
/* Initialize /proc/irq/ */
|
||||
extern void init_irq_proc(void);
|
||||
|
||||
/* Enable/disable irq debugging output: */
|
||||
extern int noirqdebug_setup(char *str);
|
||||
|
||||
|
@@ -174,9 +174,26 @@ char *capi_info2str(__u16 reason);
|
||||
/*
|
||||
* Debugging / Tracing functions
|
||||
*/
|
||||
|
||||
char *capi_cmd2str(__u8 cmd, __u8 subcmd);
|
||||
char *capi_cmsg2str(_cmsg * cmsg);
|
||||
char *capi_message2str(__u8 * msg);
|
||||
|
||||
typedef struct {
|
||||
u_char *buf;
|
||||
u_char *p;
|
||||
size_t size;
|
||||
size_t pos;
|
||||
} _cdebbuf;
|
||||
|
||||
#define CDEBUG_SIZE 1024
|
||||
#define CDEBUG_GSIZE 4096
|
||||
|
||||
_cdebbuf *cdebbuf_alloc(void);
|
||||
void cdebbuf_free(_cdebbuf *cdb);
|
||||
int cdebug_init(void);
|
||||
void cdebug_exit(void);
|
||||
|
||||
_cdebbuf *capi_cmsg2str(_cmsg *cmsg);
|
||||
_cdebbuf *capi_message2str(__u8 *msg);
|
||||
|
||||
/*-----------------------------------------------------------------------*/
|
||||
|
||||
|
@@ -1,224 +0,0 @@
|
||||
/*
|
||||
* JFFS -- Journalling Flash File System, Linux implementation.
|
||||
*
|
||||
* Copyright (C) 1999, 2000 Axis Communications AB.
|
||||
*
|
||||
* Created by Finn Hakansson <finn@axis.com>.
|
||||
*
|
||||
* This 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; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* $Id: jffs.h,v 1.20 2001/09/18 21:33:37 dwmw2 Exp $
|
||||
*
|
||||
* Ported to Linux 2.3.x and MTD:
|
||||
* Copyright (C) 2000 Alexander Larsson (alex@cendio.se), Cendio Systems AB
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef __LINUX_JFFS_H__
|
||||
#define __LINUX_JFFS_H__
|
||||
|
||||
#include <linux/types.h>
|
||||
#include <linux/completion.h>
|
||||
|
||||
#define JFFS_VERSION_STRING "1.0"
|
||||
|
||||
/* This is a magic number that is used as an identification number for
|
||||
this file system. It is written to the super_block structure. */
|
||||
#define JFFS_MAGIC_SB_BITMASK 0x07c0 /* 1984 */
|
||||
|
||||
/* This is a magic number that every on-flash raw inode begins with. */
|
||||
#define JFFS_MAGIC_BITMASK 0x34383931 /* "1984" */
|
||||
|
||||
/* These two bitmasks are the valid ones for the flash memories we have
|
||||
for the moment. */
|
||||
#define JFFS_EMPTY_BITMASK 0xffffffff
|
||||
#define JFFS_DIRTY_BITMASK 0x00000000
|
||||
|
||||
/* This is the inode number of the root node. */
|
||||
#define JFFS_MIN_INO 1
|
||||
|
||||
/* How many slots in the file hash table should we have? */
|
||||
#define JFFS_HASH_SIZE 40
|
||||
|
||||
/* Don't use more than 254 bytes as the maximum allowed length of a file's
|
||||
name due to errors that could occur during the scanning of the flash
|
||||
memory. In fact, a name length of 255 or 0xff, could be the result of
|
||||
an uncompleted write. For instance, if a raw inode is written to the
|
||||
flash memory and there is a power lossage just before the length of
|
||||
the name is written, the length 255 would be interpreted as an illegal
|
||||
value. */
|
||||
#define JFFS_MAX_NAME_LEN 254
|
||||
|
||||
/* Commands for ioctl(). */
|
||||
#define JFFS_IOCTL_MAGIC 't'
|
||||
#define JFFS_PRINT_HASH _IO(JFFS_IOCTL_MAGIC, 90)
|
||||
#define JFFS_PRINT_TREE _IO(JFFS_IOCTL_MAGIC, 91)
|
||||
#define JFFS_GET_STATUS _IO(JFFS_IOCTL_MAGIC, 92)
|
||||
|
||||
/* XXX: This is something that we should try to get rid of in the future. */
|
||||
#define JFFS_MODIFY_INODE 0x01
|
||||
#define JFFS_MODIFY_NAME 0x02
|
||||
#define JFFS_MODIFY_DATA 0x04
|
||||
#define JFFS_MODIFY_EXIST 0x08
|
||||
|
||||
struct jffs_control;
|
||||
|
||||
/* The JFFS raw inode structure: Used for storage on physical media. */
|
||||
/* Perhaps the uid, gid, atime, mtime and ctime members should have
|
||||
more space due to future changes in the Linux kernel. Anyhow, since
|
||||
a user of this filesystem probably have to fix a large number of
|
||||
other things, we have decided to not be forward compatible. */
|
||||
struct jffs_raw_inode
|
||||
{
|
||||
__u32 magic; /* A constant magic number. */
|
||||
__u32 ino; /* Inode number. */
|
||||
__u32 pino; /* Parent's inode number. */
|
||||
__u32 version; /* Version number. */
|
||||
__u32 mode; /* The file's type or mode. */
|
||||
__u16 uid; /* The file's owner. */
|
||||
__u16 gid; /* The file's group. */
|
||||
__u32 atime; /* Last access time. */
|
||||
__u32 mtime; /* Last modification time. */
|
||||
__u32 ctime; /* Creation time. */
|
||||
__u32 offset; /* Where to begin to write. */
|
||||
__u32 dsize; /* Size of the node's data. */
|
||||
__u32 rsize; /* How much are going to be replaced? */
|
||||
__u8 nsize; /* Name length. */
|
||||
__u8 nlink; /* Number of links. */
|
||||
__u8 spare : 6; /* For future use. */
|
||||
__u8 rename : 1; /* Rename to a name of an already existing file? */
|
||||
__u8 deleted : 1; /* Has this file been deleted? */
|
||||
__u8 accurate; /* The inode is obsolete if accurate == 0. */
|
||||
__u32 dchksum; /* Checksum for the data. */
|
||||
__u16 nchksum; /* Checksum for the name. */
|
||||
__u16 chksum; /* Checksum for the raw inode. */
|
||||
};
|
||||
|
||||
/* Define the offset of the accurate byte in struct jffs_raw_inode. */
|
||||
#define JFFS_RAW_INODE_ACCURATE_OFFSET (sizeof(struct jffs_raw_inode) \
|
||||
- 2 * sizeof(__u32) - sizeof(__u8))
|
||||
|
||||
/* Define the offset of the chksum member in struct jffs_raw_inode. */
|
||||
#define JFFS_RAW_INODE_CHKSUM_OFFSET (sizeof(struct jffs_raw_inode) \
|
||||
- sizeof(__u16))
|
||||
|
||||
/* Define the offset of the dchksum member in struct jffs_raw_inode. */
|
||||
#define JFFS_RAW_INODE_DCHKSUM_OFFSET (sizeof(struct jffs_raw_inode) \
|
||||
- sizeof(__u16) - sizeof(__u16) \
|
||||
- sizeof(__u32))
|
||||
|
||||
|
||||
/* The RAM representation of the node. The names of pointers to
|
||||
jffs_nodes are very often just called `n' in the source code. */
|
||||
struct jffs_node
|
||||
{
|
||||
__u32 ino; /* Inode number. */
|
||||
__u32 version; /* Version number. */
|
||||
__u32 data_offset; /* Logic location of the data to insert. */
|
||||
__u32 data_size; /* The amount of data this node inserts. */
|
||||
__u32 removed_size; /* The amount of data that this node removes. */
|
||||
__u32 fm_offset; /* Physical location of the data in the actual
|
||||
flash memory data chunk. */
|
||||
__u8 name_size; /* Size of the name. */
|
||||
struct jffs_fm *fm; /* Physical memory information. */
|
||||
struct jffs_node *version_prev;
|
||||
struct jffs_node *version_next;
|
||||
struct jffs_node *range_prev;
|
||||
struct jffs_node *range_next;
|
||||
};
|
||||
|
||||
|
||||
/* The RAM representation of a file (plain files, directories,
|
||||
links, etc.). Pointers to jffs_files are normally named `f'
|
||||
in the JFFS source code. */
|
||||
struct jffs_file
|
||||
{
|
||||
__u32 ino; /* Inode number. */
|
||||
__u32 pino; /* Parent's inode number. */
|
||||
__u32 mode; /* file_type, mode */
|
||||
__u16 uid; /* owner */
|
||||
__u16 gid; /* group */
|
||||
__u32 atime; /* Last access time. */
|
||||
__u32 mtime; /* Last modification time. */
|
||||
__u32 ctime; /* Creation time. */
|
||||
__u8 nsize; /* Name length. */
|
||||
__u8 nlink; /* Number of links. */
|
||||
__u8 deleted; /* Has this file been deleted? */
|
||||
char *name; /* The name of this file; NULL-terminated. */
|
||||
__u32 size; /* The total size of the file's data. */
|
||||
__u32 highest_version; /* The highest version number of this file. */
|
||||
struct jffs_control *c;
|
||||
struct jffs_file *parent; /* Reference to the parent directory. */
|
||||
struct jffs_file *children; /* Always NULL for plain files. */
|
||||
struct jffs_file *sibling_prev; /* Siblings in the same directory. */
|
||||
struct jffs_file *sibling_next;
|
||||
struct list_head hash; /* hash list. */
|
||||
struct jffs_node *range_head; /* The final data. */
|
||||
struct jffs_node *range_tail; /* The first data. */
|
||||
struct jffs_node *version_head; /* The youngest node. */
|
||||
struct jffs_node *version_tail; /* The oldest node. */
|
||||
};
|
||||
|
||||
|
||||
/* This is just a definition of a simple list used for keeping track of
|
||||
files deleted due to a rename. This list is only used during the
|
||||
mounting of the file system and only if there have been rename operations
|
||||
earlier. */
|
||||
struct jffs_delete_list
|
||||
{
|
||||
__u32 ino;
|
||||
struct jffs_delete_list *next;
|
||||
};
|
||||
|
||||
|
||||
/* A struct for the overall file system control. Pointers to
|
||||
jffs_control structs are named `c' in the source code. */
|
||||
struct jffs_control
|
||||
{
|
||||
struct super_block *sb; /* Reference to the VFS super block. */
|
||||
struct jffs_file *root; /* The root directory file. */
|
||||
struct list_head *hash; /* Hash table for finding files by ino. */
|
||||
struct jffs_fmcontrol *fmc; /* Flash memory control structure. */
|
||||
__u32 hash_len; /* The size of the hash table. */
|
||||
__u32 next_ino; /* Next inode number to use for new files. */
|
||||
__u16 building_fs; /* Is the file system being built right now? */
|
||||
struct jffs_delete_list *delete_list; /* Track deleted files. */
|
||||
pid_t thread_pid; /* GC thread's PID */
|
||||
struct task_struct *gc_task; /* GC task struct */
|
||||
struct completion gc_thread_comp; /* GC thread exit mutex */
|
||||
__u32 gc_minfree_threshold; /* GC trigger thresholds */
|
||||
__u32 gc_maxdirty_threshold;
|
||||
};
|
||||
|
||||
|
||||
/* Used to inform about flash status. */
|
||||
struct jffs_flash_status
|
||||
{
|
||||
__u32 size;
|
||||
__u32 used;
|
||||
__u32 dirty;
|
||||
__u32 begin;
|
||||
__u32 end;
|
||||
};
|
||||
|
||||
/* This stuff could be used for finding memory leaks. */
|
||||
#define JFFS_MEMORY_DEBUG 0
|
||||
|
||||
extern long no_jffs_node;
|
||||
#if defined(JFFS_MEMORY_DEBUG) && JFFS_MEMORY_DEBUG
|
||||
extern long no_jffs_control;
|
||||
extern long no_jffs_raw_inode;
|
||||
extern long no_jffs_node_ref;
|
||||
extern long no_jffs_fm;
|
||||
extern long no_jffs_fmcontrol;
|
||||
extern long no_hash;
|
||||
extern long no_name;
|
||||
#define DJM(x) x
|
||||
#else
|
||||
#define DJM(x)
|
||||
#endif
|
||||
|
||||
#endif /* __LINUX_JFFS_H__ */
|
@@ -84,7 +84,7 @@ static inline u32 jhash(const void *key, u32 length, u32 initval)
|
||||
/* A special optimized version that handles 1 or more of u32s.
|
||||
* The length parameter here is the number of u32s in the key.
|
||||
*/
|
||||
static inline u32 jhash2(u32 *k, u32 length, u32 initval)
|
||||
static inline u32 jhash2(const u32 *k, u32 length, u32 initval)
|
||||
{
|
||||
u32 a, b, c, len;
|
||||
|
||||
|
@@ -7,6 +7,8 @@
|
||||
|
||||
|
||||
#define KSYM_NAME_LEN 127
|
||||
#define KSYM_SYMBOL_LEN (sizeof("%s+%#lx/%#lx [%s]") + KSYM_NAME_LEN + \
|
||||
2*(BITS_PER_LONG*3/10) + MODULE_NAME_LEN + 1)
|
||||
|
||||
#ifdef CONFIG_KALLSYMS
|
||||
/* Lookup the address for a symbol. Returns 0 if not found. */
|
||||
@@ -22,7 +24,10 @@ const char *kallsyms_lookup(unsigned long addr,
|
||||
unsigned long *offset,
|
||||
char **modname, char *namebuf);
|
||||
|
||||
/* Replace "%s" in format with address, if found */
|
||||
/* Look up a kernel symbol and return it in a text buffer. */
|
||||
extern int sprint_symbol(char *buffer, unsigned long address);
|
||||
|
||||
/* Look up a kernel symbol and print it to the kernel messages. */
|
||||
extern void __print_symbol(const char *fmt, unsigned long address);
|
||||
|
||||
#else /* !CONFIG_KALLSYMS */
|
||||
@@ -47,6 +52,12 @@ static inline const char *kallsyms_lookup(unsigned long addr,
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static inline int sprint_symbol(char *buffer, unsigned long addr)
|
||||
{
|
||||
*buffer = '\0';
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Stupid that this does nothing, but I didn't create this mess. */
|
||||
#define __print_symbol(fmt, addr)
|
||||
#endif /*CONFIG_KALLSYMS*/
|
||||
|
@@ -75,7 +75,7 @@ extern int do_poke_blanked_console;
|
||||
|
||||
extern void (*kbd_ledfunc)(unsigned int led);
|
||||
|
||||
extern void set_console(int nr);
|
||||
extern int set_console(int nr);
|
||||
extern void schedule_console_callback(void);
|
||||
|
||||
static inline void set_leds(void)
|
||||
|
@@ -87,7 +87,6 @@ static inline unsigned sysv_minor(u32 dev)
|
||||
return dev & 0x3ffff;
|
||||
}
|
||||
|
||||
|
||||
#else /* __KERNEL__ */
|
||||
|
||||
/*
|
||||
|
@@ -121,6 +121,7 @@ extern int vscnprintf(char *buf, size_t size, const char *fmt, va_list args)
|
||||
__attribute__ ((format (printf, 3, 0)));
|
||||
extern char *kasprintf(gfp_t gfp, const char *fmt, ...)
|
||||
__attribute__ ((format (printf, 2, 3)));
|
||||
extern char *kvasprintf(gfp_t gfp, const char *fmt, va_list args);
|
||||
|
||||
extern int sscanf(const char *, const char *, ...)
|
||||
__attribute__ ((format (scanf, 2, 3)));
|
||||
|
@@ -125,6 +125,7 @@ extern struct kimage *kexec_crash_image;
|
||||
#define KEXEC_ARCH_PPC (20 << 16)
|
||||
#define KEXEC_ARCH_PPC64 (21 << 16)
|
||||
#define KEXEC_ARCH_IA_64 (50 << 16)
|
||||
#define KEXEC_ARCH_ARM (40 << 16)
|
||||
#define KEXEC_ARCH_S390 (22 << 16)
|
||||
#define KEXEC_ARCH_SH (42 << 16)
|
||||
#define KEXEC_ARCH_MIPS_LE (10 << 16)
|
||||
|
@@ -160,6 +160,8 @@ struct key {
|
||||
*/
|
||||
union {
|
||||
struct list_head link;
|
||||
unsigned long x[2];
|
||||
void *p[2];
|
||||
} type_data;
|
||||
|
||||
/* key data
|
||||
|
@@ -22,7 +22,6 @@
|
||||
#include <linux/sysfs.h>
|
||||
#include <linux/compiler.h>
|
||||
#include <linux/spinlock.h>
|
||||
#include <linux/rwsem.h>
|
||||
#include <linux/kref.h>
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/wait.h>
|
||||
@@ -43,11 +42,9 @@ enum kobject_action {
|
||||
KOBJ_ADD = (__force kobject_action_t) 0x01, /* exclusive to core */
|
||||
KOBJ_REMOVE = (__force kobject_action_t) 0x02, /* exclusive to core */
|
||||
KOBJ_CHANGE = (__force kobject_action_t) 0x03, /* device state change */
|
||||
KOBJ_MOUNT = (__force kobject_action_t) 0x04, /* mount event for block devices (broken) */
|
||||
KOBJ_UMOUNT = (__force kobject_action_t) 0x05, /* umount event for block devices (broken) */
|
||||
KOBJ_OFFLINE = (__force kobject_action_t) 0x06, /* device offline */
|
||||
KOBJ_ONLINE = (__force kobject_action_t) 0x07, /* device online */
|
||||
KOBJ_MOVE = (__force kobject_action_t) 0x08, /* device move */
|
||||
KOBJ_OFFLINE = (__force kobject_action_t) 0x04, /* device offline */
|
||||
KOBJ_ONLINE = (__force kobject_action_t) 0x05, /* device online */
|
||||
KOBJ_MOVE = (__force kobject_action_t) 0x06, /* device move */
|
||||
};
|
||||
|
||||
struct kobject {
|
||||
@@ -89,6 +86,8 @@ extern void kobject_unregister(struct kobject *);
|
||||
extern struct kobject * kobject_get(struct kobject *);
|
||||
extern void kobject_put(struct kobject *);
|
||||
|
||||
extern struct kobject *kobject_kset_add_dir(struct kset *kset,
|
||||
struct kobject *, const char *);
|
||||
extern struct kobject *kobject_add_dir(struct kobject *, const char *);
|
||||
|
||||
extern char * kobject_get_path(struct kobject *, gfp_t);
|
||||
@@ -175,7 +174,6 @@ extern struct kobject * kset_find_obj(struct kset *, const char *);
|
||||
|
||||
struct subsystem {
|
||||
struct kset kset;
|
||||
struct rw_semaphore rwsem;
|
||||
};
|
||||
|
||||
#define decl_subsys(_name,_type,_uevent_ops) \
|
||||
|
@@ -43,4 +43,7 @@ extern void ks0108_address(unsigned char address);
|
||||
/* Set the controller's current page (0..7) */
|
||||
extern void ks0108_page(unsigned char page);
|
||||
|
||||
/* Is the module inited? */
|
||||
extern unsigned char ks0108_isinited(void);
|
||||
|
||||
#endif /* _KS0108_H_ */
|
||||
|
@@ -57,7 +57,11 @@ typedef union {
|
||||
} ktime_t;
|
||||
|
||||
#define KTIME_MAX ((s64)~((u64)1 << 63))
|
||||
#define KTIME_SEC_MAX (KTIME_MAX / NSEC_PER_SEC)
|
||||
#if (BITS_PER_LONG == 64)
|
||||
# define KTIME_SEC_MAX (KTIME_MAX / NSEC_PER_SEC)
|
||||
#else
|
||||
# define KTIME_SEC_MAX LONG_MAX
|
||||
#endif
|
||||
|
||||
/*
|
||||
* ktime_t definitions when using the 64-bit scalar representation:
|
||||
@@ -255,6 +259,12 @@ static inline s64 ktime_to_ns(const ktime_t kt)
|
||||
|
||||
#endif
|
||||
|
||||
static inline s64 ktime_to_us(const ktime_t kt)
|
||||
{
|
||||
struct timeval tv = ktime_to_timeval(kt);
|
||||
return (s64) tv.tv_sec * USEC_PER_SEC + tv.tv_usec;
|
||||
}
|
||||
|
||||
/*
|
||||
* The resolution of the clocks. The resolution value is returned in
|
||||
* the clock_getres() system call to give application programmers an
|
||||
|
@@ -11,7 +11,7 @@
|
||||
#include <asm/types.h>
|
||||
#include <linux/ioctl.h>
|
||||
|
||||
#define KVM_API_VERSION 3
|
||||
#define KVM_API_VERSION 4
|
||||
|
||||
/*
|
||||
* Architectural interrupt line count, and the size of the bitmap needed
|
||||
@@ -52,11 +52,10 @@ enum kvm_exit_reason {
|
||||
/* for KVM_RUN */
|
||||
struct kvm_run {
|
||||
/* in */
|
||||
__u32 vcpu;
|
||||
__u32 emulated; /* skip current instruction */
|
||||
__u32 mmio_completed; /* mmio request completed */
|
||||
__u8 request_interrupt_window;
|
||||
__u8 padding1[3];
|
||||
__u8 padding1[7];
|
||||
|
||||
/* out */
|
||||
__u32 exit_type;
|
||||
@@ -111,10 +110,6 @@ struct kvm_run {
|
||||
|
||||
/* for KVM_GET_REGS and KVM_SET_REGS */
|
||||
struct kvm_regs {
|
||||
/* in */
|
||||
__u32 vcpu;
|
||||
__u32 padding;
|
||||
|
||||
/* out (KVM_GET_REGS) / in (KVM_SET_REGS) */
|
||||
__u64 rax, rbx, rcx, rdx;
|
||||
__u64 rsi, rdi, rsp, rbp;
|
||||
@@ -141,10 +136,6 @@ struct kvm_dtable {
|
||||
|
||||
/* for KVM_GET_SREGS and KVM_SET_SREGS */
|
||||
struct kvm_sregs {
|
||||
/* in */
|
||||
__u32 vcpu;
|
||||
__u32 padding;
|
||||
|
||||
/* out (KVM_GET_SREGS) / in (KVM_SET_SREGS) */
|
||||
struct kvm_segment cs, ds, es, fs, gs, ss;
|
||||
struct kvm_segment tr, ldt;
|
||||
@@ -163,8 +154,8 @@ struct kvm_msr_entry {
|
||||
|
||||
/* for KVM_GET_MSRS and KVM_SET_MSRS */
|
||||
struct kvm_msrs {
|
||||
__u32 vcpu;
|
||||
__u32 nmsrs; /* number of msrs in entries */
|
||||
__u32 pad;
|
||||
|
||||
struct kvm_msr_entry entries[0];
|
||||
};
|
||||
@@ -179,8 +170,6 @@ struct kvm_msr_list {
|
||||
struct kvm_translation {
|
||||
/* in */
|
||||
__u64 linear_address;
|
||||
__u32 vcpu;
|
||||
__u32 padding;
|
||||
|
||||
/* out */
|
||||
__u64 physical_address;
|
||||
@@ -193,7 +182,6 @@ struct kvm_translation {
|
||||
/* for KVM_INTERRUPT */
|
||||
struct kvm_interrupt {
|
||||
/* in */
|
||||
__u32 vcpu;
|
||||
__u32 irq;
|
||||
};
|
||||
|
||||
@@ -206,8 +194,8 @@ struct kvm_breakpoint {
|
||||
/* for KVM_DEBUG_GUEST */
|
||||
struct kvm_debug_guest {
|
||||
/* int */
|
||||
__u32 vcpu;
|
||||
__u32 enabled;
|
||||
__u32 pad;
|
||||
struct kvm_breakpoint breakpoints[4];
|
||||
__u32 singlestep;
|
||||
};
|
||||
@@ -224,20 +212,36 @@ struct kvm_dirty_log {
|
||||
|
||||
#define KVMIO 0xAE
|
||||
|
||||
/*
|
||||
* ioctls for /dev/kvm fds:
|
||||
*/
|
||||
#define KVM_GET_API_VERSION _IO(KVMIO, 1)
|
||||
#define KVM_CREATE_VM _IO(KVMIO, 2) /* returns a VM fd */
|
||||
#define KVM_GET_MSR_INDEX_LIST _IOWR(KVMIO, 15, struct kvm_msr_list)
|
||||
|
||||
/*
|
||||
* ioctls for VM fds
|
||||
*/
|
||||
#define KVM_SET_MEMORY_REGION _IOW(KVMIO, 10, struct kvm_memory_region)
|
||||
/*
|
||||
* KVM_CREATE_VCPU receives as a parameter the vcpu slot, and returns
|
||||
* a vcpu fd.
|
||||
*/
|
||||
#define KVM_CREATE_VCPU _IOW(KVMIO, 11, int)
|
||||
#define KVM_GET_DIRTY_LOG _IOW(KVMIO, 12, struct kvm_dirty_log)
|
||||
|
||||
/*
|
||||
* ioctls for vcpu fds
|
||||
*/
|
||||
#define KVM_RUN _IOWR(KVMIO, 2, struct kvm_run)
|
||||
#define KVM_GET_REGS _IOWR(KVMIO, 3, struct kvm_regs)
|
||||
#define KVM_GET_REGS _IOR(KVMIO, 3, struct kvm_regs)
|
||||
#define KVM_SET_REGS _IOW(KVMIO, 4, struct kvm_regs)
|
||||
#define KVM_GET_SREGS _IOWR(KVMIO, 5, struct kvm_sregs)
|
||||
#define KVM_GET_SREGS _IOR(KVMIO, 5, struct kvm_sregs)
|
||||
#define KVM_SET_SREGS _IOW(KVMIO, 6, struct kvm_sregs)
|
||||
#define KVM_TRANSLATE _IOWR(KVMIO, 7, struct kvm_translation)
|
||||
#define KVM_INTERRUPT _IOW(KVMIO, 8, struct kvm_interrupt)
|
||||
#define KVM_DEBUG_GUEST _IOW(KVMIO, 9, struct kvm_debug_guest)
|
||||
#define KVM_SET_MEMORY_REGION _IOW(KVMIO, 10, struct kvm_memory_region)
|
||||
#define KVM_CREATE_VCPU _IOW(KVMIO, 11, int /* vcpu_slot */)
|
||||
#define KVM_GET_DIRTY_LOG _IOW(KVMIO, 12, struct kvm_dirty_log)
|
||||
#define KVM_GET_MSRS _IOWR(KVMIO, 13, struct kvm_msrs)
|
||||
#define KVM_SET_MSRS _IOWR(KVMIO, 14, struct kvm_msrs)
|
||||
#define KVM_GET_MSR_INDEX_LIST _IOWR(KVMIO, 15, struct kvm_msr_list)
|
||||
#define KVM_SET_MSRS _IOW(KVMIO, 14, struct kvm_msrs)
|
||||
|
||||
#endif
|
||||
|
73
include/linux/kvm_para.h
Normal file
73
include/linux/kvm_para.h
Normal file
@@ -0,0 +1,73 @@
|
||||
#ifndef __LINUX_KVM_PARA_H
|
||||
#define __LINUX_KVM_PARA_H
|
||||
|
||||
/*
|
||||
* Guest OS interface for KVM paravirtualization
|
||||
*
|
||||
* Note: this interface is totally experimental, and is certain to change
|
||||
* as we make progress.
|
||||
*/
|
||||
|
||||
/*
|
||||
* Per-VCPU descriptor area shared between guest and host. Writable to
|
||||
* both guest and host. Registered with the host by the guest when
|
||||
* a guest acknowledges paravirtual mode.
|
||||
*
|
||||
* NOTE: all addresses are guest-physical addresses (gpa), to make it
|
||||
* easier for the hypervisor to map between the various addresses.
|
||||
*/
|
||||
struct kvm_vcpu_para_state {
|
||||
/*
|
||||
* API version information for compatibility. If there's any support
|
||||
* mismatch (too old host trying to execute too new guest) then
|
||||
* the host will deny entry into paravirtual mode. Any other
|
||||
* combination (new host + old guest and new host + new guest)
|
||||
* is supposed to work - new host versions will support all old
|
||||
* guest API versions.
|
||||
*/
|
||||
u32 guest_version;
|
||||
u32 host_version;
|
||||
u32 size;
|
||||
u32 ret;
|
||||
|
||||
/*
|
||||
* The address of the vm exit instruction (VMCALL or VMMCALL),
|
||||
* which the host will patch according to the CPU model the
|
||||
* VM runs on:
|
||||
*/
|
||||
u64 hypercall_gpa;
|
||||
|
||||
} __attribute__ ((aligned(PAGE_SIZE)));
|
||||
|
||||
#define KVM_PARA_API_VERSION 1
|
||||
|
||||
/*
|
||||
* This is used for an RDMSR's ECX parameter to probe for a KVM host.
|
||||
* Hopefully no CPU vendor will use up this number. This is placed well
|
||||
* out of way of the typical space occupied by CPU vendors' MSR indices,
|
||||
* and we think (or at least hope) it wont be occupied in the future
|
||||
* either.
|
||||
*/
|
||||
#define MSR_KVM_API_MAGIC 0x87655678
|
||||
|
||||
#define KVM_EINVAL 1
|
||||
|
||||
/*
|
||||
* Hypercall calling convention:
|
||||
*
|
||||
* Each hypercall may have 0-6 parameters.
|
||||
*
|
||||
* 64-bit hypercall index is in RAX, goes from 0 to __NR_hypercalls-1
|
||||
*
|
||||
* 64-bit parameters 1-6 are in the standard gcc x86_64 calling convention
|
||||
* order: RDI, RSI, RDX, RCX, R8, R9.
|
||||
*
|
||||
* 32-bit index is EBX, parameters are: EAX, ECX, EDX, ESI, EDI, EBP.
|
||||
* (the first 3 are according to the gcc regparm calling convention)
|
||||
*
|
||||
* No registers are clobbered by the hypercall, except that the
|
||||
* return value is in RAX.
|
||||
*/
|
||||
#define __NR_hypercalls 0
|
||||
|
||||
#endif
|
@@ -9,22 +9,38 @@
|
||||
#define _LINUX_LCD_H
|
||||
|
||||
#include <linux/device.h>
|
||||
#include <linux/mutex.h>
|
||||
#include <linux/notifier.h>
|
||||
|
||||
/* Notes on locking:
|
||||
*
|
||||
* lcd_device->ops_lock is an internal backlight lock protecting the ops
|
||||
* field and no code outside the core should need to touch it.
|
||||
*
|
||||
* Access to set_power() is serialised by the update_lock mutex since
|
||||
* most drivers seem to need this and historically get it wrong.
|
||||
*
|
||||
* Most drivers don't need locking on their get_power() method.
|
||||
* If yours does, you need to implement it in the driver. You can use the
|
||||
* update_lock mutex if appropriate.
|
||||
*
|
||||
* Any other use of the locks below is probably wrong.
|
||||
*/
|
||||
|
||||
struct lcd_device;
|
||||
struct fb_info;
|
||||
|
||||
/* This structure defines all the properties of a LCD flat panel. */
|
||||
struct lcd_properties {
|
||||
/* Owner module */
|
||||
struct module *owner;
|
||||
/* The maximum value for contrast (read-only) */
|
||||
int max_contrast;
|
||||
};
|
||||
|
||||
struct lcd_ops {
|
||||
/* Get the LCD panel power status (0: full on, 1..3: controller
|
||||
power on, flat panel power off, 4: full off), see FB_BLANK_XXX */
|
||||
int (*get_power)(struct lcd_device *);
|
||||
/* Enable or disable power to the LCD (0: on; 4: off, see FB_BLANK_XXX) */
|
||||
int (*set_power)(struct lcd_device *, int power);
|
||||
/* The maximum value for contrast (read-only) */
|
||||
int max_contrast;
|
||||
/* Get the current contrast setting (0-max_contrast) */
|
||||
int (*get_contrast)(struct lcd_device *);
|
||||
/* Set LCD panel contrast */
|
||||
@@ -35,20 +51,31 @@ struct lcd_properties {
|
||||
};
|
||||
|
||||
struct lcd_device {
|
||||
/* This protects the 'props' field. If 'props' is NULL, the driver that
|
||||
struct lcd_properties props;
|
||||
/* This protects the 'ops' field. If 'ops' is NULL, the driver that
|
||||
registered this device has been unloaded, and if class_get_devdata()
|
||||
points to something in the body of that driver, it is also invalid. */
|
||||
struct semaphore sem;
|
||||
struct mutex ops_lock;
|
||||
/* If this is NULL, the backing module is unloaded */
|
||||
struct lcd_properties *props;
|
||||
struct lcd_ops *ops;
|
||||
/* Serialise access to set_power method */
|
||||
struct mutex update_lock;
|
||||
/* The framebuffer notifier block */
|
||||
struct notifier_block fb_notif;
|
||||
/* The class device structure */
|
||||
struct class_device class_dev;
|
||||
};
|
||||
|
||||
static inline void lcd_set_power(struct lcd_device *ld, int power)
|
||||
{
|
||||
mutex_lock(&ld->update_lock);
|
||||
if (ld->ops && ld->ops->set_power)
|
||||
ld->ops->set_power(ld, power);
|
||||
mutex_unlock(&ld->update_lock);
|
||||
}
|
||||
|
||||
extern struct lcd_device *lcd_device_register(const char *name,
|
||||
void *devdata, struct lcd_properties *lp);
|
||||
void *devdata, struct lcd_ops *ops);
|
||||
extern void lcd_device_unregister(struct lcd_device *ld);
|
||||
|
||||
#define to_lcd_device(obj) container_of(obj, struct lcd_device, class_dev)
|
||||
|
@@ -35,6 +35,7 @@
|
||||
#include <linux/ata.h>
|
||||
#include <linux/workqueue.h>
|
||||
#include <scsi/scsi_host.h>
|
||||
#include <linux/acpi.h>
|
||||
|
||||
/*
|
||||
* Define if arch has non-standard setup. This is a _PCI_ standard
|
||||
@@ -209,6 +210,7 @@ enum {
|
||||
|
||||
/* host set flags */
|
||||
ATA_HOST_SIMPLEX = (1 << 0), /* Host is simplex, one DMA channel per host only */
|
||||
ATA_HOST_STARTED = (1 << 1), /* Host started */
|
||||
|
||||
/* various lengths of time */
|
||||
ATA_TMOUT_BOOT = 30 * HZ, /* heuristic */
|
||||
@@ -280,11 +282,13 @@ enum {
|
||||
ATA_EHI_NO_AUTOPSY = (1 << 2), /* no autopsy */
|
||||
ATA_EHI_QUIET = (1 << 3), /* be quiet */
|
||||
|
||||
ATA_EHI_DID_RESET = (1 << 16), /* already reset this port */
|
||||
ATA_EHI_PRINTINFO = (1 << 17), /* print configuration info */
|
||||
ATA_EHI_SETMODE = (1 << 18), /* configure transfer mode */
|
||||
ATA_EHI_POST_SETMODE = (1 << 19), /* revaildating after setmode */
|
||||
ATA_EHI_DID_SOFTRESET = (1 << 16), /* already soft-reset this port */
|
||||
ATA_EHI_DID_HARDRESET = (1 << 17), /* already soft-reset this port */
|
||||
ATA_EHI_PRINTINFO = (1 << 18), /* print configuration info */
|
||||
ATA_EHI_SETMODE = (1 << 19), /* configure transfer mode */
|
||||
ATA_EHI_POST_SETMODE = (1 << 20), /* revaildating after setmode */
|
||||
|
||||
ATA_EHI_DID_RESET = ATA_EHI_DID_SOFTRESET | ATA_EHI_DID_HARDRESET,
|
||||
ATA_EHI_RESET_MODIFIER_MASK = ATA_EHI_RESUME_LINK,
|
||||
|
||||
/* max repeat if error condition is still set after ->error_handler */
|
||||
@@ -310,15 +314,17 @@ enum {
|
||||
ATA_HORKAGE_DIAGNOSTIC = (1 << 0), /* Failed boot diag */
|
||||
ATA_HORKAGE_NODMA = (1 << 1), /* DMA problems */
|
||||
ATA_HORKAGE_NONCQ = (1 << 2), /* Don't use NCQ */
|
||||
ATA_HORKAGE_MAX_SEC_128 = (1 << 3), /* Limit max sects to 128 */
|
||||
ATA_HORKAGE_DMA_RW_ONLY = (1 << 4), /* ATAPI DMA for RW only */
|
||||
};
|
||||
|
||||
enum hsm_task_states {
|
||||
HSM_ST_IDLE, /* no command on going */
|
||||
HSM_ST_FIRST, /* (waiting the device to)
|
||||
write CDB or first data block */
|
||||
HSM_ST, /* (waiting the device to) transfer data */
|
||||
HSM_ST_LAST, /* (waiting the device to) complete command */
|
||||
HSM_ST_ERR, /* error */
|
||||
HSM_ST_FIRST, /* (waiting the device to)
|
||||
write CDB or first data block */
|
||||
};
|
||||
|
||||
enum ata_completion_errors {
|
||||
@@ -364,34 +370,6 @@ struct ata_ioports {
|
||||
void __iomem *scr_addr;
|
||||
};
|
||||
|
||||
struct ata_probe_ent {
|
||||
struct list_head node;
|
||||
struct device *dev;
|
||||
const struct ata_port_operations *port_ops;
|
||||
struct scsi_host_template *sht;
|
||||
struct ata_ioports port[ATA_MAX_PORTS];
|
||||
unsigned int n_ports;
|
||||
unsigned int dummy_port_mask;
|
||||
unsigned int pio_mask;
|
||||
unsigned int mwdma_mask;
|
||||
unsigned int udma_mask;
|
||||
unsigned long irq;
|
||||
unsigned long irq2;
|
||||
unsigned int irq_flags;
|
||||
unsigned long port_flags;
|
||||
unsigned long _host_flags;
|
||||
void __iomem * const *iomap;
|
||||
void *private_data;
|
||||
|
||||
/* port_info for the secondary port. Together with irq2, it's
|
||||
* used to implement non-uniform secondary port. Currently,
|
||||
* the only user is ata_piix combined mode. This workaround
|
||||
* will be removed together with ata_probe_ent when init model
|
||||
* is updated.
|
||||
*/
|
||||
const struct ata_port_info *pinfo2;
|
||||
};
|
||||
|
||||
struct ata_host {
|
||||
spinlock_t lock;
|
||||
struct device *dev;
|
||||
@@ -402,8 +380,7 @@ struct ata_host {
|
||||
void *private_data;
|
||||
const struct ata_port_operations *ops;
|
||||
unsigned long flags;
|
||||
int simplex_claimed; /* Keep seperate in case we
|
||||
ever need to do this locked */
|
||||
struct ata_port *simplex_claimed; /* channel owning the DMA */
|
||||
struct ata_port *ports[0];
|
||||
};
|
||||
|
||||
@@ -425,6 +402,7 @@ struct ata_queued_cmd {
|
||||
int dma_dir;
|
||||
|
||||
unsigned int pad_len;
|
||||
unsigned int sect_size;
|
||||
|
||||
unsigned int nbytes;
|
||||
unsigned int curbytes;
|
||||
@@ -470,6 +448,7 @@ struct ata_device {
|
||||
struct scsi_device *sdev; /* attached SCSI device */
|
||||
/* n_sector is used as CLEAR_OFFSET, read comment above CLEAR_OFFSET */
|
||||
u64 n_sectors; /* size of device, if ATA */
|
||||
u64 n_sectors_boot; /* size of ATA device at startup */
|
||||
unsigned int class; /* ATA_DEV_xxx */
|
||||
u16 id[ATA_ID_WORDS]; /* IDENTIFY xxx DEVICE data */
|
||||
u8 pio_mode;
|
||||
@@ -494,7 +473,12 @@ struct ata_device {
|
||||
|
||||
/* error history */
|
||||
struct ata_ering ering;
|
||||
int spdn_cnt;
|
||||
unsigned int horkage; /* List of broken features */
|
||||
#ifdef CONFIG_SATA_ACPI
|
||||
/* ACPI objects info */
|
||||
acpi_handle obj_handle;
|
||||
#endif
|
||||
};
|
||||
|
||||
/* Offset into struct ata_device. Fields above it are maintained
|
||||
@@ -530,8 +514,8 @@ struct ata_port {
|
||||
spinlock_t *lock;
|
||||
unsigned long flags; /* ATA_FLAG_xxx */
|
||||
unsigned int pflags; /* ATA_PFLAG_xxx */
|
||||
unsigned int id; /* unique id req'd by scsi midlyr */
|
||||
unsigned int port_no; /* unique port #; from zero */
|
||||
unsigned int print_id; /* user visible unique port ID */
|
||||
unsigned int port_no; /* 0 based port no. inside the host */
|
||||
|
||||
struct ata_prd *prd; /* our SG list */
|
||||
dma_addr_t prd_dma; /* and its DMA mapping */
|
||||
@@ -590,11 +574,11 @@ struct ata_port {
|
||||
struct ata_port_operations {
|
||||
void (*port_disable) (struct ata_port *);
|
||||
|
||||
void (*dev_config) (struct ata_port *, struct ata_device *);
|
||||
void (*dev_config) (struct ata_device *);
|
||||
|
||||
void (*set_piomode) (struct ata_port *, struct ata_device *);
|
||||
void (*set_dmamode) (struct ata_port *, struct ata_device *);
|
||||
unsigned long (*mode_filter) (const struct ata_port *, struct ata_device *, unsigned long);
|
||||
unsigned long (*mode_filter) (struct ata_device *, unsigned long);
|
||||
|
||||
void (*tf_load) (struct ata_port *ap, const struct ata_taskfile *tf);
|
||||
void (*tf_read) (struct ata_port *ap, struct ata_taskfile *tf);
|
||||
@@ -609,6 +593,8 @@ struct ata_port_operations {
|
||||
|
||||
void (*post_set_mode) (struct ata_port *ap);
|
||||
|
||||
int (*cable_detect) (struct ata_port *ap);
|
||||
|
||||
int (*check_atapi_dma) (struct ata_queued_cmd *qc);
|
||||
|
||||
void (*bmdma_setup) (struct ata_queued_cmd *qc);
|
||||
@@ -657,6 +643,7 @@ struct ata_port_info {
|
||||
unsigned long mwdma_mask;
|
||||
unsigned long udma_mask;
|
||||
const struct ata_port_operations *port_ops;
|
||||
irq_handler_t irq_handler;
|
||||
void *private_data;
|
||||
};
|
||||
|
||||
@@ -679,6 +666,7 @@ extern const unsigned long sata_deb_timing_hotplug[];
|
||||
extern const unsigned long sata_deb_timing_long[];
|
||||
|
||||
extern const struct ata_port_operations ata_dummy_port_ops;
|
||||
extern const struct ata_port_info ata_dummy_port_info;
|
||||
|
||||
static inline const unsigned long *
|
||||
sata_ehc_deb_timing(struct ata_eh_context *ehc)
|
||||
@@ -694,6 +682,7 @@ static inline int ata_port_is_dummy(struct ata_port *ap)
|
||||
return ap->ops == &ata_dummy_port_ops;
|
||||
}
|
||||
|
||||
extern void sata_print_link_status(struct ata_port *ap);
|
||||
extern void ata_port_probe(struct ata_port *);
|
||||
extern void __sata_phy_reset(struct ata_port *ap);
|
||||
extern void sata_phy_reset(struct ata_port *ap);
|
||||
@@ -713,13 +702,23 @@ extern void ata_std_ports(struct ata_ioports *ioaddr);
|
||||
extern int ata_pci_init_one (struct pci_dev *pdev, struct ata_port_info **port_info,
|
||||
unsigned int n_ports);
|
||||
extern void ata_pci_remove_one (struct pci_dev *pdev);
|
||||
#ifdef CONFIG_PM
|
||||
extern void ata_pci_device_do_suspend(struct pci_dev *pdev, pm_message_t mesg);
|
||||
extern int __must_check ata_pci_device_do_resume(struct pci_dev *pdev);
|
||||
extern int ata_pci_device_suspend(struct pci_dev *pdev, pm_message_t mesg);
|
||||
extern int ata_pci_device_resume(struct pci_dev *pdev);
|
||||
#endif
|
||||
extern int ata_pci_clear_simplex(struct pci_dev *pdev);
|
||||
#endif /* CONFIG_PCI */
|
||||
extern int ata_device_add(const struct ata_probe_ent *ent);
|
||||
extern struct ata_host *ata_host_alloc(struct device *dev, int max_ports);
|
||||
extern struct ata_host *ata_host_alloc_pinfo(struct device *dev,
|
||||
const struct ata_port_info * const * ppi, int n_ports);
|
||||
extern int ata_host_start(struct ata_host *host);
|
||||
extern int ata_host_register(struct ata_host *host,
|
||||
struct scsi_host_template *sht);
|
||||
extern int ata_host_activate(struct ata_host *host, int irq,
|
||||
irq_handler_t irq_handler, unsigned long irq_flags,
|
||||
struct scsi_host_template *sht);
|
||||
extern void ata_host_detach(struct ata_host *host);
|
||||
extern void ata_host_init(struct ata_host *, struct device *,
|
||||
unsigned long, const struct ata_port_operations *);
|
||||
@@ -742,10 +741,12 @@ extern int sata_scr_write(struct ata_port *ap, int reg, u32 val);
|
||||
extern int sata_scr_write_flush(struct ata_port *ap, int reg, u32 val);
|
||||
extern int ata_port_online(struct ata_port *ap);
|
||||
extern int ata_port_offline(struct ata_port *ap);
|
||||
#ifdef CONFIG_PM
|
||||
extern int ata_scsi_device_resume(struct scsi_device *);
|
||||
extern int ata_scsi_device_suspend(struct scsi_device *, pm_message_t mesg);
|
||||
extern int ata_host_suspend(struct ata_host *host, pm_message_t mesg);
|
||||
extern void ata_host_resume(struct ata_host *host);
|
||||
#endif
|
||||
extern int ata_ratelimit(void);
|
||||
extern int ata_busy_sleep(struct ata_port *ap,
|
||||
unsigned long timeout_pat, unsigned long timeout);
|
||||
@@ -754,6 +755,7 @@ extern void ata_port_queue_task(struct ata_port *ap, work_func_t fn,
|
||||
extern u32 ata_wait_register(void __iomem *reg, u32 mask, u32 val,
|
||||
unsigned long interval_msec,
|
||||
unsigned long timeout_msec);
|
||||
extern unsigned int ata_dev_try_classify(struct ata_port *, unsigned int, u8 *);
|
||||
|
||||
/*
|
||||
* Default driver ops implementations
|
||||
@@ -781,10 +783,12 @@ extern void ata_sg_init_one(struct ata_queued_cmd *qc, void *buf,
|
||||
extern void ata_sg_init(struct ata_queued_cmd *qc, struct scatterlist *sg,
|
||||
unsigned int n_elem);
|
||||
extern unsigned int ata_dev_classify(const struct ata_taskfile *tf);
|
||||
extern void ata_dev_disable(struct ata_device *adev);
|
||||
extern void ata_id_string(const u16 *id, unsigned char *s,
|
||||
unsigned int ofs, unsigned int len);
|
||||
extern void ata_id_c_string(const u16 *id, unsigned char *s,
|
||||
unsigned int ofs, unsigned int len);
|
||||
extern void ata_id_to_dma_mode(struct ata_device *dev, u8 unknown);
|
||||
extern unsigned long ata_device_blacklisted(const struct ata_device *dev);
|
||||
extern void ata_bmdma_setup (struct ata_queued_cmd *qc);
|
||||
extern void ata_bmdma_start (struct ata_queued_cmd *qc);
|
||||
@@ -814,11 +818,17 @@ extern void ata_scsi_slave_destroy(struct scsi_device *sdev);
|
||||
extern int ata_scsi_change_queue_depth(struct scsi_device *sdev,
|
||||
int queue_depth);
|
||||
extern struct ata_device *ata_dev_pair(struct ata_device *adev);
|
||||
extern int ata_do_set_mode(struct ata_port *ap, struct ata_device **r_failed_dev);
|
||||
extern u8 ata_irq_on(struct ata_port *ap);
|
||||
extern u8 ata_dummy_irq_on(struct ata_port *ap);
|
||||
extern u8 ata_irq_ack(struct ata_port *ap, unsigned int chk_drq);
|
||||
extern u8 ata_dummy_irq_ack(struct ata_port *ap, unsigned int chk_drq);
|
||||
|
||||
extern int ata_cable_40wire(struct ata_port *ap);
|
||||
extern int ata_cable_80wire(struct ata_port *ap);
|
||||
extern int ata_cable_sata(struct ata_port *ap);
|
||||
extern int ata_cable_unknown(struct ata_port *ap);
|
||||
|
||||
/*
|
||||
* Timing helpers
|
||||
*/
|
||||
@@ -856,10 +866,13 @@ struct pci_bits {
|
||||
unsigned long val;
|
||||
};
|
||||
|
||||
extern struct ata_probe_ent *
|
||||
ata_pci_init_native_mode(struct pci_dev *pdev, struct ata_port_info **port, int portmask);
|
||||
extern int ata_pci_init_native_host(struct ata_host *host,
|
||||
unsigned int port_mask);
|
||||
extern int ata_pci_prepare_native_host(struct pci_dev *pdev,
|
||||
const struct ata_port_info * const * ppi,
|
||||
int n_ports, struct ata_host **r_host);
|
||||
extern int pci_test_config_bits(struct pci_dev *pdev, const struct pci_bits *bits);
|
||||
extern unsigned long ata_pci_default_filter(const struct ata_port *, struct ata_device *, unsigned long);
|
||||
extern unsigned long ata_pci_default_filter(struct ata_device *, unsigned long);
|
||||
#endif /* CONFIG_PCI */
|
||||
|
||||
/*
|
||||
@@ -885,10 +898,10 @@ extern void ata_do_eh(struct ata_port *ap, ata_prereset_fn_t prereset,
|
||||
* printk helpers
|
||||
*/
|
||||
#define ata_port_printk(ap, lv, fmt, args...) \
|
||||
printk(lv"ata%u: "fmt, (ap)->id , ##args)
|
||||
printk(lv"ata%u: "fmt, (ap)->print_id , ##args)
|
||||
|
||||
#define ata_dev_printk(dev, lv, fmt, args...) \
|
||||
printk(lv"ata%u.%02u: "fmt, (dev)->ap->id, (dev)->devno , ##args)
|
||||
printk(lv"ata%u.%02u: "fmt, (dev)->ap->print_id, (dev)->devno , ##args)
|
||||
|
||||
/*
|
||||
* ata_eh_info helpers
|
||||
@@ -1026,6 +1039,21 @@ static inline u8 ata_chk_status(struct ata_port *ap)
|
||||
return ap->ops->check_status(ap);
|
||||
}
|
||||
|
||||
/**
|
||||
* ata_ncq_enabled - Test whether NCQ is enabled
|
||||
* @dev: ATA device to test for
|
||||
*
|
||||
* LOCKING:
|
||||
* spin_lock_irqsave(host lock)
|
||||
*
|
||||
* RETURNS:
|
||||
* 1 if NCQ is enabled for @dev, 0 otherwise.
|
||||
*/
|
||||
static inline int ata_ncq_enabled(struct ata_device *dev)
|
||||
{
|
||||
return (dev->flags & (ATA_DFLAG_PIO | ATA_DFLAG_NCQ_OFF |
|
||||
ATA_DFLAG_NCQ)) == ATA_DFLAG_NCQ;
|
||||
}
|
||||
|
||||
/**
|
||||
* ata_pause - Flush writes and pause 400 nanoseconds.
|
||||
@@ -1144,6 +1172,7 @@ static inline void ata_qc_reinit(struct ata_queued_cmd *qc)
|
||||
qc->n_elem = 0;
|
||||
qc->err_mask = 0;
|
||||
qc->pad_len = 0;
|
||||
qc->sect_size = ATA_SECT_SIZE;
|
||||
|
||||
ata_tf_init(qc->dev, &qc->tf);
|
||||
|
||||
@@ -1191,7 +1220,7 @@ static inline void ata_pad_free(struct ata_port *ap, struct device *dev)
|
||||
|
||||
static inline struct ata_port *ata_shost_to_port(struct Scsi_Host *host)
|
||||
{
|
||||
return (struct ata_port *) &host->hostdata[0];
|
||||
return *(struct ata_port **)&host->hostdata[0];
|
||||
}
|
||||
|
||||
#endif /* __LINUX_LIBATA_H__ */
|
||||
|
@@ -245,7 +245,7 @@ extern void lock_release(struct lockdep_map *lock, int nested,
|
||||
|
||||
# define INIT_LOCKDEP .lockdep_recursion = 0,
|
||||
|
||||
#define lockdep_depth(tsk) ((tsk)->lockdep_depth)
|
||||
#define lockdep_depth(tsk) (debug_locks ? (tsk)->lockdep_depth : 0)
|
||||
|
||||
#else /* !LOCKDEP */
|
||||
|
||||
|
@@ -152,7 +152,7 @@ unsigned long __roundup_pow_of_two(unsigned long n)
|
||||
* roundup_pow_of_two - round the given value up to nearest power of two
|
||||
* @n - parameter
|
||||
*
|
||||
* round the given balue up to the nearest power of two
|
||||
* round the given value up to the nearest power of two
|
||||
* - the result is undefined when n == 0
|
||||
* - this can be used to initialise global variables from constant data
|
||||
*/
|
||||
|
@@ -13,6 +13,7 @@
|
||||
#define HPFS_SUPER_MAGIC 0xf995e849
|
||||
#define ISOFS_SUPER_MAGIC 0x9660
|
||||
#define JFFS2_SUPER_MAGIC 0x72b6
|
||||
#define KVMFS_SUPER_MAGIC 0x19700426
|
||||
|
||||
#define MINIX_SUPER_MAGIC 0x137F /* original minix fs */
|
||||
#define MINIX_SUPER_MAGIC2 0x138F /* minix fs, 30 char names */
|
||||
|
@@ -5,6 +5,14 @@
|
||||
|
||||
typedef struct page *new_page_t(struct page *, unsigned long private, int **);
|
||||
|
||||
/* Check if a vma is migratable */
|
||||
static inline int vma_migratable(struct vm_area_struct *vma)
|
||||
{
|
||||
if (vma->vm_flags & (VM_IO|VM_HUGETLB|VM_PFNMAP|VM_RESERVED))
|
||||
return 0;
|
||||
return 1;
|
||||
}
|
||||
|
||||
#ifdef CONFIG_MIGRATION
|
||||
extern int isolate_lru_page(struct page *p, struct list_head *pagelist);
|
||||
extern int putback_lru_pages(struct list_head *l);
|
||||
|
@@ -78,8 +78,7 @@ struct minix_super_block {
|
||||
* V3 minix super-block data on disk
|
||||
*/
|
||||
struct minix3_super_block {
|
||||
__u16 s_ninodes;
|
||||
__u16 s_nzones;
|
||||
__u32 s_ninodes;
|
||||
__u16 s_pad0;
|
||||
__u16 s_imap_blocks;
|
||||
__u16 s_zmap_blocks;
|
||||
|
@@ -660,15 +660,11 @@ static inline int page_mapped(struct page *page)
|
||||
extern void show_free_areas(void);
|
||||
|
||||
#ifdef CONFIG_SHMEM
|
||||
struct page *shmem_nopage(struct vm_area_struct *vma,
|
||||
unsigned long address, int *type);
|
||||
int shmem_set_policy(struct vm_area_struct *vma, struct mempolicy *new);
|
||||
struct mempolicy *shmem_get_policy(struct vm_area_struct *vma,
|
||||
unsigned long addr);
|
||||
int shmem_lock(struct file *file, int lock, struct user_struct *user);
|
||||
#else
|
||||
#define shmem_nopage filemap_nopage
|
||||
|
||||
static inline int shmem_lock(struct file *file, int lock,
|
||||
struct user_struct *user)
|
||||
{
|
||||
@@ -688,7 +684,6 @@ static inline struct mempolicy *shmem_get_policy(struct vm_area_struct *vma,
|
||||
}
|
||||
#endif
|
||||
struct file *shmem_file_setup(char *name, loff_t size, unsigned long flags);
|
||||
extern int shmem_mmap(struct file *file, struct vm_area_struct *vma);
|
||||
|
||||
int shmem_zero_setup(struct vm_area_struct *);
|
||||
|
||||
|
@@ -62,6 +62,12 @@ struct mmc_ios {
|
||||
|
||||
#define MMC_BUS_WIDTH_1 0
|
||||
#define MMC_BUS_WIDTH_4 2
|
||||
|
||||
unsigned char timing; /* timing specification used */
|
||||
|
||||
#define MMC_TIMING_LEGACY 0
|
||||
#define MMC_TIMING_MMC_HS 1
|
||||
#define MMC_TIMING_SD_HS 2
|
||||
};
|
||||
|
||||
struct mmc_host_ops {
|
||||
@@ -87,6 +93,8 @@ struct mmc_host {
|
||||
#define MMC_CAP_4_BIT_DATA (1 << 0) /* Can the host do 4 bit transfers */
|
||||
#define MMC_CAP_MULTIWRITE (1 << 1) /* Can accurately report bytes sent to card on error */
|
||||
#define MMC_CAP_BYTEBLOCK (1 << 2) /* Can do non-log2 block sizes */
|
||||
#define MMC_CAP_MMC_HIGHSPEED (1 << 3) /* Can do MMC high-speed timing */
|
||||
#define MMC_CAP_SD_HIGHSPEED (1 << 4) /* Can do SD high-speed timing */
|
||||
|
||||
/* host specific block data */
|
||||
unsigned int max_seg_size; /* see blk_queue_max_segment_size */
|
||||
|
@@ -320,4 +320,16 @@ struct eisa_device_id {
|
||||
|
||||
#define EISA_DEVICE_MODALIAS_FMT "eisa:s%s"
|
||||
|
||||
struct parisc_device_id {
|
||||
__u8 hw_type; /* 5 bits used */
|
||||
__u8 hversion_rev; /* 4 bits */
|
||||
__u16 hversion; /* 12 bits */
|
||||
__u32 sversion; /* 20 bits */
|
||||
};
|
||||
|
||||
#define PA_HWTYPE_ANY_ID 0xff
|
||||
#define PA_HVERSION_REV_ANY_ID 0xff
|
||||
#define PA_HVERSION_ANY_ID 0xffff
|
||||
#define PA_SVERSION_ANY_ID 0xffffffff
|
||||
|
||||
#endif /* LINUX_MOD_DEVICETABLE_H */
|
||||
|
@@ -76,8 +76,6 @@ void sort_extable(struct exception_table_entry *start,
|
||||
struct exception_table_entry *finish);
|
||||
void sort_main_extable(void);
|
||||
|
||||
extern struct subsystem module_subsys;
|
||||
|
||||
#ifdef MODULE
|
||||
#define MODULE_GENERIC_TABLE(gtype,name) \
|
||||
extern const struct gtype##_id __mod_##gtype##_table \
|
||||
@@ -467,10 +465,6 @@ int unregister_module_notifier(struct notifier_block * nb);
|
||||
|
||||
extern void print_modules(void);
|
||||
|
||||
struct device_driver;
|
||||
void module_add_driver(struct module *, struct device_driver *);
|
||||
void module_remove_driver(struct device_driver *);
|
||||
|
||||
#else /* !CONFIG_MODULES... */
|
||||
#define EXPORT_SYMBOL(sym)
|
||||
#define EXPORT_SYMBOL_GPL(sym)
|
||||
@@ -568,18 +562,59 @@ static inline void print_modules(void)
|
||||
{
|
||||
}
|
||||
|
||||
#endif /* CONFIG_MODULES */
|
||||
|
||||
struct device_driver;
|
||||
#ifdef CONFIG_SYSFS
|
||||
struct module;
|
||||
|
||||
static inline void module_add_driver(struct module *module, struct device_driver *driver)
|
||||
extern struct subsystem module_subsys;
|
||||
|
||||
int mod_sysfs_init(struct module *mod);
|
||||
int mod_sysfs_setup(struct module *mod,
|
||||
struct kernel_param *kparam,
|
||||
unsigned int num_params);
|
||||
int module_add_modinfo_attrs(struct module *mod);
|
||||
void module_remove_modinfo_attrs(struct module *mod);
|
||||
|
||||
#else /* !CONFIG_SYSFS */
|
||||
|
||||
static inline int mod_sysfs_init(struct module *mod)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline void module_remove_driver(struct device_driver *driver)
|
||||
static inline int mod_sysfs_setup(struct module *mod,
|
||||
struct kernel_param *kparam,
|
||||
unsigned int num_params)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
#endif /* CONFIG_MODULES */
|
||||
static inline int module_add_modinfo_attrs(struct module *mod)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline void module_remove_modinfo_attrs(struct module *mod)
|
||||
{ }
|
||||
|
||||
#endif /* CONFIG_SYSFS */
|
||||
|
||||
#if defined(CONFIG_SYSFS) && defined(CONFIG_MODULES)
|
||||
|
||||
void module_add_driver(struct module *mod, struct device_driver *drv);
|
||||
void module_remove_driver(struct device_driver *drv);
|
||||
|
||||
#else /* not both CONFIG_SYSFS && CONFIG_MODULES */
|
||||
|
||||
static inline void module_add_driver(struct module *mod, struct device_driver *drv)
|
||||
{ }
|
||||
|
||||
static inline void module_remove_driver(struct device_driver *drv)
|
||||
{ }
|
||||
|
||||
#endif
|
||||
|
||||
#define symbol_request(x) try_then_request_module(symbol_get(x), "symbol:" #x)
|
||||
|
||||
|
@@ -59,7 +59,7 @@ struct kparam_array
|
||||
};
|
||||
|
||||
/* This is the fundamental function for registering boot/module
|
||||
parameters. perm sets the visibility in driverfs: 000 means it's
|
||||
parameters. perm sets the visibility in sysfs: 000 means it's
|
||||
not there, read bits mean it's readable, write bits mean it's
|
||||
writable. */
|
||||
#define __module_param_call(prefix, name, set, get, arg, perm) \
|
||||
@@ -169,10 +169,22 @@ extern int param_get_string(char *buffer, struct kernel_param *kp);
|
||||
|
||||
struct module;
|
||||
|
||||
#if defined(CONFIG_SYSFS) && defined(CONFIG_MODULES)
|
||||
extern int module_param_sysfs_setup(struct module *mod,
|
||||
struct kernel_param *kparam,
|
||||
unsigned int num_params);
|
||||
|
||||
extern void module_param_sysfs_remove(struct module *mod);
|
||||
#else
|
||||
static inline int module_param_sysfs_setup(struct module *mod,
|
||||
struct kernel_param *kparam,
|
||||
unsigned int num_params)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline void module_param_sysfs_remove(struct module *mod)
|
||||
{ }
|
||||
#endif
|
||||
|
||||
#endif /* _LINUX_MODULE_PARAMS_H */
|
||||
|
@@ -17,7 +17,7 @@ struct msi_desc {
|
||||
struct {
|
||||
__u8 type : 5; /* {0: unused, 5h:MSI, 11h:MSI-X} */
|
||||
__u8 maskbit : 1; /* mask-pending bit supported ? */
|
||||
__u8 unused : 1;
|
||||
__u8 masked : 1;
|
||||
__u8 is_64 : 1; /* Address size: 0=32bit 1=64bit */
|
||||
__u8 pos; /* Location of the msi capability */
|
||||
__u16 entry_nr; /* specific enabled entry */
|
||||
@@ -32,10 +32,8 @@ struct msi_desc {
|
||||
void __iomem *mask_base;
|
||||
struct pci_dev *dev;
|
||||
|
||||
#ifdef CONFIG_PM
|
||||
/* PM save area for MSIX address/data */
|
||||
struct msi_msg msg_save;
|
||||
#endif
|
||||
/* Last set MSI message */
|
||||
struct msi_msg msg;
|
||||
};
|
||||
|
||||
/*
|
||||
|
@@ -92,6 +92,13 @@ struct nand_bbt_descr {
|
||||
*/
|
||||
#define ONENAND_BADBLOCK_POS 0
|
||||
|
||||
/*
|
||||
* Bad block scanning errors
|
||||
*/
|
||||
#define ONENAND_BBT_READ_ERROR 1
|
||||
#define ONENAND_BBT_READ_ECC_ERROR 2
|
||||
#define ONENAND_BBT_READ_FATAL_ERROR 4
|
||||
|
||||
/**
|
||||
* struct bbm_info - [GENERIC] Bad Block Table data structure
|
||||
* @bbt_erase_shift: [INTERN] number of address bits in a bbt entry
|
||||
|
@@ -1,98 +0,0 @@
|
||||
/* $Id: iflash.h,v 1.2 2000/11/13 18:01:54 dwmw2 Exp $ */
|
||||
|
||||
#ifndef __MTD_IFLASH_H__
|
||||
#define __MTD_IFLASH_H__
|
||||
|
||||
/* Extended CIS registers for Series 2 and 2+ cards */
|
||||
/* The registers are all offsets from 0x4000 */
|
||||
#define CISREG_CSR 0x0100
|
||||
#define CISREG_WP 0x0104
|
||||
#define CISREG_RDYBSY 0x0140
|
||||
|
||||
/* Extended CIS registers for Series 2 cards */
|
||||
#define CISREG_SLEEP 0x0118
|
||||
#define CISREG_RDY_MASK 0x0120
|
||||
#define CISREG_RDY_STATUS 0x0130
|
||||
|
||||
/* Extended CIS registers for Series 2+ cards */
|
||||
#define CISREG_VCR 0x010c
|
||||
|
||||
/* Card Status Register */
|
||||
#define CSR_SRESET 0x20 /* Soft reset */
|
||||
#define CSR_CMWP 0x10 /* Common memory write protect */
|
||||
#define CSR_PWRDOWN 0x08 /* Power down status */
|
||||
#define CSR_CISWP 0x04 /* Common memory CIS WP */
|
||||
#define CSR_WP 0x02 /* Mechanical write protect */
|
||||
#define CSR_READY 0x01 /* Ready/busy status */
|
||||
|
||||
/* Write Protection Register */
|
||||
#define WP_BLKEN 0x04 /* Enable block locking */
|
||||
#define WP_CMWP 0x02 /* Common memory write protect */
|
||||
#define WP_CISWP 0x01 /* Common memory CIS WP */
|
||||
|
||||
/* Voltage Control Register */
|
||||
#define VCR_VCC_LEVEL 0x80 /* 0 = 5V, 1 = 3.3V */
|
||||
#define VCR_VPP_VALID 0x02 /* Vpp Valid */
|
||||
#define VCR_VPP_GEN 0x01 /* Integrated Vpp generator */
|
||||
|
||||
/* Ready/Busy Mode Register */
|
||||
#define RDYBSY_RACK 0x02 /* Ready acknowledge */
|
||||
#define RDYBSY_MODE 0x01 /* 1 = high performance */
|
||||
|
||||
#define LOW(x) ((x) & 0xff)
|
||||
|
||||
/* 28F008SA-Compatible Command Set */
|
||||
#define IF_READ_ARRAY 0xffff
|
||||
#define IF_INTEL_ID 0x9090
|
||||
#define IF_READ_CSR 0x7070
|
||||
#define IF_CLEAR_CSR 0x5050
|
||||
#define IF_WRITE 0x4040
|
||||
#define IF_BLOCK_ERASE 0x2020
|
||||
#define IF_ERASE_SUSPEND 0xb0b0
|
||||
#define IF_CONFIRM 0xd0d0
|
||||
|
||||
/* 28F016SA Performance Enhancement Commands */
|
||||
#define IF_READ_PAGE 0x7575
|
||||
#define IF_PAGE_SWAP 0x7272
|
||||
#define IF_SINGLE_LOAD 0x7474
|
||||
#define IF_SEQ_LOAD 0xe0e0
|
||||
#define IF_PAGE_WRITE 0x0c0c
|
||||
#define IF_RDY_MODE 0x9696
|
||||
#define IF_RDY_LEVEL 0x0101
|
||||
#define IF_RDY_PULSE_WRITE 0x0202
|
||||
#define IF_RDY_PULSE_ERASE 0x0303
|
||||
#define IF_RDY_DISABLE 0x0404
|
||||
#define IF_LOCK_BLOCK 0x7777
|
||||
#define IF_UPLOAD_STATUS 0x9797
|
||||
#define IF_READ_ESR 0x7171
|
||||
#define IF_ERASE_UNLOCKED 0xa7a7
|
||||
#define IF_SLEEP 0xf0f0
|
||||
#define IF_ABORT 0x8080
|
||||
#define IF_UPLOAD_DEVINFO 0x9999
|
||||
|
||||
/* Definitions for Compatible Status Register */
|
||||
#define CSR_WR_READY 0x8080 /* Write state machine status */
|
||||
#define CSR_ERA_SUSPEND 0x4040 /* Erase suspend status */
|
||||
#define CSR_ERA_ERR 0x2020 /* Erase status */
|
||||
#define CSR_WR_ERR 0x1010 /* Data write status */
|
||||
#define CSR_VPP_LOW 0x0808 /* Vpp status */
|
||||
|
||||
/* Definitions for Global Status Register */
|
||||
#define GSR_WR_READY 0x8080 /* Write state machine status */
|
||||
#define GSR_OP_SUSPEND 0x4040 /* Operation suspend status */
|
||||
#define GSR_OP_ERR 0x2020 /* Device operation status */
|
||||
#define GSR_SLEEP 0x1010 /* Device sleep status */
|
||||
#define GSR_QUEUE_FULL 0x0808 /* Queue status */
|
||||
#define GSR_PAGE_AVAIL 0x0404 /* Page buffer available status */
|
||||
#define GSR_PAGE_READY 0x0202 /* Page buffer status */
|
||||
#define GSR_PAGE_SELECT 0x0101 /* Page buffer select status */
|
||||
|
||||
/* Definitions for Block Status Register */
|
||||
#define BSR_READY 0x8080 /* Block status */
|
||||
#define BSR_UNLOCK 0x4040 /* Block lock status */
|
||||
#define BSR_FAILED 0x2020 /* Block operation status */
|
||||
#define BSR_ABORTED 0x1010 /* Operation abort status */
|
||||
#define BSR_QUEUE_FULL 0x0808 /* Queue status */
|
||||
#define BSR_VPP_LOW 0x0404 /* Vpp status */
|
||||
|
||||
#endif /* __MTD_IFLASH_H__ */
|
@@ -183,7 +183,7 @@ typedef union {
|
||||
struct map_info {
|
||||
char *name;
|
||||
unsigned long size;
|
||||
unsigned long phys;
|
||||
resource_size_t phys;
|
||||
#define NO_XIP (-1UL)
|
||||
|
||||
void __iomem *virt;
|
||||
|
@@ -53,6 +53,7 @@ struct mtd_erase_region_info {
|
||||
u_int32_t offset; /* At which this region starts, from the beginning of the MTD */
|
||||
u_int32_t erasesize; /* For this region */
|
||||
u_int32_t numblocks; /* Number of blocks of erasesize in this region */
|
||||
unsigned long *lockmap; /* If keeping bitmap of locks */
|
||||
};
|
||||
|
||||
/*
|
||||
@@ -85,6 +86,10 @@ typedef enum {
|
||||
* mode = MTD_OOB_PLACE)
|
||||
* @datbuf: data buffer - if NULL only oob data are read/written
|
||||
* @oobbuf: oob data buffer
|
||||
*
|
||||
* Note, it is allowed to read more then one OOB area at one go, but not write.
|
||||
* The interface assumes that the OOB write requests program only one page's
|
||||
* OOB area.
|
||||
*/
|
||||
struct mtd_oob_ops {
|
||||
mtd_oob_mode_t mode;
|
||||
@@ -117,18 +122,7 @@ struct mtd_info {
|
||||
u_int32_t writesize;
|
||||
|
||||
u_int32_t oobsize; // Amount of OOB data per block (e.g. 16)
|
||||
u_int32_t ecctype;
|
||||
u_int32_t eccsize;
|
||||
|
||||
/*
|
||||
* Reuse some of the above unused fields in the case of NOR flash
|
||||
* with configurable programming regions to avoid modifying the
|
||||
* user visible structure layout/size. Only valid when the
|
||||
* MTD_PROGRAM_REGIONS flag is set.
|
||||
* (Maybe we should have an union for those?)
|
||||
*/
|
||||
#define MTD_PROGREGION_CTRLMODE_VALID(mtd) (mtd)->oobsize
|
||||
#define MTD_PROGREGION_CTRLMODE_INVALID(mtd) (mtd)->ecctype
|
||||
u_int32_t oobavail; // Available OOB bytes per block
|
||||
|
||||
// Kernel-only stuff starts here.
|
||||
char *name;
|
||||
|
@@ -343,6 +343,7 @@ struct nand_buffers {
|
||||
* @options: [BOARDSPECIFIC] various chip options. They can partly be set to inform nand_scan about
|
||||
* special functionality. See the defines for further explanation
|
||||
* @badblockpos: [INTERN] position of the bad block marker in the oob area
|
||||
* @cellinfo: [INTERN] MLC/multichip data from chip ident
|
||||
* @numchips: [INTERN] number of physical chips
|
||||
* @chipsize: [INTERN] the size of one chip for multichip arrays
|
||||
* @pagemask: [INTERN] page number mask = number of (pages / chip) - 1
|
||||
@@ -430,6 +431,7 @@ struct nand_chip {
|
||||
#define NAND_MFR_RENESAS 0x07
|
||||
#define NAND_MFR_STMICRO 0x20
|
||||
#define NAND_MFR_HYNIX 0xad
|
||||
#define NAND_MFR_MICRON 0x2c
|
||||
|
||||
/**
|
||||
* struct nand_flash_dev - NAND Flash Device ID Structure
|
||||
|
@@ -1,7 +1,7 @@
|
||||
/*
|
||||
* linux/include/linux/mtd/onenand.h
|
||||
*
|
||||
* Copyright (C) 2005-2006 Samsung Electronics
|
||||
* Copyright (C) 2005-2007 Samsung Electronics
|
||||
* Kyungmin Park <kyungmin.park@samsung.com>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
@@ -42,14 +42,10 @@ typedef enum {
|
||||
|
||||
/**
|
||||
* struct onenand_bufferram - OneNAND BufferRAM Data
|
||||
* @block: block address in BufferRAM
|
||||
* @page: page address in BufferRAM
|
||||
* @valid: valid flag
|
||||
* @blockpage: block & page address in BufferRAM
|
||||
*/
|
||||
struct onenand_bufferram {
|
||||
int block;
|
||||
int page;
|
||||
int valid;
|
||||
int blockpage;
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -63,7 +59,6 @@ struct onenand_bufferram {
|
||||
* partly be set to inform onenand_scan about
|
||||
* @erase_shift: [INTERN] number of address bits in a block
|
||||
* @page_shift: [INTERN] number of address bits in a page
|
||||
* @ppb_shift: [INTERN] number of address bits in a pages per block
|
||||
* @page_mask: [INTERN] a page per block mask
|
||||
* @bufferram_index: [INTERN] BufferRAM index
|
||||
* @bufferram: [INTERN] BufferRAM info
|
||||
@@ -87,7 +82,8 @@ struct onenand_bufferram {
|
||||
* @wq: [INTERN] wait queue to sleep on if a OneNAND
|
||||
* operation is in progress
|
||||
* @state: [INTERN] the current state of the OneNAND device
|
||||
* @page_buf: data buffer
|
||||
* @page_buf: [INTERN] page main data buffer
|
||||
* @oob_buf: [INTERN] page oob data buffer
|
||||
* @subpagesize: [INTERN] holds the subpagesize
|
||||
* @ecclayout: [REPLACEABLE] the default ecc placement scheme
|
||||
* @bbm: [REPLACEABLE] pointer to Bad Block Management
|
||||
@@ -103,7 +99,6 @@ struct onenand_chip {
|
||||
|
||||
unsigned int erase_shift;
|
||||
unsigned int page_shift;
|
||||
unsigned int ppb_shift; /* Pages per block shift */
|
||||
unsigned int page_mask;
|
||||
|
||||
unsigned int bufferram_index;
|
||||
@@ -128,6 +123,7 @@ struct onenand_chip {
|
||||
wait_queue_head_t wq;
|
||||
onenand_state_t state;
|
||||
unsigned char *page_buf;
|
||||
unsigned char *oob_buf;
|
||||
|
||||
int subpagesize;
|
||||
struct nand_ecclayout *ecclayout;
|
||||
@@ -150,6 +146,9 @@ struct onenand_chip {
|
||||
#define ONENAND_SET_SYS_CFG1(v, this) \
|
||||
(this->write_word(v, this->base + ONENAND_REG_SYS_CFG1))
|
||||
|
||||
#define ONENAND_IS_DDP(this) \
|
||||
(this->device_id & ONENAND_DEVICE_IS_DDP)
|
||||
|
||||
/* Check byte access in OneNAND */
|
||||
#define ONENAND_CHECK_BYTE_ACCESS(addr) (addr & 0x1)
|
||||
|
||||
@@ -159,6 +158,7 @@ struct onenand_chip {
|
||||
#define ONENAND_HAS_CONT_LOCK (0x0001)
|
||||
#define ONENAND_HAS_UNLOCK_ALL (0x0002)
|
||||
#define ONENAND_PAGEBUF_ALLOC (0x1000)
|
||||
#define ONENAND_OOBBUF_ALLOC (0x2000)
|
||||
|
||||
/*
|
||||
* OneNAND Flash Manufacturer ID Codes
|
||||
|
@@ -3,7 +3,8 @@
|
||||
*
|
||||
* OneNAND Register header file
|
||||
*
|
||||
* Copyright (C) 2005-2006 Samsung Electronics
|
||||
* Copyright (C) 2005-2007 Samsung Electronics
|
||||
* Kyungmin Park <kyungmin.park@samsung.com>
|
||||
*
|
||||
* 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
|
||||
@@ -80,9 +81,11 @@
|
||||
#define ONENAND_VERSION_PROCESS_SHIFT (8)
|
||||
|
||||
/*
|
||||
* Start Address 1 F100h (R/W)
|
||||
* Start Address 1 F100h (R/W) & Start Address 2 F101h (R/W)
|
||||
*/
|
||||
#define ONENAND_DDP_SHIFT (15)
|
||||
#define ONENAND_DDP_CHIP0 (0)
|
||||
#define ONENAND_DDP_CHIP1 (1 << ONENAND_DDP_SHIFT)
|
||||
|
||||
/*
|
||||
* Start Address 8 F107h (R/W)
|
||||
|
@@ -18,9 +18,10 @@
|
||||
#define __LINUX_MTD_PHYSMAP__
|
||||
|
||||
#include <linux/mtd/mtd.h>
|
||||
#include <linux/mtd/map.h>
|
||||
#include <linux/mtd/partitions.h>
|
||||
|
||||
struct map_info;
|
||||
|
||||
struct physmap_flash_data {
|
||||
unsigned int width;
|
||||
void (*set_vpp)(struct map_info *, int);
|
||||
|
202
include/linux/mtd/ubi.h
Normal file
202
include/linux/mtd/ubi.h
Normal file
@@ -0,0 +1,202 @@
|
||||
/*
|
||||
* Copyright (c) International Business Machines Corp., 2006
|
||||
*
|
||||
* 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; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
|
||||
* the GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*
|
||||
* Author: Artem Bityutskiy (Битюцкий Артём)
|
||||
*/
|
||||
|
||||
#ifndef __LINUX_UBI_H__
|
||||
#define __LINUX_UBI_H__
|
||||
|
||||
#include <asm/ioctl.h>
|
||||
#include <linux/types.h>
|
||||
#include <mtd/ubi-user.h>
|
||||
|
||||
/*
|
||||
* UBI data type hint constants.
|
||||
*
|
||||
* UBI_LONGTERM: long-term data
|
||||
* UBI_SHORTTERM: short-term data
|
||||
* UBI_UNKNOWN: data persistence is unknown
|
||||
*
|
||||
* These constants are used when data is written to UBI volumes in order to
|
||||
* help the UBI wear-leveling unit to find more appropriate physical
|
||||
* eraseblocks.
|
||||
*/
|
||||
enum {
|
||||
UBI_LONGTERM = 1,
|
||||
UBI_SHORTTERM,
|
||||
UBI_UNKNOWN
|
||||
};
|
||||
|
||||
/*
|
||||
* enum ubi_open_mode - UBI volume open mode constants.
|
||||
*
|
||||
* UBI_READONLY: read-only mode
|
||||
* UBI_READWRITE: read-write mode
|
||||
* UBI_EXCLUSIVE: exclusive mode
|
||||
*/
|
||||
enum {
|
||||
UBI_READONLY = 1,
|
||||
UBI_READWRITE,
|
||||
UBI_EXCLUSIVE
|
||||
};
|
||||
|
||||
/**
|
||||
* struct ubi_volume_info - UBI volume description data structure.
|
||||
* @vol_id: volume ID
|
||||
* @ubi_num: UBI device number this volume belongs to
|
||||
* @size: how many physical eraseblocks are reserved for this volume
|
||||
* @used_bytes: how many bytes of data this volume contains
|
||||
* @used_ebs: how many physical eraseblocks of this volume actually contain any
|
||||
* data
|
||||
* @vol_type: volume type (%UBI_DYNAMIC_VOLUME or %UBI_STATIC_VOLUME)
|
||||
* @corrupted: non-zero if the volume is corrupted (static volumes only)
|
||||
* @upd_marker: non-zero if the volume has update marker set
|
||||
* @alignment: volume alignment
|
||||
* @usable_leb_size: how many bytes are available in logical eraseblocks of
|
||||
* this volume
|
||||
* @name_len: volume name length
|
||||
* @name: volume name
|
||||
* @cdev: UBI volume character device major and minor numbers
|
||||
*
|
||||
* The @corrupted flag is only relevant to static volumes and is always zero
|
||||
* for dynamic ones. This is because UBI does not care about dynamic volume
|
||||
* data protection and only cares about protecting static volume data.
|
||||
*
|
||||
* The @upd_marker flag is set if the volume update operation was interrupted.
|
||||
* Before touching the volume data during the update operation, UBI first sets
|
||||
* the update marker flag for this volume. If the volume update operation was
|
||||
* further interrupted, the update marker indicates this. If the update marker
|
||||
* is set, the contents of the volume is certainly damaged and a new volume
|
||||
* update operation has to be started.
|
||||
*
|
||||
* To put it differently, @corrupted and @upd_marker fields have different
|
||||
* semantics:
|
||||
* o the @corrupted flag means that this static volume is corrupted for some
|
||||
* reasons, but not because an interrupted volume update
|
||||
* o the @upd_marker field means that the volume is damaged because of an
|
||||
* interrupted update operation.
|
||||
*
|
||||
* I.e., the @corrupted flag is never set if the @upd_marker flag is set.
|
||||
*
|
||||
* The @used_bytes and @used_ebs fields are only really needed for static
|
||||
* volumes and contain the number of bytes stored in this static volume and how
|
||||
* many eraseblock this data occupies. In case of dynamic volumes, the
|
||||
* @used_bytes field is equivalent to @size*@usable_leb_size, and the @used_ebs
|
||||
* field is equivalent to @size.
|
||||
*
|
||||
* In general, logical eraseblock size is a property of the UBI device, not
|
||||
* of the UBI volume. Indeed, the logical eraseblock size depends on the
|
||||
* physical eraseblock size and on how much bytes UBI headers consume. But
|
||||
* because of the volume alignment (@alignment), the usable size of logical
|
||||
* eraseblocks if a volume may be less. The following equation is true:
|
||||
* @usable_leb_size = LEB size - (LEB size mod @alignment),
|
||||
* where LEB size is the logical eraseblock size defined by the UBI device.
|
||||
*
|
||||
* The alignment is multiple to the minimal flash input/output unit size or %1
|
||||
* if all the available space is used.
|
||||
*
|
||||
* To put this differently, alignment may be considered is a way to change
|
||||
* volume logical eraseblock sizes.
|
||||
*/
|
||||
struct ubi_volume_info {
|
||||
int ubi_num;
|
||||
int vol_id;
|
||||
int size;
|
||||
long long used_bytes;
|
||||
int used_ebs;
|
||||
int vol_type;
|
||||
int corrupted;
|
||||
int upd_marker;
|
||||
int alignment;
|
||||
int usable_leb_size;
|
||||
int name_len;
|
||||
const char *name;
|
||||
dev_t cdev;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct ubi_device_info - UBI device description data structure.
|
||||
* @ubi_num: ubi device number
|
||||
* @leb_size: logical eraseblock size on this UBI device
|
||||
* @min_io_size: minimal I/O unit size
|
||||
* @ro_mode: if this device is in read-only mode
|
||||
* @cdev: UBI character device major and minor numbers
|
||||
*
|
||||
* Note, @leb_size is the logical eraseblock size offered by the UBI device.
|
||||
* Volumes of this UBI device may have smaller logical eraseblock size if their
|
||||
* alignment is not equivalent to %1.
|
||||
*/
|
||||
struct ubi_device_info {
|
||||
int ubi_num;
|
||||
int leb_size;
|
||||
int min_io_size;
|
||||
int ro_mode;
|
||||
dev_t cdev;
|
||||
};
|
||||
|
||||
/* UBI descriptor given to users when they open UBI volumes */
|
||||
struct ubi_volume_desc;
|
||||
|
||||
int ubi_get_device_info(int ubi_num, struct ubi_device_info *di);
|
||||
void ubi_get_volume_info(struct ubi_volume_desc *desc,
|
||||
struct ubi_volume_info *vi);
|
||||
struct ubi_volume_desc *ubi_open_volume(int ubi_num, int vol_id, int mode);
|
||||
struct ubi_volume_desc *ubi_open_volume_nm(int ubi_num, const char *name,
|
||||
int mode);
|
||||
void ubi_close_volume(struct ubi_volume_desc *desc);
|
||||
int ubi_leb_read(struct ubi_volume_desc *desc, int lnum, char *buf, int offset,
|
||||
int len, int check);
|
||||
int ubi_leb_write(struct ubi_volume_desc *desc, int lnum, const void *buf,
|
||||
int offset, int len, int dtype);
|
||||
int ubi_leb_change(struct ubi_volume_desc *desc, int lnum, const void *buf,
|
||||
int len, int dtype);
|
||||
int ubi_leb_erase(struct ubi_volume_desc *desc, int lnum);
|
||||
int ubi_leb_unmap(struct ubi_volume_desc *desc, int lnum);
|
||||
int ubi_is_mapped(struct ubi_volume_desc *desc, int lnum);
|
||||
|
||||
/*
|
||||
* This function is the same as the 'ubi_leb_read()' function, but it does not
|
||||
* provide the checking capability.
|
||||
*/
|
||||
static inline int ubi_read(struct ubi_volume_desc *desc, int lnum, char *buf,
|
||||
int offset, int len)
|
||||
{
|
||||
return ubi_leb_read(desc, lnum, buf, offset, len, 0);
|
||||
}
|
||||
|
||||
/*
|
||||
* This function is the same as the 'ubi_leb_write()' functions, but it does
|
||||
* not have the data type argument.
|
||||
*/
|
||||
static inline int ubi_write(struct ubi_volume_desc *desc, int lnum,
|
||||
const void *buf, int offset, int len)
|
||||
{
|
||||
return ubi_leb_write(desc, lnum, buf, offset, len, UBI_UNKNOWN);
|
||||
}
|
||||
|
||||
/*
|
||||
* This function is the same as the 'ubi_leb_change()' functions, but it does
|
||||
* not have the data type argument.
|
||||
*/
|
||||
static inline int ubi_change(struct ubi_volume_desc *desc, int lnum,
|
||||
const void *buf, int len)
|
||||
{
|
||||
return ubi_leb_change(desc, lnum, buf, len, UBI_UNKNOWN);
|
||||
}
|
||||
|
||||
#endif /* !__LINUX_UBI_H__ */
|
@@ -1288,7 +1288,7 @@ struct mv64xxx_i2c_pdata {
|
||||
#define MV643XX_ETH_NAME "mv643xx_eth"
|
||||
|
||||
struct mv643xx_eth_platform_data {
|
||||
char *mac_addr; /* pointer to mac address */
|
||||
int port_number;
|
||||
u16 force_phy_addr; /* force override if phy_addr == 0 */
|
||||
u16 phy_addr;
|
||||
|
||||
@@ -1303,6 +1303,7 @@ struct mv643xx_eth_platform_data {
|
||||
u32 tx_sram_size;
|
||||
u32 rx_sram_addr;
|
||||
u32 rx_sram_size;
|
||||
u8 mac_addr[6]; /* mac address if non-zero*/
|
||||
};
|
||||
|
||||
#endif /* __ASM_MV643XX_H */
|
||||
|
@@ -82,6 +82,7 @@ extern struct file *nameidata_to_filp(struct nameidata *nd, int flags);
|
||||
extern void release_open_intent(struct nameidata *);
|
||||
|
||||
extern struct dentry * lookup_one_len(const char *, struct dentry *, int);
|
||||
extern struct dentry *lookup_one_len_kern(const char *, struct dentry *, int);
|
||||
|
||||
extern int follow_down(struct vfsmount **, struct dentry **);
|
||||
extern int follow_up(struct vfsmount **, struct dentry **);
|
||||
|
@@ -50,6 +50,8 @@ struct ncp_server {
|
||||
int packet_size;
|
||||
unsigned char *packet; /* Here we prepare requests and
|
||||
receive replies */
|
||||
unsigned char *txbuf; /* Storage for current request */
|
||||
unsigned char *rxbuf; /* Storage for reply to current request */
|
||||
|
||||
int lock; /* To prevent mismatch in protocols. */
|
||||
struct mutex mutex;
|
||||
|
@@ -24,7 +24,7 @@
|
||||
struct poll_table_struct;
|
||||
struct inode;
|
||||
|
||||
#define NPROTO 33 /* should be enough for now.. */
|
||||
#define NPROTO 34 /* should be enough for now.. */
|
||||
|
||||
#define SYS_SOCKET 1 /* sys_socket(2) */
|
||||
#define SYS_BIND 2 /* sys_bind(2) */
|
||||
|
@@ -42,6 +42,8 @@
|
||||
struct vlan_group;
|
||||
struct ethtool_ops;
|
||||
struct netpoll_info;
|
||||
/* 802.11 specific */
|
||||
struct wireless_dev;
|
||||
/* source back-compat hooks */
|
||||
#define SET_ETHTOOL_OPS(netdev,ops) \
|
||||
( (netdev)->ethtool_ops = (ops) )
|
||||
@@ -347,13 +349,15 @@ struct net_device
|
||||
|
||||
|
||||
struct net_device_stats* (*get_stats)(struct net_device *dev);
|
||||
struct net_device_stats stats;
|
||||
|
||||
#ifdef CONFIG_WIRELESS_EXT
|
||||
/* List of functions to handle Wireless Extensions (instead of ioctl).
|
||||
* See <net/iw_handler.h> for details. Jean II */
|
||||
const struct iw_handler_def * wireless_handlers;
|
||||
/* Instance data managed by the core of Wireless Extensions. */
|
||||
struct iw_public_data * wireless_data;
|
||||
|
||||
#endif
|
||||
const struct ethtool_ops *ethtool_ops;
|
||||
|
||||
/*
|
||||
@@ -398,6 +402,8 @@ struct net_device
|
||||
void *ip6_ptr; /* IPv6 specific data */
|
||||
void *ec_ptr; /* Econet specific data */
|
||||
void *ax25_ptr; /* AX.25 specific data */
|
||||
struct wireless_dev *ieee80211_ptr; /* IEEE 802.11 specific data,
|
||||
assign before registering */
|
||||
|
||||
/*
|
||||
* Cache line mostly used on receive path (including eth_type_trans())
|
||||
@@ -647,8 +653,10 @@ static inline void netif_start_queue(struct net_device *dev)
|
||||
static inline void netif_wake_queue(struct net_device *dev)
|
||||
{
|
||||
#ifdef CONFIG_NETPOLL_TRAP
|
||||
if (netpoll_trap())
|
||||
if (netpoll_trap()) {
|
||||
clear_bit(__LINK_STATE_XOFF, &dev->state);
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
if (test_and_clear_bit(__LINK_STATE_XOFF, &dev->state))
|
||||
__netif_schedule(dev);
|
||||
@@ -656,10 +664,6 @@ static inline void netif_wake_queue(struct net_device *dev)
|
||||
|
||||
static inline void netif_stop_queue(struct net_device *dev)
|
||||
{
|
||||
#ifdef CONFIG_NETPOLL_TRAP
|
||||
if (netpoll_trap())
|
||||
return;
|
||||
#endif
|
||||
set_bit(__LINK_STATE_XOFF, &dev->state);
|
||||
}
|
||||
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user