aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux
diff options
context:
space:
mode:
authorTrond Myklebust <Trond.Myklebust@netapp.com>2011-11-02 23:56:40 -0400
committerTrond Myklebust <Trond.Myklebust@netapp.com>2011-11-02 23:56:40 -0400
commit31cbecb4ab538f433145bc5a46f3bea9b9627031 (patch)
treed6206d42dea7298f7ef05fd1f7bf474245f0d43a /include/linux
parent2b72c9ccd22c4a3299e5a358dcd639fb253730f4 (diff)
parent278c023a99b0d6b471d0f4a79835c703482e29ac (diff)
Merge branch 'osd-devel' into nfs-for-next
Diffstat (limited to 'include/linux')
-rw-r--r--include/linux/alarmtimer.h51
-rw-r--r--include/linux/amba/pl061.h3
-rw-r--r--include/linux/atalk.h3
-rw-r--r--include/linux/atmel-mci.h4
-rw-r--r--include/linux/atmel_pdc.h2
-rw-r--r--include/linux/audit.h11
-rw-r--r--include/linux/ax25.h2
-rw-r--r--include/linux/bcma/bcma.h9
-rw-r--r--include/linux/bcma/bcma_driver_chipcommon.h94
-rw-r--r--include/linux/bcma/bcma_driver_mips.h51
-rw-r--r--include/linux/bcma/bcma_soc.h16
-rw-r--r--include/linux/blktrace_api.h2
-rw-r--r--include/linux/bma150.h46
-rw-r--r--include/linux/caif/caif_socket.h7
-rw-r--r--include/linux/can.h4
-rw-r--r--include/linux/can/Kbuild1
-rw-r--r--include/linux/can/bcm.h3
-rw-r--r--include/linux/can/core.h2
-rw-r--r--include/linux/can/dev.h1
-rw-r--r--include/linux/can/error.h2
-rw-r--r--include/linux/can/gw.h162
-rw-r--r--include/linux/can/netlink.h2
-rw-r--r--include/linux/can/raw.h2
-rw-r--r--include/linux/capability.h3
-rw-r--r--include/linux/ceph/libceph.h4
-rw-r--r--include/linux/ceph/messenger.h4
-rw-r--r--include/linux/clk.h43
-rw-r--r--include/linux/clkdev.h7
-rw-r--r--include/linux/clksrc-dbx500-prcmu.h20
-rw-r--r--include/linux/clockchips.h12
-rw-r--r--include/linux/cn_proc.h11
-rw-r--r--include/linux/compaction.h8
-rw-r--r--include/linux/compat.h3
-rw-r--r--include/linux/cpu_pm.h109
-rw-r--r--include/linux/crash_dump.h1
-rw-r--r--include/linux/crypto.h5
-rw-r--r--include/linux/cryptouser.h102
-rw-r--r--include/linux/devfreq.h238
-rw-r--r--include/linux/device.h126
-rw-r--r--include/linux/dma_remapping.h10
-rw-r--r--include/linux/dmar.h45
-rw-r--r--include/linux/drbd_tag_magic.h2
-rw-r--r--include/linux/dvb/frontend.h1
-rw-r--r--include/linux/dvb/version.h2
-rw-r--r--include/linux/dw_apb_timer.h2
-rw-r--r--include/linux/dynamic_debug.h81
-rw-r--r--include/linux/elf.h1
-rw-r--r--include/linux/ethtool.h180
-rw-r--r--include/linux/evm.h100
-rw-r--r--include/linux/ext3_fs.h16
-rw-r--r--include/linux/filter.h2
-rw-r--r--include/linux/freezer.h26
-rw-r--r--include/linux/fs.h47
-rw-r--r--include/linux/fscache-cache.h8
-rw-r--r--include/linux/fsl-diu-fb.h92
-rw-r--r--include/linux/gameport.h8
-rw-r--r--include/linux/genhd.h4
-rw-r--r--include/linux/gpio.h22
-rw-r--r--include/linux/hid.h3
-rw-r--r--include/linux/huge_mm.h5
-rw-r--r--include/linux/hyperv.h873
-rw-r--r--include/linux/i2c-omap.h5
-rw-r--r--include/linux/i2c.h17
-rw-r--r--include/linux/i2c/tsc2007.h2
-rw-r--r--include/linux/ieee80211.h156
-rw-r--r--include/linux/if.h1
-rw-r--r--include/linux/if_ether.h2
-rw-r--r--include/linux/if_link.h10
-rw-r--r--include/linux/if_macvlan.h1
-rw-r--r--include/linux/if_packet.h119
-rw-r--r--include/linux/if_pppol2tp.h2
-rw-r--r--include/linux/if_pppox.h9
-rw-r--r--include/linux/if_vlan.h6
-rw-r--r--include/linux/ima.h13
-rw-r--r--include/linux/in.h2
-rw-r--r--include/linux/inet_diag.h3
-rw-r--r--include/linux/init_task.h2
-rw-r--r--include/linux/input.h4
-rw-r--r--include/linux/input/adp5589.h157
-rw-r--r--include/linux/input/adxl34x.h21
-rw-r--r--include/linux/integrity.h39
-rw-r--r--include/linux/intel-iommu.h10
-rw-r--r--include/linux/interrupt.h41
-rw-r--r--include/linux/io-mapping.h6
-rw-r--r--include/linux/iommu.h76
-rw-r--r--include/linux/ip6_tunnel.h2
-rw-r--r--include/linux/ipx.h2
-rw-r--r--include/linux/irda.h9
-rw-r--r--include/linux/irq.h18
-rw-r--r--include/linux/irq_work.h15
-rw-r--r--include/linux/irqdesc.h1
-rw-r--r--include/linux/irqdomain.h16
-rw-r--r--include/linux/isdn.h2
-rw-r--r--include/linux/jiffies.h2
-rw-r--r--include/linux/kallsyms.h5
-rw-r--r--include/linux/kdb.h9
-rw-r--r--include/linux/kernel.h57
-rw-r--r--include/linux/kexec.h14
-rw-r--r--include/linux/kmod.h4
-rw-r--r--include/linux/kobject.h26
-rw-r--r--include/linux/kprobes.h2
-rw-r--r--include/linux/kthread.h4
-rw-r--r--include/linux/kvm.h6
-rw-r--r--include/linux/kvm_host.h32
-rw-r--r--include/linux/l2tp.h7
-rw-r--r--include/linux/lapb.h3
-rw-r--r--include/linux/libata.h20
-rw-r--r--include/linux/lis3lv02d.h1
-rw-r--r--include/linux/llc.h10
-rw-r--r--include/linux/llist.h77
-rw-r--r--include/linux/lockdep.h2
-rw-r--r--include/linux/memblock.h1
-rw-r--r--include/linux/memcontrol.h3
-rw-r--r--include/linux/mfd/tps6586x.h16
-rw-r--r--include/linux/mfd/twl6040.h46
-rw-r--r--include/linux/mfd/wm831x/core.h12
-rw-r--r--include/linux/mfd/wm831x/pdata.h3
-rw-r--r--include/linux/mfd/wm8400-private.h7
-rw-r--r--include/linux/mfd/wm8994/core.h10
-rw-r--r--include/linux/mfd/wm8994/registers.h88
-rw-r--r--include/linux/mii.h210
-rw-r--r--include/linux/mlx4/device.h17
-rw-r--r--include/linux/mlx4/qp.h3
-rw-r--r--include/linux/mm.h3
-rw-r--r--include/linux/mm_types.h39
-rw-r--r--include/linux/mmc/card.h58
-rw-r--r--include/linux/mmc/core.h9
-rw-r--r--include/linux/mmc/dw_mmc.h4
-rw-r--r--include/linux/mmc/host.h29
-rw-r--r--include/linux/mmc/mmc.h38
-rw-r--r--include/linux/mmc/sdhci.h8
-rw-r--r--include/linux/mmc/sdio.h2
-rw-r--r--include/linux/mmc/sh_mmcif.h4
-rw-r--r--include/linux/mmc/sh_mobile_sdhi.h4
-rw-r--r--include/linux/mmiotrace.h8
-rw-r--r--include/linux/mmzone.h13
-rw-r--r--include/linux/mod_devicetable.h9
-rw-r--r--include/linux/module.h12
-rw-r--r--include/linux/moduleparam.h20
-rw-r--r--include/linux/net_tstamp.h13
-rw-r--r--include/linux/netdevice.h64
-rw-r--r--include/linux/netfilter/xt_connlimit.h1
-rw-r--r--include/linux/netfilter/xt_conntrack.h1
-rw-r--r--include/linux/netfilter/xt_iprange.h1
-rw-r--r--include/linux/netfilter_arp/arp_tables.h14
-rw-r--r--include/linux/netfilter_decnet.h3
-rw-r--r--include/linux/netfilter_ipv4.h3
-rw-r--r--include/linux/netfilter_ipv4/ip_tables.h20
-rw-r--r--include/linux/netfilter_ipv6.h3
-rw-r--r--include/linux/netfilter_ipv6/ip6_tables.h22
-rw-r--r--include/linux/netlink.h3
-rw-r--r--include/linux/netrom.h2
-rw-r--r--include/linux/nfc.h8
-rw-r--r--include/linux/nfs4.h21
-rw-r--r--include/linux/nfsd/Kbuild2
-rw-r--r--include/linux/nfsd/const.h55
-rw-r--r--include/linux/nfsd/export.h2
-rw-r--r--include/linux/nfsd/nfsfh.h7
-rw-r--r--include/linux/nfsd/syscall.h116
-rw-r--r--include/linux/nl80211.h238
-rw-r--r--include/linux/of.h60
-rw-r--r--include/linux/of_irq.h3
-rw-r--r--include/linux/omap3isp.h2
-rw-r--r--include/linux/oom.h1
-rw-r--r--include/linux/opp.h12
-rw-r--r--include/linux/oprofile.h2
-rw-r--r--include/linux/pci-ats.h75
-rw-r--r--include/linux/pci.h4
-rw-r--r--include/linux/pci_ids.h5
-rw-r--r--include/linux/pci_regs.h20
-rw-r--r--include/linux/percpu_counter.h2
-rw-r--r--include/linux/perf_event.h5
-rw-r--r--include/linux/phonet.h5
-rw-r--r--include/linux/phy.h2
-rw-r--r--include/linux/pinctrl/machine.h107
-rw-r--r--include/linux/pinctrl/pinctrl.h133
-rw-r--r--include/linux/pinctrl/pinmux.h117
-rw-r--r--include/linux/platform_data/dwc3-omap.h47
-rw-r--r--include/linux/platform_data/exynos4_tmu.h83
-rw-r--r--include/linux/platform_data/leds-renesas-tpu.h14
-rw-r--r--include/linux/platform_data/mv_usb.h50
-rw-r--r--include/linux/platform_data/ntc_thermistor.h2
-rw-r--r--include/linux/platform_device.h65
-rw-r--r--include/linux/pm.h26
-rw-r--r--include/linux/pm_clock.h71
-rw-r--r--include/linux/pm_domain.h26
-rw-r--r--include/linux/pm_qos.h155
-rw-r--r--include/linux/pm_qos_params.h38
-rw-r--r--include/linux/pm_runtime.h42
-rw-r--r--include/linux/posix-timers.h5
-rw-r--r--include/linux/printk.h12
-rw-r--r--include/linux/proportions.h6
-rw-r--r--include/linux/pstore.h6
-rw-r--r--include/linux/quotaops.h2
-rw-r--r--include/linux/random.h13
-rw-r--r--include/linux/ratelimit.h6
-rw-r--r--include/linux/rcupdate.h300
-rw-r--r--include/linux/rcutiny.h20
-rw-r--r--include/linux/rcutree.h2
-rw-r--r--include/linux/regmap.h79
-rw-r--r--include/linux/regulator/consumer.h7
-rw-r--r--include/linux/regulator/driver.h3
-rw-r--r--include/linux/regulator/gpio-regulator.h87
-rw-r--r--include/linux/regulator/machine.h2
-rw-r--r--include/linux/rfkill-gpio.h4
-rw-r--r--include/linux/ring_buffer.h2
-rw-r--r--include/linux/rose.h7
-rw-r--r--include/linux/rtc/sirfsoc_rtciobrg.h18
-rw-r--r--include/linux/rwsem-spinlock.h2
-rw-r--r--include/linux/rwsem.h10
-rw-r--r--include/linux/sched.h18
-rw-r--r--include/linux/security.h32
-rw-r--r--include/linux/semaphore.h4
-rw-r--r--include/linux/seq_file.h3
-rw-r--r--include/linux/serial.h1
-rw-r--r--include/linux/serial_8250.h2
-rw-r--r--include/linux/serial_core.h10
-rw-r--r--include/linux/serial_reg.h1
-rw-r--r--include/linux/serio.h1
-rw-r--r--include/linux/sh_eth.h25
-rw-r--r--include/linux/shrinker.h1
-rw-r--r--include/linux/skbuff.h262
-rw-r--r--include/linux/slub_def.h4
-rw-r--r--include/linux/spi/l4f00242t03.h2
-rw-r--r--include/linux/ssb/ssb.h2
-rw-r--r--include/linux/ssb/ssb_regs.h40
-rw-r--r--include/linux/string.h1
-rw-r--r--include/linux/sungem_phy.h132
-rw-r--r--include/linux/sunrpc/clnt.h8
-rw-r--r--include/linux/sunrpc/svc.h32
-rw-r--r--include/linux/suspend.h95
-rw-r--r--include/linux/swap.h7
-rw-r--r--include/linux/syscalls.h13
-rw-r--r--include/linux/sysctl.h2
-rw-r--r--include/linux/sysfs.h1
-rw-r--r--include/linux/tcp.h7
-rw-r--r--include/linux/tipc_config.h4
-rw-r--r--include/linux/trace_clock.h1
-rw-r--r--include/linux/trace_seq.h8
-rw-r--r--include/linux/tracepoint.h25
-rw-r--r--include/linux/tty.h26
-rw-r--r--include/linux/types.h10
-rw-r--r--include/linux/uinput.h2
-rw-r--r--include/linux/uio_driver.h7
-rw-r--r--include/linux/un.h4
-rw-r--r--include/linux/usb.h20
-rw-r--r--include/linux/usb/Kbuild1
-rw-r--r--include/linux/usb/ch9.h46
-rw-r--r--include/linux/usb/gadget.h4
-rw-r--r--include/linux/usb/hcd.h3
-rw-r--r--include/linux/usb/r8a66597.h60
-rw-r--r--include/linux/usb/renesas_usbhs.h14
-rw-r--r--include/linux/videodev2.h92
-rw-r--r--include/linux/virtio.h5
-rw-r--r--include/linux/vmalloc.h1
-rw-r--r--include/linux/x25.h3
-rw-r--r--include/linux/xattr.h19
257 files changed, 6348 insertions, 1511 deletions
diff --git a/include/linux/alarmtimer.h b/include/linux/alarmtimer.h
index c5d6095b46f8..975009e1cbe6 100644
--- a/include/linux/alarmtimer.h
+++ b/include/linux/alarmtimer.h
@@ -13,6 +13,16 @@ enum alarmtimer_type {
13 ALARM_NUMTYPE, 13 ALARM_NUMTYPE,
14}; 14};
15 15
16enum alarmtimer_restart {
17 ALARMTIMER_NORESTART,
18 ALARMTIMER_RESTART,
19};
20
21
22#define ALARMTIMER_STATE_INACTIVE 0x00
23#define ALARMTIMER_STATE_ENQUEUED 0x01
24#define ALARMTIMER_STATE_CALLBACK 0x02
25
16/** 26/**
17 * struct alarm - Alarm timer structure 27 * struct alarm - Alarm timer structure
18 * @node: timerqueue node for adding to the event list this value 28 * @node: timerqueue node for adding to the event list this value
@@ -25,16 +35,45 @@ enum alarmtimer_type {
25 */ 35 */
26struct alarm { 36struct alarm {
27 struct timerqueue_node node; 37 struct timerqueue_node node;
28 ktime_t period; 38 enum alarmtimer_restart (*function)(struct alarm *, ktime_t now);
29 void (*function)(struct alarm *);
30 enum alarmtimer_type type; 39 enum alarmtimer_type type;
31 bool enabled; 40 int state;
32 void *data; 41 void *data;
33}; 42};
34 43
35void alarm_init(struct alarm *alarm, enum alarmtimer_type type, 44void alarm_init(struct alarm *alarm, enum alarmtimer_type type,
36 void (*function)(struct alarm *)); 45 enum alarmtimer_restart (*function)(struct alarm *, ktime_t));
37void alarm_start(struct alarm *alarm, ktime_t start, ktime_t period); 46void alarm_start(struct alarm *alarm, ktime_t start);
38void alarm_cancel(struct alarm *alarm); 47int alarm_try_to_cancel(struct alarm *alarm);
48int alarm_cancel(struct alarm *alarm);
49
50u64 alarm_forward(struct alarm *alarm, ktime_t now, ktime_t interval);
51
52/*
53 * A alarmtimer is active, when it is enqueued into timerqueue or the
54 * callback function is running.
55 */
56static inline int alarmtimer_active(const struct alarm *timer)
57{
58 return timer->state != ALARMTIMER_STATE_INACTIVE;
59}
60
61/*
62 * Helper function to check, whether the timer is on one of the queues
63 */
64static inline int alarmtimer_is_queued(struct alarm *timer)
65{
66 return timer->state & ALARMTIMER_STATE_ENQUEUED;
67}
68
69/*
70 * Helper function to check, whether the timer is running the callback
71 * function
72 */
73static inline int alarmtimer_callback_running(struct alarm *timer)
74{
75 return timer->state & ALARMTIMER_STATE_CALLBACK;
76}
77
39 78
40#endif 79#endif
diff --git a/include/linux/amba/pl061.h b/include/linux/amba/pl061.h
index 5ddd9ad4b19c..2412af944f1f 100644
--- a/include/linux/amba/pl061.h
+++ b/include/linux/amba/pl061.h
@@ -7,8 +7,7 @@ struct pl061_platform_data {
7 unsigned gpio_base; 7 unsigned gpio_base;
8 8
9 /* number of the first IRQ. 9 /* number of the first IRQ.
10 * If the IRQ functionality in not desired this must be set to 10 * If the IRQ functionality in not desired this must be set to NO_IRQ.
11 * (unsigned) -1.
12 */ 11 */
13 unsigned irq_base; 12 unsigned irq_base;
14 13
diff --git a/include/linux/atalk.h b/include/linux/atalk.h
index d34c187432ed..f57c36881c48 100644
--- a/include/linux/atalk.h
+++ b/include/linux/atalk.h
@@ -3,6 +3,7 @@
3 3
4#include <linux/types.h> 4#include <linux/types.h>
5#include <asm/byteorder.h> 5#include <asm/byteorder.h>
6#include <linux/socket.h>
6 7
7/* 8/*
8 * AppleTalk networking structures 9 * AppleTalk networking structures
@@ -28,7 +29,7 @@ struct atalk_addr {
28}; 29};
29 30
30struct sockaddr_at { 31struct sockaddr_at {
31 sa_family_t sat_family; 32 __kernel_sa_family_t sat_family;
32 __u8 sat_port; 33 __u8 sat_port;
33 struct atalk_addr sat_addr; 34 struct atalk_addr sat_addr;
34 char sat_zero[8]; 35 char sat_zero[8];
diff --git a/include/linux/atmel-mci.h b/include/linux/atmel-mci.h
index 3e09b345f4d6..4c7a4b2104bf 100644
--- a/include/linux/atmel-mci.h
+++ b/include/linux/atmel-mci.h
@@ -1,7 +1,7 @@
1#ifndef __LINUX_ATMEL_MCI_H 1#ifndef __LINUX_ATMEL_MCI_H
2#define __LINUX_ATMEL_MCI_H 2#define __LINUX_ATMEL_MCI_H
3 3
4#define ATMEL_MCI_MAX_NR_SLOTS 2 4#define ATMCI_MAX_NR_SLOTS 2
5 5
6/** 6/**
7 * struct mci_slot_pdata - board-specific per-slot configuration 7 * struct mci_slot_pdata - board-specific per-slot configuration
@@ -33,7 +33,7 @@ struct mci_slot_pdata {
33 */ 33 */
34struct mci_platform_data { 34struct mci_platform_data {
35 struct mci_dma_data *dma_slave; 35 struct mci_dma_data *dma_slave;
36 struct mci_slot_pdata slot[ATMEL_MCI_MAX_NR_SLOTS]; 36 struct mci_slot_pdata slot[ATMCI_MAX_NR_SLOTS];
37}; 37};
38 38
39#endif /* __LINUX_ATMEL_MCI_H */ 39#endif /* __LINUX_ATMEL_MCI_H */
diff --git a/include/linux/atmel_pdc.h b/include/linux/atmel_pdc.h
index 5058a31d2ce8..63499ce806ea 100644
--- a/include/linux/atmel_pdc.h
+++ b/include/linux/atmel_pdc.h
@@ -33,4 +33,6 @@
33 33
34#define ATMEL_PDC_PTSR 0x124 /* Transfer Status Register */ 34#define ATMEL_PDC_PTSR 0x124 /* Transfer Status Register */
35 35
36#define ATMEL_PDC_SCND_BUF_OFF 0x10 /* Offset between first and second buffer registers */
37
36#endif 38#endif
diff --git a/include/linux/audit.h b/include/linux/audit.h
index 0c8006129fb2..2f81c6f3b630 100644
--- a/include/linux/audit.h
+++ b/include/linux/audit.h
@@ -584,14 +584,13 @@ extern int audit_signals;
584#ifdef CONFIG_AUDIT 584#ifdef CONFIG_AUDIT
585/* These are defined in audit.c */ 585/* These are defined in audit.c */
586 /* Public API */ 586 /* Public API */
587extern void audit_log(struct audit_context *ctx, gfp_t gfp_mask, 587extern __printf(4, 5)
588 int type, const char *fmt, ...) 588void audit_log(struct audit_context *ctx, gfp_t gfp_mask, int type,
589 __attribute__((format(printf,4,5))); 589 const char *fmt, ...);
590 590
591extern struct audit_buffer *audit_log_start(struct audit_context *ctx, gfp_t gfp_mask, int type); 591extern struct audit_buffer *audit_log_start(struct audit_context *ctx, gfp_t gfp_mask, int type);
592extern void audit_log_format(struct audit_buffer *ab, 592extern __printf(2, 3)
593 const char *fmt, ...) 593void audit_log_format(struct audit_buffer *ab, const char *fmt, ...);
594 __attribute__((format(printf,2,3)));
595extern void audit_log_end(struct audit_buffer *ab); 594extern void audit_log_end(struct audit_buffer *ab);
596extern int audit_string_contains_control(const char *string, 595extern int audit_string_contains_control(const char *string,
597 size_t len); 596 size_t len);
diff --git a/include/linux/ax25.h b/include/linux/ax25.h
index 56c11f0dbd80..74c89a41732d 100644
--- a/include/linux/ax25.h
+++ b/include/linux/ax25.h
@@ -47,7 +47,7 @@ typedef struct {
47} ax25_address; 47} ax25_address;
48 48
49struct sockaddr_ax25 { 49struct sockaddr_ax25 {
50 sa_family_t sax25_family; 50 __kernel_sa_family_t sax25_family;
51 ax25_address sax25_call; 51 ax25_address sax25_call;
52 int sax25_ndigis; 52 int sax25_ndigis;
53 /* Digipeater ax25_address sets follow */ 53 /* Digipeater ax25_address sets follow */
diff --git a/include/linux/bcma/bcma.h b/include/linux/bcma/bcma.h
index 8c96654bef16..5dbd7055cb86 100644
--- a/include/linux/bcma/bcma.h
+++ b/include/linux/bcma/bcma.h
@@ -6,6 +6,7 @@
6 6
7#include <linux/bcma/bcma_driver_chipcommon.h> 7#include <linux/bcma/bcma_driver_chipcommon.h>
8#include <linux/bcma/bcma_driver_pci.h> 8#include <linux/bcma/bcma_driver_pci.h>
9#include <linux/bcma/bcma_driver_mips.h>
9#include <linux/ssb/ssb.h> /* SPROM sharing */ 10#include <linux/ssb/ssb.h> /* SPROM sharing */
10 11
11#include "bcma_regs.h" 12#include "bcma_regs.h"
@@ -14,9 +15,9 @@ struct bcma_device;
14struct bcma_bus; 15struct bcma_bus;
15 16
16enum bcma_hosttype { 17enum bcma_hosttype {
17 BCMA_HOSTTYPE_NONE,
18 BCMA_HOSTTYPE_PCI, 18 BCMA_HOSTTYPE_PCI,
19 BCMA_HOSTTYPE_SDIO, 19 BCMA_HOSTTYPE_SDIO,
20 BCMA_HOSTTYPE_SOC,
20}; 21};
21 22
22struct bcma_chipinfo { 23struct bcma_chipinfo {
@@ -130,6 +131,7 @@ struct bcma_device {
130 131
131 struct device dev; 132 struct device dev;
132 struct device *dma_dev; 133 struct device *dma_dev;
134
133 unsigned int irq; 135 unsigned int irq;
134 bool dev_registered; 136 bool dev_registered;
135 137
@@ -138,6 +140,9 @@ struct bcma_device {
138 u32 addr; 140 u32 addr;
139 u32 wrap; 141 u32 wrap;
140 142
143 void __iomem *io_addr;
144 void __iomem *io_wrap;
145
141 void *drvdata; 146 void *drvdata;
142 struct list_head list; 147 struct list_head list;
143}; 148};
@@ -190,9 +195,11 @@ struct bcma_bus {
190 struct bcma_device *mapped_core; 195 struct bcma_device *mapped_core;
191 struct list_head cores; 196 struct list_head cores;
192 u8 nr_cores; 197 u8 nr_cores;
198 u8 init_done:1;
193 199
194 struct bcma_drv_cc drv_cc; 200 struct bcma_drv_cc drv_cc;
195 struct bcma_drv_pci drv_pci; 201 struct bcma_drv_pci drv_pci;
202 struct bcma_drv_mips drv_mips;
196 203
197 /* We decided to share SPROM struct with SSB as long as we do not need 204 /* We decided to share SPROM struct with SSB as long as we do not need
198 * any hacks for BCMA. This simplifies drivers code. */ 205 * any hacks for BCMA. This simplifies drivers code. */
diff --git a/include/linux/bcma/bcma_driver_chipcommon.h b/include/linux/bcma/bcma_driver_chipcommon.h
index a0f684615ae5..1526d965ed06 100644
--- a/include/linux/bcma/bcma_driver_chipcommon.h
+++ b/include/linux/bcma/bcma_driver_chipcommon.h
@@ -24,6 +24,7 @@
24#define BCMA_CC_FLASHT_NONE 0x00000000 /* No flash */ 24#define BCMA_CC_FLASHT_NONE 0x00000000 /* No flash */
25#define BCMA_CC_FLASHT_STSER 0x00000100 /* ST serial flash */ 25#define BCMA_CC_FLASHT_STSER 0x00000100 /* ST serial flash */
26#define BCMA_CC_FLASHT_ATSER 0x00000200 /* Atmel serial flash */ 26#define BCMA_CC_FLASHT_ATSER 0x00000200 /* Atmel serial flash */
27#define BCMA_CC_FLASHT_NFLASH 0x00000200
27#define BCMA_CC_FLASHT_PARA 0x00000700 /* Parallel flash */ 28#define BCMA_CC_FLASHT_PARA 0x00000700 /* Parallel flash */
28#define BCMA_CC_CAP_PLLT 0x00038000 /* PLL Type */ 29#define BCMA_CC_CAP_PLLT 0x00038000 /* PLL Type */
29#define BCMA_PLLTYPE_NONE 0x00000000 30#define BCMA_PLLTYPE_NONE 0x00000000
@@ -178,6 +179,7 @@
178#define BCMA_CC_PROG_CFG 0x0120 179#define BCMA_CC_PROG_CFG 0x0120
179#define BCMA_CC_PROG_WAITCNT 0x0124 180#define BCMA_CC_PROG_WAITCNT 0x0124
180#define BCMA_CC_FLASH_CFG 0x0128 181#define BCMA_CC_FLASH_CFG 0x0128
182#define BCMA_CC_FLASH_CFG_DS 0x0010 /* Data size, 0=8bit, 1=16bit */
181#define BCMA_CC_FLASH_WAITCNT 0x012C 183#define BCMA_CC_FLASH_WAITCNT 0x012C
182/* 0x1E0 is defined as shared BCMA_CLKCTLST */ 184/* 0x1E0 is defined as shared BCMA_CLKCTLST */
183#define BCMA_CC_HW_WORKAROUND 0x01E4 /* Hardware workaround (rev >= 20) */ 185#define BCMA_CC_HW_WORKAROUND 0x01E4 /* Hardware workaround (rev >= 20) */
@@ -239,6 +241,64 @@
239#define BCMA_CC_SPROM 0x0800 /* SPROM beginning */ 241#define BCMA_CC_SPROM 0x0800 /* SPROM beginning */
240#define BCMA_CC_SPROM_PCIE6 0x0830 /* SPROM beginning on PCIe rev >= 6 */ 242#define BCMA_CC_SPROM_PCIE6 0x0830 /* SPROM beginning on PCIe rev >= 6 */
241 243
244/* Divider allocation in 4716/47162/5356 */
245#define BCMA_CC_PMU5_MAINPLL_CPU 1
246#define BCMA_CC_PMU5_MAINPLL_MEM 2
247#define BCMA_CC_PMU5_MAINPLL_SSB 3
248
249/* PLL usage in 4716/47162 */
250#define BCMA_CC_PMU4716_MAINPLL_PLL0 12
251
252/* PLL usage in 5356/5357 */
253#define BCMA_CC_PMU5356_MAINPLL_PLL0 0
254#define BCMA_CC_PMU5357_MAINPLL_PLL0 0
255
256/* 4706 PMU */
257#define BCMA_CC_PMU4706_MAINPLL_PLL0 0
258
259/* ALP clock on pre-PMU chips */
260#define BCMA_CC_PMU_ALP_CLOCK 20000000
261/* HT clock for systems with PMU-enabled chipcommon */
262#define BCMA_CC_PMU_HT_CLOCK 80000000
263
264/* PMU rev 5 (& 6) */
265#define BCMA_CC_PPL_P1P2_OFF 0
266#define BCMA_CC_PPL_P1_MASK 0x0f000000
267#define BCMA_CC_PPL_P1_SHIFT 24
268#define BCMA_CC_PPL_P2_MASK 0x00f00000
269#define BCMA_CC_PPL_P2_SHIFT 20
270#define BCMA_CC_PPL_M14_OFF 1
271#define BCMA_CC_PPL_MDIV_MASK 0x000000ff
272#define BCMA_CC_PPL_MDIV_WIDTH 8
273#define BCMA_CC_PPL_NM5_OFF 2
274#define BCMA_CC_PPL_NDIV_MASK 0xfff00000
275#define BCMA_CC_PPL_NDIV_SHIFT 20
276#define BCMA_CC_PPL_FMAB_OFF 3
277#define BCMA_CC_PPL_MRAT_MASK 0xf0000000
278#define BCMA_CC_PPL_MRAT_SHIFT 28
279#define BCMA_CC_PPL_ABRAT_MASK 0x08000000
280#define BCMA_CC_PPL_ABRAT_SHIFT 27
281#define BCMA_CC_PPL_FDIV_MASK 0x07ffffff
282#define BCMA_CC_PPL_PLLCTL_OFF 4
283#define BCMA_CC_PPL_PCHI_OFF 5
284#define BCMA_CC_PPL_PCHI_MASK 0x0000003f
285
286/* BCM4331 ChipControl numbers. */
287#define BCMA_CHIPCTL_4331_BT_COEXIST BIT(0) /* 0 disable */
288#define BCMA_CHIPCTL_4331_SECI BIT(1) /* 0 SECI is disabled (JATG functional) */
289#define BCMA_CHIPCTL_4331_EXT_LNA BIT(2) /* 0 disable */
290#define BCMA_CHIPCTL_4331_SPROM_GPIO13_15 BIT(3) /* sprom/gpio13-15 mux */
291#define BCMA_CHIPCTL_4331_EXTPA_EN BIT(4) /* 0 ext pa disable, 1 ext pa enabled */
292#define BCMA_CHIPCTL_4331_GPIOCLK_ON_SPROMCS BIT(5) /* set drive out GPIO_CLK on sprom_cs pin */
293#define BCMA_CHIPCTL_4331_PCIE_MDIO_ON_SPROMCS BIT(6) /* use sprom_cs pin as PCIE mdio interface */
294#define BCMA_CHIPCTL_4331_EXTPA_ON_GPIO2_5 BIT(7) /* aband extpa will be at gpio2/5 and sprom_dout */
295#define BCMA_CHIPCTL_4331_OVR_PIPEAUXCLKEN BIT(8) /* override core control on pipe_AuxClkEnable */
296#define BCMA_CHIPCTL_4331_OVR_PIPEAUXPWRDOWN BIT(9) /* override core control on pipe_AuxPowerDown */
297#define BCMA_CHIPCTL_4331_PCIE_AUXCLKEN BIT(10) /* pcie_auxclkenable */
298#define BCMA_CHIPCTL_4331_PCIE_PIPE_PLLDOWN BIT(11) /* pcie_pipe_pllpowerdown */
299#define BCMA_CHIPCTL_4331_BT_SHD0_ON_GPIO4 BIT(16) /* enable bt_shd0 at gpio4 */
300#define BCMA_CHIPCTL_4331_BT_SHD1_ON_GPIO5 BIT(17) /* enable bt_shd1 at gpio5 */
301
242/* Data for the PMU, if available. 302/* Data for the PMU, if available.
243 * Check availability with ((struct bcma_chipcommon)->capabilities & BCMA_CC_CAP_PMU) 303 * Check availability with ((struct bcma_chipcommon)->capabilities & BCMA_CC_CAP_PMU)
244 */ 304 */
@@ -247,14 +307,37 @@ struct bcma_chipcommon_pmu {
247 u32 crystalfreq; /* The active crystal frequency (in kHz) */ 307 u32 crystalfreq; /* The active crystal frequency (in kHz) */
248}; 308};
249 309
310#ifdef CONFIG_BCMA_DRIVER_MIPS
311struct bcma_pflash {
312 u8 buswidth;
313 u32 window;
314 u32 window_size;
315};
316
317struct bcma_serial_port {
318 void *regs;
319 unsigned long clockspeed;
320 unsigned int irq;
321 unsigned int baud_base;
322 unsigned int reg_shift;
323};
324#endif /* CONFIG_BCMA_DRIVER_MIPS */
325
250struct bcma_drv_cc { 326struct bcma_drv_cc {
251 struct bcma_device *core; 327 struct bcma_device *core;
252 u32 status; 328 u32 status;
253 u32 capabilities; 329 u32 capabilities;
254 u32 capabilities_ext; 330 u32 capabilities_ext;
331 u8 setup_done:1;
255 /* Fast Powerup Delay constant */ 332 /* Fast Powerup Delay constant */
256 u16 fast_pwrup_delay; 333 u16 fast_pwrup_delay;
257 struct bcma_chipcommon_pmu pmu; 334 struct bcma_chipcommon_pmu pmu;
335#ifdef CONFIG_BCMA_DRIVER_MIPS
336 struct bcma_pflash pflash;
337
338 int nr_serial_ports;
339 struct bcma_serial_port serial_ports[4];
340#endif /* CONFIG_BCMA_DRIVER_MIPS */
258}; 341};
259 342
260/* Register access */ 343/* Register access */
@@ -275,6 +358,8 @@ extern void bcma_core_chipcommon_init(struct bcma_drv_cc *cc);
275extern void bcma_chipco_suspend(struct bcma_drv_cc *cc); 358extern void bcma_chipco_suspend(struct bcma_drv_cc *cc);
276extern void bcma_chipco_resume(struct bcma_drv_cc *cc); 359extern void bcma_chipco_resume(struct bcma_drv_cc *cc);
277 360
361void bcma_chipco_bcm4331_ext_pa_lines_ctl(struct bcma_drv_cc *cc, bool enable);
362
278extern void bcma_chipco_watchdog_timer_set(struct bcma_drv_cc *cc, 363extern void bcma_chipco_watchdog_timer_set(struct bcma_drv_cc *cc,
279 u32 ticks); 364 u32 ticks);
280 365
@@ -293,4 +378,13 @@ u32 bcma_chipco_gpio_polarity(struct bcma_drv_cc *cc, u32 mask, u32 value);
293/* PMU support */ 378/* PMU support */
294extern void bcma_pmu_init(struct bcma_drv_cc *cc); 379extern void bcma_pmu_init(struct bcma_drv_cc *cc);
295 380
381extern void bcma_chipco_pll_write(struct bcma_drv_cc *cc, u32 offset,
382 u32 value);
383extern void bcma_chipco_pll_maskset(struct bcma_drv_cc *cc, u32 offset,
384 u32 mask, u32 set);
385extern void bcma_chipco_chipctl_maskset(struct bcma_drv_cc *cc,
386 u32 offset, u32 mask, u32 set);
387extern void bcma_chipco_regctl_maskset(struct bcma_drv_cc *cc,
388 u32 offset, u32 mask, u32 set);
389
296#endif /* LINUX_BCMA_DRIVER_CC_H_ */ 390#endif /* LINUX_BCMA_DRIVER_CC_H_ */
diff --git a/include/linux/bcma/bcma_driver_mips.h b/include/linux/bcma/bcma_driver_mips.h
new file mode 100644
index 000000000000..c0043645cdcb
--- /dev/null
+++ b/include/linux/bcma/bcma_driver_mips.h
@@ -0,0 +1,51 @@
1#ifndef LINUX_BCMA_DRIVER_MIPS_H_
2#define LINUX_BCMA_DRIVER_MIPS_H_
3
4#define BCMA_MIPS_IPSFLAG 0x0F08
5/* which sbflags get routed to mips interrupt 1 */
6#define BCMA_MIPS_IPSFLAG_IRQ1 0x0000003F
7#define BCMA_MIPS_IPSFLAG_IRQ1_SHIFT 0
8/* which sbflags get routed to mips interrupt 2 */
9#define BCMA_MIPS_IPSFLAG_IRQ2 0x00003F00
10#define BCMA_MIPS_IPSFLAG_IRQ2_SHIFT 8
11/* which sbflags get routed to mips interrupt 3 */
12#define BCMA_MIPS_IPSFLAG_IRQ3 0x003F0000
13#define BCMA_MIPS_IPSFLAG_IRQ3_SHIFT 16
14/* which sbflags get routed to mips interrupt 4 */
15#define BCMA_MIPS_IPSFLAG_IRQ4 0x3F000000
16#define BCMA_MIPS_IPSFLAG_IRQ4_SHIFT 24
17
18/* MIPS 74K core registers */
19#define BCMA_MIPS_MIPS74K_CORECTL 0x0000
20#define BCMA_MIPS_MIPS74K_EXCEPTBASE 0x0004
21#define BCMA_MIPS_MIPS74K_BIST 0x000C
22#define BCMA_MIPS_MIPS74K_INTMASK_INT0 0x0014
23#define BCMA_MIPS_MIPS74K_INTMASK(int) \
24 ((int) * 4 + BCMA_MIPS_MIPS74K_INTMASK_INT0)
25#define BCMA_MIPS_MIPS74K_NMIMASK 0x002C
26#define BCMA_MIPS_MIPS74K_GPIOSEL 0x0040
27#define BCMA_MIPS_MIPS74K_GPIOOUT 0x0044
28#define BCMA_MIPS_MIPS74K_GPIOEN 0x0048
29#define BCMA_MIPS_MIPS74K_CLKCTLST 0x01E0
30
31#define BCMA_MIPS_OOBSELOUTA30 0x100
32
33struct bcma_device;
34
35struct bcma_drv_mips {
36 struct bcma_device *core;
37 u8 setup_done:1;
38 unsigned int assigned_irqs;
39};
40
41#ifdef CONFIG_BCMA_DRIVER_MIPS
42extern void bcma_core_mips_init(struct bcma_drv_mips *mcore);
43#else
44static inline void bcma_core_mips_init(struct bcma_drv_mips *mcore) { }
45#endif
46
47extern u32 bcma_cpu_clock(struct bcma_drv_mips *mcore);
48
49extern unsigned int bcma_core_mips_irq(struct bcma_device *dev);
50
51#endif /* LINUX_BCMA_DRIVER_MIPS_H_ */
diff --git a/include/linux/bcma/bcma_soc.h b/include/linux/bcma/bcma_soc.h
new file mode 100644
index 000000000000..4203c5593b9f
--- /dev/null
+++ b/include/linux/bcma/bcma_soc.h
@@ -0,0 +1,16 @@
1#ifndef LINUX_BCMA_SOC_H_
2#define LINUX_BCMA_SOC_H_
3
4#include <linux/bcma/bcma.h>
5
6struct bcma_soc {
7 struct bcma_bus bus;
8 struct bcma_device core_cc;
9 struct bcma_device core_mips;
10};
11
12int __init bcma_host_soc_register(struct bcma_soc *soc);
13
14int bcma_bus_register(struct bcma_bus *bus);
15
16#endif /* LINUX_BCMA_SOC_H_ */
diff --git a/include/linux/blktrace_api.h b/include/linux/blktrace_api.h
index 8e9e4bc6d73b..4d1a0748eaf8 100644
--- a/include/linux/blktrace_api.h
+++ b/include/linux/blktrace_api.h
@@ -170,7 +170,7 @@ extern void blk_trace_shutdown(struct request_queue *);
170extern int do_blk_trace_setup(struct request_queue *q, char *name, 170extern int do_blk_trace_setup(struct request_queue *q, char *name,
171 dev_t dev, struct block_device *bdev, 171 dev_t dev, struct block_device *bdev,
172 struct blk_user_trace_setup *buts); 172 struct blk_user_trace_setup *buts);
173extern __attribute__((format(printf, 2, 3))) 173extern __printf(2, 3)
174void __trace_note_message(struct blk_trace *, const char *fmt, ...); 174void __trace_note_message(struct blk_trace *, const char *fmt, ...);
175 175
176/** 176/**
diff --git a/include/linux/bma150.h b/include/linux/bma150.h
new file mode 100644
index 000000000000..7911fda23bb4
--- /dev/null
+++ b/include/linux/bma150.h
@@ -0,0 +1,46 @@
1/*
2 * Copyright (c) 2011 Bosch Sensortec GmbH
3 * Copyright (c) 2011 Unixphere
4 *
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation; either version 2 of the License, or
8 * (at your option) any later version.
9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
14 *
15 * You should have received a copy of the GNU General Public License
16 * along with this program; if not, write to the Free Software
17 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
18 */
19
20#ifndef _BMA150_H_
21#define _BMA150_H_
22
23#define BMA150_DRIVER "bma150"
24
25struct bma150_cfg {
26 bool any_motion_int; /* Set to enable any-motion interrupt */
27 bool hg_int; /* Set to enable high-G interrupt */
28 bool lg_int; /* Set to enable low-G interrupt */
29 unsigned char any_motion_dur; /* Any-motion duration */
30 unsigned char any_motion_thres; /* Any-motion threshold */
31 unsigned char hg_hyst; /* High-G hysterisis */
32 unsigned char hg_dur; /* High-G duration */
33 unsigned char hg_thres; /* High-G threshold */
34 unsigned char lg_hyst; /* Low-G hysterisis */
35 unsigned char lg_dur; /* Low-G duration */
36 unsigned char lg_thres; /* Low-G threshold */
37 unsigned char range; /* BMA0150_RANGE_xxx (in G) */
38 unsigned char bandwidth; /* BMA0150_BW_xxx (in Hz) */
39};
40
41struct bma150_platform_data {
42 struct bma150_cfg cfg;
43 int (*irq_gpio_cfg)(void);
44};
45
46#endif /* _BMA150_H_ */
diff --git a/include/linux/caif/caif_socket.h b/include/linux/caif/caif_socket.h
index d9cb19b7cff7..3f3bac6af7bc 100644
--- a/include/linux/caif/caif_socket.h
+++ b/include/linux/caif/caif_socket.h
@@ -9,12 +9,7 @@
9#define _LINUX_CAIF_SOCKET_H 9#define _LINUX_CAIF_SOCKET_H
10 10
11#include <linux/types.h> 11#include <linux/types.h>
12
13#ifdef __KERNEL__
14#include <linux/socket.h> 12#include <linux/socket.h>
15#else
16#include <sys/socket.h>
17#endif
18 13
19/** 14/**
20 * enum caif_link_selector - Physical Link Selection. 15 * enum caif_link_selector - Physical Link Selection.
@@ -144,7 +139,7 @@ enum caif_debug_service {
144 * CAIF Channel. It defines the service to connect to on the modem. 139 * CAIF Channel. It defines the service to connect to on the modem.
145 */ 140 */
146struct sockaddr_caif { 141struct sockaddr_caif {
147 sa_family_t family; 142 __kernel_sa_family_t family;
148 union { 143 union {
149 struct { 144 struct {
150 __u8 type; /* type: enum caif_at_type */ 145 __u8 type; /* type: enum caif_at_type */
diff --git a/include/linux/can.h b/include/linux/can.h
index d18333302cbd..9a19bcb3eeaf 100644
--- a/include/linux/can.h
+++ b/include/linux/can.h
@@ -8,8 +8,6 @@
8 * Copyright (c) 2002-2007 Volkswagen Group Electronic Research 8 * Copyright (c) 2002-2007 Volkswagen Group Electronic Research
9 * All rights reserved. 9 * All rights reserved.
10 * 10 *
11 * Send feedback to <socketcan-users@lists.berlios.de>
12 *
13 */ 11 */
14 12
15#ifndef CAN_H 13#ifndef CAN_H
@@ -78,7 +76,7 @@ struct can_frame {
78 * @can_addr: protocol specific address information 76 * @can_addr: protocol specific address information
79 */ 77 */
80struct sockaddr_can { 78struct sockaddr_can {
81 sa_family_t can_family; 79 __kernel_sa_family_t can_family;
82 int can_ifindex; 80 int can_ifindex;
83 union { 81 union {
84 /* transport protocol class address information (e.g. ISOTP) */ 82 /* transport protocol class address information (e.g. ISOTP) */
diff --git a/include/linux/can/Kbuild b/include/linux/can/Kbuild
index 8cb05aae661c..c62b7f1728f9 100644
--- a/include/linux/can/Kbuild
+++ b/include/linux/can/Kbuild
@@ -1,4 +1,5 @@
1header-y += raw.h 1header-y += raw.h
2header-y += bcm.h 2header-y += bcm.h
3header-y += gw.h
3header-y += error.h 4header-y += error.h
4header-y += netlink.h 5header-y += netlink.h
diff --git a/include/linux/can/bcm.h b/include/linux/can/bcm.h
index 1432b278c52d..3ebe387fea4d 100644
--- a/include/linux/can/bcm.h
+++ b/include/linux/can/bcm.h
@@ -7,14 +7,13 @@
7 * Copyright (c) 2002-2007 Volkswagen Group Electronic Research 7 * Copyright (c) 2002-2007 Volkswagen Group Electronic Research
8 * All rights reserved. 8 * All rights reserved.
9 * 9 *
10 * Send feedback to <socketcan-users@lists.berlios.de>
11 *
12 */ 10 */
13 11
14#ifndef CAN_BCM_H 12#ifndef CAN_BCM_H
15#define CAN_BCM_H 13#define CAN_BCM_H
16 14
17#include <linux/types.h> 15#include <linux/types.h>
16#include <linux/can.h>
18 17
19/** 18/**
20 * struct bcm_msg_head - head of messages to/from the broadcast manager 19 * struct bcm_msg_head - head of messages to/from the broadcast manager
diff --git a/include/linux/can/core.h b/include/linux/can/core.h
index 5ce6b5d62ecc..0ccc1cd28b95 100644
--- a/include/linux/can/core.h
+++ b/include/linux/can/core.h
@@ -8,8 +8,6 @@
8 * Copyright (c) 2002-2007 Volkswagen Group Electronic Research 8 * Copyright (c) 2002-2007 Volkswagen Group Electronic Research
9 * All rights reserved. 9 * All rights reserved.
10 * 10 *
11 * Send feedback to <socketcan-users@lists.berlios.de>
12 *
13 */ 11 */
14 12
15#ifndef CAN_CORE_H 13#ifndef CAN_CORE_H
diff --git a/include/linux/can/dev.h b/include/linux/can/dev.h
index cc0bb4961669..a0969fcb72b9 100644
--- a/include/linux/can/dev.h
+++ b/include/linux/can/dev.h
@@ -8,7 +8,6 @@
8 * 8 *
9 * Copyright (C) 2008 Wolfgang Grandegger <wg@grandegger.com> 9 * Copyright (C) 2008 Wolfgang Grandegger <wg@grandegger.com>
10 * 10 *
11 * Send feedback to <socketcan-users@lists.berlios.de>
12 */ 11 */
13 12
14#ifndef CAN_DEV_H 13#ifndef CAN_DEV_H
diff --git a/include/linux/can/error.h b/include/linux/can/error.h
index 5958074302a4..63e855ea6b84 100644
--- a/include/linux/can/error.h
+++ b/include/linux/can/error.h
@@ -7,8 +7,6 @@
7 * Copyright (c) 2002-2007 Volkswagen Group Electronic Research 7 * Copyright (c) 2002-2007 Volkswagen Group Electronic Research
8 * All rights reserved. 8 * All rights reserved.
9 * 9 *
10 * Send feedback to <socketcan-users@lists.berlios.de>
11 *
12 */ 10 */
13 11
14#ifndef CAN_ERROR_H 12#ifndef CAN_ERROR_H
diff --git a/include/linux/can/gw.h b/include/linux/can/gw.h
new file mode 100644
index 000000000000..8e1db18c3cb6
--- /dev/null
+++ b/include/linux/can/gw.h
@@ -0,0 +1,162 @@
1/*
2 * linux/can/gw.h
3 *
4 * Definitions for CAN frame Gateway/Router/Bridge
5 *
6 * Author: Oliver Hartkopp <oliver.hartkopp@volkswagen.de>
7 * Copyright (c) 2011 Volkswagen Group Electronic Research
8 * All rights reserved.
9 *
10 */
11
12#ifndef CAN_GW_H
13#define CAN_GW_H
14
15#include <linux/types.h>
16#include <linux/can.h>
17
18struct rtcanmsg {
19 __u8 can_family;
20 __u8 gwtype;
21 __u16 flags;
22};
23
24/* CAN gateway types */
25enum {
26 CGW_TYPE_UNSPEC,
27 CGW_TYPE_CAN_CAN, /* CAN->CAN routing */
28 __CGW_TYPE_MAX
29};
30
31#define CGW_TYPE_MAX (__CGW_TYPE_MAX - 1)
32
33/* CAN rtnetlink attribute definitions */
34enum {
35 CGW_UNSPEC,
36 CGW_MOD_AND, /* CAN frame modification binary AND */
37 CGW_MOD_OR, /* CAN frame modification binary OR */
38 CGW_MOD_XOR, /* CAN frame modification binary XOR */
39 CGW_MOD_SET, /* CAN frame modification set alternate values */
40 CGW_CS_XOR, /* set data[] XOR checksum into data[index] */
41 CGW_CS_CRC8, /* set data[] CRC8 checksum into data[index] */
42 CGW_HANDLED, /* number of handled CAN frames */
43 CGW_DROPPED, /* number of dropped CAN frames */
44 CGW_SRC_IF, /* ifindex of source network interface */
45 CGW_DST_IF, /* ifindex of destination network interface */
46 CGW_FILTER, /* specify struct can_filter on source CAN device */
47 __CGW_MAX
48};
49
50#define CGW_MAX (__CGW_MAX - 1)
51
52#define CGW_FLAGS_CAN_ECHO 0x01
53#define CGW_FLAGS_CAN_SRC_TSTAMP 0x02
54
55#define CGW_MOD_FUNCS 4 /* AND OR XOR SET */
56
57/* CAN frame elements that are affected by curr. 3 CAN frame modifications */
58#define CGW_MOD_ID 0x01
59#define CGW_MOD_DLC 0x02
60#define CGW_MOD_DATA 0x04
61
62#define CGW_FRAME_MODS 3 /* ID DLC DATA */
63
64#define MAX_MODFUNCTIONS (CGW_MOD_FUNCS * CGW_FRAME_MODS)
65
66struct cgw_frame_mod {
67 struct can_frame cf;
68 __u8 modtype;
69} __attribute__((packed));
70
71#define CGW_MODATTR_LEN sizeof(struct cgw_frame_mod)
72
73struct cgw_csum_xor {
74 __s8 from_idx;
75 __s8 to_idx;
76 __s8 result_idx;
77 __u8 init_xor_val;
78} __attribute__((packed));
79
80struct cgw_csum_crc8 {
81 __s8 from_idx;
82 __s8 to_idx;
83 __s8 result_idx;
84 __u8 init_crc_val;
85 __u8 final_xor_val;
86 __u8 crctab[256];
87 __u8 profile;
88 __u8 profile_data[20];
89} __attribute__((packed));
90
91/* length of checksum operation parameters. idx = index in CAN frame data[] */
92#define CGW_CS_XOR_LEN sizeof(struct cgw_csum_xor)
93#define CGW_CS_CRC8_LEN sizeof(struct cgw_csum_crc8)
94
95/* CRC8 profiles (compute CRC for additional data elements - see below) */
96enum {
97 CGW_CRC8PRF_UNSPEC,
98 CGW_CRC8PRF_1U8, /* compute one additional u8 value */
99 CGW_CRC8PRF_16U8, /* u8 value table indexed by data[1] & 0xF */
100 CGW_CRC8PRF_SFFID_XOR, /* (can_id & 0xFF) ^ (can_id >> 8 & 0xFF) */
101 __CGW_CRC8PRF_MAX
102};
103
104#define CGW_CRC8PRF_MAX (__CGW_CRC8PRF_MAX - 1)
105
106/*
107 * CAN rtnetlink attribute contents in detail
108 *
109 * CGW_XXX_IF (length 4 bytes):
110 * Sets an interface index for source/destination network interfaces.
111 * For the CAN->CAN gwtype the indices of _two_ CAN interfaces are mandatory.
112 *
113 * CGW_FILTER (length 8 bytes):
114 * Sets a CAN receive filter for the gateway job specified by the
115 * struct can_filter described in include/linux/can.h
116 *
117 * CGW_MOD_XXX (length 17 bytes):
118 * Specifies a modification that's done to a received CAN frame before it is
119 * send out to the destination interface.
120 *
121 * <struct can_frame> data used as operator
122 * <u8> affected CAN frame elements
123 *
124 * CGW_CS_XOR (length 4 bytes):
125 * Set a simple XOR checksum starting with an initial value into
126 * data[result-idx] using data[start-idx] .. data[end-idx]
127 *
128 * The XOR checksum is calculated like this:
129 *
130 * xor = init_xor_val
131 *
132 * for (i = from_idx .. to_idx)
133 * xor ^= can_frame.data[i]
134 *
135 * can_frame.data[ result_idx ] = xor
136 *
137 * CGW_CS_CRC8 (length 282 bytes):
138 * Set a CRC8 value into data[result-idx] using a given 256 byte CRC8 table,
139 * a given initial value and a defined input data[start-idx] .. data[end-idx].
140 * Finally the result value is XOR'ed with the final_xor_val.
141 *
142 * The CRC8 checksum is calculated like this:
143 *
144 * crc = init_crc_val
145 *
146 * for (i = from_idx .. to_idx)
147 * crc = crctab[ crc ^ can_frame.data[i] ]
148 *
149 * can_frame.data[ result_idx ] = crc ^ final_xor_val
150 *
151 * The calculated CRC may contain additional source data elements that can be
152 * defined in the handling of 'checksum profiles' e.g. shown in AUTOSAR specs
153 * like http://www.autosar.org/download/R4.0/AUTOSAR_SWS_E2ELibrary.pdf
154 * E.g. the profile_data[] may contain additional u8 values (called DATA_IDs)
155 * that are used depending on counter values inside the CAN frame data[].
156 * So far only three profiles have been implemented for illustration.
157 *
158 * Remark: In general the attribute data is a linear buffer.
159 * Beware of sending unpacked or aligned structs!
160 */
161
162#endif
diff --git a/include/linux/can/netlink.h b/include/linux/can/netlink.h
index 34542d374dd8..14966ddb7df1 100644
--- a/include/linux/can/netlink.h
+++ b/include/linux/can/netlink.h
@@ -5,8 +5,6 @@
5 * 5 *
6 * Copyright (c) 2009 Wolfgang Grandegger <wg@grandegger.com> 6 * Copyright (c) 2009 Wolfgang Grandegger <wg@grandegger.com>
7 * 7 *
8 * Send feedback to <socketcan-users@lists.berlios.de>
9 *
10 */ 8 */
11 9
12#ifndef CAN_NETLINK_H 10#ifndef CAN_NETLINK_H
diff --git a/include/linux/can/raw.h b/include/linux/can/raw.h
index b2a0f87492c5..781f3a3701be 100644
--- a/include/linux/can/raw.h
+++ b/include/linux/can/raw.h
@@ -8,8 +8,6 @@
8 * Copyright (c) 2002-2007 Volkswagen Group Electronic Research 8 * Copyright (c) 2002-2007 Volkswagen Group Electronic Research
9 * All rights reserved. 9 * All rights reserved.
10 * 10 *
11 * Send feedback to <socketcan-users@lists.berlios.de>
12 *
13 */ 11 */
14 12
15#ifndef CAN_RAW_H 13#ifndef CAN_RAW_H
diff --git a/include/linux/capability.h b/include/linux/capability.h
index c42112350003..a63d13d84ad8 100644
--- a/include/linux/capability.h
+++ b/include/linux/capability.h
@@ -198,7 +198,7 @@ struct cpu_vfs_cap_data {
198/* Allow modification of routing tables */ 198/* Allow modification of routing tables */
199/* Allow setting arbitrary process / process group ownership on 199/* Allow setting arbitrary process / process group ownership on
200 sockets */ 200 sockets */
201/* Allow binding to any address for transparent proxying */ 201/* Allow binding to any address for transparent proxying (also via NET_RAW) */
202/* Allow setting TOS (type of service) */ 202/* Allow setting TOS (type of service) */
203/* Allow setting promiscuous mode */ 203/* Allow setting promiscuous mode */
204/* Allow clearing driver statistics */ 204/* Allow clearing driver statistics */
@@ -210,6 +210,7 @@ struct cpu_vfs_cap_data {
210 210
211/* Allow use of RAW sockets */ 211/* Allow use of RAW sockets */
212/* Allow use of PACKET sockets */ 212/* Allow use of PACKET sockets */
213/* Allow binding to any address for transparent proxying (also via NET_ADMIN) */
213 214
214#define CAP_NET_RAW 13 215#define CAP_NET_RAW 13
215 216
diff --git a/include/linux/ceph/libceph.h b/include/linux/ceph/libceph.h
index 563755181c1e..95bd8502e715 100644
--- a/include/linux/ceph/libceph.h
+++ b/include/linux/ceph/libceph.h
@@ -215,7 +215,9 @@ extern void ceph_destroy_options(struct ceph_options *opt);
215extern int ceph_compare_options(struct ceph_options *new_opt, 215extern int ceph_compare_options(struct ceph_options *new_opt,
216 struct ceph_client *client); 216 struct ceph_client *client);
217extern struct ceph_client *ceph_create_client(struct ceph_options *opt, 217extern struct ceph_client *ceph_create_client(struct ceph_options *opt,
218 void *private); 218 void *private,
219 unsigned supported_features,
220 unsigned required_features);
219extern u64 ceph_client_id(struct ceph_client *client); 221extern u64 ceph_client_id(struct ceph_client *client);
220extern void ceph_destroy_client(struct ceph_client *client); 222extern void ceph_destroy_client(struct ceph_client *client);
221extern int __ceph_open_session(struct ceph_client *client, 223extern int __ceph_open_session(struct ceph_client *client,
diff --git a/include/linux/ceph/messenger.h b/include/linux/ceph/messenger.h
index d7adf151d335..ffbeb2c217b4 100644
--- a/include/linux/ceph/messenger.h
+++ b/include/linux/ceph/messenger.h
@@ -6,7 +6,6 @@
6#include <linux/net.h> 6#include <linux/net.h>
7#include <linux/radix-tree.h> 7#include <linux/radix-tree.h>
8#include <linux/uio.h> 8#include <linux/uio.h>
9#include <linux/version.h>
10#include <linux/workqueue.h> 9#include <linux/workqueue.h>
11 10
12#include "types.h" 11#include "types.h"
@@ -238,7 +237,8 @@ extern void ceph_con_keepalive(struct ceph_connection *con);
238extern struct ceph_connection *ceph_con_get(struct ceph_connection *con); 237extern struct ceph_connection *ceph_con_get(struct ceph_connection *con);
239extern void ceph_con_put(struct ceph_connection *con); 238extern void ceph_con_put(struct ceph_connection *con);
240 239
241extern struct ceph_msg *ceph_msg_new(int type, int front_len, gfp_t flags); 240extern struct ceph_msg *ceph_msg_new(int type, int front_len, gfp_t flags,
241 bool can_fail);
242extern void ceph_msg_kfree(struct ceph_msg *m); 242extern void ceph_msg_kfree(struct ceph_msg *m);
243 243
244 244
diff --git a/include/linux/clk.h b/include/linux/clk.h
index 1d37f42ac294..7213b52b2c0e 100644
--- a/include/linux/clk.h
+++ b/include/linux/clk.h
@@ -11,6 +11,8 @@
11#ifndef __LINUX_CLK_H 11#ifndef __LINUX_CLK_H
12#define __LINUX_CLK_H 12#define __LINUX_CLK_H
13 13
14#include <linux/kernel.h>
15
14struct device; 16struct device;
15 17
16/* 18/*
@@ -41,11 +43,31 @@ struct clk;
41struct clk *clk_get(struct device *dev, const char *id); 43struct clk *clk_get(struct device *dev, const char *id);
42 44
43/** 45/**
46 * clk_prepare - prepare a clock source
47 * @clk: clock source
48 *
49 * This prepares the clock source for use.
50 *
51 * Must not be called from within atomic context.
52 */
53#ifdef CONFIG_HAVE_CLK_PREPARE
54int clk_prepare(struct clk *clk);
55#else
56static inline int clk_prepare(struct clk *clk)
57{
58 might_sleep();
59 return 0;
60}
61#endif
62
63/**
44 * clk_enable - inform the system when the clock source should be running. 64 * clk_enable - inform the system when the clock source should be running.
45 * @clk: clock source 65 * @clk: clock source
46 * 66 *
47 * If the clock can not be enabled/disabled, this should return success. 67 * If the clock can not be enabled/disabled, this should return success.
48 * 68 *
69 * May be called from atomic contexts.
70 *
49 * Returns success (0) or negative errno. 71 * Returns success (0) or negative errno.
50 */ 72 */
51int clk_enable(struct clk *clk); 73int clk_enable(struct clk *clk);
@@ -57,6 +79,8 @@ int clk_enable(struct clk *clk);
57 * Inform the system that a clock source is no longer required by 79 * Inform the system that a clock source is no longer required by
58 * a driver and may be shut down. 80 * a driver and may be shut down.
59 * 81 *
82 * May be called from atomic contexts.
83 *
60 * Implementation detail: if the clock source is shared between 84 * Implementation detail: if the clock source is shared between
61 * multiple drivers, clk_enable() calls must be balanced by the 85 * multiple drivers, clk_enable() calls must be balanced by the
62 * same number of clk_disable() calls for the clock source to be 86 * same number of clk_disable() calls for the clock source to be
@@ -64,6 +88,25 @@ int clk_enable(struct clk *clk);
64 */ 88 */
65void clk_disable(struct clk *clk); 89void clk_disable(struct clk *clk);
66 90
91
92/**
93 * clk_unprepare - undo preparation of a clock source
94 * @clk: clock source
95 *
96 * This undoes a previously prepared clock. The caller must balance
97 * the number of prepare and unprepare calls.
98 *
99 * Must not be called from within atomic context.
100 */
101#ifdef CONFIG_HAVE_CLK_PREPARE
102void clk_unprepare(struct clk *clk);
103#else
104static inline void clk_unprepare(struct clk *clk)
105{
106 might_sleep();
107}
108#endif
109
67/** 110/**
68 * clk_get_rate - obtain the current clock rate (in Hz) for a clock source. 111 * clk_get_rate - obtain the current clock rate (in Hz) for a clock source.
69 * This is only valid once the clock source has been enabled. 112 * This is only valid once the clock source has been enabled.
diff --git a/include/linux/clkdev.h b/include/linux/clkdev.h
index 457bcb0a310a..d9a4fd028c9d 100644
--- a/include/linux/clkdev.h
+++ b/include/linux/clkdev.h
@@ -24,6 +24,13 @@ struct clk_lookup {
24 struct clk *clk; 24 struct clk *clk;
25}; 25};
26 26
27#define CLKDEV_INIT(d, n, c) \
28 { \
29 .dev_id = d, \
30 .con_id = n, \
31 .clk = c, \
32 }
33
27struct clk_lookup *clkdev_alloc(struct clk *clk, const char *con_id, 34struct clk_lookup *clkdev_alloc(struct clk *clk, const char *con_id,
28 const char *dev_fmt, ...); 35 const char *dev_fmt, ...);
29 36
diff --git a/include/linux/clksrc-dbx500-prcmu.h b/include/linux/clksrc-dbx500-prcmu.h
new file mode 100644
index 000000000000..4fb8119c49e4
--- /dev/null
+++ b/include/linux/clksrc-dbx500-prcmu.h
@@ -0,0 +1,20 @@
1/*
2 * Copyright (C) ST-Ericsson SA 2011
3 *
4 * License Terms: GNU General Public License v2
5 * Author: Mattias Wallin <mattias.wallin@stericsson.com>
6 *
7 */
8#ifndef __CLKSRC_DBX500_PRCMU_H
9#define __CLKSRC_DBX500_PRCMU_H
10
11#include <linux/init.h>
12#include <linux/io.h>
13
14#ifdef CONFIG_CLKSRC_DBX500_PRCMU
15void __init clksrc_dbx500_prcmu_init(void __iomem *base);
16#else
17static inline void __init clksrc_dbx500_prcmu_init(void __iomem *base) {}
18#endif
19
20#endif
diff --git a/include/linux/clockchips.h b/include/linux/clockchips.h
index d6733e27af34..81e803e90aa4 100644
--- a/include/linux/clockchips.h
+++ b/include/linux/clockchips.h
@@ -45,20 +45,22 @@ enum clock_event_nofitiers {
45 */ 45 */
46#define CLOCK_EVT_FEAT_PERIODIC 0x000001 46#define CLOCK_EVT_FEAT_PERIODIC 0x000001
47#define CLOCK_EVT_FEAT_ONESHOT 0x000002 47#define CLOCK_EVT_FEAT_ONESHOT 0x000002
48#define CLOCK_EVT_FEAT_KTIME 0x000004
48/* 49/*
49 * x86(64) specific misfeatures: 50 * x86(64) specific misfeatures:
50 * 51 *
51 * - Clockevent source stops in C3 State and needs broadcast support. 52 * - Clockevent source stops in C3 State and needs broadcast support.
52 * - Local APIC timer is used as a dummy device. 53 * - Local APIC timer is used as a dummy device.
53 */ 54 */
54#define CLOCK_EVT_FEAT_C3STOP 0x000004 55#define CLOCK_EVT_FEAT_C3STOP 0x000008
55#define CLOCK_EVT_FEAT_DUMMY 0x000008 56#define CLOCK_EVT_FEAT_DUMMY 0x000010
56 57
57/** 58/**
58 * struct clock_event_device - clock event device descriptor 59 * struct clock_event_device - clock event device descriptor
59 * @event_handler: Assigned by the framework to be called by the low 60 * @event_handler: Assigned by the framework to be called by the low
60 * level handler of the event source 61 * level handler of the event source
61 * @set_next_event: set next event function 62 * @set_next_event: set next event function using a clocksource delta
63 * @set_next_ktime: set next event function using a direct ktime value
62 * @next_event: local storage for the next event in oneshot mode 64 * @next_event: local storage for the next event in oneshot mode
63 * @max_delta_ns: maximum delta value in ns 65 * @max_delta_ns: maximum delta value in ns
64 * @min_delta_ns: minimum delta value in ns 66 * @min_delta_ns: minimum delta value in ns
@@ -81,6 +83,8 @@ struct clock_event_device {
81 void (*event_handler)(struct clock_event_device *); 83 void (*event_handler)(struct clock_event_device *);
82 int (*set_next_event)(unsigned long evt, 84 int (*set_next_event)(unsigned long evt,
83 struct clock_event_device *); 85 struct clock_event_device *);
86 int (*set_next_ktime)(ktime_t expires,
87 struct clock_event_device *);
84 ktime_t next_event; 88 ktime_t next_event;
85 u64 max_delta_ns; 89 u64 max_delta_ns;
86 u64 min_delta_ns; 90 u64 min_delta_ns;
@@ -140,7 +144,7 @@ extern void clockevents_set_mode(struct clock_event_device *dev,
140 enum clock_event_mode mode); 144 enum clock_event_mode mode);
141extern int clockevents_register_notifier(struct notifier_block *nb); 145extern int clockevents_register_notifier(struct notifier_block *nb);
142extern int clockevents_program_event(struct clock_event_device *dev, 146extern int clockevents_program_event(struct clock_event_device *dev,
143 ktime_t expires, ktime_t now); 147 ktime_t expires, bool force);
144 148
145extern void clockevents_handle_noop(struct clock_event_device *dev); 149extern void clockevents_handle_noop(struct clock_event_device *dev);
146 150
diff --git a/include/linux/cn_proc.h b/include/linux/cn_proc.h
index 12c517b51ca2..d03612b196e1 100644
--- a/include/linux/cn_proc.h
+++ b/include/linux/cn_proc.h
@@ -54,6 +54,7 @@ struct proc_event {
54 PROC_EVENT_GID = 0x00000040, 54 PROC_EVENT_GID = 0x00000040,
55 PROC_EVENT_SID = 0x00000080, 55 PROC_EVENT_SID = 0x00000080,
56 PROC_EVENT_PTRACE = 0x00000100, 56 PROC_EVENT_PTRACE = 0x00000100,
57 PROC_EVENT_COMM = 0x00000200,
57 /* "next" should be 0x00000400 */ 58 /* "next" should be 0x00000400 */
58 /* "last" is the last process event: exit */ 59 /* "last" is the last process event: exit */
59 PROC_EVENT_EXIT = 0x80000000 60 PROC_EVENT_EXIT = 0x80000000
@@ -103,6 +104,12 @@ struct proc_event {
103 __kernel_pid_t tracer_tgid; 104 __kernel_pid_t tracer_tgid;
104 } ptrace; 105 } ptrace;
105 106
107 struct comm_proc_event {
108 __kernel_pid_t process_pid;
109 __kernel_pid_t process_tgid;
110 char comm[16];
111 } comm;
112
106 struct exit_proc_event { 113 struct exit_proc_event {
107 __kernel_pid_t process_pid; 114 __kernel_pid_t process_pid;
108 __kernel_pid_t process_tgid; 115 __kernel_pid_t process_tgid;
@@ -118,6 +125,7 @@ void proc_exec_connector(struct task_struct *task);
118void proc_id_connector(struct task_struct *task, int which_id); 125void proc_id_connector(struct task_struct *task, int which_id);
119void proc_sid_connector(struct task_struct *task); 126void proc_sid_connector(struct task_struct *task);
120void proc_ptrace_connector(struct task_struct *task, int which_id); 127void proc_ptrace_connector(struct task_struct *task, int which_id);
128void proc_comm_connector(struct task_struct *task);
121void proc_exit_connector(struct task_struct *task); 129void proc_exit_connector(struct task_struct *task);
122#else 130#else
123static inline void proc_fork_connector(struct task_struct *task) 131static inline void proc_fork_connector(struct task_struct *task)
@@ -133,6 +141,9 @@ static inline void proc_id_connector(struct task_struct *task,
133static inline void proc_sid_connector(struct task_struct *task) 141static inline void proc_sid_connector(struct task_struct *task)
134{} 142{}
135 143
144static inline void proc_comm_connector(struct task_struct *task)
145{}
146
136static inline void proc_ptrace_connector(struct task_struct *task, 147static inline void proc_ptrace_connector(struct task_struct *task,
137 int ptrace_id) 148 int ptrace_id)
138{} 149{}
diff --git a/include/linux/compaction.h b/include/linux/compaction.h
index cc9f7a428649..bb2bbdbe5464 100644
--- a/include/linux/compaction.h
+++ b/include/linux/compaction.h
@@ -24,8 +24,6 @@ extern unsigned long try_to_compact_pages(struct zonelist *zonelist,
24 int order, gfp_t gfp_mask, nodemask_t *mask, 24 int order, gfp_t gfp_mask, nodemask_t *mask,
25 bool sync); 25 bool sync);
26extern unsigned long compaction_suitable(struct zone *zone, int order); 26extern unsigned long compaction_suitable(struct zone *zone, int order);
27extern unsigned long compact_zone_order(struct zone *zone, int order,
28 gfp_t gfp_mask, bool sync);
29 27
30/* Do not skip compaction more than 64 times */ 28/* Do not skip compaction more than 64 times */
31#define COMPACT_MAX_DEFER_SHIFT 6 29#define COMPACT_MAX_DEFER_SHIFT 6
@@ -69,12 +67,6 @@ static inline unsigned long compaction_suitable(struct zone *zone, int order)
69 return COMPACT_SKIPPED; 67 return COMPACT_SKIPPED;
70} 68}
71 69
72static inline unsigned long compact_zone_order(struct zone *zone, int order,
73 gfp_t gfp_mask, bool sync)
74{
75 return COMPACT_CONTINUE;
76}
77
78static inline void defer_compaction(struct zone *zone) 70static inline void defer_compaction(struct zone *zone)
79{ 71{
80} 72}
diff --git a/include/linux/compat.h b/include/linux/compat.h
index c6e7523bf765..154bf5683015 100644
--- a/include/linux/compat.h
+++ b/include/linux/compat.h
@@ -547,7 +547,8 @@ extern ssize_t compat_rw_copy_check_uvector(int type,
547 const struct compat_iovec __user *uvector, 547 const struct compat_iovec __user *uvector,
548 unsigned long nr_segs, 548 unsigned long nr_segs,
549 unsigned long fast_segs, struct iovec *fast_pointer, 549 unsigned long fast_segs, struct iovec *fast_pointer,
550 struct iovec **ret_pointer); 550 struct iovec **ret_pointer,
551 int check_access);
551 552
552extern void __user *compat_alloc_user_space(unsigned long len); 553extern void __user *compat_alloc_user_space(unsigned long len);
553 554
diff --git a/include/linux/cpu_pm.h b/include/linux/cpu_pm.h
new file mode 100644
index 000000000000..455b233dd3b1
--- /dev/null
+++ b/include/linux/cpu_pm.h
@@ -0,0 +1,109 @@
1/*
2 * Copyright (C) 2011 Google, Inc.
3 *
4 * Author:
5 * Colin Cross <ccross@android.com>
6 *
7 * This software is licensed under the terms of the GNU General Public
8 * License version 2, as published by the Free Software Foundation, and
9 * may be copied, distributed, and modified under those terms.
10 *
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 */
17
18#ifndef _LINUX_CPU_PM_H
19#define _LINUX_CPU_PM_H
20
21#include <linux/kernel.h>
22#include <linux/notifier.h>
23
24/*
25 * When a CPU goes to a low power state that turns off power to the CPU's
26 * power domain, the contents of some blocks (floating point coprocessors,
27 * interrupt controllers, caches, timers) in the same power domain can
28 * be lost. The cpm_pm notifiers provide a method for platform idle, suspend,
29 * and hotplug implementations to notify the drivers for these blocks that
30 * they may be reset.
31 *
32 * All cpu_pm notifications must be called with interrupts disabled.
33 *
34 * The notifications are split into two classes: CPU notifications and CPU
35 * cluster notifications.
36 *
37 * CPU notifications apply to a single CPU and must be called on the affected
38 * CPU. They are used to save per-cpu context for affected blocks.
39 *
40 * CPU cluster notifications apply to all CPUs in a single power domain. They
41 * are used to save any global context for affected blocks, and must be called
42 * after all the CPUs in the power domain have been notified of the low power
43 * state.
44 */
45
46/*
47 * Event codes passed as unsigned long val to notifier calls
48 */
49enum cpu_pm_event {
50 /* A single cpu is entering a low power state */
51 CPU_PM_ENTER,
52
53 /* A single cpu failed to enter a low power state */
54 CPU_PM_ENTER_FAILED,
55
56 /* A single cpu is exiting a low power state */
57 CPU_PM_EXIT,
58
59 /* A cpu power domain is entering a low power state */
60 CPU_CLUSTER_PM_ENTER,
61
62 /* A cpu power domain failed to enter a low power state */
63 CPU_CLUSTER_PM_ENTER_FAILED,
64
65 /* A cpu power domain is exiting a low power state */
66 CPU_CLUSTER_PM_EXIT,
67};
68
69#ifdef CONFIG_CPU_PM
70int cpu_pm_register_notifier(struct notifier_block *nb);
71int cpu_pm_unregister_notifier(struct notifier_block *nb);
72int cpu_pm_enter(void);
73int cpu_pm_exit(void);
74int cpu_cluster_pm_enter(void);
75int cpu_cluster_pm_exit(void);
76
77#else
78
79static inline int cpu_pm_register_notifier(struct notifier_block *nb)
80{
81 return 0;
82}
83
84static inline int cpu_pm_unregister_notifier(struct notifier_block *nb)
85{
86 return 0;
87}
88
89static inline int cpu_pm_enter(void)
90{
91 return 0;
92}
93
94static inline int cpu_pm_exit(void)
95{
96 return 0;
97}
98
99static inline int cpu_cluster_pm_enter(void)
100{
101 return 0;
102}
103
104static inline int cpu_cluster_pm_exit(void)
105{
106 return 0;
107}
108#endif
109#endif
diff --git a/include/linux/crash_dump.h b/include/linux/crash_dump.h
index 74054074e876..5c4abce94ad1 100644
--- a/include/linux/crash_dump.h
+++ b/include/linux/crash_dump.h
@@ -10,6 +10,7 @@
10#define ELFCORE_ADDR_ERR (-2ULL) 10#define ELFCORE_ADDR_ERR (-2ULL)
11 11
12extern unsigned long long elfcorehdr_addr; 12extern unsigned long long elfcorehdr_addr;
13extern unsigned long long elfcorehdr_size;
13 14
14extern ssize_t copy_oldmem_page(unsigned long, char *, size_t, 15extern ssize_t copy_oldmem_page(unsigned long, char *, size_t,
15 unsigned long, int); 16 unsigned long, int);
diff --git a/include/linux/crypto.h b/include/linux/crypto.h
index e5e468e9133d..de9adec5693c 100644
--- a/include/linux/crypto.h
+++ b/include/linux/crypto.h
@@ -72,6 +72,11 @@
72#define CRYPTO_ALG_TESTED 0x00000400 72#define CRYPTO_ALG_TESTED 0x00000400
73 73
74/* 74/*
75 * Set if the algorithm is an instance that is build from templates.
76 */
77#define CRYPTO_ALG_INSTANCE 0x00000800
78
79/*
75 * Transform masks and values (for crt_flags). 80 * Transform masks and values (for crt_flags).
76 */ 81 */
77#define CRYPTO_TFM_REQ_MASK 0x000fff00 82#define CRYPTO_TFM_REQ_MASK 0x000fff00
diff --git a/include/linux/cryptouser.h b/include/linux/cryptouser.h
new file mode 100644
index 000000000000..532fb58f16bf
--- /dev/null
+++ b/include/linux/cryptouser.h
@@ -0,0 +1,102 @@
1/*
2 * Crypto user configuration API.
3 *
4 * Copyright (C) 2011 secunet Security Networks AG
5 * Copyright (C) 2011 Steffen Klassert <steffen.klassert@secunet.com>
6 *
7 * This program is free software; you can redistribute it and/or modify it
8 * under the terms and conditions of the GNU General Public License,
9 * version 2, as published by the Free Software Foundation.
10 *
11 * This program is distributed in the hope it will be useful, but WITHOUT
12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
14 * more details.
15 *
16 * You should have received a copy of the GNU General Public License along with
17 * this program; if not, write to the Free Software Foundation, Inc.,
18 * 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA.
19 */
20
21/* Netlink configuration messages. */
22enum {
23 CRYPTO_MSG_BASE = 0x10,
24 CRYPTO_MSG_NEWALG = 0x10,
25 CRYPTO_MSG_DELALG,
26 CRYPTO_MSG_UPDATEALG,
27 CRYPTO_MSG_GETALG,
28 __CRYPTO_MSG_MAX
29};
30#define CRYPTO_MSG_MAX (__CRYPTO_MSG_MAX - 1)
31#define CRYPTO_NR_MSGTYPES (CRYPTO_MSG_MAX + 1 - CRYPTO_MSG_BASE)
32
33#define CRYPTO_MAX_NAME CRYPTO_MAX_ALG_NAME
34
35/* Netlink message attributes. */
36enum crypto_attr_type_t {
37 CRYPTOCFGA_UNSPEC,
38 CRYPTOCFGA_PRIORITY_VAL, /* __u32 */
39 CRYPTOCFGA_REPORT_LARVAL, /* struct crypto_report_larval */
40 CRYPTOCFGA_REPORT_HASH, /* struct crypto_report_hash */
41 CRYPTOCFGA_REPORT_BLKCIPHER, /* struct crypto_report_blkcipher */
42 CRYPTOCFGA_REPORT_AEAD, /* struct crypto_report_aead */
43 CRYPTOCFGA_REPORT_COMPRESS, /* struct crypto_report_comp */
44 CRYPTOCFGA_REPORT_RNG, /* struct crypto_report_rng */
45 CRYPTOCFGA_REPORT_CIPHER, /* struct crypto_report_cipher */
46 __CRYPTOCFGA_MAX
47
48#define CRYPTOCFGA_MAX (__CRYPTOCFGA_MAX - 1)
49};
50
51struct crypto_user_alg {
52 char cru_name[CRYPTO_MAX_ALG_NAME];
53 char cru_driver_name[CRYPTO_MAX_ALG_NAME];
54 char cru_module_name[CRYPTO_MAX_ALG_NAME];
55 __u32 cru_type;
56 __u32 cru_mask;
57 __u32 cru_refcnt;
58 __u32 cru_flags;
59};
60
61struct crypto_report_larval {
62 char type[CRYPTO_MAX_NAME];
63};
64
65struct crypto_report_hash {
66 char type[CRYPTO_MAX_NAME];
67 unsigned int blocksize;
68 unsigned int digestsize;
69};
70
71struct crypto_report_cipher {
72 char type[CRYPTO_MAX_ALG_NAME];
73 unsigned int blocksize;
74 unsigned int min_keysize;
75 unsigned int max_keysize;
76};
77
78struct crypto_report_blkcipher {
79 char type[CRYPTO_MAX_NAME];
80 char geniv[CRYPTO_MAX_NAME];
81 unsigned int blocksize;
82 unsigned int min_keysize;
83 unsigned int max_keysize;
84 unsigned int ivsize;
85};
86
87struct crypto_report_aead {
88 char type[CRYPTO_MAX_NAME];
89 char geniv[CRYPTO_MAX_NAME];
90 unsigned int blocksize;
91 unsigned int maxauthsize;
92 unsigned int ivsize;
93};
94
95struct crypto_report_comp {
96 char type[CRYPTO_MAX_NAME];
97};
98
99struct crypto_report_rng {
100 char type[CRYPTO_MAX_NAME];
101 unsigned int seedsize;
102};
diff --git a/include/linux/devfreq.h b/include/linux/devfreq.h
new file mode 100644
index 000000000000..afb94583960c
--- /dev/null
+++ b/include/linux/devfreq.h
@@ -0,0 +1,238 @@
1/*
2 * devfreq: Generic Dynamic Voltage and Frequency Scaling (DVFS) Framework
3 * for Non-CPU Devices.
4 *
5 * Copyright (C) 2011 Samsung Electronics
6 * MyungJoo Ham <myungjoo.ham@samsung.com>
7 *
8 * This program is free software; you can redistribute it and/or modify
9 * it under the terms of the GNU General Public License version 2 as
10 * published by the Free Software Foundation.
11 */
12
13#ifndef __LINUX_DEVFREQ_H__
14#define __LINUX_DEVFREQ_H__
15
16#include <linux/device.h>
17#include <linux/notifier.h>
18#include <linux/opp.h>
19
20#define DEVFREQ_NAME_LEN 16
21
22struct devfreq;
23
24/**
25 * struct devfreq_dev_status - Data given from devfreq user device to
26 * governors. Represents the performance
27 * statistics.
28 * @total_time The total time represented by this instance of
29 * devfreq_dev_status
30 * @busy_time The time that the device was working among the
31 * total_time.
32 * @current_frequency The operating frequency.
33 * @private_data An entry not specified by the devfreq framework.
34 * A device and a specific governor may have their
35 * own protocol with private_data. However, because
36 * this is governor-specific, a governor using this
37 * will be only compatible with devices aware of it.
38 */
39struct devfreq_dev_status {
40 /* both since the last measure */
41 unsigned long total_time;
42 unsigned long busy_time;
43 unsigned long current_frequency;
44 void *private_date;
45};
46
47/**
48 * struct devfreq_dev_profile - Devfreq's user device profile
49 * @initial_freq The operating frequency when devfreq_add_device() is
50 * called.
51 * @polling_ms The polling interval in ms. 0 disables polling.
52 * @target The device should set its operating frequency at
53 * freq or lowest-upper-than-freq value. If freq is
54 * higher than any operable frequency, set maximum.
55 * Before returning, target function should set
56 * freq at the current frequency.
57 * @get_dev_status The device should provide the current performance
58 * status to devfreq, which is used by governors.
59 * @exit An optional callback that is called when devfreq
60 * is removing the devfreq object due to error or
61 * from devfreq_remove_device() call. If the user
62 * has registered devfreq->nb at a notifier-head,
63 * this is the time to unregister it.
64 */
65struct devfreq_dev_profile {
66 unsigned long initial_freq;
67 unsigned int polling_ms;
68
69 int (*target)(struct device *dev, unsigned long *freq);
70 int (*get_dev_status)(struct device *dev,
71 struct devfreq_dev_status *stat);
72 void (*exit)(struct device *dev);
73};
74
75/**
76 * struct devfreq_governor - Devfreq policy governor
77 * @name Governor's name
78 * @get_target_freq Returns desired operating frequency for the device.
79 * Basically, get_target_freq will run
80 * devfreq_dev_profile.get_dev_status() to get the
81 * status of the device (load = busy_time / total_time).
82 * If no_central_polling is set, this callback is called
83 * only with update_devfreq() notified by OPP.
84 * @init Called when the devfreq is being attached to a device
85 * @exit Called when the devfreq is being removed from a
86 * device. Governor should stop any internal routines
87 * before return because related data may be
88 * freed after exit().
89 * @no_central_polling Do not use devfreq's central polling mechanism.
90 * When this is set, devfreq will not call
91 * get_target_freq with devfreq_monitor(). However,
92 * devfreq will call get_target_freq with
93 * devfreq_update() notified by OPP framework.
94 *
95 * Note that the callbacks are called with devfreq->lock locked by devfreq.
96 */
97struct devfreq_governor {
98 const char name[DEVFREQ_NAME_LEN];
99 int (*get_target_freq)(struct devfreq *this, unsigned long *freq);
100 int (*init)(struct devfreq *this);
101 void (*exit)(struct devfreq *this);
102 const bool no_central_polling;
103};
104
105/**
106 * struct devfreq - Device devfreq structure
107 * @node list node - contains the devices with devfreq that have been
108 * registered.
109 * @lock a mutex to protect accessing devfreq.
110 * @dev device registered by devfreq class. dev.parent is the device
111 * using devfreq.
112 * @profile device-specific devfreq profile
113 * @governor method how to choose frequency based on the usage.
114 * @nb notifier block used to notify devfreq object that it should
115 * reevaluate operable frequencies. Devfreq users may use
116 * devfreq.nb to the corresponding register notifier call chain.
117 * @polling_jiffies interval in jiffies.
118 * @previous_freq previously configured frequency value.
119 * @next_polling the number of remaining jiffies to poll with
120 * "devfreq_monitor" executions to reevaluate
121 * frequency/voltage of the device. Set by
122 * profile's polling_ms interval.
123 * @data Private data of the governor. The devfreq framework does not
124 * touch this.
125 * @being_removed a flag to mark that this object is being removed in
126 * order to prevent trying to remove the object multiple times.
127 *
128 * This structure stores the devfreq information for a give device.
129 *
130 * Note that when a governor accesses entries in struct devfreq in its
131 * functions except for the context of callbacks defined in struct
132 * devfreq_governor, the governor should protect its access with the
133 * struct mutex lock in struct devfreq. A governor may use this mutex
134 * to protect its own private data in void *data as well.
135 */
136struct devfreq {
137 struct list_head node;
138
139 struct mutex lock;
140 struct device dev;
141 struct devfreq_dev_profile *profile;
142 const struct devfreq_governor *governor;
143 struct notifier_block nb;
144
145 unsigned long polling_jiffies;
146 unsigned long previous_freq;
147 unsigned int next_polling;
148
149 void *data; /* private data for governors */
150
151 bool being_removed;
152};
153
154#if defined(CONFIG_PM_DEVFREQ)
155extern struct devfreq *devfreq_add_device(struct device *dev,
156 struct devfreq_dev_profile *profile,
157 const struct devfreq_governor *governor,
158 void *data);
159extern int devfreq_remove_device(struct devfreq *devfreq);
160
161/* Helper functions for devfreq user device driver with OPP. */
162extern struct opp *devfreq_recommended_opp(struct device *dev,
163 unsigned long *freq);
164extern int devfreq_register_opp_notifier(struct device *dev,
165 struct devfreq *devfreq);
166extern int devfreq_unregister_opp_notifier(struct device *dev,
167 struct devfreq *devfreq);
168
169#ifdef CONFIG_DEVFREQ_GOV_POWERSAVE
170extern const struct devfreq_governor devfreq_powersave;
171#endif
172#ifdef CONFIG_DEVFREQ_GOV_PERFORMANCE
173extern const struct devfreq_governor devfreq_performance;
174#endif
175#ifdef CONFIG_DEVFREQ_GOV_USERSPACE
176extern const struct devfreq_governor devfreq_userspace;
177#endif
178#ifdef CONFIG_DEVFREQ_GOV_SIMPLE_ONDEMAND
179extern const struct devfreq_governor devfreq_simple_ondemand;
180/**
181 * struct devfreq_simple_ondemand_data - void *data fed to struct devfreq
182 * and devfreq_add_device
183 * @ upthreshold If the load is over this value, the frequency jumps.
184 * Specify 0 to use the default. Valid value = 0 to 100.
185 * @ downdifferential If the load is under upthreshold - downdifferential,
186 * the governor may consider slowing the frequency down.
187 * Specify 0 to use the default. Valid value = 0 to 100.
188 * downdifferential < upthreshold must hold.
189 *
190 * If the fed devfreq_simple_ondemand_data pointer is NULL to the governor,
191 * the governor uses the default values.
192 */
193struct devfreq_simple_ondemand_data {
194 unsigned int upthreshold;
195 unsigned int downdifferential;
196};
197#endif
198
199#else /* !CONFIG_PM_DEVFREQ */
200static struct devfreq *devfreq_add_device(struct device *dev,
201 struct devfreq_dev_profile *profile,
202 struct devfreq_governor *governor,
203 void *data);
204{
205 return NULL;
206}
207
208static int devfreq_remove_device(struct devfreq *devfreq);
209{
210 return 0;
211}
212
213static struct opp *devfreq_recommended_opp(struct device *dev,
214 unsigned long *freq)
215{
216 return -EINVAL;
217}
218
219static int devfreq_register_opp_notifier(struct device *dev,
220 struct devfreq *devfreq)
221{
222 return -EINVAL;
223}
224
225static int devfreq_unregister_opp_notifier(struct device *dev,
226 struct devfreq *devfreq)
227{
228 return -EINVAL;
229}
230
231#define devfreq_powersave NULL
232#define devfreq_performance NULL
233#define devfreq_userspace NULL
234#define devfreq_simple_ondemand NULL
235
236#endif /* CONFIG_PM_DEVFREQ */
237
238#endif /* __LINUX_DEVFREQ_H__ */
diff --git a/include/linux/device.h b/include/linux/device.h
index c20dfbfc49b4..e88abeecfadf 100644
--- a/include/linux/device.h
+++ b/include/linux/device.h
@@ -33,6 +33,7 @@ struct class;
33struct subsys_private; 33struct subsys_private;
34struct bus_type; 34struct bus_type;
35struct device_node; 35struct device_node;
36struct iommu_ops;
36 37
37struct bus_attribute { 38struct bus_attribute {
38 struct attribute attr; 39 struct attribute attr;
@@ -67,6 +68,9 @@ extern void bus_remove_file(struct bus_type *, struct bus_attribute *);
67 * @resume: Called to bring a device on this bus out of sleep mode. 68 * @resume: Called to bring a device on this bus out of sleep mode.
68 * @pm: Power management operations of this bus, callback the specific 69 * @pm: Power management operations of this bus, callback the specific
69 * device driver's pm-ops. 70 * device driver's pm-ops.
71 * @iommu_ops IOMMU specific operations for this bus, used to attach IOMMU
72 * driver implementations to a bus and allow the driver to do
73 * bus-specific setup
70 * @p: The private data of the driver core, only the driver core can 74 * @p: The private data of the driver core, only the driver core can
71 * touch this. 75 * touch this.
72 * 76 *
@@ -96,6 +100,8 @@ struct bus_type {
96 100
97 const struct dev_pm_ops *pm; 101 const struct dev_pm_ops *pm;
98 102
103 struct iommu_ops *iommu_ops;
104
99 struct subsys_private *p; 105 struct subsys_private *p;
100}; 106};
101 107
@@ -350,6 +356,8 @@ struct class_attribute {
350 char *buf); 356 char *buf);
351 ssize_t (*store)(struct class *class, struct class_attribute *attr, 357 ssize_t (*store)(struct class *class, struct class_attribute *attr,
352 const char *buf, size_t count); 358 const char *buf, size_t count);
359 const void *(*namespace)(struct class *class,
360 const struct class_attribute *attr);
353}; 361};
354 362
355#define CLASS_ATTR(_name, _mode, _show, _store) \ 363#define CLASS_ATTR(_name, _mode, _show, _store) \
@@ -614,8 +622,8 @@ static inline const char *dev_name(const struct device *dev)
614 return kobject_name(&dev->kobj); 622 return kobject_name(&dev->kobj);
615} 623}
616 624
617extern int dev_set_name(struct device *dev, const char *name, ...) 625extern __printf(2, 3)
618 __attribute__((format(printf, 2, 3))); 626int dev_set_name(struct device *dev, const char *name, ...);
619 627
620#ifdef CONFIG_NUMA 628#ifdef CONFIG_NUMA
621static inline int dev_to_node(struct device *dev) 629static inline int dev_to_node(struct device *dev)
@@ -636,6 +644,11 @@ static inline void set_dev_node(struct device *dev, int node)
636} 644}
637#endif 645#endif
638 646
647static inline struct pm_subsys_data *dev_to_psd(struct device *dev)
648{
649 return dev ? dev->power.subsys_data : NULL;
650}
651
639static inline unsigned int dev_get_uevent_suppress(const struct device *dev) 652static inline unsigned int dev_get_uevent_suppress(const struct device *dev)
640{ 653{
641 return dev->kobj.uevent_suppress; 654 return dev->kobj.uevent_suppress;
@@ -740,10 +753,10 @@ extern struct device *device_create_vargs(struct class *cls,
740 void *drvdata, 753 void *drvdata,
741 const char *fmt, 754 const char *fmt,
742 va_list vargs); 755 va_list vargs);
743extern struct device *device_create(struct class *cls, struct device *parent, 756extern __printf(5, 6)
744 dev_t devt, void *drvdata, 757struct device *device_create(struct class *cls, struct device *parent,
745 const char *fmt, ...) 758 dev_t devt, void *drvdata,
746 __attribute__((format(printf, 5, 6))); 759 const char *fmt, ...);
747extern void device_destroy(struct class *cls, dev_t devt); 760extern void device_destroy(struct class *cls, dev_t devt);
748 761
749/* 762/*
@@ -785,61 +798,58 @@ extern const char *dev_driver_string(const struct device *dev);
785 798
786#ifdef CONFIG_PRINTK 799#ifdef CONFIG_PRINTK
787 800
788extern int dev_printk(const char *level, const struct device *dev, 801extern int __dev_printk(const char *level, const struct device *dev,
789 const char *fmt, ...) 802 struct va_format *vaf);
790 __attribute__ ((format (printf, 3, 4))); 803extern __printf(3, 4)
791extern int dev_emerg(const struct device *dev, const char *fmt, ...) 804int dev_printk(const char *level, const struct device *dev,
792 __attribute__ ((format (printf, 2, 3))); 805 const char *fmt, ...)
793extern int dev_alert(const struct device *dev, const char *fmt, ...) 806 ;
794 __attribute__ ((format (printf, 2, 3))); 807extern __printf(2, 3)
795extern int dev_crit(const struct device *dev, const char *fmt, ...) 808int dev_emerg(const struct device *dev, const char *fmt, ...);
796 __attribute__ ((format (printf, 2, 3))); 809extern __printf(2, 3)
797extern int dev_err(const struct device *dev, const char *fmt, ...) 810int dev_alert(const struct device *dev, const char *fmt, ...);
798 __attribute__ ((format (printf, 2, 3))); 811extern __printf(2, 3)
799extern int dev_warn(const struct device *dev, const char *fmt, ...) 812int dev_crit(const struct device *dev, const char *fmt, ...);
800 __attribute__ ((format (printf, 2, 3))); 813extern __printf(2, 3)
801extern int dev_notice(const struct device *dev, const char *fmt, ...) 814int dev_err(const struct device *dev, const char *fmt, ...);
802 __attribute__ ((format (printf, 2, 3))); 815extern __printf(2, 3)
803extern int _dev_info(const struct device *dev, const char *fmt, ...) 816int dev_warn(const struct device *dev, const char *fmt, ...);
804 __attribute__ ((format (printf, 2, 3))); 817extern __printf(2, 3)
818int dev_notice(const struct device *dev, const char *fmt, ...);
819extern __printf(2, 3)
820int _dev_info(const struct device *dev, const char *fmt, ...);
805 821
806#else 822#else
807 823
808static inline int dev_printk(const char *level, const struct device *dev, 824static inline int __dev_printk(const char *level, const struct device *dev,
809 const char *fmt, ...) 825 struct va_format *vaf)
810 __attribute__ ((format (printf, 3, 4))); 826{ return 0; }
811static inline int dev_printk(const char *level, const struct device *dev, 827static inline __printf(3, 4)
812 const char *fmt, ...) 828int dev_printk(const char *level, const struct device *dev,
813 { return 0; } 829 const char *fmt, ...)
814 830{ return 0; }
815static inline int dev_emerg(const struct device *dev, const char *fmt, ...) 831
816 __attribute__ ((format (printf, 2, 3))); 832static inline __printf(2, 3)
817static inline int dev_emerg(const struct device *dev, const char *fmt, ...) 833int dev_emerg(const struct device *dev, const char *fmt, ...)
818 { return 0; } 834{ return 0; }
819static inline int dev_crit(const struct device *dev, const char *fmt, ...) 835static inline __printf(2, 3)
820 __attribute__ ((format (printf, 2, 3))); 836int dev_crit(const struct device *dev, const char *fmt, ...)
821static inline int dev_crit(const struct device *dev, const char *fmt, ...) 837{ return 0; }
822 { return 0; } 838static inline __printf(2, 3)
823static inline int dev_alert(const struct device *dev, const char *fmt, ...) 839int dev_alert(const struct device *dev, const char *fmt, ...)
824 __attribute__ ((format (printf, 2, 3))); 840{ return 0; }
825static inline int dev_alert(const struct device *dev, const char *fmt, ...) 841static inline __printf(2, 3)
826 { return 0; } 842int dev_err(const struct device *dev, const char *fmt, ...)
827static inline int dev_err(const struct device *dev, const char *fmt, ...) 843{ return 0; }
828 __attribute__ ((format (printf, 2, 3))); 844static inline __printf(2, 3)
829static inline int dev_err(const struct device *dev, const char *fmt, ...) 845int dev_warn(const struct device *dev, const char *fmt, ...)
830 { return 0; } 846{ return 0; }
831static inline int dev_warn(const struct device *dev, const char *fmt, ...) 847static inline __printf(2, 3)
832 __attribute__ ((format (printf, 2, 3))); 848int dev_notice(const struct device *dev, const char *fmt, ...)
833static inline int dev_warn(const struct device *dev, const char *fmt, ...) 849{ return 0; }
834 { return 0; } 850static inline __printf(2, 3)
835static inline int dev_notice(const struct device *dev, const char *fmt, ...) 851int _dev_info(const struct device *dev, const char *fmt, ...)
836 __attribute__ ((format (printf, 2, 3))); 852{ return 0; }
837static inline int dev_notice(const struct device *dev, const char *fmt, ...)
838 { return 0; }
839static inline int _dev_info(const struct device *dev, const char *fmt, ...)
840 __attribute__ ((format (printf, 2, 3)));
841static inline int _dev_info(const struct device *dev, const char *fmt, ...)
842 { return 0; }
843 853
844#endif 854#endif
845 855
diff --git a/include/linux/dma_remapping.h b/include/linux/dma_remapping.h
index bbd8661b3473..ef90cbd8e173 100644
--- a/include/linux/dma_remapping.h
+++ b/include/linux/dma_remapping.h
@@ -25,11 +25,12 @@ struct intel_iommu;
25struct dmar_domain; 25struct dmar_domain;
26struct root_entry; 26struct root_entry;
27 27
28extern void free_dmar_iommu(struct intel_iommu *iommu);
29 28
30#ifdef CONFIG_DMAR 29#ifdef CONFIG_INTEL_IOMMU
30extern void free_dmar_iommu(struct intel_iommu *iommu);
31extern int iommu_calculate_agaw(struct intel_iommu *iommu); 31extern int iommu_calculate_agaw(struct intel_iommu *iommu);
32extern int iommu_calculate_max_sagaw(struct intel_iommu *iommu); 32extern int iommu_calculate_max_sagaw(struct intel_iommu *iommu);
33extern int dmar_disabled;
33#else 34#else
34static inline int iommu_calculate_agaw(struct intel_iommu *iommu) 35static inline int iommu_calculate_agaw(struct intel_iommu *iommu)
35{ 36{
@@ -39,8 +40,11 @@ static inline int iommu_calculate_max_sagaw(struct intel_iommu *iommu)
39{ 40{
40 return 0; 41 return 0;
41} 42}
43static inline void free_dmar_iommu(struct intel_iommu *iommu)
44{
45}
46#define dmar_disabled (1)
42#endif 47#endif
43 48
44extern int dmar_disabled;
45 49
46#endif 50#endif
diff --git a/include/linux/dmar.h b/include/linux/dmar.h
index 7b776d71d36d..731a60975101 100644
--- a/include/linux/dmar.h
+++ b/include/linux/dmar.h
@@ -26,8 +26,15 @@
26#include <linux/msi.h> 26#include <linux/msi.h>
27#include <linux/irqreturn.h> 27#include <linux/irqreturn.h>
28 28
29struct acpi_dmar_header;
30
31/* DMAR Flags */
32#define DMAR_INTR_REMAP 0x1
33#define DMAR_X2APIC_OPT_OUT 0x2
34
29struct intel_iommu; 35struct intel_iommu;
30#if defined(CONFIG_DMAR) || defined(CONFIG_INTR_REMAP) 36#ifdef CONFIG_DMAR_TABLE
37extern struct acpi_table_header *dmar_tbl;
31struct dmar_drhd_unit { 38struct dmar_drhd_unit {
32 struct list_head list; /* list of drhd units */ 39 struct list_head list; /* list of drhd units */
33 struct acpi_dmar_header *hdr; /* ACPI header */ 40 struct acpi_dmar_header *hdr; /* ACPI header */
@@ -76,7 +83,7 @@ static inline int enable_drhd_fault_handling(void)
76{ 83{
77 return -1; 84 return -1;
78} 85}
79#endif /* !CONFIG_DMAR && !CONFIG_INTR_REMAP */ 86#endif /* !CONFIG_DMAR_TABLE */
80 87
81struct irte { 88struct irte {
82 union { 89 union {
@@ -107,10 +114,10 @@ struct irte {
107 }; 114 };
108}; 115};
109 116
110#ifdef CONFIG_INTR_REMAP 117#ifdef CONFIG_IRQ_REMAP
111extern int intr_remapping_enabled; 118extern int intr_remapping_enabled;
112extern int intr_remapping_supported(void); 119extern int intr_remapping_supported(void);
113extern int enable_intr_remapping(int); 120extern int enable_intr_remapping(void);
114extern void disable_intr_remapping(void); 121extern void disable_intr_remapping(void);
115extern int reenable_intr_remapping(int); 122extern int reenable_intr_remapping(int);
116 123
@@ -177,7 +184,7 @@ static inline int set_msi_sid(struct irte *irte, struct pci_dev *dev)
177 184
178#define intr_remapping_enabled (0) 185#define intr_remapping_enabled (0)
179 186
180static inline int enable_intr_remapping(int eim) 187static inline int enable_intr_remapping(void)
181{ 188{
182 return -1; 189 return -1;
183} 190}
@@ -192,6 +199,11 @@ static inline int reenable_intr_remapping(int eim)
192} 199}
193#endif 200#endif
194 201
202enum {
203 IRQ_REMAP_XAPIC_MODE,
204 IRQ_REMAP_X2APIC_MODE,
205};
206
195/* Can't use the common MSI interrupt functions 207/* Can't use the common MSI interrupt functions
196 * since DMAR is not a pci device 208 * since DMAR is not a pci device
197 */ 209 */
@@ -204,7 +216,7 @@ extern int dmar_set_interrupt(struct intel_iommu *iommu);
204extern irqreturn_t dmar_fault(int irq, void *dev_id); 216extern irqreturn_t dmar_fault(int irq, void *dev_id);
205extern int arch_setup_dmar_msi(unsigned int irq); 217extern int arch_setup_dmar_msi(unsigned int irq);
206 218
207#ifdef CONFIG_DMAR 219#ifdef CONFIG_INTEL_IOMMU
208extern int iommu_detected, no_iommu; 220extern int iommu_detected, no_iommu;
209extern struct list_head dmar_rmrr_units; 221extern struct list_head dmar_rmrr_units;
210struct dmar_rmrr_unit { 222struct dmar_rmrr_unit {
@@ -227,9 +239,26 @@ struct dmar_atsr_unit {
227 u8 include_all:1; /* include all ports */ 239 u8 include_all:1; /* include all ports */
228}; 240};
229 241
242int dmar_parse_rmrr_atsr_dev(void);
243extern int dmar_parse_one_rmrr(struct acpi_dmar_header *header);
244extern int dmar_parse_one_atsr(struct acpi_dmar_header *header);
245extern int dmar_parse_dev_scope(void *start, void *end, int *cnt,
246 struct pci_dev ***devices, u16 segment);
230extern int intel_iommu_init(void); 247extern int intel_iommu_init(void);
231#else /* !CONFIG_DMAR: */ 248#else /* !CONFIG_INTEL_IOMMU: */
232static inline int intel_iommu_init(void) { return -ENODEV; } 249static inline int intel_iommu_init(void) { return -ENODEV; }
233#endif /* CONFIG_DMAR */ 250static inline int dmar_parse_one_rmrr(struct acpi_dmar_header *header)
251{
252 return 0;
253}
254static inline int dmar_parse_one_atsr(struct acpi_dmar_header *header)
255{
256 return 0;
257}
258static inline int dmar_parse_rmrr_atsr_dev(void)
259{
260 return 0;
261}
262#endif /* CONFIG_INTEL_IOMMU */
234 263
235#endif /* __DMAR_H__ */ 264#endif /* __DMAR_H__ */
diff --git a/include/linux/drbd_tag_magic.h b/include/linux/drbd_tag_magic.h
index 069543190516..81f52f2c5724 100644
--- a/include/linux/drbd_tag_magic.h
+++ b/include/linux/drbd_tag_magic.h
@@ -28,7 +28,7 @@ enum packet_types {
28#define NL_STRING(pn, pr, member, len) \ 28#define NL_STRING(pn, pr, member, len) \
29 unsigned char member[len]; int member ## _len; \ 29 unsigned char member[len]; int member ## _len; \
30 int tag_and_len ## member; 30 int tag_and_len ## member;
31#include "linux/drbd_nl.h" 31#include <linux/drbd_nl.h>
32 32
33/* declare tag-list-sizes */ 33/* declare tag-list-sizes */
34static const int tag_list_sizes[] = { 34static const int tag_list_sizes[] = {
diff --git a/include/linux/dvb/frontend.h b/include/linux/dvb/frontend.h
index 36a3ed63f571..1b1094c35e4f 100644
--- a/include/linux/dvb/frontend.h
+++ b/include/linux/dvb/frontend.h
@@ -349,6 +349,7 @@ typedef enum fe_delivery_system {
349 SYS_CMMB, 349 SYS_CMMB,
350 SYS_DAB, 350 SYS_DAB,
351 SYS_DVBT2, 351 SYS_DVBT2,
352 SYS_TURBO,
352} fe_delivery_system_t; 353} fe_delivery_system_t;
353 354
354struct dtv_cmds_h { 355struct dtv_cmds_h {
diff --git a/include/linux/dvb/version.h b/include/linux/dvb/version.h
index 1421cc84afaa..66594b1d5d7b 100644
--- a/include/linux/dvb/version.h
+++ b/include/linux/dvb/version.h
@@ -24,6 +24,6 @@
24#define _DVBVERSION_H_ 24#define _DVBVERSION_H_
25 25
26#define DVB_API_VERSION 5 26#define DVB_API_VERSION 5
27#define DVB_API_VERSION_MINOR 3 27#define DVB_API_VERSION_MINOR 4
28 28
29#endif /*_DVBVERSION_H_*/ 29#endif /*_DVBVERSION_H_*/
diff --git a/include/linux/dw_apb_timer.h b/include/linux/dw_apb_timer.h
index 49638ea3b776..07261d52a6df 100644
--- a/include/linux/dw_apb_timer.h
+++ b/include/linux/dw_apb_timer.h
@@ -46,7 +46,7 @@ struct dw_apb_clock_event_device *
46dw_apb_clockevent_init(int cpu, const char *name, unsigned rating, 46dw_apb_clockevent_init(int cpu, const char *name, unsigned rating,
47 void __iomem *base, int irq, unsigned long freq); 47 void __iomem *base, int irq, unsigned long freq);
48struct dw_apb_clocksource * 48struct dw_apb_clocksource *
49dw_apb_clocksource_init(unsigned rating, char *name, void __iomem *base, 49dw_apb_clocksource_init(unsigned rating, const char *name, void __iomem *base,
50 unsigned long freq); 50 unsigned long freq);
51void dw_apb_clocksource_register(struct dw_apb_clocksource *dw_cs); 51void dw_apb_clocksource_register(struct dw_apb_clocksource *dw_cs);
52void dw_apb_clocksource_start(struct dw_apb_clocksource *dw_cs); 52void dw_apb_clocksource_start(struct dw_apb_clocksource *dw_cs);
diff --git a/include/linux/dynamic_debug.h b/include/linux/dynamic_debug.h
index e747ecd48e1c..0564e3c39882 100644
--- a/include/linux/dynamic_debug.h
+++ b/include/linux/dynamic_debug.h
@@ -1,13 +1,6 @@
1#ifndef _DYNAMIC_DEBUG_H 1#ifndef _DYNAMIC_DEBUG_H
2#define _DYNAMIC_DEBUG_H 2#define _DYNAMIC_DEBUG_H
3 3
4/* dynamic_printk_enabled, and dynamic_printk_enabled2 are bitmasks in which
5 * bit n is set to 1 if any modname hashes into the bucket n, 0 otherwise. They
6 * use independent hash functions, to reduce the chance of false positives.
7 */
8extern long long dynamic_debug_enabled;
9extern long long dynamic_debug_enabled2;
10
11/* 4/*
12 * An instance of this structure is created in a special 5 * An instance of this structure is created in a special
13 * ELF section at every dynamic debug callsite. At runtime, 6 * ELF section at every dynamic debug callsite. At runtime,
@@ -44,29 +37,57 @@ int ddebug_add_module(struct _ddebug *tab, unsigned int n,
44 37
45#if defined(CONFIG_DYNAMIC_DEBUG) 38#if defined(CONFIG_DYNAMIC_DEBUG)
46extern int ddebug_remove_module(const char *mod_name); 39extern int ddebug_remove_module(const char *mod_name);
47extern int __dynamic_pr_debug(struct _ddebug *descriptor, const char *fmt, ...) 40extern __printf(2, 3)
48 __attribute__ ((format (printf, 2, 3))); 41int __dynamic_pr_debug(struct _ddebug *descriptor, const char *fmt, ...);
49 42
50#define dynamic_pr_debug(fmt, ...) do { \ 43struct device;
51 static struct _ddebug descriptor \ 44
52 __used \ 45extern __printf(3, 4)
53 __attribute__((section("__verbose"), aligned(8))) = \ 46int __dynamic_dev_dbg(struct _ddebug *descriptor, const struct device *dev,
54 { KBUILD_MODNAME, __func__, __FILE__, fmt, __LINE__, \ 47 const char *fmt, ...);
55 _DPRINTK_FLAGS_DEFAULT }; \ 48
56 if (unlikely(descriptor.enabled)) \ 49struct net_device;
57 __dynamic_pr_debug(&descriptor, pr_fmt(fmt), ##__VA_ARGS__); \ 50
58 } while (0) 51extern __printf(3, 4)
59 52int __dynamic_netdev_dbg(struct _ddebug *descriptor,
60 53 const struct net_device *dev,
61#define dynamic_dev_dbg(dev, fmt, ...) do { \ 54 const char *fmt, ...);
62 static struct _ddebug descriptor \ 55
63 __used \ 56#define DEFINE_DYNAMIC_DEBUG_METADATA(name, fmt) \
64 __attribute__((section("__verbose"), aligned(8))) = \ 57 static struct _ddebug __used __aligned(8) \
65 { KBUILD_MODNAME, __func__, __FILE__, fmt, __LINE__, \ 58 __attribute__((section("__verbose"))) name = { \
66 _DPRINTK_FLAGS_DEFAULT }; \ 59 .modname = KBUILD_MODNAME, \
67 if (unlikely(descriptor.enabled)) \ 60 .function = __func__, \
68 dev_printk(KERN_DEBUG, dev, fmt, ##__VA_ARGS__); \ 61 .filename = __FILE__, \
69 } while (0) 62 .format = (fmt), \
63 .lineno = __LINE__, \
64 .flags = _DPRINTK_FLAGS_DEFAULT, \
65 .enabled = false, \
66 }
67
68#define dynamic_pr_debug(fmt, ...) \
69do { \
70 DEFINE_DYNAMIC_DEBUG_METADATA(descriptor, fmt); \
71 if (unlikely(descriptor.enabled)) \
72 __dynamic_pr_debug(&descriptor, pr_fmt(fmt), \
73 ##__VA_ARGS__); \
74} while (0)
75
76#define dynamic_dev_dbg(dev, fmt, ...) \
77do { \
78 DEFINE_DYNAMIC_DEBUG_METADATA(descriptor, fmt); \
79 if (unlikely(descriptor.enabled)) \
80 __dynamic_dev_dbg(&descriptor, dev, fmt, \
81 ##__VA_ARGS__); \
82} while (0)
83
84#define dynamic_netdev_dbg(dev, fmt, ...) \
85do { \
86 DEFINE_DYNAMIC_DEBUG_METADATA(descriptor, fmt); \
87 if (unlikely(descriptor.enabled)) \
88 __dynamic_netdev_dbg(&descriptor, dev, fmt, \
89 ##__VA_ARGS__); \
90} while (0)
70 91
71#else 92#else
72 93
diff --git a/include/linux/elf.h b/include/linux/elf.h
index 110821cb6ea5..31f0508d7da7 100644
--- a/include/linux/elf.h
+++ b/include/linux/elf.h
@@ -395,6 +395,7 @@ typedef struct elf64_shdr {
395#define NT_S390_CTRS 0x304 /* s390 control registers */ 395#define NT_S390_CTRS 0x304 /* s390 control registers */
396#define NT_S390_PREFIX 0x305 /* s390 prefix register */ 396#define NT_S390_PREFIX 0x305 /* s390 prefix register */
397#define NT_S390_LAST_BREAK 0x306 /* s390 breaking event address */ 397#define NT_S390_LAST_BREAK 0x306 /* s390 breaking event address */
398#define NT_S390_SYSTEM_CALL 0x307 /* s390 system call restart data */
398#define NT_ARM_VFP 0x400 /* ARM VFP/NEON registers */ 399#define NT_ARM_VFP 0x400 /* ARM VFP/NEON registers */
399 400
400 401
diff --git a/include/linux/ethtool.h b/include/linux/ethtool.h
index c6e427ab65fe..45f00b61c096 100644
--- a/include/linux/ethtool.h
+++ b/include/linux/ethtool.h
@@ -117,99 +117,101 @@ struct ethtool_eeprom {
117 __u8 data[0]; 117 __u8 data[0];
118}; 118};
119 119
120/* for configuring coalescing parameters of chip */ 120/**
121 * struct ethtool_coalesce - coalescing parameters for IRQs and stats updates
122 * @cmd: ETHTOOL_{G,S}COALESCE
123 * @rx_coalesce_usecs: How many usecs to delay an RX interrupt after
124 * a packet arrives.
125 * @rx_max_coalesced_frames: Maximum number of packets to receive
126 * before an RX interrupt.
127 * @rx_coalesce_usecs_irq: Same as @rx_coalesce_usecs, except that
128 * this value applies while an IRQ is being serviced by the host.
129 * @rx_max_coalesced_frames_irq: Same as @rx_max_coalesced_frames,
130 * except that this value applies while an IRQ is being serviced
131 * by the host.
132 * @tx_coalesce_usecs: How many usecs to delay a TX interrupt after
133 * a packet is sent.
134 * @tx_max_coalesced_frames: Maximum number of packets to be sent
135 * before a TX interrupt.
136 * @tx_coalesce_usecs_irq: Same as @tx_coalesce_usecs, except that
137 * this value applies while an IRQ is being serviced by the host.
138 * @tx_max_coalesced_frames_irq: Same as @tx_max_coalesced_frames,
139 * except that this value applies while an IRQ is being serviced
140 * by the host.
141 * @stats_block_coalesce_usecs: How many usecs to delay in-memory
142 * statistics block updates. Some drivers do not have an
143 * in-memory statistic block, and in such cases this value is
144 * ignored. This value must not be zero.
145 * @use_adaptive_rx_coalesce: Enable adaptive RX coalescing.
146 * @use_adaptive_tx_coalesce: Enable adaptive TX coalescing.
147 * @pkt_rate_low: Threshold for low packet rate (packets per second).
148 * @rx_coalesce_usecs_low: How many usecs to delay an RX interrupt after
149 * a packet arrives, when the packet rate is below @pkt_rate_low.
150 * @rx_max_coalesced_frames_low: Maximum number of packets to be received
151 * before an RX interrupt, when the packet rate is below @pkt_rate_low.
152 * @tx_coalesce_usecs_low: How many usecs to delay a TX interrupt after
153 * a packet is sent, when the packet rate is below @pkt_rate_low.
154 * @tx_max_coalesced_frames_low: Maximum nuumber of packets to be sent before
155 * a TX interrupt, when the packet rate is below @pkt_rate_low.
156 * @pkt_rate_high: Threshold for high packet rate (packets per second).
157 * @rx_coalesce_usecs_high: How many usecs to delay an RX interrupt after
158 * a packet arrives, when the packet rate is above @pkt_rate_high.
159 * @rx_max_coalesced_frames_high: Maximum number of packets to be received
160 * before an RX interrupt, when the packet rate is above @pkt_rate_high.
161 * @tx_coalesce_usecs_high: How many usecs to delay a TX interrupt after
162 * a packet is sent, when the packet rate is above @pkt_rate_high.
163 * @tx_max_coalesced_frames_high: Maximum number of packets to be sent before
164 * a TX interrupt, when the packet rate is above @pkt_rate_high.
165 * @rate_sample_interval: How often to do adaptive coalescing packet rate
166 * sampling, measured in seconds. Must not be zero.
167 *
168 * Each pair of (usecs, max_frames) fields specifies this exit
169 * condition for interrupt coalescing:
170 * (usecs > 0 && time_since_first_completion >= usecs) ||
171 * (max_frames > 0 && completed_frames >= max_frames)
172 * It is illegal to set both usecs and max_frames to zero as this
173 * would cause interrupts to never be generated. To disable
174 * coalescing, set usecs = 0 and max_frames = 1.
175 *
176 * Some implementations ignore the value of max_frames and use the
177 * condition:
178 * time_since_first_completion >= usecs
179 * This is deprecated. Drivers for hardware that does not support
180 * counting completions should validate that max_frames == !rx_usecs.
181 *
182 * Adaptive RX/TX coalescing is an algorithm implemented by some
183 * drivers to improve latency under low packet rates and improve
184 * throughput under high packet rates. Some drivers only implement
185 * one of RX or TX adaptive coalescing. Anything not implemented by
186 * the driver causes these values to be silently ignored.
187 *
188 * When the packet rate is below @pkt_rate_high but above
189 * @pkt_rate_low (both measured in packets per second) the
190 * normal {rx,tx}_* coalescing parameters are used.
191 */
121struct ethtool_coalesce { 192struct ethtool_coalesce {
122 __u32 cmd; /* ETHTOOL_{G,S}COALESCE */ 193 __u32 cmd;
123
124 /* How many usecs to delay an RX interrupt after
125 * a packet arrives. If 0, only rx_max_coalesced_frames
126 * is used.
127 */
128 __u32 rx_coalesce_usecs; 194 __u32 rx_coalesce_usecs;
129
130 /* How many packets to delay an RX interrupt after
131 * a packet arrives. If 0, only rx_coalesce_usecs is
132 * used. It is illegal to set both usecs and max frames
133 * to zero as this would cause RX interrupts to never be
134 * generated.
135 */
136 __u32 rx_max_coalesced_frames; 195 __u32 rx_max_coalesced_frames;
137
138 /* Same as above two parameters, except that these values
139 * apply while an IRQ is being serviced by the host. Not
140 * all cards support this feature and the values are ignored
141 * in that case.
142 */
143 __u32 rx_coalesce_usecs_irq; 196 __u32 rx_coalesce_usecs_irq;
144 __u32 rx_max_coalesced_frames_irq; 197 __u32 rx_max_coalesced_frames_irq;
145
146 /* How many usecs to delay a TX interrupt after
147 * a packet is sent. If 0, only tx_max_coalesced_frames
148 * is used.
149 */
150 __u32 tx_coalesce_usecs; 198 __u32 tx_coalesce_usecs;
151
152 /* How many packets to delay a TX interrupt after
153 * a packet is sent. If 0, only tx_coalesce_usecs is
154 * used. It is illegal to set both usecs and max frames
155 * to zero as this would cause TX interrupts to never be
156 * generated.
157 */
158 __u32 tx_max_coalesced_frames; 199 __u32 tx_max_coalesced_frames;
159
160 /* Same as above two parameters, except that these values
161 * apply while an IRQ is being serviced by the host. Not
162 * all cards support this feature and the values are ignored
163 * in that case.
164 */
165 __u32 tx_coalesce_usecs_irq; 200 __u32 tx_coalesce_usecs_irq;
166 __u32 tx_max_coalesced_frames_irq; 201 __u32 tx_max_coalesced_frames_irq;
167
168 /* How many usecs to delay in-memory statistics
169 * block updates. Some drivers do not have an in-memory
170 * statistic block, and in such cases this value is ignored.
171 * This value must not be zero.
172 */
173 __u32 stats_block_coalesce_usecs; 202 __u32 stats_block_coalesce_usecs;
174
175 /* Adaptive RX/TX coalescing is an algorithm implemented by
176 * some drivers to improve latency under low packet rates and
177 * improve throughput under high packet rates. Some drivers
178 * only implement one of RX or TX adaptive coalescing. Anything
179 * not implemented by the driver causes these values to be
180 * silently ignored.
181 */
182 __u32 use_adaptive_rx_coalesce; 203 __u32 use_adaptive_rx_coalesce;
183 __u32 use_adaptive_tx_coalesce; 204 __u32 use_adaptive_tx_coalesce;
184
185 /* When the packet rate (measured in packets per second)
186 * is below pkt_rate_low, the {rx,tx}_*_low parameters are
187 * used.
188 */
189 __u32 pkt_rate_low; 205 __u32 pkt_rate_low;
190 __u32 rx_coalesce_usecs_low; 206 __u32 rx_coalesce_usecs_low;
191 __u32 rx_max_coalesced_frames_low; 207 __u32 rx_max_coalesced_frames_low;
192 __u32 tx_coalesce_usecs_low; 208 __u32 tx_coalesce_usecs_low;
193 __u32 tx_max_coalesced_frames_low; 209 __u32 tx_max_coalesced_frames_low;
194
195 /* When the packet rate is below pkt_rate_high but above
196 * pkt_rate_low (both measured in packets per second) the
197 * normal {rx,tx}_* coalescing parameters are used.
198 */
199
200 /* When the packet rate is (measured in packets per second)
201 * is above pkt_rate_high, the {rx,tx}_*_high parameters are
202 * used.
203 */
204 __u32 pkt_rate_high; 210 __u32 pkt_rate_high;
205 __u32 rx_coalesce_usecs_high; 211 __u32 rx_coalesce_usecs_high;
206 __u32 rx_max_coalesced_frames_high; 212 __u32 rx_max_coalesced_frames_high;
207 __u32 tx_coalesce_usecs_high; 213 __u32 tx_coalesce_usecs_high;
208 __u32 tx_max_coalesced_frames_high; 214 __u32 tx_max_coalesced_frames_high;
209
210 /* How often to do adaptive coalescing packet rate sampling,
211 * measured in seconds. Must not be zero.
212 */
213 __u32 rate_sample_interval; 215 __u32 rate_sample_interval;
214}; 216};
215 217
@@ -444,7 +446,7 @@ struct ethtool_flow_ext {
444}; 446};
445 447
446/** 448/**
447 * struct ethtool_rx_flow_spec - specification for RX flow filter 449 * struct ethtool_rx_flow_spec - classification rule for RX flows
448 * @flow_type: Type of match to perform, e.g. %TCP_V4_FLOW 450 * @flow_type: Type of match to perform, e.g. %TCP_V4_FLOW
449 * @h_u: Flow fields to match (dependent on @flow_type) 451 * @h_u: Flow fields to match (dependent on @flow_type)
450 * @h_ext: Additional fields to match 452 * @h_ext: Additional fields to match
@@ -454,7 +456,9 @@ struct ethtool_flow_ext {
454 * includes the %FLOW_EXT flag. 456 * includes the %FLOW_EXT flag.
455 * @ring_cookie: RX ring/queue index to deliver to, or %RX_CLS_FLOW_DISC 457 * @ring_cookie: RX ring/queue index to deliver to, or %RX_CLS_FLOW_DISC
456 * if packets should be discarded 458 * if packets should be discarded
457 * @location: Index of filter in hardware table 459 * @location: Location of rule in the table. Locations must be
460 * numbered such that a flow matching multiple rules will be
461 * classified according to the first (lowest numbered) rule.
458 */ 462 */
459struct ethtool_rx_flow_spec { 463struct ethtool_rx_flow_spec {
460 __u32 flow_type; 464 __u32 flow_type;
@@ -473,9 +477,9 @@ struct ethtool_rx_flow_spec {
473 * %ETHTOOL_GRXCLSRLALL, %ETHTOOL_SRXCLSRLDEL or %ETHTOOL_SRXCLSRLINS 477 * %ETHTOOL_GRXCLSRLALL, %ETHTOOL_SRXCLSRLDEL or %ETHTOOL_SRXCLSRLINS
474 * @flow_type: Type of flow to be affected, e.g. %TCP_V4_FLOW 478 * @flow_type: Type of flow to be affected, e.g. %TCP_V4_FLOW
475 * @data: Command-dependent value 479 * @data: Command-dependent value
476 * @fs: Flow filter specification 480 * @fs: Flow classification rule
477 * @rule_cnt: Number of rules to be affected 481 * @rule_cnt: Number of rules to be affected
478 * @rule_locs: Array of valid rule indices 482 * @rule_locs: Array of used rule locations
479 * 483 *
480 * For %ETHTOOL_GRXFH and %ETHTOOL_SRXFH, @data is a bitmask indicating 484 * For %ETHTOOL_GRXFH and %ETHTOOL_SRXFH, @data is a bitmask indicating
481 * the fields included in the flow hash, e.g. %RXH_IP_SRC. The following 485 * the fields included in the flow hash, e.g. %RXH_IP_SRC. The following
@@ -487,23 +491,20 @@ struct ethtool_rx_flow_spec {
487 * For %ETHTOOL_GRXCLSRLCNT, @rule_cnt is set to the number of defined 491 * For %ETHTOOL_GRXCLSRLCNT, @rule_cnt is set to the number of defined
488 * rules on return. 492 * rules on return.
489 * 493 *
490 * For %ETHTOOL_GRXCLSRULE, @fs.@location specifies the index of an 494 * For %ETHTOOL_GRXCLSRULE, @fs.@location specifies the location of an
491 * existing filter rule on entry and @fs contains the rule on return. 495 * existing rule on entry and @fs contains the rule on return.
492 * 496 *
493 * For %ETHTOOL_GRXCLSRLALL, @rule_cnt specifies the array size of the 497 * For %ETHTOOL_GRXCLSRLALL, @rule_cnt specifies the array size of the
494 * user buffer for @rule_locs on entry. On return, @data is the size 498 * user buffer for @rule_locs on entry. On return, @data is the size
495 * of the filter table and @rule_locs contains the indices of the 499 * of the rule table, @rule_cnt is the number of defined rules, and
496 * defined rules. 500 * @rule_locs contains the locations of the defined rules. Drivers
501 * must use the second parameter to get_rxnfc() instead of @rule_locs.
497 * 502 *
498 * For %ETHTOOL_SRXCLSRLINS, @fs specifies the filter rule to add or 503 * For %ETHTOOL_SRXCLSRLINS, @fs specifies the rule to add or update.
499 * update. @fs.@location specifies the index to use and must not be 504 * @fs.@location specifies the location to use and must not be ignored.
500 * ignored.
501 * 505 *
502 * For %ETHTOOL_SRXCLSRLDEL, @fs.@location specifies the index of an 506 * For %ETHTOOL_SRXCLSRLDEL, @fs.@location specifies the location of an
503 * existing filter rule on entry. 507 * existing rule on entry.
504 *
505 * Implementation of indexed classification rules generally requires a
506 * TCAM.
507 */ 508 */
508struct ethtool_rxnfc { 509struct ethtool_rxnfc {
509 __u32 cmd; 510 __u32 cmd;
@@ -726,6 +727,9 @@ enum ethtool_sfeatures_retval_bits {
726/* needed by dev_disable_lro() */ 727/* needed by dev_disable_lro() */
727extern int __ethtool_set_flags(struct net_device *dev, u32 flags); 728extern int __ethtool_set_flags(struct net_device *dev, u32 flags);
728 729
730extern int __ethtool_get_settings(struct net_device *dev,
731 struct ethtool_cmd *cmd);
732
729/** 733/**
730 * enum ethtool_phys_id_state - indicator state for physical identification 734 * enum ethtool_phys_id_state - indicator state for physical identification
731 * @ETHTOOL_ID_INACTIVE: Physical ID indicator should be deactivated 735 * @ETHTOOL_ID_INACTIVE: Physical ID indicator should be deactivated
@@ -936,7 +940,7 @@ struct ethtool_ops {
936 int (*set_priv_flags)(struct net_device *, u32); 940 int (*set_priv_flags)(struct net_device *, u32);
937 int (*get_sset_count)(struct net_device *, int); 941 int (*get_sset_count)(struct net_device *, int);
938 int (*get_rxnfc)(struct net_device *, 942 int (*get_rxnfc)(struct net_device *,
939 struct ethtool_rxnfc *, void *); 943 struct ethtool_rxnfc *, u32 *rule_locs);
940 int (*set_rxnfc)(struct net_device *, struct ethtool_rxnfc *); 944 int (*set_rxnfc)(struct net_device *, struct ethtool_rxnfc *);
941 int (*flash_device)(struct net_device *, struct ethtool_flash *); 945 int (*flash_device)(struct net_device *, struct ethtool_flash *);
942 int (*reset)(struct net_device *, u32 *); 946 int (*reset)(struct net_device *, u32 *);
diff --git a/include/linux/evm.h b/include/linux/evm.h
new file mode 100644
index 000000000000..9fc13a760928
--- /dev/null
+++ b/include/linux/evm.h
@@ -0,0 +1,100 @@
1/*
2 * evm.h
3 *
4 * Copyright (c) 2009 IBM Corporation
5 * Author: Mimi Zohar <zohar@us.ibm.com>
6 */
7
8#ifndef _LINUX_EVM_H
9#define _LINUX_EVM_H
10
11#include <linux/integrity.h>
12#include <linux/xattr.h>
13
14struct integrity_iint_cache;
15
16#ifdef CONFIG_EVM
17extern enum integrity_status evm_verifyxattr(struct dentry *dentry,
18 const char *xattr_name,
19 void *xattr_value,
20 size_t xattr_value_len,
21 struct integrity_iint_cache *iint);
22extern int evm_inode_setattr(struct dentry *dentry, struct iattr *attr);
23extern void evm_inode_post_setattr(struct dentry *dentry, int ia_valid);
24extern int evm_inode_setxattr(struct dentry *dentry, const char *name,
25 const void *value, size_t size);
26extern void evm_inode_post_setxattr(struct dentry *dentry,
27 const char *xattr_name,
28 const void *xattr_value,
29 size_t xattr_value_len);
30extern int evm_inode_removexattr(struct dentry *dentry, const char *xattr_name);
31extern void evm_inode_post_removexattr(struct dentry *dentry,
32 const char *xattr_name);
33extern int evm_inode_init_security(struct inode *inode,
34 const struct xattr *xattr_array,
35 struct xattr *evm);
36#ifdef CONFIG_FS_POSIX_ACL
37extern int posix_xattr_acl(const char *xattrname);
38#else
39static inline int posix_xattr_acl(const char *xattrname)
40{
41 return 0;
42}
43#endif
44#else
45#ifdef CONFIG_INTEGRITY
46static inline enum integrity_status evm_verifyxattr(struct dentry *dentry,
47 const char *xattr_name,
48 void *xattr_value,
49 size_t xattr_value_len,
50 struct integrity_iint_cache *iint)
51{
52 return INTEGRITY_UNKNOWN;
53}
54#endif
55
56static inline int evm_inode_setattr(struct dentry *dentry, struct iattr *attr)
57{
58 return 0;
59}
60
61static inline void evm_inode_post_setattr(struct dentry *dentry, int ia_valid)
62{
63 return;
64}
65
66static inline int evm_inode_setxattr(struct dentry *dentry, const char *name,
67 const void *value, size_t size)
68{
69 return 0;
70}
71
72static inline void evm_inode_post_setxattr(struct dentry *dentry,
73 const char *xattr_name,
74 const void *xattr_value,
75 size_t xattr_value_len)
76{
77 return;
78}
79
80static inline int evm_inode_removexattr(struct dentry *dentry,
81 const char *xattr_name)
82{
83 return 0;
84}
85
86static inline void evm_inode_post_removexattr(struct dentry *dentry,
87 const char *xattr_name)
88{
89 return;
90}
91
92static inline int evm_inode_init_security(struct inode *inode,
93 const struct xattr *xattr_array,
94 struct xattr *evm)
95{
96 return 0;
97}
98
99#endif /* CONFIG_EVM_H */
100#endif /* LINUX_EVM_H */
diff --git a/include/linux/ext3_fs.h b/include/linux/ext3_fs.h
index 67a803aee619..81965cce6bfa 100644
--- a/include/linux/ext3_fs.h
+++ b/include/linux/ext3_fs.h
@@ -937,15 +937,15 @@ extern int ext3_group_extend(struct super_block *sb,
937 ext3_fsblk_t n_blocks_count); 937 ext3_fsblk_t n_blocks_count);
938 938
939/* super.c */ 939/* super.c */
940extern void ext3_error (struct super_block *, const char *, const char *, ...) 940extern __printf(3, 4)
941 __attribute__ ((format (printf, 3, 4))); 941void ext3_error(struct super_block *, const char *, const char *, ...);
942extern void __ext3_std_error (struct super_block *, const char *, int); 942extern void __ext3_std_error (struct super_block *, const char *, int);
943extern void ext3_abort (struct super_block *, const char *, const char *, ...) 943extern __printf(3, 4)
944 __attribute__ ((format (printf, 3, 4))); 944void ext3_abort(struct super_block *, const char *, const char *, ...);
945extern void ext3_warning (struct super_block *, const char *, const char *, ...) 945extern __printf(3, 4)
946 __attribute__ ((format (printf, 3, 4))); 946void ext3_warning(struct super_block *, const char *, const char *, ...);
947extern void ext3_msg(struct super_block *, const char *, const char *, ...) 947extern __printf(3, 4)
948 __attribute__ ((format (printf, 3, 4))); 948void ext3_msg(struct super_block *, const char *, const char *, ...);
949extern void ext3_update_dynamic_rev (struct super_block *sb); 949extern void ext3_update_dynamic_rev (struct super_block *sb);
950 950
951#define ext3_std_error(sb, errno) \ 951#define ext3_std_error(sb, errno) \
diff --git a/include/linux/filter.h b/include/linux/filter.h
index 741956fa5bfd..8eeb205f298b 100644
--- a/include/linux/filter.h
+++ b/include/linux/filter.h
@@ -155,7 +155,7 @@ extern unsigned int sk_run_filter(const struct sk_buff *skb,
155 const struct sock_filter *filter); 155 const struct sock_filter *filter);
156extern int sk_attach_filter(struct sock_fprog *fprog, struct sock *sk); 156extern int sk_attach_filter(struct sock_fprog *fprog, struct sock *sk);
157extern int sk_detach_filter(struct sock *sk); 157extern int sk_detach_filter(struct sock *sk);
158extern int sk_chk_filter(struct sock_filter *filter, int flen); 158extern int sk_chk_filter(struct sock_filter *filter, unsigned int flen);
159 159
160#ifdef CONFIG_BPF_JIT 160#ifdef CONFIG_BPF_JIT
161extern void bpf_jit_compile(struct sk_filter *fp); 161extern void bpf_jit_compile(struct sk_filter *fp);
diff --git a/include/linux/freezer.h b/include/linux/freezer.h
index 1effc8b56b4e..a49b52934c55 100644
--- a/include/linux/freezer.h
+++ b/include/linux/freezer.h
@@ -49,6 +49,7 @@ extern int thaw_process(struct task_struct *p);
49 49
50extern void refrigerator(void); 50extern void refrigerator(void);
51extern int freeze_processes(void); 51extern int freeze_processes(void);
52extern int freeze_kernel_threads(void);
52extern void thaw_processes(void); 53extern void thaw_processes(void);
53 54
54static inline int try_to_freeze(void) 55static inline int try_to_freeze(void)
@@ -134,10 +135,25 @@ static inline void set_freezable_with_signal(void)
134} 135}
135 136
136/* 137/*
137 * Freezer-friendly wrappers around wait_event_interruptible() and 138 * Freezer-friendly wrappers around wait_event_interruptible(),
138 * wait_event_interruptible_timeout(), originally defined in <linux/wait.h> 139 * wait_event_killable() and wait_event_interruptible_timeout(), originally
140 * defined in <linux/wait.h>
139 */ 141 */
140 142
143#define wait_event_freezekillable(wq, condition) \
144({ \
145 int __retval; \
146 do { \
147 __retval = wait_event_killable(wq, \
148 (condition) || freezing(current)); \
149 if (__retval && !freezing(current)) \
150 break; \
151 else if (!(condition)) \
152 __retval = -ERESTARTSYS; \
153 } while (try_to_freeze()); \
154 __retval; \
155})
156
141#define wait_event_freezable(wq, condition) \ 157#define wait_event_freezable(wq, condition) \
142({ \ 158({ \
143 int __retval; \ 159 int __retval; \
@@ -171,7 +187,8 @@ static inline void clear_freeze_flag(struct task_struct *p) {}
171static inline int thaw_process(struct task_struct *p) { return 1; } 187static inline int thaw_process(struct task_struct *p) { return 1; }
172 188
173static inline void refrigerator(void) {} 189static inline void refrigerator(void) {}
174static inline int freeze_processes(void) { BUG(); return 0; } 190static inline int freeze_processes(void) { return -ENOSYS; }
191static inline int freeze_kernel_threads(void) { return -ENOSYS; }
175static inline void thaw_processes(void) {} 192static inline void thaw_processes(void) {}
176 193
177static inline int try_to_freeze(void) { return 0; } 194static inline int try_to_freeze(void) { return 0; }
@@ -188,6 +205,9 @@ static inline void set_freezable_with_signal(void) {}
188#define wait_event_freezable_timeout(wq, condition, timeout) \ 205#define wait_event_freezable_timeout(wq, condition, timeout) \
189 wait_event_interruptible_timeout(wq, condition, timeout) 206 wait_event_interruptible_timeout(wq, condition, timeout)
190 207
208#define wait_event_freezekillable(wq, condition) \
209 wait_event_killable(wq, condition)
210
191#endif /* !CONFIG_FREEZER */ 211#endif /* !CONFIG_FREEZER */
192 212
193#endif /* FREEZER_H_INCLUDED */ 213#endif /* FREEZER_H_INCLUDED */
diff --git a/include/linux/fs.h b/include/linux/fs.h
index 277f497923a2..7a049fd2aa4c 100644
--- a/include/linux/fs.h
+++ b/include/linux/fs.h
@@ -58,14 +58,15 @@ struct inodes_stat_t {
58 58
59#define NR_FILE 8192 /* this can well be larger on a larger system */ 59#define NR_FILE 8192 /* this can well be larger on a larger system */
60 60
61#define MAY_EXEC 1 61#define MAY_EXEC 0x00000001
62#define MAY_WRITE 2 62#define MAY_WRITE 0x00000002
63#define MAY_READ 4 63#define MAY_READ 0x00000004
64#define MAY_APPEND 8 64#define MAY_APPEND 0x00000008
65#define MAY_ACCESS 16 65#define MAY_ACCESS 0x00000010
66#define MAY_OPEN 32 66#define MAY_OPEN 0x00000020
67#define MAY_CHDIR 64 67#define MAY_CHDIR 0x00000040
68#define MAY_NOT_BLOCK 128 /* called from RCU mode, don't block */ 68/* called from RCU mode, don't block */
69#define MAY_NOT_BLOCK 0x00000080
69 70
70/* 71/*
71 * flags in file.f_mode. Note that FMODE_READ and FMODE_WRITE must correspond 72 * flags in file.f_mode. Note that FMODE_READ and FMODE_WRITE must correspond
@@ -963,7 +964,12 @@ struct file {
963#define f_dentry f_path.dentry 964#define f_dentry f_path.dentry
964#define f_vfsmnt f_path.mnt 965#define f_vfsmnt f_path.mnt
965 const struct file_operations *f_op; 966 const struct file_operations *f_op;
966 spinlock_t f_lock; /* f_ep_links, f_flags, no IRQ */ 967
968 /*
969 * Protects f_ep_links, f_flags, f_pos vs i_size in lseek SEEK_CUR.
970 * Must not be taken from IRQ context.
971 */
972 spinlock_t f_lock;
967#ifdef CONFIG_SMP 973#ifdef CONFIG_SMP
968 int f_sb_list_cpu; 974 int f_sb_list_cpu;
969#endif 975#endif
@@ -1063,6 +1069,8 @@ static inline int file_check_writeable(struct file *filp)
1063#define FL_LEASE 32 /* lease held on this file */ 1069#define FL_LEASE 32 /* lease held on this file */
1064#define FL_CLOSE 64 /* unlock on close */ 1070#define FL_CLOSE 64 /* unlock on close */
1065#define FL_SLEEP 128 /* A blocking lock */ 1071#define FL_SLEEP 128 /* A blocking lock */
1072#define FL_DOWNGRADE_PENDING 256 /* Lease is being downgraded */
1073#define FL_UNLOCK_PENDING 512 /* Lease is being broken */
1066 1074
1067/* 1075/*
1068 * Special return value from posix_lock_file() and vfs_lock_file() for 1076 * Special return value from posix_lock_file() and vfs_lock_file() for
@@ -1109,7 +1117,7 @@ struct file_lock {
1109 struct list_head fl_link; /* doubly linked list of all locks */ 1117 struct list_head fl_link; /* doubly linked list of all locks */
1110 struct list_head fl_block; /* circular list of blocked processes */ 1118 struct list_head fl_block; /* circular list of blocked processes */
1111 fl_owner_t fl_owner; 1119 fl_owner_t fl_owner;
1112 unsigned char fl_flags; 1120 unsigned int fl_flags;
1113 unsigned char fl_type; 1121 unsigned char fl_type;
1114 unsigned int fl_pid; 1122 unsigned int fl_pid;
1115 struct pid *fl_nspid; 1123 struct pid *fl_nspid;
@@ -1119,7 +1127,9 @@ struct file_lock {
1119 loff_t fl_end; 1127 loff_t fl_end;
1120 1128
1121 struct fasync_struct * fl_fasync; /* for lease break notifications */ 1129 struct fasync_struct * fl_fasync; /* for lease break notifications */
1122 unsigned long fl_break_time; /* for nonblocking lease breaks */ 1130 /* for lease breaks: */
1131 unsigned long fl_break_time;
1132 unsigned long fl_downgrade_time;
1123 1133
1124 const struct file_lock_operations *fl_ops; /* Callbacks for filesystems */ 1134 const struct file_lock_operations *fl_ops; /* Callbacks for filesystems */
1125 const struct lock_manager_operations *fl_lmops; /* Callbacks for lockmanagers */ 1135 const struct lock_manager_operations *fl_lmops; /* Callbacks for lockmanagers */
@@ -1623,9 +1633,10 @@ struct inode_operations {
1623struct seq_file; 1633struct seq_file;
1624 1634
1625ssize_t rw_copy_check_uvector(int type, const struct iovec __user * uvector, 1635ssize_t rw_copy_check_uvector(int type, const struct iovec __user * uvector,
1626 unsigned long nr_segs, unsigned long fast_segs, 1636 unsigned long nr_segs, unsigned long fast_segs,
1627 struct iovec *fast_pointer, 1637 struct iovec *fast_pointer,
1628 struct iovec **ret_pointer); 1638 struct iovec **ret_pointer,
1639 int check_access);
1629 1640
1630extern ssize_t vfs_read(struct file *, char __user *, size_t, loff_t *); 1641extern ssize_t vfs_read(struct file *, char __user *, size_t, loff_t *);
1631extern ssize_t vfs_write(struct file *, const char __user *, size_t, loff_t *); 1642extern ssize_t vfs_write(struct file *, const char __user *, size_t, loff_t *);
@@ -2397,8 +2408,8 @@ file_ra_state_init(struct file_ra_state *ra, struct address_space *mapping);
2397extern loff_t noop_llseek(struct file *file, loff_t offset, int origin); 2408extern loff_t noop_llseek(struct file *file, loff_t offset, int origin);
2398extern loff_t no_llseek(struct file *file, loff_t offset, int origin); 2409extern loff_t no_llseek(struct file *file, loff_t offset, int origin);
2399extern loff_t generic_file_llseek(struct file *file, loff_t offset, int origin); 2410extern loff_t generic_file_llseek(struct file *file, loff_t offset, int origin);
2400extern loff_t generic_file_llseek_unlocked(struct file *file, loff_t offset, 2411extern loff_t generic_file_llseek_size(struct file *file, loff_t offset,
2401 int origin); 2412 int origin, loff_t maxsize);
2402extern int generic_file_open(struct inode * inode, struct file * filp); 2413extern int generic_file_open(struct inode * inode, struct file * filp);
2403extern int nonseekable_open(struct inode * inode, struct file * filp); 2414extern int nonseekable_open(struct inode * inode, struct file * filp);
2404 2415
@@ -2624,8 +2635,8 @@ static const struct file_operations __fops = { \
2624 .llseek = generic_file_llseek, \ 2635 .llseek = generic_file_llseek, \
2625}; 2636};
2626 2637
2627static inline void __attribute__((format(printf, 1, 2))) 2638static inline __printf(1, 2)
2628__simple_attr_check_format(const char *fmt, ...) 2639void __simple_attr_check_format(const char *fmt, ...)
2629{ 2640{
2630 /* don't do anything, just let the compiler check the arguments; */ 2641 /* don't do anything, just let the compiler check the arguments; */
2631} 2642}
diff --git a/include/linux/fscache-cache.h b/include/linux/fscache-cache.h
index af095b54502e..ce31408b1e47 100644
--- a/include/linux/fscache-cache.h
+++ b/include/linux/fscache-cache.h
@@ -492,10 +492,10 @@ static inline void fscache_end_io(struct fscache_retrieval *op,
492/* 492/*
493 * out-of-line cache backend functions 493 * out-of-line cache backend functions
494 */ 494 */
495extern void fscache_init_cache(struct fscache_cache *cache, 495extern __printf(3, 4)
496 const struct fscache_cache_ops *ops, 496void fscache_init_cache(struct fscache_cache *cache,
497 const char *idfmt, 497 const struct fscache_cache_ops *ops,
498 ...) __attribute__ ((format (printf, 3, 4))); 498 const char *idfmt, ...);
499 499
500extern int fscache_add_cache(struct fscache_cache *cache, 500extern int fscache_add_cache(struct fscache_cache *cache,
501 struct fscache_object *fsdef, 501 struct fscache_object *fsdef,
diff --git a/include/linux/fsl-diu-fb.h b/include/linux/fsl-diu-fb.h
index daa9952d2174..11c16a1fb9e3 100644
--- a/include/linux/fsl-diu-fb.h
+++ b/include/linux/fsl-diu-fb.h
@@ -20,18 +20,8 @@
20#ifndef __FSL_DIU_FB_H__ 20#ifndef __FSL_DIU_FB_H__
21#define __FSL_DIU_FB_H__ 21#define __FSL_DIU_FB_H__
22 22
23/* Arbitrary threshold to determine the allocation method
24 * See mpc8610fb_set_par(), map_video_memory(), and unmap_video_memory()
25 */
26#define MEM_ALLOC_THRESHOLD (1024*768*4+32)
27
28#include <linux/types.h> 23#include <linux/types.h>
29 24
30struct mfb_alpha {
31 int enable;
32 int alpha;
33};
34
35struct mfb_chroma_key { 25struct mfb_chroma_key {
36 int enable; 26 int enable;
37 __u8 red_max; 27 __u8 red_max;
@@ -43,25 +33,29 @@ struct mfb_chroma_key {
43}; 33};
44 34
45struct aoi_display_offset { 35struct aoi_display_offset {
46 int x_aoi_d; 36 __s32 x_aoi_d;
47 int y_aoi_d; 37 __s32 y_aoi_d;
48}; 38};
49 39
50#define MFB_SET_CHROMA_KEY _IOW('M', 1, struct mfb_chroma_key) 40#define MFB_SET_CHROMA_KEY _IOW('M', 1, struct mfb_chroma_key)
51#define MFB_SET_BRIGHTNESS _IOW('M', 3, __u8) 41#define MFB_SET_BRIGHTNESS _IOW('M', 3, __u8)
42#define MFB_SET_ALPHA _IOW('M', 0, __u8)
43#define MFB_GET_ALPHA _IOR('M', 0, __u8)
44#define MFB_SET_AOID _IOW('M', 4, struct aoi_display_offset)
45#define MFB_GET_AOID _IOR('M', 4, struct aoi_display_offset)
46#define MFB_SET_PIXFMT _IOW('M', 8, __u32)
47#define MFB_GET_PIXFMT _IOR('M', 8, __u32)
52 48
53#define MFB_SET_ALPHA 0x80014d00 49/*
54#define MFB_GET_ALPHA 0x40014d00 50 * The original definitions of MFB_SET_PIXFMT and MFB_GET_PIXFMT used the
55#define MFB_SET_AOID 0x80084d04 51 * wrong value for 'size' field of the ioctl. The current macros above use the
56#define MFB_GET_AOID 0x40084d04 52 * right size, but we still need to provide backwards compatibility, at least
57#define MFB_SET_PIXFMT 0x80014d08 53 * for a while.
58#define MFB_GET_PIXFMT 0x40014d08 54*/
59 55#define MFB_SET_PIXFMT_OLD 0x80014d08
60#define FBIOGET_GWINFO 0x46E0 56#define MFB_GET_PIXFMT_OLD 0x40014d08
61#define FBIOPUT_GWINFO 0x46E1
62 57
63#ifdef __KERNEL__ 58#ifdef __KERNEL__
64#include <linux/spinlock.h>
65 59
66/* 60/*
67 * These are the fields of area descriptor(in DDR memory) for every plane 61 * These are the fields of area descriptor(in DDR memory) for every plane
@@ -159,58 +153,12 @@ struct diu {
159 __be32 plut; 153 __be32 plut;
160} __attribute__ ((packed)); 154} __attribute__ ((packed));
161 155
162struct diu_hw { 156/*
163 struct diu *diu_reg; 157 * Modes of operation of DIU. The DIU supports five different modes, but
164 spinlock_t reg_lock; 158 * the driver only supports modes 0 and 1.
165 159 */
166 __u32 mode; /* DIU operation mode */
167};
168
169struct diu_addr {
170 __u8 __iomem *vaddr; /* Virtual address */
171 dma_addr_t paddr; /* Physical address */
172 __u32 offset;
173};
174
175struct diu_pool {
176 struct diu_addr ad;
177 struct diu_addr gamma;
178 struct diu_addr pallete;
179 struct diu_addr cursor;
180};
181
182#define FSL_DIU_BASE_OFFSET 0x2C000 /* Offset of DIU */
183#define INT_LCDC 64 /* DIU interrupt number */
184
185#define FSL_AOI_NUM 6 /* 5 AOIs and one dummy AOI */
186 /* 1 for plane 0, 2 for plane 1&2 each */
187
188/* Minimum X and Y resolutions */
189#define MIN_XRES 64
190#define MIN_YRES 64
191
192/* HW cursor parameters */
193#define MAX_CURS 32
194
195/* Modes of operation of DIU */
196#define MFB_MODE0 0 /* DIU off */ 160#define MFB_MODE0 0 /* DIU off */
197#define MFB_MODE1 1 /* All three planes output to display */ 161#define MFB_MODE1 1 /* All three planes output to display */
198#define MFB_MODE2 2 /* Plane 1 to display, planes 2+3 written back*/
199#define MFB_MODE3 3 /* All three planes written back to memory */
200#define MFB_MODE4 4 /* Color bar generation */
201
202/* INT_STATUS/INT_MASK field descriptions */
203#define INT_VSYNC 0x01 /* Vsync interrupt */
204#define INT_VSYNC_WB 0x02 /* Vsync interrupt for write back operation */
205#define INT_UNDRUN 0x04 /* Under run exception interrupt */
206#define INT_PARERR 0x08 /* Display parameters error interrupt */
207#define INT_LS_BF_VS 0x10 /* Lines before vsync. interrupt */
208
209/* Panels'operation modes */
210#define MFB_TYPE_OUTPUT 0 /* Panel output to display */
211#define MFB_TYPE_OFF 1 /* Panel off */
212#define MFB_TYPE_WB 2 /* Panel written back to memory */
213#define MFB_TYPE_TEST 3 /* Panel generate color bar */
214 162
215#endif /* __KERNEL__ */ 163#endif /* __KERNEL__ */
216#endif /* __FSL_DIU_FB_H__ */ 164#endif /* __FSL_DIU_FB_H__ */
diff --git a/include/linux/gameport.h b/include/linux/gameport.h
index b65a6f472775..069ee4139105 100644
--- a/include/linux/gameport.h
+++ b/include/linux/gameport.h
@@ -78,8 +78,8 @@ static inline void gameport_register_port(struct gameport *gameport)
78 78
79void gameport_unregister_port(struct gameport *gameport); 79void gameport_unregister_port(struct gameport *gameport);
80 80
81void gameport_set_phys(struct gameport *gameport, const char *fmt, ...) 81__printf(2, 3)
82 __attribute__ ((format (printf, 2, 3))); 82void gameport_set_phys(struct gameport *gameport, const char *fmt, ...);
83 83
84#else 84#else
85 85
@@ -93,8 +93,8 @@ static inline void gameport_unregister_port(struct gameport *gameport)
93 return; 93 return;
94} 94}
95 95
96static inline void gameport_set_phys(struct gameport *gameport, 96static inline __printf(2, 3)
97 const char *fmt, ...) 97void gameport_set_phys(struct gameport *gameport, const char *fmt, ...)
98{ 98{
99 return; 99 return;
100} 100}
diff --git a/include/linux/genhd.h b/include/linux/genhd.h
index 02fa4697a0e5..6957350e122f 100644
--- a/include/linux/genhd.h
+++ b/include/linux/genhd.h
@@ -21,6 +21,8 @@
21#define dev_to_part(device) container_of((device), struct hd_struct, __dev) 21#define dev_to_part(device) container_of((device), struct hd_struct, __dev)
22#define disk_to_dev(disk) (&(disk)->part0.__dev) 22#define disk_to_dev(disk) (&(disk)->part0.__dev)
23#define part_to_dev(part) (&((part)->__dev)) 23#define part_to_dev(part) (&((part)->__dev))
24#define alias_name(disk) ((disk)->alias ? (disk)->alias : \
25 (disk)->disk_name)
24 26
25extern struct device_type part_type; 27extern struct device_type part_type;
26extern struct kobject *block_depr; 28extern struct kobject *block_depr;
@@ -58,6 +60,7 @@ enum {
58 60
59#define DISK_MAX_PARTS 256 61#define DISK_MAX_PARTS 256
60#define DISK_NAME_LEN 32 62#define DISK_NAME_LEN 32
63#define ALIAS_LEN 256
61 64
62#include <linux/major.h> 65#include <linux/major.h>
63#include <linux/device.h> 66#include <linux/device.h>
@@ -162,6 +165,7 @@ struct gendisk {
162 * disks that can't be partitioned. */ 165 * disks that can't be partitioned. */
163 166
164 char disk_name[DISK_NAME_LEN]; /* name of major driver */ 167 char disk_name[DISK_NAME_LEN]; /* name of major driver */
168 char *alias; /* alias name of disk */
165 char *(*devnode)(struct gendisk *gd, mode_t *mode); 169 char *(*devnode)(struct gendisk *gd, mode_t *mode);
166 170
167 unsigned int events; /* supported events */ 171 unsigned int events; /* supported events */
diff --git a/include/linux/gpio.h b/include/linux/gpio.h
index 17b5a0d80e42..38ac48b7d3a8 100644
--- a/include/linux/gpio.h
+++ b/include/linux/gpio.h
@@ -14,6 +14,18 @@
14#define GPIOF_OUT_INIT_LOW (GPIOF_DIR_OUT | GPIOF_INIT_LOW) 14#define GPIOF_OUT_INIT_LOW (GPIOF_DIR_OUT | GPIOF_INIT_LOW)
15#define GPIOF_OUT_INIT_HIGH (GPIOF_DIR_OUT | GPIOF_INIT_HIGH) 15#define GPIOF_OUT_INIT_HIGH (GPIOF_DIR_OUT | GPIOF_INIT_HIGH)
16 16
17/**
18 * struct gpio - a structure describing a GPIO with configuration
19 * @gpio: the GPIO number
20 * @flags: GPIO configuration as specified by GPIOF_*
21 * @label: a literal description string of this GPIO
22 */
23struct gpio {
24 unsigned gpio;
25 unsigned long flags;
26 const char *label;
27};
28
17#ifdef CONFIG_GENERIC_GPIO 29#ifdef CONFIG_GENERIC_GPIO
18#include <asm/gpio.h> 30#include <asm/gpio.h>
19 31
@@ -24,18 +36,8 @@
24#include <linux/errno.h> 36#include <linux/errno.h>
25 37
26struct device; 38struct device;
27struct gpio;
28struct gpio_chip; 39struct gpio_chip;
29 40
30/*
31 * Some platforms don't support the GPIO programming interface.
32 *
33 * In case some driver uses it anyway (it should normally have
34 * depended on GENERIC_GPIO), these routines help the compiler
35 * optimize out much GPIO-related code ... or trigger a runtime
36 * warning when something is wrongly called.
37 */
38
39static inline bool gpio_is_valid(int number) 41static inline bool gpio_is_valid(int number)
40{ 42{
41 return false; 43 return false;
diff --git a/include/linux/hid.h b/include/linux/hid.h
index 9cf8e7ae7450..deed5f9a1e1c 100644
--- a/include/linux/hid.h
+++ b/include/linux/hid.h
@@ -71,6 +71,7 @@
71#include <linux/timer.h> 71#include <linux/timer.h>
72#include <linux/workqueue.h> 72#include <linux/workqueue.h>
73#include <linux/input.h> 73#include <linux/input.h>
74#include <linux/semaphore.h>
74 75
75/* 76/*
76 * We parse each description item into this structure. Short items data 77 * We parse each description item into this structure. Short items data
@@ -312,6 +313,7 @@ struct hid_item {
312#define HID_QUIRK_BADPAD 0x00000020 313#define HID_QUIRK_BADPAD 0x00000020
313#define HID_QUIRK_MULTI_INPUT 0x00000040 314#define HID_QUIRK_MULTI_INPUT 0x00000040
314#define HID_QUIRK_HIDINPUT_FORCE 0x00000080 315#define HID_QUIRK_HIDINPUT_FORCE 0x00000080
316#define HID_QUIRK_MULTITOUCH 0x00000100
315#define HID_QUIRK_SKIP_OUTPUT_REPORTS 0x00010000 317#define HID_QUIRK_SKIP_OUTPUT_REPORTS 0x00010000
316#define HID_QUIRK_FULLSPEED_INTERVAL 0x10000000 318#define HID_QUIRK_FULLSPEED_INTERVAL 0x10000000
317#define HID_QUIRK_NO_INIT_REPORTS 0x20000000 319#define HID_QUIRK_NO_INIT_REPORTS 0x20000000
@@ -475,6 +477,7 @@ struct hid_device { /* device report descriptor */
475 unsigned country; /* HID country */ 477 unsigned country; /* HID country */
476 struct hid_report_enum report_enum[HID_REPORT_TYPES]; 478 struct hid_report_enum report_enum[HID_REPORT_TYPES];
477 479
480 struct semaphore driver_lock; /* protects the current driver */
478 struct device dev; /* device */ 481 struct device dev; /* device */
479 struct hid_driver *driver; 482 struct hid_driver *driver;
480 struct hid_ll_driver *ll_driver; 483 struct hid_ll_driver *ll_driver;
diff --git a/include/linux/huge_mm.h b/include/linux/huge_mm.h
index 48c32ebf65a7..a9ace9c32507 100644
--- a/include/linux/huge_mm.h
+++ b/include/linux/huge_mm.h
@@ -22,6 +22,11 @@ extern int zap_huge_pmd(struct mmu_gather *tlb,
22extern int mincore_huge_pmd(struct vm_area_struct *vma, pmd_t *pmd, 22extern int mincore_huge_pmd(struct vm_area_struct *vma, pmd_t *pmd,
23 unsigned long addr, unsigned long end, 23 unsigned long addr, unsigned long end,
24 unsigned char *vec); 24 unsigned char *vec);
25extern int move_huge_pmd(struct vm_area_struct *vma,
26 struct vm_area_struct *new_vma,
27 unsigned long old_addr,
28 unsigned long new_addr, unsigned long old_end,
29 pmd_t *old_pmd, pmd_t *new_pmd);
25extern int change_huge_pmd(struct vm_area_struct *vma, pmd_t *pmd, 30extern int change_huge_pmd(struct vm_area_struct *vma, pmd_t *pmd,
26 unsigned long addr, pgprot_t newprot); 31 unsigned long addr, pgprot_t newprot);
27 32
diff --git a/include/linux/hyperv.h b/include/linux/hyperv.h
new file mode 100644
index 000000000000..12ec328481de
--- /dev/null
+++ b/include/linux/hyperv.h
@@ -0,0 +1,873 @@
1/*
2 *
3 * Copyright (c) 2011, Microsoft Corporation.
4 *
5 * This program is free software; you can redistribute it and/or modify it
6 * under the terms and conditions of the GNU General Public License,
7 * version 2, as published by the Free Software Foundation.
8 *
9 * This program is distributed in the hope it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
12 * more details.
13 *
14 * You should have received a copy of the GNU General Public License along with
15 * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
16 * Place - Suite 330, Boston, MA 02111-1307 USA.
17 *
18 * Authors:
19 * Haiyang Zhang <haiyangz@microsoft.com>
20 * Hank Janssen <hjanssen@microsoft.com>
21 * K. Y. Srinivasan <kys@microsoft.com>
22 *
23 */
24
25#ifndef _HYPERV_H
26#define _HYPERV_H
27
28#include <linux/scatterlist.h>
29#include <linux/list.h>
30#include <linux/uuid.h>
31#include <linux/timer.h>
32#include <linux/workqueue.h>
33#include <linux/completion.h>
34#include <linux/device.h>
35#include <linux/mod_devicetable.h>
36
37
38#define MAX_PAGE_BUFFER_COUNT 16
39#define MAX_MULTIPAGE_BUFFER_COUNT 32 /* 128K */
40
41#pragma pack(push, 1)
42
43/* Single-page buffer */
44struct hv_page_buffer {
45 u32 len;
46 u32 offset;
47 u64 pfn;
48};
49
50/* Multiple-page buffer */
51struct hv_multipage_buffer {
52 /* Length and Offset determines the # of pfns in the array */
53 u32 len;
54 u32 offset;
55 u64 pfn_array[MAX_MULTIPAGE_BUFFER_COUNT];
56};
57
58/* 0x18 includes the proprietary packet header */
59#define MAX_PAGE_BUFFER_PACKET (0x18 + \
60 (sizeof(struct hv_page_buffer) * \
61 MAX_PAGE_BUFFER_COUNT))
62#define MAX_MULTIPAGE_BUFFER_PACKET (0x18 + \
63 sizeof(struct hv_multipage_buffer))
64
65
66#pragma pack(pop)
67
68struct hv_ring_buffer {
69 /* Offset in bytes from the start of ring data below */
70 u32 write_index;
71
72 /* Offset in bytes from the start of ring data below */
73 u32 read_index;
74
75 u32 interrupt_mask;
76
77 /* Pad it to PAGE_SIZE so that data starts on page boundary */
78 u8 reserved[4084];
79
80 /* NOTE:
81 * The interrupt_mask field is used only for channels but since our
82 * vmbus connection also uses this data structure and its data starts
83 * here, we commented out this field.
84 */
85
86 /*
87 * Ring data starts here + RingDataStartOffset
88 * !!! DO NOT place any fields below this !!!
89 */
90 u8 buffer[0];
91} __packed;
92
93struct hv_ring_buffer_info {
94 struct hv_ring_buffer *ring_buffer;
95 u32 ring_size; /* Include the shared header */
96 spinlock_t ring_lock;
97
98 u32 ring_datasize; /* < ring_size */
99 u32 ring_data_startoffset;
100};
101
102struct hv_ring_buffer_debug_info {
103 u32 current_interrupt_mask;
104 u32 current_read_index;
105 u32 current_write_index;
106 u32 bytes_avail_toread;
107 u32 bytes_avail_towrite;
108};
109
110/*
111 * We use the same version numbering for all Hyper-V modules.
112 *
113 * Definition of versioning is as follows;
114 *
115 * Major Number Changes for these scenarios;
116 * 1. When a new version of Windows Hyper-V
117 * is released.
118 * 2. A Major change has occurred in the
119 * Linux IC's.
120 * (For example the merge for the first time
121 * into the kernel) Every time the Major Number
122 * changes, the Revision number is reset to 0.
123 * Minor Number Changes when new functionality is added
124 * to the Linux IC's that is not a bug fix.
125 *
126 * 3.1 - Added completed hv_utils driver. Shutdown/Heartbeat/Timesync
127 */
128#define HV_DRV_VERSION "3.1"
129
130
131/*
132 * A revision number of vmbus that is used for ensuring both ends on a
133 * partition are using compatible versions.
134 */
135#define VMBUS_REVISION_NUMBER 13
136
137/* Make maximum size of pipe payload of 16K */
138#define MAX_PIPE_DATA_PAYLOAD (sizeof(u8) * 16384)
139
140/* Define PipeMode values. */
141#define VMBUS_PIPE_TYPE_BYTE 0x00000000
142#define VMBUS_PIPE_TYPE_MESSAGE 0x00000004
143
144/* The size of the user defined data buffer for non-pipe offers. */
145#define MAX_USER_DEFINED_BYTES 120
146
147/* The size of the user defined data buffer for pipe offers. */
148#define MAX_PIPE_USER_DEFINED_BYTES 116
149
150/*
151 * At the center of the Channel Management library is the Channel Offer. This
152 * struct contains the fundamental information about an offer.
153 */
154struct vmbus_channel_offer {
155 uuid_le if_type;
156 uuid_le if_instance;
157 u64 int_latency; /* in 100ns units */
158 u32 if_revision;
159 u32 server_ctx_size; /* in bytes */
160 u16 chn_flags;
161 u16 mmio_megabytes; /* in bytes * 1024 * 1024 */
162
163 union {
164 /* Non-pipes: The user has MAX_USER_DEFINED_BYTES bytes. */
165 struct {
166 unsigned char user_def[MAX_USER_DEFINED_BYTES];
167 } std;
168
169 /*
170 * Pipes:
171 * The following sructure is an integrated pipe protocol, which
172 * is implemented on top of standard user-defined data. Pipe
173 * clients have MAX_PIPE_USER_DEFINED_BYTES left for their own
174 * use.
175 */
176 struct {
177 u32 pipe_mode;
178 unsigned char user_def[MAX_PIPE_USER_DEFINED_BYTES];
179 } pipe;
180 } u;
181 u32 padding;
182} __packed;
183
184/* Server Flags */
185#define VMBUS_CHANNEL_ENUMERATE_DEVICE_INTERFACE 1
186#define VMBUS_CHANNEL_SERVER_SUPPORTS_TRANSFER_PAGES 2
187#define VMBUS_CHANNEL_SERVER_SUPPORTS_GPADLS 4
188#define VMBUS_CHANNEL_NAMED_PIPE_MODE 0x10
189#define VMBUS_CHANNEL_LOOPBACK_OFFER 0x100
190#define VMBUS_CHANNEL_PARENT_OFFER 0x200
191#define VMBUS_CHANNEL_REQUEST_MONITORED_NOTIFICATION 0x400
192
193struct vmpacket_descriptor {
194 u16 type;
195 u16 offset8;
196 u16 len8;
197 u16 flags;
198 u64 trans_id;
199} __packed;
200
201struct vmpacket_header {
202 u32 prev_pkt_start_offset;
203 struct vmpacket_descriptor descriptor;
204} __packed;
205
206struct vmtransfer_page_range {
207 u32 byte_count;
208 u32 byte_offset;
209} __packed;
210
211struct vmtransfer_page_packet_header {
212 struct vmpacket_descriptor d;
213 u16 xfer_pageset_id;
214 bool sender_owns_set;
215 u8 reserved;
216 u32 range_cnt;
217 struct vmtransfer_page_range ranges[1];
218} __packed;
219
220struct vmgpadl_packet_header {
221 struct vmpacket_descriptor d;
222 u32 gpadl;
223 u32 reserved;
224} __packed;
225
226struct vmadd_remove_transfer_page_set {
227 struct vmpacket_descriptor d;
228 u32 gpadl;
229 u16 xfer_pageset_id;
230 u16 reserved;
231} __packed;
232
233/*
234 * This structure defines a range in guest physical space that can be made to
235 * look virtually contiguous.
236 */
237struct gpa_range {
238 u32 byte_count;
239 u32 byte_offset;
240 u64 pfn_array[0];
241};
242
243/*
244 * This is the format for an Establish Gpadl packet, which contains a handle by
245 * which this GPADL will be known and a set of GPA ranges associated with it.
246 * This can be converted to a MDL by the guest OS. If there are multiple GPA
247 * ranges, then the resulting MDL will be "chained," representing multiple VA
248 * ranges.
249 */
250struct vmestablish_gpadl {
251 struct vmpacket_descriptor d;
252 u32 gpadl;
253 u32 range_cnt;
254 struct gpa_range range[1];
255} __packed;
256
257/*
258 * This is the format for a Teardown Gpadl packet, which indicates that the
259 * GPADL handle in the Establish Gpadl packet will never be referenced again.
260 */
261struct vmteardown_gpadl {
262 struct vmpacket_descriptor d;
263 u32 gpadl;
264 u32 reserved; /* for alignment to a 8-byte boundary */
265} __packed;
266
267/*
268 * This is the format for a GPA-Direct packet, which contains a set of GPA
269 * ranges, in addition to commands and/or data.
270 */
271struct vmdata_gpa_direct {
272 struct vmpacket_descriptor d;
273 u32 reserved;
274 u32 range_cnt;
275 struct gpa_range range[1];
276} __packed;
277
278/* This is the format for a Additional Data Packet. */
279struct vmadditional_data {
280 struct vmpacket_descriptor d;
281 u64 total_bytes;
282 u32 offset;
283 u32 byte_cnt;
284 unsigned char data[1];
285} __packed;
286
287union vmpacket_largest_possible_header {
288 struct vmpacket_descriptor simple_hdr;
289 struct vmtransfer_page_packet_header xfer_page_hdr;
290 struct vmgpadl_packet_header gpadl_hdr;
291 struct vmadd_remove_transfer_page_set add_rm_xfer_page_hdr;
292 struct vmestablish_gpadl establish_gpadl_hdr;
293 struct vmteardown_gpadl teardown_gpadl_hdr;
294 struct vmdata_gpa_direct data_gpa_direct_hdr;
295};
296
297#define VMPACKET_DATA_START_ADDRESS(__packet) \
298 (void *)(((unsigned char *)__packet) + \
299 ((struct vmpacket_descriptor)__packet)->offset8 * 8)
300
301#define VMPACKET_DATA_LENGTH(__packet) \
302 ((((struct vmpacket_descriptor)__packet)->len8 - \
303 ((struct vmpacket_descriptor)__packet)->offset8) * 8)
304
305#define VMPACKET_TRANSFER_MODE(__packet) \
306 (((struct IMPACT)__packet)->type)
307
308enum vmbus_packet_type {
309 VM_PKT_INVALID = 0x0,
310 VM_PKT_SYNCH = 0x1,
311 VM_PKT_ADD_XFER_PAGESET = 0x2,
312 VM_PKT_RM_XFER_PAGESET = 0x3,
313 VM_PKT_ESTABLISH_GPADL = 0x4,
314 VM_PKT_TEARDOWN_GPADL = 0x5,
315 VM_PKT_DATA_INBAND = 0x6,
316 VM_PKT_DATA_USING_XFER_PAGES = 0x7,
317 VM_PKT_DATA_USING_GPADL = 0x8,
318 VM_PKT_DATA_USING_GPA_DIRECT = 0x9,
319 VM_PKT_CANCEL_REQUEST = 0xa,
320 VM_PKT_COMP = 0xb,
321 VM_PKT_DATA_USING_ADDITIONAL_PKT = 0xc,
322 VM_PKT_ADDITIONAL_DATA = 0xd
323};
324
325#define VMBUS_DATA_PACKET_FLAG_COMPLETION_REQUESTED 1
326
327
328/* Version 1 messages */
329enum vmbus_channel_message_type {
330 CHANNELMSG_INVALID = 0,
331 CHANNELMSG_OFFERCHANNEL = 1,
332 CHANNELMSG_RESCIND_CHANNELOFFER = 2,
333 CHANNELMSG_REQUESTOFFERS = 3,
334 CHANNELMSG_ALLOFFERS_DELIVERED = 4,
335 CHANNELMSG_OPENCHANNEL = 5,
336 CHANNELMSG_OPENCHANNEL_RESULT = 6,
337 CHANNELMSG_CLOSECHANNEL = 7,
338 CHANNELMSG_GPADL_HEADER = 8,
339 CHANNELMSG_GPADL_BODY = 9,
340 CHANNELMSG_GPADL_CREATED = 10,
341 CHANNELMSG_GPADL_TEARDOWN = 11,
342 CHANNELMSG_GPADL_TORNDOWN = 12,
343 CHANNELMSG_RELID_RELEASED = 13,
344 CHANNELMSG_INITIATE_CONTACT = 14,
345 CHANNELMSG_VERSION_RESPONSE = 15,
346 CHANNELMSG_UNLOAD = 16,
347#ifdef VMBUS_FEATURE_PARENT_OR_PEER_MEMORY_MAPPED_INTO_A_CHILD
348 CHANNELMSG_VIEWRANGE_ADD = 17,
349 CHANNELMSG_VIEWRANGE_REMOVE = 18,
350#endif
351 CHANNELMSG_COUNT
352};
353
354struct vmbus_channel_message_header {
355 enum vmbus_channel_message_type msgtype;
356 u32 padding;
357} __packed;
358
359/* Query VMBus Version parameters */
360struct vmbus_channel_query_vmbus_version {
361 struct vmbus_channel_message_header header;
362 u32 version;
363} __packed;
364
365/* VMBus Version Supported parameters */
366struct vmbus_channel_version_supported {
367 struct vmbus_channel_message_header header;
368 bool version_supported;
369} __packed;
370
371/* Offer Channel parameters */
372struct vmbus_channel_offer_channel {
373 struct vmbus_channel_message_header header;
374 struct vmbus_channel_offer offer;
375 u32 child_relid;
376 u8 monitorid;
377 bool monitor_allocated;
378} __packed;
379
380/* Rescind Offer parameters */
381struct vmbus_channel_rescind_offer {
382 struct vmbus_channel_message_header header;
383 u32 child_relid;
384} __packed;
385
386/*
387 * Request Offer -- no parameters, SynIC message contains the partition ID
388 * Set Snoop -- no parameters, SynIC message contains the partition ID
389 * Clear Snoop -- no parameters, SynIC message contains the partition ID
390 * All Offers Delivered -- no parameters, SynIC message contains the partition
391 * ID
392 * Flush Client -- no parameters, SynIC message contains the partition ID
393 */
394
395/* Open Channel parameters */
396struct vmbus_channel_open_channel {
397 struct vmbus_channel_message_header header;
398
399 /* Identifies the specific VMBus channel that is being opened. */
400 u32 child_relid;
401
402 /* ID making a particular open request at a channel offer unique. */
403 u32 openid;
404
405 /* GPADL for the channel's ring buffer. */
406 u32 ringbuffer_gpadlhandle;
407
408 /* GPADL for the channel's server context save area. */
409 u32 server_contextarea_gpadlhandle;
410
411 /*
412 * The upstream ring buffer begins at offset zero in the memory
413 * described by RingBufferGpadlHandle. The downstream ring buffer
414 * follows it at this offset (in pages).
415 */
416 u32 downstream_ringbuffer_pageoffset;
417
418 /* User-specific data to be passed along to the server endpoint. */
419 unsigned char userdata[MAX_USER_DEFINED_BYTES];
420} __packed;
421
422/* Open Channel Result parameters */
423struct vmbus_channel_open_result {
424 struct vmbus_channel_message_header header;
425 u32 child_relid;
426 u32 openid;
427 u32 status;
428} __packed;
429
430/* Close channel parameters; */
431struct vmbus_channel_close_channel {
432 struct vmbus_channel_message_header header;
433 u32 child_relid;
434} __packed;
435
436/* Channel Message GPADL */
437#define GPADL_TYPE_RING_BUFFER 1
438#define GPADL_TYPE_SERVER_SAVE_AREA 2
439#define GPADL_TYPE_TRANSACTION 8
440
441/*
442 * The number of PFNs in a GPADL message is defined by the number of
443 * pages that would be spanned by ByteCount and ByteOffset. If the
444 * implied number of PFNs won't fit in this packet, there will be a
445 * follow-up packet that contains more.
446 */
447struct vmbus_channel_gpadl_header {
448 struct vmbus_channel_message_header header;
449 u32 child_relid;
450 u32 gpadl;
451 u16 range_buflen;
452 u16 rangecount;
453 struct gpa_range range[0];
454} __packed;
455
456/* This is the followup packet that contains more PFNs. */
457struct vmbus_channel_gpadl_body {
458 struct vmbus_channel_message_header header;
459 u32 msgnumber;
460 u32 gpadl;
461 u64 pfn[0];
462} __packed;
463
464struct vmbus_channel_gpadl_created {
465 struct vmbus_channel_message_header header;
466 u32 child_relid;
467 u32 gpadl;
468 u32 creation_status;
469} __packed;
470
471struct vmbus_channel_gpadl_teardown {
472 struct vmbus_channel_message_header header;
473 u32 child_relid;
474 u32 gpadl;
475} __packed;
476
477struct vmbus_channel_gpadl_torndown {
478 struct vmbus_channel_message_header header;
479 u32 gpadl;
480} __packed;
481
482#ifdef VMBUS_FEATURE_PARENT_OR_PEER_MEMORY_MAPPED_INTO_A_CHILD
483struct vmbus_channel_view_range_add {
484 struct vmbus_channel_message_header header;
485 PHYSICAL_ADDRESS viewrange_base;
486 u64 viewrange_length;
487 u32 child_relid;
488} __packed;
489
490struct vmbus_channel_view_range_remove {
491 struct vmbus_channel_message_header header;
492 PHYSICAL_ADDRESS viewrange_base;
493 u32 child_relid;
494} __packed;
495#endif
496
497struct vmbus_channel_relid_released {
498 struct vmbus_channel_message_header header;
499 u32 child_relid;
500} __packed;
501
502struct vmbus_channel_initiate_contact {
503 struct vmbus_channel_message_header header;
504 u32 vmbus_version_requested;
505 u32 padding2;
506 u64 interrupt_page;
507 u64 monitor_page1;
508 u64 monitor_page2;
509} __packed;
510
511struct vmbus_channel_version_response {
512 struct vmbus_channel_message_header header;
513 bool version_supported;
514} __packed;
515
516enum vmbus_channel_state {
517 CHANNEL_OFFER_STATE,
518 CHANNEL_OPENING_STATE,
519 CHANNEL_OPEN_STATE,
520};
521
522struct vmbus_channel_debug_info {
523 u32 relid;
524 enum vmbus_channel_state state;
525 uuid_le interfacetype;
526 uuid_le interface_instance;
527 u32 monitorid;
528 u32 servermonitor_pending;
529 u32 servermonitor_latency;
530 u32 servermonitor_connectionid;
531 u32 clientmonitor_pending;
532 u32 clientmonitor_latency;
533 u32 clientmonitor_connectionid;
534
535 struct hv_ring_buffer_debug_info inbound;
536 struct hv_ring_buffer_debug_info outbound;
537};
538
539/*
540 * Represents each channel msg on the vmbus connection This is a
541 * variable-size data structure depending on the msg type itself
542 */
543struct vmbus_channel_msginfo {
544 /* Bookkeeping stuff */
545 struct list_head msglistentry;
546
547 /* So far, this is only used to handle gpadl body message */
548 struct list_head submsglist;
549
550 /* Synchronize the request/response if needed */
551 struct completion waitevent;
552 union {
553 struct vmbus_channel_version_supported version_supported;
554 struct vmbus_channel_open_result open_result;
555 struct vmbus_channel_gpadl_torndown gpadl_torndown;
556 struct vmbus_channel_gpadl_created gpadl_created;
557 struct vmbus_channel_version_response version_response;
558 } response;
559
560 u32 msgsize;
561 /*
562 * The channel message that goes out on the "wire".
563 * It will contain at minimum the VMBUS_CHANNEL_MESSAGE_HEADER header
564 */
565 unsigned char msg[0];
566};
567
568struct vmbus_close_msg {
569 struct vmbus_channel_msginfo info;
570 struct vmbus_channel_close_channel msg;
571};
572
573struct vmbus_channel {
574 struct list_head listentry;
575
576 struct hv_device *device_obj;
577
578 struct work_struct work;
579
580 enum vmbus_channel_state state;
581
582 struct vmbus_channel_offer_channel offermsg;
583 /*
584 * These are based on the OfferMsg.MonitorId.
585 * Save it here for easy access.
586 */
587 u8 monitor_grp;
588 u8 monitor_bit;
589
590 u32 ringbuffer_gpadlhandle;
591
592 /* Allocated memory for ring buffer */
593 void *ringbuffer_pages;
594 u32 ringbuffer_pagecount;
595 struct hv_ring_buffer_info outbound; /* send to parent */
596 struct hv_ring_buffer_info inbound; /* receive from parent */
597 spinlock_t inbound_lock;
598 struct workqueue_struct *controlwq;
599
600 struct vmbus_close_msg close_msg;
601
602 /* Channel callback are invoked in this workqueue context */
603 /* HANDLE dataWorkQueue; */
604
605 void (*onchannel_callback)(void *context);
606 void *channel_callback_context;
607};
608
609void vmbus_onmessage(void *context);
610
611int vmbus_request_offers(void);
612
613/* The format must be the same as struct vmdata_gpa_direct */
614struct vmbus_channel_packet_page_buffer {
615 u16 type;
616 u16 dataoffset8;
617 u16 length8;
618 u16 flags;
619 u64 transactionid;
620 u32 reserved;
621 u32 rangecount;
622 struct hv_page_buffer range[MAX_PAGE_BUFFER_COUNT];
623} __packed;
624
625/* The format must be the same as struct vmdata_gpa_direct */
626struct vmbus_channel_packet_multipage_buffer {
627 u16 type;
628 u16 dataoffset8;
629 u16 length8;
630 u16 flags;
631 u64 transactionid;
632 u32 reserved;
633 u32 rangecount; /* Always 1 in this case */
634 struct hv_multipage_buffer range;
635} __packed;
636
637
638extern int vmbus_open(struct vmbus_channel *channel,
639 u32 send_ringbuffersize,
640 u32 recv_ringbuffersize,
641 void *userdata,
642 u32 userdatalen,
643 void(*onchannel_callback)(void *context),
644 void *context);
645
646extern void vmbus_close(struct vmbus_channel *channel);
647
648extern int vmbus_sendpacket(struct vmbus_channel *channel,
649 const void *buffer,
650 u32 bufferLen,
651 u64 requestid,
652 enum vmbus_packet_type type,
653 u32 flags);
654
655extern int vmbus_sendpacket_pagebuffer(struct vmbus_channel *channel,
656 struct hv_page_buffer pagebuffers[],
657 u32 pagecount,
658 void *buffer,
659 u32 bufferlen,
660 u64 requestid);
661
662extern int vmbus_sendpacket_multipagebuffer(struct vmbus_channel *channel,
663 struct hv_multipage_buffer *mpb,
664 void *buffer,
665 u32 bufferlen,
666 u64 requestid);
667
668extern int vmbus_establish_gpadl(struct vmbus_channel *channel,
669 void *kbuffer,
670 u32 size,
671 u32 *gpadl_handle);
672
673extern int vmbus_teardown_gpadl(struct vmbus_channel *channel,
674 u32 gpadl_handle);
675
676extern int vmbus_recvpacket(struct vmbus_channel *channel,
677 void *buffer,
678 u32 bufferlen,
679 u32 *buffer_actual_len,
680 u64 *requestid);
681
682extern int vmbus_recvpacket_raw(struct vmbus_channel *channel,
683 void *buffer,
684 u32 bufferlen,
685 u32 *buffer_actual_len,
686 u64 *requestid);
687
688
689extern void vmbus_get_debug_info(struct vmbus_channel *channel,
690 struct vmbus_channel_debug_info *debug);
691
692extern void vmbus_ontimer(unsigned long data);
693
694struct hv_dev_port_info {
695 u32 int_mask;
696 u32 read_idx;
697 u32 write_idx;
698 u32 bytes_avail_toread;
699 u32 bytes_avail_towrite;
700};
701
702/* Base driver object */
703struct hv_driver {
704 const char *name;
705
706 /* the device type supported by this driver */
707 uuid_le dev_type;
708 const struct hv_vmbus_device_id *id_table;
709
710 struct device_driver driver;
711
712 int (*probe)(struct hv_device *, const struct hv_vmbus_device_id *);
713 int (*remove)(struct hv_device *);
714 void (*shutdown)(struct hv_device *);
715
716};
717
718/* Base device object */
719struct hv_device {
720 /* the device type id of this device */
721 uuid_le dev_type;
722
723 /* the device instance id of this device */
724 uuid_le dev_instance;
725
726 struct device device;
727
728 struct vmbus_channel *channel;
729};
730
731
732static inline struct hv_device *device_to_hv_device(struct device *d)
733{
734 return container_of(d, struct hv_device, device);
735}
736
737static inline struct hv_driver *drv_to_hv_drv(struct device_driver *d)
738{
739 return container_of(d, struct hv_driver, driver);
740}
741
742static inline void hv_set_drvdata(struct hv_device *dev, void *data)
743{
744 dev_set_drvdata(&dev->device, data);
745}
746
747static inline void *hv_get_drvdata(struct hv_device *dev)
748{
749 return dev_get_drvdata(&dev->device);
750}
751
752/* Vmbus interface */
753#define vmbus_driver_register(driver) \
754 __vmbus_driver_register(driver, THIS_MODULE, KBUILD_MODNAME)
755int __must_check __vmbus_driver_register(struct hv_driver *hv_driver,
756 struct module *owner,
757 const char *mod_name);
758void vmbus_driver_unregister(struct hv_driver *hv_driver);
759
760/**
761 * VMBUS_DEVICE - macro used to describe a specific hyperv vmbus device
762 *
763 * This macro is used to create a struct hv_vmbus_device_id that matches a
764 * specific device.
765 */
766#define VMBUS_DEVICE(g0, g1, g2, g3, g4, g5, g6, g7, \
767 g8, g9, ga, gb, gc, gd, ge, gf) \
768 .guid = { g0, g1, g2, g3, g4, g5, g6, g7, \
769 g8, g9, ga, gb, gc, gd, ge, gf },
770
771/*
772 * Common header for Hyper-V ICs
773 */
774
775#define ICMSGTYPE_NEGOTIATE 0
776#define ICMSGTYPE_HEARTBEAT 1
777#define ICMSGTYPE_KVPEXCHANGE 2
778#define ICMSGTYPE_SHUTDOWN 3
779#define ICMSGTYPE_TIMESYNC 4
780#define ICMSGTYPE_VSS 5
781
782#define ICMSGHDRFLAG_TRANSACTION 1
783#define ICMSGHDRFLAG_REQUEST 2
784#define ICMSGHDRFLAG_RESPONSE 4
785
786#define HV_S_OK 0x00000000
787#define HV_E_FAIL 0x80004005
788#define HV_ERROR_NOT_SUPPORTED 0x80070032
789#define HV_ERROR_MACHINE_LOCKED 0x800704F7
790
791/*
792 * While we want to handle util services as regular devices,
793 * there is only one instance of each of these services; so
794 * we statically allocate the service specific state.
795 */
796
797struct hv_util_service {
798 u8 *recv_buffer;
799 void (*util_cb)(void *);
800 int (*util_init)(struct hv_util_service *);
801 void (*util_deinit)(void);
802};
803
804struct vmbuspipe_hdr {
805 u32 flags;
806 u32 msgsize;
807} __packed;
808
809struct ic_version {
810 u16 major;
811 u16 minor;
812} __packed;
813
814struct icmsg_hdr {
815 struct ic_version icverframe;
816 u16 icmsgtype;
817 struct ic_version icvermsg;
818 u16 icmsgsize;
819 u32 status;
820 u8 ictransaction_id;
821 u8 icflags;
822 u8 reserved[2];
823} __packed;
824
825struct icmsg_negotiate {
826 u16 icframe_vercnt;
827 u16 icmsg_vercnt;
828 u32 reserved;
829 struct ic_version icversion_data[1]; /* any size array */
830} __packed;
831
832struct shutdown_msg_data {
833 u32 reason_code;
834 u32 timeout_seconds;
835 u32 flags;
836 u8 display_message[2048];
837} __packed;
838
839struct heartbeat_msg_data {
840 u64 seq_num;
841 u32 reserved[8];
842} __packed;
843
844/* Time Sync IC defs */
845#define ICTIMESYNCFLAG_PROBE 0
846#define ICTIMESYNCFLAG_SYNC 1
847#define ICTIMESYNCFLAG_SAMPLE 2
848
849#ifdef __x86_64__
850#define WLTIMEDELTA 116444736000000000L /* in 100ns unit */
851#else
852#define WLTIMEDELTA 116444736000000000LL
853#endif
854
855struct ictimesync_data {
856 u64 parenttime;
857 u64 childtime;
858 u64 roundtriptime;
859 u8 flags;
860} __packed;
861
862struct hyperv_service_callback {
863 u8 msg_type;
864 char *log_msg;
865 uuid_le data;
866 struct vmbus_channel *channel;
867 void (*callback) (void *context);
868};
869
870extern void vmbus_prep_negotiate_resp(struct icmsg_hdr *,
871 struct icmsg_negotiate *, u8 *);
872
873#endif /* _HYPERV_H */
diff --git a/include/linux/i2c-omap.h b/include/linux/i2c-omap.h
index 0aa0cbd676f7..92a0dc75bc74 100644
--- a/include/linux/i2c-omap.h
+++ b/include/linux/i2c-omap.h
@@ -32,10 +32,9 @@
32 32
33struct omap_i2c_bus_platform_data { 33struct omap_i2c_bus_platform_data {
34 u32 clkrate; 34 u32 clkrate;
35 u32 rev;
36 u32 flags;
35 void (*set_mpu_wkup_lat)(struct device *dev, long set); 37 void (*set_mpu_wkup_lat)(struct device *dev, long set);
36 int (*device_enable) (struct platform_device *pdev);
37 int (*device_shutdown) (struct platform_device *pdev);
38 int (*device_idle) (struct platform_device *pdev);
39}; 38};
40 39
41#endif 40#endif
diff --git a/include/linux/i2c.h b/include/linux/i2c.h
index a6c652ef516d..38a21c3edd2c 100644
--- a/include/linux/i2c.h
+++ b/include/linux/i2c.h
@@ -34,6 +34,7 @@
34#include <linux/sched.h> /* for completion */ 34#include <linux/sched.h> /* for completion */
35#include <linux/mutex.h> 35#include <linux/mutex.h>
36#include <linux/of.h> /* for struct device_node */ 36#include <linux/of.h> /* for struct device_node */
37#include <linux/swab.h> /* for swab16 */
37 38
38extern struct bus_type i2c_bus_type; 39extern struct bus_type i2c_bus_type;
39extern struct device_type i2c_adapter_type; 40extern struct device_type i2c_adapter_type;
@@ -88,6 +89,22 @@ extern s32 i2c_smbus_read_word_data(const struct i2c_client *client,
88 u8 command); 89 u8 command);
89extern s32 i2c_smbus_write_word_data(const struct i2c_client *client, 90extern s32 i2c_smbus_write_word_data(const struct i2c_client *client,
90 u8 command, u16 value); 91 u8 command, u16 value);
92
93static inline s32
94i2c_smbus_read_word_swapped(const struct i2c_client *client, u8 command)
95{
96 s32 value = i2c_smbus_read_word_data(client, command);
97
98 return (value < 0) ? value : swab16(value);
99}
100
101static inline s32
102i2c_smbus_write_word_swapped(const struct i2c_client *client,
103 u8 command, u16 value)
104{
105 return i2c_smbus_write_word_data(client, command, swab16(value));
106}
107
91/* Returns the number of read bytes */ 108/* Returns the number of read bytes */
92extern s32 i2c_smbus_read_block_data(const struct i2c_client *client, 109extern s32 i2c_smbus_read_block_data(const struct i2c_client *client,
93 u8 command, u8 *values); 110 u8 command, u8 *values);
diff --git a/include/linux/i2c/tsc2007.h b/include/linux/i2c/tsc2007.h
index 591427a63b06..506a9f7af51e 100644
--- a/include/linux/i2c/tsc2007.h
+++ b/include/linux/i2c/tsc2007.h
@@ -5,7 +5,7 @@
5 5
6struct tsc2007_platform_data { 6struct tsc2007_platform_data {
7 u16 model; /* 2007. */ 7 u16 model; /* 2007. */
8 u16 x_plate_ohms; 8 u16 x_plate_ohms; /* must be non-zero value */
9 u16 max_rt; /* max. resistance above which samples are ignored */ 9 u16 max_rt; /* max. resistance above which samples are ignored */
10 unsigned long poll_delay; /* delay (in ms) after pen-down event 10 unsigned long poll_delay; /* delay (in ms) after pen-down event
11 before polling starts */ 11 before polling starts */
diff --git a/include/linux/ieee80211.h b/include/linux/ieee80211.h
index 54c878960872..48363c3c40f8 100644
--- a/include/linux/ieee80211.h
+++ b/include/linux/ieee80211.h
@@ -130,6 +130,8 @@
130#define IEEE80211_QOS_CTL_ACK_POLICY_BLOCKACK 0x0060 130#define IEEE80211_QOS_CTL_ACK_POLICY_BLOCKACK 0x0060
131/* A-MSDU 802.11n */ 131/* A-MSDU 802.11n */
132#define IEEE80211_QOS_CTL_A_MSDU_PRESENT 0x0080 132#define IEEE80211_QOS_CTL_A_MSDU_PRESENT 0x0080
133/* Mesh Control 802.11s */
134#define IEEE80211_QOS_CTL_MESH_CONTROL_PRESENT 0x0100
133 135
134/* U-APSD queue for WMM IEs sent by AP */ 136/* U-APSD queue for WMM IEs sent by AP */
135#define IEEE80211_WMM_IE_AP_QOSINFO_UAPSD (1<<7) 137#define IEEE80211_WMM_IE_AP_QOSINFO_UAPSD (1<<7)
@@ -629,9 +631,14 @@ struct ieee80211_rann_ie {
629 u8 rann_ttl; 631 u8 rann_ttl;
630 u8 rann_addr[6]; 632 u8 rann_addr[6];
631 u32 rann_seq; 633 u32 rann_seq;
634 u32 rann_interval;
632 u32 rann_metric; 635 u32 rann_metric;
633} __attribute__ ((packed)); 636} __attribute__ ((packed));
634 637
638enum ieee80211_rann_flags {
639 RANN_FLAG_IS_GATE = 1 << 0,
640};
641
635#define WLAN_SA_QUERY_TR_ID_LEN 2 642#define WLAN_SA_QUERY_TR_ID_LEN 2
636 643
637struct ieee80211_mgmt { 644struct ieee80211_mgmt {
@@ -736,19 +743,10 @@ struct ieee80211_mgmt {
736 __le16 params; 743 __le16 params;
737 __le16 reason_code; 744 __le16 reason_code;
738 } __attribute__((packed)) delba; 745 } __attribute__((packed)) delba;
739 struct{ 746 struct {
740 u8 action_code; 747 u8 action_code;
741 /* capab_info for open and confirm,
742 * reason for close
743 */
744 __le16 aux;
745 /* Followed in plink_confirm by status
746 * code, AID and supported rates,
747 * and directly by supported rates in
748 * plink_open and plink_close
749 */
750 u8 variable[0]; 748 u8 variable[0];
751 } __attribute__((packed)) plink_action; 749 } __attribute__((packed)) self_prot;
752 struct{ 750 struct{
753 u8 action_code; 751 u8 action_code;
754 u8 variable[0]; 752 u8 variable[0];
@@ -761,6 +759,12 @@ struct ieee80211_mgmt {
761 u8 action; 759 u8 action;
762 u8 smps_control; 760 u8 smps_control;
763 } __attribute__ ((packed)) ht_smps; 761 } __attribute__ ((packed)) ht_smps;
762 struct {
763 u8 action_code;
764 u8 dialog_token;
765 __le16 capability;
766 u8 variable[0];
767 } __packed tdls_discover_resp;
764 } u; 768 } u;
765 } __attribute__ ((packed)) action; 769 } __attribute__ ((packed)) action;
766 } u; 770 } u;
@@ -779,6 +783,13 @@ struct ieee80211_mmie {
779 u8 mic[8]; 783 u8 mic[8];
780} __attribute__ ((packed)); 784} __attribute__ ((packed));
781 785
786struct ieee80211_vendor_ie {
787 u8 element_id;
788 u8 len;
789 u8 oui[3];
790 u8 oui_type;
791} __packed;
792
782/* Control frames */ 793/* Control frames */
783struct ieee80211_rts { 794struct ieee80211_rts {
784 __le16 frame_control; 795 __le16 frame_control;
@@ -800,6 +811,52 @@ struct ieee80211_pspoll {
800 u8 ta[6]; 811 u8 ta[6];
801} __attribute__ ((packed)); 812} __attribute__ ((packed));
802 813
814/* TDLS */
815
816/* Link-id information element */
817struct ieee80211_tdls_lnkie {
818 u8 ie_type; /* Link Identifier IE */
819 u8 ie_len;
820 u8 bssid[6];
821 u8 init_sta[6];
822 u8 resp_sta[6];
823} __packed;
824
825struct ieee80211_tdls_data {
826 u8 da[6];
827 u8 sa[6];
828 __be16 ether_type;
829 u8 payload_type;
830 u8 category;
831 u8 action_code;
832 union {
833 struct {
834 u8 dialog_token;
835 __le16 capability;
836 u8 variable[0];
837 } __packed setup_req;
838 struct {
839 __le16 status_code;
840 u8 dialog_token;
841 __le16 capability;
842 u8 variable[0];
843 } __packed setup_resp;
844 struct {
845 __le16 status_code;
846 u8 dialog_token;
847 u8 variable[0];
848 } __packed setup_cfm;
849 struct {
850 __le16 reason_code;
851 u8 variable[0];
852 } __packed teardown;
853 struct {
854 u8 dialog_token;
855 u8 variable[0];
856 } __packed discover_req;
857 } u;
858} __packed;
859
803/** 860/**
804 * struct ieee80211_bar - HT Block Ack Request 861 * struct ieee80211_bar - HT Block Ack Request
805 * 862 *
@@ -816,9 +873,11 @@ struct ieee80211_bar {
816} __attribute__((packed)); 873} __attribute__((packed));
817 874
818/* 802.11 BAR control masks */ 875/* 802.11 BAR control masks */
819#define IEEE80211_BAR_CTRL_ACK_POLICY_NORMAL 0x0000 876#define IEEE80211_BAR_CTRL_ACK_POLICY_NORMAL 0x0000
820#define IEEE80211_BAR_CTRL_CBMTID_COMPRESSED_BA 0x0004 877#define IEEE80211_BAR_CTRL_MULTI_TID 0x0002
821 878#define IEEE80211_BAR_CTRL_CBMTID_COMPRESSED_BA 0x0004
879#define IEEE80211_BAR_CTRL_TID_INFO_MASK 0xf000
880#define IEEE80211_BAR_CTRL_TID_INFO_SHIFT 12
822 881
823#define IEEE80211_HT_MCS_MASK_LEN 10 882#define IEEE80211_HT_MCS_MASK_LEN 10
824 883
@@ -1189,16 +1248,13 @@ enum ieee80211_eid {
1189 WLAN_EID_TS_DELAY = 43, 1248 WLAN_EID_TS_DELAY = 43,
1190 WLAN_EID_TCLAS_PROCESSING = 44, 1249 WLAN_EID_TCLAS_PROCESSING = 44,
1191 WLAN_EID_QOS_CAPA = 46, 1250 WLAN_EID_QOS_CAPA = 46,
1251 /* 802.11z */
1252 WLAN_EID_LINK_ID = 101,
1192 /* 802.11s */ 1253 /* 802.11s */
1193 WLAN_EID_MESH_CONFIG = 113, 1254 WLAN_EID_MESH_CONFIG = 113,
1194 WLAN_EID_MESH_ID = 114, 1255 WLAN_EID_MESH_ID = 114,
1195 WLAN_EID_LINK_METRIC_REPORT = 115, 1256 WLAN_EID_LINK_METRIC_REPORT = 115,
1196 WLAN_EID_CONGESTION_NOTIFICATION = 116, 1257 WLAN_EID_CONGESTION_NOTIFICATION = 116,
1197 /* Note that the Peer Link IE has been replaced with the similar
1198 * Peer Management IE. We will keep the former definition until mesh
1199 * code is changed to comply with latest 802.11s drafts.
1200 */
1201 WLAN_EID_PEER_LINK = 55, /* no longer in 802.11s drafts */
1202 WLAN_EID_PEER_MGMT = 117, 1258 WLAN_EID_PEER_MGMT = 117,
1203 WLAN_EID_CHAN_SWITCH_PARAM = 118, 1259 WLAN_EID_CHAN_SWITCH_PARAM = 118,
1204 WLAN_EID_MESH_AWAKE_WINDOW = 119, 1260 WLAN_EID_MESH_AWAKE_WINDOW = 119,
@@ -1277,13 +1333,11 @@ enum ieee80211_category {
1277 WLAN_CATEGORY_HT = 7, 1333 WLAN_CATEGORY_HT = 7,
1278 WLAN_CATEGORY_SA_QUERY = 8, 1334 WLAN_CATEGORY_SA_QUERY = 8,
1279 WLAN_CATEGORY_PROTECTED_DUAL_OF_ACTION = 9, 1335 WLAN_CATEGORY_PROTECTED_DUAL_OF_ACTION = 9,
1336 WLAN_CATEGORY_TDLS = 12,
1280 WLAN_CATEGORY_MESH_ACTION = 13, 1337 WLAN_CATEGORY_MESH_ACTION = 13,
1281 WLAN_CATEGORY_MULTIHOP_ACTION = 14, 1338 WLAN_CATEGORY_MULTIHOP_ACTION = 14,
1282 WLAN_CATEGORY_SELF_PROTECTED = 15, 1339 WLAN_CATEGORY_SELF_PROTECTED = 15,
1283 WLAN_CATEGORY_WMM = 17, 1340 WLAN_CATEGORY_WMM = 17,
1284 /* TODO: remove MESH_PATH_SEL after mesh is updated
1285 * to current 802.11s draft */
1286 WLAN_CATEGORY_MESH_PATH_SEL = 32,
1287 WLAN_CATEGORY_VENDOR_SPECIFIC_PROTECTED = 126, 1341 WLAN_CATEGORY_VENDOR_SPECIFIC_PROTECTED = 126,
1288 WLAN_CATEGORY_VENDOR_SPECIFIC = 127, 1342 WLAN_CATEGORY_VENDOR_SPECIFIC = 127,
1289}; 1343};
@@ -1309,6 +1363,31 @@ enum ieee80211_ht_actioncode {
1309 WLAN_HT_ACTION_ASEL_IDX_FEEDBACK = 7, 1363 WLAN_HT_ACTION_ASEL_IDX_FEEDBACK = 7,
1310}; 1364};
1311 1365
1366/* Self Protected Action codes */
1367enum ieee80211_self_protected_actioncode {
1368 WLAN_SP_RESERVED = 0,
1369 WLAN_SP_MESH_PEERING_OPEN = 1,
1370 WLAN_SP_MESH_PEERING_CONFIRM = 2,
1371 WLAN_SP_MESH_PEERING_CLOSE = 3,
1372 WLAN_SP_MGK_INFORM = 4,
1373 WLAN_SP_MGK_ACK = 5,
1374};
1375
1376/* Mesh action codes */
1377enum ieee80211_mesh_actioncode {
1378 WLAN_MESH_ACTION_LINK_METRIC_REPORT,
1379 WLAN_MESH_ACTION_HWMP_PATH_SELECTION,
1380 WLAN_MESH_ACTION_GATE_ANNOUNCEMENT,
1381 WLAN_MESH_ACTION_CONGESTION_CONTROL_NOTIFICATION,
1382 WLAN_MESH_ACTION_MCCA_SETUP_REQUEST,
1383 WLAN_MESH_ACTION_MCCA_SETUP_REPLY,
1384 WLAN_MESH_ACTION_MCCA_ADVERTISEMENT_REQUEST,
1385 WLAN_MESH_ACTION_MCCA_ADVERTISEMENT,
1386 WLAN_MESH_ACTION_MCCA_TEARDOWN,
1387 WLAN_MESH_ACTION_TBTT_ADJUSTMENT_REQUEST,
1388 WLAN_MESH_ACTION_TBTT_ADJUSTMENT_RESPONSE,
1389};
1390
1312/* Security key length */ 1391/* Security key length */
1313enum ieee80211_key_len { 1392enum ieee80211_key_len {
1314 WLAN_KEY_LEN_WEP40 = 5, 1393 WLAN_KEY_LEN_WEP40 = 5,
@@ -1318,6 +1397,36 @@ enum ieee80211_key_len {
1318 WLAN_KEY_LEN_AES_CMAC = 16, 1397 WLAN_KEY_LEN_AES_CMAC = 16,
1319}; 1398};
1320 1399
1400/* Public action codes */
1401enum ieee80211_pub_actioncode {
1402 WLAN_PUB_ACTION_TDLS_DISCOVER_RES = 14,
1403};
1404
1405/* TDLS action codes */
1406enum ieee80211_tdls_actioncode {
1407 WLAN_TDLS_SETUP_REQUEST = 0,
1408 WLAN_TDLS_SETUP_RESPONSE = 1,
1409 WLAN_TDLS_SETUP_CONFIRM = 2,
1410 WLAN_TDLS_TEARDOWN = 3,
1411 WLAN_TDLS_PEER_TRAFFIC_INDICATION = 4,
1412 WLAN_TDLS_CHANNEL_SWITCH_REQUEST = 5,
1413 WLAN_TDLS_CHANNEL_SWITCH_RESPONSE = 6,
1414 WLAN_TDLS_PEER_PSM_REQUEST = 7,
1415 WLAN_TDLS_PEER_PSM_RESPONSE = 8,
1416 WLAN_TDLS_PEER_TRAFFIC_RESPONSE = 9,
1417 WLAN_TDLS_DISCOVERY_REQUEST = 10,
1418};
1419
1420/*
1421 * TDLS capabililites to be enabled in the 5th byte of the
1422 * @WLAN_EID_EXT_CAPABILITY information element
1423 */
1424#define WLAN_EXT_CAPA5_TDLS_ENABLED BIT(5)
1425#define WLAN_EXT_CAPA5_TDLS_PROHIBITED BIT(6)
1426
1427/* TDLS specific payload type in the LLC/SNAP header */
1428#define WLAN_TDLS_SNAP_RFTYPE 0x2
1429
1321/** 1430/**
1322 * enum - mesh path selection protocol identifier 1431 * enum - mesh path selection protocol identifier
1323 * 1432 *
@@ -1453,6 +1562,9 @@ enum ieee80211_sa_query_action {
1453 1562
1454#define WLAN_PMKID_LEN 16 1563#define WLAN_PMKID_LEN 16
1455 1564
1565#define WLAN_OUI_WFA 0x506f9a
1566#define WLAN_OUI_TYPE_WFA_P2P 9
1567
1456/* 1568/*
1457 * WMM/802.11e Tspec Element 1569 * WMM/802.11e Tspec Element
1458 */ 1570 */
diff --git a/include/linux/if.h b/include/linux/if.h
index 03489ca92ded..db20bd4fd16b 100644
--- a/include/linux/if.h
+++ b/include/linux/if.h
@@ -78,6 +78,7 @@
78 * datapath port */ 78 * datapath port */
79#define IFF_TX_SKB_SHARING 0x10000 /* The interface supports sharing 79#define IFF_TX_SKB_SHARING 0x10000 /* The interface supports sharing
80 * skbs on transmit */ 80 * skbs on transmit */
81#define IFF_UNICAST_FLT 0x20000 /* Supports unicast filtering */
81 82
82#define IF_GET_IFACE 0x0001 /* for querying only */ 83#define IF_GET_IFACE 0x0001 /* for querying only */
83#define IF_GET_PROTO 0x0002 84#define IF_GET_PROTO 0x0002
diff --git a/include/linux/if_ether.h b/include/linux/if_ether.h
index a3d99ff6e3b5..e473003e4bda 100644
--- a/include/linux/if_ether.h
+++ b/include/linux/if_ether.h
@@ -83,11 +83,13 @@
83#define ETH_P_8021AH 0x88E7 /* 802.1ah Backbone Service Tag */ 83#define ETH_P_8021AH 0x88E7 /* 802.1ah Backbone Service Tag */
84#define ETH_P_1588 0x88F7 /* IEEE 1588 Timesync */ 84#define ETH_P_1588 0x88F7 /* IEEE 1588 Timesync */
85#define ETH_P_FCOE 0x8906 /* Fibre Channel over Ethernet */ 85#define ETH_P_FCOE 0x8906 /* Fibre Channel over Ethernet */
86#define ETH_P_TDLS 0x890D /* TDLS */
86#define ETH_P_FIP 0x8914 /* FCoE Initialization Protocol */ 87#define ETH_P_FIP 0x8914 /* FCoE Initialization Protocol */
87#define ETH_P_QINQ1 0x9100 /* deprecated QinQ VLAN [ NOT AN OFFICIALLY REGISTERED ID ] */ 88#define ETH_P_QINQ1 0x9100 /* deprecated QinQ VLAN [ NOT AN OFFICIALLY REGISTERED ID ] */
88#define ETH_P_QINQ2 0x9200 /* deprecated QinQ VLAN [ NOT AN OFFICIALLY REGISTERED ID ] */ 89#define ETH_P_QINQ2 0x9200 /* deprecated QinQ VLAN [ NOT AN OFFICIALLY REGISTERED ID ] */
89#define ETH_P_QINQ3 0x9300 /* deprecated QinQ VLAN [ NOT AN OFFICIALLY REGISTERED ID ] */ 90#define ETH_P_QINQ3 0x9300 /* deprecated QinQ VLAN [ NOT AN OFFICIALLY REGISTERED ID ] */
90#define ETH_P_EDSA 0xDADA /* Ethertype DSA [ NOT AN OFFICIALLY REGISTERED ID ] */ 91#define ETH_P_EDSA 0xDADA /* Ethertype DSA [ NOT AN OFFICIALLY REGISTERED ID ] */
92#define ETH_P_AF_IUCV 0xFBFB /* IBM af_iucv [ NOT AN OFFICIALLY REGISTERED ID ] */
91 93
92/* 94/*
93 * Non DIX types. Won't clash for 1500 types. 95 * Non DIX types. Won't clash for 1500 types.
diff --git a/include/linux/if_link.h b/include/linux/if_link.h
index 0ee969a5593d..c52d4b5f872a 100644
--- a/include/linux/if_link.h
+++ b/include/linux/if_link.h
@@ -279,6 +279,7 @@ enum {
279 IFLA_VF_MAC, /* Hardware queue specific attributes */ 279 IFLA_VF_MAC, /* Hardware queue specific attributes */
280 IFLA_VF_VLAN, 280 IFLA_VF_VLAN,
281 IFLA_VF_TX_RATE, /* TX Bandwidth Allocation */ 281 IFLA_VF_TX_RATE, /* TX Bandwidth Allocation */
282 IFLA_VF_SPOOFCHK, /* Spoof Checking on/off switch */
282 __IFLA_VF_MAX, 283 __IFLA_VF_MAX,
283}; 284};
284 285
@@ -300,13 +301,22 @@ struct ifla_vf_tx_rate {
300 __u32 rate; /* Max TX bandwidth in Mbps, 0 disables throttling */ 301 __u32 rate; /* Max TX bandwidth in Mbps, 0 disables throttling */
301}; 302};
302 303
304struct ifla_vf_spoofchk {
305 __u32 vf;
306 __u32 setting;
307};
308#ifdef __KERNEL__
309
310/* We don't want this structure exposed to user space */
303struct ifla_vf_info { 311struct ifla_vf_info {
304 __u32 vf; 312 __u32 vf;
305 __u8 mac[32]; 313 __u8 mac[32];
306 __u32 vlan; 314 __u32 vlan;
307 __u32 qos; 315 __u32 qos;
308 __u32 tx_rate; 316 __u32 tx_rate;
317 __u32 spoofchk;
309}; 318};
319#endif
310 320
311/* VF ports management section 321/* VF ports management section
312 * 322 *
diff --git a/include/linux/if_macvlan.h b/include/linux/if_macvlan.h
index e28b2e4959d4..d103dca5c563 100644
--- a/include/linux/if_macvlan.h
+++ b/include/linux/if_macvlan.h
@@ -64,6 +64,7 @@ struct macvlan_dev {
64 int (*forward)(struct net_device *dev, struct sk_buff *skb); 64 int (*forward)(struct net_device *dev, struct sk_buff *skb);
65 struct macvtap_queue *taps[MAX_MACVTAP_QUEUES]; 65 struct macvtap_queue *taps[MAX_MACVTAP_QUEUES];
66 int numvtaps; 66 int numvtaps;
67 int minor;
67}; 68};
68 69
69static inline void macvlan_count_rx(const struct macvlan_dev *vlan, 70static inline void macvlan_count_rx(const struct macvlan_dev *vlan,
diff --git a/include/linux/if_packet.h b/include/linux/if_packet.h
index c1486060f5ed..f3799295d231 100644
--- a/include/linux/if_packet.h
+++ b/include/linux/if_packet.h
@@ -61,6 +61,17 @@ struct tpacket_stats {
61 unsigned int tp_drops; 61 unsigned int tp_drops;
62}; 62};
63 63
64struct tpacket_stats_v3 {
65 unsigned int tp_packets;
66 unsigned int tp_drops;
67 unsigned int tp_freeze_q_cnt;
68};
69
70union tpacket_stats_u {
71 struct tpacket_stats stats1;
72 struct tpacket_stats_v3 stats3;
73};
74
64struct tpacket_auxdata { 75struct tpacket_auxdata {
65 __u32 tp_status; 76 __u32 tp_status;
66 __u32 tp_len; 77 __u32 tp_len;
@@ -78,6 +89,7 @@ struct tpacket_auxdata {
78#define TP_STATUS_LOSING 0x4 89#define TP_STATUS_LOSING 0x4
79#define TP_STATUS_CSUMNOTREADY 0x8 90#define TP_STATUS_CSUMNOTREADY 0x8
80#define TP_STATUS_VLAN_VALID 0x10 /* auxdata has valid tp_vlan_tci */ 91#define TP_STATUS_VLAN_VALID 0x10 /* auxdata has valid tp_vlan_tci */
92#define TP_STATUS_BLK_TMO 0x20
81 93
82/* Tx ring - header status */ 94/* Tx ring - header status */
83#define TP_STATUS_AVAILABLE 0x0 95#define TP_STATUS_AVAILABLE 0x0
@@ -85,6 +97,9 @@ struct tpacket_auxdata {
85#define TP_STATUS_SENDING 0x2 97#define TP_STATUS_SENDING 0x2
86#define TP_STATUS_WRONG_FORMAT 0x4 98#define TP_STATUS_WRONG_FORMAT 0x4
87 99
100/* Rx ring - feature request bits */
101#define TP_FT_REQ_FILL_RXHASH 0x1
102
88struct tpacket_hdr { 103struct tpacket_hdr {
89 unsigned long tp_status; 104 unsigned long tp_status;
90 unsigned int tp_len; 105 unsigned int tp_len;
@@ -111,11 +126,100 @@ struct tpacket2_hdr {
111 __u16 tp_padding; 126 __u16 tp_padding;
112}; 127};
113 128
129struct tpacket_hdr_variant1 {
130 __u32 tp_rxhash;
131 __u32 tp_vlan_tci;
132};
133
134struct tpacket3_hdr {
135 __u32 tp_next_offset;
136 __u32 tp_sec;
137 __u32 tp_nsec;
138 __u32 tp_snaplen;
139 __u32 tp_len;
140 __u32 tp_status;
141 __u16 tp_mac;
142 __u16 tp_net;
143 /* pkt_hdr variants */
144 union {
145 struct tpacket_hdr_variant1 hv1;
146 };
147};
148
149struct tpacket_bd_ts {
150 unsigned int ts_sec;
151 union {
152 unsigned int ts_usec;
153 unsigned int ts_nsec;
154 };
155};
156
157struct tpacket_hdr_v1 {
158 __u32 block_status;
159 __u32 num_pkts;
160 __u32 offset_to_first_pkt;
161
162 /* Number of valid bytes (including padding)
163 * blk_len <= tp_block_size
164 */
165 __u32 blk_len;
166
167 /*
168 * Quite a few uses of sequence number:
169 * 1. Make sure cache flush etc worked.
170 * Well, one can argue - why not use the increasing ts below?
171 * But look at 2. below first.
172 * 2. When you pass around blocks to other user space decoders,
173 * you can see which blk[s] is[are] outstanding etc.
174 * 3. Validate kernel code.
175 */
176 __aligned_u64 seq_num;
177
178 /*
179 * ts_last_pkt:
180 *
181 * Case 1. Block has 'N'(N >=1) packets and TMO'd(timed out)
182 * ts_last_pkt == 'time-stamp of last packet' and NOT the
183 * time when the timer fired and the block was closed.
184 * By providing the ts of the last packet we can absolutely
185 * guarantee that time-stamp wise, the first packet in the
186 * next block will never precede the last packet of the
187 * previous block.
188 * Case 2. Block has zero packets and TMO'd
189 * ts_last_pkt = time when the timer fired and the block
190 * was closed.
191 * Case 3. Block has 'N' packets and NO TMO.
192 * ts_last_pkt = time-stamp of the last pkt in the block.
193 *
194 * ts_first_pkt:
195 * Is always the time-stamp when the block was opened.
196 * Case a) ZERO packets
197 * No packets to deal with but atleast you know the
198 * time-interval of this block.
199 * Case b) Non-zero packets
200 * Use the ts of the first packet in the block.
201 *
202 */
203 struct tpacket_bd_ts ts_first_pkt, ts_last_pkt;
204};
205
206union tpacket_bd_header_u {
207 struct tpacket_hdr_v1 bh1;
208};
209
210struct tpacket_block_desc {
211 __u32 version;
212 __u32 offset_to_priv;
213 union tpacket_bd_header_u hdr;
214};
215
114#define TPACKET2_HDRLEN (TPACKET_ALIGN(sizeof(struct tpacket2_hdr)) + sizeof(struct sockaddr_ll)) 216#define TPACKET2_HDRLEN (TPACKET_ALIGN(sizeof(struct tpacket2_hdr)) + sizeof(struct sockaddr_ll))
217#define TPACKET3_HDRLEN (TPACKET_ALIGN(sizeof(struct tpacket3_hdr)) + sizeof(struct sockaddr_ll))
115 218
116enum tpacket_versions { 219enum tpacket_versions {
117 TPACKET_V1, 220 TPACKET_V1,
118 TPACKET_V2, 221 TPACKET_V2,
222 TPACKET_V3
119}; 223};
120 224
121/* 225/*
@@ -138,6 +242,21 @@ struct tpacket_req {
138 unsigned int tp_frame_nr; /* Total number of frames */ 242 unsigned int tp_frame_nr; /* Total number of frames */
139}; 243};
140 244
245struct tpacket_req3 {
246 unsigned int tp_block_size; /* Minimal size of contiguous block */
247 unsigned int tp_block_nr; /* Number of blocks */
248 unsigned int tp_frame_size; /* Size of frame */
249 unsigned int tp_frame_nr; /* Total number of frames */
250 unsigned int tp_retire_blk_tov; /* timeout in msecs */
251 unsigned int tp_sizeof_priv; /* offset to private data area */
252 unsigned int tp_feature_req_word;
253};
254
255union tpacket_req_u {
256 struct tpacket_req req;
257 struct tpacket_req3 req3;
258};
259
141struct packet_mreq { 260struct packet_mreq {
142 int mr_ifindex; 261 int mr_ifindex;
143 unsigned short mr_type; 262 unsigned short mr_type;
diff --git a/include/linux/if_pppol2tp.h b/include/linux/if_pppol2tp.h
index 184bc5566207..23cefa1111bf 100644
--- a/include/linux/if_pppol2tp.h
+++ b/include/linux/if_pppol2tp.h
@@ -39,7 +39,7 @@ struct pppol2tp_addr {
39 * bits. So we need a different sockaddr structure. 39 * bits. So we need a different sockaddr structure.
40 */ 40 */
41struct pppol2tpv3_addr { 41struct pppol2tpv3_addr {
42 pid_t pid; /* pid that owns the fd. 42 __kernel_pid_t pid; /* pid that owns the fd.
43 * 0 => current */ 43 * 0 => current */
44 int fd; /* FD of UDP or IP socket to use */ 44 int fd; /* FD of UDP or IP socket to use */
45 45
diff --git a/include/linux/if_pppox.h b/include/linux/if_pppox.h
index 397921b09ef9..b5f927f59f26 100644
--- a/include/linux/if_pppox.h
+++ b/include/linux/if_pppox.h
@@ -20,8 +20,9 @@
20#include <linux/types.h> 20#include <linux/types.h>
21#include <asm/byteorder.h> 21#include <asm/byteorder.h>
22 22
23#ifdef __KERNEL__ 23#include <linux/socket.h>
24#include <linux/if_ether.h> 24#include <linux/if_ether.h>
25#ifdef __KERNEL__
25#include <linux/if.h> 26#include <linux/if.h>
26#include <linux/netdevice.h> 27#include <linux/netdevice.h>
27#include <linux/ppp_channel.h> 28#include <linux/ppp_channel.h>
@@ -63,7 +64,7 @@ struct pptp_addr {
63#define PX_MAX_PROTO 3 64#define PX_MAX_PROTO 3
64 65
65struct sockaddr_pppox { 66struct sockaddr_pppox {
66 sa_family_t sa_family; /* address family, AF_PPPOX */ 67 __kernel_sa_family_t sa_family; /* address family, AF_PPPOX */
67 unsigned int sa_protocol; /* protocol identifier */ 68 unsigned int sa_protocol; /* protocol identifier */
68 union { 69 union {
69 struct pppoe_addr pppoe; 70 struct pppoe_addr pppoe;
@@ -77,7 +78,7 @@ struct sockaddr_pppox {
77 * type instead. 78 * type instead.
78 */ 79 */
79struct sockaddr_pppol2tp { 80struct sockaddr_pppol2tp {
80 sa_family_t sa_family; /* address family, AF_PPPOX */ 81 __kernel_sa_family_t sa_family; /* address family, AF_PPPOX */
81 unsigned int sa_protocol; /* protocol identifier */ 82 unsigned int sa_protocol; /* protocol identifier */
82 struct pppol2tp_addr pppol2tp; 83 struct pppol2tp_addr pppol2tp;
83} __attribute__((packed)); 84} __attribute__((packed));
@@ -86,7 +87,7 @@ struct sockaddr_pppol2tp {
86 * bits. So we need a different sockaddr structure. 87 * bits. So we need a different sockaddr structure.
87 */ 88 */
88struct sockaddr_pppol2tpv3 { 89struct sockaddr_pppol2tpv3 {
89 sa_family_t sa_family; /* address family, AF_PPPOX */ 90 __kernel_sa_family_t sa_family; /* address family, AF_PPPOX */
90 unsigned int sa_protocol; /* protocol identifier */ 91 unsigned int sa_protocol; /* protocol identifier */
91 struct pppol2tpv3_addr pppol2tp; 92 struct pppol2tpv3_addr pppol2tp;
92} __attribute__((packed)); 93} __attribute__((packed));
diff --git a/include/linux/if_vlan.h b/include/linux/if_vlan.h
index 44da4822bcab..12d5543b14f2 100644
--- a/include/linux/if_vlan.h
+++ b/include/linux/if_vlan.h
@@ -106,7 +106,7 @@ extern struct net_device *__vlan_find_dev_deep(struct net_device *real_dev,
106extern struct net_device *vlan_dev_real_dev(const struct net_device *dev); 106extern struct net_device *vlan_dev_real_dev(const struct net_device *dev);
107extern u16 vlan_dev_vlan_id(const struct net_device *dev); 107extern u16 vlan_dev_vlan_id(const struct net_device *dev);
108 108
109extern bool vlan_do_receive(struct sk_buff **skb); 109extern bool vlan_do_receive(struct sk_buff **skb, bool last_handler);
110extern struct sk_buff *vlan_untag(struct sk_buff *skb); 110extern struct sk_buff *vlan_untag(struct sk_buff *skb);
111 111
112#else 112#else
@@ -128,9 +128,9 @@ static inline u16 vlan_dev_vlan_id(const struct net_device *dev)
128 return 0; 128 return 0;
129} 129}
130 130
131static inline bool vlan_do_receive(struct sk_buff **skb) 131static inline bool vlan_do_receive(struct sk_buff **skb, bool last_handler)
132{ 132{
133 if ((*skb)->vlan_tci & VLAN_VID_MASK) 133 if (((*skb)->vlan_tci & VLAN_VID_MASK) && last_handler)
134 (*skb)->pkt_type = PACKET_OTHERHOST; 134 (*skb)->pkt_type = PACKET_OTHERHOST;
135 return false; 135 return false;
136} 136}
diff --git a/include/linux/ima.h b/include/linux/ima.h
index 09e6e62f9953..6ac8e50c6cf5 100644
--- a/include/linux/ima.h
+++ b/include/linux/ima.h
@@ -15,8 +15,6 @@ struct linux_binprm;
15 15
16#ifdef CONFIG_IMA 16#ifdef CONFIG_IMA
17extern int ima_bprm_check(struct linux_binprm *bprm); 17extern int ima_bprm_check(struct linux_binprm *bprm);
18extern int ima_inode_alloc(struct inode *inode);
19extern void ima_inode_free(struct inode *inode);
20extern int ima_file_check(struct file *file, int mask); 18extern int ima_file_check(struct file *file, int mask);
21extern void ima_file_free(struct file *file); 19extern void ima_file_free(struct file *file);
22extern int ima_file_mmap(struct file *file, unsigned long prot); 20extern int ima_file_mmap(struct file *file, unsigned long prot);
@@ -27,16 +25,6 @@ static inline int ima_bprm_check(struct linux_binprm *bprm)
27 return 0; 25 return 0;
28} 26}
29 27
30static inline int ima_inode_alloc(struct inode *inode)
31{
32 return 0;
33}
34
35static inline void ima_inode_free(struct inode *inode)
36{
37 return;
38}
39
40static inline int ima_file_check(struct file *file, int mask) 28static inline int ima_file_check(struct file *file, int mask)
41{ 29{
42 return 0; 30 return 0;
@@ -51,6 +39,5 @@ static inline int ima_file_mmap(struct file *file, unsigned long prot)
51{ 39{
52 return 0; 40 return 0;
53} 41}
54
55#endif /* CONFIG_IMA_H */ 42#endif /* CONFIG_IMA_H */
56#endif /* _LINUX_IMA_H */ 43#endif /* _LINUX_IMA_H */
diff --git a/include/linux/in.h b/include/linux/in.h
index beeb6dee2b49..01129c0ea87c 100644
--- a/include/linux/in.h
+++ b/include/linux/in.h
@@ -182,7 +182,7 @@ struct in_pktinfo {
182/* Structure describing an Internet (IP) socket address. */ 182/* Structure describing an Internet (IP) socket address. */
183#define __SOCK_SIZE__ 16 /* sizeof(struct sockaddr) */ 183#define __SOCK_SIZE__ 16 /* sizeof(struct sockaddr) */
184struct sockaddr_in { 184struct sockaddr_in {
185 sa_family_t sin_family; /* Address family */ 185 __kernel_sa_family_t sin_family; /* Address family */
186 __be16 sin_port; /* Port number */ 186 __be16 sin_port; /* Port number */
187 struct in_addr sin_addr; /* Internet address */ 187 struct in_addr sin_addr; /* Internet address */
188 188
diff --git a/include/linux/inet_diag.h b/include/linux/inet_diag.h
index bc8c49022084..80b480c97532 100644
--- a/include/linux/inet_diag.h
+++ b/include/linux/inet_diag.h
@@ -97,9 +97,10 @@ enum {
97 INET_DIAG_INFO, 97 INET_DIAG_INFO,
98 INET_DIAG_VEGASINFO, 98 INET_DIAG_VEGASINFO,
99 INET_DIAG_CONG, 99 INET_DIAG_CONG,
100 INET_DIAG_TOS,
100}; 101};
101 102
102#define INET_DIAG_MAX INET_DIAG_CONG 103#define INET_DIAG_MAX INET_DIAG_TOS
103 104
104 105
105/* INET_DIAG_MEM */ 106/* INET_DIAG_MEM */
diff --git a/include/linux/init_task.h b/include/linux/init_task.h
index d14e058aaeed..08ffab01e76c 100644
--- a/include/linux/init_task.h
+++ b/include/linux/init_task.h
@@ -42,7 +42,7 @@ extern struct fs_struct init_fs;
42 .cputimer = { \ 42 .cputimer = { \
43 .cputime = INIT_CPUTIME, \ 43 .cputime = INIT_CPUTIME, \
44 .running = 0, \ 44 .running = 0, \
45 .lock = __SPIN_LOCK_UNLOCKED(sig.cputimer.lock), \ 45 .lock = __RAW_SPIN_LOCK_UNLOCKED(sig.cputimer.lock), \
46 }, \ 46 }, \
47 .cred_guard_mutex = \ 47 .cred_guard_mutex = \
48 __MUTEX_INITIALIZER(sig.cred_guard_mutex), \ 48 __MUTEX_INITIALIZER(sig.cred_guard_mutex), \
diff --git a/include/linux/input.h b/include/linux/input.h
index a637e7814334..3862e32c4eeb 100644
--- a/include/linux/input.h
+++ b/include/linux/input.h
@@ -505,6 +505,7 @@ struct input_keymap_entry {
505#define BTN_TOOL_FINGER 0x145 505#define BTN_TOOL_FINGER 0x145
506#define BTN_TOOL_MOUSE 0x146 506#define BTN_TOOL_MOUSE 0x146
507#define BTN_TOOL_LENS 0x147 507#define BTN_TOOL_LENS 0x147
508#define BTN_TOOL_QUINTTAP 0x148 /* Five fingers on trackpad */
508#define BTN_TOUCH 0x14a 509#define BTN_TOUCH 0x14a
509#define BTN_STYLUS 0x14b 510#define BTN_STYLUS 0x14b
510#define BTN_STYLUS2 0x14c 511#define BTN_STYLUS2 0x14c
@@ -814,6 +815,7 @@ struct input_keymap_entry {
814#define SW_KEYPAD_SLIDE 0x0a /* set = keypad slide out */ 815#define SW_KEYPAD_SLIDE 0x0a /* set = keypad slide out */
815#define SW_FRONT_PROXIMITY 0x0b /* set = front proximity sensor active */ 816#define SW_FRONT_PROXIMITY 0x0b /* set = front proximity sensor active */
816#define SW_ROTATE_LOCK 0x0c /* set = rotate locked/disabled */ 817#define SW_ROTATE_LOCK 0x0c /* set = rotate locked/disabled */
818#define SW_LINEIN_INSERT 0x0d /* set = inserted */
817#define SW_MAX 0x0f 819#define SW_MAX 0x0f
818#define SW_CNT (SW_MAX+1) 820#define SW_CNT (SW_MAX+1)
819 821
@@ -1609,7 +1611,7 @@ struct ff_device {
1609 struct file *effect_owners[]; 1611 struct file *effect_owners[];
1610}; 1612};
1611 1613
1612int input_ff_create(struct input_dev *dev, int max_effects); 1614int input_ff_create(struct input_dev *dev, unsigned int max_effects);
1613void input_ff_destroy(struct input_dev *dev); 1615void input_ff_destroy(struct input_dev *dev);
1614 1616
1615int input_ff_event(struct input_dev *dev, unsigned int type, unsigned int code, int value); 1617int input_ff_event(struct input_dev *dev, unsigned int type, unsigned int code, int value);
diff --git a/include/linux/input/adp5589.h b/include/linux/input/adp5589.h
index ef792ecfaabf..1a05eee15e67 100644
--- a/include/linux/input/adp5589.h
+++ b/include/linux/input/adp5589.h
@@ -1,5 +1,5 @@
1/* 1/*
2 * Analog Devices ADP5589 I/O Expander and QWERTY Keypad Controller 2 * Analog Devices ADP5589/ADP5585 I/O Expander and QWERTY Keypad Controller
3 * 3 *
4 * Copyright 2010-2011 Analog Devices Inc. 4 * Copyright 2010-2011 Analog Devices Inc.
5 * 5 *
@@ -9,89 +9,9 @@
9#ifndef _ADP5589_H 9#ifndef _ADP5589_H
10#define _ADP5589_H 10#define _ADP5589_H
11 11
12#define ADP5589_ID 0x00 12/*
13#define ADP5589_INT_STATUS 0x01 13 * ADP5589 specific GPI and Keymap defines
14#define ADP5589_STATUS 0x02 14 */
15#define ADP5589_FIFO_1 0x03
16#define ADP5589_FIFO_2 0x04
17#define ADP5589_FIFO_3 0x05
18#define ADP5589_FIFO_4 0x06
19#define ADP5589_FIFO_5 0x07
20#define ADP5589_FIFO_6 0x08
21#define ADP5589_FIFO_7 0x09
22#define ADP5589_FIFO_8 0x0A
23#define ADP5589_FIFO_9 0x0B
24#define ADP5589_FIFO_10 0x0C
25#define ADP5589_FIFO_11 0x0D
26#define ADP5589_FIFO_12 0x0E
27#define ADP5589_FIFO_13 0x0F
28#define ADP5589_FIFO_14 0x10
29#define ADP5589_FIFO_15 0x11
30#define ADP5589_FIFO_16 0x12
31#define ADP5589_GPI_INT_STAT_A 0x13
32#define ADP5589_GPI_INT_STAT_B 0x14
33#define ADP5589_GPI_INT_STAT_C 0x15
34#define ADP5589_GPI_STATUS_A 0x16
35#define ADP5589_GPI_STATUS_B 0x17
36#define ADP5589_GPI_STATUS_C 0x18
37#define ADP5589_RPULL_CONFIG_A 0x19
38#define ADP5589_RPULL_CONFIG_B 0x1A
39#define ADP5589_RPULL_CONFIG_C 0x1B
40#define ADP5589_RPULL_CONFIG_D 0x1C
41#define ADP5589_RPULL_CONFIG_E 0x1D
42#define ADP5589_GPI_INT_LEVEL_A 0x1E
43#define ADP5589_GPI_INT_LEVEL_B 0x1F
44#define ADP5589_GPI_INT_LEVEL_C 0x20
45#define ADP5589_GPI_EVENT_EN_A 0x21
46#define ADP5589_GPI_EVENT_EN_B 0x22
47#define ADP5589_GPI_EVENT_EN_C 0x23
48#define ADP5589_GPI_INTERRUPT_EN_A 0x24
49#define ADP5589_GPI_INTERRUPT_EN_B 0x25
50#define ADP5589_GPI_INTERRUPT_EN_C 0x26
51#define ADP5589_DEBOUNCE_DIS_A 0x27
52#define ADP5589_DEBOUNCE_DIS_B 0x28
53#define ADP5589_DEBOUNCE_DIS_C 0x29
54#define ADP5589_GPO_DATA_OUT_A 0x2A
55#define ADP5589_GPO_DATA_OUT_B 0x2B
56#define ADP5589_GPO_DATA_OUT_C 0x2C
57#define ADP5589_GPO_OUT_MODE_A 0x2D
58#define ADP5589_GPO_OUT_MODE_B 0x2E
59#define ADP5589_GPO_OUT_MODE_C 0x2F
60#define ADP5589_GPIO_DIRECTION_A 0x30
61#define ADP5589_GPIO_DIRECTION_B 0x31
62#define ADP5589_GPIO_DIRECTION_C 0x32
63#define ADP5589_UNLOCK1 0x33
64#define ADP5589_UNLOCK2 0x34
65#define ADP5589_EXT_LOCK_EVENT 0x35
66#define ADP5589_UNLOCK_TIMERS 0x36
67#define ADP5589_LOCK_CFG 0x37
68#define ADP5589_RESET1_EVENT_A 0x38
69#define ADP5589_RESET1_EVENT_B 0x39
70#define ADP5589_RESET1_EVENT_C 0x3A
71#define ADP5589_RESET2_EVENT_A 0x3B
72#define ADP5589_RESET2_EVENT_B 0x3C
73#define ADP5589_RESET_CFG 0x3D
74#define ADP5589_PWM_OFFT_LOW 0x3E
75#define ADP5589_PWM_OFFT_HIGH 0x3F
76#define ADP5589_PWM_ONT_LOW 0x40
77#define ADP5589_PWM_ONT_HIGH 0x41
78#define ADP5589_PWM_CFG 0x42
79#define ADP5589_CLOCK_DIV_CFG 0x43
80#define ADP5589_LOGIC_1_CFG 0x44
81#define ADP5589_LOGIC_2_CFG 0x45
82#define ADP5589_LOGIC_FF_CFG 0x46
83#define ADP5589_LOGIC_INT_EVENT_EN 0x47
84#define ADP5589_POLL_PTIME_CFG 0x48
85#define ADP5589_PIN_CONFIG_A 0x49
86#define ADP5589_PIN_CONFIG_B 0x4A
87#define ADP5589_PIN_CONFIG_C 0x4B
88#define ADP5589_PIN_CONFIG_D 0x4C
89#define ADP5589_GENERAL_CFG 0x4D
90#define ADP5589_INT_EN 0x4E
91
92#define ADP5589_DEVICE_ID_MASK 0xF
93
94/* Put one of these structures in i2c_board_info platform_data */
95 15
96#define ADP5589_KEYMAPSIZE 88 16#define ADP5589_KEYMAPSIZE 88
97 17
@@ -127,6 +47,35 @@
127 47
128#define ADP5589_GPIMAPSIZE_MAX (ADP5589_GPI_PIN_END - ADP5589_GPI_PIN_BASE + 1) 48#define ADP5589_GPIMAPSIZE_MAX (ADP5589_GPI_PIN_END - ADP5589_GPI_PIN_BASE + 1)
129 49
50/*
51 * ADP5585 specific GPI and Keymap defines
52 */
53
54#define ADP5585_KEYMAPSIZE 30
55
56#define ADP5585_GPI_PIN_ROW0 37
57#define ADP5585_GPI_PIN_ROW1 38
58#define ADP5585_GPI_PIN_ROW2 39
59#define ADP5585_GPI_PIN_ROW3 40
60#define ADP5585_GPI_PIN_ROW4 41
61#define ADP5585_GPI_PIN_ROW5 42
62#define ADP5585_GPI_PIN_COL0 43
63#define ADP5585_GPI_PIN_COL1 44
64#define ADP5585_GPI_PIN_COL2 45
65#define ADP5585_GPI_PIN_COL3 46
66#define ADP5585_GPI_PIN_COL4 47
67#define GPI_LOGIC 48
68
69#define ADP5585_GPI_PIN_ROW_BASE ADP5585_GPI_PIN_ROW0
70#define ADP5585_GPI_PIN_ROW_END ADP5585_GPI_PIN_ROW5
71#define ADP5585_GPI_PIN_COL_BASE ADP5585_GPI_PIN_COL0
72#define ADP5585_GPI_PIN_COL_END ADP5585_GPI_PIN_COL4
73
74#define ADP5585_GPI_PIN_BASE ADP5585_GPI_PIN_ROW_BASE
75#define ADP5585_GPI_PIN_END ADP5585_GPI_PIN_COL_END
76
77#define ADP5585_GPIMAPSIZE_MAX (ADP5585_GPI_PIN_END - ADP5585_GPI_PIN_BASE + 1)
78
130struct adp5589_gpi_map { 79struct adp5589_gpi_map {
131 unsigned short pin; 80 unsigned short pin;
132 unsigned short sw_evt; 81 unsigned short sw_evt;
@@ -159,7 +108,7 @@ struct adp5589_gpi_map {
159#define RESET2_POL_HIGH (1 << 7) 108#define RESET2_POL_HIGH (1 << 7)
160#define RESET2_POL_LOW (0 << 7) 109#define RESET2_POL_LOW (0 << 7)
161 110
162/* Mask Bits: 111/* ADP5589 Mask Bits:
163 * C C C C C C C C C C C | R R R R R R R R 112 * C C C C C C C C C C C | R R R R R R R R
164 * 1 9 8 7 6 5 4 3 2 1 0 | 7 6 5 4 3 2 1 0 113 * 1 9 8 7 6 5 4 3 2 1 0 | 7 6 5 4 3 2 1 0
165 * 0 114 * 0
@@ -168,18 +117,44 @@ struct adp5589_gpi_map {
168 * 8 7 6 5 4 3 2 1 0 9 8 | 7 6 5 4 3 2 1 0 117 * 8 7 6 5 4 3 2 1 0 9 8 | 7 6 5 4 3 2 1 0
169 */ 118 */
170 119
171#define ADP_ROW(x) (1 << (x)) 120#define ADP_ROW(x) (1 << (x))
172#define ADP_COL(x) (1 << (x + 8)) 121#define ADP_COL(x) (1 << (x + 8))
122#define ADP5589_ROW_MASK 0xFF
123#define ADP5589_COL_MASK 0xFF
124#define ADP5589_COL_SHIFT 8
125#define ADP5589_MAX_ROW_NUM 7
126#define ADP5589_MAX_COL_NUM 10
127
128/* ADP5585 Mask Bits:
129 * C C C C C | R R R R R R
130 * 4 3 2 1 0 | 5 4 3 2 1 0
131 *
132 * ---- BIT -- -----------
133 * 1 0 0 0 0 | 0 0 0 0 0 0
134 * 0 9 8 7 6 | 5 4 3 2 1 0
135 */
136
137#define ADP5585_ROW_MASK 0x3F
138#define ADP5585_COL_MASK 0x1F
139#define ADP5585_ROW_SHIFT 0
140#define ADP5585_COL_SHIFT 6
141#define ADP5585_MAX_ROW_NUM 5
142#define ADP5585_MAX_COL_NUM 4
143
144#define ADP5585_ROW(x) (1 << ((x) & ADP5585_ROW_MASK))
145#define ADP5585_COL(x) (1 << (((x) & ADP5585_COL_MASK) + ADP5585_COL_SHIFT))
146
147/* Put one of these structures in i2c_board_info platform_data */
173 148
174struct adp5589_kpad_platform_data { 149struct adp5589_kpad_platform_data {
175 unsigned keypad_en_mask; /* Keypad (Rows/Columns) enable mask */ 150 unsigned keypad_en_mask; /* Keypad (Rows/Columns) enable mask */
176 const unsigned short *keymap; /* Pointer to keymap */ 151 const unsigned short *keymap; /* Pointer to keymap */
177 unsigned short keymapsize; /* Keymap size */ 152 unsigned short keymapsize; /* Keymap size */
178 bool repeat; /* Enable key repeat */ 153 bool repeat; /* Enable key repeat */
179 bool en_keylock; /* Enable key lock feature */ 154 bool en_keylock; /* Enable key lock feature (ADP5589 only)*/
180 unsigned char unlock_key1; /* Unlock Key 1 */ 155 unsigned char unlock_key1; /* Unlock Key 1 (ADP5589 only) */
181 unsigned char unlock_key2; /* Unlock Key 2 */ 156 unsigned char unlock_key2; /* Unlock Key 2 (ADP5589 only) */
182 unsigned char unlock_timer; /* Time in seconds [0..7] between the two unlock keys 0=disable */ 157 unsigned char unlock_timer; /* Time in seconds [0..7] between the two unlock keys 0=disable (ADP5589 only) */
183 unsigned char scan_cycle_time; /* Time between consecutive scan cycles */ 158 unsigned char scan_cycle_time; /* Time between consecutive scan cycles */
184 unsigned char reset_cfg; /* Reset config */ 159 unsigned char reset_cfg; /* Reset config */
185 unsigned short reset1_key_1; /* Reset Key 1 */ 160 unsigned short reset1_key_1; /* Reset Key 1 */
diff --git a/include/linux/input/adxl34x.h b/include/linux/input/adxl34x.h
index df00d998a44a..57e01a7cb006 100644
--- a/include/linux/input/adxl34x.h
+++ b/include/linux/input/adxl34x.h
@@ -30,8 +30,9 @@ struct adxl34x_platform_data {
30 * Y, or Z participation in Tap detection. A '0' excludes the 30 * Y, or Z participation in Tap detection. A '0' excludes the
31 * selected axis from participation in Tap detection. 31 * selected axis from participation in Tap detection.
32 * Setting the SUPPRESS bit suppresses Double Tap detection if 32 * Setting the SUPPRESS bit suppresses Double Tap detection if
33 * acceleration greater than tap_threshold is present between 33 * acceleration greater than tap_threshold is present during the
34 * taps. 34 * tap_latency period, i.e. after the first tap but before the
35 * opening of the second tap window.
35 */ 36 */
36 37
37#define ADXL_SUPPRESS (1 << 3) 38#define ADXL_SUPPRESS (1 << 3)
@@ -226,13 +227,13 @@ struct adxl34x_platform_data {
226 * detection will begin and prevent the detection of activity. This 227 * detection will begin and prevent the detection of activity. This
227 * bit serially links the activity and inactivity functions. When '0' 228 * bit serially links the activity and inactivity functions. When '0'
228 * the inactivity and activity functions are concurrent. Additional 229 * the inactivity and activity functions are concurrent. Additional
229 * information can be found in the Application section under Link 230 * information can be found in the ADXL34x datasheet's Application
230 * Mode. 231 * section under Link Mode.
231 * AUTO_SLEEP: A '1' sets the ADXL34x to switch to Sleep Mode 232 * AUTO_SLEEP: A '1' sets the ADXL34x to switch to Sleep Mode
232 * when inactivity (acceleration has been below inactivity_threshold 233 * when inactivity (acceleration has been below inactivity_threshold
233 * for at least inactivity_time) is detected and the LINK bit is set. 234 * for at least inactivity_time) is detected and the LINK bit is set.
234 * A '0' disables automatic switching to Sleep Mode. See SLEEP 235 * A '0' disables automatic switching to Sleep Mode. See the
235 * for further description. 236 * Sleep Bit section of the ADXL34x datasheet for more information.
236 */ 237 */
237 238
238#define ADXL_LINK (1 << 5) 239#define ADXL_LINK (1 << 5)
@@ -266,6 +267,12 @@ struct adxl34x_platform_data {
266 267
267 u8 watermark; 268 u8 watermark;
268 269
270 /*
271 * When acceleration measurements are received from the ADXL34x
272 * events are sent to the event subsystem. The following settings
273 * select the event type and event code for new x, y and z axis data
274 * respectively.
275 */
269 u32 ev_type; /* EV_ABS or EV_REL */ 276 u32 ev_type; /* EV_ABS or EV_REL */
270 277
271 u32 ev_code_x; /* ABS_X,Y,Z or REL_X,Y,Z */ 278 u32 ev_code_x; /* ABS_X,Y,Z or REL_X,Y,Z */
@@ -289,7 +296,7 @@ struct adxl34x_platform_data {
289 u32 ev_code_act_inactivity; /* EV_KEY */ 296 u32 ev_code_act_inactivity; /* EV_KEY */
290 297
291 /* 298 /*
292 * Use ADXL34x INT2 instead of INT1 299 * Use ADXL34x INT2 pin instead of INT1 pin for interrupt output
293 */ 300 */
294 u8 use_int2; 301 u8 use_int2;
295 302
diff --git a/include/linux/integrity.h b/include/linux/integrity.h
new file mode 100644
index 000000000000..a0c41256cb92
--- /dev/null
+++ b/include/linux/integrity.h
@@ -0,0 +1,39 @@
1/*
2 * Copyright (C) 2009 IBM Corporation
3 * Author: Mimi Zohar <zohar@us.ibm.com>
4 *
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation, version 2 of the License.
8 */
9
10#ifndef _LINUX_INTEGRITY_H
11#define _LINUX_INTEGRITY_H
12
13#include <linux/fs.h>
14
15enum integrity_status {
16 INTEGRITY_PASS = 0,
17 INTEGRITY_FAIL,
18 INTEGRITY_NOLABEL,
19 INTEGRITY_NOXATTRS,
20 INTEGRITY_UNKNOWN,
21};
22
23/* List of EVM protected security xattrs */
24#ifdef CONFIG_INTEGRITY
25extern int integrity_inode_alloc(struct inode *inode);
26extern void integrity_inode_free(struct inode *inode);
27
28#else
29static inline int integrity_inode_alloc(struct inode *inode)
30{
31 return 0;
32}
33
34static inline void integrity_inode_free(struct inode *inode)
35{
36 return;
37}
38#endif /* CONFIG_INTEGRITY_H */
39#endif /* _LINUX_INTEGRITY_H */
diff --git a/include/linux/intel-iommu.h b/include/linux/intel-iommu.h
index 9310c699a37d..e6ca56de9936 100644
--- a/include/linux/intel-iommu.h
+++ b/include/linux/intel-iommu.h
@@ -271,7 +271,7 @@ struct qi_desc {
271}; 271};
272 272
273struct q_inval { 273struct q_inval {
274 spinlock_t q_lock; 274 raw_spinlock_t q_lock;
275 struct qi_desc *desc; /* invalidation queue */ 275 struct qi_desc *desc; /* invalidation queue */
276 int *desc_status; /* desc status */ 276 int *desc_status; /* desc status */
277 int free_head; /* first free entry */ 277 int free_head; /* first free entry */
@@ -279,7 +279,7 @@ struct q_inval {
279 int free_cnt; 279 int free_cnt;
280}; 280};
281 281
282#ifdef CONFIG_INTR_REMAP 282#ifdef CONFIG_IRQ_REMAP
283/* 1MB - maximum possible interrupt remapping table size */ 283/* 1MB - maximum possible interrupt remapping table size */
284#define INTR_REMAP_PAGE_ORDER 8 284#define INTR_REMAP_PAGE_ORDER 8
285#define INTR_REMAP_TABLE_REG_SIZE 0xf 285#define INTR_REMAP_TABLE_REG_SIZE 0xf
@@ -311,14 +311,14 @@ struct intel_iommu {
311 u64 cap; 311 u64 cap;
312 u64 ecap; 312 u64 ecap;
313 u32 gcmd; /* Holds TE, EAFL. Don't need SRTP, SFL, WBF */ 313 u32 gcmd; /* Holds TE, EAFL. Don't need SRTP, SFL, WBF */
314 spinlock_t register_lock; /* protect register handling */ 314 raw_spinlock_t register_lock; /* protect register handling */
315 int seq_id; /* sequence id of the iommu */ 315 int seq_id; /* sequence id of the iommu */
316 int agaw; /* agaw of this iommu */ 316 int agaw; /* agaw of this iommu */
317 int msagaw; /* max sagaw of this iommu */ 317 int msagaw; /* max sagaw of this iommu */
318 unsigned int irq; 318 unsigned int irq;
319 unsigned char name[13]; /* Device Name */ 319 unsigned char name[13]; /* Device Name */
320 320
321#ifdef CONFIG_DMAR 321#ifdef CONFIG_INTEL_IOMMU
322 unsigned long *domain_ids; /* bitmap of domains */ 322 unsigned long *domain_ids; /* bitmap of domains */
323 struct dmar_domain **domains; /* ptr to domains */ 323 struct dmar_domain **domains; /* ptr to domains */
324 spinlock_t lock; /* protect context, domain ids */ 324 spinlock_t lock; /* protect context, domain ids */
@@ -329,7 +329,7 @@ struct intel_iommu {
329 struct q_inval *qi; /* Queued invalidation info */ 329 struct q_inval *qi; /* Queued invalidation info */
330 u32 *iommu_state; /* Store iommu states between suspend and resume.*/ 330 u32 *iommu_state; /* Store iommu states between suspend and resume.*/
331 331
332#ifdef CONFIG_INTR_REMAP 332#ifdef CONFIG_IRQ_REMAP
333 struct ir_table *ir_table; /* Interrupt remapping info */ 333 struct ir_table *ir_table; /* Interrupt remapping info */
334#endif 334#endif
335 int node; 335 int node;
diff --git a/include/linux/interrupt.h b/include/linux/interrupt.h
index a103732b7588..a64b00e286f5 100644
--- a/include/linux/interrupt.h
+++ b/include/linux/interrupt.h
@@ -59,6 +59,8 @@
59 * IRQF_NO_SUSPEND - Do not disable this IRQ during suspend 59 * IRQF_NO_SUSPEND - Do not disable this IRQ during suspend
60 * IRQF_FORCE_RESUME - Force enable it on resume even if IRQF_NO_SUSPEND is set 60 * IRQF_FORCE_RESUME - Force enable it on resume even if IRQF_NO_SUSPEND is set
61 * IRQF_NO_THREAD - Interrupt cannot be threaded 61 * IRQF_NO_THREAD - Interrupt cannot be threaded
62 * IRQF_EARLY_RESUME - Resume IRQ early during syscore instead of at device
63 * resume time.
62 */ 64 */
63#define IRQF_DISABLED 0x00000020 65#define IRQF_DISABLED 0x00000020
64#define IRQF_SAMPLE_RANDOM 0x00000040 66#define IRQF_SAMPLE_RANDOM 0x00000040
@@ -72,6 +74,7 @@
72#define IRQF_NO_SUSPEND 0x00004000 74#define IRQF_NO_SUSPEND 0x00004000
73#define IRQF_FORCE_RESUME 0x00008000 75#define IRQF_FORCE_RESUME 0x00008000
74#define IRQF_NO_THREAD 0x00010000 76#define IRQF_NO_THREAD 0x00010000
77#define IRQF_EARLY_RESUME 0x00020000
75 78
76#define IRQF_TIMER (__IRQF_TIMER | IRQF_NO_SUSPEND | IRQF_NO_THREAD) 79#define IRQF_TIMER (__IRQF_TIMER | IRQF_NO_SUSPEND | IRQF_NO_THREAD)
77 80
@@ -95,6 +98,7 @@ typedef irqreturn_t (*irq_handler_t)(int, void *);
95 * @flags: flags (see IRQF_* above) 98 * @flags: flags (see IRQF_* above)
96 * @name: name of the device 99 * @name: name of the device
97 * @dev_id: cookie to identify the device 100 * @dev_id: cookie to identify the device
101 * @percpu_dev_id: cookie to identify the device
98 * @next: pointer to the next irqaction for shared interrupts 102 * @next: pointer to the next irqaction for shared interrupts
99 * @irq: interrupt number 103 * @irq: interrupt number
100 * @dir: pointer to the proc/irq/NN/name entry 104 * @dir: pointer to the proc/irq/NN/name entry
@@ -104,17 +108,18 @@ typedef irqreturn_t (*irq_handler_t)(int, void *);
104 * @thread_mask: bitmask for keeping track of @thread activity 108 * @thread_mask: bitmask for keeping track of @thread activity
105 */ 109 */
106struct irqaction { 110struct irqaction {
107 irq_handler_t handler; 111 irq_handler_t handler;
108 unsigned long flags; 112 unsigned long flags;
109 void *dev_id; 113 void *dev_id;
110 struct irqaction *next; 114 void __percpu *percpu_dev_id;
111 int irq; 115 struct irqaction *next;
112 irq_handler_t thread_fn; 116 int irq;
113 struct task_struct *thread; 117 irq_handler_t thread_fn;
114 unsigned long thread_flags; 118 struct task_struct *thread;
115 unsigned long thread_mask; 119 unsigned long thread_flags;
116 const char *name; 120 unsigned long thread_mask;
117 struct proc_dir_entry *dir; 121 const char *name;
122 struct proc_dir_entry *dir;
118} ____cacheline_internodealigned_in_smp; 123} ____cacheline_internodealigned_in_smp;
119 124
120extern irqreturn_t no_action(int cpl, void *dev_id); 125extern irqreturn_t no_action(int cpl, void *dev_id);
@@ -136,6 +141,10 @@ extern int __must_check
136request_any_context_irq(unsigned int irq, irq_handler_t handler, 141request_any_context_irq(unsigned int irq, irq_handler_t handler,
137 unsigned long flags, const char *name, void *dev_id); 142 unsigned long flags, const char *name, void *dev_id);
138 143
144extern int __must_check
145request_percpu_irq(unsigned int irq, irq_handler_t handler,
146 const char *devname, void __percpu *percpu_dev_id);
147
139extern void exit_irq_thread(void); 148extern void exit_irq_thread(void);
140#else 149#else
141 150
@@ -164,10 +173,18 @@ request_any_context_irq(unsigned int irq, irq_handler_t handler,
164 return request_irq(irq, handler, flags, name, dev_id); 173 return request_irq(irq, handler, flags, name, dev_id);
165} 174}
166 175
176static inline int __must_check
177request_percpu_irq(unsigned int irq, irq_handler_t handler,
178 const char *devname, void __percpu *percpu_dev_id)
179{
180 return request_irq(irq, handler, 0, devname, percpu_dev_id);
181}
182
167static inline void exit_irq_thread(void) { } 183static inline void exit_irq_thread(void) { }
168#endif 184#endif
169 185
170extern void free_irq(unsigned int, void *); 186extern void free_irq(unsigned int, void *);
187extern void free_percpu_irq(unsigned int, void __percpu *);
171 188
172struct device; 189struct device;
173 190
@@ -207,7 +224,9 @@ extern void devm_free_irq(struct device *dev, unsigned int irq, void *dev_id);
207 224
208extern void disable_irq_nosync(unsigned int irq); 225extern void disable_irq_nosync(unsigned int irq);
209extern void disable_irq(unsigned int irq); 226extern void disable_irq(unsigned int irq);
227extern void disable_percpu_irq(unsigned int irq);
210extern void enable_irq(unsigned int irq); 228extern void enable_irq(unsigned int irq);
229extern void enable_percpu_irq(unsigned int irq, unsigned int type);
211 230
212/* The following three functions are for the core kernel use only. */ 231/* The following three functions are for the core kernel use only. */
213#ifdef CONFIG_GENERIC_HARDIRQS 232#ifdef CONFIG_GENERIC_HARDIRQS
diff --git a/include/linux/io-mapping.h b/include/linux/io-mapping.h
index 8cdcc2a199ad..e44e84f0156c 100644
--- a/include/linux/io-mapping.h
+++ b/include/linux/io-mapping.h
@@ -27,7 +27,7 @@
27 * The io_mapping mechanism provides an abstraction for mapping 27 * The io_mapping mechanism provides an abstraction for mapping
28 * individual pages from an io device to the CPU in an efficient fashion. 28 * individual pages from an io device to the CPU in an efficient fashion.
29 * 29 *
30 * See Documentation/io_mapping.txt 30 * See Documentation/io-mapping.txt
31 */ 31 */
32 32
33#ifdef CONFIG_HAVE_ATOMIC_IOMAP 33#ifdef CONFIG_HAVE_ATOMIC_IOMAP
@@ -117,6 +117,8 @@ io_mapping_unmap(void __iomem *vaddr)
117 117
118#else 118#else
119 119
120#include <linux/uaccess.h>
121
120/* this struct isn't actually defined anywhere */ 122/* this struct isn't actually defined anywhere */
121struct io_mapping; 123struct io_mapping;
122 124
@@ -138,12 +140,14 @@ static inline void __iomem *
138io_mapping_map_atomic_wc(struct io_mapping *mapping, 140io_mapping_map_atomic_wc(struct io_mapping *mapping,
139 unsigned long offset) 141 unsigned long offset)
140{ 142{
143 pagefault_disable();
141 return ((char __force __iomem *) mapping) + offset; 144 return ((char __force __iomem *) mapping) + offset;
142} 145}
143 146
144static inline void 147static inline void
145io_mapping_unmap_atomic(void __iomem *vaddr) 148io_mapping_unmap_atomic(void __iomem *vaddr)
146{ 149{
150 pagefault_enable();
147} 151}
148 152
149/* Non-atomic map/unmap */ 153/* Non-atomic map/unmap */
diff --git a/include/linux/iommu.h b/include/linux/iommu.h
index 9940319d6f9d..432acc4c054d 100644
--- a/include/linux/iommu.h
+++ b/include/linux/iommu.h
@@ -25,15 +25,29 @@
25#define IOMMU_WRITE (2) 25#define IOMMU_WRITE (2)
26#define IOMMU_CACHE (4) /* DMA cache coherency */ 26#define IOMMU_CACHE (4) /* DMA cache coherency */
27 27
28struct iommu_ops;
29struct bus_type;
28struct device; 30struct device;
31struct iommu_domain;
32
33/* iommu fault flags */
34#define IOMMU_FAULT_READ 0x0
35#define IOMMU_FAULT_WRITE 0x1
36
37typedef int (*iommu_fault_handler_t)(struct iommu_domain *,
38 struct device *, unsigned long, int);
29 39
30struct iommu_domain { 40struct iommu_domain {
41 struct iommu_ops *ops;
31 void *priv; 42 void *priv;
43 iommu_fault_handler_t handler;
32}; 44};
33 45
34#define IOMMU_CAP_CACHE_COHERENCY 0x1 46#define IOMMU_CAP_CACHE_COHERENCY 0x1
35#define IOMMU_CAP_INTR_REMAP 0x2 /* isolates device intrs */ 47#define IOMMU_CAP_INTR_REMAP 0x2 /* isolates device intrs */
36 48
49#ifdef CONFIG_IOMMU_API
50
37struct iommu_ops { 51struct iommu_ops {
38 int (*domain_init)(struct iommu_domain *domain); 52 int (*domain_init)(struct iommu_domain *domain);
39 void (*domain_destroy)(struct iommu_domain *domain); 53 void (*domain_destroy)(struct iommu_domain *domain);
@@ -49,11 +63,9 @@ struct iommu_ops {
49 unsigned long cap); 63 unsigned long cap);
50}; 64};
51 65
52#ifdef CONFIG_IOMMU_API 66extern int bus_set_iommu(struct bus_type *bus, struct iommu_ops *ops);
53 67extern bool iommu_present(struct bus_type *bus);
54extern void register_iommu(struct iommu_ops *ops); 68extern struct iommu_domain *iommu_domain_alloc(struct bus_type *bus);
55extern bool iommu_found(void);
56extern struct iommu_domain *iommu_domain_alloc(void);
57extern void iommu_domain_free(struct iommu_domain *domain); 69extern void iommu_domain_free(struct iommu_domain *domain);
58extern int iommu_attach_device(struct iommu_domain *domain, 70extern int iommu_attach_device(struct iommu_domain *domain,
59 struct device *dev); 71 struct device *dev);
@@ -67,19 +79,58 @@ extern phys_addr_t iommu_iova_to_phys(struct iommu_domain *domain,
67 unsigned long iova); 79 unsigned long iova);
68extern int iommu_domain_has_cap(struct iommu_domain *domain, 80extern int iommu_domain_has_cap(struct iommu_domain *domain,
69 unsigned long cap); 81 unsigned long cap);
82extern void iommu_set_fault_handler(struct iommu_domain *domain,
83 iommu_fault_handler_t handler);
84
85/**
86 * report_iommu_fault() - report about an IOMMU fault to the IOMMU framework
87 * @domain: the iommu domain where the fault has happened
88 * @dev: the device where the fault has happened
89 * @iova: the faulting address
90 * @flags: mmu fault flags (e.g. IOMMU_FAULT_READ/IOMMU_FAULT_WRITE/...)
91 *
92 * This function should be called by the low-level IOMMU implementations
93 * whenever IOMMU faults happen, to allow high-level users, that are
94 * interested in such events, to know about them.
95 *
96 * This event may be useful for several possible use cases:
97 * - mere logging of the event
98 * - dynamic TLB/PTE loading
99 * - if restarting of the faulting device is required
100 *
101 * Returns 0 on success and an appropriate error code otherwise (if dynamic
102 * PTE/TLB loading will one day be supported, implementations will be able
103 * to tell whether it succeeded or not according to this return value).
104 *
105 * Specifically, -ENOSYS is returned if a fault handler isn't installed
106 * (though fault handlers can also return -ENOSYS, in case they want to
107 * elicit the default behavior of the IOMMU drivers).
108 */
109static inline int report_iommu_fault(struct iommu_domain *domain,
110 struct device *dev, unsigned long iova, int flags)
111{
112 int ret = -ENOSYS;
70 113
71#else /* CONFIG_IOMMU_API */ 114 /*
115 * if upper layers showed interest and installed a fault handler,
116 * invoke it.
117 */
118 if (domain->handler)
119 ret = domain->handler(domain, dev, iova, flags);
72 120
73static inline void register_iommu(struct iommu_ops *ops) 121 return ret;
74{
75} 122}
76 123
77static inline bool iommu_found(void) 124#else /* CONFIG_IOMMU_API */
125
126struct iommu_ops {};
127
128static inline bool iommu_present(struct bus_type *bus)
78{ 129{
79 return false; 130 return false;
80} 131}
81 132
82static inline struct iommu_domain *iommu_domain_alloc(void) 133static inline struct iommu_domain *iommu_domain_alloc(struct bus_type *bus)
83{ 134{
84 return NULL; 135 return NULL;
85} 136}
@@ -123,6 +174,11 @@ static inline int domain_has_cap(struct iommu_domain *domain,
123 return 0; 174 return 0;
124} 175}
125 176
177static inline void iommu_set_fault_handler(struct iommu_domain *domain,
178 iommu_fault_handler_t handler)
179{
180}
181
126#endif /* CONFIG_IOMMU_API */ 182#endif /* CONFIG_IOMMU_API */
127 183
128#endif /* __LINUX_IOMMU_H */ 184#endif /* __LINUX_IOMMU_H */
diff --git a/include/linux/ip6_tunnel.h b/include/linux/ip6_tunnel.h
index acb9ad684d63..bf22b0317902 100644
--- a/include/linux/ip6_tunnel.h
+++ b/include/linux/ip6_tunnel.h
@@ -16,6 +16,8 @@
16#define IP6_TNL_F_MIP6_DEV 0x8 16#define IP6_TNL_F_MIP6_DEV 0x8
17/* copy DSCP from the outer packet */ 17/* copy DSCP from the outer packet */
18#define IP6_TNL_F_RCV_DSCP_COPY 0x10 18#define IP6_TNL_F_RCV_DSCP_COPY 0x10
19/* copy fwmark from inner packet */
20#define IP6_TNL_F_USE_ORIG_FWMARK 0x20
19 21
20struct ip6_tnl_parm { 22struct ip6_tnl_parm {
21 char name[IFNAMSIZ]; /* name of tunnel device */ 23 char name[IFNAMSIZ]; /* name of tunnel device */
diff --git a/include/linux/ipx.h b/include/linux/ipx.h
index aabb1d294025..3d48014cdd71 100644
--- a/include/linux/ipx.h
+++ b/include/linux/ipx.h
@@ -7,7 +7,7 @@
7#define IPX_MTU 576 7#define IPX_MTU 576
8 8
9struct sockaddr_ipx { 9struct sockaddr_ipx {
10 sa_family_t sipx_family; 10 __kernel_sa_family_t sipx_family;
11 __be16 sipx_port; 11 __be16 sipx_port;
12 __be32 sipx_network; 12 __be32 sipx_network;
13 unsigned char sipx_node[IPX_NODE_LEN]; 13 unsigned char sipx_node[IPX_NODE_LEN];
diff --git a/include/linux/irda.h b/include/linux/irda.h
index 00bdad0e8515..a014c3252311 100644
--- a/include/linux/irda.h
+++ b/include/linux/irda.h
@@ -26,12 +26,9 @@
26#define KERNEL_IRDA_H 26#define KERNEL_IRDA_H
27 27
28#include <linux/types.h> 28#include <linux/types.h>
29#include <linux/socket.h>
29 30
30/* Please do *not* add any #include in this file, this file is 31/* Note that this file is shared with user space. */
31 * included as-is in user space.
32 * Please fix the calling file to properly included needed files before
33 * this one, or preferably to include <net/irda/irda.h> instead.
34 * Jean II */
35 32
36/* Hint bit positions for first hint byte */ 33/* Hint bit positions for first hint byte */
37#define HINT_PNP 0x01 34#define HINT_PNP 0x01
@@ -125,7 +122,7 @@ enum {
125#define LSAP_ANY 0xff 122#define LSAP_ANY 0xff
126 123
127struct sockaddr_irda { 124struct sockaddr_irda {
128 sa_family_t sir_family; /* AF_IRDA */ 125 __kernel_sa_family_t sir_family; /* AF_IRDA */
129 __u8 sir_lsap_sel; /* LSAP selector */ 126 __u8 sir_lsap_sel; /* LSAP selector */
130 __u32 sir_addr; /* Device address */ 127 __u32 sir_addr; /* Device address */
131 char sir_name[25]; /* Usually <service>:IrDA:TinyTP */ 128 char sir_name[25]; /* Usually <service>:IrDA:TinyTP */
diff --git a/include/linux/irq.h b/include/linux/irq.h
index 59517300a315..59e49c80cc2c 100644
--- a/include/linux/irq.h
+++ b/include/linux/irq.h
@@ -66,6 +66,7 @@ typedef void (*irq_preflow_handler_t)(struct irq_data *data);
66 * IRQ_NO_BALANCING - Interrupt cannot be balanced (affinity set) 66 * IRQ_NO_BALANCING - Interrupt cannot be balanced (affinity set)
67 * IRQ_MOVE_PCNTXT - Interrupt can be migrated from process context 67 * IRQ_MOVE_PCNTXT - Interrupt can be migrated from process context
68 * IRQ_NESTED_TRHEAD - Interrupt nests into another thread 68 * IRQ_NESTED_TRHEAD - Interrupt nests into another thread
69 * IRQ_PER_CPU_DEVID - Dev_id is a per-cpu variable
69 */ 70 */
70enum { 71enum {
71 IRQ_TYPE_NONE = 0x00000000, 72 IRQ_TYPE_NONE = 0x00000000,
@@ -88,12 +89,13 @@ enum {
88 IRQ_MOVE_PCNTXT = (1 << 14), 89 IRQ_MOVE_PCNTXT = (1 << 14),
89 IRQ_NESTED_THREAD = (1 << 15), 90 IRQ_NESTED_THREAD = (1 << 15),
90 IRQ_NOTHREAD = (1 << 16), 91 IRQ_NOTHREAD = (1 << 16),
92 IRQ_PER_CPU_DEVID = (1 << 17),
91}; 93};
92 94
93#define IRQF_MODIFY_MASK \ 95#define IRQF_MODIFY_MASK \
94 (IRQ_TYPE_SENSE_MASK | IRQ_NOPROBE | IRQ_NOREQUEST | \ 96 (IRQ_TYPE_SENSE_MASK | IRQ_NOPROBE | IRQ_NOREQUEST | \
95 IRQ_NOAUTOEN | IRQ_MOVE_PCNTXT | IRQ_LEVEL | IRQ_NO_BALANCING | \ 97 IRQ_NOAUTOEN | IRQ_MOVE_PCNTXT | IRQ_LEVEL | IRQ_NO_BALANCING | \
96 IRQ_PER_CPU | IRQ_NESTED_THREAD) 98 IRQ_PER_CPU | IRQ_NESTED_THREAD | IRQ_NOTHREAD | IRQ_PER_CPU_DEVID)
97 99
98#define IRQ_NO_BALANCING_MASK (IRQ_PER_CPU | IRQ_NO_BALANCING) 100#define IRQ_NO_BALANCING_MASK (IRQ_PER_CPU | IRQ_NO_BALANCING)
99 101
@@ -336,12 +338,14 @@ struct irq_chip {
336 * IRQCHIP_MASK_ON_SUSPEND: Mask non wake irqs in the suspend path 338 * IRQCHIP_MASK_ON_SUSPEND: Mask non wake irqs in the suspend path
337 * IRQCHIP_ONOFFLINE_ENABLED: Only call irq_on/off_line callbacks 339 * IRQCHIP_ONOFFLINE_ENABLED: Only call irq_on/off_line callbacks
338 * when irq enabled 340 * when irq enabled
341 * IRQCHIP_SKIP_SET_WAKE: Skip chip.irq_set_wake(), for this irq chip
339 */ 342 */
340enum { 343enum {
341 IRQCHIP_SET_TYPE_MASKED = (1 << 0), 344 IRQCHIP_SET_TYPE_MASKED = (1 << 0),
342 IRQCHIP_EOI_IF_HANDLED = (1 << 1), 345 IRQCHIP_EOI_IF_HANDLED = (1 << 1),
343 IRQCHIP_MASK_ON_SUSPEND = (1 << 2), 346 IRQCHIP_MASK_ON_SUSPEND = (1 << 2),
344 IRQCHIP_ONOFFLINE_ENABLED = (1 << 3), 347 IRQCHIP_ONOFFLINE_ENABLED = (1 << 3),
348 IRQCHIP_SKIP_SET_WAKE = (1 << 4),
345}; 349};
346 350
347/* This include will go away once we isolated irq_desc usage to core code */ 351/* This include will go away once we isolated irq_desc usage to core code */
@@ -365,6 +369,8 @@ enum {
365struct irqaction; 369struct irqaction;
366extern int setup_irq(unsigned int irq, struct irqaction *new); 370extern int setup_irq(unsigned int irq, struct irqaction *new);
367extern void remove_irq(unsigned int irq, struct irqaction *act); 371extern void remove_irq(unsigned int irq, struct irqaction *act);
372extern int setup_percpu_irq(unsigned int irq, struct irqaction *new);
373extern void remove_percpu_irq(unsigned int irq, struct irqaction *act);
368 374
369extern void irq_cpu_online(void); 375extern void irq_cpu_online(void);
370extern void irq_cpu_offline(void); 376extern void irq_cpu_offline(void);
@@ -392,6 +398,7 @@ extern void handle_edge_irq(unsigned int irq, struct irq_desc *desc);
392extern void handle_edge_eoi_irq(unsigned int irq, struct irq_desc *desc); 398extern void handle_edge_eoi_irq(unsigned int irq, struct irq_desc *desc);
393extern void handle_simple_irq(unsigned int irq, struct irq_desc *desc); 399extern void handle_simple_irq(unsigned int irq, struct irq_desc *desc);
394extern void handle_percpu_irq(unsigned int irq, struct irq_desc *desc); 400extern void handle_percpu_irq(unsigned int irq, struct irq_desc *desc);
401extern void handle_percpu_devid_irq(unsigned int irq, struct irq_desc *desc);
395extern void handle_bad_irq(unsigned int irq, struct irq_desc *desc); 402extern void handle_bad_irq(unsigned int irq, struct irq_desc *desc);
396extern void handle_nested_irq(unsigned int irq); 403extern void handle_nested_irq(unsigned int irq);
397 404
@@ -420,6 +427,8 @@ static inline void irq_set_chip_and_handler(unsigned int irq, struct irq_chip *c
420 irq_set_chip_and_handler_name(irq, chip, handle, NULL); 427 irq_set_chip_and_handler_name(irq, chip, handle, NULL);
421} 428}
422 429
430extern int irq_set_percpu_devid(unsigned int irq);
431
423extern void 432extern void
424__irq_set_handler(unsigned int irq, irq_flow_handler_t handle, int is_chained, 433__irq_set_handler(unsigned int irq, irq_flow_handler_t handle, int is_chained,
425 const char *name); 434 const char *name);
@@ -481,6 +490,13 @@ static inline void irq_set_nested_thread(unsigned int irq, bool nest)
481 irq_clear_status_flags(irq, IRQ_NESTED_THREAD); 490 irq_clear_status_flags(irq, IRQ_NESTED_THREAD);
482} 491}
483 492
493static inline void irq_set_percpu_devid_flags(unsigned int irq)
494{
495 irq_set_status_flags(irq,
496 IRQ_NOAUTOEN | IRQ_PER_CPU | IRQ_NOTHREAD |
497 IRQ_NOPROBE | IRQ_PER_CPU_DEVID);
498}
499
484/* Handle dynamic irq creation and destruction */ 500/* Handle dynamic irq creation and destruction */
485extern unsigned int create_irq_nr(unsigned int irq_want, int node); 501extern unsigned int create_irq_nr(unsigned int irq_want, int node);
486extern int create_irq(void); 502extern int create_irq(void);
diff --git a/include/linux/irq_work.h b/include/linux/irq_work.h
index 4fa09d4d0b71..6a9e8f5399e2 100644
--- a/include/linux/irq_work.h
+++ b/include/linux/irq_work.h
@@ -1,20 +1,23 @@
1#ifndef _LINUX_IRQ_WORK_H 1#ifndef _LINUX_IRQ_WORK_H
2#define _LINUX_IRQ_WORK_H 2#define _LINUX_IRQ_WORK_H
3 3
4#include <linux/llist.h>
5
4struct irq_work { 6struct irq_work {
5 struct irq_work *next; 7 unsigned long flags;
8 struct llist_node llnode;
6 void (*func)(struct irq_work *); 9 void (*func)(struct irq_work *);
7}; 10};
8 11
9static inline 12static inline
10void init_irq_work(struct irq_work *entry, void (*func)(struct irq_work *)) 13void init_irq_work(struct irq_work *work, void (*func)(struct irq_work *))
11{ 14{
12 entry->next = NULL; 15 work->flags = 0;
13 entry->func = func; 16 work->func = func;
14} 17}
15 18
16bool irq_work_queue(struct irq_work *entry); 19bool irq_work_queue(struct irq_work *work);
17void irq_work_run(void); 20void irq_work_run(void);
18void irq_work_sync(struct irq_work *entry); 21void irq_work_sync(struct irq_work *work);
19 22
20#endif /* _LINUX_IRQ_WORK_H */ 23#endif /* _LINUX_IRQ_WORK_H */
diff --git a/include/linux/irqdesc.h b/include/linux/irqdesc.h
index 150134ac709a..6b69c2c9dff1 100644
--- a/include/linux/irqdesc.h
+++ b/include/linux/irqdesc.h
@@ -53,6 +53,7 @@ struct irq_desc {
53 unsigned long last_unhandled; /* Aging timer for unhandled count */ 53 unsigned long last_unhandled; /* Aging timer for unhandled count */
54 unsigned int irqs_unhandled; 54 unsigned int irqs_unhandled;
55 raw_spinlock_t lock; 55 raw_spinlock_t lock;
56 struct cpumask *percpu_enabled;
56#ifdef CONFIG_SMP 57#ifdef CONFIG_SMP
57 const struct cpumask *affinity_hint; 58 const struct cpumask *affinity_hint;
58 struct irq_affinity_notify *affinity_notify; 59 struct irq_affinity_notify *affinity_notify;
diff --git a/include/linux/irqdomain.h b/include/linux/irqdomain.h
index 3ad553e8eae2..99834e581b9e 100644
--- a/include/linux/irqdomain.h
+++ b/include/linux/irqdomain.h
@@ -47,6 +47,7 @@ struct irq_domain_ops {
47 * of the irq_domain is responsible for allocating the array of 47 * of the irq_domain is responsible for allocating the array of
48 * irq_desc structures. 48 * irq_desc structures.
49 * @nr_irq: Number of irqs managed by the irq domain 49 * @nr_irq: Number of irqs managed by the irq domain
50 * @hwirq_base: Starting number for hwirqs managed by the irq domain
50 * @ops: pointer to irq_domain methods 51 * @ops: pointer to irq_domain methods
51 * @priv: private data pointer for use by owner. Not touched by irq_domain 52 * @priv: private data pointer for use by owner. Not touched by irq_domain
52 * core code. 53 * core code.
@@ -57,6 +58,7 @@ struct irq_domain {
57 struct list_head list; 58 struct list_head list;
58 unsigned int irq_base; 59 unsigned int irq_base;
59 unsigned int nr_irq; 60 unsigned int nr_irq;
61 unsigned int hwirq_base;
60 const struct irq_domain_ops *ops; 62 const struct irq_domain_ops *ops;
61 void *priv; 63 void *priv;
62 struct device_node *of_node; 64 struct device_node *of_node;
@@ -72,9 +74,21 @@ struct irq_domain {
72static inline unsigned int irq_domain_to_irq(struct irq_domain *d, 74static inline unsigned int irq_domain_to_irq(struct irq_domain *d,
73 unsigned long hwirq) 75 unsigned long hwirq)
74{ 76{
75 return d->ops->to_irq ? d->ops->to_irq(d, hwirq) : d->irq_base + hwirq; 77 if (d->ops->to_irq)
78 return d->ops->to_irq(d, hwirq);
79 if (WARN_ON(hwirq < d->hwirq_base))
80 return 0;
81 return d->irq_base + hwirq - d->hwirq_base;
76} 82}
77 83
84#define irq_domain_for_each_hwirq(d, hw) \
85 for (hw = d->hwirq_base; hw < d->hwirq_base + d->nr_irq; hw++)
86
87#define irq_domain_for_each_irq(d, hw, irq) \
88 for (hw = d->hwirq_base, irq = irq_domain_to_irq(d, hw); \
89 hw < d->hwirq_base + d->nr_irq; \
90 hw++, irq = irq_domain_to_irq(d, hw))
91
78extern void irq_domain_add(struct irq_domain *domain); 92extern void irq_domain_add(struct irq_domain *domain);
79extern void irq_domain_del(struct irq_domain *domain); 93extern void irq_domain_del(struct irq_domain *domain);
80#endif /* CONFIG_IRQ_DOMAIN */ 94#endif /* CONFIG_IRQ_DOMAIN */
diff --git a/include/linux/isdn.h b/include/linux/isdn.h
index 44cd663c53b6..4ccf95d681b4 100644
--- a/include/linux/isdn.h
+++ b/include/linux/isdn.h
@@ -68,7 +68,7 @@
68#define ISDN_NET_ENCAP_SYNCPPP 4 68#define ISDN_NET_ENCAP_SYNCPPP 4
69#define ISDN_NET_ENCAP_UIHDLC 5 69#define ISDN_NET_ENCAP_UIHDLC 5
70#define ISDN_NET_ENCAP_CISCOHDLCK 6 /* With SLARP and keepalive */ 70#define ISDN_NET_ENCAP_CISCOHDLCK 6 /* With SLARP and keepalive */
71#define ISDN_NET_ENCAP_X25IFACE 7 /* Documentation/networking/x25-iface.txt*/ 71#define ISDN_NET_ENCAP_X25IFACE 7 /* Documentation/networking/x25-iface.txt */
72#define ISDN_NET_ENCAP_MAX_ENCAP ISDN_NET_ENCAP_X25IFACE 72#define ISDN_NET_ENCAP_MAX_ENCAP ISDN_NET_ENCAP_X25IFACE
73 73
74/* Facility which currently uses an ISDN-channel */ 74/* Facility which currently uses an ISDN-channel */
diff --git a/include/linux/jiffies.h b/include/linux/jiffies.h
index f97672a36fa8..265e2c3cbd1c 100644
--- a/include/linux/jiffies.h
+++ b/include/linux/jiffies.h
@@ -303,7 +303,7 @@ extern void jiffies_to_timespec(const unsigned long jiffies,
303extern unsigned long timeval_to_jiffies(const struct timeval *value); 303extern unsigned long timeval_to_jiffies(const struct timeval *value);
304extern void jiffies_to_timeval(const unsigned long jiffies, 304extern void jiffies_to_timeval(const unsigned long jiffies,
305 struct timeval *value); 305 struct timeval *value);
306extern clock_t jiffies_to_clock_t(long x); 306extern clock_t jiffies_to_clock_t(unsigned long x);
307extern unsigned long clock_t_to_jiffies(unsigned long x); 307extern unsigned long clock_t_to_jiffies(unsigned long x);
308extern u64 jiffies_64_to_clock_t(u64 x); 308extern u64 jiffies_64_to_clock_t(u64 x);
309extern u64 nsec_to_clock_t(u64 x); 309extern u64 nsec_to_clock_t(u64 x);
diff --git a/include/linux/kallsyms.h b/include/linux/kallsyms.h
index 0df513b7a9f8..387571959dd9 100644
--- a/include/linux/kallsyms.h
+++ b/include/linux/kallsyms.h
@@ -101,9 +101,8 @@ static inline int lookup_symbol_attrs(unsigned long addr, unsigned long *size, u
101#endif /*CONFIG_KALLSYMS*/ 101#endif /*CONFIG_KALLSYMS*/
102 102
103/* This macro allows us to keep printk typechecking */ 103/* This macro allows us to keep printk typechecking */
104static void __check_printsym_format(const char *fmt, ...) 104static __printf(1, 2)
105__attribute__((format(printf,1,2))); 105void __check_printsym_format(const char *fmt, ...)
106static inline void __check_printsym_format(const char *fmt, ...)
107{ 106{
108} 107}
109 108
diff --git a/include/linux/kdb.h b/include/linux/kdb.h
index 529d9a0c75a5..064725854db8 100644
--- a/include/linux/kdb.h
+++ b/include/linux/kdb.h
@@ -114,12 +114,9 @@ typedef enum {
114} kdb_reason_t; 114} kdb_reason_t;
115 115
116extern int kdb_trap_printk; 116extern int kdb_trap_printk;
117extern int vkdb_printf(const char *fmt, va_list args) 117extern __printf(1, 0) int vkdb_printf(const char *fmt, va_list args);
118 __attribute__ ((format (printf, 1, 0))); 118extern __printf(1, 2) int kdb_printf(const char *, ...);
119extern int kdb_printf(const char *, ...) 119typedef __printf(1, 2) int (*kdb_printf_t)(const char *, ...);
120 __attribute__ ((format (printf, 1, 2)));
121typedef int (*kdb_printf_t)(const char *, ...)
122 __attribute__ ((format (printf, 1, 2)));
123 120
124extern void kdb_init(int level); 121extern void kdb_init(int level);
125 122
diff --git a/include/linux/kernel.h b/include/linux/kernel.h
index 46ac9a50528d..4c0d3b2fd5fc 100644
--- a/include/linux/kernel.h
+++ b/include/linux/kernel.h
@@ -287,6 +287,8 @@ static inline int __must_check kstrtos32_from_user(const char __user *s, size_t
287 return kstrtoint_from_user(s, count, base, res); 287 return kstrtoint_from_user(s, count, base, res);
288} 288}
289 289
290/* Obsolete, do not use. Use kstrto<foo> instead */
291
290extern unsigned long simple_strtoul(const char *,char **,unsigned int); 292extern unsigned long simple_strtoul(const char *,char **,unsigned int);
291extern long simple_strtol(const char *,char **,unsigned int); 293extern long simple_strtol(const char *,char **,unsigned int);
292extern unsigned long long simple_strtoull(const char *,char **,unsigned int); 294extern unsigned long long simple_strtoull(const char *,char **,unsigned int);
@@ -296,20 +298,20 @@ extern long long simple_strtoll(const char *,char **,unsigned int);
296#define strict_strtoull kstrtoull 298#define strict_strtoull kstrtoull
297#define strict_strtoll kstrtoll 299#define strict_strtoll kstrtoll
298 300
299extern int sprintf(char * buf, const char * fmt, ...) 301/* lib/printf utilities */
300 __attribute__ ((format (printf, 2, 3))); 302
301extern int vsprintf(char *buf, const char *, va_list) 303extern __printf(2, 3) int sprintf(char *buf, const char * fmt, ...);
302 __attribute__ ((format (printf, 2, 0))); 304extern __printf(2, 0) int vsprintf(char *buf, const char *, va_list);
303extern int snprintf(char * buf, size_t size, const char * fmt, ...) 305extern __printf(3, 4)
304 __attribute__ ((format (printf, 3, 4))); 306int snprintf(char *buf, size_t size, const char *fmt, ...);
305extern int vsnprintf(char *buf, size_t size, const char *fmt, va_list args) 307extern __printf(3, 0)
306 __attribute__ ((format (printf, 3, 0))); 308int vsnprintf(char *buf, size_t size, const char *fmt, va_list args);
307extern int scnprintf(char * buf, size_t size, const char * fmt, ...) 309extern __printf(3, 4)
308 __attribute__ ((format (printf, 3, 4))); 310int scnprintf(char *buf, size_t size, const char *fmt, ...);
309extern int vscnprintf(char *buf, size_t size, const char *fmt, va_list args) 311extern __printf(3, 0)
310 __attribute__ ((format (printf, 3, 0))); 312int vscnprintf(char *buf, size_t size, const char *fmt, va_list args);
311extern char *kasprintf(gfp_t gfp, const char *fmt, ...) 313extern __printf(2, 3)
312 __attribute__ ((format (printf, 2, 3))); 314char *kasprintf(gfp_t gfp, const char *fmt, ...);
313extern char *kvasprintf(gfp_t gfp, const char *fmt, va_list args); 315extern char *kvasprintf(gfp_t gfp, const char *fmt, va_list args);
314 316
315extern int sscanf(const char *, const char *, ...) 317extern int sscanf(const char *, const char *, ...)
@@ -374,15 +376,20 @@ extern const char hex_asc[];
374#define hex_asc_lo(x) hex_asc[((x) & 0x0f)] 376#define hex_asc_lo(x) hex_asc[((x) & 0x0f)]
375#define hex_asc_hi(x) hex_asc[((x) & 0xf0) >> 4] 377#define hex_asc_hi(x) hex_asc[((x) & 0xf0) >> 4]
376 378
377static inline char *pack_hex_byte(char *buf, u8 byte) 379static inline char *hex_byte_pack(char *buf, u8 byte)
378{ 380{
379 *buf++ = hex_asc_hi(byte); 381 *buf++ = hex_asc_hi(byte);
380 *buf++ = hex_asc_lo(byte); 382 *buf++ = hex_asc_lo(byte);
381 return buf; 383 return buf;
382} 384}
383 385
386static inline char * __deprecated pack_hex_byte(char *buf, u8 byte)
387{
388 return hex_byte_pack(buf, byte);
389}
390
384extern int hex_to_bin(char ch); 391extern int hex_to_bin(char ch);
385extern void hex2bin(u8 *dst, const char *src, size_t count); 392extern int __must_check hex2bin(u8 *dst, const char *src, size_t count);
386 393
387/* 394/*
388 * General tracing related utility functions - trace_printk(), 395 * General tracing related utility functions - trace_printk(),
@@ -427,8 +434,8 @@ extern void tracing_start(void);
427extern void tracing_stop(void); 434extern void tracing_stop(void);
428extern void ftrace_off_permanent(void); 435extern void ftrace_off_permanent(void);
429 436
430static inline void __attribute__ ((format (printf, 1, 2))) 437static inline __printf(1, 2)
431____trace_printk_check_format(const char *fmt, ...) 438void ____trace_printk_check_format(const char *fmt, ...)
432{ 439{
433} 440}
434#define __trace_printk_check_format(fmt, args...) \ 441#define __trace_printk_check_format(fmt, args...) \
@@ -467,13 +474,11 @@ do { \
467 __trace_printk(_THIS_IP_, fmt, ##args); \ 474 __trace_printk(_THIS_IP_, fmt, ##args); \
468} while (0) 475} while (0)
469 476
470extern int 477extern __printf(2, 3)
471__trace_bprintk(unsigned long ip, const char *fmt, ...) 478int __trace_bprintk(unsigned long ip, const char *fmt, ...);
472 __attribute__ ((format (printf, 2, 3)));
473 479
474extern int 480extern __printf(2, 3)
475__trace_printk(unsigned long ip, const char *fmt, ...) 481int __trace_printk(unsigned long ip, const char *fmt, ...);
476 __attribute__ ((format (printf, 2, 3)));
477 482
478extern void trace_dump_stack(void); 483extern void trace_dump_stack(void);
479 484
@@ -502,8 +507,8 @@ __ftrace_vprintk(unsigned long ip, const char *fmt, va_list ap);
502 507
503extern void ftrace_dump(enum ftrace_dump_mode oops_dump_mode); 508extern void ftrace_dump(enum ftrace_dump_mode oops_dump_mode);
504#else 509#else
505static inline int 510static inline __printf(1, 2)
506trace_printk(const char *fmt, ...) __attribute__ ((format (printf, 1, 2))); 511int trace_printk(const char *fmt, ...);
507 512
508static inline void tracing_start(void) { } 513static inline void tracing_start(void) { }
509static inline void tracing_stop(void) { } 514static inline void tracing_stop(void) { }
diff --git a/include/linux/kexec.h b/include/linux/kexec.h
index c2478a342cd7..2fa0901219d4 100644
--- a/include/linux/kexec.h
+++ b/include/linux/kexec.h
@@ -33,6 +33,14 @@
33#error KEXEC_ARCH not defined 33#error KEXEC_ARCH not defined
34#endif 34#endif
35 35
36#ifndef KEXEC_CRASH_CONTROL_MEMORY_LIMIT
37#define KEXEC_CRASH_CONTROL_MEMORY_LIMIT KEXEC_CONTROL_MEMORY_LIMIT
38#endif
39
40#ifndef KEXEC_CRASH_MEM_ALIGN
41#define KEXEC_CRASH_MEM_ALIGN PAGE_SIZE
42#endif
43
36#define KEXEC_NOTE_HEAD_BYTES ALIGN(sizeof(struct elf_note), 4) 44#define KEXEC_NOTE_HEAD_BYTES ALIGN(sizeof(struct elf_note), 4)
37#define KEXEC_CORE_NOTE_NAME "CORE" 45#define KEXEC_CORE_NOTE_NAME "CORE"
38#define KEXEC_CORE_NOTE_NAME_BYTES ALIGN(sizeof(KEXEC_CORE_NOTE_NAME), 4) 46#define KEXEC_CORE_NOTE_NAME_BYTES ALIGN(sizeof(KEXEC_CORE_NOTE_NAME), 4)
@@ -129,9 +137,11 @@ extern void crash_kexec(struct pt_regs *);
129int kexec_should_crash(struct task_struct *); 137int kexec_should_crash(struct task_struct *);
130void crash_save_cpu(struct pt_regs *regs, int cpu); 138void crash_save_cpu(struct pt_regs *regs, int cpu);
131void crash_save_vmcoreinfo(void); 139void crash_save_vmcoreinfo(void);
140void crash_map_reserved_pages(void);
141void crash_unmap_reserved_pages(void);
132void arch_crash_save_vmcoreinfo(void); 142void arch_crash_save_vmcoreinfo(void);
133void vmcoreinfo_append_str(const char *fmt, ...) 143__printf(1, 2)
134 __attribute__ ((format (printf, 1, 2))); 144void vmcoreinfo_append_str(const char *fmt, ...);
135unsigned long paddr_vmcoreinfo_note(void); 145unsigned long paddr_vmcoreinfo_note(void);
136 146
137#define VMCOREINFO_OSRELEASE(value) \ 147#define VMCOREINFO_OSRELEASE(value) \
diff --git a/include/linux/kmod.h b/include/linux/kmod.h
index 0da38cf7db7b..b16f65390734 100644
--- a/include/linux/kmod.h
+++ b/include/linux/kmod.h
@@ -32,8 +32,8 @@
32extern char modprobe_path[]; /* for sysctl */ 32extern char modprobe_path[]; /* for sysctl */
33/* modprobe exit status on success, -ve on error. Return value 33/* modprobe exit status on success, -ve on error. Return value
34 * usually useless though. */ 34 * usually useless though. */
35extern int __request_module(bool wait, const char *name, ...) \ 35extern __printf(2, 3)
36 __attribute__((format(printf, 2, 3))); 36int __request_module(bool wait, const char *name, ...);
37#define request_module(mod...) __request_module(true, mod) 37#define request_module(mod...) __request_module(true, mod)
38#define request_module_nowait(mod...) __request_module(false, mod) 38#define request_module_nowait(mod...) __request_module(false, mod)
39#define try_then_request_module(x, mod...) \ 39#define try_then_request_module(x, mod...) \
diff --git a/include/linux/kobject.h b/include/linux/kobject.h
index 668729cc0fe9..ad81e1c51487 100644
--- a/include/linux/kobject.h
+++ b/include/linux/kobject.h
@@ -72,8 +72,8 @@ struct kobject {
72 unsigned int uevent_suppress:1; 72 unsigned int uevent_suppress:1;
73}; 73};
74 74
75extern int kobject_set_name(struct kobject *kobj, const char *name, ...) 75extern __printf(2, 3)
76 __attribute__((format(printf, 2, 3))); 76int kobject_set_name(struct kobject *kobj, const char *name, ...);
77extern int kobject_set_name_vargs(struct kobject *kobj, const char *fmt, 77extern int kobject_set_name_vargs(struct kobject *kobj, const char *fmt,
78 va_list vargs); 78 va_list vargs);
79 79
@@ -83,15 +83,13 @@ static inline const char *kobject_name(const struct kobject *kobj)
83} 83}
84 84
85extern void kobject_init(struct kobject *kobj, struct kobj_type *ktype); 85extern void kobject_init(struct kobject *kobj, struct kobj_type *ktype);
86extern int __must_check kobject_add(struct kobject *kobj, 86extern __printf(3, 4) __must_check
87 struct kobject *parent, 87int kobject_add(struct kobject *kobj, struct kobject *parent,
88 const char *fmt, ...) 88 const char *fmt, ...);
89 __attribute__((format(printf, 3, 4))); 89extern __printf(4, 5) __must_check
90extern int __must_check kobject_init_and_add(struct kobject *kobj, 90int kobject_init_and_add(struct kobject *kobj,
91 struct kobj_type *ktype, 91 struct kobj_type *ktype, struct kobject *parent,
92 struct kobject *parent, 92 const char *fmt, ...);
93 const char *fmt, ...)
94 __attribute__((format(printf, 4, 5)));
95 93
96extern void kobject_del(struct kobject *kobj); 94extern void kobject_del(struct kobject *kobj);
97 95
@@ -212,8 +210,8 @@ int kobject_uevent(struct kobject *kobj, enum kobject_action action);
212int kobject_uevent_env(struct kobject *kobj, enum kobject_action action, 210int kobject_uevent_env(struct kobject *kobj, enum kobject_action action,
213 char *envp[]); 211 char *envp[]);
214 212
215int add_uevent_var(struct kobj_uevent_env *env, const char *format, ...) 213__printf(2, 3)
216 __attribute__((format (printf, 2, 3))); 214int add_uevent_var(struct kobj_uevent_env *env, const char *format, ...);
217 215
218int kobject_action_type(const char *buf, size_t count, 216int kobject_action_type(const char *buf, size_t count,
219 enum kobject_action *type); 217 enum kobject_action *type);
@@ -226,7 +224,7 @@ static inline int kobject_uevent_env(struct kobject *kobj,
226 char *envp[]) 224 char *envp[])
227{ return 0; } 225{ return 0; }
228 226
229static inline __attribute__((format(printf, 2, 3))) 227static inline __printf(2, 3)
230int add_uevent_var(struct kobj_uevent_env *env, const char *format, ...) 228int add_uevent_var(struct kobj_uevent_env *env, const char *format, ...)
231{ return 0; } 229{ return 0; }
232 230
diff --git a/include/linux/kprobes.h b/include/linux/kprobes.h
index dd7c12e875bc..dce6e4dbeda7 100644
--- a/include/linux/kprobes.h
+++ b/include/linux/kprobes.h
@@ -181,7 +181,7 @@ struct kretprobe {
181 int nmissed; 181 int nmissed;
182 size_t data_size; 182 size_t data_size;
183 struct hlist_head free_instances; 183 struct hlist_head free_instances;
184 spinlock_t lock; 184 raw_spinlock_t lock;
185}; 185};
186 186
187struct kretprobe_instance { 187struct kretprobe_instance {
diff --git a/include/linux/kthread.h b/include/linux/kthread.h
index 1e923e5e88e8..5cac19b3a266 100644
--- a/include/linux/kthread.h
+++ b/include/linux/kthread.h
@@ -4,11 +4,11 @@
4#include <linux/err.h> 4#include <linux/err.h>
5#include <linux/sched.h> 5#include <linux/sched.h>
6 6
7__printf(4, 5)
7struct task_struct *kthread_create_on_node(int (*threadfn)(void *data), 8struct task_struct *kthread_create_on_node(int (*threadfn)(void *data),
8 void *data, 9 void *data,
9 int node, 10 int node,
10 const char namefmt[], ...) 11 const char namefmt[], ...);
11 __attribute__((format(printf, 4, 5)));
12 12
13#define kthread_create(threadfn, data, namefmt, arg...) \ 13#define kthread_create(threadfn, data, namefmt, arg...) \
14 kthread_create_on_node(threadfn, data, -1, namefmt, ##arg) 14 kthread_create_on_node(threadfn, data, -1, namefmt, ##arg)
diff --git a/include/linux/kvm.h b/include/linux/kvm.h
index aace6b8691a2..f47fcd30273d 100644
--- a/include/linux/kvm.h
+++ b/include/linux/kvm.h
@@ -371,6 +371,7 @@ struct kvm_s390_psw {
371#define KVM_S390_INT_VIRTIO 0xffff2603u 371#define KVM_S390_INT_VIRTIO 0xffff2603u
372#define KVM_S390_INT_SERVICE 0xffff2401u 372#define KVM_S390_INT_SERVICE 0xffff2401u
373#define KVM_S390_INT_EMERGENCY 0xffff1201u 373#define KVM_S390_INT_EMERGENCY 0xffff1201u
374#define KVM_S390_INT_EXTERNAL_CALL 0xffff1202u
374 375
375struct kvm_s390_interrupt { 376struct kvm_s390_interrupt {
376 __u32 type; 377 __u32 type;
@@ -463,7 +464,7 @@ struct kvm_ppc_pvinfo {
463#define KVM_CAP_VAPIC 6 464#define KVM_CAP_VAPIC 6
464#define KVM_CAP_EXT_CPUID 7 465#define KVM_CAP_EXT_CPUID 7
465#define KVM_CAP_CLOCKSOURCE 8 466#define KVM_CAP_CLOCKSOURCE 8
466#define KVM_CAP_NR_VCPUS 9 /* returns max vcpus per vm */ 467#define KVM_CAP_NR_VCPUS 9 /* returns recommended max vcpus per vm */
467#define KVM_CAP_NR_MEMSLOTS 10 /* returns max memory slots per vm */ 468#define KVM_CAP_NR_MEMSLOTS 10 /* returns max memory slots per vm */
468#define KVM_CAP_PIT 11 469#define KVM_CAP_PIT 11
469#define KVM_CAP_NOP_IO_DELAY 12 470#define KVM_CAP_NOP_IO_DELAY 12
@@ -553,6 +554,9 @@ struct kvm_ppc_pvinfo {
553#define KVM_CAP_SPAPR_TCE 63 554#define KVM_CAP_SPAPR_TCE 63
554#define KVM_CAP_PPC_SMT 64 555#define KVM_CAP_PPC_SMT 64
555#define KVM_CAP_PPC_RMA 65 556#define KVM_CAP_PPC_RMA 65
557#define KVM_CAP_MAX_VCPUS 66 /* returns max vcpus per vm */
558#define KVM_CAP_PPC_HIOR 67
559#define KVM_CAP_PPC_PAPR 68
556#define KVM_CAP_S390_GMAP 71 560#define KVM_CAP_S390_GMAP 71
557 561
558#ifdef KVM_CAP_IRQ_ROUTING 562#ifdef KVM_CAP_IRQ_ROUTING
diff --git a/include/linux/kvm_host.h b/include/linux/kvm_host.h
index eabb21a30c34..d52623199978 100644
--- a/include/linux/kvm_host.h
+++ b/include/linux/kvm_host.h
@@ -18,6 +18,7 @@
18#include <linux/msi.h> 18#include <linux/msi.h>
19#include <linux/slab.h> 19#include <linux/slab.h>
20#include <linux/rcupdate.h> 20#include <linux/rcupdate.h>
21#include <linux/ratelimit.h>
21#include <asm/signal.h> 22#include <asm/signal.h>
22 23
23#include <linux/kvm.h> 24#include <linux/kvm.h>
@@ -48,6 +49,7 @@
48#define KVM_REQ_EVENT 11 49#define KVM_REQ_EVENT 11
49#define KVM_REQ_APF_HALT 12 50#define KVM_REQ_APF_HALT 12
50#define KVM_REQ_STEAL_UPDATE 13 51#define KVM_REQ_STEAL_UPDATE 13
52#define KVM_REQ_NMI 14
51 53
52#define KVM_USERSPACE_IRQ_SOURCE_ID 0 54#define KVM_USERSPACE_IRQ_SOURCE_ID 0
53 55
@@ -55,16 +57,16 @@ struct kvm;
55struct kvm_vcpu; 57struct kvm_vcpu;
56extern struct kmem_cache *kvm_vcpu_cache; 58extern struct kmem_cache *kvm_vcpu_cache;
57 59
58/* 60struct kvm_io_range {
59 * It would be nice to use something smarter than a linear search, TBD... 61 gpa_t addr;
60 * Thankfully we dont expect many devices to register (famous last words :), 62 int len;
61 * so until then it will suffice. At least its abstracted so we can change 63 struct kvm_io_device *dev;
62 * in one place. 64};
63 */ 65
64struct kvm_io_bus { 66struct kvm_io_bus {
65 int dev_count; 67 int dev_count;
66#define NR_IOBUS_DEVS 200 68#define NR_IOBUS_DEVS 300
67 struct kvm_io_device *devs[NR_IOBUS_DEVS]; 69 struct kvm_io_range range[NR_IOBUS_DEVS];
68}; 70};
69 71
70enum kvm_bus { 72enum kvm_bus {
@@ -77,8 +79,8 @@ int kvm_io_bus_write(struct kvm *kvm, enum kvm_bus bus_idx, gpa_t addr,
77 int len, const void *val); 79 int len, const void *val);
78int kvm_io_bus_read(struct kvm *kvm, enum kvm_bus bus_idx, gpa_t addr, int len, 80int kvm_io_bus_read(struct kvm *kvm, enum kvm_bus bus_idx, gpa_t addr, int len,
79 void *val); 81 void *val);
80int kvm_io_bus_register_dev(struct kvm *kvm, enum kvm_bus bus_idx, 82int kvm_io_bus_register_dev(struct kvm *kvm, enum kvm_bus bus_idx, gpa_t addr,
81 struct kvm_io_device *dev); 83 int len, struct kvm_io_device *dev);
82int kvm_io_bus_unregister_dev(struct kvm *kvm, enum kvm_bus bus_idx, 84int kvm_io_bus_unregister_dev(struct kvm *kvm, enum kvm_bus bus_idx,
83 struct kvm_io_device *dev); 85 struct kvm_io_device *dev);
84 86
@@ -256,8 +258,9 @@ struct kvm {
256 struct kvm_arch arch; 258 struct kvm_arch arch;
257 atomic_t users_count; 259 atomic_t users_count;
258#ifdef KVM_COALESCED_MMIO_PAGE_OFFSET 260#ifdef KVM_COALESCED_MMIO_PAGE_OFFSET
259 struct kvm_coalesced_mmio_dev *coalesced_mmio_dev;
260 struct kvm_coalesced_mmio_ring *coalesced_mmio_ring; 261 struct kvm_coalesced_mmio_ring *coalesced_mmio_ring;
262 spinlock_t ring_lock;
263 struct list_head coalesced_zones;
261#endif 264#endif
262 265
263 struct mutex irq_lock; 266 struct mutex irq_lock;
@@ -281,11 +284,8 @@ struct kvm {
281 284
282/* The guest did something we don't support. */ 285/* The guest did something we don't support. */
283#define pr_unimpl(vcpu, fmt, ...) \ 286#define pr_unimpl(vcpu, fmt, ...) \
284 do { \ 287 pr_err_ratelimited("kvm: %i: cpu%i " fmt, \
285 if (printk_ratelimit()) \ 288 current->tgid, (vcpu)->vcpu_id , ## __VA_ARGS__)
286 printk(KERN_ERR "kvm: %i: cpu%i " fmt, \
287 current->tgid, (vcpu)->vcpu_id , ## __VA_ARGS__); \
288 } while (0)
289 289
290#define kvm_printf(kvm, fmt ...) printk(KERN_DEBUG fmt) 290#define kvm_printf(kvm, fmt ...) printk(KERN_DEBUG fmt)
291#define vcpu_printf(vcpu, fmt...) kvm_printf(vcpu->kvm, fmt) 291#define vcpu_printf(vcpu, fmt...) kvm_printf(vcpu->kvm, fmt)
diff --git a/include/linux/l2tp.h b/include/linux/l2tp.h
index 4bdb31df8e72..e77d7f9bb246 100644
--- a/include/linux/l2tp.h
+++ b/include/linux/l2tp.h
@@ -8,8 +8,8 @@
8#define _LINUX_L2TP_H_ 8#define _LINUX_L2TP_H_
9 9
10#include <linux/types.h> 10#include <linux/types.h>
11#ifdef __KERNEL__
12#include <linux/socket.h> 11#include <linux/socket.h>
12#ifdef __KERNEL__
13#include <linux/in.h> 13#include <linux/in.h>
14#else 14#else
15#include <netinet/in.h> 15#include <netinet/in.h>
@@ -26,14 +26,15 @@
26#define __SOCK_SIZE__ 16 /* sizeof(struct sockaddr) */ 26#define __SOCK_SIZE__ 16 /* sizeof(struct sockaddr) */
27struct sockaddr_l2tpip { 27struct sockaddr_l2tpip {
28 /* The first fields must match struct sockaddr_in */ 28 /* The first fields must match struct sockaddr_in */
29 sa_family_t l2tp_family; /* AF_INET */ 29 __kernel_sa_family_t l2tp_family; /* AF_INET */
30 __be16 l2tp_unused; /* INET port number (unused) */ 30 __be16 l2tp_unused; /* INET port number (unused) */
31 struct in_addr l2tp_addr; /* Internet address */ 31 struct in_addr l2tp_addr; /* Internet address */
32 32
33 __u32 l2tp_conn_id; /* Connection ID of tunnel */ 33 __u32 l2tp_conn_id; /* Connection ID of tunnel */
34 34
35 /* Pad to size of `struct sockaddr'. */ 35 /* Pad to size of `struct sockaddr'. */
36 unsigned char __pad[sizeof(struct sockaddr) - sizeof(sa_family_t) - 36 unsigned char __pad[sizeof(struct sockaddr) -
37 sizeof(__kernel_sa_family_t) -
37 sizeof(__be16) - sizeof(struct in_addr) - 38 sizeof(__be16) - sizeof(struct in_addr) -
38 sizeof(__u32)]; 39 sizeof(__u32)];
39}; 40};
diff --git a/include/linux/lapb.h b/include/linux/lapb.h
index ce709e1885cc..873c1eb635e4 100644
--- a/include/linux/lapb.h
+++ b/include/linux/lapb.h
@@ -44,7 +44,8 @@ struct lapb_parms_struct {
44 unsigned int mode; 44 unsigned int mode;
45}; 45};
46 46
47extern int lapb_register(struct net_device *dev, struct lapb_register_struct *callbacks); 47extern int lapb_register(struct net_device *dev,
48 const struct lapb_register_struct *callbacks);
48extern int lapb_unregister(struct net_device *dev); 49extern int lapb_unregister(struct net_device *dev);
49extern int lapb_getparms(struct net_device *dev, struct lapb_parms_struct *parms); 50extern int lapb_getparms(struct net_device *dev, struct lapb_parms_struct *parms);
50extern int lapb_setparms(struct net_device *dev, struct lapb_parms_struct *parms); 51extern int lapb_setparms(struct net_device *dev, struct lapb_parms_struct *parms);
diff --git a/include/linux/libata.h b/include/linux/libata.h
index efd6f9800762..cafc09a64fe4 100644
--- a/include/linux/libata.h
+++ b/include/linux/libata.h
@@ -1052,6 +1052,8 @@ extern int ata_scsi_slave_config(struct scsi_device *sdev);
1052extern void ata_scsi_slave_destroy(struct scsi_device *sdev); 1052extern void ata_scsi_slave_destroy(struct scsi_device *sdev);
1053extern int ata_scsi_change_queue_depth(struct scsi_device *sdev, 1053extern int ata_scsi_change_queue_depth(struct scsi_device *sdev,
1054 int queue_depth, int reason); 1054 int queue_depth, int reason);
1055extern int __ata_change_queue_depth(struct ata_port *ap, struct scsi_device *sdev,
1056 int queue_depth, int reason);
1055extern struct ata_device *ata_dev_pair(struct ata_device *adev); 1057extern struct ata_device *ata_dev_pair(struct ata_device *adev);
1056extern int ata_do_set_mode(struct ata_link *link, struct ata_device **r_failed_dev); 1058extern int ata_do_set_mode(struct ata_link *link, struct ata_device **r_failed_dev);
1057extern void ata_scsi_port_error_handler(struct Scsi_Host *host, struct ata_port *ap); 1059extern void ata_scsi_port_error_handler(struct Scsi_Host *host, struct ata_port *ap);
@@ -1254,13 +1256,13 @@ static inline int sata_srst_pmp(struct ata_link *link)
1254/* 1256/*
1255 * printk helpers 1257 * printk helpers
1256 */ 1258 */
1257__attribute__((format (printf, 3, 4))) 1259__printf(3, 4)
1258int ata_port_printk(const struct ata_port *ap, const char *level, 1260int ata_port_printk(const struct ata_port *ap, const char *level,
1259 const char *fmt, ...); 1261 const char *fmt, ...);
1260__attribute__((format (printf, 3, 4))) 1262__printf(3, 4)
1261int ata_link_printk(const struct ata_link *link, const char *level, 1263int ata_link_printk(const struct ata_link *link, const char *level,
1262 const char *fmt, ...); 1264 const char *fmt, ...);
1263__attribute__((format (printf, 3, 4))) 1265__printf(3, 4)
1264int ata_dev_printk(const struct ata_device *dev, const char *level, 1266int ata_dev_printk(const struct ata_device *dev, const char *level,
1265 const char *fmt, ...); 1267 const char *fmt, ...);
1266 1268
@@ -1302,10 +1304,10 @@ void ata_print_version(const struct device *dev, const char *version);
1302/* 1304/*
1303 * ata_eh_info helpers 1305 * ata_eh_info helpers
1304 */ 1306 */
1305extern void __ata_ehi_push_desc(struct ata_eh_info *ehi, const char *fmt, ...) 1307extern __printf(2, 3)
1306 __attribute__ ((format (printf, 2, 3))); 1308void __ata_ehi_push_desc(struct ata_eh_info *ehi, const char *fmt, ...);
1307extern void ata_ehi_push_desc(struct ata_eh_info *ehi, const char *fmt, ...) 1309extern __printf(2, 3)
1308 __attribute__ ((format (printf, 2, 3))); 1310void ata_ehi_push_desc(struct ata_eh_info *ehi, const char *fmt, ...);
1309extern void ata_ehi_clear_desc(struct ata_eh_info *ehi); 1311extern void ata_ehi_clear_desc(struct ata_eh_info *ehi);
1310 1312
1311static inline void ata_ehi_hotplugged(struct ata_eh_info *ehi) 1313static inline void ata_ehi_hotplugged(struct ata_eh_info *ehi)
@@ -1319,8 +1321,8 @@ static inline void ata_ehi_hotplugged(struct ata_eh_info *ehi)
1319/* 1321/*
1320 * port description helpers 1322 * port description helpers
1321 */ 1323 */
1322extern void ata_port_desc(struct ata_port *ap, const char *fmt, ...) 1324extern __printf(2, 3)
1323 __attribute__ ((format (printf, 2, 3))); 1325void ata_port_desc(struct ata_port *ap, const char *fmt, ...);
1324#ifdef CONFIG_PCI 1326#ifdef CONFIG_PCI
1325extern void ata_port_pbar_desc(struct ata_port *ap, int bar, ssize_t offset, 1327extern void ata_port_pbar_desc(struct ata_port *ap, int bar, ssize_t offset,
1326 const char *name); 1328 const char *name);
diff --git a/include/linux/lis3lv02d.h b/include/linux/lis3lv02d.h
index d4292c8431e0..f1664c636af0 100644
--- a/include/linux/lis3lv02d.h
+++ b/include/linux/lis3lv02d.h
@@ -113,7 +113,6 @@ struct lis3lv02d_platform_data {
113 s8 axis_x; 113 s8 axis_x;
114 s8 axis_y; 114 s8 axis_y;
115 s8 axis_z; 115 s8 axis_z;
116#define LIS3_USE_REGULATOR_CTRL 0x01
117#define LIS3_USE_BLOCK_READ 0x02 116#define LIS3_USE_BLOCK_READ 0x02
118 u16 driver_features; 117 u16 driver_features;
119 int default_rate; 118 int default_rate;
diff --git a/include/linux/llc.h b/include/linux/llc.h
index ad7074ba81af..a2418ae13ee9 100644
--- a/include/linux/llc.h
+++ b/include/linux/llc.h
@@ -12,16 +12,20 @@
12 * 12 *
13 * See the GNU General Public License for more details. 13 * See the GNU General Public License for more details.
14 */ 14 */
15
16#include <linux/socket.h>
17
15#define __LLC_SOCK_SIZE__ 16 /* sizeof(sockaddr_llc), word align. */ 18#define __LLC_SOCK_SIZE__ 16 /* sizeof(sockaddr_llc), word align. */
16struct sockaddr_llc { 19struct sockaddr_llc {
17 sa_family_t sllc_family; /* AF_LLC */ 20 __kernel_sa_family_t sllc_family; /* AF_LLC */
18 sa_family_t sllc_arphrd; /* ARPHRD_ETHER */ 21 __kernel_sa_family_t sllc_arphrd; /* ARPHRD_ETHER */
19 unsigned char sllc_test; 22 unsigned char sllc_test;
20 unsigned char sllc_xid; 23 unsigned char sllc_xid;
21 unsigned char sllc_ua; /* UA data, only for SOCK_STREAM. */ 24 unsigned char sllc_ua; /* UA data, only for SOCK_STREAM. */
22 unsigned char sllc_sap; 25 unsigned char sllc_sap;
23 unsigned char sllc_mac[IFHWADDRLEN]; 26 unsigned char sllc_mac[IFHWADDRLEN];
24 unsigned char __pad[__LLC_SOCK_SIZE__ - sizeof(sa_family_t) * 2 - 27 unsigned char __pad[__LLC_SOCK_SIZE__ -
28 sizeof(__kernel_sa_family_t) * 2 -
25 sizeof(unsigned char) * 4 - IFHWADDRLEN]; 29 sizeof(unsigned char) * 4 - IFHWADDRLEN];
26}; 30};
27 31
diff --git a/include/linux/llist.h b/include/linux/llist.h
index aa0c8b5b3cd0..801b44b07aac 100644
--- a/include/linux/llist.h
+++ b/include/linux/llist.h
@@ -35,10 +35,30 @@
35 * 35 *
36 * The basic atomic operation of this list is cmpxchg on long. On 36 * The basic atomic operation of this list is cmpxchg on long. On
37 * architectures that don't have NMI-safe cmpxchg implementation, the 37 * architectures that don't have NMI-safe cmpxchg implementation, the
38 * list can NOT be used in NMI handler. So code uses the list in NMI 38 * list can NOT be used in NMI handlers. So code that uses the list in
39 * handler should depend on CONFIG_ARCH_HAVE_NMI_SAFE_CMPXCHG. 39 * an NMI handler should depend on CONFIG_ARCH_HAVE_NMI_SAFE_CMPXCHG.
40 *
41 * Copyright 2010,2011 Intel Corp.
42 * Author: Huang Ying <ying.huang@intel.com>
43 *
44 * This program is free software; you can redistribute it and/or
45 * modify it under the terms of the GNU General Public License version
46 * 2 as published by the Free Software Foundation;
47 *
48 * This program is distributed in the hope that it will be useful,
49 * but WITHOUT ANY WARRANTY; without even the implied warranty of
50 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
51 * GNU General Public License for more details.
52 *
53 * You should have received a copy of the GNU General Public License
54 * along with this program; if not, write to the Free Software
55 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
40 */ 56 */
41 57
58#include <linux/kernel.h>
59#include <asm/system.h>
60#include <asm/processor.h>
61
42struct llist_head { 62struct llist_head {
43 struct llist_node *first; 63 struct llist_node *first;
44}; 64};
@@ -113,14 +133,55 @@ static inline void init_llist_head(struct llist_head *list)
113 * test whether the list is empty without deleting something from the 133 * test whether the list is empty without deleting something from the
114 * list. 134 * list.
115 */ 135 */
116static inline int llist_empty(const struct llist_head *head) 136static inline bool llist_empty(const struct llist_head *head)
117{ 137{
118 return ACCESS_ONCE(head->first) == NULL; 138 return ACCESS_ONCE(head->first) == NULL;
119} 139}
120 140
121void llist_add(struct llist_node *new, struct llist_head *head); 141static inline struct llist_node *llist_next(struct llist_node *node)
122void llist_add_batch(struct llist_node *new_first, struct llist_node *new_last, 142{
123 struct llist_head *head); 143 return node->next;
124struct llist_node *llist_del_first(struct llist_head *head); 144}
125struct llist_node *llist_del_all(struct llist_head *head); 145
146/**
147 * llist_add - add a new entry
148 * @new: new entry to be added
149 * @head: the head for your lock-less list
150 *
151 * Returns true if the list was empty prior to adding this entry.
152 */
153static inline bool llist_add(struct llist_node *new, struct llist_head *head)
154{
155 struct llist_node *entry, *old_entry;
156
157 entry = head->first;
158 for (;;) {
159 old_entry = entry;
160 new->next = entry;
161 entry = cmpxchg(&head->first, old_entry, new);
162 if (entry == old_entry)
163 break;
164 }
165
166 return old_entry == NULL;
167}
168
169/**
170 * llist_del_all - delete all entries from lock-less list
171 * @head: the head of lock-less list to delete all entries
172 *
173 * If list is empty, return NULL, otherwise, delete all entries and
174 * return the pointer to the first entry. The order of entries
175 * deleted is from the newest to the oldest added one.
176 */
177static inline struct llist_node *llist_del_all(struct llist_head *head)
178{
179 return xchg(&head->first, NULL);
180}
181
182extern bool llist_add_batch(struct llist_node *new_first,
183 struct llist_node *new_last,
184 struct llist_head *head);
185extern struct llist_node *llist_del_first(struct llist_head *head);
186
126#endif /* LLIST_H */ 187#endif /* LLIST_H */
diff --git a/include/linux/lockdep.h b/include/linux/lockdep.h
index ef820a3c378b..b6a56e37284c 100644
--- a/include/linux/lockdep.h
+++ b/include/linux/lockdep.h
@@ -548,7 +548,7 @@ do { \
548#endif 548#endif
549 549
550#ifdef CONFIG_PROVE_RCU 550#ifdef CONFIG_PROVE_RCU
551extern void lockdep_rcu_dereference(const char *file, const int line); 551void lockdep_rcu_suspicious(const char *file, const int line, const char *s);
552#endif 552#endif
553 553
554#endif /* __LINUX_LOCKDEP_H */ 554#endif /* __LINUX_LOCKDEP_H */
diff --git a/include/linux/memblock.h b/include/linux/memblock.h
index 7525e38c434d..e6b843e16e81 100644
--- a/include/linux/memblock.h
+++ b/include/linux/memblock.h
@@ -80,6 +80,7 @@ extern phys_addr_t __memblock_alloc_base(phys_addr_t size,
80 phys_addr_t align, 80 phys_addr_t align,
81 phys_addr_t max_addr); 81 phys_addr_t max_addr);
82extern phys_addr_t memblock_phys_mem_size(void); 82extern phys_addr_t memblock_phys_mem_size(void);
83extern phys_addr_t memblock_start_of_DRAM(void);
83extern phys_addr_t memblock_end_of_DRAM(void); 84extern phys_addr_t memblock_end_of_DRAM(void);
84extern void memblock_enforce_memory_limit(phys_addr_t memory_limit); 85extern void memblock_enforce_memory_limit(phys_addr_t memory_limit);
85extern int memblock_is_memory(phys_addr_t addr); 86extern int memblock_is_memory(phys_addr_t addr);
diff --git a/include/linux/memcontrol.h b/include/linux/memcontrol.h
index 343bd7661f2a..ac797fa03ef8 100644
--- a/include/linux/memcontrol.h
+++ b/include/linux/memcontrol.h
@@ -35,7 +35,8 @@ enum mem_cgroup_page_stat_item {
35extern unsigned long mem_cgroup_isolate_pages(unsigned long nr_to_scan, 35extern unsigned long mem_cgroup_isolate_pages(unsigned long nr_to_scan,
36 struct list_head *dst, 36 struct list_head *dst,
37 unsigned long *scanned, int order, 37 unsigned long *scanned, int order,
38 int mode, struct zone *z, 38 isolate_mode_t mode,
39 struct zone *z,
39 struct mem_cgroup *mem_cont, 40 struct mem_cgroup *mem_cont,
40 int active, int file); 41 int active, int file);
41 42
diff --git a/include/linux/mfd/tps6586x.h b/include/linux/mfd/tps6586x.h
index b6bab1b04e25..b19176eab44d 100644
--- a/include/linux/mfd/tps6586x.h
+++ b/include/linux/mfd/tps6586x.h
@@ -1,6 +1,18 @@
1#ifndef __LINUX_MFD_TPS6586X_H 1#ifndef __LINUX_MFD_TPS6586X_H
2#define __LINUX_MFD_TPS6586X_H 2#define __LINUX_MFD_TPS6586X_H
3 3
4#define TPS6586X_SLEW_RATE_INSTANTLY 0x00
5#define TPS6586X_SLEW_RATE_110UV 0x01
6#define TPS6586X_SLEW_RATE_220UV 0x02
7#define TPS6586X_SLEW_RATE_440UV 0x03
8#define TPS6586X_SLEW_RATE_880UV 0x04
9#define TPS6586X_SLEW_RATE_1760UV 0x05
10#define TPS6586X_SLEW_RATE_3520UV 0x06
11#define TPS6586X_SLEW_RATE_7040UV 0x07
12
13#define TPS6586X_SLEW_RATE_SET 0x08
14#define TPS6586X_SLEW_RATE_MASK 0x07
15
4enum { 16enum {
5 TPS6586X_ID_SM_0, 17 TPS6586X_ID_SM_0,
6 TPS6586X_ID_SM_1, 18 TPS6586X_ID_SM_1,
@@ -48,6 +60,10 @@ enum {
48 TPS6586X_INT_RTC_ALM2, 60 TPS6586X_INT_RTC_ALM2,
49}; 61};
50 62
63struct tps6586x_settings {
64 int slew_rate;
65};
66
51struct tps6586x_subdev_info { 67struct tps6586x_subdev_info {
52 int id; 68 int id;
53 const char *name; 69 const char *name;
diff --git a/include/linux/mfd/twl6040.h b/include/linux/mfd/twl6040.h
index 4c806f6d663e..2463c2619596 100644
--- a/include/linux/mfd/twl6040.h
+++ b/include/linux/mfd/twl6040.h
@@ -68,11 +68,6 @@
68#define TWL6040_REG_ACCCTL 0x2D 68#define TWL6040_REG_ACCCTL 0x2D
69#define TWL6040_REG_STATUS 0x2E 69#define TWL6040_REG_STATUS 0x2E
70 70
71#define TWL6040_CACHEREGNUM (TWL6040_REG_STATUS + 1)
72
73#define TWL6040_VIOREGNUM 18
74#define TWL6040_VDDREGNUM 21
75
76/* INTID (0x03) fields */ 71/* INTID (0x03) fields */
77 72
78#define TWL6040_THINT 0x01 73#define TWL6040_THINT 0x01
@@ -125,34 +120,24 @@
125#define TWL6040_LPLLFIN 0x08 120#define TWL6040_LPLLFIN 0x08
126#define TWL6040_HPLLSEL 0x10 121#define TWL6040_HPLLSEL 0x10
127 122
128/* HSLCTL (0x10) fields */ 123/* HSLCTL/R (0x10/0x11) fields */
129
130#define TWL6040_HSDACMODEL 0x02
131#define TWL6040_HSDRVMODEL 0x08
132
133/* HSRCTL (0x11) fields */
134 124
135#define TWL6040_HSDACMODER 0x02 125#define TWL6040_HSDACENA (1 << 0)
136#define TWL6040_HSDRVMODER 0x08 126#define TWL6040_HSDACMODE (1 << 1)
127#define TWL6040_HSDRVMODE (1 << 3)
137 128
138/* VIBCTLL (0x18) fields */ 129/* VIBCTLL/R (0x18/0x1A) fields */
139 130
140#define TWL6040_VIBENAL 0x01 131#define TWL6040_VIBENA (1 << 0)
141#define TWL6040_VIBCTRLL 0x04 132#define TWL6040_VIBSEL (1 << 1)
142#define TWL6040_VIBCTRLLP 0x08 133#define TWL6040_VIBCTRL (1 << 2)
143#define TWL6040_VIBCTRLLN 0x10 134#define TWL6040_VIBCTRL_P (1 << 3)
135#define TWL6040_VIBCTRL_N (1 << 4)
144 136
145/* VIBDATL (0x19) fields */ 137/* VIBDATL/R (0x19/0x1B) fields */
146 138
147#define TWL6040_VIBDAT_MAX 0x64 139#define TWL6040_VIBDAT_MAX 0x64
148 140
149/* VIBCTLR (0x1A) fields */
150
151#define TWL6040_VIBENAR 0x01
152#define TWL6040_VIBCTRLR 0x04
153#define TWL6040_VIBCTRLRP 0x08
154#define TWL6040_VIBCTRLRN 0x10
155
156/* GPOCTL (0x1E) fields */ 141/* GPOCTL (0x1E) fields */
157 142
158#define TWL6040_GPO1 0x01 143#define TWL6040_GPO1 0x01
@@ -200,6 +185,7 @@ struct twl6040 {
200 int audpwron; 185 int audpwron;
201 int power_count; 186 int power_count;
202 int rev; 187 int rev;
188 u8 vibra_ctrl_cache[2];
203 189
204 int pll; 190 int pll;
205 unsigned int sysclk; 191 unsigned int sysclk;
@@ -224,5 +210,13 @@ int twl6040_get_pll(struct twl6040 *twl6040);
224unsigned int twl6040_get_sysclk(struct twl6040 *twl6040); 210unsigned int twl6040_get_sysclk(struct twl6040 *twl6040);
225int twl6040_irq_init(struct twl6040 *twl6040); 211int twl6040_irq_init(struct twl6040 *twl6040);
226void twl6040_irq_exit(struct twl6040 *twl6040); 212void twl6040_irq_exit(struct twl6040 *twl6040);
213/* Get the combined status of the vibra control register */
214int twl6040_get_vibralr_status(struct twl6040 *twl6040);
215
216static inline int twl6040_get_revid(struct twl6040 *twl6040)
217{
218 return twl6040->rev;
219}
220
227 221
228#endif /* End of __TWL6040_CODEC_H__ */ 222#endif /* End of __TWL6040_CODEC_H__ */
diff --git a/include/linux/mfd/wm831x/core.h b/include/linux/mfd/wm831x/core.h
index 8dda8ded5cda..ed8fe0d04097 100644
--- a/include/linux/mfd/wm831x/core.h
+++ b/include/linux/mfd/wm831x/core.h
@@ -18,6 +18,7 @@
18#include <linux/completion.h> 18#include <linux/completion.h>
19#include <linux/interrupt.h> 19#include <linux/interrupt.h>
20#include <linux/list.h> 20#include <linux/list.h>
21#include <linux/regmap.h>
21 22
22/* 23/*
23 * Register values. 24 * Register values.
@@ -361,12 +362,8 @@ struct wm831x {
361 struct mutex io_lock; 362 struct mutex io_lock;
362 363
363 struct device *dev; 364 struct device *dev;
364 int (*read_dev)(struct wm831x *wm831x, unsigned short reg,
365 int bytes, void *dest);
366 int (*write_dev)(struct wm831x *wm831x, unsigned short reg,
367 int bytes, void *src);
368 365
369 void *control_data; 366 struct regmap *regmap;
370 367
371 int irq; /* Our chip IRQ */ 368 int irq; /* Our chip IRQ */
372 struct mutex irq_lock; 369 struct mutex irq_lock;
@@ -374,6 +371,8 @@ struct wm831x {
374 int irq_masks_cur[WM831X_NUM_IRQ_REGS]; /* Currently active value */ 371 int irq_masks_cur[WM831X_NUM_IRQ_REGS]; /* Currently active value */
375 int irq_masks_cache[WM831X_NUM_IRQ_REGS]; /* Cached hardware value */ 372 int irq_masks_cache[WM831X_NUM_IRQ_REGS]; /* Cached hardware value */
376 373
374 bool soft_shutdown;
375
377 /* Chip revision based flags */ 376 /* Chip revision based flags */
378 unsigned has_gpio_ena:1; /* Has GPIO enable bit */ 377 unsigned has_gpio_ena:1; /* Has GPIO enable bit */
379 unsigned has_cs_sts:1; /* Has current sink status bit */ 378 unsigned has_cs_sts:1; /* Has current sink status bit */
@@ -412,8 +411,11 @@ int wm831x_bulk_read(struct wm831x *wm831x, unsigned short reg,
412int wm831x_device_init(struct wm831x *wm831x, unsigned long id, int irq); 411int wm831x_device_init(struct wm831x *wm831x, unsigned long id, int irq);
413void wm831x_device_exit(struct wm831x *wm831x); 412void wm831x_device_exit(struct wm831x *wm831x);
414int wm831x_device_suspend(struct wm831x *wm831x); 413int wm831x_device_suspend(struct wm831x *wm831x);
414void wm831x_device_shutdown(struct wm831x *wm831x);
415int wm831x_irq_init(struct wm831x *wm831x, int irq); 415int wm831x_irq_init(struct wm831x *wm831x, int irq);
416void wm831x_irq_exit(struct wm831x *wm831x); 416void wm831x_irq_exit(struct wm831x *wm831x);
417void wm831x_auxadc_init(struct wm831x *wm831x); 417void wm831x_auxadc_init(struct wm831x *wm831x);
418 418
419extern struct regmap_config wm831x_regmap_config;
420
419#endif 421#endif
diff --git a/include/linux/mfd/wm831x/pdata.h b/include/linux/mfd/wm831x/pdata.h
index 0ba24599fe51..1d7a3f7b3b5d 100644
--- a/include/linux/mfd/wm831x/pdata.h
+++ b/include/linux/mfd/wm831x/pdata.h
@@ -123,6 +123,9 @@ struct wm831x_pdata {
123 /** Disable the touchscreen */ 123 /** Disable the touchscreen */
124 bool disable_touch; 124 bool disable_touch;
125 125
126 /** The driver should initiate a power off sequence during shutdown */
127 bool soft_shutdown;
128
126 int irq_base; 129 int irq_base;
127 int gpio_base; 130 int gpio_base;
128 int gpio_defaults[WM831X_GPIO_NUM]; 131 int gpio_defaults[WM831X_GPIO_NUM];
diff --git a/include/linux/mfd/wm8400-private.h b/include/linux/mfd/wm8400-private.h
index 2aab4e93a5c9..0147b6968510 100644
--- a/include/linux/mfd/wm8400-private.h
+++ b/include/linux/mfd/wm8400-private.h
@@ -25,16 +25,15 @@
25#include <linux/mutex.h> 25#include <linux/mutex.h>
26#include <linux/platform_device.h> 26#include <linux/platform_device.h>
27 27
28struct regmap;
29
28#define WM8400_REGISTER_COUNT 0x55 30#define WM8400_REGISTER_COUNT 0x55
29 31
30struct wm8400 { 32struct wm8400 {
31 struct device *dev; 33 struct device *dev;
32 34
33 int (*read_dev)(void *data, char reg, int count, u16 *dst);
34 int (*write_dev)(void *data, char reg, int count, const u16 *src);
35
36 struct mutex io_lock; 35 struct mutex io_lock;
37 void *io_data; 36 struct regmap *regmap;
38 37
39 u16 reg_cache[WM8400_REGISTER_COUNT]; 38 u16 reg_cache[WM8400_REGISTER_COUNT];
40 39
diff --git a/include/linux/mfd/wm8994/core.h b/include/linux/mfd/wm8994/core.h
index f0b69cdae41c..626809147624 100644
--- a/include/linux/mfd/wm8994/core.h
+++ b/include/linux/mfd/wm8994/core.h
@@ -20,10 +20,12 @@
20enum wm8994_type { 20enum wm8994_type {
21 WM8994 = 0, 21 WM8994 = 0,
22 WM8958 = 1, 22 WM8958 = 1,
23 WM1811 = 2,
23}; 24};
24 25
25struct regulator_dev; 26struct regulator_dev;
26struct regulator_bulk_data; 27struct regulator_bulk_data;
28struct regmap;
27 29
28#define WM8994_NUM_GPIO_REGS 11 30#define WM8994_NUM_GPIO_REGS 11
29#define WM8994_NUM_LDO_REGS 2 31#define WM8994_NUM_LDO_REGS 2
@@ -50,18 +52,12 @@ struct regulator_bulk_data;
50#define WM8994_IRQ_GPIO(x) (x + WM8994_IRQ_TEMP_WARN) 52#define WM8994_IRQ_GPIO(x) (x + WM8994_IRQ_TEMP_WARN)
51 53
52struct wm8994 { 54struct wm8994 {
53 struct mutex io_lock;
54 struct mutex irq_lock; 55 struct mutex irq_lock;
55 56
56 enum wm8994_type type; 57 enum wm8994_type type;
57 58
58 struct device *dev; 59 struct device *dev;
59 int (*read_dev)(struct wm8994 *wm8994, unsigned short reg, 60 struct regmap *regmap;
60 int bytes, void *dest);
61 int (*write_dev)(struct wm8994 *wm8994, unsigned short reg,
62 int bytes, const void *src);
63
64 void *control_data;
65 61
66 int gpio_base; 62 int gpio_base;
67 int irq_base; 63 int irq_base;
diff --git a/include/linux/mfd/wm8994/registers.h b/include/linux/mfd/wm8994/registers.h
index f3ee84284670..fae295048a8b 100644
--- a/include/linux/mfd/wm8994/registers.h
+++ b/include/linux/mfd/wm8994/registers.h
@@ -72,6 +72,7 @@
72#define WM8994_DC_SERVO_2 0x55 72#define WM8994_DC_SERVO_2 0x55
73#define WM8994_DC_SERVO_4 0x57 73#define WM8994_DC_SERVO_4 0x57
74#define WM8994_DC_SERVO_READBACK 0x58 74#define WM8994_DC_SERVO_READBACK 0x58
75#define WM8994_DC_SERVO_4E 0x59
75#define WM8994_ANALOGUE_HP_1 0x60 76#define WM8994_ANALOGUE_HP_1 0x60
76#define WM8958_MIC_DETECT_1 0xD0 77#define WM8958_MIC_DETECT_1 0xD0
77#define WM8958_MIC_DETECT_2 0xD1 78#define WM8958_MIC_DETECT_2 0xD1
@@ -133,6 +134,8 @@
133#define WM8994_AIF1_DAC1_FILTERS_2 0x421 134#define WM8994_AIF1_DAC1_FILTERS_2 0x421
134#define WM8994_AIF1_DAC2_FILTERS_1 0x422 135#define WM8994_AIF1_DAC2_FILTERS_1 0x422
135#define WM8994_AIF1_DAC2_FILTERS_2 0x423 136#define WM8994_AIF1_DAC2_FILTERS_2 0x423
137#define WM8958_AIF1_DAC1_NOISE_GATE 0x430
138#define WM8958_AIF1_DAC2_NOISE_GATE 0x431
136#define WM8994_AIF1_DRC1_1 0x440 139#define WM8994_AIF1_DRC1_1 0x440
137#define WM8994_AIF1_DRC1_2 0x441 140#define WM8994_AIF1_DRC1_2 0x441
138#define WM8994_AIF1_DRC1_3 0x442 141#define WM8994_AIF1_DRC1_3 0x442
@@ -190,6 +193,7 @@
190#define WM8994_AIF2_ADC_FILTERS 0x510 193#define WM8994_AIF2_ADC_FILTERS 0x510
191#define WM8994_AIF2_DAC_FILTERS_1 0x520 194#define WM8994_AIF2_DAC_FILTERS_1 0x520
192#define WM8994_AIF2_DAC_FILTERS_2 0x521 195#define WM8994_AIF2_DAC_FILTERS_2 0x521
196#define WM8958_AIF2_DAC_NOISE_GATE 0x530
193#define WM8994_AIF2_DRC_1 0x540 197#define WM8994_AIF2_DRC_1 0x540
194#define WM8994_AIF2_DRC_2 0x541 198#define WM8994_AIF2_DRC_2 0x541
195#define WM8994_AIF2_DRC_3 0x542 199#define WM8994_AIF2_DRC_3 0x542
@@ -1921,6 +1925,44 @@
1921#define WM8994_LDO2_DISCH_WIDTH 1 /* LDO2_DISCH */ 1925#define WM8994_LDO2_DISCH_WIDTH 1 /* LDO2_DISCH */
1922 1926
1923/* 1927/*
1928 * R61 (0x3D) - MICBIAS1
1929 */
1930#define WM8958_MICB1_RATE 0x0020 /* MICB1_RATE */
1931#define WM8958_MICB1_RATE_MASK 0x0020 /* MICB1_RATE */
1932#define WM8958_MICB1_RATE_SHIFT 5 /* MICB1_RATE */
1933#define WM8958_MICB1_RATE_WIDTH 1 /* MICB1_RATE */
1934#define WM8958_MICB1_MODE 0x0010 /* MICB1_MODE */
1935#define WM8958_MICB1_MODE_MASK 0x0010 /* MICB1_MODE */
1936#define WM8958_MICB1_MODE_SHIFT 4 /* MICB1_MODE */
1937#define WM8958_MICB1_MODE_WIDTH 1 /* MICB1_MODE */
1938#define WM8958_MICB1_LVL_MASK 0x000E /* MICB1_LVL - [3:1] */
1939#define WM8958_MICB1_LVL_SHIFT 1 /* MICB1_LVL - [3:1] */
1940#define WM8958_MICB1_LVL_WIDTH 3 /* MICB1_LVL - [3:1] */
1941#define WM8958_MICB1_DISCH 0x0001 /* MICB1_DISCH */
1942#define WM8958_MICB1_DISCH_MASK 0x0001 /* MICB1_DISCH */
1943#define WM8958_MICB1_DISCH_SHIFT 0 /* MICB1_DISCH */
1944#define WM8958_MICB1_DISCH_WIDTH 1 /* MICB1_DISCH */
1945
1946/*
1947 * R62 (0x3E) - MICBIAS2
1948 */
1949#define WM8958_MICB2_RATE 0x0020 /* MICB2_RATE */
1950#define WM8958_MICB2_RATE_MASK 0x0020 /* MICB2_RATE */
1951#define WM8958_MICB2_RATE_SHIFT 5 /* MICB2_RATE */
1952#define WM8958_MICB2_RATE_WIDTH 1 /* MICB2_RATE */
1953#define WM8958_MICB2_MODE 0x0010 /* MICB2_MODE */
1954#define WM8958_MICB2_MODE_MASK 0x0010 /* MICB2_MODE */
1955#define WM8958_MICB2_MODE_SHIFT 4 /* MICB2_MODE */
1956#define WM8958_MICB2_MODE_WIDTH 1 /* MICB2_MODE */
1957#define WM8958_MICB2_LVL_MASK 0x000E /* MICB2_LVL - [3:1] */
1958#define WM8958_MICB2_LVL_SHIFT 1 /* MICB2_LVL - [3:1] */
1959#define WM8958_MICB2_LVL_WIDTH 3 /* MICB2_LVL - [3:1] */
1960#define WM8958_MICB2_DISCH 0x0001 /* MICB2_DISCH */
1961#define WM8958_MICB2_DISCH_MASK 0x0001 /* MICB2_DISCH */
1962#define WM8958_MICB2_DISCH_SHIFT 0 /* MICB2_DISCH */
1963#define WM8958_MICB2_DISCH_WIDTH 1 /* MICB2_DISCH */
1964
1965/*
1924 * R76 (0x4C) - Charge Pump (1) 1966 * R76 (0x4C) - Charge Pump (1)
1925 */ 1967 */
1926#define WM8994_CP_ENA 0x8000 /* CP_ENA */ 1968#define WM8994_CP_ENA 0x8000 /* CP_ENA */
@@ -2027,6 +2069,10 @@
2027/* 2069/*
2028 * R96 (0x60) - Analogue HP (1) 2070 * R96 (0x60) - Analogue HP (1)
2029 */ 2071 */
2072#define WM1811_HPOUT1_ATTN 0x0100 /* HPOUT1_ATTN */
2073#define WM1811_HPOUT1_ATTN_MASK 0x0100 /* HPOUT1_ATTN */
2074#define WM1811_HPOUT1_ATTN_SHIFT 8 /* HPOUT1_ATTN */
2075#define WM1811_HPOUT1_ATTN_WIDTH 1 /* HPOUT1_ATTN */
2030#define WM8994_HPOUT1L_RMV_SHORT 0x0080 /* HPOUT1L_RMV_SHORT */ 2076#define WM8994_HPOUT1L_RMV_SHORT 0x0080 /* HPOUT1L_RMV_SHORT */
2031#define WM8994_HPOUT1L_RMV_SHORT_MASK 0x0080 /* HPOUT1L_RMV_SHORT */ 2077#define WM8994_HPOUT1L_RMV_SHORT_MASK 0x0080 /* HPOUT1L_RMV_SHORT */
2032#define WM8994_HPOUT1L_RMV_SHORT_SHIFT 7 /* HPOUT1L_RMV_SHORT */ 2078#define WM8994_HPOUT1L_RMV_SHORT_SHIFT 7 /* HPOUT1L_RMV_SHORT */
@@ -2949,6 +2995,34 @@
2949#define WM8994_AIF1DAC2_3D_ENA_WIDTH 1 /* AIF1DAC2_3D_ENA */ 2995#define WM8994_AIF1DAC2_3D_ENA_WIDTH 1 /* AIF1DAC2_3D_ENA */
2950 2996
2951/* 2997/*
2998 * R1072 (0x430) - AIF1 DAC1 Noise Gate
2999 */
3000#define WM8958_AIF1DAC1_NG_HLD_MASK 0x0060 /* AIF1DAC1_NG_HLD - [6:5] */
3001#define WM8958_AIF1DAC1_NG_HLD_SHIFT 5 /* AIF1DAC1_NG_HLD - [6:5] */
3002#define WM8958_AIF1DAC1_NG_HLD_WIDTH 2 /* AIF1DAC1_NG_HLD - [6:5] */
3003#define WM8958_AIF1DAC1_NG_THR_MASK 0x000E /* AIF1DAC1_NG_THR - [3:1] */
3004#define WM8958_AIF1DAC1_NG_THR_SHIFT 1 /* AIF1DAC1_NG_THR - [3:1] */
3005#define WM8958_AIF1DAC1_NG_THR_WIDTH 3 /* AIF1DAC1_NG_THR - [3:1] */
3006#define WM8958_AIF1DAC1_NG_ENA 0x0001 /* AIF1DAC1_NG_ENA */
3007#define WM8958_AIF1DAC1_NG_ENA_MASK 0x0001 /* AIF1DAC1_NG_ENA */
3008#define WM8958_AIF1DAC1_NG_ENA_SHIFT 0 /* AIF1DAC1_NG_ENA */
3009#define WM8958_AIF1DAC1_NG_ENA_WIDTH 1 /* AIF1DAC1_NG_ENA */
3010
3011/*
3012 * R1073 (0x431) - AIF1 DAC2 Noise Gate
3013 */
3014#define WM8958_AIF1DAC2_NG_HLD_MASK 0x0060 /* AIF1DAC2_NG_HLD - [6:5] */
3015#define WM8958_AIF1DAC2_NG_HLD_SHIFT 5 /* AIF1DAC2_NG_HLD - [6:5] */
3016#define WM8958_AIF1DAC2_NG_HLD_WIDTH 2 /* AIF1DAC2_NG_HLD - [6:5] */
3017#define WM8958_AIF1DAC2_NG_THR_MASK 0x000E /* AIF1DAC2_NG_THR - [3:1] */
3018#define WM8958_AIF1DAC2_NG_THR_SHIFT 1 /* AIF1DAC2_NG_THR - [3:1] */
3019#define WM8958_AIF1DAC2_NG_THR_WIDTH 3 /* AIF1DAC2_NG_THR - [3:1] */
3020#define WM8958_AIF1DAC2_NG_ENA 0x0001 /* AIF1DAC2_NG_ENA */
3021#define WM8958_AIF1DAC2_NG_ENA_MASK 0x0001 /* AIF1DAC2_NG_ENA */
3022#define WM8958_AIF1DAC2_NG_ENA_SHIFT 0 /* AIF1DAC2_NG_ENA */
3023#define WM8958_AIF1DAC2_NG_ENA_WIDTH 1 /* AIF1DAC2_NG_ENA */
3024
3025/*
2952 * R1088 (0x440) - AIF1 DRC1 (1) 3026 * R1088 (0x440) - AIF1 DRC1 (1)
2953 */ 3027 */
2954#define WM8994_AIF1DRC1_SIG_DET_RMS_MASK 0xF800 /* AIF1DRC1_SIG_DET_RMS - [15:11] */ 3028#define WM8994_AIF1DRC1_SIG_DET_RMS_MASK 0xF800 /* AIF1DRC1_SIG_DET_RMS - [15:11] */
@@ -3560,6 +3634,20 @@
3560#define WM8994_AIF2DAC_3D_ENA_WIDTH 1 /* AIF2DAC_3D_ENA */ 3634#define WM8994_AIF2DAC_3D_ENA_WIDTH 1 /* AIF2DAC_3D_ENA */
3561 3635
3562/* 3636/*
3637 * R1328 (0x530) - AIF2 DAC Noise Gate
3638 */
3639#define WM8958_AIF2DAC_NG_HLD_MASK 0x0060 /* AIF2DAC_NG_HLD - [6:5] */
3640#define WM8958_AIF2DAC_NG_HLD_SHIFT 5 /* AIF2DAC_NG_HLD - [6:5] */
3641#define WM8958_AIF2DAC_NG_HLD_WIDTH 2 /* AIF2DAC_NG_HLD - [6:5] */
3642#define WM8958_AIF2DAC_NG_THR_MASK 0x000E /* AIF2DAC_NG_THR - [3:1] */
3643#define WM8958_AIF2DAC_NG_THR_SHIFT 1 /* AIF2DAC_NG_THR - [3:1] */
3644#define WM8958_AIF2DAC_NG_THR_WIDTH 3 /* AIF2DAC_NG_THR - [3:1] */
3645#define WM8958_AIF2DAC_NG_ENA 0x0001 /* AIF2DAC_NG_ENA */
3646#define WM8958_AIF2DAC_NG_ENA_MASK 0x0001 /* AIF2DAC_NG_ENA */
3647#define WM8958_AIF2DAC_NG_ENA_SHIFT 0 /* AIF2DAC_NG_ENA */
3648#define WM8958_AIF2DAC_NG_ENA_WIDTH 1 /* AIF2DAC_NG_ENA */
3649
3650/*
3563 * R1344 (0x540) - AIF2 DRC (1) 3651 * R1344 (0x540) - AIF2 DRC (1)
3564 */ 3652 */
3565#define WM8994_AIF2DRC_SIG_DET_RMS_MASK 0xF800 /* AIF2DRC_SIG_DET_RMS - [15:11] */ 3653#define WM8994_AIF2DRC_SIG_DET_RMS_MASK 0xF800 /* AIF2DRC_SIG_DET_RMS - [15:11] */
diff --git a/include/linux/mii.h b/include/linux/mii.h
index 103113a2fd18..27748230aa69 100644
--- a/include/linux/mii.h
+++ b/include/linux/mii.h
@@ -11,131 +11,130 @@
11#include <linux/types.h> 11#include <linux/types.h>
12 12
13/* Generic MII registers. */ 13/* Generic MII registers. */
14 14#define MII_BMCR 0x00 /* Basic mode control register */
15#define MII_BMCR 0x00 /* Basic mode control register */ 15#define MII_BMSR 0x01 /* Basic mode status register */
16#define MII_BMSR 0x01 /* Basic mode status register */ 16#define MII_PHYSID1 0x02 /* PHYS ID 1 */
17#define MII_PHYSID1 0x02 /* PHYS ID 1 */ 17#define MII_PHYSID2 0x03 /* PHYS ID 2 */
18#define MII_PHYSID2 0x03 /* PHYS ID 2 */ 18#define MII_ADVERTISE 0x04 /* Advertisement control reg */
19#define MII_ADVERTISE 0x04 /* Advertisement control reg */ 19#define MII_LPA 0x05 /* Link partner ability reg */
20#define MII_LPA 0x05 /* Link partner ability reg */ 20#define MII_EXPANSION 0x06 /* Expansion register */
21#define MII_EXPANSION 0x06 /* Expansion register */ 21#define MII_CTRL1000 0x09 /* 1000BASE-T control */
22#define MII_CTRL1000 0x09 /* 1000BASE-T control */ 22#define MII_STAT1000 0x0a /* 1000BASE-T status */
23#define MII_STAT1000 0x0a /* 1000BASE-T status */ 23#define MII_ESTATUS 0x0f /* Extended Status */
24#define MII_ESTATUS 0x0f /* Extended Status */ 24#define MII_DCOUNTER 0x12 /* Disconnect counter */
25#define MII_DCOUNTER 0x12 /* Disconnect counter */ 25#define MII_FCSCOUNTER 0x13 /* False carrier counter */
26#define MII_FCSCOUNTER 0x13 /* False carrier counter */ 26#define MII_NWAYTEST 0x14 /* N-way auto-neg test reg */
27#define MII_NWAYTEST 0x14 /* N-way auto-neg test reg */ 27#define MII_RERRCOUNTER 0x15 /* Receive error counter */
28#define MII_RERRCOUNTER 0x15 /* Receive error counter */ 28#define MII_SREVISION 0x16 /* Silicon revision */
29#define MII_SREVISION 0x16 /* Silicon revision */ 29#define MII_RESV1 0x17 /* Reserved... */
30#define MII_RESV1 0x17 /* Reserved... */ 30#define MII_LBRERROR 0x18 /* Lpback, rx, bypass error */
31#define MII_LBRERROR 0x18 /* Lpback, rx, bypass error */ 31#define MII_PHYADDR 0x19 /* PHY address */
32#define MII_PHYADDR 0x19 /* PHY address */ 32#define MII_RESV2 0x1a /* Reserved... */
33#define MII_RESV2 0x1a /* Reserved... */ 33#define MII_TPISTATUS 0x1b /* TPI status for 10mbps */
34#define MII_TPISTATUS 0x1b /* TPI status for 10mbps */ 34#define MII_NCONFIG 0x1c /* Network interface config */
35#define MII_NCONFIG 0x1c /* Network interface config */
36 35
37/* Basic mode control register. */ 36/* Basic mode control register. */
38#define BMCR_RESV 0x003f /* Unused... */ 37#define BMCR_RESV 0x003f /* Unused... */
39#define BMCR_SPEED1000 0x0040 /* MSB of Speed (1000) */ 38#define BMCR_SPEED1000 0x0040 /* MSB of Speed (1000) */
40#define BMCR_CTST 0x0080 /* Collision test */ 39#define BMCR_CTST 0x0080 /* Collision test */
41#define BMCR_FULLDPLX 0x0100 /* Full duplex */ 40#define BMCR_FULLDPLX 0x0100 /* Full duplex */
42#define BMCR_ANRESTART 0x0200 /* Auto negotiation restart */ 41#define BMCR_ANRESTART 0x0200 /* Auto negotiation restart */
43#define BMCR_ISOLATE 0x0400 /* Disconnect DP83840 from MII */ 42#define BMCR_ISOLATE 0x0400 /* Isolate data paths from MII */
44#define BMCR_PDOWN 0x0800 /* Powerdown the DP83840 */ 43#define BMCR_PDOWN 0x0800 /* Enable low power state */
45#define BMCR_ANENABLE 0x1000 /* Enable auto negotiation */ 44#define BMCR_ANENABLE 0x1000 /* Enable auto negotiation */
46#define BMCR_SPEED100 0x2000 /* Select 100Mbps */ 45#define BMCR_SPEED100 0x2000 /* Select 100Mbps */
47#define BMCR_LOOPBACK 0x4000 /* TXD loopback bits */ 46#define BMCR_LOOPBACK 0x4000 /* TXD loopback bits */
48#define BMCR_RESET 0x8000 /* Reset the DP83840 */ 47#define BMCR_RESET 0x8000 /* Reset to default state */
49 48
50/* Basic mode status register. */ 49/* Basic mode status register. */
51#define BMSR_ERCAP 0x0001 /* Ext-reg capability */ 50#define BMSR_ERCAP 0x0001 /* Ext-reg capability */
52#define BMSR_JCD 0x0002 /* Jabber detected */ 51#define BMSR_JCD 0x0002 /* Jabber detected */
53#define BMSR_LSTATUS 0x0004 /* Link status */ 52#define BMSR_LSTATUS 0x0004 /* Link status */
54#define BMSR_ANEGCAPABLE 0x0008 /* Able to do auto-negotiation */ 53#define BMSR_ANEGCAPABLE 0x0008 /* Able to do auto-negotiation */
55#define BMSR_RFAULT 0x0010 /* Remote fault detected */ 54#define BMSR_RFAULT 0x0010 /* Remote fault detected */
56#define BMSR_ANEGCOMPLETE 0x0020 /* Auto-negotiation complete */ 55#define BMSR_ANEGCOMPLETE 0x0020 /* Auto-negotiation complete */
57#define BMSR_RESV 0x00c0 /* Unused... */ 56#define BMSR_RESV 0x00c0 /* Unused... */
58#define BMSR_ESTATEN 0x0100 /* Extended Status in R15 */ 57#define BMSR_ESTATEN 0x0100 /* Extended Status in R15 */
59#define BMSR_100HALF2 0x0200 /* Can do 100BASE-T2 HDX */ 58#define BMSR_100HALF2 0x0200 /* Can do 100BASE-T2 HDX */
60#define BMSR_100FULL2 0x0400 /* Can do 100BASE-T2 FDX */ 59#define BMSR_100FULL2 0x0400 /* Can do 100BASE-T2 FDX */
61#define BMSR_10HALF 0x0800 /* Can do 10mbps, half-duplex */ 60#define BMSR_10HALF 0x0800 /* Can do 10mbps, half-duplex */
62#define BMSR_10FULL 0x1000 /* Can do 10mbps, full-duplex */ 61#define BMSR_10FULL 0x1000 /* Can do 10mbps, full-duplex */
63#define BMSR_100HALF 0x2000 /* Can do 100mbps, half-duplex */ 62#define BMSR_100HALF 0x2000 /* Can do 100mbps, half-duplex */
64#define BMSR_100FULL 0x4000 /* Can do 100mbps, full-duplex */ 63#define BMSR_100FULL 0x4000 /* Can do 100mbps, full-duplex */
65#define BMSR_100BASE4 0x8000 /* Can do 100mbps, 4k packets */ 64#define BMSR_100BASE4 0x8000 /* Can do 100mbps, 4k packets */
66 65
67/* Advertisement control register. */ 66/* Advertisement control register. */
68#define ADVERTISE_SLCT 0x001f /* Selector bits */ 67#define ADVERTISE_SLCT 0x001f /* Selector bits */
69#define ADVERTISE_CSMA 0x0001 /* Only selector supported */ 68#define ADVERTISE_CSMA 0x0001 /* Only selector supported */
70#define ADVERTISE_10HALF 0x0020 /* Try for 10mbps half-duplex */ 69#define ADVERTISE_10HALF 0x0020 /* Try for 10mbps half-duplex */
71#define ADVERTISE_1000XFULL 0x0020 /* Try for 1000BASE-X full-duplex */ 70#define ADVERTISE_1000XFULL 0x0020 /* Try for 1000BASE-X full-duplex */
72#define ADVERTISE_10FULL 0x0040 /* Try for 10mbps full-duplex */ 71#define ADVERTISE_10FULL 0x0040 /* Try for 10mbps full-duplex */
73#define ADVERTISE_1000XHALF 0x0040 /* Try for 1000BASE-X half-duplex */ 72#define ADVERTISE_1000XHALF 0x0040 /* Try for 1000BASE-X half-duplex */
74#define ADVERTISE_100HALF 0x0080 /* Try for 100mbps half-duplex */ 73#define ADVERTISE_100HALF 0x0080 /* Try for 100mbps half-duplex */
75#define ADVERTISE_1000XPAUSE 0x0080 /* Try for 1000BASE-X pause */ 74#define ADVERTISE_1000XPAUSE 0x0080 /* Try for 1000BASE-X pause */
76#define ADVERTISE_100FULL 0x0100 /* Try for 100mbps full-duplex */ 75#define ADVERTISE_100FULL 0x0100 /* Try for 100mbps full-duplex */
77#define ADVERTISE_1000XPSE_ASYM 0x0100 /* Try for 1000BASE-X asym pause */ 76#define ADVERTISE_1000XPSE_ASYM 0x0100 /* Try for 1000BASE-X asym pause */
78#define ADVERTISE_100BASE4 0x0200 /* Try for 100mbps 4k packets */ 77#define ADVERTISE_100BASE4 0x0200 /* Try for 100mbps 4k packets */
79#define ADVERTISE_PAUSE_CAP 0x0400 /* Try for pause */ 78#define ADVERTISE_PAUSE_CAP 0x0400 /* Try for pause */
80#define ADVERTISE_PAUSE_ASYM 0x0800 /* Try for asymetric pause */ 79#define ADVERTISE_PAUSE_ASYM 0x0800 /* Try for asymetric pause */
81#define ADVERTISE_RESV 0x1000 /* Unused... */ 80#define ADVERTISE_RESV 0x1000 /* Unused... */
82#define ADVERTISE_RFAULT 0x2000 /* Say we can detect faults */ 81#define ADVERTISE_RFAULT 0x2000 /* Say we can detect faults */
83#define ADVERTISE_LPACK 0x4000 /* Ack link partners response */ 82#define ADVERTISE_LPACK 0x4000 /* Ack link partners response */
84#define ADVERTISE_NPAGE 0x8000 /* Next page bit */ 83#define ADVERTISE_NPAGE 0x8000 /* Next page bit */
85 84
86#define ADVERTISE_FULL (ADVERTISE_100FULL | ADVERTISE_10FULL | \ 85#define ADVERTISE_FULL (ADVERTISE_100FULL | ADVERTISE_10FULL | \
87 ADVERTISE_CSMA) 86 ADVERTISE_CSMA)
88#define ADVERTISE_ALL (ADVERTISE_10HALF | ADVERTISE_10FULL | \ 87#define ADVERTISE_ALL (ADVERTISE_10HALF | ADVERTISE_10FULL | \
89 ADVERTISE_100HALF | ADVERTISE_100FULL) 88 ADVERTISE_100HALF | ADVERTISE_100FULL)
90 89
91/* Link partner ability register. */ 90/* Link partner ability register. */
92#define LPA_SLCT 0x001f /* Same as advertise selector */ 91#define LPA_SLCT 0x001f /* Same as advertise selector */
93#define LPA_10HALF 0x0020 /* Can do 10mbps half-duplex */ 92#define LPA_10HALF 0x0020 /* Can do 10mbps half-duplex */
94#define LPA_1000XFULL 0x0020 /* Can do 1000BASE-X full-duplex */ 93#define LPA_1000XFULL 0x0020 /* Can do 1000BASE-X full-duplex */
95#define LPA_10FULL 0x0040 /* Can do 10mbps full-duplex */ 94#define LPA_10FULL 0x0040 /* Can do 10mbps full-duplex */
96#define LPA_1000XHALF 0x0040 /* Can do 1000BASE-X half-duplex */ 95#define LPA_1000XHALF 0x0040 /* Can do 1000BASE-X half-duplex */
97#define LPA_100HALF 0x0080 /* Can do 100mbps half-duplex */ 96#define LPA_100HALF 0x0080 /* Can do 100mbps half-duplex */
98#define LPA_1000XPAUSE 0x0080 /* Can do 1000BASE-X pause */ 97#define LPA_1000XPAUSE 0x0080 /* Can do 1000BASE-X pause */
99#define LPA_100FULL 0x0100 /* Can do 100mbps full-duplex */ 98#define LPA_100FULL 0x0100 /* Can do 100mbps full-duplex */
100#define LPA_1000XPAUSE_ASYM 0x0100 /* Can do 1000BASE-X pause asym*/ 99#define LPA_1000XPAUSE_ASYM 0x0100 /* Can do 1000BASE-X pause asym*/
101#define LPA_100BASE4 0x0200 /* Can do 100mbps 4k packets */ 100#define LPA_100BASE4 0x0200 /* Can do 100mbps 4k packets */
102#define LPA_PAUSE_CAP 0x0400 /* Can pause */ 101#define LPA_PAUSE_CAP 0x0400 /* Can pause */
103#define LPA_PAUSE_ASYM 0x0800 /* Can pause asymetrically */ 102#define LPA_PAUSE_ASYM 0x0800 /* Can pause asymetrically */
104#define LPA_RESV 0x1000 /* Unused... */ 103#define LPA_RESV 0x1000 /* Unused... */
105#define LPA_RFAULT 0x2000 /* Link partner faulted */ 104#define LPA_RFAULT 0x2000 /* Link partner faulted */
106#define LPA_LPACK 0x4000 /* Link partner acked us */ 105#define LPA_LPACK 0x4000 /* Link partner acked us */
107#define LPA_NPAGE 0x8000 /* Next page bit */ 106#define LPA_NPAGE 0x8000 /* Next page bit */
108 107
109#define LPA_DUPLEX (LPA_10FULL | LPA_100FULL) 108#define LPA_DUPLEX (LPA_10FULL | LPA_100FULL)
110#define LPA_100 (LPA_100FULL | LPA_100HALF | LPA_100BASE4) 109#define LPA_100 (LPA_100FULL | LPA_100HALF | LPA_100BASE4)
111 110
112/* Expansion register for auto-negotiation. */ 111/* Expansion register for auto-negotiation. */
113#define EXPANSION_NWAY 0x0001 /* Can do N-way auto-nego */ 112#define EXPANSION_NWAY 0x0001 /* Can do N-way auto-nego */
114#define EXPANSION_LCWP 0x0002 /* Got new RX page code word */ 113#define EXPANSION_LCWP 0x0002 /* Got new RX page code word */
115#define EXPANSION_ENABLENPAGE 0x0004 /* This enables npage words */ 114#define EXPANSION_ENABLENPAGE 0x0004 /* This enables npage words */
116#define EXPANSION_NPCAPABLE 0x0008 /* Link partner supports npage */ 115#define EXPANSION_NPCAPABLE 0x0008 /* Link partner supports npage */
117#define EXPANSION_MFAULTS 0x0010 /* Multiple faults detected */ 116#define EXPANSION_MFAULTS 0x0010 /* Multiple faults detected */
118#define EXPANSION_RESV 0xffe0 /* Unused... */ 117#define EXPANSION_RESV 0xffe0 /* Unused... */
119 118
120#define ESTATUS_1000_TFULL 0x2000 /* Can do 1000BT Full */ 119#define ESTATUS_1000_TFULL 0x2000 /* Can do 1000BT Full */
121#define ESTATUS_1000_THALF 0x1000 /* Can do 1000BT Half */ 120#define ESTATUS_1000_THALF 0x1000 /* Can do 1000BT Half */
122 121
123/* N-way test register. */ 122/* N-way test register. */
124#define NWAYTEST_RESV1 0x00ff /* Unused... */ 123#define NWAYTEST_RESV1 0x00ff /* Unused... */
125#define NWAYTEST_LOOPBACK 0x0100 /* Enable loopback for N-way */ 124#define NWAYTEST_LOOPBACK 0x0100 /* Enable loopback for N-way */
126#define NWAYTEST_RESV2 0xfe00 /* Unused... */ 125#define NWAYTEST_RESV2 0xfe00 /* Unused... */
127 126
128/* 1000BASE-T Control register */ 127/* 1000BASE-T Control register */
129#define ADVERTISE_1000FULL 0x0200 /* Advertise 1000BASE-T full duplex */ 128#define ADVERTISE_1000FULL 0x0200 /* Advertise 1000BASE-T full duplex */
130#define ADVERTISE_1000HALF 0x0100 /* Advertise 1000BASE-T half duplex */ 129#define ADVERTISE_1000HALF 0x0100 /* Advertise 1000BASE-T half duplex */
131#define CTL1000_AS_MASTER 0x0800 130#define CTL1000_AS_MASTER 0x0800
132#define CTL1000_ENABLE_MASTER 0x1000 131#define CTL1000_ENABLE_MASTER 0x1000
133 132
134/* 1000BASE-T Status register */ 133/* 1000BASE-T Status register */
135#define LPA_1000LOCALRXOK 0x2000 /* Link partner local receiver status */ 134#define LPA_1000LOCALRXOK 0x2000 /* Link partner local receiver status */
136#define LPA_1000REMRXOK 0x1000 /* Link partner remote receiver status */ 135#define LPA_1000REMRXOK 0x1000 /* Link partner remote receiver status */
137#define LPA_1000FULL 0x0800 /* Link partner 1000BASE-T full duplex */ 136#define LPA_1000FULL 0x0800 /* Link partner 1000BASE-T full duplex */
138#define LPA_1000HALF 0x0400 /* Link partner 1000BASE-T half duplex */ 137#define LPA_1000HALF 0x0400 /* Link partner 1000BASE-T half duplex */
139 138
140/* Flow control flags */ 139/* Flow control flags */
141#define FLOW_CTRL_TX 0x01 140#define FLOW_CTRL_TX 0x01
@@ -149,7 +148,7 @@ struct mii_ioctl_data {
149 __u16 val_out; 148 __u16 val_out;
150}; 149};
151 150
152#ifdef __KERNEL__ 151#ifdef __KERNEL__
153 152
154#include <linux/if.h> 153#include <linux/if.h>
155 154
@@ -180,7 +179,7 @@ extern unsigned int mii_check_media (struct mii_if_info *mii,
180 unsigned int ok_to_print, 179 unsigned int ok_to_print,
181 unsigned int init_media); 180 unsigned int init_media);
182extern int generic_mii_ioctl(struct mii_if_info *mii_if, 181extern int generic_mii_ioctl(struct mii_if_info *mii_if,
183 struct mii_ioctl_data *mii_data, int cmd, 182 struct mii_ioctl_data *mii_data, int cmd,
184 unsigned int *duplex_changed); 183 unsigned int *duplex_changed);
185 184
186 185
@@ -189,7 +188,6 @@ static inline struct mii_ioctl_data *if_mii(struct ifreq *rq)
189 return (struct mii_ioctl_data *) &rq->ifr_ifru; 188 return (struct mii_ioctl_data *) &rq->ifr_ifru;
190} 189}
191 190
192
193/** 191/**
194 * mii_nway_result 192 * mii_nway_result
195 * @negotiated: value of MII ANAR and'd with ANLPAR 193 * @negotiated: value of MII ANAR and'd with ANLPAR
diff --git a/include/linux/mlx4/device.h b/include/linux/mlx4/device.h
index 53ef894bfa05..84b0b1848f17 100644
--- a/include/linux/mlx4/device.h
+++ b/include/linux/mlx4/device.h
@@ -61,6 +61,7 @@ enum {
61 MLX4_DEV_CAP_FLAG_RC = 1LL << 0, 61 MLX4_DEV_CAP_FLAG_RC = 1LL << 0,
62 MLX4_DEV_CAP_FLAG_UC = 1LL << 1, 62 MLX4_DEV_CAP_FLAG_UC = 1LL << 1,
63 MLX4_DEV_CAP_FLAG_UD = 1LL << 2, 63 MLX4_DEV_CAP_FLAG_UD = 1LL << 2,
64 MLX4_DEV_CAP_FLAG_XRC = 1LL << 3,
64 MLX4_DEV_CAP_FLAG_SRQ = 1LL << 6, 65 MLX4_DEV_CAP_FLAG_SRQ = 1LL << 6,
65 MLX4_DEV_CAP_FLAG_IPOIB_CSUM = 1LL << 7, 66 MLX4_DEV_CAP_FLAG_IPOIB_CSUM = 1LL << 7,
66 MLX4_DEV_CAP_FLAG_BAD_PKEY_CNTR = 1LL << 8, 67 MLX4_DEV_CAP_FLAG_BAD_PKEY_CNTR = 1LL << 8,
@@ -75,6 +76,7 @@ enum {
75 MLX4_DEV_CAP_FLAG_UD_MCAST = 1LL << 21, 76 MLX4_DEV_CAP_FLAG_UD_MCAST = 1LL << 21,
76 MLX4_DEV_CAP_FLAG_IBOE = 1LL << 30, 77 MLX4_DEV_CAP_FLAG_IBOE = 1LL << 30,
77 MLX4_DEV_CAP_FLAG_UC_LOOPBACK = 1LL << 32, 78 MLX4_DEV_CAP_FLAG_UC_LOOPBACK = 1LL << 32,
79 MLX4_DEV_CAP_FLAG_FCS_KEEP = 1LL << 34,
78 MLX4_DEV_CAP_FLAG_WOL = 1LL << 38, 80 MLX4_DEV_CAP_FLAG_WOL = 1LL << 38,
79 MLX4_DEV_CAP_FLAG_UDP_RSS = 1LL << 40, 81 MLX4_DEV_CAP_FLAG_UDP_RSS = 1LL << 40,
80 MLX4_DEV_CAP_FLAG_VEP_UC_STEER = 1LL << 41, 82 MLX4_DEV_CAP_FLAG_VEP_UC_STEER = 1LL << 41,
@@ -82,6 +84,12 @@ enum {
82 MLX4_DEV_CAP_FLAG_COUNTERS = 1LL << 48 84 MLX4_DEV_CAP_FLAG_COUNTERS = 1LL << 48
83}; 85};
84 86
87#define MLX4_ATTR_EXTENDED_PORT_INFO cpu_to_be16(0xff90)
88
89enum {
90 MLX_EXT_PORT_CAP_FLAG_EXTENDED_PORT_INFO = 1 << 0
91};
92
85enum { 93enum {
86 MLX4_BMME_FLAG_LOCAL_INV = 1 << 6, 94 MLX4_BMME_FLAG_LOCAL_INV = 1 << 6,
87 MLX4_BMME_FLAG_REMOTE_INV = 1 << 7, 95 MLX4_BMME_FLAG_REMOTE_INV = 1 << 7,
@@ -256,6 +264,8 @@ struct mlx4_caps {
256 int num_qp_per_mgm; 264 int num_qp_per_mgm;
257 int num_pds; 265 int num_pds;
258 int reserved_pds; 266 int reserved_pds;
267 int max_xrcds;
268 int reserved_xrcds;
259 int mtt_entry_sz; 269 int mtt_entry_sz;
260 u32 max_msg_sz; 270 u32 max_msg_sz;
261 u32 page_size_cap; 271 u32 page_size_cap;
@@ -276,6 +286,7 @@ struct mlx4_caps {
276 u32 port_mask; 286 u32 port_mask;
277 enum mlx4_port_type possible_type[MLX4_MAX_PORTS + 1]; 287 enum mlx4_port_type possible_type[MLX4_MAX_PORTS + 1];
278 u32 max_counters; 288 u32 max_counters;
289 u8 ext_port_cap[MLX4_MAX_PORTS + 1];
279}; 290};
280 291
281struct mlx4_buf_list { 292struct mlx4_buf_list {
@@ -499,6 +510,8 @@ static inline void *mlx4_buf_offset(struct mlx4_buf *buf, int offset)
499 510
500int mlx4_pd_alloc(struct mlx4_dev *dev, u32 *pdn); 511int mlx4_pd_alloc(struct mlx4_dev *dev, u32 *pdn);
501void mlx4_pd_free(struct mlx4_dev *dev, u32 pdn); 512void mlx4_pd_free(struct mlx4_dev *dev, u32 pdn);
513int mlx4_xrcd_alloc(struct mlx4_dev *dev, u32 *xrcdn);
514void mlx4_xrcd_free(struct mlx4_dev *dev, u32 xrcdn);
502 515
503int mlx4_uar_alloc(struct mlx4_dev *dev, struct mlx4_uar *uar); 516int mlx4_uar_alloc(struct mlx4_dev *dev, struct mlx4_uar *uar);
504void mlx4_uar_free(struct mlx4_dev *dev, struct mlx4_uar *uar); 517void mlx4_uar_free(struct mlx4_dev *dev, struct mlx4_uar *uar);
@@ -538,8 +551,8 @@ void mlx4_qp_release_range(struct mlx4_dev *dev, int base_qpn, int cnt);
538int mlx4_qp_alloc(struct mlx4_dev *dev, int qpn, struct mlx4_qp *qp); 551int mlx4_qp_alloc(struct mlx4_dev *dev, int qpn, struct mlx4_qp *qp);
539void mlx4_qp_free(struct mlx4_dev *dev, struct mlx4_qp *qp); 552void mlx4_qp_free(struct mlx4_dev *dev, struct mlx4_qp *qp);
540 553
541int mlx4_srq_alloc(struct mlx4_dev *dev, u32 pdn, struct mlx4_mtt *mtt, 554int mlx4_srq_alloc(struct mlx4_dev *dev, u32 pdn, u32 cqn, u16 xrcdn,
542 u64 db_rec, struct mlx4_srq *srq); 555 struct mlx4_mtt *mtt, u64 db_rec, struct mlx4_srq *srq);
543void mlx4_srq_free(struct mlx4_dev *dev, struct mlx4_srq *srq); 556void mlx4_srq_free(struct mlx4_dev *dev, struct mlx4_srq *srq);
544int mlx4_srq_arm(struct mlx4_dev *dev, struct mlx4_srq *srq, int limit_watermark); 557int mlx4_srq_arm(struct mlx4_dev *dev, struct mlx4_srq *srq, int limit_watermark);
545int mlx4_srq_query(struct mlx4_dev *dev, struct mlx4_srq *srq, int *limit_watermark); 558int mlx4_srq_query(struct mlx4_dev *dev, struct mlx4_srq *srq, int *limit_watermark);
diff --git a/include/linux/mlx4/qp.h b/include/linux/mlx4/qp.h
index 4001c8249dbb..48cc4cb97858 100644
--- a/include/linux/mlx4/qp.h
+++ b/include/linux/mlx4/qp.h
@@ -75,6 +75,7 @@ enum {
75 MLX4_QP_ST_UC = 0x1, 75 MLX4_QP_ST_UC = 0x1,
76 MLX4_QP_ST_RD = 0x2, 76 MLX4_QP_ST_RD = 0x2,
77 MLX4_QP_ST_UD = 0x3, 77 MLX4_QP_ST_UD = 0x3,
78 MLX4_QP_ST_XRC = 0x6,
78 MLX4_QP_ST_MLX = 0x7 79 MLX4_QP_ST_MLX = 0x7
79}; 80};
80 81
@@ -137,7 +138,7 @@ struct mlx4_qp_context {
137 __be32 ssn; 138 __be32 ssn;
138 __be32 params2; 139 __be32 params2;
139 __be32 rnr_nextrecvpsn; 140 __be32 rnr_nextrecvpsn;
140 __be32 srcd; 141 __be32 xrcd;
141 __be32 cqn_recv; 142 __be32 cqn_recv;
142 __be64 db_rec_addr; 143 __be64 db_rec_addr;
143 __be32 qkey; 144 __be32 qkey;
diff --git a/include/linux/mm.h b/include/linux/mm.h
index 7438071b44aa..3b3e3b8bb706 100644
--- a/include/linux/mm.h
+++ b/include/linux/mm.h
@@ -1334,7 +1334,8 @@ extern void si_meminfo(struct sysinfo * val);
1334extern void si_meminfo_node(struct sysinfo *val, int nid); 1334extern void si_meminfo_node(struct sysinfo *val, int nid);
1335extern int after_bootmem; 1335extern int after_bootmem;
1336 1336
1337extern void warn_alloc_failed(gfp_t gfp_mask, int order, const char *fmt, ...); 1337extern __printf(3, 4)
1338void warn_alloc_failed(gfp_t gfp_mask, int order, const char *fmt, ...);
1338 1339
1339extern void setup_per_cpu_pageset(void); 1340extern void setup_per_cpu_pageset(void);
1340 1341
diff --git a/include/linux/mm_types.h b/include/linux/mm_types.h
index 774b8952deb4..3e01a19a91e8 100644
--- a/include/linux/mm_types.h
+++ b/include/linux/mm_types.h
@@ -79,9 +79,21 @@ struct page {
79 }; 79 };
80 80
81 /* Third double word block */ 81 /* Third double word block */
82 struct list_head lru; /* Pageout list, eg. active_list 82 union {
83 struct list_head lru; /* Pageout list, eg. active_list
83 * protected by zone->lru_lock ! 84 * protected by zone->lru_lock !
84 */ 85 */
86 struct { /* slub per cpu partial pages */
87 struct page *next; /* Next partial slab */
88#ifdef CONFIG_64BIT
89 int pages; /* Nr of partial slabs left */
90 int pobjects; /* Approximate # of objects */
91#else
92 short int pages;
93 short int pobjects;
94#endif
95 };
96 };
85 97
86 /* Remainder is not double word aligned */ 98 /* Remainder is not double word aligned */
87 union { 99 union {
@@ -135,6 +147,17 @@ struct page {
135#endif 147#endif
136; 148;
137 149
150struct page_frag {
151 struct page *page;
152#if (BITS_PER_LONG > 32) || (PAGE_SIZE >= 65536)
153 __u32 offset;
154 __u32 size;
155#else
156 __u16 offset;
157 __u16 size;
158#endif
159};
160
138typedef unsigned long __nocast vm_flags_t; 161typedef unsigned long __nocast vm_flags_t;
139 162
140/* 163/*
@@ -281,8 +304,15 @@ struct mm_struct {
281 unsigned long hiwater_rss; /* High-watermark of RSS usage */ 304 unsigned long hiwater_rss; /* High-watermark of RSS usage */
282 unsigned long hiwater_vm; /* High-water virtual memory usage */ 305 unsigned long hiwater_vm; /* High-water virtual memory usage */
283 306
284 unsigned long total_vm, locked_vm, shared_vm, exec_vm; 307 unsigned long total_vm; /* Total pages mapped */
285 unsigned long stack_vm, reserved_vm, def_flags, nr_ptes; 308 unsigned long locked_vm; /* Pages that have PG_mlocked set */
309 unsigned long pinned_vm; /* Refcount permanently increased */
310 unsigned long shared_vm; /* Shared pages (files) */
311 unsigned long exec_vm; /* VM_EXEC & ~VM_WRITE */
312 unsigned long stack_vm; /* VM_GROWSUP/DOWN */
313 unsigned long reserved_vm; /* VM_RESERVED|VM_IO pages */
314 unsigned long def_flags;
315 unsigned long nr_ptes; /* Page table pages */
286 unsigned long start_code, end_code, start_data, end_data; 316 unsigned long start_code, end_code, start_data, end_data;
287 unsigned long start_brk, brk, start_stack; 317 unsigned long start_brk, brk, start_stack;
288 unsigned long arg_start, arg_end, env_start, env_end; 318 unsigned long arg_start, arg_end, env_start, env_end;
@@ -313,9 +343,6 @@ struct mm_struct {
313 unsigned int token_priority; 343 unsigned int token_priority;
314 unsigned int last_interval; 344 unsigned int last_interval;
315 345
316 /* How many tasks sharing this mm are OOM_DISABLE */
317 atomic_t oom_disable_count;
318
319 unsigned long flags; /* Must use atomic bitops to access the bits */ 346 unsigned long flags; /* Must use atomic bitops to access the bits */
320 347
321 struct core_state *core_state; /* coredumping support */ 348 struct core_state *core_state; /* coredumping support */
diff --git a/include/linux/mmc/card.h b/include/linux/mmc/card.h
index b460fc2af8a1..415f2db414e1 100644
--- a/include/linux/mmc/card.h
+++ b/include/linux/mmc/card.h
@@ -50,8 +50,12 @@ struct mmc_ext_csd {
50 u8 rel_sectors; 50 u8 rel_sectors;
51 u8 rel_param; 51 u8 rel_param;
52 u8 part_config; 52 u8 part_config;
53 u8 cache_ctrl;
54 u8 rst_n_function;
53 unsigned int part_time; /* Units: ms */ 55 unsigned int part_time; /* Units: ms */
54 unsigned int sa_timeout; /* Units: 100ns */ 56 unsigned int sa_timeout; /* Units: 100ns */
57 unsigned int generic_cmd6_time; /* Units: 10ms */
58 unsigned int power_off_longtime; /* Units: ms */
55 unsigned int hs_max_dtr; 59 unsigned int hs_max_dtr;
56 unsigned int sectors; 60 unsigned int sectors;
57 unsigned int card_type; 61 unsigned int card_type;
@@ -63,11 +67,15 @@ struct mmc_ext_csd {
63 bool enhanced_area_en; /* enable bit */ 67 bool enhanced_area_en; /* enable bit */
64 unsigned long long enhanced_area_offset; /* Units: Byte */ 68 unsigned long long enhanced_area_offset; /* Units: Byte */
65 unsigned int enhanced_area_size; /* Units: KB */ 69 unsigned int enhanced_area_size; /* Units: KB */
66 unsigned int boot_size; /* in bytes */ 70 unsigned int cache_size; /* Units: KB */
71 bool hpi_en; /* HPI enablebit */
72 bool hpi; /* HPI support bit */
73 unsigned int hpi_cmd; /* cmd used as HPI */
67 u8 raw_partition_support; /* 160 */ 74 u8 raw_partition_support; /* 160 */
68 u8 raw_erased_mem_count; /* 181 */ 75 u8 raw_erased_mem_count; /* 181 */
69 u8 raw_ext_csd_structure; /* 194 */ 76 u8 raw_ext_csd_structure; /* 194 */
70 u8 raw_card_type; /* 196 */ 77 u8 raw_card_type; /* 196 */
78 u8 out_of_int_time; /* 198 */
71 u8 raw_s_a_timeout; /* 217 */ 79 u8 raw_s_a_timeout; /* 217 */
72 u8 raw_hc_erase_gap_size; /* 221 */ 80 u8 raw_hc_erase_gap_size; /* 221 */
73 u8 raw_erase_timeout_mult; /* 223 */ 81 u8 raw_erase_timeout_mult; /* 223 */
@@ -77,6 +85,9 @@ struct mmc_ext_csd {
77 u8 raw_sec_feature_support;/* 231 */ 85 u8 raw_sec_feature_support;/* 231 */
78 u8 raw_trim_mult; /* 232 */ 86 u8 raw_trim_mult; /* 232 */
79 u8 raw_sectors[4]; /* 212 - 4 bytes */ 87 u8 raw_sectors[4]; /* 212 - 4 bytes */
88
89 unsigned int feature_support;
90#define MMC_DISCARD_FEATURE BIT(0) /* CMD38 feature */
80}; 91};
81 92
82struct sd_scr { 93struct sd_scr {
@@ -157,6 +168,24 @@ struct sdio_func_tuple;
157 168
158#define SDIO_MAX_FUNCS 7 169#define SDIO_MAX_FUNCS 7
159 170
171/* The number of MMC physical partitions. These consist of:
172 * boot partitions (2), general purpose partitions (4) in MMC v4.4.
173 */
174#define MMC_NUM_BOOT_PARTITION 2
175#define MMC_NUM_GP_PARTITION 4
176#define MMC_NUM_PHY_PARTITION 6
177#define MAX_MMC_PART_NAME_LEN 20
178
179/*
180 * MMC Physical partitions
181 */
182struct mmc_part {
183 unsigned int size; /* partition size (in bytes) */
184 unsigned int part_cfg; /* partition type */
185 char name[MAX_MMC_PART_NAME_LEN];
186 bool force_ro; /* to make boot parts RO by default */
187};
188
160/* 189/*
161 * MMC device 190 * MMC device
162 */ 191 */
@@ -188,6 +217,13 @@ struct mmc_card {
188#define MMC_QUIRK_DISABLE_CD (1<<5) /* disconnect CD/DAT[3] resistor */ 217#define MMC_QUIRK_DISABLE_CD (1<<5) /* disconnect CD/DAT[3] resistor */
189#define MMC_QUIRK_INAND_CMD38 (1<<6) /* iNAND devices have broken CMD38 */ 218#define MMC_QUIRK_INAND_CMD38 (1<<6) /* iNAND devices have broken CMD38 */
190#define MMC_QUIRK_BLK_NO_CMD23 (1<<7) /* Avoid CMD23 for regular multiblock */ 219#define MMC_QUIRK_BLK_NO_CMD23 (1<<7) /* Avoid CMD23 for regular multiblock */
220#define MMC_QUIRK_BROKEN_BYTE_MODE_512 (1<<8) /* Avoid sending 512 bytes in */
221 /* byte mode */
222 unsigned int poweroff_notify_state; /* eMMC4.5 notify feature */
223#define MMC_NO_POWER_NOTIFICATION 0
224#define MMC_POWERED_ON 1
225#define MMC_POWEROFF_SHORT 2
226#define MMC_POWEROFF_LONG 3
191 227
192 unsigned int erase_size; /* erase size in sectors */ 228 unsigned int erase_size; /* erase size in sectors */
193 unsigned int erase_shift; /* if erase unit is power 2 */ 229 unsigned int erase_shift; /* if erase unit is power 2 */
@@ -216,9 +252,24 @@ struct mmc_card {
216 unsigned int sd_bus_speed; /* Bus Speed Mode set for the card */ 252 unsigned int sd_bus_speed; /* Bus Speed Mode set for the card */
217 253
218 struct dentry *debugfs_root; 254 struct dentry *debugfs_root;
255 struct mmc_part part[MMC_NUM_PHY_PARTITION]; /* physical partitions */
256 unsigned int nr_parts;
219}; 257};
220 258
221/* 259/*
260 * This function fill contents in mmc_part.
261 */
262static inline void mmc_part_add(struct mmc_card *card, unsigned int size,
263 unsigned int part_cfg, char *name, int idx, bool ro)
264{
265 card->part[card->nr_parts].size = size;
266 card->part[card->nr_parts].part_cfg = part_cfg;
267 sprintf(card->part[card->nr_parts].name, name, idx);
268 card->part[card->nr_parts].force_ro = ro;
269 card->nr_parts++;
270}
271
272/*
222 * The world is not perfect and supplies us with broken mmc/sdio devices. 273 * The world is not perfect and supplies us with broken mmc/sdio devices.
223 * For at least some of these bugs we need a work-around. 274 * For at least some of these bugs we need a work-around.
224 */ 275 */
@@ -377,6 +428,11 @@ static inline int mmc_card_nonstd_func_interface(const struct mmc_card *c)
377 return c->quirks & MMC_QUIRK_NONSTD_FUNC_IF; 428 return c->quirks & MMC_QUIRK_NONSTD_FUNC_IF;
378} 429}
379 430
431static inline int mmc_card_broken_byte_mode_512(const struct mmc_card *c)
432{
433 return c->quirks & MMC_QUIRK_BROKEN_BYTE_MODE_512;
434}
435
380#define mmc_card_name(c) ((c)->cid.prod_name) 436#define mmc_card_name(c) ((c)->cid.prod_name)
381#define mmc_card_id(c) (dev_name(&(c)->dev)) 437#define mmc_card_id(c) (dev_name(&(c)->dev))
382 438
diff --git a/include/linux/mmc/core.h b/include/linux/mmc/core.h
index b8b1b7a311f1..174a844a5dda 100644
--- a/include/linux/mmc/core.h
+++ b/include/linux/mmc/core.h
@@ -136,6 +136,7 @@ struct mmc_async_req;
136 136
137extern struct mmc_async_req *mmc_start_req(struct mmc_host *, 137extern struct mmc_async_req *mmc_start_req(struct mmc_host *,
138 struct mmc_async_req *, int *); 138 struct mmc_async_req *, int *);
139extern int mmc_interrupt_hpi(struct mmc_card *);
139extern void mmc_wait_for_req(struct mmc_host *, struct mmc_request *); 140extern void mmc_wait_for_req(struct mmc_host *, struct mmc_request *);
140extern int mmc_wait_for_cmd(struct mmc_host *, struct mmc_command *, int); 141extern int mmc_wait_for_cmd(struct mmc_host *, struct mmc_command *, int);
141extern int mmc_app_cmd(struct mmc_host *, struct mmc_card *); 142extern int mmc_app_cmd(struct mmc_host *, struct mmc_card *);
@@ -146,6 +147,7 @@ extern int mmc_switch(struct mmc_card *, u8, u8, u8, unsigned int);
146#define MMC_ERASE_ARG 0x00000000 147#define MMC_ERASE_ARG 0x00000000
147#define MMC_SECURE_ERASE_ARG 0x80000000 148#define MMC_SECURE_ERASE_ARG 0x80000000
148#define MMC_TRIM_ARG 0x00000001 149#define MMC_TRIM_ARG 0x00000001
150#define MMC_DISCARD_ARG 0x00000003
149#define MMC_SECURE_TRIM1_ARG 0x80000001 151#define MMC_SECURE_TRIM1_ARG 0x80000001
150#define MMC_SECURE_TRIM2_ARG 0x80008000 152#define MMC_SECURE_TRIM2_ARG 0x80008000
151 153
@@ -156,12 +158,17 @@ extern int mmc_erase(struct mmc_card *card, unsigned int from, unsigned int nr,
156 unsigned int arg); 158 unsigned int arg);
157extern int mmc_can_erase(struct mmc_card *card); 159extern int mmc_can_erase(struct mmc_card *card);
158extern int mmc_can_trim(struct mmc_card *card); 160extern int mmc_can_trim(struct mmc_card *card);
161extern int mmc_can_discard(struct mmc_card *card);
162extern int mmc_can_sanitize(struct mmc_card *card);
159extern int mmc_can_secure_erase_trim(struct mmc_card *card); 163extern int mmc_can_secure_erase_trim(struct mmc_card *card);
160extern int mmc_erase_group_aligned(struct mmc_card *card, unsigned int from, 164extern int mmc_erase_group_aligned(struct mmc_card *card, unsigned int from,
161 unsigned int nr); 165 unsigned int nr);
162extern unsigned int mmc_calc_max_discard(struct mmc_card *card); 166extern unsigned int mmc_calc_max_discard(struct mmc_card *card);
163 167
164extern int mmc_set_blocklen(struct mmc_card *card, unsigned int blocklen); 168extern int mmc_set_blocklen(struct mmc_card *card, unsigned int blocklen);
169extern int mmc_hw_reset(struct mmc_host *host);
170extern int mmc_hw_reset_check(struct mmc_host *host);
171extern int mmc_can_reset(struct mmc_card *card);
165 172
166extern void mmc_set_data_timeout(struct mmc_data *, const struct mmc_card *); 173extern void mmc_set_data_timeout(struct mmc_data *, const struct mmc_card *);
167extern unsigned int mmc_align_data_size(struct mmc_card *, unsigned int); 174extern unsigned int mmc_align_data_size(struct mmc_card *, unsigned int);
@@ -171,6 +178,8 @@ extern void mmc_release_host(struct mmc_host *host);
171extern void mmc_do_release_host(struct mmc_host *host); 178extern void mmc_do_release_host(struct mmc_host *host);
172extern int mmc_try_claim_host(struct mmc_host *host); 179extern int mmc_try_claim_host(struct mmc_host *host);
173 180
181extern int mmc_flush_cache(struct mmc_card *);
182
174/** 183/**
175 * mmc_claim_host - exclusively claim a host 184 * mmc_claim_host - exclusively claim a host
176 * @host: mmc host to claim 185 * @host: mmc host to claim
diff --git a/include/linux/mmc/dw_mmc.h b/include/linux/mmc/dw_mmc.h
index 6b46819705d1..6dc9b80568a0 100644
--- a/include/linux/mmc/dw_mmc.h
+++ b/include/linux/mmc/dw_mmc.h
@@ -72,6 +72,8 @@ struct mmc_data;
72 * rate and timeout calculations. 72 * rate and timeout calculations.
73 * @current_speed: Configured rate of the controller. 73 * @current_speed: Configured rate of the controller.
74 * @num_slots: Number of slots available. 74 * @num_slots: Number of slots available.
75 * @verid: Denote Version ID.
76 * @data_offset: Set the offset of DATA register according to VERID.
75 * @pdev: Platform device associated with the MMC controller. 77 * @pdev: Platform device associated with the MMC controller.
76 * @pdata: Platform data associated with the MMC controller. 78 * @pdata: Platform data associated with the MMC controller.
77 * @slot: Slots sharing this MMC controller. 79 * @slot: Slots sharing this MMC controller.
@@ -147,6 +149,8 @@ struct dw_mci {
147 u32 current_speed; 149 u32 current_speed;
148 u32 num_slots; 150 u32 num_slots;
149 u32 fifoth_val; 151 u32 fifoth_val;
152 u16 verid;
153 u16 data_offset;
150 struct platform_device *pdev; 154 struct platform_device *pdev;
151 struct dw_mci_board *pdata; 155 struct dw_mci_board *pdata;
152 struct dw_mci_slot *slot[MAX_MCI_SLOTS]; 156 struct dw_mci_slot *slot[MAX_MCI_SLOTS];
diff --git a/include/linux/mmc/host.h b/include/linux/mmc/host.h
index 1d09562ccf73..a3ac9c48e5de 100644
--- a/include/linux/mmc/host.h
+++ b/include/linux/mmc/host.h
@@ -12,6 +12,7 @@
12 12
13#include <linux/leds.h> 13#include <linux/leds.h>
14#include <linux/sched.h> 14#include <linux/sched.h>
15#include <linux/fault-inject.h>
15 16
16#include <linux/mmc/core.h> 17#include <linux/mmc/core.h>
17#include <linux/mmc/pm.h> 18#include <linux/mmc/pm.h>
@@ -108,6 +109,9 @@ struct mmc_host_ops {
108 * It is optional for the host to implement pre_req and post_req in 109 * It is optional for the host to implement pre_req and post_req in
109 * order to support double buffering of requests (prepare one 110 * order to support double buffering of requests (prepare one
110 * request while another request is active). 111 * request while another request is active).
112 * pre_req() must always be followed by a post_req().
113 * To undo a call made to pre_req(), call post_req() with
114 * a nonzero err condition.
111 */ 115 */
112 void (*post_req)(struct mmc_host *host, struct mmc_request *req, 116 void (*post_req)(struct mmc_host *host, struct mmc_request *req,
113 int err); 117 int err);
@@ -147,6 +151,7 @@ struct mmc_host_ops {
147 int (*execute_tuning)(struct mmc_host *host); 151 int (*execute_tuning)(struct mmc_host *host);
148 void (*enable_preset_value)(struct mmc_host *host, bool enable); 152 void (*enable_preset_value)(struct mmc_host *host, bool enable);
149 int (*select_drive_strength)(unsigned int max_dtr, int host_drv, int card_drv); 153 int (*select_drive_strength)(unsigned int max_dtr, int host_drv, int card_drv);
154 void (*hw_reset)(struct mmc_host *host);
150}; 155};
151 156
152struct mmc_card; 157struct mmc_card;
@@ -229,8 +234,20 @@ struct mmc_host {
229#define MMC_CAP_MAX_CURRENT_600 (1 << 28) /* Host max current limit is 600mA */ 234#define MMC_CAP_MAX_CURRENT_600 (1 << 28) /* Host max current limit is 600mA */
230#define MMC_CAP_MAX_CURRENT_800 (1 << 29) /* Host max current limit is 800mA */ 235#define MMC_CAP_MAX_CURRENT_800 (1 << 29) /* Host max current limit is 800mA */
231#define MMC_CAP_CMD23 (1 << 30) /* CMD23 supported. */ 236#define MMC_CAP_CMD23 (1 << 30) /* CMD23 supported. */
237#define MMC_CAP_HW_RESET (1 << 31) /* Hardware reset */
238
239 unsigned int caps2; /* More host capabilities */
240
241#define MMC_CAP2_BOOTPART_NOACC (1 << 0) /* Boot partition no access */
242#define MMC_CAP2_CACHE_CTRL (1 << 1) /* Allow cache control */
243#define MMC_CAP2_POWEROFF_NOTIFY (1 << 2) /* Notify poweroff supported */
244#define MMC_CAP2_NO_MULTI_READ (1 << 3) /* Multiblock reads don't work */
232 245
233 mmc_pm_flag_t pm_caps; /* supported pm features */ 246 mmc_pm_flag_t pm_caps; /* supported pm features */
247 unsigned int power_notify_type;
248#define MMC_HOST_PW_NOTIFY_NONE 0
249#define MMC_HOST_PW_NOTIFY_SHORT 1
250#define MMC_HOST_PW_NOTIFY_LONG 2
234 251
235#ifdef CONFIG_MMC_CLKGATE 252#ifdef CONFIG_MMC_CLKGATE
236 int clk_requests; /* internal reference counter */ 253 int clk_requests; /* internal reference counter */
@@ -302,6 +319,10 @@ struct mmc_host {
302 319
303 struct mmc_async_req *areq; /* active async req */ 320 struct mmc_async_req *areq; /* active async req */
304 321
322#ifdef CONFIG_FAIL_MMC_REQUEST
323 struct fault_attr fail_mmc_request;
324#endif
325
305 unsigned long private[0] ____cacheline_aligned; 326 unsigned long private[0] ____cacheline_aligned;
306}; 327};
307 328
@@ -330,6 +351,8 @@ extern int mmc_power_restore_host(struct mmc_host *host);
330extern void mmc_detect_change(struct mmc_host *, unsigned long delay); 351extern void mmc_detect_change(struct mmc_host *, unsigned long delay);
331extern void mmc_request_done(struct mmc_host *, struct mmc_request *); 352extern void mmc_request_done(struct mmc_host *, struct mmc_request *);
332 353
354extern int mmc_cache_ctrl(struct mmc_host *, u8);
355
333static inline void mmc_signal_sdio_irq(struct mmc_host *host) 356static inline void mmc_signal_sdio_irq(struct mmc_host *host)
334{ 357{
335 host->ops->enable_sdio_irq(host, 0); 358 host->ops->enable_sdio_irq(host, 0);
@@ -394,4 +417,10 @@ static inline int mmc_host_cmd23(struct mmc_host *host)
394{ 417{
395 return host->caps & MMC_CAP_CMD23; 418 return host->caps & MMC_CAP_CMD23;
396} 419}
420
421static inline int mmc_boot_partition_access(struct mmc_host *host)
422{
423 return !(host->caps2 & MMC_CAP2_BOOTPART_NOACC);
424}
425
397#endif /* LINUX_MMC_HOST_H */ 426#endif /* LINUX_MMC_HOST_H */
diff --git a/include/linux/mmc/mmc.h b/include/linux/mmc/mmc.h
index 5a794cb503ea..0e7135697d11 100644
--- a/include/linux/mmc/mmc.h
+++ b/include/linux/mmc/mmc.h
@@ -270,18 +270,31 @@ struct _mmc_csd {
270 * EXT_CSD fields 270 * EXT_CSD fields
271 */ 271 */
272 272
273#define EXT_CSD_FLUSH_CACHE 32 /* W */
274#define EXT_CSD_CACHE_CTRL 33 /* R/W */
275#define EXT_CSD_POWER_OFF_NOTIFICATION 34 /* R/W */
276#define EXT_CSD_GP_SIZE_MULT 143 /* R/W */
273#define EXT_CSD_PARTITION_ATTRIBUTE 156 /* R/W */ 277#define EXT_CSD_PARTITION_ATTRIBUTE 156 /* R/W */
274#define EXT_CSD_PARTITION_SUPPORT 160 /* RO */ 278#define EXT_CSD_PARTITION_SUPPORT 160 /* RO */
279#define EXT_CSD_HPI_MGMT 161 /* R/W */
280#define EXT_CSD_RST_N_FUNCTION 162 /* R/W */
281#define EXT_CSD_SANITIZE_START 165 /* W */
275#define EXT_CSD_WR_REL_PARAM 166 /* RO */ 282#define EXT_CSD_WR_REL_PARAM 166 /* RO */
276#define EXT_CSD_ERASE_GROUP_DEF 175 /* R/W */ 283#define EXT_CSD_ERASE_GROUP_DEF 175 /* R/W */
277#define EXT_CSD_PART_CONFIG 179 /* R/W */ 284#define EXT_CSD_PART_CONFIG 179 /* R/W */
278#define EXT_CSD_ERASED_MEM_CONT 181 /* RO */ 285#define EXT_CSD_ERASED_MEM_CONT 181 /* RO */
279#define EXT_CSD_BUS_WIDTH 183 /* R/W */ 286#define EXT_CSD_BUS_WIDTH 183 /* R/W */
280#define EXT_CSD_HS_TIMING 185 /* R/W */ 287#define EXT_CSD_HS_TIMING 185 /* R/W */
288#define EXT_CSD_POWER_CLASS 187 /* R/W */
281#define EXT_CSD_REV 192 /* RO */ 289#define EXT_CSD_REV 192 /* RO */
282#define EXT_CSD_STRUCTURE 194 /* RO */ 290#define EXT_CSD_STRUCTURE 194 /* RO */
283#define EXT_CSD_CARD_TYPE 196 /* RO */ 291#define EXT_CSD_CARD_TYPE 196 /* RO */
292#define EXT_CSD_OUT_OF_INTERRUPT_TIME 198 /* RO */
284#define EXT_CSD_PART_SWITCH_TIME 199 /* RO */ 293#define EXT_CSD_PART_SWITCH_TIME 199 /* RO */
294#define EXT_CSD_PWR_CL_52_195 200 /* RO */
295#define EXT_CSD_PWR_CL_26_195 201 /* RO */
296#define EXT_CSD_PWR_CL_52_360 202 /* RO */
297#define EXT_CSD_PWR_CL_26_360 203 /* RO */
285#define EXT_CSD_SEC_CNT 212 /* RO, 4 bytes */ 298#define EXT_CSD_SEC_CNT 212 /* RO, 4 bytes */
286#define EXT_CSD_S_A_TIMEOUT 217 /* RO */ 299#define EXT_CSD_S_A_TIMEOUT 217 /* RO */
287#define EXT_CSD_REL_WR_SEC_C 222 /* RO */ 300#define EXT_CSD_REL_WR_SEC_C 222 /* RO */
@@ -293,6 +306,14 @@ struct _mmc_csd {
293#define EXT_CSD_SEC_ERASE_MULT 230 /* RO */ 306#define EXT_CSD_SEC_ERASE_MULT 230 /* RO */
294#define EXT_CSD_SEC_FEATURE_SUPPORT 231 /* RO */ 307#define EXT_CSD_SEC_FEATURE_SUPPORT 231 /* RO */
295#define EXT_CSD_TRIM_MULT 232 /* RO */ 308#define EXT_CSD_TRIM_MULT 232 /* RO */
309#define EXT_CSD_PWR_CL_200_195 236 /* RO */
310#define EXT_CSD_PWR_CL_200_360 237 /* RO */
311#define EXT_CSD_PWR_CL_DDR_52_195 238 /* RO */
312#define EXT_CSD_PWR_CL_DDR_52_360 239 /* RO */
313#define EXT_CSD_POWER_OFF_LONG_TIME 247 /* RO */
314#define EXT_CSD_GENERIC_CMD6_TIME 248 /* RO */
315#define EXT_CSD_CACHE_SIZE 249 /* RO, 4 bytes */
316#define EXT_CSD_HPI_FEATURES 503 /* RO */
296 317
297/* 318/*
298 * EXT_CSD field definitions 319 * EXT_CSD field definitions
@@ -302,7 +323,9 @@ struct _mmc_csd {
302 323
303#define EXT_CSD_PART_CONFIG_ACC_MASK (0x7) 324#define EXT_CSD_PART_CONFIG_ACC_MASK (0x7)
304#define EXT_CSD_PART_CONFIG_ACC_BOOT0 (0x1) 325#define EXT_CSD_PART_CONFIG_ACC_BOOT0 (0x1)
305#define EXT_CSD_PART_CONFIG_ACC_BOOT1 (0x2) 326#define EXT_CSD_PART_CONFIG_ACC_GP0 (0x4)
327
328#define EXT_CSD_PART_SUPPORT_PART_EN (0x1)
306 329
307#define EXT_CSD_CMD_SET_NORMAL (1<<0) 330#define EXT_CSD_CMD_SET_NORMAL (1<<0)
308#define EXT_CSD_CMD_SET_SECURE (1<<1) 331#define EXT_CSD_CMD_SET_SECURE (1<<1)
@@ -327,7 +350,20 @@ struct _mmc_csd {
327#define EXT_CSD_SEC_ER_EN BIT(0) 350#define EXT_CSD_SEC_ER_EN BIT(0)
328#define EXT_CSD_SEC_BD_BLK_EN BIT(2) 351#define EXT_CSD_SEC_BD_BLK_EN BIT(2)
329#define EXT_CSD_SEC_GB_CL_EN BIT(4) 352#define EXT_CSD_SEC_GB_CL_EN BIT(4)
353#define EXT_CSD_SEC_SANITIZE BIT(6) /* v4.5 only */
354
355#define EXT_CSD_RST_N_EN_MASK 0x3
356#define EXT_CSD_RST_N_ENABLED 1 /* RST_n is enabled on card */
357
358#define EXT_CSD_NO_POWER_NOTIFICATION 0
359#define EXT_CSD_POWER_ON 1
360#define EXT_CSD_POWER_OFF_SHORT 2
361#define EXT_CSD_POWER_OFF_LONG 3
330 362
363#define EXT_CSD_PWR_CL_8BIT_MASK 0xF0 /* 8 bit PWR CLS */
364#define EXT_CSD_PWR_CL_4BIT_MASK 0x0F /* 8 bit PWR CLS */
365#define EXT_CSD_PWR_CL_8BIT_SHIFT 4
366#define EXT_CSD_PWR_CL_4BIT_SHIFT 0
331/* 367/*
332 * MMC_SWITCH access modes 368 * MMC_SWITCH access modes
333 */ 369 */
diff --git a/include/linux/mmc/sdhci.h b/include/linux/mmc/sdhci.h
index 5666f3abfab7..e4b69353678d 100644
--- a/include/linux/mmc/sdhci.h
+++ b/include/linux/mmc/sdhci.h
@@ -88,6 +88,10 @@ struct sdhci_host {
88/* The read-only detection via SDHCI_PRESENT_STATE register is unstable */ 88/* The read-only detection via SDHCI_PRESENT_STATE register is unstable */
89#define SDHCI_QUIRK_UNSTABLE_RO_DETECT (1<<31) 89#define SDHCI_QUIRK_UNSTABLE_RO_DETECT (1<<31)
90 90
91 unsigned int quirks2; /* More deviations from spec. */
92
93#define SDHCI_QUIRK2_OWN_CARD_DETECTION (1<<0)
94
91 int irq; /* Device IRQ */ 95 int irq; /* Device IRQ */
92 void __iomem *ioaddr; /* Mapped address */ 96 void __iomem *ioaddr; /* Mapped address */
93 97
@@ -115,6 +119,8 @@ struct sdhci_host {
115#define SDHCI_NEEDS_RETUNING (1<<5) /* Host needs retuning */ 119#define SDHCI_NEEDS_RETUNING (1<<5) /* Host needs retuning */
116#define SDHCI_AUTO_CMD12 (1<<6) /* Auto CMD12 support */ 120#define SDHCI_AUTO_CMD12 (1<<6) /* Auto CMD12 support */
117#define SDHCI_AUTO_CMD23 (1<<7) /* Auto CMD23 support */ 121#define SDHCI_AUTO_CMD23 (1<<7) /* Auto CMD23 support */
122#define SDHCI_PV_ENABLED (1<<8) /* Preset value enabled */
123#define SDHCI_SDIO_IRQ_ENABLED (1<<9) /* SDIO irq enabled */
118 124
119 unsigned int version; /* SDHCI spec. version */ 125 unsigned int version; /* SDHCI spec. version */
120 126
@@ -125,6 +131,8 @@ struct sdhci_host {
125 unsigned int clock; /* Current clock (MHz) */ 131 unsigned int clock; /* Current clock (MHz) */
126 u8 pwr; /* Current voltage */ 132 u8 pwr; /* Current voltage */
127 133
134 bool runtime_suspended; /* Host is runtime suspended */
135
128 struct mmc_request *mrq; /* Current request */ 136 struct mmc_request *mrq; /* Current request */
129 struct mmc_command *cmd; /* Current command */ 137 struct mmc_command *cmd; /* Current command */
130 struct mmc_data *data; /* Current data request */ 138 struct mmc_data *data; /* Current data request */
diff --git a/include/linux/mmc/sdio.h b/include/linux/mmc/sdio.h
index 2a2e9905a247..e0b1123497b9 100644
--- a/include/linux/mmc/sdio.h
+++ b/include/linux/mmc/sdio.h
@@ -72,11 +72,13 @@
72#define SDIO_CCCR_REV_1_00 0 /* CCCR/FBR Version 1.00 */ 72#define SDIO_CCCR_REV_1_00 0 /* CCCR/FBR Version 1.00 */
73#define SDIO_CCCR_REV_1_10 1 /* CCCR/FBR Version 1.10 */ 73#define SDIO_CCCR_REV_1_10 1 /* CCCR/FBR Version 1.10 */
74#define SDIO_CCCR_REV_1_20 2 /* CCCR/FBR Version 1.20 */ 74#define SDIO_CCCR_REV_1_20 2 /* CCCR/FBR Version 1.20 */
75#define SDIO_CCCR_REV_3_00 3 /* CCCR/FBR Version 3.00 */
75 76
76#define SDIO_SDIO_REV_1_00 0 /* SDIO Spec Version 1.00 */ 77#define SDIO_SDIO_REV_1_00 0 /* SDIO Spec Version 1.00 */
77#define SDIO_SDIO_REV_1_10 1 /* SDIO Spec Version 1.10 */ 78#define SDIO_SDIO_REV_1_10 1 /* SDIO Spec Version 1.10 */
78#define SDIO_SDIO_REV_1_20 2 /* SDIO Spec Version 1.20 */ 79#define SDIO_SDIO_REV_1_20 2 /* SDIO Spec Version 1.20 */
79#define SDIO_SDIO_REV_2_00 3 /* SDIO Spec Version 2.00 */ 80#define SDIO_SDIO_REV_2_00 3 /* SDIO Spec Version 2.00 */
81#define SDIO_SDIO_REV_3_00 4 /* SDIO Spec Version 3.00 */
80 82
81#define SDIO_CCCR_SD 0x01 83#define SDIO_CCCR_SD 0x01
82 84
diff --git a/include/linux/mmc/sh_mmcif.h b/include/linux/mmc/sh_mmcif.h
index 0222cd8ebe76..04ff452bf5c3 100644
--- a/include/linux/mmc/sh_mmcif.h
+++ b/include/linux/mmc/sh_mmcif.h
@@ -41,7 +41,9 @@ struct sh_mmcif_plat_data {
41 void (*set_pwr)(struct platform_device *pdev, int state); 41 void (*set_pwr)(struct platform_device *pdev, int state);
42 void (*down_pwr)(struct platform_device *pdev); 42 void (*down_pwr)(struct platform_device *pdev);
43 int (*get_cd)(struct platform_device *pdef); 43 int (*get_cd)(struct platform_device *pdef);
44 struct sh_mmcif_dma *dma; 44 struct sh_mmcif_dma *dma; /* Deprecated. Instead */
45 unsigned int slave_id_tx; /* use embedded slave_id_[tr]x */
46 unsigned int slave_id_rx;
45 u8 sup_pclk; /* 1 :SH7757, 0: SH7724/SH7372 */ 47 u8 sup_pclk; /* 1 :SH7757, 0: SH7724/SH7372 */
46 unsigned long caps; 48 unsigned long caps;
47 u32 ocr; 49 u32 ocr;
diff --git a/include/linux/mmc/sh_mobile_sdhi.h b/include/linux/mmc/sh_mobile_sdhi.h
index bd50b365167f..71b805451bd8 100644
--- a/include/linux/mmc/sh_mobile_sdhi.h
+++ b/include/linux/mmc/sh_mobile_sdhi.h
@@ -6,6 +6,10 @@
6struct platform_device; 6struct platform_device;
7struct tmio_mmc_data; 7struct tmio_mmc_data;
8 8
9#define SH_MOBILE_SDHI_IRQ_CARD_DETECT "card_detect"
10#define SH_MOBILE_SDHI_IRQ_SDCARD "sdcard"
11#define SH_MOBILE_SDHI_IRQ_SDIO "sdio"
12
9struct sh_mobile_sdhi_info { 13struct sh_mobile_sdhi_info {
10 int dma_slave_tx; 14 int dma_slave_tx;
11 int dma_slave_rx; 15 int dma_slave_rx;
diff --git a/include/linux/mmiotrace.h b/include/linux/mmiotrace.h
index 97491f78b08c..c5d52780d6a0 100644
--- a/include/linux/mmiotrace.h
+++ b/include/linux/mmiotrace.h
@@ -49,8 +49,7 @@ extern void mmiotrace_ioremap(resource_size_t offset, unsigned long size,
49extern void mmiotrace_iounmap(volatile void __iomem *addr); 49extern void mmiotrace_iounmap(volatile void __iomem *addr);
50 50
51/* For anyone to insert markers. Remember trailing newline. */ 51/* For anyone to insert markers. Remember trailing newline. */
52extern int mmiotrace_printk(const char *fmt, ...) 52extern __printf(1, 2) int mmiotrace_printk(const char *fmt, ...);
53 __attribute__ ((format (printf, 1, 2)));
54#else /* !CONFIG_MMIOTRACE: */ 53#else /* !CONFIG_MMIOTRACE: */
55static inline int is_kmmio_active(void) 54static inline int is_kmmio_active(void)
56{ 55{
@@ -71,10 +70,7 @@ static inline void mmiotrace_iounmap(volatile void __iomem *addr)
71{ 70{
72} 71}
73 72
74static inline int mmiotrace_printk(const char *fmt, ...) 73static inline __printf(1, 2) int mmiotrace_printk(const char *fmt, ...)
75 __attribute__ ((format (printf, 1, 0)));
76
77static inline int mmiotrace_printk(const char *fmt, ...)
78{ 74{
79 return 0; 75 return 0;
80} 76}
diff --git a/include/linux/mmzone.h b/include/linux/mmzone.h
index be1ac8d7789b..188cb2ffe8db 100644
--- a/include/linux/mmzone.h
+++ b/include/linux/mmzone.h
@@ -100,6 +100,7 @@ enum zone_stat_item {
100 NR_UNSTABLE_NFS, /* NFS unstable pages */ 100 NR_UNSTABLE_NFS, /* NFS unstable pages */
101 NR_BOUNCE, 101 NR_BOUNCE,
102 NR_VMSCAN_WRITE, 102 NR_VMSCAN_WRITE,
103 NR_VMSCAN_IMMEDIATE, /* Prioritise for reclaim when writeback ends */
103 NR_WRITEBACK_TEMP, /* Writeback using temporary buffers */ 104 NR_WRITEBACK_TEMP, /* Writeback using temporary buffers */
104 NR_ISOLATED_ANON, /* Temporary isolated pages from anon lru */ 105 NR_ISOLATED_ANON, /* Temporary isolated pages from anon lru */
105 NR_ISOLATED_FILE, /* Temporary isolated pages from file lru */ 106 NR_ISOLATED_FILE, /* Temporary isolated pages from file lru */
@@ -164,6 +165,18 @@ static inline int is_unevictable_lru(enum lru_list l)
164#define LRU_ALL_EVICTABLE (LRU_ALL_FILE | LRU_ALL_ANON) 165#define LRU_ALL_EVICTABLE (LRU_ALL_FILE | LRU_ALL_ANON)
165#define LRU_ALL ((1 << NR_LRU_LISTS) - 1) 166#define LRU_ALL ((1 << NR_LRU_LISTS) - 1)
166 167
168/* Isolate inactive pages */
169#define ISOLATE_INACTIVE ((__force isolate_mode_t)0x1)
170/* Isolate active pages */
171#define ISOLATE_ACTIVE ((__force isolate_mode_t)0x2)
172/* Isolate clean file */
173#define ISOLATE_CLEAN ((__force isolate_mode_t)0x4)
174/* Isolate unmapped file */
175#define ISOLATE_UNMAPPED ((__force isolate_mode_t)0x8)
176
177/* LRU Isolation modes. */
178typedef unsigned __bitwise__ isolate_mode_t;
179
167enum zone_watermarks { 180enum zone_watermarks {
168 WMARK_MIN, 181 WMARK_MIN,
169 WMARK_LOW, 182 WMARK_LOW,
diff --git a/include/linux/mod_devicetable.h b/include/linux/mod_devicetable.h
index ae28e93fd072..468819cdde87 100644
--- a/include/linux/mod_devicetable.h
+++ b/include/linux/mod_devicetable.h
@@ -405,6 +405,15 @@ struct virtio_device_id {
405}; 405};
406#define VIRTIO_DEV_ANY_ID 0xffffffff 406#define VIRTIO_DEV_ANY_ID 0xffffffff
407 407
408/*
409 * For Hyper-V devices we use the device guid as the id.
410 */
411struct hv_vmbus_device_id {
412 __u8 guid[16];
413 kernel_ulong_t driver_data /* Data private to the driver */
414 __attribute__((aligned(sizeof(kernel_ulong_t))));
415};
416
408/* i2c */ 417/* i2c */
409 418
410#define I2C_NAME_SIZE 20 419#define I2C_NAME_SIZE 20
diff --git a/include/linux/module.h b/include/linux/module.h
index 1c30087a2d81..863921637d9f 100644
--- a/include/linux/module.h
+++ b/include/linux/module.h
@@ -580,9 +580,6 @@ int unregister_module_notifier(struct notifier_block * nb);
580 580
581extern void print_modules(void); 581extern void print_modules(void);
582 582
583extern void module_update_tracepoints(void);
584extern int module_get_iter_tracepoints(struct tracepoint_iter *iter);
585
586#else /* !CONFIG_MODULES... */ 583#else /* !CONFIG_MODULES... */
587#define EXPORT_SYMBOL(sym) 584#define EXPORT_SYMBOL(sym)
588#define EXPORT_SYMBOL_GPL(sym) 585#define EXPORT_SYMBOL_GPL(sym)
@@ -698,15 +695,6 @@ static inline int unregister_module_notifier(struct notifier_block * nb)
698static inline void print_modules(void) 695static inline void print_modules(void)
699{ 696{
700} 697}
701
702static inline void module_update_tracepoints(void)
703{
704}
705
706static inline int module_get_iter_tracepoints(struct tracepoint_iter *iter)
707{
708 return 0;
709}
710#endif /* CONFIG_MODULES */ 698#endif /* CONFIG_MODULES */
711 699
712#ifdef CONFIG_SYSFS 700#ifdef CONFIG_SYSFS
diff --git a/include/linux/moduleparam.h b/include/linux/moduleparam.h
index ddaae98c53f9..fffb10bd5514 100644
--- a/include/linux/moduleparam.h
+++ b/include/linux/moduleparam.h
@@ -262,6 +262,26 @@ static inline void __kernel_param_unlock(void)
262 .str = &__param_string_##name, 0, perm); \ 262 .str = &__param_string_##name, 0, perm); \
263 __MODULE_PARM_TYPE(name, "string") 263 __MODULE_PARM_TYPE(name, "string")
264 264
265/**
266 * parameq - checks if two parameter names match
267 * @name1: parameter name 1
268 * @name2: parameter name 2
269 *
270 * Returns true if the two parameter names are equal.
271 * Dashes (-) are considered equal to underscores (_).
272 */
273extern bool parameq(const char *name1, const char *name2);
274
275/**
276 * parameqn - checks if two parameter names match
277 * @name1: parameter name 1
278 * @name2: parameter name 2
279 * @n: the length to compare
280 *
281 * Similar to parameq(), except it compares @n characters.
282 */
283extern bool parameqn(const char *name1, const char *name2, size_t n);
284
265/* Called on module insert or kernel boot */ 285/* Called on module insert or kernel boot */
266extern int parse_args(const char *name, 286extern int parse_args(const char *name,
267 char *args, 287 char *args,
diff --git a/include/linux/net_tstamp.h b/include/linux/net_tstamp.h
index a3b8546354ac..ae5df122e42f 100644
--- a/include/linux/net_tstamp.h
+++ b/include/linux/net_tstamp.h
@@ -45,7 +45,7 @@ struct hwtstamp_config {
45}; 45};
46 46
47/* possible values for hwtstamp_config->tx_type */ 47/* possible values for hwtstamp_config->tx_type */
48enum { 48enum hwtstamp_tx_types {
49 /* 49 /*
50 * No outgoing packet will need hardware time stamping; 50 * No outgoing packet will need hardware time stamping;
51 * should a packet arrive which asks for it, no hardware 51 * should a packet arrive which asks for it, no hardware
@@ -60,10 +60,19 @@ enum {
60 * before sending the packet. 60 * before sending the packet.
61 */ 61 */
62 HWTSTAMP_TX_ON, 62 HWTSTAMP_TX_ON,
63
64 /*
65 * Enables time stamping for outgoing packets just as
66 * HWTSTAMP_TX_ON does, but also enables time stamp insertion
67 * directly into Sync packets. In this case, transmitted Sync
68 * packets will not received a time stamp via the socket error
69 * queue.
70 */
71 HWTSTAMP_TX_ONESTEP_SYNC,
63}; 72};
64 73
65/* possible values for hwtstamp_config->rx_filter */ 74/* possible values for hwtstamp_config->rx_filter */
66enum { 75enum hwtstamp_rx_filters {
67 /* time stamp no incoming packet at all */ 76 /* time stamp no incoming packet at all */
68 HWTSTAMP_FILTER_NONE, 77 HWTSTAMP_FILTER_NONE,
69 78
diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h
index ddee79bb8f15..cbeb5867cff7 100644
--- a/include/linux/netdevice.h
+++ b/include/linux/netdevice.h
@@ -31,7 +31,7 @@
31#include <linux/if_link.h> 31#include <linux/if_link.h>
32 32
33#ifdef __KERNEL__ 33#ifdef __KERNEL__
34#include <linux/pm_qos_params.h> 34#include <linux/pm_qos.h>
35#include <linux/timer.h> 35#include <linux/timer.h>
36#include <linux/delay.h> 36#include <linux/delay.h>
37#include <linux/atomic.h> 37#include <linux/atomic.h>
@@ -723,9 +723,8 @@ struct netdev_tc_txq {
723 * 723 *
724 * void (*ndo_set_rx_mode)(struct net_device *dev); 724 * void (*ndo_set_rx_mode)(struct net_device *dev);
725 * This function is called device changes address list filtering. 725 * This function is called device changes address list filtering.
726 * 726 * If driver handles unicast address filtering, it should set
727 * void (*ndo_set_multicast_list)(struct net_device *dev); 727 * IFF_UNICAST_FLT to its priv_flags.
728 * This function is called when the multicast address list changes.
729 * 728 *
730 * int (*ndo_set_mac_address)(struct net_device *dev, void *addr); 729 * int (*ndo_set_mac_address)(struct net_device *dev, void *addr);
731 * This function is called when the Media Access Control address 730 * This function is called when the Media Access Control address
@@ -782,6 +781,7 @@ struct netdev_tc_txq {
782 * int (*ndo_set_vf_mac)(struct net_device *dev, int vf, u8* mac); 781 * int (*ndo_set_vf_mac)(struct net_device *dev, int vf, u8* mac);
783 * int (*ndo_set_vf_vlan)(struct net_device *dev, int vf, u16 vlan, u8 qos); 782 * int (*ndo_set_vf_vlan)(struct net_device *dev, int vf, u16 vlan, u8 qos);
784 * int (*ndo_set_vf_tx_rate)(struct net_device *dev, int vf, int rate); 783 * int (*ndo_set_vf_tx_rate)(struct net_device *dev, int vf, int rate);
784 * int (*ndo_set_vf_spoofchk)(struct net_device *dev, int vf, bool setting);
785 * int (*ndo_get_vf_config)(struct net_device *dev, 785 * int (*ndo_get_vf_config)(struct net_device *dev,
786 * int vf, struct ifla_vf_info *ivf); 786 * int vf, struct ifla_vf_info *ivf);
787 * int (*ndo_set_vf_port)(struct net_device *dev, int vf, 787 * int (*ndo_set_vf_port)(struct net_device *dev, int vf,
@@ -868,7 +868,6 @@ struct net_device_ops {
868 void (*ndo_change_rx_flags)(struct net_device *dev, 868 void (*ndo_change_rx_flags)(struct net_device *dev,
869 int flags); 869 int flags);
870 void (*ndo_set_rx_mode)(struct net_device *dev); 870 void (*ndo_set_rx_mode)(struct net_device *dev);
871 void (*ndo_set_multicast_list)(struct net_device *dev);
872 int (*ndo_set_mac_address)(struct net_device *dev, 871 int (*ndo_set_mac_address)(struct net_device *dev,
873 void *addr); 872 void *addr);
874 int (*ndo_validate_addr)(struct net_device *dev); 873 int (*ndo_validate_addr)(struct net_device *dev);
@@ -902,6 +901,8 @@ struct net_device_ops {
902 int queue, u16 vlan, u8 qos); 901 int queue, u16 vlan, u8 qos);
903 int (*ndo_set_vf_tx_rate)(struct net_device *dev, 902 int (*ndo_set_vf_tx_rate)(struct net_device *dev,
904 int vf, int rate); 903 int vf, int rate);
904 int (*ndo_set_vf_spoofchk)(struct net_device *dev,
905 int vf, bool setting);
905 int (*ndo_get_vf_config)(struct net_device *dev, 906 int (*ndo_get_vf_config)(struct net_device *dev,
906 int vf, 907 int vf,
907 struct ifla_vf_info *ivf); 908 struct ifla_vf_info *ivf);
@@ -924,11 +925,15 @@ struct net_device_ops {
924 u16 xid, 925 u16 xid,
925 struct scatterlist *sgl, 926 struct scatterlist *sgl,
926 unsigned int sgc); 927 unsigned int sgc);
928#endif
929
930#if defined(CONFIG_LIBFCOE) || defined(CONFIG_LIBFCOE_MODULE)
927#define NETDEV_FCOE_WWNN 0 931#define NETDEV_FCOE_WWNN 0
928#define NETDEV_FCOE_WWPN 1 932#define NETDEV_FCOE_WWPN 1
929 int (*ndo_fcoe_get_wwn)(struct net_device *dev, 933 int (*ndo_fcoe_get_wwn)(struct net_device *dev,
930 u64 *wwn, int type); 934 u64 *wwn, int type);
931#endif 935#endif
936
932#ifdef CONFIG_RFS_ACCEL 937#ifdef CONFIG_RFS_ACCEL
933 int (*ndo_rx_flow_steer)(struct net_device *dev, 938 int (*ndo_rx_flow_steer)(struct net_device *dev,
934 const struct sk_buff *skb, 939 const struct sk_buff *skb,
@@ -964,7 +969,7 @@ struct net_device {
964 */ 969 */
965 char name[IFNAMSIZ]; 970 char name[IFNAMSIZ];
966 971
967 struct pm_qos_request_list pm_qos_req; 972 struct pm_qos_request pm_qos_req;
968 973
969 /* device name hash chain */ 974 /* device name hash chain */
970 struct hlist_node name_hlist; 975 struct hlist_node name_hlist;
@@ -2587,9 +2592,6 @@ static inline int netif_is_bond_slave(struct net_device *dev)
2587 2592
2588extern struct pernet_operations __net_initdata loopback_net_ops; 2593extern struct pernet_operations __net_initdata loopback_net_ops;
2589 2594
2590int dev_ethtool_get_settings(struct net_device *dev,
2591 struct ethtool_cmd *cmd);
2592
2593static inline u32 dev_ethtool_get_rx_csum(struct net_device *dev) 2595static inline u32 dev_ethtool_get_rx_csum(struct net_device *dev)
2594{ 2596{
2595 if (dev->features & NETIF_F_RXCSUM) 2597 if (dev->features & NETIF_F_RXCSUM)
@@ -2617,23 +2619,26 @@ static inline const char *netdev_name(const struct net_device *dev)
2617 return dev->name; 2619 return dev->name;
2618} 2620}
2619 2621
2620extern int netdev_printk(const char *level, const struct net_device *dev, 2622extern int __netdev_printk(const char *level, const struct net_device *dev,
2621 const char *format, ...) 2623 struct va_format *vaf);
2622 __attribute__ ((format (printf, 3, 4))); 2624
2623extern int netdev_emerg(const struct net_device *dev, const char *format, ...) 2625extern __printf(3, 4)
2624 __attribute__ ((format (printf, 2, 3))); 2626int netdev_printk(const char *level, const struct net_device *dev,
2625extern int netdev_alert(const struct net_device *dev, const char *format, ...) 2627 const char *format, ...);
2626 __attribute__ ((format (printf, 2, 3))); 2628extern __printf(2, 3)
2627extern int netdev_crit(const struct net_device *dev, const char *format, ...) 2629int netdev_emerg(const struct net_device *dev, const char *format, ...);
2628 __attribute__ ((format (printf, 2, 3))); 2630extern __printf(2, 3)
2629extern int netdev_err(const struct net_device *dev, const char *format, ...) 2631int netdev_alert(const struct net_device *dev, const char *format, ...);
2630 __attribute__ ((format (printf, 2, 3))); 2632extern __printf(2, 3)
2631extern int netdev_warn(const struct net_device *dev, const char *format, ...) 2633int netdev_crit(const struct net_device *dev, const char *format, ...);
2632 __attribute__ ((format (printf, 2, 3))); 2634extern __printf(2, 3)
2633extern int netdev_notice(const struct net_device *dev, const char *format, ...) 2635int netdev_err(const struct net_device *dev, const char *format, ...);
2634 __attribute__ ((format (printf, 2, 3))); 2636extern __printf(2, 3)
2635extern int netdev_info(const struct net_device *dev, const char *format, ...) 2637int netdev_warn(const struct net_device *dev, const char *format, ...);
2636 __attribute__ ((format (printf, 2, 3))); 2638extern __printf(2, 3)
2639int netdev_notice(const struct net_device *dev, const char *format, ...);
2640extern __printf(2, 3)
2641int netdev_info(const struct net_device *dev, const char *format, ...);
2637 2642
2638#define MODULE_ALIAS_NETDEV(device) \ 2643#define MODULE_ALIAS_NETDEV(device) \
2639 MODULE_ALIAS("netdev-" device) 2644 MODULE_ALIAS("netdev-" device)
@@ -2644,8 +2649,7 @@ extern int netdev_info(const struct net_device *dev, const char *format, ...)
2644#elif defined(CONFIG_DYNAMIC_DEBUG) 2649#elif defined(CONFIG_DYNAMIC_DEBUG)
2645#define netdev_dbg(__dev, format, args...) \ 2650#define netdev_dbg(__dev, format, args...) \
2646do { \ 2651do { \
2647 dynamic_dev_dbg((__dev)->dev.parent, "%s: " format, \ 2652 dynamic_netdev_dbg(__dev, format, ##args); \
2648 netdev_name(__dev), ##args); \
2649} while (0) 2653} while (0)
2650#else 2654#else
2651#define netdev_dbg(__dev, format, args...) \ 2655#define netdev_dbg(__dev, format, args...) \
@@ -2712,9 +2716,7 @@ do { \
2712#define netif_dbg(priv, type, netdev, format, args...) \ 2716#define netif_dbg(priv, type, netdev, format, args...) \
2713do { \ 2717do { \
2714 if (netif_msg_##type(priv)) \ 2718 if (netif_msg_##type(priv)) \
2715 dynamic_dev_dbg((netdev)->dev.parent, \ 2719 dynamic_netdev_dbg(netdev, format, ##args); \
2716 "%s: " format, \
2717 netdev_name(netdev), ##args); \
2718} while (0) 2720} while (0)
2719#else 2721#else
2720#define netif_dbg(priv, type, dev, format, args...) \ 2722#define netif_dbg(priv, type, dev, format, args...) \
diff --git a/include/linux/netfilter/xt_connlimit.h b/include/linux/netfilter/xt_connlimit.h
index 0ca66e97acbc..d1366f05d1b2 100644
--- a/include/linux/netfilter/xt_connlimit.h
+++ b/include/linux/netfilter/xt_connlimit.h
@@ -2,6 +2,7 @@
2#define _XT_CONNLIMIT_H 2#define _XT_CONNLIMIT_H
3 3
4#include <linux/types.h> 4#include <linux/types.h>
5#include <linux/netfilter.h>
5 6
6struct xt_connlimit_data; 7struct xt_connlimit_data;
7 8
diff --git a/include/linux/netfilter/xt_conntrack.h b/include/linux/netfilter/xt_conntrack.h
index 74b904d8f99c..e3c041d54020 100644
--- a/include/linux/netfilter/xt_conntrack.h
+++ b/include/linux/netfilter/xt_conntrack.h
@@ -6,6 +6,7 @@
6#define _XT_CONNTRACK_H 6#define _XT_CONNTRACK_H
7 7
8#include <linux/types.h> 8#include <linux/types.h>
9#include <linux/netfilter.h>
9#include <linux/netfilter/nf_conntrack_tuple_common.h> 10#include <linux/netfilter/nf_conntrack_tuple_common.h>
10 11
11#define XT_CONNTRACK_STATE_BIT(ctinfo) (1 << ((ctinfo)%IP_CT_IS_REPLY+1)) 12#define XT_CONNTRACK_STATE_BIT(ctinfo) (1 << ((ctinfo)%IP_CT_IS_REPLY+1))
diff --git a/include/linux/netfilter/xt_iprange.h b/include/linux/netfilter/xt_iprange.h
index c1f21a779a45..25fd7cf851f0 100644
--- a/include/linux/netfilter/xt_iprange.h
+++ b/include/linux/netfilter/xt_iprange.h
@@ -2,6 +2,7 @@
2#define _LINUX_NETFILTER_XT_IPRANGE_H 1 2#define _LINUX_NETFILTER_XT_IPRANGE_H 1
3 3
4#include <linux/types.h> 4#include <linux/types.h>
5#include <linux/netfilter.h>
5 6
6enum { 7enum {
7 IPRANGE_SRC = 1 << 0, /* match source IP address */ 8 IPRANGE_SRC = 1 << 0, /* match source IP address */
diff --git a/include/linux/netfilter_arp/arp_tables.h b/include/linux/netfilter_arp/arp_tables.h
index adbf4bff87ed..e08565d45178 100644
--- a/include/linux/netfilter_arp/arp_tables.h
+++ b/include/linux/netfilter_arp/arp_tables.h
@@ -52,7 +52,7 @@ struct arpt_arp {
52 struct in_addr smsk, tmsk; 52 struct in_addr smsk, tmsk;
53 53
54 /* Device hw address length, src+target device addresses */ 54 /* Device hw address length, src+target device addresses */
55 u_int8_t arhln, arhln_mask; 55 __u8 arhln, arhln_mask;
56 struct arpt_devaddr_info src_devaddr; 56 struct arpt_devaddr_info src_devaddr;
57 struct arpt_devaddr_info tgt_devaddr; 57 struct arpt_devaddr_info tgt_devaddr;
58 58
@@ -71,9 +71,9 @@ struct arpt_arp {
71 unsigned char iniface_mask[IFNAMSIZ], outiface_mask[IFNAMSIZ]; 71 unsigned char iniface_mask[IFNAMSIZ], outiface_mask[IFNAMSIZ];
72 72
73 /* Flags word */ 73 /* Flags word */
74 u_int8_t flags; 74 __u8 flags;
75 /* Inverse flags */ 75 /* Inverse flags */
76 u_int16_t invflags; 76 __u16 invflags;
77}; 77};
78 78
79/* Values for "flag" field in struct arpt_ip (general arp structure). 79/* Values for "flag" field in struct arpt_ip (general arp structure).
@@ -102,9 +102,9 @@ struct arpt_entry
102 struct arpt_arp arp; 102 struct arpt_arp arp;
103 103
104 /* Size of arpt_entry + matches */ 104 /* Size of arpt_entry + matches */
105 u_int16_t target_offset; 105 __u16 target_offset;
106 /* Size of arpt_entry + matches + target */ 106 /* Size of arpt_entry + matches + target */
107 u_int16_t next_offset; 107 __u16 next_offset;
108 108
109 /* Back pointer */ 109 /* Back pointer */
110 unsigned int comefrom; 110 unsigned int comefrom;
@@ -260,8 +260,8 @@ extern unsigned int arpt_do_table(struct sk_buff *skb,
260 260
261struct compat_arpt_entry { 261struct compat_arpt_entry {
262 struct arpt_arp arp; 262 struct arpt_arp arp;
263 u_int16_t target_offset; 263 __u16 target_offset;
264 u_int16_t next_offset; 264 __u16 next_offset;
265 compat_uint_t comefrom; 265 compat_uint_t comefrom;
266 struct compat_xt_counters counters; 266 struct compat_xt_counters counters;
267 unsigned char elems[0]; 267 unsigned char elems[0];
diff --git a/include/linux/netfilter_decnet.h b/include/linux/netfilter_decnet.h
index 6f425369ee29..0b09732aacd5 100644
--- a/include/linux/netfilter_decnet.h
+++ b/include/linux/netfilter_decnet.h
@@ -11,6 +11,9 @@
11 11
12/* only for userspace compatibility */ 12/* only for userspace compatibility */
13#ifndef __KERNEL__ 13#ifndef __KERNEL__
14
15#include <limits.h> /* for INT_MIN, INT_MAX */
16
14/* IP Cache bits. */ 17/* IP Cache bits. */
15/* Src IP address. */ 18/* Src IP address. */
16#define NFC_DN_SRC 0x0001 19#define NFC_DN_SRC 0x0001
diff --git a/include/linux/netfilter_ipv4.h b/include/linux/netfilter_ipv4.h
index 29c7727ff0e8..fa0946c549d3 100644
--- a/include/linux/netfilter_ipv4.h
+++ b/include/linux/netfilter_ipv4.h
@@ -9,6 +9,9 @@
9 9
10/* only for userspace compatibility */ 10/* only for userspace compatibility */
11#ifndef __KERNEL__ 11#ifndef __KERNEL__
12
13#include <limits.h> /* for INT_MIN, INT_MAX */
14
12/* IP Cache bits. */ 15/* IP Cache bits. */
13/* Src IP address. */ 16/* Src IP address. */
14#define NFC_IP_SRC 0x0001 17#define NFC_IP_SRC 0x0001
diff --git a/include/linux/netfilter_ipv4/ip_tables.h b/include/linux/netfilter_ipv4/ip_tables.h
index 64a5d95c58e8..db79231914ce 100644
--- a/include/linux/netfilter_ipv4/ip_tables.h
+++ b/include/linux/netfilter_ipv4/ip_tables.h
@@ -81,12 +81,12 @@ struct ipt_ip {
81 unsigned char iniface_mask[IFNAMSIZ], outiface_mask[IFNAMSIZ]; 81 unsigned char iniface_mask[IFNAMSIZ], outiface_mask[IFNAMSIZ];
82 82
83 /* Protocol, 0 = ANY */ 83 /* Protocol, 0 = ANY */
84 u_int16_t proto; 84 __u16 proto;
85 85
86 /* Flags word */ 86 /* Flags word */
87 u_int8_t flags; 87 __u8 flags;
88 /* Inverse flags */ 88 /* Inverse flags */
89 u_int8_t invflags; 89 __u8 invflags;
90}; 90};
91 91
92/* Values for "flag" field in struct ipt_ip (general ip structure). */ 92/* Values for "flag" field in struct ipt_ip (general ip structure). */
@@ -114,9 +114,9 @@ struct ipt_entry {
114 unsigned int nfcache; 114 unsigned int nfcache;
115 115
116 /* Size of ipt_entry + matches */ 116 /* Size of ipt_entry + matches */
117 u_int16_t target_offset; 117 __u16 target_offset;
118 /* Size of ipt_entry + matches + target */ 118 /* Size of ipt_entry + matches + target */
119 u_int16_t next_offset; 119 __u16 next_offset;
120 120
121 /* Back pointer */ 121 /* Back pointer */
122 unsigned int comefrom; 122 unsigned int comefrom;
@@ -149,9 +149,9 @@ struct ipt_entry {
149 149
150/* ICMP matching stuff */ 150/* ICMP matching stuff */
151struct ipt_icmp { 151struct ipt_icmp {
152 u_int8_t type; /* type to match */ 152 __u8 type; /* type to match */
153 u_int8_t code[2]; /* range of code */ 153 __u8 code[2]; /* range of code */
154 u_int8_t invflags; /* Inverse flags */ 154 __u8 invflags; /* Inverse flags */
155}; 155};
156 156
157/* Values for "inv" field for struct ipt_icmp. */ 157/* Values for "inv" field for struct ipt_icmp. */
@@ -288,8 +288,8 @@ extern unsigned int ipt_do_table(struct sk_buff *skb,
288struct compat_ipt_entry { 288struct compat_ipt_entry {
289 struct ipt_ip ip; 289 struct ipt_ip ip;
290 compat_uint_t nfcache; 290 compat_uint_t nfcache;
291 u_int16_t target_offset; 291 __u16 target_offset;
292 u_int16_t next_offset; 292 __u16 next_offset;
293 compat_uint_t comefrom; 293 compat_uint_t comefrom;
294 struct compat_xt_counters counters; 294 struct compat_xt_counters counters;
295 unsigned char elems[0]; 295 unsigned char elems[0];
diff --git a/include/linux/netfilter_ipv6.h b/include/linux/netfilter_ipv6.h
index 1f7e300094cd..57c025127f1d 100644
--- a/include/linux/netfilter_ipv6.h
+++ b/include/linux/netfilter_ipv6.h
@@ -12,6 +12,9 @@
12 12
13/* only for userspace compatibility */ 13/* only for userspace compatibility */
14#ifndef __KERNEL__ 14#ifndef __KERNEL__
15
16#include <limits.h> /* for INT_MIN, INT_MAX */
17
15/* IP Cache bits. */ 18/* IP Cache bits. */
16/* Src IP address. */ 19/* Src IP address. */
17#define NFC_IP6_SRC 0x0001 20#define NFC_IP6_SRC 0x0001
diff --git a/include/linux/netfilter_ipv6/ip6_tables.h b/include/linux/netfilter_ipv6/ip6_tables.h
index c9784f7a9c1f..f549adccc94c 100644
--- a/include/linux/netfilter_ipv6/ip6_tables.h
+++ b/include/linux/netfilter_ipv6/ip6_tables.h
@@ -81,14 +81,14 @@ struct ip6t_ip6 {
81 * MH do not match any packets. 81 * MH do not match any packets.
82 * - You also need to set IP6T_FLAGS_PROTO to "flags" to check protocol. 82 * - You also need to set IP6T_FLAGS_PROTO to "flags" to check protocol.
83 */ 83 */
84 u_int16_t proto; 84 __u16 proto;
85 /* TOS to match iff flags & IP6T_F_TOS */ 85 /* TOS to match iff flags & IP6T_F_TOS */
86 u_int8_t tos; 86 __u8 tos;
87 87
88 /* Flags word */ 88 /* Flags word */
89 u_int8_t flags; 89 __u8 flags;
90 /* Inverse flags */ 90 /* Inverse flags */
91 u_int8_t invflags; 91 __u8 invflags;
92}; 92};
93 93
94/* Values for "flag" field in struct ip6t_ip6 (general ip6 structure). */ 94/* Values for "flag" field in struct ip6t_ip6 (general ip6 structure). */
@@ -118,9 +118,9 @@ struct ip6t_entry {
118 unsigned int nfcache; 118 unsigned int nfcache;
119 119
120 /* Size of ipt_entry + matches */ 120 /* Size of ipt_entry + matches */
121 u_int16_t target_offset; 121 __u16 target_offset;
122 /* Size of ipt_entry + matches + target */ 122 /* Size of ipt_entry + matches + target */
123 u_int16_t next_offset; 123 __u16 next_offset;
124 124
125 /* Back pointer */ 125 /* Back pointer */
126 unsigned int comefrom; 126 unsigned int comefrom;
@@ -186,9 +186,9 @@ struct ip6t_error {
186 186
187/* ICMP matching stuff */ 187/* ICMP matching stuff */
188struct ip6t_icmp { 188struct ip6t_icmp {
189 u_int8_t type; /* type to match */ 189 __u8 type; /* type to match */
190 u_int8_t code[2]; /* range of code */ 190 __u8 code[2]; /* range of code */
191 u_int8_t invflags; /* Inverse flags */ 191 __u8 invflags; /* Inverse flags */
192}; 192};
193 193
194/* Values for "inv" field for struct ipt_icmp. */ 194/* Values for "inv" field for struct ipt_icmp. */
@@ -298,8 +298,8 @@ extern int ipv6_find_hdr(const struct sk_buff *skb, unsigned int *offset,
298struct compat_ip6t_entry { 298struct compat_ip6t_entry {
299 struct ip6t_ip6 ipv6; 299 struct ip6t_ip6 ipv6;
300 compat_uint_t nfcache; 300 compat_uint_t nfcache;
301 u_int16_t target_offset; 301 __u16 target_offset;
302 u_int16_t next_offset; 302 __u16 next_offset;
303 compat_uint_t comefrom; 303 compat_uint_t comefrom;
304 struct compat_xt_counters counters; 304 struct compat_xt_counters counters;
305 unsigned char elems[0]; 305 unsigned char elems[0];
diff --git a/include/linux/netlink.h b/include/linux/netlink.h
index 180540a84d37..8374d2967362 100644
--- a/include/linux/netlink.h
+++ b/include/linux/netlink.h
@@ -1,7 +1,7 @@
1#ifndef __LINUX_NETLINK_H 1#ifndef __LINUX_NETLINK_H
2#define __LINUX_NETLINK_H 2#define __LINUX_NETLINK_H
3 3
4#include <linux/socket.h> /* for sa_family_t */ 4#include <linux/socket.h> /* for __kernel_sa_family_t */
5#include <linux/types.h> 5#include <linux/types.h>
6 6
7#define NETLINK_ROUTE 0 /* Routing/device hook */ 7#define NETLINK_ROUTE 0 /* Routing/device hook */
@@ -25,6 +25,7 @@
25#define NETLINK_SCSITRANSPORT 18 /* SCSI Transports */ 25#define NETLINK_SCSITRANSPORT 18 /* SCSI Transports */
26#define NETLINK_ECRYPTFS 19 26#define NETLINK_ECRYPTFS 19
27#define NETLINK_RDMA 20 27#define NETLINK_RDMA 20
28#define NETLINK_CRYPTO 21 /* Crypto layer */
28 29
29#define MAX_LINKS 32 30#define MAX_LINKS 32
30 31
diff --git a/include/linux/netrom.h b/include/linux/netrom.h
index 6939b32f66a0..af7313cc9cb6 100644
--- a/include/linux/netrom.h
+++ b/include/linux/netrom.h
@@ -7,6 +7,8 @@
7#ifndef NETROM_KERNEL_H 7#ifndef NETROM_KERNEL_H
8#define NETROM_KERNEL_H 8#define NETROM_KERNEL_H
9 9
10#include <linux/ax25.h>
11
10#define NETROM_MTU 236 12#define NETROM_MTU 236
11 13
12#define NETROM_T1 1 14#define NETROM_T1 1
diff --git a/include/linux/nfc.h b/include/linux/nfc.h
index 330a4c5db588..36cb955b05cc 100644
--- a/include/linux/nfc.h
+++ b/include/linux/nfc.h
@@ -39,6 +39,10 @@
39 * 39 *
40 * @NFC_CMD_GET_DEVICE: request information about a device (requires 40 * @NFC_CMD_GET_DEVICE: request information about a device (requires
41 * %NFC_ATTR_DEVICE_INDEX) or dump request to get a list of all nfc devices 41 * %NFC_ATTR_DEVICE_INDEX) or dump request to get a list of all nfc devices
42 * @NFC_CMD_DEV_UP: turn on the nfc device
43 * (requires %NFC_ATTR_DEVICE_INDEX)
44 * @NFC_CMD_DEV_DOWN: turn off the nfc device
45 * (requires %NFC_ATTR_DEVICE_INDEX)
42 * @NFC_CMD_START_POLL: start polling for targets using the given protocols 46 * @NFC_CMD_START_POLL: start polling for targets using the given protocols
43 * (requires %NFC_ATTR_DEVICE_INDEX and %NFC_ATTR_PROTOCOLS) 47 * (requires %NFC_ATTR_DEVICE_INDEX and %NFC_ATTR_PROTOCOLS)
44 * @NFC_CMD_STOP_POLL: stop polling for targets (requires 48 * @NFC_CMD_STOP_POLL: stop polling for targets (requires
@@ -56,6 +60,8 @@
56enum nfc_commands { 60enum nfc_commands {
57 NFC_CMD_UNSPEC, 61 NFC_CMD_UNSPEC,
58 NFC_CMD_GET_DEVICE, 62 NFC_CMD_GET_DEVICE,
63 NFC_CMD_DEV_UP,
64 NFC_CMD_DEV_DOWN,
59 NFC_CMD_START_POLL, 65 NFC_CMD_START_POLL,
60 NFC_CMD_STOP_POLL, 66 NFC_CMD_STOP_POLL,
61 NFC_CMD_GET_TARGET, 67 NFC_CMD_GET_TARGET,
@@ -123,4 +129,6 @@ struct sockaddr_nfc {
123#define NFC_SOCKPROTO_RAW 0 129#define NFC_SOCKPROTO_RAW 0
124#define NFC_SOCKPROTO_MAX 1 130#define NFC_SOCKPROTO_MAX 1
125 131
132#define NFC_HEADER_SIZE 1
133
126#endif /*__LINUX_NFC_H */ 134#endif /*__LINUX_NFC_H */
diff --git a/include/linux/nfs4.h b/include/linux/nfs4.h
index 76f99e8714f3..32345c2805c0 100644
--- a/include/linux/nfs4.h
+++ b/include/linux/nfs4.h
@@ -373,6 +373,22 @@ enum nfsstat4 {
373 NFS4ERR_DELEG_REVOKED = 10087, /* deleg./layout revoked */ 373 NFS4ERR_DELEG_REVOKED = 10087, /* deleg./layout revoked */
374}; 374};
375 375
376static inline bool seqid_mutating_err(u32 err)
377{
378 /* rfc 3530 section 8.1.5: */
379 switch (err) {
380 case NFS4ERR_STALE_CLIENTID:
381 case NFS4ERR_STALE_STATEID:
382 case NFS4ERR_BAD_STATEID:
383 case NFS4ERR_BAD_SEQID:
384 case NFS4ERR_BADXDR:
385 case NFS4ERR_RESOURCE:
386 case NFS4ERR_NOFILEHANDLE:
387 return false;
388 };
389 return true;
390}
391
376/* 392/*
377 * Note: NF4BAD is not actually part of the protocol; it is just used 393 * Note: NF4BAD is not actually part of the protocol; it is just used
378 * internally by nfsd. 394 * internally by nfsd.
@@ -394,7 +410,10 @@ enum open_claim_type4 {
394 NFS4_OPEN_CLAIM_NULL = 0, 410 NFS4_OPEN_CLAIM_NULL = 0,
395 NFS4_OPEN_CLAIM_PREVIOUS = 1, 411 NFS4_OPEN_CLAIM_PREVIOUS = 1,
396 NFS4_OPEN_CLAIM_DELEGATE_CUR = 2, 412 NFS4_OPEN_CLAIM_DELEGATE_CUR = 2,
397 NFS4_OPEN_CLAIM_DELEGATE_PREV = 3 413 NFS4_OPEN_CLAIM_DELEGATE_PREV = 3,
414 NFS4_OPEN_CLAIM_FH = 4, /* 4.1 */
415 NFS4_OPEN_CLAIM_DELEG_CUR_FH = 5, /* 4.1 */
416 NFS4_OPEN_CLAIM_DELEG_PREV_FH = 6, /* 4.1 */
398}; 417};
399 418
400enum opentype4 { 419enum opentype4 {
diff --git a/include/linux/nfsd/Kbuild b/include/linux/nfsd/Kbuild
index 55d1467de3c1..b8d4001212b3 100644
--- a/include/linux/nfsd/Kbuild
+++ b/include/linux/nfsd/Kbuild
@@ -1,6 +1,4 @@
1header-y += const.h
2header-y += debug.h 1header-y += debug.h
3header-y += export.h 2header-y += export.h
4header-y += nfsfh.h 3header-y += nfsfh.h
5header-y += stats.h 4header-y += stats.h
6header-y += syscall.h
diff --git a/include/linux/nfsd/const.h b/include/linux/nfsd/const.h
deleted file mode 100644
index 323f8cfa060a..000000000000
--- a/include/linux/nfsd/const.h
+++ /dev/null
@@ -1,55 +0,0 @@
1/*
2 * include/linux/nfsd/const.h
3 *
4 * Various constants related to NFS.
5 *
6 * Copyright (C) 1995-1997 Olaf Kirch <okir@monad.swb.de>
7 */
8
9#ifndef _LINUX_NFSD_CONST_H
10#define _LINUX_NFSD_CONST_H
11
12#include <linux/nfs.h>
13#include <linux/nfs2.h>
14#include <linux/nfs3.h>
15#include <linux/nfs4.h>
16
17/*
18 * Maximum protocol version supported by knfsd
19 */
20#define NFSSVC_MAXVERS 3
21
22/*
23 * Maximum blocksizes supported by daemon under various circumstances.
24 */
25#define NFSSVC_MAXBLKSIZE RPCSVC_MAXPAYLOAD
26/* NFSv2 is limited by the protocol specification, see RFC 1094 */
27#define NFSSVC_MAXBLKSIZE_V2 (8*1024)
28
29#ifdef __KERNEL__
30
31#include <linux/sunrpc/msg_prot.h>
32
33/*
34 * Largest number of bytes we need to allocate for an NFS
35 * call or reply. Used to control buffer sizes. We use
36 * the length of v3 WRITE, READDIR and READDIR replies
37 * which are an RPC header, up to 26 XDR units of reply
38 * data, and some page data.
39 *
40 * Note that accuracy here doesn't matter too much as the
41 * size is rounded up to a page size when allocating space.
42 */
43#define NFSD_BUFSIZE ((RPC_MAX_HEADER_WITH_AUTH+26)*XDR_UNIT + NFSSVC_MAXBLKSIZE)
44
45#ifdef CONFIG_NFSD_V4
46# define NFSSVC_XDRSIZE NFS4_SVC_XDRSIZE
47#elif defined(CONFIG_NFSD_V3)
48# define NFSSVC_XDRSIZE NFS3_SVC_XDRSIZE
49#else
50# define NFSSVC_XDRSIZE NFS2_SVC_XDRSIZE
51#endif
52
53#endif /* __KERNEL__ */
54
55#endif /* _LINUX_NFSD_CONST_H */
diff --git a/include/linux/nfsd/export.h b/include/linux/nfsd/export.h
index 8a31a20efe7e..f85308e688fd 100644
--- a/include/linux/nfsd/export.h
+++ b/include/linux/nfsd/export.h
@@ -96,7 +96,6 @@ struct svc_export {
96 struct auth_domain * ex_client; 96 struct auth_domain * ex_client;
97 int ex_flags; 97 int ex_flags;
98 struct path ex_path; 98 struct path ex_path;
99 char *ex_pathname;
100 uid_t ex_anon_uid; 99 uid_t ex_anon_uid;
101 gid_t ex_anon_gid; 100 gid_t ex_anon_gid;
102 int ex_fsid; 101 int ex_fsid;
@@ -137,6 +136,7 @@ struct svc_export * rqst_exp_get_by_name(struct svc_rqst *,
137 struct path *); 136 struct path *);
138struct svc_export * rqst_exp_parent(struct svc_rqst *, 137struct svc_export * rqst_exp_parent(struct svc_rqst *,
139 struct path *); 138 struct path *);
139struct svc_export * rqst_find_fsidzero_export(struct svc_rqst *);
140int exp_rootfh(struct auth_domain *, 140int exp_rootfh(struct auth_domain *,
141 char *path, struct knfsd_fh *, int maxsize); 141 char *path, struct knfsd_fh *, int maxsize);
142__be32 exp_pseudoroot(struct svc_rqst *, struct svc_fh *); 142__be32 exp_pseudoroot(struct svc_rqst *, struct svc_fh *);
diff --git a/include/linux/nfsd/nfsfh.h b/include/linux/nfsd/nfsfh.h
index f76d80ccec10..ce4743a26015 100644
--- a/include/linux/nfsd/nfsfh.h
+++ b/include/linux/nfsd/nfsfh.h
@@ -14,11 +14,14 @@
14#ifndef _LINUX_NFSD_FH_H 14#ifndef _LINUX_NFSD_FH_H
15#define _LINUX_NFSD_FH_H 15#define _LINUX_NFSD_FH_H
16 16
17# include <linux/types.h> 17#include <linux/types.h>
18#include <linux/nfs.h>
19#include <linux/nfs2.h>
20#include <linux/nfs3.h>
21#include <linux/nfs4.h>
18#ifdef __KERNEL__ 22#ifdef __KERNEL__
19# include <linux/sunrpc/svc.h> 23# include <linux/sunrpc/svc.h>
20#endif 24#endif
21#include <linux/nfsd/const.h>
22 25
23/* 26/*
24 * This is the old "dentry style" Linux NFSv2 file handle. 27 * This is the old "dentry style" Linux NFSv2 file handle.
diff --git a/include/linux/nfsd/syscall.h b/include/linux/nfsd/syscall.h
deleted file mode 100644
index 812bc1e160dc..000000000000
--- a/include/linux/nfsd/syscall.h
+++ /dev/null
@@ -1,116 +0,0 @@
1/*
2 * include/linux/nfsd/syscall.h
3 *
4 * This file holds all declarations for the knfsd syscall interface.
5 *
6 * Copyright (C) 1995-1997 Olaf Kirch <okir@monad.swb.de>
7 */
8
9#ifndef NFSD_SYSCALL_H
10#define NFSD_SYSCALL_H
11
12#include <linux/types.h>
13#include <linux/nfsd/export.h>
14
15/*
16 * Version of the syscall interface
17 */
18#define NFSCTL_VERSION 0x0201
19
20/*
21 * These are the commands understood by nfsctl().
22 */
23#define NFSCTL_SVC 0 /* This is a server process. */
24#define NFSCTL_ADDCLIENT 1 /* Add an NFS client. */
25#define NFSCTL_DELCLIENT 2 /* Remove an NFS client. */
26#define NFSCTL_EXPORT 3 /* export a file system. */
27#define NFSCTL_UNEXPORT 4 /* unexport a file system. */
28/*#define NFSCTL_UGIDUPDATE 5 / * update a client's uid/gid map. DISCARDED */
29/*#define NFSCTL_GETFH 6 / * get an fh by ino DISCARDED */
30#define NFSCTL_GETFD 7 /* get an fh by path (used by mountd) */
31#define NFSCTL_GETFS 8 /* get an fh by path with max FH len */
32
33/* SVC */
34struct nfsctl_svc {
35 unsigned short svc_port;
36 int svc_nthreads;
37};
38
39/* ADDCLIENT/DELCLIENT */
40struct nfsctl_client {
41 char cl_ident[NFSCLNT_IDMAX+1];
42 int cl_naddr;
43 struct in_addr cl_addrlist[NFSCLNT_ADDRMAX];
44 int cl_fhkeytype;
45 int cl_fhkeylen;
46 unsigned char cl_fhkey[NFSCLNT_KEYMAX];
47};
48
49/* EXPORT/UNEXPORT */
50struct nfsctl_export {
51 char ex_client[NFSCLNT_IDMAX+1];
52 char ex_path[NFS_MAXPATHLEN+1];
53 __kernel_old_dev_t ex_dev;
54 __kernel_ino_t ex_ino;
55 int ex_flags;
56 __kernel_uid_t ex_anon_uid;
57 __kernel_gid_t ex_anon_gid;
58};
59
60/* GETFD */
61struct nfsctl_fdparm {
62 struct sockaddr gd_addr;
63 char gd_path[NFS_MAXPATHLEN+1];
64 int gd_version;
65};
66
67/* GETFS - GET Filehandle with Size */
68struct nfsctl_fsparm {
69 struct sockaddr gd_addr;
70 char gd_path[NFS_MAXPATHLEN+1];
71 int gd_maxlen;
72};
73
74/*
75 * This is the argument union.
76 */
77struct nfsctl_arg {
78 int ca_version; /* safeguard */
79 union {
80 struct nfsctl_svc u_svc;
81 struct nfsctl_client u_client;
82 struct nfsctl_export u_export;
83 struct nfsctl_fdparm u_getfd;
84 struct nfsctl_fsparm u_getfs;
85 /*
86 * The following dummy member is needed to preserve binary compatibility
87 * on platforms where alignof(void*)>alignof(int). It's needed because
88 * this union used to contain a member (u_umap) which contained a
89 * pointer.
90 */
91 void *u_ptr;
92 } u;
93#define ca_svc u.u_svc
94#define ca_client u.u_client
95#define ca_export u.u_export
96#define ca_getfd u.u_getfd
97#define ca_getfs u.u_getfs
98};
99
100union nfsctl_res {
101 __u8 cr_getfh[NFS_FHSIZE];
102 struct knfsd_fh cr_getfs;
103};
104
105#ifdef __KERNEL__
106/*
107 * Kernel syscall implementation.
108 */
109extern int exp_addclient(struct nfsctl_client *ncp);
110extern int exp_delclient(struct nfsctl_client *ncp);
111extern int exp_export(struct nfsctl_export *nxp);
112extern int exp_unexport(struct nfsctl_export *nxp);
113
114#endif /* __KERNEL__ */
115
116#endif /* NFSD_SYSCALL_H */
diff --git a/include/linux/nl80211.h b/include/linux/nl80211.h
index 8ad70dcac3f9..8049bf77d799 100644
--- a/include/linux/nl80211.h
+++ b/include/linux/nl80211.h
@@ -161,6 +161,13 @@
161 * @NL80211_CMD_SET_BEACON: set the beacon on an access point interface 161 * @NL80211_CMD_SET_BEACON: set the beacon on an access point interface
162 * using the %NL80211_ATTR_BEACON_INTERVAL, %NL80211_ATTR_DTIM_PERIOD, 162 * using the %NL80211_ATTR_BEACON_INTERVAL, %NL80211_ATTR_DTIM_PERIOD,
163 * %NL80211_ATTR_BEACON_HEAD and %NL80211_ATTR_BEACON_TAIL attributes. 163 * %NL80211_ATTR_BEACON_HEAD and %NL80211_ATTR_BEACON_TAIL attributes.
164 * Following attributes are provided for drivers that generate full Beacon
165 * and Probe Response frames internally: %NL80211_ATTR_SSID,
166 * %NL80211_ATTR_HIDDEN_SSID, %NL80211_ATTR_CIPHERS_PAIRWISE,
167 * %NL80211_ATTR_CIPHER_GROUP, %NL80211_ATTR_WPA_VERSIONS,
168 * %NL80211_ATTR_AKM_SUITES, %NL80211_ATTR_PRIVACY,
169 * %NL80211_ATTR_AUTH_TYPE, %NL80211_ATTR_IE, %NL80211_ATTR_IE_PROBE_RESP,
170 * %NL80211_ATTR_IE_ASSOC_RESP.
164 * @NL80211_CMD_NEW_BEACON: add a new beacon to an access point interface, 171 * @NL80211_CMD_NEW_BEACON: add a new beacon to an access point interface,
165 * parameters are like for %NL80211_CMD_SET_BEACON. 172 * parameters are like for %NL80211_CMD_SET_BEACON.
166 * @NL80211_CMD_DEL_BEACON: remove the beacon, stop sending it 173 * @NL80211_CMD_DEL_BEACON: remove the beacon, stop sending it
@@ -231,6 +238,8 @@
231 * 238 *
232 * @NL80211_CMD_GET_SCAN: get scan results 239 * @NL80211_CMD_GET_SCAN: get scan results
233 * @NL80211_CMD_TRIGGER_SCAN: trigger a new scan with the given parameters 240 * @NL80211_CMD_TRIGGER_SCAN: trigger a new scan with the given parameters
241 * %NL80211_ATTR_TX_NO_CCK_RATE is used to decide whether to send the
242 * probe requests at CCK rate or not.
234 * @NL80211_CMD_NEW_SCAN_RESULTS: scan notification (as a reply to 243 * @NL80211_CMD_NEW_SCAN_RESULTS: scan notification (as a reply to
235 * NL80211_CMD_GET_SCAN and on the "scan" multicast group) 244 * NL80211_CMD_GET_SCAN and on the "scan" multicast group)
236 * @NL80211_CMD_SCAN_ABORTED: scan was aborted, for unspecified reasons, 245 * @NL80211_CMD_SCAN_ABORTED: scan was aborted, for unspecified reasons,
@@ -425,6 +434,8 @@
425 * specified using %NL80211_ATTR_DURATION. When called, this operation 434 * specified using %NL80211_ATTR_DURATION. When called, this operation
426 * returns a cookie (%NL80211_ATTR_COOKIE) that will be included with the 435 * returns a cookie (%NL80211_ATTR_COOKIE) that will be included with the
427 * TX status event pertaining to the TX request. 436 * TX status event pertaining to the TX request.
437 * %NL80211_ATTR_TX_NO_CCK_RATE is used to decide whether to send the
438 * management frames at CCK rate or not in 2GHz band.
428 * @NL80211_CMD_FRAME_WAIT_CANCEL: When an off-channel TX was requested, this 439 * @NL80211_CMD_FRAME_WAIT_CANCEL: When an off-channel TX was requested, this
429 * command may be used with the corresponding cookie to cancel the wait 440 * command may be used with the corresponding cookie to cancel the wait
430 * time if it is known that it is no longer necessary. 441 * time if it is known that it is no longer necessary.
@@ -492,6 +503,12 @@
492 * this command may also be sent by the driver as an MLME event to 503 * this command may also be sent by the driver as an MLME event to
493 * inform userspace of the new replay counter. 504 * inform userspace of the new replay counter.
494 * 505 *
506 * @NL80211_CMD_PMKSA_CANDIDATE: This is used as an event to inform userspace
507 * of PMKSA caching dandidates.
508 *
509 * @NL80211_CMD_TDLS_OPER: Perform a high-level TDLS command (e.g. link setup).
510 * @NL80211_CMD_TDLS_MGMT: Send a TDLS management frame.
511 *
495 * @NL80211_CMD_MAX: highest used command number 512 * @NL80211_CMD_MAX: highest used command number
496 * @__NL80211_CMD_AFTER_LAST: internal use 513 * @__NL80211_CMD_AFTER_LAST: internal use
497 */ 514 */
@@ -616,6 +633,11 @@ enum nl80211_commands {
616 633
617 NL80211_CMD_SET_REKEY_OFFLOAD, 634 NL80211_CMD_SET_REKEY_OFFLOAD,
618 635
636 NL80211_CMD_PMKSA_CANDIDATE,
637
638 NL80211_CMD_TDLS_OPER,
639 NL80211_CMD_TDLS_MGMT,
640
619 /* add new commands above here */ 641 /* add new commands above here */
620 642
621 /* used to define NL80211_CMD_MAX below */ 643 /* used to define NL80211_CMD_MAX below */
@@ -762,6 +784,8 @@ enum nl80211_commands {
762 * that can be added to a scan request 784 * that can be added to a scan request
763 * @NL80211_ATTR_MAX_SCHED_SCAN_IE_LEN: maximum length of information 785 * @NL80211_ATTR_MAX_SCHED_SCAN_IE_LEN: maximum length of information
764 * elements that can be added to a scheduled scan request 786 * elements that can be added to a scheduled scan request
787 * @NL80211_ATTR_MAX_MATCH_SETS: maximum number of sets that can be
788 * used with @NL80211_ATTR_SCHED_SCAN_MATCH, a wiphy attribute.
765 * 789 *
766 * @NL80211_ATTR_SCAN_FREQUENCIES: nested attribute with frequencies (in MHz) 790 * @NL80211_ATTR_SCAN_FREQUENCIES: nested attribute with frequencies (in MHz)
767 * @NL80211_ATTR_SCAN_SSIDS: nested attribute with SSIDs, leave out for passive 791 * @NL80211_ATTR_SCAN_SSIDS: nested attribute with SSIDs, leave out for passive
@@ -842,18 +866,20 @@ enum nl80211_commands {
842 * @NL80211_ATTR_STATUS_CODE: StatusCode for the %NL80211_CMD_CONNECT 866 * @NL80211_ATTR_STATUS_CODE: StatusCode for the %NL80211_CMD_CONNECT
843 * event (u16) 867 * event (u16)
844 * @NL80211_ATTR_PRIVACY: Flag attribute, used with connect(), indicating 868 * @NL80211_ATTR_PRIVACY: Flag attribute, used with connect(), indicating
845 * that protected APs should be used. 869 * that protected APs should be used. This is also used with NEW_BEACON to
870 * indicate that the BSS is to use protection.
846 * 871 *
847 * @NL80211_ATTR_CIPHERS_PAIRWISE: Used with CONNECT and ASSOCIATE to 872 * @NL80211_ATTR_CIPHERS_PAIRWISE: Used with CONNECT, ASSOCIATE, and NEW_BEACON
848 * indicate which unicast key ciphers will be used with the connection 873 * to indicate which unicast key ciphers will be used with the connection
849 * (an array of u32). 874 * (an array of u32).
850 * @NL80211_ATTR_CIPHER_GROUP: Used with CONNECT and ASSOCIATE to indicate 875 * @NL80211_ATTR_CIPHER_GROUP: Used with CONNECT, ASSOCIATE, and NEW_BEACON to
851 * which group key cipher will be used with the connection (a u32). 876 * indicate which group key cipher will be used with the connection (a
852 * @NL80211_ATTR_WPA_VERSIONS: Used with CONNECT and ASSOCIATE to indicate 877 * u32).
853 * which WPA version(s) the AP we want to associate with is using 878 * @NL80211_ATTR_WPA_VERSIONS: Used with CONNECT, ASSOCIATE, and NEW_BEACON to
879 * indicate which WPA version(s) the AP we want to associate with is using
854 * (a u32 with flags from &enum nl80211_wpa_versions). 880 * (a u32 with flags from &enum nl80211_wpa_versions).
855 * @NL80211_ATTR_AKM_SUITES: Used with CONNECT and ASSOCIATE to indicate 881 * @NL80211_ATTR_AKM_SUITES: Used with CONNECT, ASSOCIATE, and NEW_BEACON to
856 * which key management algorithm(s) to use (an array of u32). 882 * indicate which key management algorithm(s) to use (an array of u32).
857 * 883 *
858 * @NL80211_ATTR_REQ_IE: (Re)association request information elements as 884 * @NL80211_ATTR_REQ_IE: (Re)association request information elements as
859 * sent out by the card, for ROAM and successful CONNECT events. 885 * sent out by the card, for ROAM and successful CONNECT events.
@@ -1002,6 +1028,24 @@ enum nl80211_commands {
1002 1028
1003 * @NL80211_ATTR_SCHED_SCAN_INTERVAL: Interval between scheduled scan 1029 * @NL80211_ATTR_SCHED_SCAN_INTERVAL: Interval between scheduled scan
1004 * cycles, in msecs. 1030 * cycles, in msecs.
1031
1032 * @NL80211_ATTR_SCHED_SCAN_MATCH: Nested attribute with one or more
1033 * sets of attributes to match during scheduled scans. Only BSSs
1034 * that match any of the sets will be reported. These are
1035 * pass-thru filter rules.
1036 * For a match to succeed, the BSS must match all attributes of a
1037 * set. Since not every hardware supports matching all types of
1038 * attributes, there is no guarantee that the reported BSSs are
1039 * fully complying with the match sets and userspace needs to be
1040 * able to ignore them by itself.
1041 * Thus, the implementation is somewhat hardware-dependent, but
1042 * this is only an optimization and the userspace application
1043 * needs to handle all the non-filtered results anyway.
1044 * If the match attributes don't make sense when combined with
1045 * the values passed in @NL80211_ATTR_SCAN_SSIDS (eg. if an SSID
1046 * is included in the probe request, but the match attributes
1047 * will never let it go through), -EINVAL may be returned.
1048 * If ommited, no filtering is done.
1005 * 1049 *
1006 * @NL80211_ATTR_INTERFACE_COMBINATIONS: Nested attribute listing the supported 1050 * @NL80211_ATTR_INTERFACE_COMBINATIONS: Nested attribute listing the supported
1007 * interface combinations. In each nested item, it contains attributes 1051 * interface combinations. In each nested item, it contains attributes
@@ -1019,6 +1063,52 @@ enum nl80211_commands {
1019 * being a list of supported rates as defined by IEEE 802.11 7.3.2.2 but 1063 * being a list of supported rates as defined by IEEE 802.11 7.3.2.2 but
1020 * without the length restriction (at most %NL80211_MAX_SUPP_RATES). 1064 * without the length restriction (at most %NL80211_MAX_SUPP_RATES).
1021 * 1065 *
1066 * @NL80211_ATTR_HIDDEN_SSID: indicates whether SSID is to be hidden from Beacon
1067 * and Probe Response (when response to wildcard Probe Request); see
1068 * &enum nl80211_hidden_ssid, represented as a u32
1069 *
1070 * @NL80211_ATTR_IE_PROBE_RESP: Information element(s) for Probe Response frame.
1071 * This is used with %NL80211_CMD_NEW_BEACON and %NL80211_CMD_SET_BEACON to
1072 * provide extra IEs (e.g., WPS/P2P IE) into Probe Response frames when the
1073 * driver (or firmware) replies to Probe Request frames.
1074 * @NL80211_ATTR_IE_ASSOC_RESP: Information element(s) for (Re)Association
1075 * Response frames. This is used with %NL80211_CMD_NEW_BEACON and
1076 * %NL80211_CMD_SET_BEACON to provide extra IEs (e.g., WPS/P2P IE) into
1077 * (Re)Association Response frames when the driver (or firmware) replies to
1078 * (Re)Association Request frames.
1079 *
1080 * @NL80211_ATTR_STA_WME: Nested attribute containing the wme configuration
1081 * of the station, see &enum nl80211_sta_wme_attr.
1082 * @NL80211_ATTR_SUPPORT_AP_UAPSD: the device supports uapsd when working
1083 * as AP.
1084 *
1085 * @NL80211_ATTR_ROAM_SUPPORT: Indicates whether the firmware is capable of
1086 * roaming to another AP in the same ESS if the signal lever is low.
1087 *
1088 * @NL80211_ATTR_PMKSA_CANDIDATE: Nested attribute containing the PMKSA caching
1089 * candidate information, see &enum nl80211_pmksa_candidate_attr.
1090 *
1091 * @NL80211_ATTR_TX_NO_CCK_RATE: Indicates whether to use CCK rate or not
1092 * for management frames transmission. In order to avoid p2p probe/action
1093 * frames are being transmitted at CCK rate in 2GHz band, the user space
1094 * applications use this attribute.
1095 * This attribute is used with %NL80211_CMD_TRIGGER_SCAN and
1096 * %NL80211_CMD_FRAME commands.
1097 *
1098 * @NL80211_ATTR_TDLS_ACTION: Low level TDLS action code (e.g. link setup
1099 * request, link setup confirm, link teardown, etc.). Values are
1100 * described in the TDLS (802.11z) specification.
1101 * @NL80211_ATTR_TDLS_DIALOG_TOKEN: Non-zero token for uniquely identifying a
1102 * TDLS conversation between two devices.
1103 * @NL80211_ATTR_TDLS_OPERATION: High level TDLS operation; see
1104 * &enum nl80211_tdls_operation, represented as a u8.
1105 * @NL80211_ATTR_TDLS_SUPPORT: A flag indicating the device can operate
1106 * as a TDLS peer sta.
1107 * @NL80211_ATTR_TDLS_EXTERNAL_SETUP: The TDLS discovery/setup and teardown
1108 * procedures should be performed by sending TDLS packets via
1109 * %NL80211_CMD_TDLS_MGMT. Otherwise %NL80211_CMD_TDLS_OPER should be
1110 * used for asking the driver to perform a TDLS operation.
1111 *
1022 * @NL80211_ATTR_MAX: highest attribute number currently defined 1112 * @NL80211_ATTR_MAX: highest attribute number currently defined
1023 * @__NL80211_ATTR_AFTER_LAST: internal use 1113 * @__NL80211_ATTR_AFTER_LAST: internal use
1024 */ 1114 */
@@ -1224,6 +1314,29 @@ enum nl80211_attrs {
1224 1314
1225 NL80211_ATTR_SCAN_SUPP_RATES, 1315 NL80211_ATTR_SCAN_SUPP_RATES,
1226 1316
1317 NL80211_ATTR_HIDDEN_SSID,
1318
1319 NL80211_ATTR_IE_PROBE_RESP,
1320 NL80211_ATTR_IE_ASSOC_RESP,
1321
1322 NL80211_ATTR_STA_WME,
1323 NL80211_ATTR_SUPPORT_AP_UAPSD,
1324
1325 NL80211_ATTR_ROAM_SUPPORT,
1326
1327 NL80211_ATTR_SCHED_SCAN_MATCH,
1328 NL80211_ATTR_MAX_MATCH_SETS,
1329
1330 NL80211_ATTR_PMKSA_CANDIDATE,
1331
1332 NL80211_ATTR_TX_NO_CCK_RATE,
1333
1334 NL80211_ATTR_TDLS_ACTION,
1335 NL80211_ATTR_TDLS_DIALOG_TOKEN,
1336 NL80211_ATTR_TDLS_OPERATION,
1337 NL80211_ATTR_TDLS_SUPPORT,
1338 NL80211_ATTR_TDLS_EXTERNAL_SETUP,
1339
1227 /* add attributes here, update the policy in nl80211.c */ 1340 /* add attributes here, update the policy in nl80211.c */
1228 1341
1229 __NL80211_ATTR_AFTER_LAST, 1342 __NL80211_ATTR_AFTER_LAST,
@@ -1321,6 +1434,7 @@ enum nl80211_iftype {
1321 * @NL80211_STA_FLAG_WME: station is WME/QoS capable 1434 * @NL80211_STA_FLAG_WME: station is WME/QoS capable
1322 * @NL80211_STA_FLAG_MFP: station uses management frame protection 1435 * @NL80211_STA_FLAG_MFP: station uses management frame protection
1323 * @NL80211_STA_FLAG_AUTHENTICATED: station is authenticated 1436 * @NL80211_STA_FLAG_AUTHENTICATED: station is authenticated
1437 * @NL80211_STA_FLAG_TDLS_PEER: station is a TDLS peer
1324 * @NL80211_STA_FLAG_MAX: highest station flag number currently defined 1438 * @NL80211_STA_FLAG_MAX: highest station flag number currently defined
1325 * @__NL80211_STA_FLAG_AFTER_LAST: internal use 1439 * @__NL80211_STA_FLAG_AFTER_LAST: internal use
1326 */ 1440 */
@@ -1331,6 +1445,7 @@ enum nl80211_sta_flags {
1331 NL80211_STA_FLAG_WME, 1445 NL80211_STA_FLAG_WME,
1332 NL80211_STA_FLAG_MFP, 1446 NL80211_STA_FLAG_MFP,
1333 NL80211_STA_FLAG_AUTHENTICATED, 1447 NL80211_STA_FLAG_AUTHENTICATED,
1448 NL80211_STA_FLAG_TDLS_PEER,
1334 1449
1335 /* keep last */ 1450 /* keep last */
1336 __NL80211_STA_FLAG_AFTER_LAST, 1451 __NL80211_STA_FLAG_AFTER_LAST,
@@ -1433,6 +1548,7 @@ enum nl80211_sta_bss_param {
1433 * @NL80211_STA_INFO_BSS_PARAM: current station's view of BSS, nested attribute 1548 * @NL80211_STA_INFO_BSS_PARAM: current station's view of BSS, nested attribute
1434 * containing info as possible, see &enum nl80211_sta_bss_param 1549 * containing info as possible, see &enum nl80211_sta_bss_param
1435 * @NL80211_STA_INFO_CONNECTED_TIME: time since the station is last connected 1550 * @NL80211_STA_INFO_CONNECTED_TIME: time since the station is last connected
1551 * @NL80211_STA_INFO_STA_FLAGS: Contains a struct nl80211_sta_flag_update.
1436 * @__NL80211_STA_INFO_AFTER_LAST: internal 1552 * @__NL80211_STA_INFO_AFTER_LAST: internal
1437 * @NL80211_STA_INFO_MAX: highest possible station info attribute 1553 * @NL80211_STA_INFO_MAX: highest possible station info attribute
1438 */ 1554 */
@@ -1454,6 +1570,7 @@ enum nl80211_sta_info {
1454 NL80211_STA_INFO_RX_BITRATE, 1570 NL80211_STA_INFO_RX_BITRATE,
1455 NL80211_STA_INFO_BSS_PARAM, 1571 NL80211_STA_INFO_BSS_PARAM,
1456 NL80211_STA_INFO_CONNECTED_TIME, 1572 NL80211_STA_INFO_CONNECTED_TIME,
1573 NL80211_STA_INFO_STA_FLAGS,
1457 1574
1458 /* keep last */ 1575 /* keep last */
1459 __NL80211_STA_INFO_AFTER_LAST, 1576 __NL80211_STA_INFO_AFTER_LAST,
@@ -1683,6 +1800,26 @@ enum nl80211_reg_rule_attr {
1683}; 1800};
1684 1801
1685/** 1802/**
1803 * enum nl80211_sched_scan_match_attr - scheduled scan match attributes
1804 * @__NL80211_SCHED_SCAN_MATCH_ATTR_INVALID: attribute number 0 is reserved
1805 * @NL80211_SCHED_SCAN_MATCH_ATTR_SSID: SSID to be used for matching,
1806 * only report BSS with matching SSID.
1807 * @NL80211_SCHED_SCAN_MATCH_ATTR_MAX: highest scheduled scan filter
1808 * attribute number currently defined
1809 * @__NL80211_SCHED_SCAN_MATCH_ATTR_AFTER_LAST: internal use
1810 */
1811enum nl80211_sched_scan_match_attr {
1812 __NL80211_SCHED_SCAN_MATCH_ATTR_INVALID,
1813
1814 NL80211_ATTR_SCHED_SCAN_MATCH_SSID,
1815
1816 /* keep last */
1817 __NL80211_SCHED_SCAN_MATCH_ATTR_AFTER_LAST,
1818 NL80211_SCHED_SCAN_MATCH_ATTR_MAX =
1819 __NL80211_SCHED_SCAN_MATCH_ATTR_AFTER_LAST - 1
1820};
1821
1822/**
1686 * enum nl80211_reg_rule_flags - regulatory rule flags 1823 * enum nl80211_reg_rule_flags - regulatory rule flags
1687 * 1824 *
1688 * @NL80211_RRF_NO_OFDM: OFDM modulation not allowed 1825 * @NL80211_RRF_NO_OFDM: OFDM modulation not allowed
@@ -1833,6 +1970,13 @@ enum nl80211_mntr_flags {
1833 * @NL80211_MESHCONF_ELEMENT_TTL: specifies the value of TTL field set at a 1970 * @NL80211_MESHCONF_ELEMENT_TTL: specifies the value of TTL field set at a
1834 * source mesh point for path selection elements. 1971 * source mesh point for path selection elements.
1835 * 1972 *
1973 * @NL80211_MESHCONF_HWMP_RANN_INTERVAL: The interval of time (in TUs) between
1974 * root announcements are transmitted.
1975 *
1976 * @NL80211_MESHCONF_GATE_ANNOUNCEMENTS: Advertise that this mesh station has
1977 * access to a broader network beyond the MBSS. This is done via Root
1978 * Announcement frames.
1979 *
1836 * @NL80211_MESHCONF_ATTR_MAX: highest possible mesh configuration attribute 1980 * @NL80211_MESHCONF_ATTR_MAX: highest possible mesh configuration attribute
1837 * 1981 *
1838 * @__NL80211_MESHCONF_ATTR_AFTER_LAST: internal use 1982 * @__NL80211_MESHCONF_ATTR_AFTER_LAST: internal use
@@ -1854,6 +1998,8 @@ enum nl80211_meshconf_params {
1854 NL80211_MESHCONF_HWMP_NET_DIAM_TRVS_TIME, 1998 NL80211_MESHCONF_HWMP_NET_DIAM_TRVS_TIME,
1855 NL80211_MESHCONF_HWMP_ROOTMODE, 1999 NL80211_MESHCONF_HWMP_ROOTMODE,
1856 NL80211_MESHCONF_ELEMENT_TTL, 2000 NL80211_MESHCONF_ELEMENT_TTL,
2001 NL80211_MESHCONF_HWMP_RANN_INTERVAL,
2002 NL80211_MESHCONF_GATE_ANNOUNCEMENTS,
1857 2003
1858 /* keep last */ 2004 /* keep last */
1859 __NL80211_MESHCONF_ATTR_AFTER_LAST, 2005 __NL80211_MESHCONF_ATTR_AFTER_LAST,
@@ -2430,4 +2576,78 @@ enum nl80211_rekey_data {
2430 MAX_NL80211_REKEY_DATA = NUM_NL80211_REKEY_DATA - 1 2576 MAX_NL80211_REKEY_DATA = NUM_NL80211_REKEY_DATA - 1
2431}; 2577};
2432 2578
2579/**
2580 * enum nl80211_hidden_ssid - values for %NL80211_ATTR_HIDDEN_SSID
2581 * @NL80211_HIDDEN_SSID_NOT_IN_USE: do not hide SSID (i.e., broadcast it in
2582 * Beacon frames)
2583 * @NL80211_HIDDEN_SSID_ZERO_LEN: hide SSID by using zero-length SSID element
2584 * in Beacon frames
2585 * @NL80211_HIDDEN_SSID_ZERO_CONTENTS: hide SSID by using correct length of SSID
2586 * element in Beacon frames but zero out each byte in the SSID
2587 */
2588enum nl80211_hidden_ssid {
2589 NL80211_HIDDEN_SSID_NOT_IN_USE,
2590 NL80211_HIDDEN_SSID_ZERO_LEN,
2591 NL80211_HIDDEN_SSID_ZERO_CONTENTS
2592};
2593
2594/**
2595 * enum nl80211_sta_wme_attr - station WME attributes
2596 * @__NL80211_STA_WME_INVALID: invalid number for nested attribute
2597 * @NL80211_STA_WME_UAPSD_QUEUES: bitmap of uapsd queues. the format
2598 * is the same as the AC bitmap in the QoS info field.
2599 * @NL80211_STA_WME_MAX_SP: max service period. the format is the same
2600 * as the MAX_SP field in the QoS info field (but already shifted down).
2601 * @__NL80211_STA_WME_AFTER_LAST: internal
2602 * @NL80211_STA_WME_MAX: highest station WME attribute
2603 */
2604enum nl80211_sta_wme_attr {
2605 __NL80211_STA_WME_INVALID,
2606 NL80211_STA_WME_UAPSD_QUEUES,
2607 NL80211_STA_WME_MAX_SP,
2608
2609 /* keep last */
2610 __NL80211_STA_WME_AFTER_LAST,
2611 NL80211_STA_WME_MAX = __NL80211_STA_WME_AFTER_LAST - 1
2612};
2613
2614/**
2615 * enum nl80211_pmksa_candidate_attr - attributes for PMKSA caching candidates
2616 * @__NL80211_PMKSA_CANDIDATE_INVALID: invalid number for nested attributes
2617 * @NL80211_PMKSA_CANDIDATE_INDEX: candidate index (u32; the smaller, the higher
2618 * priority)
2619 * @NL80211_PMKSA_CANDIDATE_BSSID: candidate BSSID (6 octets)
2620 * @NL80211_PMKSA_CANDIDATE_PREAUTH: RSN pre-authentication supported (flag)
2621 * @NUM_NL80211_PMKSA_CANDIDATE: number of PMKSA caching candidate attributes
2622 * (internal)
2623 * @MAX_NL80211_PMKSA_CANDIDATE: highest PMKSA caching candidate attribute
2624 * (internal)
2625 */
2626enum nl80211_pmksa_candidate_attr {
2627 __NL80211_PMKSA_CANDIDATE_INVALID,
2628 NL80211_PMKSA_CANDIDATE_INDEX,
2629 NL80211_PMKSA_CANDIDATE_BSSID,
2630 NL80211_PMKSA_CANDIDATE_PREAUTH,
2631
2632 /* keep last */
2633 NUM_NL80211_PMKSA_CANDIDATE,
2634 MAX_NL80211_PMKSA_CANDIDATE = NUM_NL80211_PMKSA_CANDIDATE - 1
2635};
2636
2637/**
2638 * enum nl80211_tdls_operation - values for %NL80211_ATTR_TDLS_OPERATION
2639 * @NL80211_TDLS_DISCOVERY_REQ: Send a TDLS discovery request
2640 * @NL80211_TDLS_SETUP: Setup TDLS link
2641 * @NL80211_TDLS_TEARDOWN: Teardown a TDLS link which is already established
2642 * @NL80211_TDLS_ENABLE_LINK: Enable TDLS link
2643 * @NL80211_TDLS_DISABLE_LINK: Disable TDLS link
2644 */
2645enum nl80211_tdls_operation {
2646 NL80211_TDLS_DISCOVERY_REQ,
2647 NL80211_TDLS_SETUP,
2648 NL80211_TDLS_TEARDOWN,
2649 NL80211_TDLS_ENABLE_LINK,
2650 NL80211_TDLS_DISABLE_LINK,
2651};
2652
2433#endif /* __LINUX_NL80211_H */ 2653#endif /* __LINUX_NL80211_H */
diff --git a/include/linux/of.h b/include/linux/of.h
index 9180dc5cb00b..f01ba8a209c0 100644
--- a/include/linux/of.h
+++ b/include/linux/of.h
@@ -17,6 +17,7 @@
17 */ 17 */
18#include <linux/types.h> 18#include <linux/types.h>
19#include <linux/bitops.h> 19#include <linux/bitops.h>
20#include <linux/errno.h>
20#include <linux/kref.h> 21#include <linux/kref.h>
21#include <linux/mod_devicetable.h> 22#include <linux/mod_devicetable.h>
22#include <linux/spinlock.h> 23#include <linux/spinlock.h>
@@ -68,6 +69,7 @@ struct device_node {
68/* Pointer for first entry in chain of all nodes. */ 69/* Pointer for first entry in chain of all nodes. */
69extern struct device_node *allnodes; 70extern struct device_node *allnodes;
70extern struct device_node *of_chosen; 71extern struct device_node *of_chosen;
72extern struct device_node *of_aliases;
71extern rwlock_t devtree_lock; 73extern rwlock_t devtree_lock;
72 74
73static inline bool of_have_populated_dt(void) 75static inline bool of_have_populated_dt(void)
@@ -199,16 +201,26 @@ extern int of_property_read_u32_array(const struct device_node *np,
199 const char *propname, 201 const char *propname,
200 u32 *out_values, 202 u32 *out_values,
201 size_t sz); 203 size_t sz);
204extern int of_property_read_u64(const struct device_node *np,
205 const char *propname, u64 *out_value);
202 206
203extern int of_property_read_string(struct device_node *np, 207extern int of_property_read_string(struct device_node *np,
204 const char *propname, 208 const char *propname,
205 const char **out_string); 209 const char **out_string);
210extern int of_property_read_string_index(struct device_node *np,
211 const char *propname,
212 int index, const char **output);
213extern int of_property_count_strings(struct device_node *np,
214 const char *propname);
206extern int of_device_is_compatible(const struct device_node *device, 215extern int of_device_is_compatible(const struct device_node *device,
207 const char *); 216 const char *);
208extern int of_device_is_available(const struct device_node *device); 217extern int of_device_is_available(const struct device_node *device);
209extern const void *of_get_property(const struct device_node *node, 218extern const void *of_get_property(const struct device_node *node,
210 const char *name, 219 const char *name,
211 int *lenp); 220 int *lenp);
221#define for_each_property(pp, properties) \
222 for (pp = properties; pp != NULL; pp = pp->next)
223
212extern int of_n_addr_cells(struct device_node *np); 224extern int of_n_addr_cells(struct device_node *np);
213extern int of_n_size_cells(struct device_node *np); 225extern int of_n_size_cells(struct device_node *np);
214extern const struct of_device_id *of_match_node( 226extern const struct of_device_id *of_match_node(
@@ -221,6 +233,9 @@ extern int of_parse_phandles_with_args(struct device_node *np,
221 const char *list_name, const char *cells_name, int index, 233 const char *list_name, const char *cells_name, int index,
222 struct device_node **out_node, const void **out_args); 234 struct device_node **out_node, const void **out_args);
223 235
236extern void of_alias_scan(void * (*dt_alloc)(u64 size, u64 align));
237extern int of_alias_get_id(struct device_node *np, const char *stem);
238
224extern int of_machine_is_compatible(const char *compat); 239extern int of_machine_is_compatible(const char *compat);
225 240
226extern int prom_add_property(struct device_node* np, struct property* prop); 241extern int prom_add_property(struct device_node* np, struct property* prop);
@@ -235,6 +250,7 @@ extern void of_attach_node(struct device_node *);
235extern void of_detach_node(struct device_node *); 250extern void of_detach_node(struct device_node *);
236#endif 251#endif
237 252
253#define of_match_ptr(_ptr) (_ptr)
238#else /* CONFIG_OF */ 254#else /* CONFIG_OF */
239 255
240static inline bool of_have_populated_dt(void) 256static inline bool of_have_populated_dt(void)
@@ -242,6 +258,22 @@ static inline bool of_have_populated_dt(void)
242 return false; 258 return false;
243} 259}
244 260
261#define for_each_child_of_node(parent, child) \
262 while (0)
263
264static inline int of_device_is_compatible(const struct device_node *device,
265 const char *name)
266{
267 return 0;
268}
269
270static inline struct property *of_find_property(const struct device_node *np,
271 const char *name,
272 int *lenp)
273{
274 return NULL;
275}
276
245static inline int of_property_read_u32_array(const struct device_node *np, 277static inline int of_property_read_u32_array(const struct device_node *np,
246 const char *propname, 278 const char *propname,
247 u32 *out_values, size_t sz) 279 u32 *out_values, size_t sz)
@@ -256,6 +288,19 @@ static inline int of_property_read_string(struct device_node *np,
256 return -ENOSYS; 288 return -ENOSYS;
257} 289}
258 290
291static inline int of_property_read_string_index(struct device_node *np,
292 const char *propname, int index,
293 const char **out_string)
294{
295 return -ENOSYS;
296}
297
298static inline int of_property_count_strings(struct device_node *np,
299 const char *propname)
300{
301 return -ENOSYS;
302}
303
259static inline const void *of_get_property(const struct device_node *node, 304static inline const void *of_get_property(const struct device_node *node,
260 const char *name, 305 const char *name,
261 int *lenp) 306 int *lenp)
@@ -263,6 +308,21 @@ static inline const void *of_get_property(const struct device_node *node,
263 return NULL; 308 return NULL;
264} 309}
265 310
311static inline int of_property_read_u64(const struct device_node *np,
312 const char *propname, u64 *out_value)
313{
314 return -ENOSYS;
315}
316
317static inline struct device_node *of_parse_phandle(struct device_node *np,
318 const char *phandle_name,
319 int index)
320{
321 return NULL;
322}
323
324#define of_match_ptr(_ptr) NULL
325#define of_match_node(_matches, _node) NULL
266#endif /* CONFIG_OF */ 326#endif /* CONFIG_OF */
267 327
268static inline int of_property_read_u32(const struct device_node *np, 328static inline int of_property_read_u32(const struct device_node *np,
diff --git a/include/linux/of_irq.h b/include/linux/of_irq.h
index cd2e61ce4e83..d0307eed20c9 100644
--- a/include/linux/of_irq.h
+++ b/include/linux/of_irq.h
@@ -33,6 +33,8 @@ struct of_irq {
33 u32 specifier[OF_MAX_IRQ_SPEC]; /* Specifier copy */ 33 u32 specifier[OF_MAX_IRQ_SPEC]; /* Specifier copy */
34}; 34};
35 35
36typedef int (*of_irq_init_cb_t)(struct device_node *, struct device_node *);
37
36/* 38/*
37 * Workarounds only applied to 32bit powermac machines 39 * Workarounds only applied to 32bit powermac machines
38 */ 40 */
@@ -73,6 +75,7 @@ extern int of_irq_to_resource_table(struct device_node *dev,
73 struct resource *res, int nr_irqs); 75 struct resource *res, int nr_irqs);
74extern struct device_node *of_irq_find_parent(struct device_node *child); 76extern struct device_node *of_irq_find_parent(struct device_node *child);
75 77
78extern void of_irq_init(const struct of_device_id *matches);
76 79
77#endif /* CONFIG_OF_IRQ */ 80#endif /* CONFIG_OF_IRQ */
78#endif /* CONFIG_OF */ 81#endif /* CONFIG_OF */
diff --git a/include/linux/omap3isp.h b/include/linux/omap3isp.h
index b6111f8cd49a..c73a34c3434d 100644
--- a/include/linux/omap3isp.h
+++ b/include/linux/omap3isp.h
@@ -62,14 +62,12 @@
62 * V4L2_EVENT_OMAP3ISP_AEWB: AEWB statistics data ready 62 * V4L2_EVENT_OMAP3ISP_AEWB: AEWB statistics data ready
63 * V4L2_EVENT_OMAP3ISP_AF: AF statistics data ready 63 * V4L2_EVENT_OMAP3ISP_AF: AF statistics data ready
64 * V4L2_EVENT_OMAP3ISP_HIST: Histogram statistics data ready 64 * V4L2_EVENT_OMAP3ISP_HIST: Histogram statistics data ready
65 * V4L2_EVENT_OMAP3ISP_HS_VS: Horizontal/vertical synchronization detected
66 */ 65 */
67 66
68#define V4L2_EVENT_OMAP3ISP_CLASS (V4L2_EVENT_PRIVATE_START | 0x100) 67#define V4L2_EVENT_OMAP3ISP_CLASS (V4L2_EVENT_PRIVATE_START | 0x100)
69#define V4L2_EVENT_OMAP3ISP_AEWB (V4L2_EVENT_OMAP3ISP_CLASS | 0x1) 68#define V4L2_EVENT_OMAP3ISP_AEWB (V4L2_EVENT_OMAP3ISP_CLASS | 0x1)
70#define V4L2_EVENT_OMAP3ISP_AF (V4L2_EVENT_OMAP3ISP_CLASS | 0x2) 69#define V4L2_EVENT_OMAP3ISP_AF (V4L2_EVENT_OMAP3ISP_CLASS | 0x2)
71#define V4L2_EVENT_OMAP3ISP_HIST (V4L2_EVENT_OMAP3ISP_CLASS | 0x3) 70#define V4L2_EVENT_OMAP3ISP_HIST (V4L2_EVENT_OMAP3ISP_CLASS | 0x3)
72#define V4L2_EVENT_OMAP3ISP_HS_VS (V4L2_EVENT_OMAP3ISP_CLASS | 0x4)
73 71
74struct omap3isp_stat_event_status { 72struct omap3isp_stat_event_status {
75 __u32 frame_number; 73 __u32 frame_number;
diff --git a/include/linux/oom.h b/include/linux/oom.h
index 13b7b02e599a..6f9d04a85336 100644
--- a/include/linux/oom.h
+++ b/include/linux/oom.h
@@ -40,6 +40,7 @@ enum oom_constraint {
40 CONSTRAINT_MEMCG, 40 CONSTRAINT_MEMCG,
41}; 41};
42 42
43extern void compare_swap_oom_score_adj(int old_val, int new_val);
43extern int test_set_oom_score_adj(int new_val); 44extern int test_set_oom_score_adj(int new_val);
44 45
45extern unsigned int oom_badness(struct task_struct *p, struct mem_cgroup *mem, 46extern unsigned int oom_badness(struct task_struct *p, struct mem_cgroup *mem,
diff --git a/include/linux/opp.h b/include/linux/opp.h
index 7020e9736fc5..87a9208f8aec 100644
--- a/include/linux/opp.h
+++ b/include/linux/opp.h
@@ -16,9 +16,14 @@
16 16
17#include <linux/err.h> 17#include <linux/err.h>
18#include <linux/cpufreq.h> 18#include <linux/cpufreq.h>
19#include <linux/notifier.h>
19 20
20struct opp; 21struct opp;
21 22
23enum opp_event {
24 OPP_EVENT_ADD, OPP_EVENT_ENABLE, OPP_EVENT_DISABLE,
25};
26
22#if defined(CONFIG_PM_OPP) 27#if defined(CONFIG_PM_OPP)
23 28
24unsigned long opp_get_voltage(struct opp *opp); 29unsigned long opp_get_voltage(struct opp *opp);
@@ -40,6 +45,8 @@ int opp_enable(struct device *dev, unsigned long freq);
40 45
41int opp_disable(struct device *dev, unsigned long freq); 46int opp_disable(struct device *dev, unsigned long freq);
42 47
48struct srcu_notifier_head *opp_get_notifier(struct device *dev);
49
43#else 50#else
44static inline unsigned long opp_get_voltage(struct opp *opp) 51static inline unsigned long opp_get_voltage(struct opp *opp)
45{ 52{
@@ -89,6 +96,11 @@ static inline int opp_disable(struct device *dev, unsigned long freq)
89{ 96{
90 return 0; 97 return 0;
91} 98}
99
100struct srcu_notifier_head *opp_get_notifier(struct device *dev)
101{
102 return ERR_PTR(-EINVAL);
103}
92#endif /* CONFIG_PM */ 104#endif /* CONFIG_PM */
93 105
94#if defined(CONFIG_CPU_FREQ) && defined(CONFIG_PM_OPP) 106#if defined(CONFIG_CPU_FREQ) && defined(CONFIG_PM_OPP)
diff --git a/include/linux/oprofile.h b/include/linux/oprofile.h
index 49c8727eeb57..a4c562453f6b 100644
--- a/include/linux/oprofile.h
+++ b/include/linux/oprofile.h
@@ -166,7 +166,7 @@ ssize_t oprofilefs_ulong_to_user(unsigned long val, char __user * buf, size_t co
166int oprofilefs_ulong_from_user(unsigned long * val, char const __user * buf, size_t count); 166int oprofilefs_ulong_from_user(unsigned long * val, char const __user * buf, size_t count);
167 167
168/** lock for read/write safety */ 168/** lock for read/write safety */
169extern spinlock_t oprofilefs_lock; 169extern raw_spinlock_t oprofilefs_lock;
170 170
171/** 171/**
172 * Add the contents of a circular buffer to the event buffer. 172 * Add the contents of a circular buffer to the event buffer.
diff --git a/include/linux/pci-ats.h b/include/linux/pci-ats.h
index 655824fa4c76..e3d0b3890249 100644
--- a/include/linux/pci-ats.h
+++ b/include/linux/pci-ats.h
@@ -1,6 +1,8 @@
1#ifndef LINUX_PCI_ATS_H 1#ifndef LINUX_PCI_ATS_H
2#define LINUX_PCI_ATS_H 2#define LINUX_PCI_ATS_H
3 3
4#include <linux/pci.h>
5
4/* Address Translation Service */ 6/* Address Translation Service */
5struct pci_ats { 7struct pci_ats {
6 int pos; /* capability position */ 8 int pos; /* capability position */
@@ -15,6 +17,7 @@ struct pci_ats {
15extern int pci_enable_ats(struct pci_dev *dev, int ps); 17extern int pci_enable_ats(struct pci_dev *dev, int ps);
16extern void pci_disable_ats(struct pci_dev *dev); 18extern void pci_disable_ats(struct pci_dev *dev);
17extern int pci_ats_queue_depth(struct pci_dev *dev); 19extern int pci_ats_queue_depth(struct pci_dev *dev);
20
18/** 21/**
19 * pci_ats_enabled - query the ATS status 22 * pci_ats_enabled - query the ATS status
20 * @dev: the PCI device 23 * @dev: the PCI device
@@ -49,4 +52,76 @@ static inline int pci_ats_enabled(struct pci_dev *dev)
49 52
50#endif /* CONFIG_PCI_IOV */ 53#endif /* CONFIG_PCI_IOV */
51 54
55#ifdef CONFIG_PCI_PRI
56
57extern int pci_enable_pri(struct pci_dev *pdev, u32 reqs);
58extern void pci_disable_pri(struct pci_dev *pdev);
59extern bool pci_pri_enabled(struct pci_dev *pdev);
60extern int pci_reset_pri(struct pci_dev *pdev);
61extern bool pci_pri_stopped(struct pci_dev *pdev);
62extern int pci_pri_status(struct pci_dev *pdev);
63
64#else /* CONFIG_PCI_PRI */
65
66static inline int pci_enable_pri(struct pci_dev *pdev, u32 reqs)
67{
68 return -ENODEV;
69}
70
71static inline void pci_disable_pri(struct pci_dev *pdev)
72{
73}
74
75static inline bool pci_pri_enabled(struct pci_dev *pdev)
76{
77 return false;
78}
79
80static inline int pci_reset_pri(struct pci_dev *pdev)
81{
82 return -ENODEV;
83}
84
85static inline bool pci_pri_stopped(struct pci_dev *pdev)
86{
87 return true;
88}
89
90static inline int pci_pri_status(struct pci_dev *pdev)
91{
92 return -ENODEV;
93}
94#endif /* CONFIG_PCI_PRI */
95
96#ifdef CONFIG_PCI_PASID
97
98extern int pci_enable_pasid(struct pci_dev *pdev, int features);
99extern void pci_disable_pasid(struct pci_dev *pdev);
100extern int pci_pasid_features(struct pci_dev *pdev);
101extern int pci_max_pasids(struct pci_dev *pdev);
102
103#else /* CONFIG_PCI_PASID */
104
105static inline int pci_enable_pasid(struct pci_dev *pdev, int features)
106{
107 return -EINVAL;
108}
109
110static inline void pci_disable_pasid(struct pci_dev *pdev)
111{
112}
113
114static inline int pci_pasid_features(struct pci_dev *pdev)
115{
116 return -EINVAL;
117}
118
119static inline int pci_max_pasids(struct pci_dev *pdev)
120{
121 return -EINVAL;
122}
123
124#endif /* CONFIG_PCI_PASID */
125
126
52#endif /* LINUX_PCI_ATS_H*/ 127#endif /* LINUX_PCI_ATS_H*/
diff --git a/include/linux/pci.h b/include/linux/pci.h
index 9fc01226055b..337df0d5d5f7 100644
--- a/include/linux/pci.h
+++ b/include/linux/pci.h
@@ -174,6 +174,8 @@ enum pci_dev_flags {
174 PCI_DEV_FLAGS_MSI_INTX_DISABLE_BUG = (__force pci_dev_flags_t) 1, 174 PCI_DEV_FLAGS_MSI_INTX_DISABLE_BUG = (__force pci_dev_flags_t) 1,
175 /* Device configuration is irrevocably lost if disabled into D3 */ 175 /* Device configuration is irrevocably lost if disabled into D3 */
176 PCI_DEV_FLAGS_NO_D3 = (__force pci_dev_flags_t) 2, 176 PCI_DEV_FLAGS_NO_D3 = (__force pci_dev_flags_t) 2,
177 /* Provide indication device is assigned by a Virtual Machine Manager */
178 PCI_DEV_FLAGS_ASSIGNED = (__force pci_dev_flags_t) 4,
177}; 179};
178 180
179enum pci_irq_reroute_variant { 181enum pci_irq_reroute_variant {
@@ -273,6 +275,7 @@ struct pci_dev {
273 unsigned int pme_support:5; /* Bitmask of states from which PME# 275 unsigned int pme_support:5; /* Bitmask of states from which PME#
274 can be generated */ 276 can be generated */
275 unsigned int pme_interrupt:1; 277 unsigned int pme_interrupt:1;
278 unsigned int pme_poll:1; /* Poll device's PME status bit */
276 unsigned int d1_support:1; /* Low power state D1 is supported */ 279 unsigned int d1_support:1; /* Low power state D1 is supported */
277 unsigned int d2_support:1; /* Low power state D2 is supported */ 280 unsigned int d2_support:1; /* Low power state D2 is supported */
278 unsigned int no_d1d2:1; /* Only allow D0 and D3 */ 281 unsigned int no_d1d2:1; /* Only allow D0 and D3 */
@@ -955,6 +958,7 @@ void pci_walk_bus(struct pci_bus *top, int (*cb)(struct pci_dev *, void *),
955int pci_cfg_space_size_ext(struct pci_dev *dev); 958int pci_cfg_space_size_ext(struct pci_dev *dev);
956int pci_cfg_space_size(struct pci_dev *dev); 959int pci_cfg_space_size(struct pci_dev *dev);
957unsigned char pci_bus_max_busnr(struct pci_bus *bus); 960unsigned char pci_bus_max_busnr(struct pci_bus *bus);
961void pci_setup_bridge(struct pci_bus *bus);
958 962
959#define PCI_VGA_STATE_CHANGE_BRIDGE (1 << 0) 963#define PCI_VGA_STATE_CHANGE_BRIDGE (1 << 0)
960#define PCI_VGA_STATE_CHANGE_DECODES (1 << 1) 964#define PCI_VGA_STATE_CHANGE_DECODES (1 << 1)
diff --git a/include/linux/pci_ids.h b/include/linux/pci_ids.h
index ae96bbe54518..1679ff6931f9 100644
--- a/include/linux/pci_ids.h
+++ b/include/linux/pci_ids.h
@@ -2302,6 +2302,11 @@
2302#define PCI_DEVICE_ID_RENESAS_SH7785 0x0007 2302#define PCI_DEVICE_ID_RENESAS_SH7785 0x0007
2303#define PCI_DEVICE_ID_RENESAS_SH7786 0x0010 2303#define PCI_DEVICE_ID_RENESAS_SH7786 0x0010
2304 2304
2305#define PCI_VENDOR_ID_SOLARFLARE 0x1924
2306#define PCI_DEVICE_ID_SOLARFLARE_SFC4000A_0 0x0703
2307#define PCI_DEVICE_ID_SOLARFLARE_SFC4000A_1 0x6703
2308#define PCI_DEVICE_ID_SOLARFLARE_SFC4000B 0x0710
2309
2305#define PCI_VENDOR_ID_TDI 0x192E 2310#define PCI_VENDOR_ID_TDI 0x192E
2306#define PCI_DEVICE_ID_TDI_EHCI 0x0101 2311#define PCI_DEVICE_ID_TDI_EHCI 0x0101
2307 2312
diff --git a/include/linux/pci_regs.h b/include/linux/pci_regs.h
index e8840964aca1..b5d9657f3100 100644
--- a/include/linux/pci_regs.h
+++ b/include/linux/pci_regs.h
@@ -663,6 +663,26 @@
663#define PCI_ATS_CTRL_STU(x) ((x) & 0x1f) /* Smallest Translation Unit */ 663#define PCI_ATS_CTRL_STU(x) ((x) & 0x1f) /* Smallest Translation Unit */
664#define PCI_ATS_MIN_STU 12 /* shift of minimum STU block */ 664#define PCI_ATS_MIN_STU 12 /* shift of minimum STU block */
665 665
666/* Page Request Interface */
667#define PCI_PRI_CAP 0x13 /* PRI capability ID */
668#define PCI_PRI_CONTROL_OFF 0x04 /* Offset of control register */
669#define PCI_PRI_STATUS_OFF 0x06 /* Offset of status register */
670#define PCI_PRI_ENABLE 0x0001 /* Enable mask */
671#define PCI_PRI_RESET 0x0002 /* Reset bit mask */
672#define PCI_PRI_STATUS_RF 0x0001 /* Request Failure */
673#define PCI_PRI_STATUS_UPRGI 0x0002 /* Unexpected PRG index */
674#define PCI_PRI_STATUS_STOPPED 0x0100 /* PRI Stopped */
675#define PCI_PRI_MAX_REQ_OFF 0x08 /* Cap offset for max reqs supported */
676#define PCI_PRI_ALLOC_REQ_OFF 0x0c /* Cap offset for max reqs allowed */
677
678/* PASID capability */
679#define PCI_PASID_CAP 0x1b /* PASID capability ID */
680#define PCI_PASID_CAP_OFF 0x04 /* PASID feature register */
681#define PCI_PASID_CONTROL_OFF 0x06 /* PASID control register */
682#define PCI_PASID_ENABLE 0x01 /* Enable/Supported bit */
683#define PCI_PASID_EXEC 0x02 /* Exec permissions Enable/Supported */
684#define PCI_PASID_PRIV 0x04 /* Priviledge Mode Enable/Support */
685
666/* Single Root I/O Virtualization */ 686/* Single Root I/O Virtualization */
667#define PCI_SRIOV_CAP 0x04 /* SR-IOV Capabilities */ 687#define PCI_SRIOV_CAP 0x04 /* SR-IOV Capabilities */
668#define PCI_SRIOV_CAP_VFM 0x01 /* VF Migration Capable */ 688#define PCI_SRIOV_CAP_VFM 0x01 /* VF Migration Capable */
diff --git a/include/linux/percpu_counter.h b/include/linux/percpu_counter.h
index 5edc9014263a..b9df9ed1adc0 100644
--- a/include/linux/percpu_counter.h
+++ b/include/linux/percpu_counter.h
@@ -16,7 +16,7 @@
16#ifdef CONFIG_SMP 16#ifdef CONFIG_SMP
17 17
18struct percpu_counter { 18struct percpu_counter {
19 spinlock_t lock; 19 raw_spinlock_t lock;
20 s64 count; 20 s64 count;
21#ifdef CONFIG_HOTPLUG_CPU 21#ifdef CONFIG_HOTPLUG_CPU
22 struct list_head list; /* All percpu_counters are on a list */ 22 struct list_head list; /* All percpu_counters are on a list */
diff --git a/include/linux/perf_event.h b/include/linux/perf_event.h
index c816075c01ce..1e9ebe5e0091 100644
--- a/include/linux/perf_event.h
+++ b/include/linux/perf_event.h
@@ -220,7 +220,10 @@ struct perf_event_attr {
220 mmap_data : 1, /* non-exec mmap data */ 220 mmap_data : 1, /* non-exec mmap data */
221 sample_id_all : 1, /* sample_type all events */ 221 sample_id_all : 1, /* sample_type all events */
222 222
223 __reserved_1 : 45; 223 exclude_host : 1, /* don't count in host */
224 exclude_guest : 1, /* don't count in guest */
225
226 __reserved_1 : 43;
224 227
225 union { 228 union {
226 __u32 wakeup_events; /* wakeup every n events */ 229 __u32 wakeup_events; /* wakeup every n events */
diff --git a/include/linux/phonet.h b/include/linux/phonet.h
index 6fb13841db45..f53a4167c5f4 100644
--- a/include/linux/phonet.h
+++ b/include/linux/phonet.h
@@ -24,6 +24,7 @@
24#define LINUX_PHONET_H 24#define LINUX_PHONET_H
25 25
26#include <linux/types.h> 26#include <linux/types.h>
27#include <linux/socket.h>
27 28
28/* Automatic protocol selection */ 29/* Automatic protocol selection */
29#define PN_PROTO_TRANSPORT 0 30#define PN_PROTO_TRANSPORT 0
@@ -96,11 +97,11 @@ struct phonetmsg {
96 97
97/* Phonet socket address structure */ 98/* Phonet socket address structure */
98struct sockaddr_pn { 99struct sockaddr_pn {
99 sa_family_t spn_family; 100 __kernel_sa_family_t spn_family;
100 __u8 spn_obj; 101 __u8 spn_obj;
101 __u8 spn_dev; 102 __u8 spn_dev;
102 __u8 spn_resource; 103 __u8 spn_resource;
103 __u8 spn_zero[sizeof(struct sockaddr) - sizeof(sa_family_t) - 3]; 104 __u8 spn_zero[sizeof(struct sockaddr) - sizeof(__kernel_sa_family_t) - 3];
104} __attribute__((packed)); 105} __attribute__((packed));
105 106
106/* Well known address */ 107/* Well known address */
diff --git a/include/linux/phy.h b/include/linux/phy.h
index 54fc4138955f..79f337c47388 100644
--- a/include/linux/phy.h
+++ b/include/linux/phy.h
@@ -420,7 +420,7 @@ struct phy_driver {
420 420
421 /* 421 /*
422 * Requests a Tx timestamp for 'skb'. The phy driver promises 422 * Requests a Tx timestamp for 'skb'. The phy driver promises
423 * to deliver it to the socket's error queue as soon as a 423 * to deliver it using skb_complete_tx_timestamp() as soon as a
424 * timestamp becomes available. One of the PTP_CLASS_ values 424 * timestamp becomes available. One of the PTP_CLASS_ values
425 * is passed in 'type'. 425 * is passed in 'type'.
426 */ 426 */
diff --git a/include/linux/pinctrl/machine.h b/include/linux/pinctrl/machine.h
new file mode 100644
index 000000000000..88863531d862
--- /dev/null
+++ b/include/linux/pinctrl/machine.h
@@ -0,0 +1,107 @@
1/*
2 * Machine interface for the pinctrl subsystem.
3 *
4 * Copyright (C) 2011 ST-Ericsson SA
5 * Written on behalf of Linaro for ST-Ericsson
6 * Based on bits of regulator core, gpio core and clk core
7 *
8 * Author: Linus Walleij <linus.walleij@linaro.org>
9 *
10 * License terms: GNU General Public License (GPL) version 2
11 */
12#ifndef __LINUX_PINMUX_MACHINE_H
13#define __LINUX_PINMUX_MACHINE_H
14
15/**
16 * struct pinmux_map - boards/machines shall provide this map for devices
17 * @name: the name of this specific map entry for the particular machine.
18 * This is the second parameter passed to pinmux_get() when you want
19 * to have several mappings to the same device
20 * @ctrl_dev: the pin control device to be used by this mapping, may be NULL
21 * if you provide .ctrl_dev_name instead (this is more common)
22 * @ctrl_dev_name: the name of the device controlling this specific mapping,
23 * the name must be the same as in your struct device*, may be NULL if
24 * you provide .ctrl_dev instead
25 * @function: a function in the driver to use for this mapping, the driver
26 * will lookup the function referenced by this ID on the specified
27 * pin control device
28 * @group: sometimes a function can map to different pin groups, so this
29 * selects a certain specific pin group to activate for the function, if
30 * left as NULL, the first applicable group will be used
31 * @dev: the device using this specific mapping, may be NULL if you provide
32 * .dev_name instead (this is more common)
33 * @dev_name: the name of the device using this specific mapping, the name
34 * must be the same as in your struct device*, may be NULL if you
35 * provide .dev instead
36 * @hog_on_boot: if this is set to true, the pin control subsystem will itself
37 * hog the mappings as the pinmux device drivers are attached, so this is
38 * typically used with system maps (mux mappings without an assigned
39 * device) that you want to get hogged and enabled by default as soon as
40 * a pinmux device supporting it is registered. These maps will not be
41 * disabled and put until the system shuts down.
42 */
43struct pinmux_map {
44 const char *name;
45 struct device *ctrl_dev;
46 const char *ctrl_dev_name;
47 const char *function;
48 const char *group;
49 struct device *dev;
50 const char *dev_name;
51 const bool hog_on_boot;
52};
53
54/*
55 * Convenience macro to set a simple map from a certain pin controller and a
56 * certain function to a named device
57 */
58#define PINMUX_MAP(a, b, c, d) \
59 { .name = a, .ctrl_dev_name = b, .function = c, .dev_name = d }
60
61/*
62 * Convenience macro to map a system function onto a certain pinctrl device.
63 * System functions are not assigned to a particular device.
64 */
65#define PINMUX_MAP_SYS(a, b, c) \
66 { .name = a, .ctrl_dev_name = b, .function = c }
67
68/*
69 * Convenience macro to map a function onto the primary device pinctrl device
70 * this is especially helpful on systems that have only one pin controller
71 * or need to set up a lot of mappings on the primary controller.
72 */
73#define PINMUX_MAP_PRIMARY(a, b, c) \
74 { .name = a, .ctrl_dev_name = "pinctrl.0", .function = b, \
75 .dev_name = c }
76
77/*
78 * Convenience macro to map a system function onto the primary pinctrl device.
79 * System functions are not assigned to a particular device.
80 */
81#define PINMUX_MAP_PRIMARY_SYS(a, b) \
82 { .name = a, .ctrl_dev_name = "pinctrl.0", .function = b }
83
84/*
85 * Convenience macro to map a system function onto the primary pinctrl device,
86 * to be hogged by the pinmux core until the system shuts down.
87 */
88#define PINMUX_MAP_PRIMARY_SYS_HOG(a, b) \
89 { .name = a, .ctrl_dev_name = "pinctrl.0", .function = b, \
90 .hog_on_boot = true }
91
92
93#ifdef CONFIG_PINMUX
94
95extern int pinmux_register_mappings(struct pinmux_map const *map,
96 unsigned num_maps);
97
98#else
99
100static inline int pinmux_register_mappings(struct pinmux_map const *map,
101 unsigned num_maps)
102{
103 return 0;
104}
105
106#endif /* !CONFIG_PINMUX */
107#endif
diff --git a/include/linux/pinctrl/pinctrl.h b/include/linux/pinctrl/pinctrl.h
new file mode 100644
index 000000000000..3605e947fa90
--- /dev/null
+++ b/include/linux/pinctrl/pinctrl.h
@@ -0,0 +1,133 @@
1/*
2 * Interface the pinctrl subsystem
3 *
4 * Copyright (C) 2011 ST-Ericsson SA
5 * Written on behalf of Linaro for ST-Ericsson
6 * This interface is used in the core to keep track of pins.
7 *
8 * Author: Linus Walleij <linus.walleij@linaro.org>
9 *
10 * License terms: GNU General Public License (GPL) version 2
11 */
12#ifndef __LINUX_PINCTRL_PINCTRL_H
13#define __LINUX_PINCTRL_PINCTRL_H
14
15#ifdef CONFIG_PINCTRL
16
17#include <linux/radix-tree.h>
18#include <linux/spinlock.h>
19#include <linux/list.h>
20#include <linux/seq_file.h>
21
22struct pinctrl_dev;
23struct pinmux_ops;
24struct gpio_chip;
25
26/**
27 * struct pinctrl_pin_desc - boards/machines provide information on their
28 * pins, pads or other muxable units in this struct
29 * @number: unique pin number from the global pin number space
30 * @name: a name for this pin
31 */
32struct pinctrl_pin_desc {
33 unsigned number;
34 const char *name;
35};
36
37/* Convenience macro to define a single named or anonymous pin descriptor */
38#define PINCTRL_PIN(a, b) { .number = a, .name = b }
39#define PINCTRL_PIN_ANON(a) { .number = a }
40
41/**
42 * struct pinctrl_gpio_range - each pin controller can provide subranges of
43 * the GPIO number space to be handled by the controller
44 * @node: list node for internal use
45 * @name: a name for the chip in this range
46 * @id: an ID number for the chip in this range
47 * @base: base offset of the GPIO range
48 * @npins: number of pins in the GPIO range, including the base number
49 * @gc: an optional pointer to a gpio_chip
50 */
51struct pinctrl_gpio_range {
52 struct list_head node;
53 const char *name;
54 unsigned int id;
55 unsigned int base;
56 unsigned int npins;
57 struct gpio_chip *gc;
58};
59
60/**
61 * struct pinctrl_ops - global pin control operations, to be implemented by
62 * pin controller drivers.
63 * @list_groups: list the number of selectable named groups available
64 * in this pinmux driver, the core will begin on 0 and call this
65 * repeatedly as long as it returns >= 0 to enumerate the groups
66 * @get_group_name: return the group name of the pin group
67 * @get_group_pins: return an array of pins corresponding to a certain
68 * group selector @pins, and the size of the array in @num_pins
69 * @pin_dbg_show: optional debugfs display hook that will provide per-device
70 * info for a certain pin in debugfs
71 */
72struct pinctrl_ops {
73 int (*list_groups) (struct pinctrl_dev *pctldev, unsigned selector);
74 const char *(*get_group_name) (struct pinctrl_dev *pctldev,
75 unsigned selector);
76 int (*get_group_pins) (struct pinctrl_dev *pctldev,
77 unsigned selector,
78 const unsigned **pins,
79 unsigned *num_pins);
80 void (*pin_dbg_show) (struct pinctrl_dev *pctldev, struct seq_file *s,
81 unsigned offset);
82};
83
84/**
85 * struct pinctrl_desc - pin controller descriptor, register this to pin
86 * control subsystem
87 * @name: name for the pin controller
88 * @pins: an array of pin descriptors describing all the pins handled by
89 * this pin controller
90 * @npins: number of descriptors in the array, usually just ARRAY_SIZE()
91 * of the pins field above
92 * @maxpin: since pin spaces may be sparse, there can he "holes" in the
93 * pin range, this attribute gives the maximum pin number in the
94 * total range. This should not be lower than npins for example,
95 * but may be equal to npins if you have no holes in the pin range.
96 * @pctlops: pin control operation vtable, to support global concepts like
97 * grouping of pins, this is optional.
98 * @pmxops: pinmux operation vtable, if you support pinmuxing in your driver
99 * @owner: module providing the pin controller, used for refcounting
100 */
101struct pinctrl_desc {
102 const char *name;
103 struct pinctrl_pin_desc const *pins;
104 unsigned int npins;
105 unsigned int maxpin;
106 struct pinctrl_ops *pctlops;
107 struct pinmux_ops *pmxops;
108 struct module *owner;
109};
110
111/* External interface to pin controller */
112extern struct pinctrl_dev *pinctrl_register(struct pinctrl_desc *pctldesc,
113 struct device *dev, void *driver_data);
114extern void pinctrl_unregister(struct pinctrl_dev *pctldev);
115extern bool pin_is_valid(struct pinctrl_dev *pctldev, int pin);
116extern void pinctrl_add_gpio_range(struct pinctrl_dev *pctldev,
117 struct pinctrl_gpio_range *range);
118extern void pinctrl_remove_gpio_range(struct pinctrl_dev *pctldev,
119 struct pinctrl_gpio_range *range);
120extern const char *pinctrl_dev_get_name(struct pinctrl_dev *pctldev);
121extern void *pinctrl_dev_get_drvdata(struct pinctrl_dev *pctldev);
122#else
123
124
125/* Sufficiently stupid default function when pinctrl is not in use */
126static inline bool pin_is_valid(struct pinctrl_dev *pctldev, int pin)
127{
128 return pin >= 0;
129}
130
131#endif /* !CONFIG_PINCTRL */
132
133#endif /* __LINUX_PINCTRL_PINCTRL_H */
diff --git a/include/linux/pinctrl/pinmux.h b/include/linux/pinctrl/pinmux.h
new file mode 100644
index 000000000000..3c430e797efc
--- /dev/null
+++ b/include/linux/pinctrl/pinmux.h
@@ -0,0 +1,117 @@
1/*
2 * Interface the pinmux subsystem
3 *
4 * Copyright (C) 2011 ST-Ericsson SA
5 * Written on behalf of Linaro for ST-Ericsson
6 * Based on bits of regulator core, gpio core and clk core
7 *
8 * Author: Linus Walleij <linus.walleij@linaro.org>
9 *
10 * License terms: GNU General Public License (GPL) version 2
11 */
12#ifndef __LINUX_PINCTRL_PINMUX_H
13#define __LINUX_PINCTRL_PINMUX_H
14
15#include <linux/list.h>
16#include <linux/seq_file.h>
17#include "pinctrl.h"
18
19/* This struct is private to the core and should be regarded as a cookie */
20struct pinmux;
21
22#ifdef CONFIG_PINMUX
23
24struct pinctrl_dev;
25
26/**
27 * struct pinmux_ops - pinmux operations, to be implemented by pin controller
28 * drivers that support pinmuxing
29 * @request: called by the core to see if a certain pin can be made available
30 * available for muxing. This is called by the core to acquire the pins
31 * before selecting any actual mux setting across a function. The driver
32 * is allowed to answer "no" by returning a negative error code
33 * @free: the reverse function of the request() callback, frees a pin after
34 * being requested
35 * @list_functions: list the number of selectable named functions available
36 * in this pinmux driver, the core will begin on 0 and call this
37 * repeatedly as long as it returns >= 0 to enumerate mux settings
38 * @get_function_name: return the function name of the muxing selector,
39 * called by the core to figure out which mux setting it shall map a
40 * certain device to
41 * @get_function_groups: return an array of groups names (in turn
42 * referencing pins) connected to a certain function selector. The group
43 * name can be used with the generic @pinctrl_ops to retrieve the
44 * actual pins affected. The applicable groups will be returned in
45 * @groups and the number of groups in @num_groups
46 * @enable: enable a certain muxing function with a certain pin group. The
47 * driver does not need to figure out whether enabling this function
48 * conflicts some other use of the pins in that group, such collisions
49 * are handled by the pinmux subsystem. The @func_selector selects a
50 * certain function whereas @group_selector selects a certain set of pins
51 * to be used. On simple controllers the latter argument may be ignored
52 * @disable: disable a certain muxing selector with a certain pin group
53 * @gpio_request_enable: requests and enables GPIO on a certain pin.
54 * Implement this only if you can mux every pin individually as GPIO. The
55 * affected GPIO range is passed along with an offset into that
56 * specific GPIO range - function selectors and pin groups are orthogonal
57 * to this, the core will however make sure the pins do not collide
58 */
59struct pinmux_ops {
60 int (*request) (struct pinctrl_dev *pctldev, unsigned offset);
61 int (*free) (struct pinctrl_dev *pctldev, unsigned offset);
62 int (*list_functions) (struct pinctrl_dev *pctldev, unsigned selector);
63 const char *(*get_function_name) (struct pinctrl_dev *pctldev,
64 unsigned selector);
65 int (*get_function_groups) (struct pinctrl_dev *pctldev,
66 unsigned selector,
67 const char * const **groups,
68 unsigned * const num_groups);
69 int (*enable) (struct pinctrl_dev *pctldev, unsigned func_selector,
70 unsigned group_selector);
71 void (*disable) (struct pinctrl_dev *pctldev, unsigned func_selector,
72 unsigned group_selector);
73 int (*gpio_request_enable) (struct pinctrl_dev *pctldev,
74 struct pinctrl_gpio_range *range,
75 unsigned offset);
76};
77
78/* External interface to pinmux */
79extern int pinmux_request_gpio(unsigned gpio);
80extern void pinmux_free_gpio(unsigned gpio);
81extern struct pinmux * __must_check pinmux_get(struct device *dev, const char *name);
82extern void pinmux_put(struct pinmux *pmx);
83extern int pinmux_enable(struct pinmux *pmx);
84extern void pinmux_disable(struct pinmux *pmx);
85
86#else /* !CONFIG_PINMUX */
87
88static inline int pinmux_request_gpio(unsigned gpio)
89{
90 return 0;
91}
92
93static inline void pinmux_free_gpio(unsigned gpio)
94{
95}
96
97static inline struct pinmux * __must_check pinmux_get(struct device *dev, const char *name)
98{
99 return NULL;
100}
101
102static inline void pinmux_put(struct pinmux *pmx)
103{
104}
105
106static inline int pinmux_enable(struct pinmux *pmx)
107{
108 return 0;
109}
110
111static inline void pinmux_disable(struct pinmux *pmx)
112{
113}
114
115#endif /* CONFIG_PINMUX */
116
117#endif /* __LINUX_PINCTRL_PINMUX_H */
diff --git a/include/linux/platform_data/dwc3-omap.h b/include/linux/platform_data/dwc3-omap.h
new file mode 100644
index 000000000000..ada401244e0b
--- /dev/null
+++ b/include/linux/platform_data/dwc3-omap.h
@@ -0,0 +1,47 @@
1/**
2 * dwc3-omap.h - OMAP Specific Glue layer, header.
3 *
4 * Copyright (C) 2010-2011 Texas Instruments Incorporated - http://www.ti.com
5 * All rights reserved.
6 *
7 * Author: Felipe Balbi <balbi@ti.com>
8 *
9 * Redistribution and use in source and binary forms, with or without
10 * modification, are permitted provided that the following conditions
11 * are met:
12 * 1. Redistributions of source code must retain the above copyright
13 * notice, this list of conditions, and the following disclaimer,
14 * without modification.
15 * 2. Redistributions in binary form must reproduce the above copyright
16 * notice, this list of conditions and the following disclaimer in the
17 * documentation and/or other materials provided with the distribution.
18 * 3. The names of the above-listed copyright holders may not be used
19 * to endorse or promote products derived from this software without
20 * specific prior written permission.
21 *
22 * ALTERNATIVELY, this software may be distributed under the terms of the
23 * GNU General Public License ("GPL") version 2, as published by the Free
24 * Software Foundation.
25 *
26 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
27 * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
28 * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
29 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
30 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
31 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
32 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
33 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
34 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
35 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
36 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
37 */
38
39enum dwc3_omap_utmi_mode {
40 DWC3_OMAP_UTMI_MODE_UNKNOWN = 0,
41 DWC3_OMAP_UTMI_MODE_HW,
42 DWC3_OMAP_UTMI_MODE_SW,
43};
44
45struct dwc3_omap_data {
46 enum dwc3_omap_utmi_mode utmi_mode;
47};
diff --git a/include/linux/platform_data/exynos4_tmu.h b/include/linux/platform_data/exynos4_tmu.h
new file mode 100644
index 000000000000..39e038cca590
--- /dev/null
+++ b/include/linux/platform_data/exynos4_tmu.h
@@ -0,0 +1,83 @@
1/*
2 * exynos4_tmu.h - Samsung EXYNOS4 TMU (Thermal Management Unit)
3 *
4 * Copyright (C) 2011 Samsung Electronics
5 * Donggeun Kim <dg77.kim@samsung.com>
6 *
7 * This program is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License as published by
9 * the Free Software Foundation; either version 2 of the License, or
10 * (at your option) any later version.
11 *
12 * This program is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
16 *
17 * You should have received a copy of the GNU General Public License
18 * along with this program; if not, write to the Free Software
19 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
20 */
21
22#ifndef _LINUX_EXYNOS4_TMU_H
23#define _LINUX_EXYNOS4_TMU_H
24
25enum calibration_type {
26 TYPE_ONE_POINT_TRIMMING,
27 TYPE_TWO_POINT_TRIMMING,
28 TYPE_NONE,
29};
30
31/**
32 * struct exynos4_tmu_platform_data
33 * @threshold: basic temperature for generating interrupt
34 * 25 <= threshold <= 125 [unit: degree Celsius]
35 * @trigger_levels: array for each interrupt levels
36 * [unit: degree Celsius]
37 * 0: temperature for trigger_level0 interrupt
38 * condition for trigger_level0 interrupt:
39 * current temperature > threshold + trigger_levels[0]
40 * 1: temperature for trigger_level1 interrupt
41 * condition for trigger_level1 interrupt:
42 * current temperature > threshold + trigger_levels[1]
43 * 2: temperature for trigger_level2 interrupt
44 * condition for trigger_level2 interrupt:
45 * current temperature > threshold + trigger_levels[2]
46 * 3: temperature for trigger_level3 interrupt
47 * condition for trigger_level3 interrupt:
48 * current temperature > threshold + trigger_levels[3]
49 * @trigger_level0_en:
50 * 1 = enable trigger_level0 interrupt,
51 * 0 = disable trigger_level0 interrupt
52 * @trigger_level1_en:
53 * 1 = enable trigger_level1 interrupt,
54 * 0 = disable trigger_level1 interrupt
55 * @trigger_level2_en:
56 * 1 = enable trigger_level2 interrupt,
57 * 0 = disable trigger_level2 interrupt
58 * @trigger_level3_en:
59 * 1 = enable trigger_level3 interrupt,
60 * 0 = disable trigger_level3 interrupt
61 * @gain: gain of amplifier in the positive-TC generator block
62 * 0 <= gain <= 15
63 * @reference_voltage: reference voltage of amplifier
64 * in the positive-TC generator block
65 * 0 <= reference_voltage <= 31
66 * @cal_type: calibration type for temperature
67 *
68 * This structure is required for configuration of exynos4_tmu driver.
69 */
70struct exynos4_tmu_platform_data {
71 u8 threshold;
72 u8 trigger_levels[4];
73 bool trigger_level0_en;
74 bool trigger_level1_en;
75 bool trigger_level2_en;
76 bool trigger_level3_en;
77
78 u8 gain;
79 u8 reference_voltage;
80
81 enum calibration_type cal_type;
82};
83#endif /* _LINUX_EXYNOS4_TMU_H */
diff --git a/include/linux/platform_data/leds-renesas-tpu.h b/include/linux/platform_data/leds-renesas-tpu.h
new file mode 100644
index 000000000000..055387086fc1
--- /dev/null
+++ b/include/linux/platform_data/leds-renesas-tpu.h
@@ -0,0 +1,14 @@
1#ifndef __LEDS_RENESAS_TPU_H__
2#define __LEDS_RENESAS_TPU_H__
3
4struct led_renesas_tpu_config {
5 char *name;
6 unsigned pin_gpio_fn;
7 unsigned pin_gpio;
8 unsigned int channel_offset;
9 unsigned int timer_bit;
10 unsigned int max_brightness;
11 unsigned int refresh_rate;
12};
13
14#endif /* __LEDS_RENESAS_TPU_H__ */
diff --git a/include/linux/platform_data/mv_usb.h b/include/linux/platform_data/mv_usb.h
new file mode 100644
index 000000000000..e9d9149ddf38
--- /dev/null
+++ b/include/linux/platform_data/mv_usb.h
@@ -0,0 +1,50 @@
1/*
2 * Copyright (C) 2011 Marvell International Ltd. All rights reserved.
3 *
4 * This program is free software; you can redistribute it and/or modify it
5 * under the terms of the GNU General Public License as published by the
6 * Free Software Foundation; either version 2 of the License, or (at your
7 * option) any later version.
8 */
9
10#ifndef __MV_PLATFORM_USB_H
11#define __MV_PLATFORM_USB_H
12
13enum pxa_ehci_type {
14 EHCI_UNDEFINED = 0,
15 PXA_U2OEHCI, /* pxa 168, 9xx */
16 PXA_SPH, /* pxa 168, 9xx SPH */
17 MMP3_HSIC, /* mmp3 hsic */
18 MMP3_FSIC, /* mmp3 fsic */
19};
20
21enum {
22 MV_USB_MODE_OTG,
23 MV_USB_MODE_HOST,
24};
25
26enum {
27 VBUS_LOW = 0,
28 VBUS_HIGH = 1 << 0,
29};
30
31struct mv_usb_addon_irq {
32 unsigned int irq;
33 int (*poll)(void);
34};
35
36struct mv_usb_platform_data {
37 unsigned int clknum;
38 char **clkname;
39 struct mv_usb_addon_irq *id; /* Only valid for OTG. ID pin change*/
40 struct mv_usb_addon_irq *vbus; /* valid for OTG/UDC. VBUS change*/
41
42 /* only valid for HCD. OTG or Host only*/
43 unsigned int mode;
44
45 int (*phy_init)(unsigned int regbase);
46 void (*phy_deinit)(unsigned int regbase);
47 int (*set_vbus)(unsigned int vbus);
48};
49
50#endif
diff --git a/include/linux/platform_data/ntc_thermistor.h b/include/linux/platform_data/ntc_thermistor.h
index abd286215279..88734e871e3a 100644
--- a/include/linux/platform_data/ntc_thermistor.h
+++ b/include/linux/platform_data/ntc_thermistor.h
@@ -36,7 +36,7 @@ struct ntc_thermistor_platform_data {
36 * read_uV() 36 * read_uV()
37 * 37 *
38 * How to setup pullup_ohm, pulldown_ohm, and connect is 38 * How to setup pullup_ohm, pulldown_ohm, and connect is
39 * described at Documentation/hwmon/ntc 39 * described at Documentation/hwmon/ntc_thermistor
40 * 40 *
41 * pullup/down_ohm: 0 for infinite / not-connected 41 * pullup/down_ohm: 0 for infinite / not-connected
42 */ 42 */
diff --git a/include/linux/platform_device.h b/include/linux/platform_device.h
index 27bb05aae70d..2a23f7d1a825 100644
--- a/include/linux/platform_device.h
+++ b/include/linux/platform_device.h
@@ -49,10 +49,54 @@ extern struct resource *platform_get_resource_byname(struct platform_device *, u
49extern int platform_get_irq_byname(struct platform_device *, const char *); 49extern int platform_get_irq_byname(struct platform_device *, const char *);
50extern int platform_add_devices(struct platform_device **, int); 50extern int platform_add_devices(struct platform_device **, int);
51 51
52extern struct platform_device *platform_device_register_resndata( 52struct platform_device_info {
53 struct device *parent;
54
55 const char *name;
56 int id;
57
58 const struct resource *res;
59 unsigned int num_res;
60
61 const void *data;
62 size_t size_data;
63 u64 dma_mask;
64};
65extern struct platform_device *platform_device_register_full(
66 struct platform_device_info *pdevinfo);
67
68/**
69 * platform_device_register_resndata - add a platform-level device with
70 * resources and platform-specific data
71 *
72 * @parent: parent device for the device we're adding
73 * @name: base name of the device we're adding
74 * @id: instance id
75 * @res: set of resources that needs to be allocated for the device
76 * @num: number of resources
77 * @data: platform specific data for this platform device
78 * @size: size of platform specific data
79 *
80 * Returns &struct platform_device pointer on success, or ERR_PTR() on error.
81 */
82static inline struct platform_device *platform_device_register_resndata(
53 struct device *parent, const char *name, int id, 83 struct device *parent, const char *name, int id,
54 const struct resource *res, unsigned int num, 84 const struct resource *res, unsigned int num,
55 const void *data, size_t size); 85 const void *data, size_t size) {
86
87 struct platform_device_info pdevinfo = {
88 .parent = parent,
89 .name = name,
90 .id = id,
91 .res = res,
92 .num_res = num,
93 .data = data,
94 .size_data = size,
95 .dma_mask = 0,
96 };
97
98 return platform_device_register_full(&pdevinfo);
99}
56 100
57/** 101/**
58 * platform_device_register_simple - add a platform-level device and its resources 102 * platform_device_register_simple - add a platform-level device and its resources
@@ -146,6 +190,23 @@ static inline void platform_set_drvdata(struct platform_device *pdev, void *data
146 dev_set_drvdata(&pdev->dev, data); 190 dev_set_drvdata(&pdev->dev, data);
147} 191}
148 192
193/* module_platform_driver() - Helper macro for drivers that don't do
194 * anything special in module init/exit. This eliminates a lot of
195 * boilerplate. Each module may only use this macro once, and
196 * calling it replaces module_init() and module_exit()
197 */
198#define module_platform_driver(__platform_driver) \
199static int __init __platform_driver##_init(void) \
200{ \
201 return platform_driver_register(&(__platform_driver)); \
202} \
203module_init(__platform_driver##_init); \
204static void __exit __platform_driver##_exit(void) \
205{ \
206 platform_driver_unregister(&(__platform_driver)); \
207} \
208module_exit(__platform_driver##_exit);
209
149extern struct platform_device *platform_create_bundle(struct platform_driver *driver, 210extern struct platform_device *platform_create_bundle(struct platform_driver *driver,
150 int (*probe)(struct platform_device *), 211 int (*probe)(struct platform_device *),
151 struct resource *res, unsigned int n_res, 212 struct resource *res, unsigned int n_res,
diff --git a/include/linux/pm.h b/include/linux/pm.h
index f7c84c9abd30..f15acb646813 100644
--- a/include/linux/pm.h
+++ b/include/linux/pm.h
@@ -326,6 +326,7 @@ extern struct dev_pm_ops generic_subsys_pm_ops;
326 * requested by a driver. 326 * requested by a driver.
327 */ 327 */
328 328
329#define PM_EVENT_INVALID (-1)
329#define PM_EVENT_ON 0x0000 330#define PM_EVENT_ON 0x0000
330#define PM_EVENT_FREEZE 0x0001 331#define PM_EVENT_FREEZE 0x0001
331#define PM_EVENT_SUSPEND 0x0002 332#define PM_EVENT_SUSPEND 0x0002
@@ -346,6 +347,7 @@ extern struct dev_pm_ops generic_subsys_pm_ops;
346#define PM_EVENT_AUTO_SUSPEND (PM_EVENT_AUTO | PM_EVENT_SUSPEND) 347#define PM_EVENT_AUTO_SUSPEND (PM_EVENT_AUTO | PM_EVENT_SUSPEND)
347#define PM_EVENT_AUTO_RESUME (PM_EVENT_AUTO | PM_EVENT_RESUME) 348#define PM_EVENT_AUTO_RESUME (PM_EVENT_AUTO | PM_EVENT_RESUME)
348 349
350#define PMSG_INVALID ((struct pm_message){ .event = PM_EVENT_INVALID, })
349#define PMSG_ON ((struct pm_message){ .event = PM_EVENT_ON, }) 351#define PMSG_ON ((struct pm_message){ .event = PM_EVENT_ON, })
350#define PMSG_FREEZE ((struct pm_message){ .event = PM_EVENT_FREEZE, }) 352#define PMSG_FREEZE ((struct pm_message){ .event = PM_EVENT_FREEZE, })
351#define PMSG_QUIESCE ((struct pm_message){ .event = PM_EVENT_QUIESCE, }) 353#define PMSG_QUIESCE ((struct pm_message){ .event = PM_EVENT_QUIESCE, })
@@ -366,6 +368,8 @@ extern struct dev_pm_ops generic_subsys_pm_ops;
366#define PMSG_AUTO_RESUME ((struct pm_message) \ 368#define PMSG_AUTO_RESUME ((struct pm_message) \
367 { .event = PM_EVENT_AUTO_RESUME, }) 369 { .event = PM_EVENT_AUTO_RESUME, })
368 370
371#define PMSG_IS_AUTO(msg) (((msg).event & PM_EVENT_AUTO) != 0)
372
369/** 373/**
370 * Device run-time power management status. 374 * Device run-time power management status.
371 * 375 *
@@ -421,6 +425,22 @@ enum rpm_request {
421 425
422struct wakeup_source; 426struct wakeup_source;
423 427
428struct pm_domain_data {
429 struct list_head list_node;
430 struct device *dev;
431};
432
433struct pm_subsys_data {
434 spinlock_t lock;
435 unsigned int refcount;
436#ifdef CONFIG_PM_CLK
437 struct list_head clock_list;
438#endif
439#ifdef CONFIG_PM_GENERIC_DOMAINS
440 struct pm_domain_data *domain_data;
441#endif
442};
443
424struct dev_pm_info { 444struct dev_pm_info {
425 pm_message_t power_state; 445 pm_message_t power_state;
426 unsigned int can_wakeup:1; 446 unsigned int can_wakeup:1;
@@ -432,6 +452,7 @@ struct dev_pm_info {
432 struct list_head entry; 452 struct list_head entry;
433 struct completion completion; 453 struct completion completion;
434 struct wakeup_source *wakeup; 454 struct wakeup_source *wakeup;
455 bool wakeup_path:1;
435#else 456#else
436 unsigned int should_wakeup:1; 457 unsigned int should_wakeup:1;
437#endif 458#endif
@@ -462,10 +483,13 @@ struct dev_pm_info {
462 unsigned long suspended_jiffies; 483 unsigned long suspended_jiffies;
463 unsigned long accounting_timestamp; 484 unsigned long accounting_timestamp;
464#endif 485#endif
465 void *subsys_data; /* Owned by the subsystem. */ 486 struct pm_subsys_data *subsys_data; /* Owned by the subsystem. */
487 struct pm_qos_constraints *constraints;
466}; 488};
467 489
468extern void update_pm_runtime_accounting(struct device *dev); 490extern void update_pm_runtime_accounting(struct device *dev);
491extern int dev_pm_get_subsys_data(struct device *dev);
492extern int dev_pm_put_subsys_data(struct device *dev);
469 493
470/* 494/*
471 * Power domains provide callbacks that are executed during system suspend, 495 * Power domains provide callbacks that are executed during system suspend,
diff --git a/include/linux/pm_clock.h b/include/linux/pm_clock.h
new file mode 100644
index 000000000000..8348866e7b05
--- /dev/null
+++ b/include/linux/pm_clock.h
@@ -0,0 +1,71 @@
1/*
2 * pm_clock.h - Definitions and headers related to device clocks.
3 *
4 * Copyright (C) 2011 Rafael J. Wysocki <rjw@sisk.pl>, Renesas Electronics Corp.
5 *
6 * This file is released under the GPLv2.
7 */
8
9#ifndef _LINUX_PM_CLOCK_H
10#define _LINUX_PM_CLOCK_H
11
12#include <linux/device.h>
13#include <linux/notifier.h>
14
15struct pm_clk_notifier_block {
16 struct notifier_block nb;
17 struct dev_pm_domain *pm_domain;
18 char *con_ids[];
19};
20
21#ifdef CONFIG_PM_CLK
22static inline bool pm_clk_no_clocks(struct device *dev)
23{
24 return dev && dev->power.subsys_data
25 && list_empty(&dev->power.subsys_data->clock_list);
26}
27
28extern void pm_clk_init(struct device *dev);
29extern int pm_clk_create(struct device *dev);
30extern void pm_clk_destroy(struct device *dev);
31extern int pm_clk_add(struct device *dev, const char *con_id);
32extern void pm_clk_remove(struct device *dev, const char *con_id);
33extern int pm_clk_suspend(struct device *dev);
34extern int pm_clk_resume(struct device *dev);
35#else
36static inline bool pm_clk_no_clocks(struct device *dev)
37{
38 return true;
39}
40static inline void pm_clk_init(struct device *dev)
41{
42}
43static inline int pm_clk_create(struct device *dev)
44{
45 return -EINVAL;
46}
47static inline void pm_clk_destroy(struct device *dev)
48{
49}
50static inline int pm_clk_add(struct device *dev, const char *con_id)
51{
52 return -EINVAL;
53}
54static inline void pm_clk_remove(struct device *dev, const char *con_id)
55{
56}
57#define pm_clk_suspend NULL
58#define pm_clk_resume NULL
59#endif
60
61#ifdef CONFIG_HAVE_CLK
62extern void pm_clk_add_notifier(struct bus_type *bus,
63 struct pm_clk_notifier_block *clknb);
64#else
65static inline void pm_clk_add_notifier(struct bus_type *bus,
66 struct pm_clk_notifier_block *clknb)
67{
68}
69#endif
70
71#endif
diff --git a/include/linux/pm_domain.h b/include/linux/pm_domain.h
index f9ec1736a116..65633e5a2bc0 100644
--- a/include/linux/pm_domain.h
+++ b/include/linux/pm_domain.h
@@ -13,6 +13,7 @@
13 13
14enum gpd_status { 14enum gpd_status {
15 GPD_STATE_ACTIVE = 0, /* PM domain is active */ 15 GPD_STATE_ACTIVE = 0, /* PM domain is active */
16 GPD_STATE_WAIT_MASTER, /* PM domain's master is being waited for */
16 GPD_STATE_BUSY, /* Something is happening to the PM domain */ 17 GPD_STATE_BUSY, /* Something is happening to the PM domain */
17 GPD_STATE_REPEAT, /* Power off in progress, to be repeated */ 18 GPD_STATE_REPEAT, /* Power off in progress, to be repeated */
18 GPD_STATE_POWER_OFF, /* PM domain is off */ 19 GPD_STATE_POWER_OFF, /* PM domain is off */
@@ -25,15 +26,14 @@ struct dev_power_governor {
25struct generic_pm_domain { 26struct generic_pm_domain {
26 struct dev_pm_domain domain; /* PM domain operations */ 27 struct dev_pm_domain domain; /* PM domain operations */
27 struct list_head gpd_list_node; /* Node in the global PM domains list */ 28 struct list_head gpd_list_node; /* Node in the global PM domains list */
28 struct list_head sd_node; /* Node in the parent's subdomain list */ 29 struct list_head master_links; /* Links with PM domain as a master */
29 struct generic_pm_domain *parent; /* Parent PM domain */ 30 struct list_head slave_links; /* Links with PM domain as a slave */
30 struct list_head sd_list; /* List of dubdomains */
31 struct list_head dev_list; /* List of devices */ 31 struct list_head dev_list; /* List of devices */
32 struct mutex lock; 32 struct mutex lock;
33 struct dev_power_governor *gov; 33 struct dev_power_governor *gov;
34 struct work_struct power_off_work; 34 struct work_struct power_off_work;
35 unsigned int in_progress; /* Number of devices being suspended now */ 35 unsigned int in_progress; /* Number of devices being suspended now */
36 unsigned int sd_count; /* Number of subdomains with power "on" */ 36 atomic_t sd_count; /* Number of subdomains with power "on" */
37 enum gpd_status status; /* Current state of the domain */ 37 enum gpd_status status; /* Current state of the domain */
38 wait_queue_head_t status_wait_queue; 38 wait_queue_head_t status_wait_queue;
39 struct task_struct *poweroff_task; /* Powering off task */ 39 struct task_struct *poweroff_task; /* Powering off task */
@@ -42,6 +42,7 @@ struct generic_pm_domain {
42 unsigned int suspended_count; /* System suspend device counter */ 42 unsigned int suspended_count; /* System suspend device counter */
43 unsigned int prepared_count; /* Suspend counter of prepared devices */ 43 unsigned int prepared_count; /* Suspend counter of prepared devices */
44 bool suspend_power_off; /* Power status before system suspend */ 44 bool suspend_power_off; /* Power status before system suspend */
45 bool dev_irq_safe; /* Device callbacks are IRQ-safe */
45 int (*power_off)(struct generic_pm_domain *domain); 46 int (*power_off)(struct generic_pm_domain *domain);
46 int (*power_on)(struct generic_pm_domain *domain); 47 int (*power_on)(struct generic_pm_domain *domain);
47 int (*start_device)(struct device *dev); 48 int (*start_device)(struct device *dev);
@@ -54,12 +55,23 @@ static inline struct generic_pm_domain *pd_to_genpd(struct dev_pm_domain *pd)
54 return container_of(pd, struct generic_pm_domain, domain); 55 return container_of(pd, struct generic_pm_domain, domain);
55} 56}
56 57
57struct dev_list_entry { 58struct gpd_link {
58 struct list_head node; 59 struct generic_pm_domain *master;
59 struct device *dev; 60 struct list_head master_node;
61 struct generic_pm_domain *slave;
62 struct list_head slave_node;
63};
64
65struct generic_pm_domain_data {
66 struct pm_domain_data base;
60 bool need_restore; 67 bool need_restore;
61}; 68};
62 69
70static inline struct generic_pm_domain_data *to_gpd_data(struct pm_domain_data *pdd)
71{
72 return container_of(pdd, struct generic_pm_domain_data, base);
73}
74
63#ifdef CONFIG_PM_GENERIC_DOMAINS 75#ifdef CONFIG_PM_GENERIC_DOMAINS
64extern int pm_genpd_add_device(struct generic_pm_domain *genpd, 76extern int pm_genpd_add_device(struct generic_pm_domain *genpd,
65 struct device *dev); 77 struct device *dev);
diff --git a/include/linux/pm_qos.h b/include/linux/pm_qos.h
new file mode 100644
index 000000000000..83b0ea302a80
--- /dev/null
+++ b/include/linux/pm_qos.h
@@ -0,0 +1,155 @@
1#ifndef _LINUX_PM_QOS_H
2#define _LINUX_PM_QOS_H
3/* interface for the pm_qos_power infrastructure of the linux kernel.
4 *
5 * Mark Gross <mgross@linux.intel.com>
6 */
7#include <linux/plist.h>
8#include <linux/notifier.h>
9#include <linux/miscdevice.h>
10#include <linux/device.h>
11
12#define PM_QOS_RESERVED 0
13#define PM_QOS_CPU_DMA_LATENCY 1
14#define PM_QOS_NETWORK_LATENCY 2
15#define PM_QOS_NETWORK_THROUGHPUT 3
16
17#define PM_QOS_NUM_CLASSES 4
18#define PM_QOS_DEFAULT_VALUE -1
19
20#define PM_QOS_CPU_DMA_LAT_DEFAULT_VALUE (2000 * USEC_PER_SEC)
21#define PM_QOS_NETWORK_LAT_DEFAULT_VALUE (2000 * USEC_PER_SEC)
22#define PM_QOS_NETWORK_THROUGHPUT_DEFAULT_VALUE 0
23#define PM_QOS_DEV_LAT_DEFAULT_VALUE 0
24
25struct pm_qos_request {
26 struct plist_node node;
27 int pm_qos_class;
28};
29
30struct dev_pm_qos_request {
31 struct plist_node node;
32 struct device *dev;
33};
34
35enum pm_qos_type {
36 PM_QOS_UNITIALIZED,
37 PM_QOS_MAX, /* return the largest value */
38 PM_QOS_MIN /* return the smallest value */
39};
40
41/*
42 * Note: The lockless read path depends on the CPU accessing
43 * target_value atomically. Atomic access is only guaranteed on all CPU
44 * types linux supports for 32 bit quantites
45 */
46struct pm_qos_constraints {
47 struct plist_head list;
48 s32 target_value; /* Do not change to 64 bit */
49 s32 default_value;
50 enum pm_qos_type type;
51 struct blocking_notifier_head *notifiers;
52};
53
54/* Action requested to pm_qos_update_target */
55enum pm_qos_req_action {
56 PM_QOS_ADD_REQ, /* Add a new request */
57 PM_QOS_UPDATE_REQ, /* Update an existing request */
58 PM_QOS_REMOVE_REQ /* Remove an existing request */
59};
60
61static inline int dev_pm_qos_request_active(struct dev_pm_qos_request *req)
62{
63 return req->dev != 0;
64}
65
66#ifdef CONFIG_PM
67int pm_qos_update_target(struct pm_qos_constraints *c, struct plist_node *node,
68 enum pm_qos_req_action action, int value);
69void pm_qos_add_request(struct pm_qos_request *req, int pm_qos_class,
70 s32 value);
71void pm_qos_update_request(struct pm_qos_request *req,
72 s32 new_value);
73void pm_qos_remove_request(struct pm_qos_request *req);
74
75int pm_qos_request(int pm_qos_class);
76int pm_qos_add_notifier(int pm_qos_class, struct notifier_block *notifier);
77int pm_qos_remove_notifier(int pm_qos_class, struct notifier_block *notifier);
78int pm_qos_request_active(struct pm_qos_request *req);
79s32 pm_qos_read_value(struct pm_qos_constraints *c);
80
81s32 dev_pm_qos_read_value(struct device *dev);
82int dev_pm_qos_add_request(struct device *dev, struct dev_pm_qos_request *req,
83 s32 value);
84int dev_pm_qos_update_request(struct dev_pm_qos_request *req, s32 new_value);
85int dev_pm_qos_remove_request(struct dev_pm_qos_request *req);
86int dev_pm_qos_add_notifier(struct device *dev,
87 struct notifier_block *notifier);
88int dev_pm_qos_remove_notifier(struct device *dev,
89 struct notifier_block *notifier);
90int dev_pm_qos_add_global_notifier(struct notifier_block *notifier);
91int dev_pm_qos_remove_global_notifier(struct notifier_block *notifier);
92void dev_pm_qos_constraints_init(struct device *dev);
93void dev_pm_qos_constraints_destroy(struct device *dev);
94#else
95static inline int pm_qos_update_target(struct pm_qos_constraints *c,
96 struct plist_node *node,
97 enum pm_qos_req_action action,
98 int value)
99 { return 0; }
100static inline void pm_qos_add_request(struct pm_qos_request *req,
101 int pm_qos_class, s32 value)
102 { return; }
103static inline void pm_qos_update_request(struct pm_qos_request *req,
104 s32 new_value)
105 { return; }
106static inline void pm_qos_remove_request(struct pm_qos_request *req)
107 { return; }
108
109static inline int pm_qos_request(int pm_qos_class)
110 { return 0; }
111static inline int pm_qos_add_notifier(int pm_qos_class,
112 struct notifier_block *notifier)
113 { return 0; }
114static inline int pm_qos_remove_notifier(int pm_qos_class,
115 struct notifier_block *notifier)
116 { return 0; }
117static inline int pm_qos_request_active(struct pm_qos_request *req)
118 { return 0; }
119static inline s32 pm_qos_read_value(struct pm_qos_constraints *c)
120 { return 0; }
121
122static inline s32 dev_pm_qos_read_value(struct device *dev)
123 { return 0; }
124static inline int dev_pm_qos_add_request(struct device *dev,
125 struct dev_pm_qos_request *req,
126 s32 value)
127 { return 0; }
128static inline int dev_pm_qos_update_request(struct dev_pm_qos_request *req,
129 s32 new_value)
130 { return 0; }
131static inline int dev_pm_qos_remove_request(struct dev_pm_qos_request *req)
132 { return 0; }
133static inline int dev_pm_qos_add_notifier(struct device *dev,
134 struct notifier_block *notifier)
135 { return 0; }
136static inline int dev_pm_qos_remove_notifier(struct device *dev,
137 struct notifier_block *notifier)
138 { return 0; }
139static inline int dev_pm_qos_add_global_notifier(
140 struct notifier_block *notifier)
141 { return 0; }
142static inline int dev_pm_qos_remove_global_notifier(
143 struct notifier_block *notifier)
144 { return 0; }
145static inline void dev_pm_qos_constraints_init(struct device *dev)
146{
147 dev->power.power_state = PMSG_ON;
148}
149static inline void dev_pm_qos_constraints_destroy(struct device *dev)
150{
151 dev->power.power_state = PMSG_INVALID;
152}
153#endif
154
155#endif
diff --git a/include/linux/pm_qos_params.h b/include/linux/pm_qos_params.h
deleted file mode 100644
index a7d87f911cab..000000000000
--- a/include/linux/pm_qos_params.h
+++ /dev/null
@@ -1,38 +0,0 @@
1#ifndef _LINUX_PM_QOS_PARAMS_H
2#define _LINUX_PM_QOS_PARAMS_H
3/* interface for the pm_qos_power infrastructure of the linux kernel.
4 *
5 * Mark Gross <mgross@linux.intel.com>
6 */
7#include <linux/plist.h>
8#include <linux/notifier.h>
9#include <linux/miscdevice.h>
10
11#define PM_QOS_RESERVED 0
12#define PM_QOS_CPU_DMA_LATENCY 1
13#define PM_QOS_NETWORK_LATENCY 2
14#define PM_QOS_NETWORK_THROUGHPUT 3
15
16#define PM_QOS_NUM_CLASSES 4
17#define PM_QOS_DEFAULT_VALUE -1
18
19#define PM_QOS_CPU_DMA_LAT_DEFAULT_VALUE (2000 * USEC_PER_SEC)
20#define PM_QOS_NETWORK_LAT_DEFAULT_VALUE (2000 * USEC_PER_SEC)
21#define PM_QOS_NETWORK_THROUGHPUT_DEFAULT_VALUE 0
22
23struct pm_qos_request_list {
24 struct plist_node list;
25 int pm_qos_class;
26};
27
28void pm_qos_add_request(struct pm_qos_request_list *l, int pm_qos_class, s32 value);
29void pm_qos_update_request(struct pm_qos_request_list *pm_qos_req,
30 s32 new_value);
31void pm_qos_remove_request(struct pm_qos_request_list *pm_qos_req);
32
33int pm_qos_request(int pm_qos_class);
34int pm_qos_add_notifier(int pm_qos_class, struct notifier_block *notifier);
35int pm_qos_remove_notifier(int pm_qos_class, struct notifier_block *notifier);
36int pm_qos_request_active(struct pm_qos_request_list *req);
37
38#endif
diff --git a/include/linux/pm_runtime.h b/include/linux/pm_runtime.h
index daac05d751b2..70b284024d9e 100644
--- a/include/linux/pm_runtime.h
+++ b/include/linux/pm_runtime.h
@@ -251,46 +251,4 @@ static inline void pm_runtime_dont_use_autosuspend(struct device *dev)
251 __pm_runtime_use_autosuspend(dev, false); 251 __pm_runtime_use_autosuspend(dev, false);
252} 252}
253 253
254struct pm_clk_notifier_block {
255 struct notifier_block nb;
256 struct dev_pm_domain *pm_domain;
257 char *con_ids[];
258};
259
260#ifdef CONFIG_PM_CLK
261extern int pm_clk_init(struct device *dev);
262extern void pm_clk_destroy(struct device *dev);
263extern int pm_clk_add(struct device *dev, const char *con_id);
264extern void pm_clk_remove(struct device *dev, const char *con_id);
265extern int pm_clk_suspend(struct device *dev);
266extern int pm_clk_resume(struct device *dev);
267#else
268static inline int pm_clk_init(struct device *dev)
269{
270 return -EINVAL;
271}
272static inline void pm_clk_destroy(struct device *dev)
273{
274}
275static inline int pm_clk_add(struct device *dev, const char *con_id)
276{
277 return -EINVAL;
278}
279static inline void pm_clk_remove(struct device *dev, const char *con_id)
280{
281}
282#define pm_clk_suspend NULL
283#define pm_clk_resume NULL
284#endif
285
286#ifdef CONFIG_HAVE_CLK
287extern void pm_clk_add_notifier(struct bus_type *bus,
288 struct pm_clk_notifier_block *clknb);
289#else
290static inline void pm_clk_add_notifier(struct bus_type *bus,
291 struct pm_clk_notifier_block *clknb)
292{
293}
294#endif
295
296#endif 254#endif
diff --git a/include/linux/posix-timers.h b/include/linux/posix-timers.h
index 959c14132f46..042058fdb0af 100644
--- a/include/linux/posix-timers.h
+++ b/include/linux/posix-timers.h
@@ -81,7 +81,10 @@ struct k_itimer {
81 unsigned long incr; 81 unsigned long incr;
82 unsigned long expires; 82 unsigned long expires;
83 } mmtimer; 83 } mmtimer;
84 struct alarm alarmtimer; 84 struct {
85 struct alarm alarmtimer;
86 ktime_t interval;
87 } alarm;
85 struct rcu_head rcu; 88 struct rcu_head rcu;
86 } it; 89 } it;
87}; 90};
diff --git a/include/linux/printk.h b/include/linux/printk.h
index 0101d55d9651..f0e22f75143f 100644
--- a/include/linux/printk.h
+++ b/include/linux/printk.h
@@ -82,22 +82,22 @@ struct va_format {
82 * Dummy printk for disabled debugging statements to use whilst maintaining 82 * Dummy printk for disabled debugging statements to use whilst maintaining
83 * gcc's format and side-effect checking. 83 * gcc's format and side-effect checking.
84 */ 84 */
85static inline __attribute__ ((format (printf, 1, 2))) 85static inline __printf(1, 2)
86int no_printk(const char *fmt, ...) 86int no_printk(const char *fmt, ...)
87{ 87{
88 return 0; 88 return 0;
89} 89}
90 90
91extern asmlinkage __attribute__ ((format (printf, 1, 2))) 91extern asmlinkage __printf(1, 2)
92void early_printk(const char *fmt, ...); 92void early_printk(const char *fmt, ...);
93 93
94extern int printk_needs_cpu(int cpu); 94extern int printk_needs_cpu(int cpu);
95extern void printk_tick(void); 95extern void printk_tick(void);
96 96
97#ifdef CONFIG_PRINTK 97#ifdef CONFIG_PRINTK
98asmlinkage __attribute__ ((format (printf, 1, 0))) 98asmlinkage __printf(1, 0)
99int vprintk(const char *fmt, va_list args); 99int vprintk(const char *fmt, va_list args);
100asmlinkage __attribute__ ((format (printf, 1, 2))) __cold 100asmlinkage __printf(1, 2) __cold
101int printk(const char *fmt, ...); 101int printk(const char *fmt, ...);
102 102
103/* 103/*
@@ -117,12 +117,12 @@ extern int kptr_restrict;
117void log_buf_kexec_setup(void); 117void log_buf_kexec_setup(void);
118void __init setup_log_buf(int early); 118void __init setup_log_buf(int early);
119#else 119#else
120static inline __attribute__ ((format (printf, 1, 0))) 120static inline __printf(1, 0)
121int vprintk(const char *s, va_list args) 121int vprintk(const char *s, va_list args)
122{ 122{
123 return 0; 123 return 0;
124} 124}
125static inline __attribute__ ((format (printf, 1, 2))) __cold 125static inline __printf(1, 2) __cold
126int printk(const char *s, ...) 126int printk(const char *s, ...)
127{ 127{
128 return 0; 128 return 0;
diff --git a/include/linux/proportions.h b/include/linux/proportions.h
index cf793bbbd05e..ef35bb73f69b 100644
--- a/include/linux/proportions.h
+++ b/include/linux/proportions.h
@@ -58,7 +58,7 @@ struct prop_local_percpu {
58 */ 58 */
59 int shift; 59 int shift;
60 unsigned long period; 60 unsigned long period;
61 spinlock_t lock; /* protect the snapshot state */ 61 raw_spinlock_t lock; /* protect the snapshot state */
62}; 62};
63 63
64int prop_local_init_percpu(struct prop_local_percpu *pl); 64int prop_local_init_percpu(struct prop_local_percpu *pl);
@@ -106,11 +106,11 @@ struct prop_local_single {
106 */ 106 */
107 unsigned long period; 107 unsigned long period;
108 int shift; 108 int shift;
109 spinlock_t lock; /* protect the snapshot state */ 109 raw_spinlock_t lock; /* protect the snapshot state */
110}; 110};
111 111
112#define INIT_PROP_LOCAL_SINGLE(name) \ 112#define INIT_PROP_LOCAL_SINGLE(name) \
113{ .lock = __SPIN_LOCK_UNLOCKED(name.lock), \ 113{ .lock = __RAW_SPIN_LOCK_UNLOCKED(name.lock), \
114} 114}
115 115
116int prop_local_init_single(struct prop_local_single *pl); 116int prop_local_init_single(struct prop_local_single *pl);
diff --git a/include/linux/pstore.h b/include/linux/pstore.h
index cc03bbf5c4b8..ea567321ae3c 100644
--- a/include/linux/pstore.h
+++ b/include/linux/pstore.h
@@ -32,15 +32,15 @@ enum pstore_type_id {
32struct pstore_info { 32struct pstore_info {
33 struct module *owner; 33 struct module *owner;
34 char *name; 34 char *name;
35 struct mutex buf_mutex; /* serialize access to 'buf' */ 35 spinlock_t buf_lock; /* serialize access to 'buf' */
36 char *buf; 36 char *buf;
37 size_t bufsize; 37 size_t bufsize;
38 int (*open)(struct pstore_info *psi); 38 int (*open)(struct pstore_info *psi);
39 int (*close)(struct pstore_info *psi); 39 int (*close)(struct pstore_info *psi);
40 ssize_t (*read)(u64 *id, enum pstore_type_id *type, 40 ssize_t (*read)(u64 *id, enum pstore_type_id *type,
41 struct timespec *time, struct pstore_info *psi); 41 struct timespec *time, struct pstore_info *psi);
42 u64 (*write)(enum pstore_type_id type, unsigned int part, 42 int (*write)(enum pstore_type_id type, u64 *id,
43 size_t size, struct pstore_info *psi); 43 unsigned int part, size_t size, struct pstore_info *psi);
44 int (*erase)(enum pstore_type_id type, u64 id, 44 int (*erase)(enum pstore_type_id type, u64 id,
45 struct pstore_info *psi); 45 struct pstore_info *psi);
46 void *data; 46 void *data;
diff --git a/include/linux/quotaops.h b/include/linux/quotaops.h
index 26f9e3612e0f..d93f95e6177c 100644
--- a/include/linux/quotaops.h
+++ b/include/linux/quotaops.h
@@ -31,7 +31,7 @@ static inline bool is_quota_modification(struct inode *inode, struct iattr *ia)
31#define quota_error(sb, fmt, args...) \ 31#define quota_error(sb, fmt, args...) \
32 __quota_error((sb), __func__, fmt , ## args) 32 __quota_error((sb), __func__, fmt , ## args)
33 33
34extern __attribute__((format (printf, 3, 4))) 34extern __printf(3, 4)
35void __quota_error(struct super_block *sb, const char *func, 35void __quota_error(struct super_block *sb, const char *func,
36 const char *fmt, ...); 36 const char *fmt, ...);
37 37
diff --git a/include/linux/random.h b/include/linux/random.h
index d13059f3ea32..8f74538c96db 100644
--- a/include/linux/random.h
+++ b/include/linux/random.h
@@ -91,6 +91,19 @@ static inline void prandom32_seed(struct rnd_state *state, u64 seed)
91 state->s3 = __seed(i, 15); 91 state->s3 = __seed(i, 15);
92} 92}
93 93
94#ifdef CONFIG_ARCH_RANDOM
95# include <asm/archrandom.h>
96#else
97static inline int arch_get_random_long(unsigned long *v)
98{
99 return 0;
100}
101static inline int arch_get_random_int(unsigned int *v)
102{
103 return 0;
104}
105#endif
106
94#endif /* __KERNEL___ */ 107#endif /* __KERNEL___ */
95 108
96#endif /* _LINUX_RANDOM_H */ 109#endif /* _LINUX_RANDOM_H */
diff --git a/include/linux/ratelimit.h b/include/linux/ratelimit.h
index 2f007157fab9..e11ccb4cf48d 100644
--- a/include/linux/ratelimit.h
+++ b/include/linux/ratelimit.h
@@ -8,7 +8,7 @@
8#define DEFAULT_RATELIMIT_BURST 10 8#define DEFAULT_RATELIMIT_BURST 10
9 9
10struct ratelimit_state { 10struct ratelimit_state {
11 spinlock_t lock; /* protect the state */ 11 raw_spinlock_t lock; /* protect the state */
12 12
13 int interval; 13 int interval;
14 int burst; 14 int burst;
@@ -20,7 +20,7 @@ struct ratelimit_state {
20#define DEFINE_RATELIMIT_STATE(name, interval_init, burst_init) \ 20#define DEFINE_RATELIMIT_STATE(name, interval_init, burst_init) \
21 \ 21 \
22 struct ratelimit_state name = { \ 22 struct ratelimit_state name = { \
23 .lock = __SPIN_LOCK_UNLOCKED(name.lock), \ 23 .lock = __RAW_SPIN_LOCK_UNLOCKED(name.lock), \
24 .interval = interval_init, \ 24 .interval = interval_init, \
25 .burst = burst_init, \ 25 .burst = burst_init, \
26 } 26 }
@@ -28,7 +28,7 @@ struct ratelimit_state {
28static inline void ratelimit_state_init(struct ratelimit_state *rs, 28static inline void ratelimit_state_init(struct ratelimit_state *rs,
29 int interval, int burst) 29 int interval, int burst)
30{ 30{
31 spin_lock_init(&rs->lock); 31 raw_spin_lock_init(&rs->lock);
32 rs->interval = interval; 32 rs->interval = interval;
33 rs->burst = burst; 33 rs->burst = burst;
34 rs->printed = 0; 34 rs->printed = 0;
diff --git a/include/linux/rcupdate.h b/include/linux/rcupdate.h
index 8f4f881a0ad8..2cf4226ade7e 100644
--- a/include/linux/rcupdate.h
+++ b/include/linux/rcupdate.h
@@ -33,6 +33,7 @@
33#ifndef __LINUX_RCUPDATE_H 33#ifndef __LINUX_RCUPDATE_H
34#define __LINUX_RCUPDATE_H 34#define __LINUX_RCUPDATE_H
35 35
36#include <linux/types.h>
36#include <linux/cache.h> 37#include <linux/cache.h>
37#include <linux/spinlock.h> 38#include <linux/spinlock.h>
38#include <linux/threads.h> 39#include <linux/threads.h>
@@ -64,32 +65,74 @@ static inline void rcutorture_record_progress(unsigned long vernum)
64#define ULONG_CMP_GE(a, b) (ULONG_MAX / 2 >= (a) - (b)) 65#define ULONG_CMP_GE(a, b) (ULONG_MAX / 2 >= (a) - (b))
65#define ULONG_CMP_LT(a, b) (ULONG_MAX / 2 < (a) - (b)) 66#define ULONG_CMP_LT(a, b) (ULONG_MAX / 2 < (a) - (b))
66 67
68/* Exported common interfaces */
69
70#ifdef CONFIG_PREEMPT_RCU
71
67/** 72/**
68 * struct rcu_head - callback structure for use with RCU 73 * call_rcu() - Queue an RCU callback for invocation after a grace period.
69 * @next: next update requests in a list 74 * @head: structure to be used for queueing the RCU updates.
70 * @func: actual update function to call after the grace period. 75 * @func: actual callback function to be invoked after the grace period
76 *
77 * The callback function will be invoked some time after a full grace
78 * period elapses, in other words after all pre-existing RCU read-side
79 * critical sections have completed. However, the callback function
80 * might well execute concurrently with RCU read-side critical sections
81 * that started after call_rcu() was invoked. RCU read-side critical
82 * sections are delimited by rcu_read_lock() and rcu_read_unlock(),
83 * and may be nested.
71 */ 84 */
72struct rcu_head { 85extern void call_rcu(struct rcu_head *head,
73 struct rcu_head *next; 86 void (*func)(struct rcu_head *head));
74 void (*func)(struct rcu_head *head);
75};
76 87
77/* Exported common interfaces */ 88#else /* #ifdef CONFIG_PREEMPT_RCU */
89
90/* In classic RCU, call_rcu() is just call_rcu_sched(). */
91#define call_rcu call_rcu_sched
92
93#endif /* #else #ifdef CONFIG_PREEMPT_RCU */
94
95/**
96 * call_rcu_bh() - Queue an RCU for invocation after a quicker grace period.
97 * @head: structure to be used for queueing the RCU updates.
98 * @func: actual callback function to be invoked after the grace period
99 *
100 * The callback function will be invoked some time after a full grace
101 * period elapses, in other words after all currently executing RCU
102 * read-side critical sections have completed. call_rcu_bh() assumes
103 * that the read-side critical sections end on completion of a softirq
104 * handler. This means that read-side critical sections in process
105 * context must not be interrupted by softirqs. This interface is to be
106 * used when most of the read-side critical sections are in softirq context.
107 * RCU read-side critical sections are delimited by :
108 * - rcu_read_lock() and rcu_read_unlock(), if in interrupt context.
109 * OR
110 * - rcu_read_lock_bh() and rcu_read_unlock_bh(), if in process context.
111 * These may be nested.
112 */
113extern void call_rcu_bh(struct rcu_head *head,
114 void (*func)(struct rcu_head *head));
115
116/**
117 * call_rcu_sched() - Queue an RCU for invocation after sched grace period.
118 * @head: structure to be used for queueing the RCU updates.
119 * @func: actual callback function to be invoked after the grace period
120 *
121 * The callback function will be invoked some time after a full grace
122 * period elapses, in other words after all currently executing RCU
123 * read-side critical sections have completed. call_rcu_sched() assumes
124 * that the read-side critical sections end on enabling of preemption
125 * or on voluntary preemption.
126 * RCU read-side critical sections are delimited by :
127 * - rcu_read_lock_sched() and rcu_read_unlock_sched(),
128 * OR
129 * anything that disables preemption.
130 * These may be nested.
131 */
78extern void call_rcu_sched(struct rcu_head *head, 132extern void call_rcu_sched(struct rcu_head *head,
79 void (*func)(struct rcu_head *rcu)); 133 void (*func)(struct rcu_head *rcu));
80extern void synchronize_sched(void);
81extern void rcu_barrier_bh(void);
82extern void rcu_barrier_sched(void);
83
84static inline void __rcu_read_lock_bh(void)
85{
86 local_bh_disable();
87}
88 134
89static inline void __rcu_read_unlock_bh(void) 135extern void synchronize_sched(void);
90{
91 local_bh_enable();
92}
93 136
94#ifdef CONFIG_PREEMPT_RCU 137#ifdef CONFIG_PREEMPT_RCU
95 138
@@ -152,6 +195,15 @@ static inline void rcu_exit_nohz(void)
152 195
153#endif /* #else #ifdef CONFIG_NO_HZ */ 196#endif /* #else #ifdef CONFIG_NO_HZ */
154 197
198/*
199 * Infrastructure to implement the synchronize_() primitives in
200 * TREE_RCU and rcu_barrier_() primitives in TINY_RCU.
201 */
202
203typedef void call_rcu_func_t(struct rcu_head *head,
204 void (*func)(struct rcu_head *head));
205void wait_rcu_gp(call_rcu_func_t crf);
206
155#if defined(CONFIG_TREE_RCU) || defined(CONFIG_TREE_PREEMPT_RCU) 207#if defined(CONFIG_TREE_RCU) || defined(CONFIG_TREE_PREEMPT_RCU)
156#include <linux/rcutree.h> 208#include <linux/rcutree.h>
157#elif defined(CONFIG_TINY_RCU) || defined(CONFIG_TINY_PREEMPT_RCU) 209#elif defined(CONFIG_TINY_RCU) || defined(CONFIG_TINY_PREEMPT_RCU)
@@ -297,19 +349,31 @@ extern int rcu_my_thread_group_empty(void);
297/** 349/**
298 * rcu_lockdep_assert - emit lockdep splat if specified condition not met 350 * rcu_lockdep_assert - emit lockdep splat if specified condition not met
299 * @c: condition to check 351 * @c: condition to check
352 * @s: informative message
300 */ 353 */
301#define rcu_lockdep_assert(c) \ 354#define rcu_lockdep_assert(c, s) \
302 do { \ 355 do { \
303 static bool __warned; \ 356 static bool __warned; \
304 if (debug_lockdep_rcu_enabled() && !__warned && !(c)) { \ 357 if (debug_lockdep_rcu_enabled() && !__warned && !(c)) { \
305 __warned = true; \ 358 __warned = true; \
306 lockdep_rcu_dereference(__FILE__, __LINE__); \ 359 lockdep_rcu_suspicious(__FILE__, __LINE__, s); \
307 } \ 360 } \
308 } while (0) 361 } while (0)
309 362
363#define rcu_sleep_check() \
364 do { \
365 rcu_lockdep_assert(!lock_is_held(&rcu_bh_lock_map), \
366 "Illegal context switch in RCU-bh" \
367 " read-side critical section"); \
368 rcu_lockdep_assert(!lock_is_held(&rcu_sched_lock_map), \
369 "Illegal context switch in RCU-sched"\
370 " read-side critical section"); \
371 } while (0)
372
310#else /* #ifdef CONFIG_PROVE_RCU */ 373#else /* #ifdef CONFIG_PROVE_RCU */
311 374
312#define rcu_lockdep_assert(c) do { } while (0) 375#define rcu_lockdep_assert(c, s) do { } while (0)
376#define rcu_sleep_check() do { } while (0)
313 377
314#endif /* #else #ifdef CONFIG_PROVE_RCU */ 378#endif /* #else #ifdef CONFIG_PROVE_RCU */
315 379
@@ -338,14 +402,16 @@ extern int rcu_my_thread_group_empty(void);
338#define __rcu_dereference_check(p, c, space) \ 402#define __rcu_dereference_check(p, c, space) \
339 ({ \ 403 ({ \
340 typeof(*p) *_________p1 = (typeof(*p)*__force )ACCESS_ONCE(p); \ 404 typeof(*p) *_________p1 = (typeof(*p)*__force )ACCESS_ONCE(p); \
341 rcu_lockdep_assert(c); \ 405 rcu_lockdep_assert(c, "suspicious rcu_dereference_check()" \
406 " usage"); \
342 rcu_dereference_sparse(p, space); \ 407 rcu_dereference_sparse(p, space); \
343 smp_read_barrier_depends(); \ 408 smp_read_barrier_depends(); \
344 ((typeof(*p) __force __kernel *)(_________p1)); \ 409 ((typeof(*p) __force __kernel *)(_________p1)); \
345 }) 410 })
346#define __rcu_dereference_protected(p, c, space) \ 411#define __rcu_dereference_protected(p, c, space) \
347 ({ \ 412 ({ \
348 rcu_lockdep_assert(c); \ 413 rcu_lockdep_assert(c, "suspicious rcu_dereference_protected()" \
414 " usage"); \
349 rcu_dereference_sparse(p, space); \ 415 rcu_dereference_sparse(p, space); \
350 ((typeof(*p) __force __kernel *)(p)); \ 416 ((typeof(*p) __force __kernel *)(p)); \
351 }) 417 })
@@ -359,15 +425,15 @@ extern int rcu_my_thread_group_empty(void);
359#define __rcu_dereference_index_check(p, c) \ 425#define __rcu_dereference_index_check(p, c) \
360 ({ \ 426 ({ \
361 typeof(p) _________p1 = ACCESS_ONCE(p); \ 427 typeof(p) _________p1 = ACCESS_ONCE(p); \
362 rcu_lockdep_assert(c); \ 428 rcu_lockdep_assert(c, \
429 "suspicious rcu_dereference_index_check()" \
430 " usage"); \
363 smp_read_barrier_depends(); \ 431 smp_read_barrier_depends(); \
364 (_________p1); \ 432 (_________p1); \
365 }) 433 })
366#define __rcu_assign_pointer(p, v, space) \ 434#define __rcu_assign_pointer(p, v, space) \
367 ({ \ 435 ({ \
368 if (!__builtin_constant_p(v) || \ 436 smp_wmb(); \
369 ((v) != NULL)) \
370 smp_wmb(); \
371 (p) = (typeof(*v) __force space *)(v); \ 437 (p) = (typeof(*v) __force space *)(v); \
372 }) 438 })
373 439
@@ -500,26 +566,6 @@ extern int rcu_my_thread_group_empty(void);
500#define rcu_dereference_protected(p, c) \ 566#define rcu_dereference_protected(p, c) \
501 __rcu_dereference_protected((p), (c), __rcu) 567 __rcu_dereference_protected((p), (c), __rcu)
502 568
503/**
504 * rcu_dereference_bh_protected() - fetch RCU-bh pointer when updates prevented
505 * @p: The pointer to read, prior to dereferencing
506 * @c: The conditions under which the dereference will take place
507 *
508 * This is the RCU-bh counterpart to rcu_dereference_protected().
509 */
510#define rcu_dereference_bh_protected(p, c) \
511 __rcu_dereference_protected((p), (c), __rcu)
512
513/**
514 * rcu_dereference_sched_protected() - fetch RCU-sched pointer when updates prevented
515 * @p: The pointer to read, prior to dereferencing
516 * @c: The conditions under which the dereference will take place
517 *
518 * This is the RCU-sched counterpart to rcu_dereference_protected().
519 */
520#define rcu_dereference_sched_protected(p, c) \
521 __rcu_dereference_protected((p), (c), __rcu)
522
523 569
524/** 570/**
525 * rcu_dereference() - fetch RCU-protected pointer for dereferencing 571 * rcu_dereference() - fetch RCU-protected pointer for dereferencing
@@ -630,7 +676,7 @@ static inline void rcu_read_unlock(void)
630 */ 676 */
631static inline void rcu_read_lock_bh(void) 677static inline void rcu_read_lock_bh(void)
632{ 678{
633 __rcu_read_lock_bh(); 679 local_bh_disable();
634 __acquire(RCU_BH); 680 __acquire(RCU_BH);
635 rcu_read_acquire_bh(); 681 rcu_read_acquire_bh();
636} 682}
@@ -644,7 +690,7 @@ static inline void rcu_read_unlock_bh(void)
644{ 690{
645 rcu_read_release_bh(); 691 rcu_read_release_bh();
646 __release(RCU_BH); 692 __release(RCU_BH);
647 __rcu_read_unlock_bh(); 693 local_bh_enable();
648} 694}
649 695
650/** 696/**
@@ -698,11 +744,18 @@ static inline notrace void rcu_read_unlock_sched_notrace(void)
698 * any prior initialization. Returns the value assigned. 744 * any prior initialization. Returns the value assigned.
699 * 745 *
700 * Inserts memory barriers on architectures that require them 746 * Inserts memory barriers on architectures that require them
701 * (pretty much all of them other than x86), and also prevents 747 * (which is most of them), and also prevents the compiler from
702 * the compiler from reordering the code that initializes the 748 * reordering the code that initializes the structure after the pointer
703 * structure after the pointer assignment. More importantly, this 749 * assignment. More importantly, this call documents which pointers
704 * call documents which pointers will be dereferenced by RCU read-side 750 * will be dereferenced by RCU read-side code.
705 * code. 751 *
752 * In some special cases, you may use RCU_INIT_POINTER() instead
753 * of rcu_assign_pointer(). RCU_INIT_POINTER() is a bit faster due
754 * to the fact that it does not constrain either the CPU or the compiler.
755 * That said, using RCU_INIT_POINTER() when you should have used
756 * rcu_assign_pointer() is a very bad thing that results in
757 * impossible-to-diagnose memory corruption. So please be careful.
758 * See the RCU_INIT_POINTER() comment header for details.
706 */ 759 */
707#define rcu_assign_pointer(p, v) \ 760#define rcu_assign_pointer(p, v) \
708 __rcu_assign_pointer((p), (v), __rcu) 761 __rcu_assign_pointer((p), (v), __rcu)
@@ -710,105 +763,38 @@ static inline notrace void rcu_read_unlock_sched_notrace(void)
710/** 763/**
711 * RCU_INIT_POINTER() - initialize an RCU protected pointer 764 * RCU_INIT_POINTER() - initialize an RCU protected pointer
712 * 765 *
713 * Initialize an RCU-protected pointer in such a way to avoid RCU-lockdep 766 * Initialize an RCU-protected pointer in special cases where readers
714 * splats. 767 * do not need ordering constraints on the CPU or the compiler. These
768 * special cases are:
769 *
770 * 1. This use of RCU_INIT_POINTER() is NULLing out the pointer -or-
771 * 2. The caller has taken whatever steps are required to prevent
772 * RCU readers from concurrently accessing this pointer -or-
773 * 3. The referenced data structure has already been exposed to
774 * readers either at compile time or via rcu_assign_pointer() -and-
775 * a. You have not made -any- reader-visible changes to
776 * this structure since then -or-
777 * b. It is OK for readers accessing this structure from its
778 * new location to see the old state of the structure. (For
779 * example, the changes were to statistical counters or to
780 * other state where exact synchronization is not required.)
781 *
782 * Failure to follow these rules governing use of RCU_INIT_POINTER() will
783 * result in impossible-to-diagnose memory corruption. As in the structures
784 * will look OK in crash dumps, but any concurrent RCU readers might
785 * see pre-initialized values of the referenced data structure. So
786 * please be very careful how you use RCU_INIT_POINTER()!!!
787 *
788 * If you are creating an RCU-protected linked structure that is accessed
789 * by a single external-to-structure RCU-protected pointer, then you may
790 * use RCU_INIT_POINTER() to initialize the internal RCU-protected
791 * pointers, but you must use rcu_assign_pointer() to initialize the
792 * external-to-structure pointer -after- you have completely initialized
793 * the reader-accessible portions of the linked structure.
715 */ 794 */
716#define RCU_INIT_POINTER(p, v) \ 795#define RCU_INIT_POINTER(p, v) \
717 p = (typeof(*v) __force __rcu *)(v) 796 p = (typeof(*v) __force __rcu *)(v)
718 797
719/* Infrastructure to implement the synchronize_() primitives. */
720
721struct rcu_synchronize {
722 struct rcu_head head;
723 struct completion completion;
724};
725
726extern void wakeme_after_rcu(struct rcu_head *head);
727
728#ifdef CONFIG_PREEMPT_RCU
729
730/**
731 * call_rcu() - Queue an RCU callback for invocation after a grace period.
732 * @head: structure to be used for queueing the RCU updates.
733 * @func: actual callback function to be invoked after the grace period
734 *
735 * The callback function will be invoked some time after a full grace
736 * period elapses, in other words after all pre-existing RCU read-side
737 * critical sections have completed. However, the callback function
738 * might well execute concurrently with RCU read-side critical sections
739 * that started after call_rcu() was invoked. RCU read-side critical
740 * sections are delimited by rcu_read_lock() and rcu_read_unlock(),
741 * and may be nested.
742 */
743extern void call_rcu(struct rcu_head *head,
744 void (*func)(struct rcu_head *head));
745
746#else /* #ifdef CONFIG_PREEMPT_RCU */
747
748/* In classic RCU, call_rcu() is just call_rcu_sched(). */
749#define call_rcu call_rcu_sched
750
751#endif /* #else #ifdef CONFIG_PREEMPT_RCU */
752
753/**
754 * call_rcu_bh() - Queue an RCU for invocation after a quicker grace period.
755 * @head: structure to be used for queueing the RCU updates.
756 * @func: actual callback function to be invoked after the grace period
757 *
758 * The callback function will be invoked some time after a full grace
759 * period elapses, in other words after all currently executing RCU
760 * read-side critical sections have completed. call_rcu_bh() assumes
761 * that the read-side critical sections end on completion of a softirq
762 * handler. This means that read-side critical sections in process
763 * context must not be interrupted by softirqs. This interface is to be
764 * used when most of the read-side critical sections are in softirq context.
765 * RCU read-side critical sections are delimited by :
766 * - rcu_read_lock() and rcu_read_unlock(), if in interrupt context.
767 * OR
768 * - rcu_read_lock_bh() and rcu_read_unlock_bh(), if in process context.
769 * These may be nested.
770 */
771extern void call_rcu_bh(struct rcu_head *head,
772 void (*func)(struct rcu_head *head));
773
774/*
775 * debug_rcu_head_queue()/debug_rcu_head_unqueue() are used internally
776 * by call_rcu() and rcu callback execution, and are therefore not part of the
777 * RCU API. Leaving in rcupdate.h because they are used by all RCU flavors.
778 */
779
780#ifdef CONFIG_DEBUG_OBJECTS_RCU_HEAD
781# define STATE_RCU_HEAD_READY 0
782# define STATE_RCU_HEAD_QUEUED 1
783
784extern struct debug_obj_descr rcuhead_debug_descr;
785
786static inline void debug_rcu_head_queue(struct rcu_head *head)
787{
788 WARN_ON_ONCE((unsigned long)head & 0x3);
789 debug_object_activate(head, &rcuhead_debug_descr);
790 debug_object_active_state(head, &rcuhead_debug_descr,
791 STATE_RCU_HEAD_READY,
792 STATE_RCU_HEAD_QUEUED);
793}
794
795static inline void debug_rcu_head_unqueue(struct rcu_head *head)
796{
797 debug_object_active_state(head, &rcuhead_debug_descr,
798 STATE_RCU_HEAD_QUEUED,
799 STATE_RCU_HEAD_READY);
800 debug_object_deactivate(head, &rcuhead_debug_descr);
801}
802#else /* !CONFIG_DEBUG_OBJECTS_RCU_HEAD */
803static inline void debug_rcu_head_queue(struct rcu_head *head)
804{
805}
806
807static inline void debug_rcu_head_unqueue(struct rcu_head *head)
808{
809}
810#endif /* #else !CONFIG_DEBUG_OBJECTS_RCU_HEAD */
811
812static __always_inline bool __is_kfree_rcu_offset(unsigned long offset) 798static __always_inline bool __is_kfree_rcu_offset(unsigned long offset)
813{ 799{
814 return offset < 4096; 800 return offset < 4096;
@@ -827,18 +813,6 @@ void __kfree_rcu(struct rcu_head *head, unsigned long offset)
827 call_rcu(head, (rcu_callback)offset); 813 call_rcu(head, (rcu_callback)offset);
828} 814}
829 815
830extern void kfree(const void *);
831
832static inline void __rcu_reclaim(struct rcu_head *head)
833{
834 unsigned long offset = (unsigned long)head->func;
835
836 if (__is_kfree_rcu_offset(offset))
837 kfree((void *)head - offset);
838 else
839 head->func(head);
840}
841
842/** 816/**
843 * kfree_rcu() - kfree an object after a grace period. 817 * kfree_rcu() - kfree an object after a grace period.
844 * @ptr: pointer to kfree 818 * @ptr: pointer to kfree
diff --git a/include/linux/rcutiny.h b/include/linux/rcutiny.h
index 52b3e0281fd0..00b7a5e493d2 100644
--- a/include/linux/rcutiny.h
+++ b/include/linux/rcutiny.h
@@ -27,9 +27,23 @@
27 27
28#include <linux/cache.h> 28#include <linux/cache.h>
29 29
30#ifdef CONFIG_RCU_BOOST
30static inline void rcu_init(void) 31static inline void rcu_init(void)
31{ 32{
32} 33}
34#else /* #ifdef CONFIG_RCU_BOOST */
35void rcu_init(void);
36#endif /* #else #ifdef CONFIG_RCU_BOOST */
37
38static inline void rcu_barrier_bh(void)
39{
40 wait_rcu_gp(call_rcu_bh);
41}
42
43static inline void rcu_barrier_sched(void)
44{
45 wait_rcu_gp(call_rcu_sched);
46}
33 47
34#ifdef CONFIG_TINY_RCU 48#ifdef CONFIG_TINY_RCU
35 49
@@ -45,9 +59,13 @@ static inline void rcu_barrier(void)
45 59
46#else /* #ifdef CONFIG_TINY_RCU */ 60#else /* #ifdef CONFIG_TINY_RCU */
47 61
48void rcu_barrier(void);
49void synchronize_rcu_expedited(void); 62void synchronize_rcu_expedited(void);
50 63
64static inline void rcu_barrier(void)
65{
66 wait_rcu_gp(call_rcu);
67}
68
51#endif /* #else #ifdef CONFIG_TINY_RCU */ 69#endif /* #else #ifdef CONFIG_TINY_RCU */
52 70
53static inline void synchronize_rcu_bh(void) 71static inline void synchronize_rcu_bh(void)
diff --git a/include/linux/rcutree.h b/include/linux/rcutree.h
index e65d06634dd8..67458468f1a8 100644
--- a/include/linux/rcutree.h
+++ b/include/linux/rcutree.h
@@ -67,6 +67,8 @@ static inline void synchronize_rcu_bh_expedited(void)
67} 67}
68 68
69extern void rcu_barrier(void); 69extern void rcu_barrier(void);
70extern void rcu_barrier_bh(void);
71extern void rcu_barrier_sched(void);
70 72
71extern unsigned long rcutorture_testseq; 73extern unsigned long rcutorture_testseq;
72extern unsigned long rcutorture_vernum; 74extern unsigned long rcutorture_vernum;
diff --git a/include/linux/regmap.h b/include/linux/regmap.h
index 60a65cd7e1a0..3daac2d8dc37 100644
--- a/include/linux/regmap.h
+++ b/include/linux/regmap.h
@@ -20,9 +20,77 @@
20struct i2c_client; 20struct i2c_client;
21struct spi_device; 21struct spi_device;
22 22
23/* An enum of all the supported cache types */
24enum regcache_type {
25 REGCACHE_NONE,
26 REGCACHE_INDEXED,
27 REGCACHE_RBTREE,
28 REGCACHE_LZO
29};
30
31/**
32 * Default value for a register. We use an array of structs rather
33 * than a simple array as many modern devices have very sparse
34 * register maps.
35 *
36 * @reg: Register address.
37 * @def: Register default value.
38 */
39struct reg_default {
40 unsigned int reg;
41 unsigned int def;
42};
43
44/**
45 * Configuration for the register map of a device.
46 *
47 * @reg_bits: Number of bits in a register address, mandatory.
48 * @val_bits: Number of bits in a register value, mandatory.
49 *
50 * @writeable_reg: Optional callback returning true if the register
51 * can be written to.
52 * @readable_reg: Optional callback returning true if the register
53 * can be read from.
54 * @volatile_reg: Optional callback returning true if the register
55 * value can't be cached.
56 * @precious_reg: Optional callback returning true if the rgister
57 * should not be read outside of a call from the driver
58 * (eg, a clear on read interrupt status register).
59 *
60 * @max_register: Optional, specifies the maximum valid register index.
61 * @reg_defaults: Power on reset values for registers (for use with
62 * register cache support).
63 * @num_reg_defaults: Number of elements in reg_defaults.
64 *
65 * @read_flag_mask: Mask to be set in the top byte of the register when doing
66 * a read.
67 * @write_flag_mask: Mask to be set in the top byte of the register when doing
68 * a write. If both read_flag_mask and write_flag_mask are
69 * empty the regmap_bus default masks are used.
70 *
71 * @cache_type: The actual cache type.
72 * @reg_defaults_raw: Power on reset values for registers (for use with
73 * register cache support).
74 * @num_reg_defaults_raw: Number of elements in reg_defaults_raw.
75 */
23struct regmap_config { 76struct regmap_config {
24 int reg_bits; 77 int reg_bits;
25 int val_bits; 78 int val_bits;
79
80 bool (*writeable_reg)(struct device *dev, unsigned int reg);
81 bool (*readable_reg)(struct device *dev, unsigned int reg);
82 bool (*volatile_reg)(struct device *dev, unsigned int reg);
83 bool (*precious_reg)(struct device *dev, unsigned int reg);
84
85 unsigned int max_register;
86 struct reg_default *reg_defaults;
87 unsigned int num_reg_defaults;
88 enum regcache_type cache_type;
89 const void *reg_defaults_raw;
90 unsigned int num_reg_defaults_raw;
91
92 u8 read_flag_mask;
93 u8 write_flag_mask;
26}; 94};
27 95
28typedef int (*regmap_hw_write)(struct device *dev, const void *data, 96typedef int (*regmap_hw_write)(struct device *dev, const void *data,
@@ -37,25 +105,18 @@ typedef int (*regmap_hw_read)(struct device *dev,
37/** 105/**
38 * Description of a hardware bus for the register map infrastructure. 106 * Description of a hardware bus for the register map infrastructure.
39 * 107 *
40 * @list: Internal use.
41 * @type: Bus type, used to identify bus to be used for a device.
42 * @write: Write operation. 108 * @write: Write operation.
43 * @gather_write: Write operation with split register/value, return -ENOTSUPP 109 * @gather_write: Write operation with split register/value, return -ENOTSUPP
44 * if not implemented on a given device. 110 * if not implemented on a given device.
45 * @read: Read operation. Data is returned in the buffer used to transmit 111 * @read: Read operation. Data is returned in the buffer used to transmit
46 * data. 112 * data.
47 * @owner: Module with the bus implementation, used to pin the implementation
48 * in memory.
49 * @read_flag_mask: Mask to be set in the top byte of the register when doing 113 * @read_flag_mask: Mask to be set in the top byte of the register when doing
50 * a read. 114 * a read.
51 */ 115 */
52struct regmap_bus { 116struct regmap_bus {
53 struct list_head list;
54 struct bus_type *type;
55 regmap_hw_write write; 117 regmap_hw_write write;
56 regmap_hw_gather_write gather_write; 118 regmap_hw_gather_write gather_write;
57 regmap_hw_read read; 119 regmap_hw_read read;
58 struct module *owner;
59 u8 read_flag_mask; 120 u8 read_flag_mask;
60}; 121};
61 122
@@ -79,4 +140,8 @@ int regmap_bulk_read(struct regmap *map, unsigned int reg, void *val,
79int regmap_update_bits(struct regmap *map, unsigned int reg, 140int regmap_update_bits(struct regmap *map, unsigned int reg,
80 unsigned int mask, unsigned int val); 141 unsigned int mask, unsigned int val);
81 142
143int regcache_sync(struct regmap *map);
144void regcache_cache_only(struct regmap *map, bool enable);
145void regcache_cache_bypass(struct regmap *map, bool enable);
146
82#endif 147#endif
diff --git a/include/linux/regulator/consumer.h b/include/linux/regulator/consumer.h
index b47771aa5718..f7756d146c61 100644
--- a/include/linux/regulator/consumer.h
+++ b/include/linux/regulator/consumer.h
@@ -141,6 +141,7 @@ int regulator_enable(struct regulator *regulator);
141int regulator_disable(struct regulator *regulator); 141int regulator_disable(struct regulator *regulator);
142int regulator_force_disable(struct regulator *regulator); 142int regulator_force_disable(struct regulator *regulator);
143int regulator_is_enabled(struct regulator *regulator); 143int regulator_is_enabled(struct regulator *regulator);
144int regulator_disable_deferred(struct regulator *regulator, int ms);
144 145
145int regulator_bulk_get(struct device *dev, int num_consumers, 146int regulator_bulk_get(struct device *dev, int num_consumers,
146 struct regulator_bulk_data *consumers); 147 struct regulator_bulk_data *consumers);
@@ -211,6 +212,12 @@ static inline int regulator_disable(struct regulator *regulator)
211 return 0; 212 return 0;
212} 213}
213 214
215static inline int regulator_disable_deferred(struct regulator *regulator,
216 int ms)
217{
218 return 0;
219}
220
214static inline int regulator_is_enabled(struct regulator *regulator) 221static inline int regulator_is_enabled(struct regulator *regulator)
215{ 222{
216 return 1; 223 return 1;
diff --git a/include/linux/regulator/driver.h b/include/linux/regulator/driver.h
index 1a80bc77517d..12a1aa04b720 100644
--- a/include/linux/regulator/driver.h
+++ b/include/linux/regulator/driver.h
@@ -199,6 +199,9 @@ struct regulator_dev {
199 struct regulation_constraints *constraints; 199 struct regulation_constraints *constraints;
200 struct regulator *supply; /* for tree */ 200 struct regulator *supply; /* for tree */
201 201
202 struct delayed_work disable_work;
203 int deferred_disables;
204
202 void *reg_data; /* regulator_dev data */ 205 void *reg_data; /* regulator_dev data */
203 206
204#ifdef CONFIG_DEBUG_FS 207#ifdef CONFIG_DEBUG_FS
diff --git a/include/linux/regulator/gpio-regulator.h b/include/linux/regulator/gpio-regulator.h
new file mode 100644
index 000000000000..19fbd267406d
--- /dev/null
+++ b/include/linux/regulator/gpio-regulator.h
@@ -0,0 +1,87 @@
1/*
2 * gpio-regulator.h
3 *
4 * Copyright 2011 Heiko Stuebner <heiko@sntech.de>
5 *
6 * based on fixed.h
7 *
8 * Copyright 2008 Wolfson Microelectronics PLC.
9 *
10 * Author: Mark Brown <broonie@opensource.wolfsonmicro.com>
11 *
12 * Copyright (c) 2009 Nokia Corporation
13 * Roger Quadros <ext-roger.quadros@nokia.com>
14 *
15 * This program is free software; you can redistribute it and/or
16 * modify it under the terms of the GNU General Public License as
17 * published by the Free Software Foundation; either version 2 of the
18 * License, or (at your option) any later version.
19 */
20
21#ifndef __REGULATOR_GPIO_H
22#define __REGULATOR_GPIO_H
23
24struct regulator_init_data;
25
26enum regulator_type;
27
28/**
29 * struct gpio_regulator_state - state description
30 * @value: microvolts or microamps
31 * @gpios: bitfield of gpio target-states for the value
32 *
33 * This structure describes a supported setting of the regulator
34 * and the necessary gpio-state to achieve it.
35 *
36 * The n-th bit in the bitfield describes the state of the n-th GPIO
37 * from the gpios-array defined in gpio_regulator_config below.
38 */
39struct gpio_regulator_state {
40 int value;
41 int gpios;
42};
43
44/**
45 * struct gpio_regulator_config - config structure
46 * @supply_name: Name of the regulator supply
47 * @enable_gpio: GPIO to use for enable control
48 * set to -EINVAL if not used
49 * @enable_high: Polarity of enable GPIO
50 * 1 = Active high, 0 = Active low
51 * @enabled_at_boot: Whether regulator has been enabled at
52 * boot or not. 1 = Yes, 0 = No
53 * This is used to keep the regulator at
54 * the default state
55 * @startup_delay: Start-up time in microseconds
56 * @gpios: Array containing the gpios needed to control
57 * the setting of the regulator
58 * @nr_gpios: Number of gpios
59 * @states: Array of gpio_regulator_state entries describing
60 * the gpio state for specific voltages
61 * @nr_states: Number of states available
62 * @regulator_type: either REGULATOR_CURRENT or REGULATOR_VOLTAGE
63 * @init_data: regulator_init_data
64 *
65 * This structure contains gpio-voltage regulator configuration
66 * information that must be passed by platform code to the
67 * gpio-voltage regulator driver.
68 */
69struct gpio_regulator_config {
70 const char *supply_name;
71
72 int enable_gpio;
73 unsigned enable_high:1;
74 unsigned enabled_at_boot:1;
75 unsigned startup_delay;
76
77 struct gpio *gpios;
78 int nr_gpios;
79
80 struct gpio_regulator_state *states;
81 int nr_states;
82
83 enum regulator_type type;
84 struct regulator_init_data *init_data;
85};
86
87#endif
diff --git a/include/linux/regulator/machine.h b/include/linux/regulator/machine.h
index ce3127a75c88..f3f13fd5868f 100644
--- a/include/linux/regulator/machine.h
+++ b/include/linux/regulator/machine.h
@@ -95,7 +95,7 @@ struct regulator_state {
95 */ 95 */
96struct regulation_constraints { 96struct regulation_constraints {
97 97
98 char *name; 98 const char *name;
99 99
100 /* voltage output range (inclusive) - for voltage control */ 100 /* voltage output range (inclusive) - for voltage control */
101 int min_uV; 101 int min_uV;
diff --git a/include/linux/rfkill-gpio.h b/include/linux/rfkill-gpio.h
index a175d0598033..4d09f6eab359 100644
--- a/include/linux/rfkill-gpio.h
+++ b/include/linux/rfkill-gpio.h
@@ -30,6 +30,8 @@
30 * @reset_gpio: GPIO which is used for reseting rfkill switch 30 * @reset_gpio: GPIO which is used for reseting rfkill switch
31 * @shutdown_gpio: GPIO which is used for shutdown of rfkill switch 31 * @shutdown_gpio: GPIO which is used for shutdown of rfkill switch
32 * @power_clk_name: [optional] name of clk to turn off while blocked 32 * @power_clk_name: [optional] name of clk to turn off while blocked
33 * @gpio_runtime_close: clean up platform specific gpio configuration
34 * @gpio_runtime_setup: set up platform specific gpio configuration
33 */ 35 */
34 36
35struct rfkill_gpio_platform_data { 37struct rfkill_gpio_platform_data {
@@ -38,6 +40,8 @@ struct rfkill_gpio_platform_data {
38 int shutdown_gpio; 40 int shutdown_gpio;
39 const char *power_clk_name; 41 const char *power_clk_name;
40 enum rfkill_type type; 42 enum rfkill_type type;
43 void (*gpio_runtime_close)(struct platform_device *);
44 int (*gpio_runtime_setup)(struct platform_device *);
41}; 45};
42 46
43#endif /* __RFKILL_GPIO_H */ 47#endif /* __RFKILL_GPIO_H */
diff --git a/include/linux/ring_buffer.h b/include/linux/ring_buffer.h
index b891de96000f..67be0376d8e3 100644
--- a/include/linux/ring_buffer.h
+++ b/include/linux/ring_buffer.h
@@ -154,6 +154,8 @@ void ring_buffer_record_enable(struct ring_buffer *buffer);
154void ring_buffer_record_disable_cpu(struct ring_buffer *buffer, int cpu); 154void ring_buffer_record_disable_cpu(struct ring_buffer *buffer, int cpu);
155void ring_buffer_record_enable_cpu(struct ring_buffer *buffer, int cpu); 155void ring_buffer_record_enable_cpu(struct ring_buffer *buffer, int cpu);
156 156
157unsigned long ring_buffer_oldest_event_ts(struct ring_buffer *buffer, int cpu);
158unsigned long ring_buffer_bytes_cpu(struct ring_buffer *buffer, int cpu);
157unsigned long ring_buffer_entries(struct ring_buffer *buffer); 159unsigned long ring_buffer_entries(struct ring_buffer *buffer);
158unsigned long ring_buffer_overruns(struct ring_buffer *buffer); 160unsigned long ring_buffer_overruns(struct ring_buffer *buffer);
159unsigned long ring_buffer_entries_cpu(struct ring_buffer *buffer, int cpu); 161unsigned long ring_buffer_entries_cpu(struct ring_buffer *buffer, int cpu);
diff --git a/include/linux/rose.h b/include/linux/rose.h
index c7b4b184c82e..1fcfe95893b8 100644
--- a/include/linux/rose.h
+++ b/include/linux/rose.h
@@ -7,6 +7,9 @@
7#ifndef ROSE_KERNEL_H 7#ifndef ROSE_KERNEL_H
8#define ROSE_KERNEL_H 8#define ROSE_KERNEL_H
9 9
10#include <linux/socket.h>
11#include <linux/ax25.h>
12
10#define ROSE_MTU 251 13#define ROSE_MTU 251
11 14
12#define ROSE_MAX_DIGIS 6 15#define ROSE_MAX_DIGIS 6
@@ -44,7 +47,7 @@ typedef struct {
44} rose_address; 47} rose_address;
45 48
46struct sockaddr_rose { 49struct sockaddr_rose {
47 sa_family_t srose_family; 50 __kernel_sa_family_t srose_family;
48 rose_address srose_addr; 51 rose_address srose_addr;
49 ax25_address srose_call; 52 ax25_address srose_call;
50 int srose_ndigis; 53 int srose_ndigis;
@@ -52,7 +55,7 @@ struct sockaddr_rose {
52}; 55};
53 56
54struct full_sockaddr_rose { 57struct full_sockaddr_rose {
55 sa_family_t srose_family; 58 __kernel_sa_family_t srose_family;
56 rose_address srose_addr; 59 rose_address srose_addr;
57 ax25_address srose_call; 60 ax25_address srose_call;
58 unsigned int srose_ndigis; 61 unsigned int srose_ndigis;
diff --git a/include/linux/rtc/sirfsoc_rtciobrg.h b/include/linux/rtc/sirfsoc_rtciobrg.h
new file mode 100644
index 000000000000..2c92e1c8e055
--- /dev/null
+++ b/include/linux/rtc/sirfsoc_rtciobrg.h
@@ -0,0 +1,18 @@
1/*
2 * RTC I/O Bridge interfaces for CSR SiRFprimaII
3 * ARM access the registers of SYSRTC, GPSRTC and PWRC through this module
4 *
5 * Copyright (c) 2011 Cambridge Silicon Radio Limited, a CSR plc group company.
6 *
7 * Licensed under GPLv2 or later.
8 */
9#ifndef _SIRFSOC_RTC_IOBRG_H_
10#define _SIRFSOC_RTC_IOBRG_H_
11
12extern void sirfsoc_rtc_iobrg_besyncing(void);
13
14extern u32 sirfsoc_rtc_iobrg_readl(u32 addr);
15
16extern void sirfsoc_rtc_iobrg_writel(u32 val, u32 addr);
17
18#endif
diff --git a/include/linux/rwsem-spinlock.h b/include/linux/rwsem-spinlock.h
index 34701241b673..d5b13bc07a0b 100644
--- a/include/linux/rwsem-spinlock.h
+++ b/include/linux/rwsem-spinlock.h
@@ -22,7 +22,7 @@
22 */ 22 */
23struct rw_semaphore { 23struct rw_semaphore {
24 __s32 activity; 24 __s32 activity;
25 spinlock_t wait_lock; 25 raw_spinlock_t wait_lock;
26 struct list_head wait_list; 26 struct list_head wait_list;
27#ifdef CONFIG_DEBUG_LOCK_ALLOC 27#ifdef CONFIG_DEBUG_LOCK_ALLOC
28 struct lockdep_map dep_map; 28 struct lockdep_map dep_map;
diff --git a/include/linux/rwsem.h b/include/linux/rwsem.h
index 6a6741440cb7..63d406554391 100644
--- a/include/linux/rwsem.h
+++ b/include/linux/rwsem.h
@@ -25,7 +25,7 @@ struct rw_semaphore;
25/* All arch specific implementations share the same struct */ 25/* All arch specific implementations share the same struct */
26struct rw_semaphore { 26struct rw_semaphore {
27 long count; 27 long count;
28 spinlock_t wait_lock; 28 raw_spinlock_t wait_lock;
29 struct list_head wait_list; 29 struct list_head wait_list;
30#ifdef CONFIG_DEBUG_LOCK_ALLOC 30#ifdef CONFIG_DEBUG_LOCK_ALLOC
31 struct lockdep_map dep_map; 31 struct lockdep_map dep_map;
@@ -56,9 +56,11 @@ static inline int rwsem_is_locked(struct rw_semaphore *sem)
56# define __RWSEM_DEP_MAP_INIT(lockname) 56# define __RWSEM_DEP_MAP_INIT(lockname)
57#endif 57#endif
58 58
59#define __RWSEM_INITIALIZER(name) \ 59#define __RWSEM_INITIALIZER(name) \
60 { RWSEM_UNLOCKED_VALUE, __SPIN_LOCK_UNLOCKED(name.wait_lock), \ 60 { RWSEM_UNLOCKED_VALUE, \
61 LIST_HEAD_INIT((name).wait_list) __RWSEM_DEP_MAP_INIT(name) } 61 __RAW_SPIN_LOCK_UNLOCKED(name.wait_lock), \
62 LIST_HEAD_INIT((name).wait_list) \
63 __RWSEM_DEP_MAP_INIT(name) }
62 64
63#define DECLARE_RWSEM(name) \ 65#define DECLARE_RWSEM(name) \
64 struct rw_semaphore name = __RWSEM_INITIALIZER(name) 66 struct rw_semaphore name = __RWSEM_INITIALIZER(name)
diff --git a/include/linux/sched.h b/include/linux/sched.h
index 41d0237fd449..e8acce717d2a 100644
--- a/include/linux/sched.h
+++ b/include/linux/sched.h
@@ -90,6 +90,7 @@ struct sched_param {
90#include <linux/task_io_accounting.h> 90#include <linux/task_io_accounting.h>
91#include <linux/latencytop.h> 91#include <linux/latencytop.h>
92#include <linux/cred.h> 92#include <linux/cred.h>
93#include <linux/llist.h>
93 94
94#include <asm/processor.h> 95#include <asm/processor.h>
95 96
@@ -270,7 +271,6 @@ extern void init_idle_bootup_task(struct task_struct *idle);
270 271
271extern int runqueue_is_locked(int cpu); 272extern int runqueue_is_locked(int cpu);
272 273
273extern cpumask_var_t nohz_cpu_mask;
274#if defined(CONFIG_SMP) && defined(CONFIG_NO_HZ) 274#if defined(CONFIG_SMP) && defined(CONFIG_NO_HZ)
275extern void select_nohz_load_balancer(int stop_tick); 275extern void select_nohz_load_balancer(int stop_tick);
276extern int get_nohz_timer_target(void); 276extern int get_nohz_timer_target(void);
@@ -510,7 +510,7 @@ struct task_cputime {
510struct thread_group_cputimer { 510struct thread_group_cputimer {
511 struct task_cputime cputime; 511 struct task_cputime cputime;
512 int running; 512 int running;
513 spinlock_t lock; 513 raw_spinlock_t lock;
514}; 514};
515 515
516#include <linux/rwsem.h> 516#include <linux/rwsem.h>
@@ -1225,7 +1225,7 @@ struct task_struct {
1225 unsigned int ptrace; 1225 unsigned int ptrace;
1226 1226
1227#ifdef CONFIG_SMP 1227#ifdef CONFIG_SMP
1228 struct task_struct *wake_entry; 1228 struct llist_node wake_entry;
1229 int on_cpu; 1229 int on_cpu;
1230#endif 1230#endif
1231 int on_rq; 1231 int on_rq;
@@ -1260,9 +1260,6 @@ struct task_struct {
1260#ifdef CONFIG_PREEMPT_RCU 1260#ifdef CONFIG_PREEMPT_RCU
1261 int rcu_read_lock_nesting; 1261 int rcu_read_lock_nesting;
1262 char rcu_read_unlock_special; 1262 char rcu_read_unlock_special;
1263#if defined(CONFIG_RCU_BOOST) && defined(CONFIG_TREE_PREEMPT_RCU)
1264 int rcu_boosted;
1265#endif /* #if defined(CONFIG_RCU_BOOST) && defined(CONFIG_TREE_PREEMPT_RCU) */
1266 struct list_head rcu_node_entry; 1263 struct list_head rcu_node_entry;
1267#endif /* #ifdef CONFIG_PREEMPT_RCU */ 1264#endif /* #ifdef CONFIG_PREEMPT_RCU */
1268#ifdef CONFIG_TREE_PREEMPT_RCU 1265#ifdef CONFIG_TREE_PREEMPT_RCU
@@ -2039,6 +2036,10 @@ static inline void sched_autogroup_fork(struct signal_struct *sig) { }
2039static inline void sched_autogroup_exit(struct signal_struct *sig) { } 2036static inline void sched_autogroup_exit(struct signal_struct *sig) { }
2040#endif 2037#endif
2041 2038
2039#ifdef CONFIG_CFS_BANDWIDTH
2040extern unsigned int sysctl_sched_cfs_bandwidth_slice;
2041#endif
2042
2042#ifdef CONFIG_RT_MUTEXES 2043#ifdef CONFIG_RT_MUTEXES
2043extern int rt_mutex_getprio(struct task_struct *p); 2044extern int rt_mutex_getprio(struct task_struct *p);
2044extern void rt_mutex_setprio(struct task_struct *p, int prio); 2045extern void rt_mutex_setprio(struct task_struct *p, int prio);
@@ -2165,7 +2166,8 @@ extern int force_sigsegv(int, struct task_struct *);
2165extern int force_sig_info(int, struct siginfo *, struct task_struct *); 2166extern int force_sig_info(int, struct siginfo *, struct task_struct *);
2166extern int __kill_pgrp_info(int sig, struct siginfo *info, struct pid *pgrp); 2167extern int __kill_pgrp_info(int sig, struct siginfo *info, struct pid *pgrp);
2167extern int kill_pid_info(int sig, struct siginfo *info, struct pid *pid); 2168extern int kill_pid_info(int sig, struct siginfo *info, struct pid *pid);
2168extern int kill_pid_info_as_uid(int, struct siginfo *, struct pid *, uid_t, uid_t, u32); 2169extern int kill_pid_info_as_cred(int, struct siginfo *, struct pid *,
2170 const struct cred *, u32);
2169extern int kill_pgrp(struct pid *pid, int sig, int priv); 2171extern int kill_pgrp(struct pid *pid, int sig, int priv);
2170extern int kill_pid(struct pid *pid, int sig, int priv); 2172extern int kill_pid(struct pid *pid, int sig, int priv);
2171extern int kill_proc_info(int, struct siginfo *, pid_t); 2173extern int kill_proc_info(int, struct siginfo *, pid_t);
@@ -2565,7 +2567,7 @@ void thread_group_cputimer(struct task_struct *tsk, struct task_cputime *times);
2565 2567
2566static inline void thread_group_cputime_init(struct signal_struct *sig) 2568static inline void thread_group_cputime_init(struct signal_struct *sig)
2567{ 2569{
2568 spin_lock_init(&sig->cputimer.lock); 2570 raw_spin_lock_init(&sig->cputimer.lock);
2569} 2571}
2570 2572
2571/* 2573/*
diff --git a/include/linux/security.h b/include/linux/security.h
index ebd2a53a3d07..19d8e04e1688 100644
--- a/include/linux/security.h
+++ b/include/linux/security.h
@@ -36,6 +36,7 @@
36#include <linux/key.h> 36#include <linux/key.h>
37#include <linux/xfrm.h> 37#include <linux/xfrm.h>
38#include <linux/slab.h> 38#include <linux/slab.h>
39#include <linux/xattr.h>
39#include <net/flow.h> 40#include <net/flow.h>
40 41
41/* Maximum number of letters for an LSM name string */ 42/* Maximum number of letters for an LSM name string */
@@ -147,6 +148,10 @@ extern int mmap_min_addr_handler(struct ctl_table *table, int write,
147 void __user *buffer, size_t *lenp, loff_t *ppos); 148 void __user *buffer, size_t *lenp, loff_t *ppos);
148#endif 149#endif
149 150
151/* security_inode_init_security callback function to write xattrs */
152typedef int (*initxattrs) (struct inode *inode,
153 const struct xattr *xattr_array, void *fs_data);
154
150#ifdef CONFIG_SECURITY 155#ifdef CONFIG_SECURITY
151 156
152struct security_mnt_opts { 157struct security_mnt_opts {
@@ -1367,7 +1372,7 @@ static inline void security_free_mnt_opts(struct security_mnt_opts *opts)
1367 * @inode_getsecctx: 1372 * @inode_getsecctx:
1368 * Returns a string containing all relavent security context information 1373 * Returns a string containing all relavent security context information
1369 * 1374 *
1370 * @inode we wish to set the security context of. 1375 * @inode we wish to get the security context of.
1371 * @ctx is a pointer in which to place the allocated security context. 1376 * @ctx is a pointer in which to place the allocated security context.
1372 * @ctxlen points to the place to put the length of @ctx. 1377 * @ctxlen points to the place to put the length of @ctx.
1373 * This is the main security structure. 1378 * This is the main security structure.
@@ -1655,6 +1660,8 @@ struct security_operations {
1655extern int security_init(void); 1660extern int security_init(void);
1656extern int security_module_enable(struct security_operations *ops); 1661extern int security_module_enable(struct security_operations *ops);
1657extern int register_security(struct security_operations *ops); 1662extern int register_security(struct security_operations *ops);
1663extern void __init security_fixup_ops(struct security_operations *ops);
1664
1658 1665
1659/* Security operations */ 1666/* Security operations */
1660int security_ptrace_access_check(struct task_struct *child, unsigned int mode); 1667int security_ptrace_access_check(struct task_struct *child, unsigned int mode);
@@ -1704,8 +1711,11 @@ int security_sb_parse_opts_str(char *options, struct security_mnt_opts *opts);
1704int security_inode_alloc(struct inode *inode); 1711int security_inode_alloc(struct inode *inode);
1705void security_inode_free(struct inode *inode); 1712void security_inode_free(struct inode *inode);
1706int security_inode_init_security(struct inode *inode, struct inode *dir, 1713int security_inode_init_security(struct inode *inode, struct inode *dir,
1707 const struct qstr *qstr, char **name, 1714 const struct qstr *qstr,
1708 void **value, size_t *len); 1715 initxattrs initxattrs, void *fs_data);
1716int security_old_inode_init_security(struct inode *inode, struct inode *dir,
1717 const struct qstr *qstr, char **name,
1718 void **value, size_t *len);
1709int security_inode_create(struct inode *dir, struct dentry *dentry, int mode); 1719int security_inode_create(struct inode *dir, struct dentry *dentry, int mode);
1710int security_inode_link(struct dentry *old_dentry, struct inode *dir, 1720int security_inode_link(struct dentry *old_dentry, struct inode *dir,
1711 struct dentry *new_dentry); 1721 struct dentry *new_dentry);
@@ -2034,11 +2044,19 @@ static inline void security_inode_free(struct inode *inode)
2034static inline int security_inode_init_security(struct inode *inode, 2044static inline int security_inode_init_security(struct inode *inode,
2035 struct inode *dir, 2045 struct inode *dir,
2036 const struct qstr *qstr, 2046 const struct qstr *qstr,
2037 char **name, 2047 initxattrs initxattrs,
2038 void **value, 2048 void *fs_data)
2039 size_t *len)
2040{ 2049{
2041 return -EOPNOTSUPP; 2050 return 0;
2051}
2052
2053static inline int security_old_inode_init_security(struct inode *inode,
2054 struct inode *dir,
2055 const struct qstr *qstr,
2056 char **name, void **value,
2057 size_t *len)
2058{
2059 return 0;
2042} 2060}
2043 2061
2044static inline int security_inode_create(struct inode *dir, 2062static inline int security_inode_create(struct inode *dir,
diff --git a/include/linux/semaphore.h b/include/linux/semaphore.h
index 39fa04966aa8..dc368b8ce215 100644
--- a/include/linux/semaphore.h
+++ b/include/linux/semaphore.h
@@ -14,14 +14,14 @@
14 14
15/* Please don't access any members of this structure directly */ 15/* Please don't access any members of this structure directly */
16struct semaphore { 16struct semaphore {
17 spinlock_t lock; 17 raw_spinlock_t lock;
18 unsigned int count; 18 unsigned int count;
19 struct list_head wait_list; 19 struct list_head wait_list;
20}; 20};
21 21
22#define __SEMAPHORE_INITIALIZER(name, n) \ 22#define __SEMAPHORE_INITIALIZER(name, n) \
23{ \ 23{ \
24 .lock = __SPIN_LOCK_UNLOCKED((name).lock), \ 24 .lock = __RAW_SPIN_LOCK_UNLOCKED((name).lock), \
25 .count = n, \ 25 .count = n, \
26 .wait_list = LIST_HEAD_INIT((name).wait_list), \ 26 .wait_list = LIST_HEAD_INIT((name).wait_list), \
27} 27}
diff --git a/include/linux/seq_file.h b/include/linux/seq_file.h
index be720cd2038d..0b69a4684216 100644
--- a/include/linux/seq_file.h
+++ b/include/linux/seq_file.h
@@ -84,8 +84,7 @@ int seq_putc(struct seq_file *m, char c);
84int seq_puts(struct seq_file *m, const char *s); 84int seq_puts(struct seq_file *m, const char *s);
85int seq_write(struct seq_file *seq, const void *data, size_t len); 85int seq_write(struct seq_file *seq, const void *data, size_t len);
86 86
87int seq_printf(struct seq_file *, const char *, ...) 87__printf(2, 3) int seq_printf(struct seq_file *, const char *, ...);
88 __attribute__ ((format (printf,2,3)));
89 88
90int seq_path(struct seq_file *, struct path *, char *); 89int seq_path(struct seq_file *, struct path *, char *);
91int seq_dentry(struct seq_file *, struct dentry *, char *); 90int seq_dentry(struct seq_file *, struct dentry *, char *);
diff --git a/include/linux/serial.h b/include/linux/serial.h
index ef914061511e..97ff8e27a6cc 100644
--- a/include/linux/serial.h
+++ b/include/linux/serial.h
@@ -211,6 +211,7 @@ struct serial_rs485 {
211#define SER_RS485_RTS_ON_SEND (1 << 1) 211#define SER_RS485_RTS_ON_SEND (1 << 1)
212#define SER_RS485_RTS_AFTER_SEND (1 << 2) 212#define SER_RS485_RTS_AFTER_SEND (1 << 2)
213#define SER_RS485_RTS_BEFORE_SEND (1 << 3) 213#define SER_RS485_RTS_BEFORE_SEND (1 << 3)
214#define SER_RS485_RX_DURING_TX (1 << 4)
214 __u32 delay_rts_before_send; /* Milliseconds */ 215 __u32 delay_rts_before_send; /* Milliseconds */
215 __u32 delay_rts_after_send; /* Milliseconds */ 216 __u32 delay_rts_after_send; /* Milliseconds */
216 __u32 padding[5]; /* Memory is cheap, new structs 217 __u32 padding[5]; /* Memory is cheap, new structs
diff --git a/include/linux/serial_8250.h b/include/linux/serial_8250.h
index 97f5b45bbc07..1f05bbeac01e 100644
--- a/include/linux/serial_8250.h
+++ b/include/linux/serial_8250.h
@@ -35,6 +35,7 @@ struct plat_serial8250_port {
35 void (*set_termios)(struct uart_port *, 35 void (*set_termios)(struct uart_port *,
36 struct ktermios *new, 36 struct ktermios *new,
37 struct ktermios *old); 37 struct ktermios *old);
38 int (*handle_irq)(struct uart_port *);
38 void (*pm)(struct uart_port *, unsigned int state, 39 void (*pm)(struct uart_port *, unsigned int state,
39 unsigned old); 40 unsigned old);
40}; 41};
@@ -80,6 +81,7 @@ extern void serial8250_do_set_termios(struct uart_port *port,
80 struct ktermios *termios, struct ktermios *old); 81 struct ktermios *termios, struct ktermios *old);
81extern void serial8250_do_pm(struct uart_port *port, unsigned int state, 82extern void serial8250_do_pm(struct uart_port *port, unsigned int state,
82 unsigned int oldstate); 83 unsigned int oldstate);
84int serial8250_handle_irq(struct uart_port *port, unsigned int iir);
83 85
84extern void serial8250_set_isa_configurator(void (*v) 86extern void serial8250_set_isa_configurator(void (*v)
85 (int port, struct uart_port *up, 87 (int port, struct uart_port *up,
diff --git a/include/linux/serial_core.h b/include/linux/serial_core.h
index a5c31146a337..eadf33d0abba 100644
--- a/include/linux/serial_core.h
+++ b/include/linux/serial_core.h
@@ -46,7 +46,8 @@
46#define PORT_AR7 18 /* Texas Instruments AR7 internal UART */ 46#define PORT_AR7 18 /* Texas Instruments AR7 internal UART */
47#define PORT_U6_16550A 19 /* ST-Ericsson U6xxx internal UART */ 47#define PORT_U6_16550A 19 /* ST-Ericsson U6xxx internal UART */
48#define PORT_TEGRA 20 /* NVIDIA Tegra internal UART */ 48#define PORT_TEGRA 20 /* NVIDIA Tegra internal UART */
49#define PORT_MAX_8250 20 /* max port ID */ 49#define PORT_XR17D15X 21 /* Exar XR17D15x UART */
50#define PORT_MAX_8250 21 /* max port ID */
50 51
51/* 52/*
52 * ARM specific type numbers. These are not currently guaranteed 53 * ARM specific type numbers. These are not currently guaranteed
@@ -300,6 +301,7 @@ struct uart_port {
300 void (*set_termios)(struct uart_port *, 301 void (*set_termios)(struct uart_port *,
301 struct ktermios *new, 302 struct ktermios *new,
302 struct ktermios *old); 303 struct ktermios *old);
304 int (*handle_irq)(struct uart_port *);
303 void (*pm)(struct uart_port *, unsigned int state, 305 void (*pm)(struct uart_port *, unsigned int state,
304 unsigned int old); 306 unsigned int old);
305 unsigned int irq; /* irq number */ 307 unsigned int irq; /* irq number */
@@ -317,9 +319,7 @@ struct uart_port {
317#define UPIO_MEM32 (3) 319#define UPIO_MEM32 (3)
318#define UPIO_AU (4) /* Au1x00 type IO */ 320#define UPIO_AU (4) /* Au1x00 type IO */
319#define UPIO_TSI (5) /* Tsi108/109 type IO */ 321#define UPIO_TSI (5) /* Tsi108/109 type IO */
320#define UPIO_DWAPB (6) /* DesignWare APB UART */ 322#define UPIO_RM9000 (6) /* RM9000 type IO */
321#define UPIO_RM9000 (7) /* RM9000 type IO */
322#define UPIO_DWAPB32 (8) /* DesignWare APB UART (32 bit accesses) */
323 323
324 unsigned int read_status_mask; /* driver specific */ 324 unsigned int read_status_mask; /* driver specific */
325 unsigned int ignore_status_mask; /* driver specific */ 325 unsigned int ignore_status_mask; /* driver specific */
@@ -350,6 +350,7 @@ struct uart_port {
350#define UPF_MAGIC_MULTIPLIER ((__force upf_t) (1 << 16)) 350#define UPF_MAGIC_MULTIPLIER ((__force upf_t) (1 << 16))
351#define UPF_CONS_FLOW ((__force upf_t) (1 << 23)) 351#define UPF_CONS_FLOW ((__force upf_t) (1 << 23))
352#define UPF_SHARE_IRQ ((__force upf_t) (1 << 24)) 352#define UPF_SHARE_IRQ ((__force upf_t) (1 << 24))
353#define UPF_EXAR_EFR ((__force upf_t) (1 << 25))
353/* The exact UART type is known and should not be probed. */ 354/* The exact UART type is known and should not be probed. */
354#define UPF_FIXED_TYPE ((__force upf_t) (1 << 27)) 355#define UPF_FIXED_TYPE ((__force upf_t) (1 << 27))
355#define UPF_BOOT_AUTOCONF ((__force upf_t) (1 << 28)) 356#define UPF_BOOT_AUTOCONF ((__force upf_t) (1 << 28))
@@ -384,7 +385,6 @@ struct uart_state {
384 int pm_state; 385 int pm_state;
385 struct circ_buf xmit; 386 struct circ_buf xmit;
386 387
387 struct tasklet_struct tlet;
388 struct uart_port *uart_port; 388 struct uart_port *uart_port;
389}; 389};
390 390
diff --git a/include/linux/serial_reg.h b/include/linux/serial_reg.h
index c75bda37c18e..8ce70d76f836 100644
--- a/include/linux/serial_reg.h
+++ b/include/linux/serial_reg.h
@@ -152,6 +152,7 @@
152 * LCR=0xBF (or DLAB=1 for 16C660) 152 * LCR=0xBF (or DLAB=1 for 16C660)
153 */ 153 */
154#define UART_EFR 2 /* I/O: Extended Features Register */ 154#define UART_EFR 2 /* I/O: Extended Features Register */
155#define UART_XR_EFR 9 /* I/O: Extended Features Register (XR17D15x) */
155#define UART_EFR_CTS 0x80 /* CTS flow control */ 156#define UART_EFR_CTS 0x80 /* CTS flow control */
156#define UART_EFR_RTS 0x40 /* RTS flow control */ 157#define UART_EFR_RTS 0x40 /* RTS flow control */
157#define UART_EFR_SCD 0x20 /* Special character detect */ 158#define UART_EFR_SCD 0x20 /* Special character detect */
diff --git a/include/linux/serio.h b/include/linux/serio.h
index e26f4788845f..be7dfb0f12d0 100644
--- a/include/linux/serio.h
+++ b/include/linux/serio.h
@@ -199,5 +199,6 @@ static inline void serio_continue_rx(struct serio *serio)
199#define SERIO_DYNAPRO 0x3a 199#define SERIO_DYNAPRO 0x3a
200#define SERIO_HAMPSHIRE 0x3b 200#define SERIO_HAMPSHIRE 0x3b
201#define SERIO_PS2MULT 0x3c 201#define SERIO_PS2MULT 0x3c
202#define SERIO_TSC40 0x3d
202 203
203#endif 204#endif
diff --git a/include/linux/sh_eth.h b/include/linux/sh_eth.h
new file mode 100644
index 000000000000..2076acf8294d
--- /dev/null
+++ b/include/linux/sh_eth.h
@@ -0,0 +1,25 @@
1#ifndef __ASM_SH_ETH_H__
2#define __ASM_SH_ETH_H__
3
4#include <linux/phy.h>
5
6enum {EDMAC_LITTLE_ENDIAN, EDMAC_BIG_ENDIAN};
7enum {
8 SH_ETH_REG_GIGABIT,
9 SH_ETH_REG_FAST_SH4,
10 SH_ETH_REG_FAST_SH3_SH2
11};
12
13struct sh_eth_plat_data {
14 int phy;
15 int edmac_endian;
16 int register_type;
17 phy_interface_t phy_interface;
18 void (*set_mdio_gate)(void *addr);
19
20 unsigned char mac_addr[6];
21 unsigned no_ether_link:1;
22 unsigned ether_link_active_low:1;
23};
24
25#endif
diff --git a/include/linux/shrinker.h b/include/linux/shrinker.h
index 790651b4e5ba..a83833a1f7a2 100644
--- a/include/linux/shrinker.h
+++ b/include/linux/shrinker.h
@@ -20,6 +20,7 @@ struct shrink_control {
20 * 'nr_to_scan' entries and attempt to free them up. It should return 20 * 'nr_to_scan' entries and attempt to free them up. It should return
21 * the number of objects which remain in the cache. If it returns -1, it means 21 * the number of objects which remain in the cache. If it returns -1, it means
22 * it cannot do any scanning at this time (eg. there is a risk of deadlock). 22 * it cannot do any scanning at this time (eg. there is a risk of deadlock).
23 * The callback must not return -1 if nr_to_scan is zero.
23 * 24 *
24 * The 'gfpmask' refers to the allocation we are currently trying to 25 * The 'gfpmask' refers to the allocation we are currently trying to
25 * fulfil. 26 * fulfil.
diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h
index 8bd383caa363..6a6b352326d7 100644
--- a/include/linux/skbuff.h
+++ b/include/linux/skbuff.h
@@ -29,6 +29,7 @@
29#include <linux/rcupdate.h> 29#include <linux/rcupdate.h>
30#include <linux/dmaengine.h> 30#include <linux/dmaengine.h>
31#include <linux/hrtimer.h> 31#include <linux/hrtimer.h>
32#include <linux/dma-mapping.h>
32 33
33/* Don't change this without changing skb_csum_unnecessary! */ 34/* Don't change this without changing skb_csum_unnecessary! */
34#define CHECKSUM_NONE 0 35#define CHECKSUM_NONE 0
@@ -45,6 +46,11 @@
45#define SKB_MAX_HEAD(X) (SKB_MAX_ORDER((X), 0)) 46#define SKB_MAX_HEAD(X) (SKB_MAX_ORDER((X), 0))
46#define SKB_MAX_ALLOC (SKB_MAX_ORDER(0, 2)) 47#define SKB_MAX_ALLOC (SKB_MAX_ORDER(0, 2))
47 48
49/* return minimum truesize of one skb containing X bytes of data */
50#define SKB_TRUESIZE(X) ((X) + \
51 SKB_DATA_ALIGN(sizeof(struct sk_buff)) + \
52 SKB_DATA_ALIGN(sizeof(struct skb_shared_info)))
53
48/* A. Checksumming of received packets by device. 54/* A. Checksumming of received packets by device.
49 * 55 *
50 * NONE: device failed to checksum this packet. 56 * NONE: device failed to checksum this packet.
@@ -134,7 +140,9 @@ struct sk_buff;
134typedef struct skb_frag_struct skb_frag_t; 140typedef struct skb_frag_struct skb_frag_t;
135 141
136struct skb_frag_struct { 142struct skb_frag_struct {
137 struct page *page; 143 struct {
144 struct page *p;
145 } page;
138#if (BITS_PER_LONG > 32) || (PAGE_SIZE >= 65536) 146#if (BITS_PER_LONG > 32) || (PAGE_SIZE >= 65536)
139 __u32 page_offset; 147 __u32 page_offset;
140 __u32 size; 148 __u32 size;
@@ -144,6 +152,26 @@ struct skb_frag_struct {
144#endif 152#endif
145}; 153};
146 154
155static inline unsigned int skb_frag_size(const skb_frag_t *frag)
156{
157 return frag->size;
158}
159
160static inline void skb_frag_size_set(skb_frag_t *frag, unsigned int size)
161{
162 frag->size = size;
163}
164
165static inline void skb_frag_size_add(skb_frag_t *frag, int delta)
166{
167 frag->size += delta;
168}
169
170static inline void skb_frag_size_sub(skb_frag_t *frag, int delta)
171{
172 frag->size -= delta;
173}
174
147#define HAVE_HW_TIME_STAMP 175#define HAVE_HW_TIME_STAMP
148 176
149/** 177/**
@@ -322,6 +350,8 @@ typedef unsigned char *sk_buff_data_t;
322 * @queue_mapping: Queue mapping for multiqueue devices 350 * @queue_mapping: Queue mapping for multiqueue devices
323 * @ndisc_nodetype: router type (from link layer) 351 * @ndisc_nodetype: router type (from link layer)
324 * @ooo_okay: allow the mapping of a socket to a queue to be changed 352 * @ooo_okay: allow the mapping of a socket to a queue to be changed
353 * @l4_rxhash: indicate rxhash is a canonical 4-tuple hash over transport
354 * ports.
325 * @dma_cookie: a cookie to one of several possible DMA operations 355 * @dma_cookie: a cookie to one of several possible DMA operations
326 * done by skb DMA functions 356 * done by skb DMA functions
327 * @secmark: security marking 357 * @secmark: security marking
@@ -414,6 +444,7 @@ struct sk_buff {
414 __u8 ndisc_nodetype:2; 444 __u8 ndisc_nodetype:2;
415#endif 445#endif
416 __u8 ooo_okay:1; 446 __u8 ooo_okay:1;
447 __u8 l4_rxhash:1;
417 kmemcheck_bitfield_end(flags2); 448 kmemcheck_bitfield_end(flags2);
418 449
419 /* 0/13 bit hole */ 450 /* 0/13 bit hole */
@@ -521,6 +552,7 @@ static inline struct sk_buff *alloc_skb_fclone(unsigned int size,
521 return __alloc_skb(size, priority, 1, NUMA_NO_NODE); 552 return __alloc_skb(size, priority, 1, NUMA_NO_NODE);
522} 553}
523 554
555extern void skb_recycle(struct sk_buff *skb);
524extern bool skb_recycle_check(struct sk_buff *skb, int skb_size); 556extern bool skb_recycle_check(struct sk_buff *skb, int skb_size);
525 557
526extern struct sk_buff *skb_morph(struct sk_buff *dst, struct sk_buff *src); 558extern struct sk_buff *skb_morph(struct sk_buff *dst, struct sk_buff *src);
@@ -573,11 +605,11 @@ extern unsigned int skb_find_text(struct sk_buff *skb, unsigned int from,
573 unsigned int to, struct ts_config *config, 605 unsigned int to, struct ts_config *config,
574 struct ts_state *state); 606 struct ts_state *state);
575 607
576extern __u32 __skb_get_rxhash(struct sk_buff *skb); 608extern void __skb_get_rxhash(struct sk_buff *skb);
577static inline __u32 skb_get_rxhash(struct sk_buff *skb) 609static inline __u32 skb_get_rxhash(struct sk_buff *skb)
578{ 610{
579 if (!skb->rxhash) 611 if (!skb->rxhash)
580 skb->rxhash = __skb_get_rxhash(skb); 612 __skb_get_rxhash(skb);
581 613
582 return skb->rxhash; 614 return skb->rxhash;
583} 615}
@@ -823,9 +855,9 @@ static inline struct sk_buff *skb_unshare(struct sk_buff *skb,
823 * The reference count is not incremented and the reference is therefore 855 * The reference count is not incremented and the reference is therefore
824 * volatile. Use with caution. 856 * volatile. Use with caution.
825 */ 857 */
826static inline struct sk_buff *skb_peek(struct sk_buff_head *list_) 858static inline struct sk_buff *skb_peek(const struct sk_buff_head *list_)
827{ 859{
828 struct sk_buff *list = ((struct sk_buff *)list_)->next; 860 struct sk_buff *list = ((const struct sk_buff *)list_)->next;
829 if (list == (struct sk_buff *)list_) 861 if (list == (struct sk_buff *)list_)
830 list = NULL; 862 list = NULL;
831 return list; 863 return list;
@@ -844,9 +876,9 @@ static inline struct sk_buff *skb_peek(struct sk_buff_head *list_)
844 * The reference count is not incremented and the reference is therefore 876 * The reference count is not incremented and the reference is therefore
845 * volatile. Use with caution. 877 * volatile. Use with caution.
846 */ 878 */
847static inline struct sk_buff *skb_peek_tail(struct sk_buff_head *list_) 879static inline struct sk_buff *skb_peek_tail(const struct sk_buff_head *list_)
848{ 880{
849 struct sk_buff *list = ((struct sk_buff *)list_)->prev; 881 struct sk_buff *list = ((const struct sk_buff *)list_)->prev;
850 if (list == (struct sk_buff *)list_) 882 if (list == (struct sk_buff *)list_)
851 list = NULL; 883 list = NULL;
852 return list; 884 return list;
@@ -1123,18 +1155,51 @@ static inline int skb_pagelen(const struct sk_buff *skb)
1123 int i, len = 0; 1155 int i, len = 0;
1124 1156
1125 for (i = (int)skb_shinfo(skb)->nr_frags - 1; i >= 0; i--) 1157 for (i = (int)skb_shinfo(skb)->nr_frags - 1; i >= 0; i--)
1126 len += skb_shinfo(skb)->frags[i].size; 1158 len += skb_frag_size(&skb_shinfo(skb)->frags[i]);
1127 return len + skb_headlen(skb); 1159 return len + skb_headlen(skb);
1128} 1160}
1129 1161
1130static inline void skb_fill_page_desc(struct sk_buff *skb, int i, 1162/**
1131 struct page *page, int off, int size) 1163 * __skb_fill_page_desc - initialise a paged fragment in an skb
1164 * @skb: buffer containing fragment to be initialised
1165 * @i: paged fragment index to initialise
1166 * @page: the page to use for this fragment
1167 * @off: the offset to the data with @page
1168 * @size: the length of the data
1169 *
1170 * Initialises the @i'th fragment of @skb to point to &size bytes at
1171 * offset @off within @page.
1172 *
1173 * Does not take any additional reference on the fragment.
1174 */
1175static inline void __skb_fill_page_desc(struct sk_buff *skb, int i,
1176 struct page *page, int off, int size)
1132{ 1177{
1133 skb_frag_t *frag = &skb_shinfo(skb)->frags[i]; 1178 skb_frag_t *frag = &skb_shinfo(skb)->frags[i];
1134 1179
1135 frag->page = page; 1180 frag->page.p = page;
1136 frag->page_offset = off; 1181 frag->page_offset = off;
1137 frag->size = size; 1182 skb_frag_size_set(frag, size);
1183}
1184
1185/**
1186 * skb_fill_page_desc - initialise a paged fragment in an skb
1187 * @skb: buffer containing fragment to be initialised
1188 * @i: paged fragment index to initialise
1189 * @page: the page to use for this fragment
1190 * @off: the offset to the data with @page
1191 * @size: the length of the data
1192 *
1193 * As per __skb_fill_page_desc() -- initialises the @i'th fragment of
1194 * @skb to point to &size bytes at offset @off within @page. In
1195 * addition updates @skb such that @i is the last fragment.
1196 *
1197 * Does not take any additional reference on the fragment.
1198 */
1199static inline void skb_fill_page_desc(struct sk_buff *skb, int i,
1200 struct page *page, int off, int size)
1201{
1202 __skb_fill_page_desc(skb, i, page, off, size);
1138 skb_shinfo(skb)->nr_frags = i + 1; 1203 skb_shinfo(skb)->nr_frags = i + 1;
1139} 1204}
1140 1205
@@ -1629,6 +1694,137 @@ static inline void netdev_free_page(struct net_device *dev, struct page *page)
1629} 1694}
1630 1695
1631/** 1696/**
1697 * skb_frag_page - retrieve the page refered to by a paged fragment
1698 * @frag: the paged fragment
1699 *
1700 * Returns the &struct page associated with @frag.
1701 */
1702static inline struct page *skb_frag_page(const skb_frag_t *frag)
1703{
1704 return frag->page.p;
1705}
1706
1707/**
1708 * __skb_frag_ref - take an addition reference on a paged fragment.
1709 * @frag: the paged fragment
1710 *
1711 * Takes an additional reference on the paged fragment @frag.
1712 */
1713static inline void __skb_frag_ref(skb_frag_t *frag)
1714{
1715 get_page(skb_frag_page(frag));
1716}
1717
1718/**
1719 * skb_frag_ref - take an addition reference on a paged fragment of an skb.
1720 * @skb: the buffer
1721 * @f: the fragment offset.
1722 *
1723 * Takes an additional reference on the @f'th paged fragment of @skb.
1724 */
1725static inline void skb_frag_ref(struct sk_buff *skb, int f)
1726{
1727 __skb_frag_ref(&skb_shinfo(skb)->frags[f]);
1728}
1729
1730/**
1731 * __skb_frag_unref - release a reference on a paged fragment.
1732 * @frag: the paged fragment
1733 *
1734 * Releases a reference on the paged fragment @frag.
1735 */
1736static inline void __skb_frag_unref(skb_frag_t *frag)
1737{
1738 put_page(skb_frag_page(frag));
1739}
1740
1741/**
1742 * skb_frag_unref - release a reference on a paged fragment of an skb.
1743 * @skb: the buffer
1744 * @f: the fragment offset
1745 *
1746 * Releases a reference on the @f'th paged fragment of @skb.
1747 */
1748static inline void skb_frag_unref(struct sk_buff *skb, int f)
1749{
1750 __skb_frag_unref(&skb_shinfo(skb)->frags[f]);
1751}
1752
1753/**
1754 * skb_frag_address - gets the address of the data contained in a paged fragment
1755 * @frag: the paged fragment buffer
1756 *
1757 * Returns the address of the data within @frag. The page must already
1758 * be mapped.
1759 */
1760static inline void *skb_frag_address(const skb_frag_t *frag)
1761{
1762 return page_address(skb_frag_page(frag)) + frag->page_offset;
1763}
1764
1765/**
1766 * skb_frag_address_safe - gets the address of the data contained in a paged fragment
1767 * @frag: the paged fragment buffer
1768 *
1769 * Returns the address of the data within @frag. Checks that the page
1770 * is mapped and returns %NULL otherwise.
1771 */
1772static inline void *skb_frag_address_safe(const skb_frag_t *frag)
1773{
1774 void *ptr = page_address(skb_frag_page(frag));
1775 if (unlikely(!ptr))
1776 return NULL;
1777
1778 return ptr + frag->page_offset;
1779}
1780
1781/**
1782 * __skb_frag_set_page - sets the page contained in a paged fragment
1783 * @frag: the paged fragment
1784 * @page: the page to set
1785 *
1786 * Sets the fragment @frag to contain @page.
1787 */
1788static inline void __skb_frag_set_page(skb_frag_t *frag, struct page *page)
1789{
1790 frag->page.p = page;
1791}
1792
1793/**
1794 * skb_frag_set_page - sets the page contained in a paged fragment of an skb
1795 * @skb: the buffer
1796 * @f: the fragment offset
1797 * @page: the page to set
1798 *
1799 * Sets the @f'th fragment of @skb to contain @page.
1800 */
1801static inline void skb_frag_set_page(struct sk_buff *skb, int f,
1802 struct page *page)
1803{
1804 __skb_frag_set_page(&skb_shinfo(skb)->frags[f], page);
1805}
1806
1807/**
1808 * skb_frag_dma_map - maps a paged fragment via the DMA API
1809 * @device: the device to map the fragment to
1810 * @frag: the paged fragment to map
1811 * @offset: the offset within the fragment (starting at the
1812 * fragment's own offset)
1813 * @size: the number of bytes to map
1814 * @direction: the direction of the mapping (%PCI_DMA_*)
1815 *
1816 * Maps the page associated with @frag to @device.
1817 */
1818static inline dma_addr_t skb_frag_dma_map(struct device *dev,
1819 const skb_frag_t *frag,
1820 size_t offset, size_t size,
1821 enum dma_data_direction dir)
1822{
1823 return dma_map_page(dev, skb_frag_page(frag),
1824 frag->page_offset + offset, size, dir);
1825}
1826
1827/**
1632 * skb_clone_writable - is the header of a clone writable 1828 * skb_clone_writable - is the header of a clone writable
1633 * @skb: buffer to check 1829 * @skb: buffer to check
1634 * @len: length up to which to write 1830 * @len: length up to which to write
@@ -1636,7 +1832,7 @@ static inline void netdev_free_page(struct net_device *dev, struct page *page)
1636 * Returns true if modifying the header part of the cloned buffer 1832 * Returns true if modifying the header part of the cloned buffer
1637 * does not requires the data to be copied. 1833 * does not requires the data to be copied.
1638 */ 1834 */
1639static inline int skb_clone_writable(struct sk_buff *skb, unsigned int len) 1835static inline int skb_clone_writable(const struct sk_buff *skb, unsigned int len)
1640{ 1836{
1641 return !skb_header_cloned(skb) && 1837 return !skb_header_cloned(skb) &&
1642 skb_headroom(skb) + len <= skb->hdr_len; 1838 skb_headroom(skb) + len <= skb->hdr_len;
@@ -1730,13 +1926,13 @@ static inline int skb_add_data(struct sk_buff *skb,
1730} 1926}
1731 1927
1732static inline int skb_can_coalesce(struct sk_buff *skb, int i, 1928static inline int skb_can_coalesce(struct sk_buff *skb, int i,
1733 struct page *page, int off) 1929 const struct page *page, int off)
1734{ 1930{
1735 if (i) { 1931 if (i) {
1736 struct skb_frag_struct *frag = &skb_shinfo(skb)->frags[i - 1]; 1932 const struct skb_frag_struct *frag = &skb_shinfo(skb)->frags[i - 1];
1737 1933
1738 return page == frag->page && 1934 return page == skb_frag_page(frag) &&
1739 off == frag->page_offset + frag->size; 1935 off == frag->page_offset + skb_frag_size(frag);
1740 } 1936 }
1741 return 0; 1937 return 0;
1742} 1938}
@@ -2020,8 +2216,13 @@ static inline bool skb_defer_rx_timestamp(struct sk_buff *skb)
2020/** 2216/**
2021 * skb_complete_tx_timestamp() - deliver cloned skb with tx timestamps 2217 * skb_complete_tx_timestamp() - deliver cloned skb with tx timestamps
2022 * 2218 *
2219 * PHY drivers may accept clones of transmitted packets for
2220 * timestamping via their phy_driver.txtstamp method. These drivers
2221 * must call this function to return the skb back to the stack, with
2222 * or without a timestamp.
2223 *
2023 * @skb: clone of the the original outgoing packet 2224 * @skb: clone of the the original outgoing packet
2024 * @hwtstamps: hardware time stamps 2225 * @hwtstamps: hardware time stamps, may be NULL if not available
2025 * 2226 *
2026 */ 2227 */
2027void skb_complete_tx_timestamp(struct sk_buff *skb, 2228void skb_complete_tx_timestamp(struct sk_buff *skb,
@@ -2257,7 +2458,8 @@ static inline bool skb_warn_if_lro(const struct sk_buff *skb)
2257{ 2458{
2258 /* LRO sets gso_size but not gso_type, whereas if GSO is really 2459 /* LRO sets gso_size but not gso_type, whereas if GSO is really
2259 * wanted then gso_type will be set. */ 2460 * wanted then gso_type will be set. */
2260 struct skb_shared_info *shinfo = skb_shinfo(skb); 2461 const struct skb_shared_info *shinfo = skb_shinfo(skb);
2462
2261 if (skb_is_nonlinear(skb) && shinfo->gso_size != 0 && 2463 if (skb_is_nonlinear(skb) && shinfo->gso_size != 0 &&
2262 unlikely(shinfo->gso_type == 0)) { 2464 unlikely(shinfo->gso_type == 0)) {
2263 __skb_warn_lro_forwarding(skb); 2465 __skb_warn_lro_forwarding(skb);
@@ -2281,7 +2483,7 @@ static inline void skb_forward_csum(struct sk_buff *skb)
2281 * Instead of forcing ip_summed to CHECKSUM_NONE, we can 2483 * Instead of forcing ip_summed to CHECKSUM_NONE, we can
2282 * use this helper, to document places where we make this assertion. 2484 * use this helper, to document places where we make this assertion.
2283 */ 2485 */
2284static inline void skb_checksum_none_assert(struct sk_buff *skb) 2486static inline void skb_checksum_none_assert(const struct sk_buff *skb)
2285{ 2487{
2286#ifdef DEBUG 2488#ifdef DEBUG
2287 BUG_ON(skb->ip_summed != CHECKSUM_NONE); 2489 BUG_ON(skb->ip_summed != CHECKSUM_NONE);
@@ -2290,5 +2492,25 @@ static inline void skb_checksum_none_assert(struct sk_buff *skb)
2290 2492
2291bool skb_partial_csum_set(struct sk_buff *skb, u16 start, u16 off); 2493bool skb_partial_csum_set(struct sk_buff *skb, u16 start, u16 off);
2292 2494
2495static inline bool skb_is_recycleable(const struct sk_buff *skb, int skb_size)
2496{
2497 if (irqs_disabled())
2498 return false;
2499
2500 if (skb_shinfo(skb)->tx_flags & SKBTX_DEV_ZEROCOPY)
2501 return false;
2502
2503 if (skb_is_nonlinear(skb) || skb->fclone != SKB_FCLONE_UNAVAILABLE)
2504 return false;
2505
2506 skb_size = SKB_DATA_ALIGN(skb_size + NET_SKB_PAD);
2507 if (skb_end_pointer(skb) - skb->head < skb_size)
2508 return false;
2509
2510 if (skb_shared(skb) || skb_cloned(skb))
2511 return false;
2512
2513 return true;
2514}
2293#endif /* __KERNEL__ */ 2515#endif /* __KERNEL__ */
2294#endif /* _LINUX_SKBUFF_H */ 2516#endif /* _LINUX_SKBUFF_H */
diff --git a/include/linux/slub_def.h b/include/linux/slub_def.h
index f58d6413d230..a32bcfdc7834 100644
--- a/include/linux/slub_def.h
+++ b/include/linux/slub_def.h
@@ -36,12 +36,15 @@ enum stat_item {
36 ORDER_FALLBACK, /* Number of times fallback was necessary */ 36 ORDER_FALLBACK, /* Number of times fallback was necessary */
37 CMPXCHG_DOUBLE_CPU_FAIL,/* Failure of this_cpu_cmpxchg_double */ 37 CMPXCHG_DOUBLE_CPU_FAIL,/* Failure of this_cpu_cmpxchg_double */
38 CMPXCHG_DOUBLE_FAIL, /* Number of times that cmpxchg double did not match */ 38 CMPXCHG_DOUBLE_FAIL, /* Number of times that cmpxchg double did not match */
39 CPU_PARTIAL_ALLOC, /* Used cpu partial on alloc */
40 CPU_PARTIAL_FREE, /* USed cpu partial on free */
39 NR_SLUB_STAT_ITEMS }; 41 NR_SLUB_STAT_ITEMS };
40 42
41struct kmem_cache_cpu { 43struct kmem_cache_cpu {
42 void **freelist; /* Pointer to next available object */ 44 void **freelist; /* Pointer to next available object */
43 unsigned long tid; /* Globally unique transaction id */ 45 unsigned long tid; /* Globally unique transaction id */
44 struct page *page; /* The slab from which we are allocating */ 46 struct page *page; /* The slab from which we are allocating */
47 struct page *partial; /* Partially allocated frozen slabs */
45 int node; /* The node of the page (or -1 for debug) */ 48 int node; /* The node of the page (or -1 for debug) */
46#ifdef CONFIG_SLUB_STATS 49#ifdef CONFIG_SLUB_STATS
47 unsigned stat[NR_SLUB_STAT_ITEMS]; 50 unsigned stat[NR_SLUB_STAT_ITEMS];
@@ -79,6 +82,7 @@ struct kmem_cache {
79 int size; /* The size of an object including meta data */ 82 int size; /* The size of an object including meta data */
80 int objsize; /* The size of an object without meta data */ 83 int objsize; /* The size of an object without meta data */
81 int offset; /* Free pointer offset. */ 84 int offset; /* Free pointer offset. */
85 int cpu_partial; /* Number of per cpu partial objects to keep around */
82 struct kmem_cache_order_objects oo; 86 struct kmem_cache_order_objects oo;
83 87
84 /* Allocation and freeing of slabs */ 88 /* Allocation and freeing of slabs */
diff --git a/include/linux/spi/l4f00242t03.h b/include/linux/spi/l4f00242t03.h
index aee1dbda4edc..bc8677c8eba9 100644
--- a/include/linux/spi/l4f00242t03.h
+++ b/include/linux/spi/l4f00242t03.h
@@ -24,8 +24,6 @@
24struct l4f00242t03_pdata { 24struct l4f00242t03_pdata {
25 unsigned int reset_gpio; 25 unsigned int reset_gpio;
26 unsigned int data_enable_gpio; 26 unsigned int data_enable_gpio;
27 const char *io_supply; /* will be set to 1.8 V */
28 const char *core_supply; /* will be set to 2.8 V */
29}; 27};
30 28
31#endif /* _INCLUDE_LINUX_SPI_L4F00242T03_H_ */ 29#endif /* _INCLUDE_LINUX_SPI_L4F00242T03_H_ */
diff --git a/include/linux/ssb/ssb.h b/include/linux/ssb/ssb.h
index 8623217f84d0..f10ed7b4a714 100644
--- a/include/linux/ssb/ssb.h
+++ b/include/linux/ssb/ssb.h
@@ -25,7 +25,7 @@ struct ssb_sprom {
25 u8 et1phyaddr; /* MII address for enet1 */ 25 u8 et1phyaddr; /* MII address for enet1 */
26 u8 et0mdcport; /* MDIO for enet0 */ 26 u8 et0mdcport; /* MDIO for enet0 */
27 u8 et1mdcport; /* MDIO for enet1 */ 27 u8 et1mdcport; /* MDIO for enet1 */
28 u8 board_rev; /* Board revision number from SPROM. */ 28 u16 board_rev; /* Board revision number from SPROM. */
29 u8 country_code; /* Country Code */ 29 u8 country_code; /* Country Code */
30 u16 leddc_on_time; /* LED Powersave Duty Cycle On Count */ 30 u16 leddc_on_time; /* LED Powersave Duty Cycle On Count */
31 u16 leddc_off_time; /* LED Powersave Duty Cycle Off Count */ 31 u16 leddc_off_time; /* LED Powersave Duty Cycle Off Count */
diff --git a/include/linux/ssb/ssb_regs.h b/include/linux/ssb/ssb_regs.h
index efbf459d571c..98941203a27f 100644
--- a/include/linux/ssb/ssb_regs.h
+++ b/include/linux/ssb/ssb_regs.h
@@ -462,6 +462,46 @@
462#define SSB_SPROM8_OFDM5GLPO 0x014A /* 5.2GHz OFDM power offset */ 462#define SSB_SPROM8_OFDM5GLPO 0x014A /* 5.2GHz OFDM power offset */
463#define SSB_SPROM8_OFDM5GHPO 0x014E /* 5.8GHz OFDM power offset */ 463#define SSB_SPROM8_OFDM5GHPO 0x014E /* 5.8GHz OFDM power offset */
464 464
465/* Values for boardflags_lo read from SPROM */
466#define SSB_BFL_BTCOEXIST 0x0001 /* implements Bluetooth coexistance */
467#define SSB_BFL_PACTRL 0x0002 /* GPIO 9 controlling the PA */
468#define SSB_BFL_AIRLINEMODE 0x0004 /* implements GPIO 13 radio disable indication */
469#define SSB_BFL_RSSI 0x0008 /* software calculates nrssi slope. */
470#define SSB_BFL_ENETSPI 0x0010 /* has ephy roboswitch spi */
471#define SSB_BFL_XTAL_NOSLOW 0x0020 /* no slow clock available */
472#define SSB_BFL_CCKHIPWR 0x0040 /* can do high power CCK transmission */
473#define SSB_BFL_ENETADM 0x0080 /* has ADMtek switch */
474#define SSB_BFL_ENETVLAN 0x0100 /* can do vlan */
475#define SSB_BFL_AFTERBURNER 0x0200 /* supports Afterburner mode */
476#define SSB_BFL_NOPCI 0x0400 /* board leaves PCI floating */
477#define SSB_BFL_FEM 0x0800 /* supports the Front End Module */
478#define SSB_BFL_EXTLNA 0x1000 /* has an external LNA */
479#define SSB_BFL_HGPA 0x2000 /* had high gain PA */
480#define SSB_BFL_BTCMOD 0x4000 /* BFL_BTCOEXIST is given in alternate GPIOs */
481#define SSB_BFL_ALTIQ 0x8000 /* alternate I/Q settings */
482
483/* Values for boardflags_hi read from SPROM */
484#define SSB_BFH_NOPA 0x0001 /* has no PA */
485#define SSB_BFH_RSSIINV 0x0002 /* RSSI uses positive slope (not TSSI) */
486#define SSB_BFH_PAREF 0x0004 /* uses the PARef LDO */
487#define SSB_BFH_3TSWITCH 0x0008 /* uses a triple throw switch shared with bluetooth */
488#define SSB_BFH_PHASESHIFT 0x0010 /* can support phase shifter */
489#define SSB_BFH_BUCKBOOST 0x0020 /* has buck/booster */
490#define SSB_BFH_FEM_BT 0x0040 /* has FEM and switch to share antenna with bluetooth */
491
492/* Values for boardflags2_lo read from SPROM */
493#define SSB_BFL2_RXBB_INT_REG_DIS 0x0001 /* external RX BB regulator present */
494#define SSB_BFL2_APLL_WAR 0x0002 /* alternative A-band PLL settings implemented */
495#define SSB_BFL2_TXPWRCTRL_EN 0x0004 /* permits enabling TX Power Control */
496#define SSB_BFL2_2X4_DIV 0x0008 /* 2x4 diversity switch */
497#define SSB_BFL2_5G_PWRGAIN 0x0010 /* supports 5G band power gain */
498#define SSB_BFL2_PCIEWAR_OVR 0x0020 /* overrides ASPM and Clkreq settings */
499#define SSB_BFL2_CAESERS_BRD 0x0040 /* is Caesers board (unused) */
500#define SSB_BFL2_BTC3WIRE 0x0080 /* used 3-wire bluetooth coexist */
501#define SSB_BFL2_SKWRKFEM_BRD 0x0100 /* 4321mcm93 uses Skyworks FEM */
502#define SSB_BFL2_SPUR_WAR 0x0200 /* has a workaround for clock-harmonic spurs */
503#define SSB_BFL2_GPLL_WAR 0x0400 /* altenative G-band PLL settings implemented */
504
465/* Values for SSB_SPROM1_BINF_CCODE */ 505/* Values for SSB_SPROM1_BINF_CCODE */
466enum { 506enum {
467 SSB_SPROM1CCODE_WORLD = 0, 507 SSB_SPROM1CCODE_WORLD = 0,
diff --git a/include/linux/string.h b/include/linux/string.h
index a176db2f2c85..e033564f10ba 100644
--- a/include/linux/string.h
+++ b/include/linux/string.h
@@ -114,6 +114,7 @@ extern int memcmp(const void *,const void *,__kernel_size_t);
114#ifndef __HAVE_ARCH_MEMCHR 114#ifndef __HAVE_ARCH_MEMCHR
115extern void * memchr(const void *,int,__kernel_size_t); 115extern void * memchr(const void *,int,__kernel_size_t);
116#endif 116#endif
117void *memchr_inv(const void *s, int c, size_t n);
117 118
118extern char *kstrdup(const char *s, gfp_t gfp); 119extern char *kstrdup(const char *s, gfp_t gfp);
119extern char *kstrndup(const char *s, size_t len, gfp_t gfp); 120extern char *kstrndup(const char *s, size_t len, gfp_t gfp);
diff --git a/include/linux/sungem_phy.h b/include/linux/sungem_phy.h
new file mode 100644
index 000000000000..bd9be9f59d3a
--- /dev/null
+++ b/include/linux/sungem_phy.h
@@ -0,0 +1,132 @@
1#ifndef __SUNGEM_PHY_H__
2#define __SUNGEM_PHY_H__
3
4struct mii_phy;
5
6/* Operations supported by any kind of PHY */
7struct mii_phy_ops
8{
9 int (*init)(struct mii_phy *phy);
10 int (*suspend)(struct mii_phy *phy);
11 int (*setup_aneg)(struct mii_phy *phy, u32 advertise);
12 int (*setup_forced)(struct mii_phy *phy, int speed, int fd);
13 int (*poll_link)(struct mii_phy *phy);
14 int (*read_link)(struct mii_phy *phy);
15 int (*enable_fiber)(struct mii_phy *phy, int autoneg);
16};
17
18/* Structure used to statically define an mii/gii based PHY */
19struct mii_phy_def
20{
21 u32 phy_id; /* Concatenated ID1 << 16 | ID2 */
22 u32 phy_id_mask; /* Significant bits */
23 u32 features; /* Ethtool SUPPORTED_* defines */
24 int magic_aneg; /* Autoneg does all speed test for us */
25 const char* name;
26 const struct mii_phy_ops* ops;
27};
28
29enum {
30 BCM54XX_COPPER,
31 BCM54XX_FIBER,
32 BCM54XX_GBIC,
33 BCM54XX_SGMII,
34 BCM54XX_UNKNOWN,
35};
36
37/* An instance of a PHY, partially borrowed from mii_if_info */
38struct mii_phy
39{
40 struct mii_phy_def* def;
41 u32 advertising;
42 int mii_id;
43
44 /* 1: autoneg enabled, 0: disabled */
45 int autoneg;
46
47 /* forced speed & duplex (no autoneg)
48 * partner speed & duplex & pause (autoneg)
49 */
50 int speed;
51 int duplex;
52 int pause;
53
54 /* Provided by host chip */
55 struct net_device *dev;
56 int (*mdio_read) (struct net_device *dev, int mii_id, int reg);
57 void (*mdio_write) (struct net_device *dev, int mii_id, int reg, int val);
58 void *platform_data;
59};
60
61/* Pass in a struct mii_phy with dev, mdio_read and mdio_write
62 * filled, the remaining fields will be filled on return
63 */
64extern int sungem_phy_probe(struct mii_phy *phy, int mii_id);
65
66
67/* MII definitions missing from mii.h */
68
69#define BMCR_SPD2 0x0040 /* Gigabit enable (bcm54xx) */
70#define LPA_PAUSE 0x0400
71
72/* More PHY registers (model specific) */
73
74/* MII BCM5201 MULTIPHY interrupt register */
75#define MII_BCM5201_INTERRUPT 0x1A
76#define MII_BCM5201_INTERRUPT_INTENABLE 0x4000
77
78#define MII_BCM5201_AUXMODE2 0x1B
79#define MII_BCM5201_AUXMODE2_LOWPOWER 0x0008
80
81#define MII_BCM5201_MULTIPHY 0x1E
82
83/* MII BCM5201 MULTIPHY register bits */
84#define MII_BCM5201_MULTIPHY_SERIALMODE 0x0002
85#define MII_BCM5201_MULTIPHY_SUPERISOLATE 0x0008
86
87/* MII BCM5221 Additional registers */
88#define MII_BCM5221_TEST 0x1f
89#define MII_BCM5221_TEST_ENABLE_SHADOWS 0x0080
90#define MII_BCM5221_SHDOW_AUX_STAT2 0x1b
91#define MII_BCM5221_SHDOW_AUX_STAT2_APD 0x0020
92#define MII_BCM5221_SHDOW_AUX_MODE4 0x1a
93#define MII_BCM5221_SHDOW_AUX_MODE4_IDDQMODE 0x0001
94#define MII_BCM5221_SHDOW_AUX_MODE4_CLKLOPWR 0x0004
95
96/* MII BCM5241 Additional registers */
97#define MII_BCM5241_SHDOW_AUX_MODE4_STANDBYPWR 0x0008
98
99/* MII BCM5400 1000-BASET Control register */
100#define MII_BCM5400_GB_CONTROL 0x09
101#define MII_BCM5400_GB_CONTROL_FULLDUPLEXCAP 0x0200
102
103/* MII BCM5400 AUXCONTROL register */
104#define MII_BCM5400_AUXCONTROL 0x18
105#define MII_BCM5400_AUXCONTROL_PWR10BASET 0x0004
106
107/* MII BCM5400 AUXSTATUS register */
108#define MII_BCM5400_AUXSTATUS 0x19
109#define MII_BCM5400_AUXSTATUS_LINKMODE_MASK 0x0700
110#define MII_BCM5400_AUXSTATUS_LINKMODE_SHIFT 8
111
112/* 1000BT control (Marvell & BCM54xx at least) */
113#define MII_1000BASETCONTROL 0x09
114#define MII_1000BASETCONTROL_FULLDUPLEXCAP 0x0200
115#define MII_1000BASETCONTROL_HALFDUPLEXCAP 0x0100
116
117/* Marvell 88E1011 PHY control */
118#define MII_M1011_PHY_SPEC_CONTROL 0x10
119#define MII_M1011_PHY_SPEC_CONTROL_MANUAL_MDIX 0x20
120#define MII_M1011_PHY_SPEC_CONTROL_AUTO_MDIX 0x40
121
122/* Marvell 88E1011 PHY status */
123#define MII_M1011_PHY_SPEC_STATUS 0x11
124#define MII_M1011_PHY_SPEC_STATUS_1000 0x8000
125#define MII_M1011_PHY_SPEC_STATUS_100 0x4000
126#define MII_M1011_PHY_SPEC_STATUS_SPD_MASK 0xc000
127#define MII_M1011_PHY_SPEC_STATUS_FULLDUPLEX 0x2000
128#define MII_M1011_PHY_SPEC_STATUS_RESOLVED 0x0800
129#define MII_M1011_PHY_SPEC_STATUS_TX_PAUSE 0x0008
130#define MII_M1011_PHY_SPEC_STATUS_RX_PAUSE 0x0004
131
132#endif /* __SUNGEM_PHY_H__ */
diff --git a/include/linux/sunrpc/clnt.h b/include/linux/sunrpc/clnt.h
index ad09bed239fc..3d8f9c44e27d 100644
--- a/include/linux/sunrpc/clnt.h
+++ b/include/linux/sunrpc/clnt.h
@@ -221,7 +221,13 @@ static inline bool __rpc_cmp_addr6(const struct sockaddr *sap1,
221{ 221{
222 const struct sockaddr_in6 *sin1 = (const struct sockaddr_in6 *)sap1; 222 const struct sockaddr_in6 *sin1 = (const struct sockaddr_in6 *)sap1;
223 const struct sockaddr_in6 *sin2 = (const struct sockaddr_in6 *)sap2; 223 const struct sockaddr_in6 *sin2 = (const struct sockaddr_in6 *)sap2;
224 return ipv6_addr_equal(&sin1->sin6_addr, &sin2->sin6_addr); 224
225 if (!ipv6_addr_equal(&sin1->sin6_addr, &sin2->sin6_addr))
226 return false;
227 else if (ipv6_addr_type(&sin1->sin6_addr) & IPV6_ADDR_LINKLOCAL)
228 return sin1->sin6_scope_id == sin2->sin6_scope_id;
229
230 return true;
225} 231}
226 232
227static inline bool __rpc_copy_addr6(struct sockaddr *dst, 233static inline bool __rpc_copy_addr6(struct sockaddr *dst,
diff --git a/include/linux/sunrpc/svc.h b/include/linux/sunrpc/svc.h
index 5e71a306216f..35b37b1e9299 100644
--- a/include/linux/sunrpc/svc.h
+++ b/include/linux/sunrpc/svc.h
@@ -212,11 +212,6 @@ static inline void svc_putu32(struct kvec *iov, __be32 val)
212 iov->iov_len += sizeof(__be32); 212 iov->iov_len += sizeof(__be32);
213} 213}
214 214
215union svc_addr_u {
216 struct in_addr addr;
217 struct in6_addr addr6;
218};
219
220/* 215/*
221 * The context of a single thread, including the request currently being 216 * The context of a single thread, including the request currently being
222 * processed. 217 * processed.
@@ -225,8 +220,12 @@ struct svc_rqst {
225 struct list_head rq_list; /* idle list */ 220 struct list_head rq_list; /* idle list */
226 struct list_head rq_all; /* all threads list */ 221 struct list_head rq_all; /* all threads list */
227 struct svc_xprt * rq_xprt; /* transport ptr */ 222 struct svc_xprt * rq_xprt; /* transport ptr */
223
228 struct sockaddr_storage rq_addr; /* peer address */ 224 struct sockaddr_storage rq_addr; /* peer address */
229 size_t rq_addrlen; 225 size_t rq_addrlen;
226 struct sockaddr_storage rq_daddr; /* dest addr of request
227 * - reply from here */
228 size_t rq_daddrlen;
230 229
231 struct svc_serv * rq_server; /* RPC service definition */ 230 struct svc_serv * rq_server; /* RPC service definition */
232 struct svc_pool * rq_pool; /* thread pool */ 231 struct svc_pool * rq_pool; /* thread pool */
@@ -255,9 +254,6 @@ struct svc_rqst {
255 unsigned short 254 unsigned short
256 rq_secure : 1; /* secure port */ 255 rq_secure : 1; /* secure port */
257 256
258 union svc_addr_u rq_daddr; /* dest addr of request
259 * - reply from here */
260
261 void * rq_argp; /* decoded arguments */ 257 void * rq_argp; /* decoded arguments */
262 void * rq_resp; /* xdr'd results */ 258 void * rq_resp; /* xdr'd results */
263 void * rq_auth_data; /* flavor-specific data */ 259 void * rq_auth_data; /* flavor-specific data */
@@ -300,6 +296,21 @@ static inline struct sockaddr *svc_addr(const struct svc_rqst *rqst)
300 return (struct sockaddr *) &rqst->rq_addr; 296 return (struct sockaddr *) &rqst->rq_addr;
301} 297}
302 298
299static inline struct sockaddr_in *svc_daddr_in(const struct svc_rqst *rqst)
300{
301 return (struct sockaddr_in *) &rqst->rq_daddr;
302}
303
304static inline struct sockaddr_in6 *svc_daddr_in6(const struct svc_rqst *rqst)
305{
306 return (struct sockaddr_in6 *) &rqst->rq_daddr;
307}
308
309static inline struct sockaddr *svc_daddr(const struct svc_rqst *rqst)
310{
311 return (struct sockaddr *) &rqst->rq_daddr;
312}
313
303/* 314/*
304 * Check buffer bounds after decoding arguments 315 * Check buffer bounds after decoding arguments
305 */ 316 */
@@ -340,7 +351,8 @@ struct svc_deferred_req {
340 struct svc_xprt *xprt; 351 struct svc_xprt *xprt;
341 struct sockaddr_storage addr; /* where reply must go */ 352 struct sockaddr_storage addr; /* where reply must go */
342 size_t addrlen; 353 size_t addrlen;
343 union svc_addr_u daddr; /* where reply must come from */ 354 struct sockaddr_storage daddr; /* where reply must come from */
355 size_t daddrlen;
344 struct cache_deferred_req handle; 356 struct cache_deferred_req handle;
345 size_t xprt_hlen; 357 size_t xprt_hlen;
346 int argslen; 358 int argslen;
@@ -405,7 +417,7 @@ void svc_rpcb_cleanup(struct svc_serv *serv);
405struct svc_serv *svc_create(struct svc_program *, unsigned int, 417struct svc_serv *svc_create(struct svc_program *, unsigned int,
406 void (*shutdown)(struct svc_serv *)); 418 void (*shutdown)(struct svc_serv *));
407struct svc_rqst *svc_prepare_thread(struct svc_serv *serv, 419struct svc_rqst *svc_prepare_thread(struct svc_serv *serv,
408 struct svc_pool *pool); 420 struct svc_pool *pool, int node);
409void svc_exit_thread(struct svc_rqst *); 421void svc_exit_thread(struct svc_rqst *);
410struct svc_serv * svc_create_pooled(struct svc_program *, unsigned int, 422struct svc_serv * svc_create_pooled(struct svc_program *, unsigned int,
411 void (*shutdown)(struct svc_serv *), 423 void (*shutdown)(struct svc_serv *),
diff --git a/include/linux/suspend.h b/include/linux/suspend.h
index 6bbcef22e105..57a692432f8a 100644
--- a/include/linux/suspend.h
+++ b/include/linux/suspend.h
@@ -8,15 +8,18 @@
8#include <linux/mm.h> 8#include <linux/mm.h>
9#include <asm/errno.h> 9#include <asm/errno.h>
10 10
11#if defined(CONFIG_PM_SLEEP) && defined(CONFIG_VT) && defined(CONFIG_VT_CONSOLE) 11#ifdef CONFIG_VT
12extern void pm_set_vt_switch(int); 12extern void pm_set_vt_switch(int);
13extern int pm_prepare_console(void);
14extern void pm_restore_console(void);
15#else 13#else
16static inline void pm_set_vt_switch(int do_switch) 14static inline void pm_set_vt_switch(int do_switch)
17{ 15{
18} 16}
17#endif
19 18
19#ifdef CONFIG_VT_CONSOLE_SLEEP
20extern int pm_prepare_console(void);
21extern void pm_restore_console(void);
22#else
20static inline int pm_prepare_console(void) 23static inline int pm_prepare_console(void)
21{ 24{
22 return 0; 25 return 0;
@@ -34,6 +37,58 @@ typedef int __bitwise suspend_state_t;
34#define PM_SUSPEND_MEM ((__force suspend_state_t) 3) 37#define PM_SUSPEND_MEM ((__force suspend_state_t) 3)
35#define PM_SUSPEND_MAX ((__force suspend_state_t) 4) 38#define PM_SUSPEND_MAX ((__force suspend_state_t) 4)
36 39
40enum suspend_stat_step {
41 SUSPEND_FREEZE = 1,
42 SUSPEND_PREPARE,
43 SUSPEND_SUSPEND,
44 SUSPEND_SUSPEND_NOIRQ,
45 SUSPEND_RESUME_NOIRQ,
46 SUSPEND_RESUME
47};
48
49struct suspend_stats {
50 int success;
51 int fail;
52 int failed_freeze;
53 int failed_prepare;
54 int failed_suspend;
55 int failed_suspend_noirq;
56 int failed_resume;
57 int failed_resume_noirq;
58#define REC_FAILED_NUM 2
59 int last_failed_dev;
60 char failed_devs[REC_FAILED_NUM][40];
61 int last_failed_errno;
62 int errno[REC_FAILED_NUM];
63 int last_failed_step;
64 enum suspend_stat_step failed_steps[REC_FAILED_NUM];
65};
66
67extern struct suspend_stats suspend_stats;
68
69static inline void dpm_save_failed_dev(const char *name)
70{
71 strlcpy(suspend_stats.failed_devs[suspend_stats.last_failed_dev],
72 name,
73 sizeof(suspend_stats.failed_devs[0]));
74 suspend_stats.last_failed_dev++;
75 suspend_stats.last_failed_dev %= REC_FAILED_NUM;
76}
77
78static inline void dpm_save_failed_errno(int err)
79{
80 suspend_stats.errno[suspend_stats.last_failed_errno] = err;
81 suspend_stats.last_failed_errno++;
82 suspend_stats.last_failed_errno %= REC_FAILED_NUM;
83}
84
85static inline void dpm_save_failed_step(enum suspend_stat_step step)
86{
87 suspend_stats.failed_steps[suspend_stats.last_failed_step] = step;
88 suspend_stats.last_failed_step++;
89 suspend_stats.last_failed_step %= REC_FAILED_NUM;
90}
91
37/** 92/**
38 * struct platform_suspend_ops - Callbacks for managing platform dependent 93 * struct platform_suspend_ops - Callbacks for managing platform dependent
39 * system sleep states. 94 * system sleep states.
@@ -334,4 +389,38 @@ static inline void unlock_system_sleep(void)
334} 389}
335#endif 390#endif
336 391
392#ifdef CONFIG_ARCH_SAVE_PAGE_KEYS
393/*
394 * The ARCH_SAVE_PAGE_KEYS functions can be used by an architecture
395 * to save/restore additional information to/from the array of page
396 * frame numbers in the hibernation image. For s390 this is used to
397 * save and restore the storage key for each page that is included
398 * in the hibernation image.
399 */
400unsigned long page_key_additional_pages(unsigned long pages);
401int page_key_alloc(unsigned long pages);
402void page_key_free(void);
403void page_key_read(unsigned long *pfn);
404void page_key_memorize(unsigned long *pfn);
405void page_key_write(void *address);
406
407#else /* !CONFIG_ARCH_SAVE_PAGE_KEYS */
408
409static inline unsigned long page_key_additional_pages(unsigned long pages)
410{
411 return 0;
412}
413
414static inline int page_key_alloc(unsigned long pages)
415{
416 return 0;
417}
418
419static inline void page_key_free(void) {}
420static inline void page_key_read(unsigned long *pfn) {}
421static inline void page_key_memorize(unsigned long *pfn) {}
422static inline void page_key_write(void *address) {}
423
424#endif /* !CONFIG_ARCH_SAVE_PAGE_KEYS */
425
337#endif /* _LINUX_SUSPEND_H */ 426#endif /* _LINUX_SUSPEND_H */
diff --git a/include/linux/swap.h b/include/linux/swap.h
index c71f84bb62ec..1e22e126d2ac 100644
--- a/include/linux/swap.h
+++ b/include/linux/swap.h
@@ -243,15 +243,10 @@ static inline void lru_cache_add_file(struct page *page)
243 __lru_cache_add(page, LRU_INACTIVE_FILE); 243 __lru_cache_add(page, LRU_INACTIVE_FILE);
244} 244}
245 245
246/* LRU Isolation modes. */
247#define ISOLATE_INACTIVE 0 /* Isolate inactive pages. */
248#define ISOLATE_ACTIVE 1 /* Isolate active pages. */
249#define ISOLATE_BOTH 2 /* Isolate both active and inactive pages. */
250
251/* linux/mm/vmscan.c */ 246/* linux/mm/vmscan.c */
252extern unsigned long try_to_free_pages(struct zonelist *zonelist, int order, 247extern unsigned long try_to_free_pages(struct zonelist *zonelist, int order,
253 gfp_t gfp_mask, nodemask_t *mask); 248 gfp_t gfp_mask, nodemask_t *mask);
254extern int __isolate_lru_page(struct page *page, int mode, int file); 249extern int __isolate_lru_page(struct page *page, isolate_mode_t mode, int file);
255extern unsigned long try_to_free_mem_cgroup_pages(struct mem_cgroup *mem, 250extern unsigned long try_to_free_mem_cgroup_pages(struct mem_cgroup *mem,
256 gfp_t gfp_mask, bool noswap); 251 gfp_t gfp_mask, bool noswap);
257extern unsigned long mem_cgroup_shrink_node_zone(struct mem_cgroup *mem, 252extern unsigned long mem_cgroup_shrink_node_zone(struct mem_cgroup *mem,
diff --git a/include/linux/syscalls.h b/include/linux/syscalls.h
index 1ff0ec2a5e8d..86a24b1166d1 100644
--- a/include/linux/syscalls.h
+++ b/include/linux/syscalls.h
@@ -844,4 +844,17 @@ asmlinkage long sys_open_by_handle_at(int mountdirfd,
844 struct file_handle __user *handle, 844 struct file_handle __user *handle,
845 int flags); 845 int flags);
846asmlinkage long sys_setns(int fd, int nstype); 846asmlinkage long sys_setns(int fd, int nstype);
847asmlinkage long sys_process_vm_readv(pid_t pid,
848 const struct iovec __user *lvec,
849 unsigned long liovcnt,
850 const struct iovec __user *rvec,
851 unsigned long riovcnt,
852 unsigned long flags);
853asmlinkage long sys_process_vm_writev(pid_t pid,
854 const struct iovec __user *lvec,
855 unsigned long liovcnt,
856 const struct iovec __user *rvec,
857 unsigned long riovcnt,
858 unsigned long flags);
859
847#endif 860#endif
diff --git a/include/linux/sysctl.h b/include/linux/sysctl.h
index 11684d9e6bd2..9a1ec10fd504 100644
--- a/include/linux/sysctl.h
+++ b/include/linux/sysctl.h
@@ -435,7 +435,7 @@ enum {
435 NET_IPV4_ROUTE_MAX_SIZE=5, 435 NET_IPV4_ROUTE_MAX_SIZE=5,
436 NET_IPV4_ROUTE_GC_MIN_INTERVAL=6, 436 NET_IPV4_ROUTE_GC_MIN_INTERVAL=6,
437 NET_IPV4_ROUTE_GC_TIMEOUT=7, 437 NET_IPV4_ROUTE_GC_TIMEOUT=7,
438 NET_IPV4_ROUTE_GC_INTERVAL=8, 438 NET_IPV4_ROUTE_GC_INTERVAL=8, /* obsolete since 2.6.38 */
439 NET_IPV4_ROUTE_REDIRECT_LOAD=9, 439 NET_IPV4_ROUTE_REDIRECT_LOAD=9,
440 NET_IPV4_ROUTE_REDIRECT_NUMBER=10, 440 NET_IPV4_ROUTE_REDIRECT_NUMBER=10,
441 NET_IPV4_ROUTE_REDIRECT_SILENCE=11, 441 NET_IPV4_ROUTE_REDIRECT_SILENCE=11,
diff --git a/include/linux/sysfs.h b/include/linux/sysfs.h
index d7d2f2158142..dac0859e6440 100644
--- a/include/linux/sysfs.h
+++ b/include/linux/sysfs.h
@@ -112,6 +112,7 @@ struct bin_attribute {
112struct sysfs_ops { 112struct sysfs_ops {
113 ssize_t (*show)(struct kobject *, struct attribute *,char *); 113 ssize_t (*show)(struct kobject *, struct attribute *,char *);
114 ssize_t (*store)(struct kobject *,struct attribute *,const char *, size_t); 114 ssize_t (*store)(struct kobject *,struct attribute *,const char *, size_t);
115 const void *(*namespace)(struct kobject *, const struct attribute *);
115}; 116};
116 117
117struct sysfs_dirent; 118struct sysfs_dirent;
diff --git a/include/linux/tcp.h b/include/linux/tcp.h
index 531ede8006d9..7f59ee946983 100644
--- a/include/linux/tcp.h
+++ b/include/linux/tcp.h
@@ -111,7 +111,8 @@ enum {
111#define TCPI_OPT_TIMESTAMPS 1 111#define TCPI_OPT_TIMESTAMPS 1
112#define TCPI_OPT_SACK 2 112#define TCPI_OPT_SACK 2
113#define TCPI_OPT_WSCALE 4 113#define TCPI_OPT_WSCALE 4
114#define TCPI_OPT_ECN 8 114#define TCPI_OPT_ECN 8 /* ECN was negociated at TCP session init */
115#define TCPI_OPT_ECN_SEEN 16 /* we received at least one packet with ECT */
115 116
116enum tcp_ca_state { 117enum tcp_ca_state {
117 TCP_CA_Open = 0, 118 TCP_CA_Open = 0,
@@ -379,6 +380,10 @@ struct tcp_sock {
379 u32 snd_cwnd_clamp; /* Do not allow snd_cwnd to grow above this */ 380 u32 snd_cwnd_clamp; /* Do not allow snd_cwnd to grow above this */
380 u32 snd_cwnd_used; 381 u32 snd_cwnd_used;
381 u32 snd_cwnd_stamp; 382 u32 snd_cwnd_stamp;
383 u32 prior_cwnd; /* Congestion window at start of Recovery. */
384 u32 prr_delivered; /* Number of newly delivered packets to
385 * receiver in Recovery. */
386 u32 prr_out; /* Total number of pkts sent during Recovery. */
382 387
383 u32 rcv_wnd; /* Current receiver window */ 388 u32 rcv_wnd; /* Current receiver window */
384 u32 write_seq; /* Tail(+1) of data held in tcp send buffer */ 389 u32 write_seq; /* Tail(+1) of data held in tcp send buffer */
diff --git a/include/linux/tipc_config.h b/include/linux/tipc_config.h
index 0db239590b4d..9730b0e51e46 100644
--- a/include/linux/tipc_config.h
+++ b/include/linux/tipc_config.h
@@ -41,6 +41,10 @@
41#include <linux/string.h> 41#include <linux/string.h>
42#include <asm/byteorder.h> 42#include <asm/byteorder.h>
43 43
44#ifndef __KERNEL__
45#include <arpa/inet.h> /* for ntohs etc. */
46#endif
47
44/* 48/*
45 * Configuration 49 * Configuration
46 * 50 *
diff --git a/include/linux/trace_clock.h b/include/linux/trace_clock.h
index 7a8130384087..4eb490237d4c 100644
--- a/include/linux/trace_clock.h
+++ b/include/linux/trace_clock.h
@@ -15,5 +15,6 @@
15extern u64 notrace trace_clock_local(void); 15extern u64 notrace trace_clock_local(void);
16extern u64 notrace trace_clock(void); 16extern u64 notrace trace_clock(void);
17extern u64 notrace trace_clock_global(void); 17extern u64 notrace trace_clock_global(void);
18extern u64 notrace trace_clock_counter(void);
18 19
19#endif /* _LINUX_TRACE_CLOCK_H */ 20#endif /* _LINUX_TRACE_CLOCK_H */
diff --git a/include/linux/trace_seq.h b/include/linux/trace_seq.h
index 5cf397ceb726..7dadc3df0c77 100644
--- a/include/linux/trace_seq.h
+++ b/include/linux/trace_seq.h
@@ -29,10 +29,10 @@ trace_seq_init(struct trace_seq *s)
29 * Currently only defined when tracing is enabled. 29 * Currently only defined when tracing is enabled.
30 */ 30 */
31#ifdef CONFIG_TRACING 31#ifdef CONFIG_TRACING
32extern int trace_seq_printf(struct trace_seq *s, const char *fmt, ...) 32extern __printf(2, 3)
33 __attribute__ ((format (printf, 2, 3))); 33int trace_seq_printf(struct trace_seq *s, const char *fmt, ...);
34extern int trace_seq_vprintf(struct trace_seq *s, const char *fmt, va_list args) 34extern __printf(2, 0)
35 __attribute__ ((format (printf, 2, 0))); 35int trace_seq_vprintf(struct trace_seq *s, const char *fmt, va_list args);
36extern int 36extern int
37trace_seq_bprintf(struct trace_seq *s, const char *fmt, const u32 *binary); 37trace_seq_bprintf(struct trace_seq *s, const char *fmt, const u32 *binary);
38extern int trace_print_seq(struct seq_file *m, struct trace_seq *s); 38extern int trace_print_seq(struct seq_file *m, struct trace_seq *s);
diff --git a/include/linux/tracepoint.h b/include/linux/tracepoint.h
index d530a4460a0b..df0a779c1bbd 100644
--- a/include/linux/tracepoint.h
+++ b/include/linux/tracepoint.h
@@ -54,8 +54,18 @@ extern int tracepoint_probe_unregister_noupdate(const char *name, void *probe,
54 void *data); 54 void *data);
55extern void tracepoint_probe_update_all(void); 55extern void tracepoint_probe_update_all(void);
56 56
57#ifdef CONFIG_MODULES
58struct tp_module {
59 struct list_head list;
60 unsigned int num_tracepoints;
61 struct tracepoint * const *tracepoints_ptrs;
62};
63#endif /* CONFIG_MODULES */
64
57struct tracepoint_iter { 65struct tracepoint_iter {
58 struct module *module; 66#ifdef CONFIG_MODULES
67 struct tp_module *module;
68#endif /* CONFIG_MODULES */
59 struct tracepoint * const *tracepoint; 69 struct tracepoint * const *tracepoint;
60}; 70};
61 71
@@ -63,8 +73,6 @@ extern void tracepoint_iter_start(struct tracepoint_iter *iter);
63extern void tracepoint_iter_next(struct tracepoint_iter *iter); 73extern void tracepoint_iter_next(struct tracepoint_iter *iter);
64extern void tracepoint_iter_stop(struct tracepoint_iter *iter); 74extern void tracepoint_iter_stop(struct tracepoint_iter *iter);
65extern void tracepoint_iter_reset(struct tracepoint_iter *iter); 75extern void tracepoint_iter_reset(struct tracepoint_iter *iter);
66extern int tracepoint_get_iter_range(struct tracepoint * const **tracepoint,
67 struct tracepoint * const *begin, struct tracepoint * const *end);
68 76
69/* 77/*
70 * tracepoint_synchronize_unregister must be called between the last tracepoint 78 * tracepoint_synchronize_unregister must be called between the last tracepoint
@@ -78,17 +86,6 @@ static inline void tracepoint_synchronize_unregister(void)
78 86
79#define PARAMS(args...) args 87#define PARAMS(args...) args
80 88
81#ifdef CONFIG_TRACEPOINTS
82extern
83void tracepoint_update_probe_range(struct tracepoint * const *begin,
84 struct tracepoint * const *end);
85#else
86static inline
87void tracepoint_update_probe_range(struct tracepoint * const *begin,
88 struct tracepoint * const *end)
89{ }
90#endif /* CONFIG_TRACEPOINTS */
91
92#endif /* _LINUX_TRACEPOINT_H */ 89#endif /* _LINUX_TRACEPOINT_H */
93 90
94/* 91/*
diff --git a/include/linux/tty.h b/include/linux/tty.h
index 5f2ede82b3d6..5dbb3cb05a82 100644
--- a/include/linux/tty.h
+++ b/include/linux/tty.h
@@ -473,7 +473,9 @@ extern void proc_clear_tty(struct task_struct *p);
473extern struct tty_struct *get_current_tty(void); 473extern struct tty_struct *get_current_tty(void);
474extern void tty_default_fops(struct file_operations *fops); 474extern void tty_default_fops(struct file_operations *fops);
475extern struct tty_struct *alloc_tty_struct(void); 475extern struct tty_struct *alloc_tty_struct(void);
476extern int tty_add_file(struct tty_struct *tty, struct file *file); 476extern int tty_alloc_file(struct file *file);
477extern void tty_add_file(struct tty_struct *tty, struct file *file);
478extern void tty_free_file(struct file *file);
477extern void free_tty_struct(struct tty_struct *tty); 479extern void free_tty_struct(struct tty_struct *tty);
478extern void initialize_tty_struct(struct tty_struct *tty, 480extern void initialize_tty_struct(struct tty_struct *tty,
479 struct tty_driver *driver, int idx); 481 struct tty_driver *driver, int idx);
@@ -581,6 +583,8 @@ extern int __init tty_init(void);
581/* tty_ioctl.c */ 583/* tty_ioctl.c */
582extern int n_tty_ioctl_helper(struct tty_struct *tty, struct file *file, 584extern int n_tty_ioctl_helper(struct tty_struct *tty, struct file *file,
583 unsigned int cmd, unsigned long arg); 585 unsigned int cmd, unsigned long arg);
586extern long n_tty_compat_ioctl_helper(struct tty_struct *tty, struct file *file,
587 unsigned int cmd, unsigned long arg);
584 588
585/* serial.c */ 589/* serial.c */
586 590
@@ -602,8 +606,24 @@ extern long vt_compat_ioctl(struct tty_struct *tty,
602/* functions for preparation of BKL removal */ 606/* functions for preparation of BKL removal */
603extern void __lockfunc tty_lock(void) __acquires(tty_lock); 607extern void __lockfunc tty_lock(void) __acquires(tty_lock);
604extern void __lockfunc tty_unlock(void) __releases(tty_lock); 608extern void __lockfunc tty_unlock(void) __releases(tty_lock);
605extern struct task_struct *__big_tty_mutex_owner; 609
606#define tty_locked() (current == __big_tty_mutex_owner) 610/*
611 * this shall be called only from where BTM is held (like close)
612 *
613 * We need this to ensure nobody waits for us to finish while we are waiting.
614 * Without this we were encountering system stalls.
615 *
616 * This should be indeed removed with BTM removal later.
617 *
618 * Locking: BTM required. Nobody is allowed to hold port->mutex.
619 */
620static inline void tty_wait_until_sent_from_close(struct tty_struct *tty,
621 long timeout)
622{
623 tty_unlock(); /* tty->ops->close holds the BTM, drop it while waiting */
624 tty_wait_until_sent(tty, timeout);
625 tty_lock();
626}
607 627
608/* 628/*
609 * wait_event_interruptible_tty -- wait for a condition with the tty lock held 629 * wait_event_interruptible_tty -- wait for a condition with the tty lock held
diff --git a/include/linux/types.h b/include/linux/types.h
index 176da8c1fbb1..57a97234bec1 100644
--- a/include/linux/types.h
+++ b/include/linux/types.h
@@ -238,6 +238,16 @@ struct ustat {
238 char f_fpack[6]; 238 char f_fpack[6];
239}; 239};
240 240
241/**
242 * struct rcu_head - callback structure for use with RCU
243 * @next: next update requests in a list
244 * @func: actual update function to call after the grace period.
245 */
246struct rcu_head {
247 struct rcu_head *next;
248 void (*func)(struct rcu_head *head);
249};
250
241#endif /* __KERNEL__ */ 251#endif /* __KERNEL__ */
242#endif /* __ASSEMBLY__ */ 252#endif /* __ASSEMBLY__ */
243#endif /* _LINUX_TYPES_H */ 253#endif /* _LINUX_TYPES_H */
diff --git a/include/linux/uinput.h b/include/linux/uinput.h
index d28c726ede4f..2aa2881b0df9 100644
--- a/include/linux/uinput.h
+++ b/include/linux/uinput.h
@@ -68,7 +68,7 @@ struct uinput_device {
68 unsigned char head; 68 unsigned char head;
69 unsigned char tail; 69 unsigned char tail;
70 struct input_event buff[UINPUT_BUFFER_SIZE]; 70 struct input_event buff[UINPUT_BUFFER_SIZE];
71 int ff_effects_max; 71 unsigned int ff_effects_max;
72 72
73 struct uinput_request *requests[UINPUT_NUM_REQUESTS]; 73 struct uinput_request *requests[UINPUT_NUM_REQUESTS];
74 wait_queue_head_t requests_waitq; 74 wait_queue_head_t requests_waitq;
diff --git a/include/linux/uio_driver.h b/include/linux/uio_driver.h
index 665517c05eaf..fd99ff9298c6 100644
--- a/include/linux/uio_driver.h
+++ b/include/linux/uio_driver.h
@@ -23,7 +23,10 @@ struct uio_map;
23/** 23/**
24 * struct uio_mem - description of a UIO memory region 24 * struct uio_mem - description of a UIO memory region
25 * @name: name of the memory region for identification 25 * @name: name of the memory region for identification
26 * @addr: address of the device's memory 26 * @addr: address of the device's memory (phys_addr is used since
27 * addr can be logical, virtual, or physical & phys_addr_t
28 * should always be large enough to handle any of the
29 * address types)
27 * @size: size of IO 30 * @size: size of IO
28 * @memtype: type of memory addr points to 31 * @memtype: type of memory addr points to
29 * @internal_addr: ioremap-ped version of addr, for driver internal use 32 * @internal_addr: ioremap-ped version of addr, for driver internal use
@@ -31,7 +34,7 @@ struct uio_map;
31 */ 34 */
32struct uio_mem { 35struct uio_mem {
33 const char *name; 36 const char *name;
34 unsigned long addr; 37 phys_addr_t addr;
35 unsigned long size; 38 unsigned long size;
36 int memtype; 39 int memtype;
37 void __iomem *internal_addr; 40 void __iomem *internal_addr;
diff --git a/include/linux/un.h b/include/linux/un.h
index 45561c564b8e..3ed3e46c1b1f 100644
--- a/include/linux/un.h
+++ b/include/linux/un.h
@@ -1,10 +1,12 @@
1#ifndef _LINUX_UN_H 1#ifndef _LINUX_UN_H
2#define _LINUX_UN_H 2#define _LINUX_UN_H
3 3
4#include <linux/socket.h>
5
4#define UNIX_PATH_MAX 108 6#define UNIX_PATH_MAX 108
5 7
6struct sockaddr_un { 8struct sockaddr_un {
7 sa_family_t sun_family; /* AF_UNIX */ 9 __kernel_sa_family_t sun_family; /* AF_UNIX */
8 char sun_path[UNIX_PATH_MAX]; /* pathname */ 10 char sun_path[UNIX_PATH_MAX]; /* pathname */
9}; 11};
10 12
diff --git a/include/linux/usb.h b/include/linux/usb.h
index 73c7df489607..6f49a1b39fa6 100644
--- a/include/linux/usb.h
+++ b/include/linux/usb.h
@@ -292,6 +292,16 @@ struct usb_host_config {
292 int extralen; 292 int extralen;
293}; 293};
294 294
295/* USB2.0 and USB3.0 device BOS descriptor set */
296struct usb_host_bos {
297 struct usb_bos_descriptor *desc;
298
299 /* wireless cap descriptor is handled by wusb */
300 struct usb_ext_cap_descriptor *ext_cap;
301 struct usb_ss_cap_descriptor *ss_cap;
302 struct usb_ss_container_id_descriptor *ss_id;
303};
304
295int __usb_get_extra_descriptor(char *buffer, unsigned size, 305int __usb_get_extra_descriptor(char *buffer, unsigned size,
296 unsigned char type, void **ptr); 306 unsigned char type, void **ptr);
297#define usb_get_extra_descriptor(ifpoint, type, ptr) \ 307#define usb_get_extra_descriptor(ifpoint, type, ptr) \
@@ -381,6 +391,7 @@ struct usb_tt;
381 * @ep0: endpoint 0 data (default control pipe) 391 * @ep0: endpoint 0 data (default control pipe)
382 * @dev: generic device interface 392 * @dev: generic device interface
383 * @descriptor: USB device descriptor 393 * @descriptor: USB device descriptor
394 * @bos: USB device BOS descriptor set
384 * @config: all of the device's configs 395 * @config: all of the device's configs
385 * @actconfig: the active configuration 396 * @actconfig: the active configuration
386 * @ep_in: array of IN endpoints 397 * @ep_in: array of IN endpoints
@@ -399,6 +410,9 @@ struct usb_tt;
399 * FIXME -- complete doc 410 * FIXME -- complete doc
400 * @authenticated: Crypto authentication passed 411 * @authenticated: Crypto authentication passed
401 * @wusb: device is Wireless USB 412 * @wusb: device is Wireless USB
413 * @lpm_capable: device supports LPM
414 * @usb2_hw_lpm_capable: device can perform USB2 hardware LPM
415 * @usb2_hw_lpm_enabled: USB2 hardware LPM enabled
402 * @string_langid: language ID for strings 416 * @string_langid: language ID for strings
403 * @product: iProduct string, if present (static) 417 * @product: iProduct string, if present (static)
404 * @manufacturer: iManufacturer string, if present (static) 418 * @manufacturer: iManufacturer string, if present (static)
@@ -442,6 +456,7 @@ struct usb_device {
442 struct device dev; 456 struct device dev;
443 457
444 struct usb_device_descriptor descriptor; 458 struct usb_device_descriptor descriptor;
459 struct usb_host_bos *bos;
445 struct usb_host_config *config; 460 struct usb_host_config *config;
446 461
447 struct usb_host_config *actconfig; 462 struct usb_host_config *actconfig;
@@ -460,6 +475,9 @@ struct usb_device {
460 unsigned authorized:1; 475 unsigned authorized:1;
461 unsigned authenticated:1; 476 unsigned authenticated:1;
462 unsigned wusb:1; 477 unsigned wusb:1;
478 unsigned lpm_capable:1;
479 unsigned usb2_hw_lpm_capable:1;
480 unsigned usb2_hw_lpm_enabled:1;
463 int string_langid; 481 int string_langid;
464 482
465 /* static strings from the device */ 483 /* static strings from the device */
@@ -1574,7 +1592,7 @@ usb_maxpacket(struct usb_device *udev, int pipe, int is_out)
1574 return 0; 1592 return 0;
1575 1593
1576 /* NOTE: only 0x07ff bits are for packet size... */ 1594 /* NOTE: only 0x07ff bits are for packet size... */
1577 return le16_to_cpu(ep->desc.wMaxPacketSize); 1595 return usb_endpoint_maxp(&ep->desc);
1578} 1596}
1579 1597
1580/* ----------------------------------------------------------------------- */ 1598/* ----------------------------------------------------------------------- */
diff --git a/include/linux/usb/Kbuild b/include/linux/usb/Kbuild
index ed91fb62674b..b607f3532e88 100644
--- a/include/linux/usb/Kbuild
+++ b/include/linux/usb/Kbuild
@@ -7,3 +7,4 @@ header-y += gadgetfs.h
7header-y += midi.h 7header-y += midi.h
8header-y += g_printer.h 8header-y += g_printer.h
9header-y += tmc.h 9header-y += tmc.h
10header-y += video.h
diff --git a/include/linux/usb/ch9.h b/include/linux/usb/ch9.h
index 0fd3fbdd8283..d5da6c68c250 100644
--- a/include/linux/usb/ch9.h
+++ b/include/linux/usb/ch9.h
@@ -34,6 +34,7 @@
34#define __LINUX_USB_CH9_H 34#define __LINUX_USB_CH9_H
35 35
36#include <linux/types.h> /* __u8 etc */ 36#include <linux/types.h> /* __u8 etc */
37#include <asm/byteorder.h> /* le16_to_cpu */
37 38
38/*-------------------------------------------------------------------------*/ 39/*-------------------------------------------------------------------------*/
39 40
@@ -143,6 +144,11 @@
143#define USB_INTRF_FUNC_SUSPEND 0 /* function suspend */ 144#define USB_INTRF_FUNC_SUSPEND 0 /* function suspend */
144 145
145#define USB_INTR_FUNC_SUSPEND_OPT_MASK 0xFF00 146#define USB_INTR_FUNC_SUSPEND_OPT_MASK 0xFF00
147/*
148 * Suspend Options, Table 9-7 USB 3.0 spec
149 */
150#define USB_INTRF_FUNC_SUSPEND_LP (1 << (8 + 0))
151#define USB_INTRF_FUNC_SUSPEND_RW (1 << (8 + 1))
146 152
147#define USB_ENDPOINT_HALT 0 /* IN/OUT will STALL */ 153#define USB_ENDPOINT_HALT 0 /* IN/OUT will STALL */
148 154
@@ -377,12 +383,6 @@ struct usb_endpoint_descriptor {
377#define USB_ENDPOINT_NUMBER_MASK 0x0f /* in bEndpointAddress */ 383#define USB_ENDPOINT_NUMBER_MASK 0x0f /* in bEndpointAddress */
378#define USB_ENDPOINT_DIR_MASK 0x80 384#define USB_ENDPOINT_DIR_MASK 0x80
379 385
380#define USB_ENDPOINT_SYNCTYPE 0x0c
381#define USB_ENDPOINT_SYNC_NONE (0 << 2)
382#define USB_ENDPOINT_SYNC_ASYNC (1 << 2)
383#define USB_ENDPOINT_SYNC_ADAPTIVE (2 << 2)
384#define USB_ENDPOINT_SYNC_SYNC (3 << 2)
385
386#define USB_ENDPOINT_XFERTYPE_MASK 0x03 /* in bmAttributes */ 386#define USB_ENDPOINT_XFERTYPE_MASK 0x03 /* in bmAttributes */
387#define USB_ENDPOINT_XFER_CONTROL 0 387#define USB_ENDPOINT_XFER_CONTROL 0
388#define USB_ENDPOINT_XFER_ISOC 1 388#define USB_ENDPOINT_XFER_ISOC 1
@@ -390,6 +390,17 @@ struct usb_endpoint_descriptor {
390#define USB_ENDPOINT_XFER_INT 3 390#define USB_ENDPOINT_XFER_INT 3
391#define USB_ENDPOINT_MAX_ADJUSTABLE 0x80 391#define USB_ENDPOINT_MAX_ADJUSTABLE 0x80
392 392
393#define USB_ENDPOINT_SYNCTYPE 0x0c
394#define USB_ENDPOINT_SYNC_NONE (0 << 2)
395#define USB_ENDPOINT_SYNC_ASYNC (1 << 2)
396#define USB_ENDPOINT_SYNC_ADAPTIVE (2 << 2)
397#define USB_ENDPOINT_SYNC_SYNC (3 << 2)
398
399#define USB_ENDPOINT_USAGE_MASK 0x30
400#define USB_ENDPOINT_USAGE_DATA 0x00
401#define USB_ENDPOINT_USAGE_FEEDBACK 0x10
402#define USB_ENDPOINT_USAGE_IMPLICIT_FB 0x20 /* Implicit feedback Data endpoint */
403
393/*-------------------------------------------------------------------------*/ 404/*-------------------------------------------------------------------------*/
394 405
395/** 406/**
@@ -570,6 +581,17 @@ static inline int usb_endpoint_is_isoc_out(
570 return usb_endpoint_xfer_isoc(epd) && usb_endpoint_dir_out(epd); 581 return usb_endpoint_xfer_isoc(epd) && usb_endpoint_dir_out(epd);
571} 582}
572 583
584/**
585 * usb_endpoint_maxp - get endpoint's max packet size
586 * @epd: endpoint to be checked
587 *
588 * Returns @epd's max packet
589 */
590static inline int usb_endpoint_maxp(const struct usb_endpoint_descriptor *epd)
591{
592 return le16_to_cpu(epd->wMaxPacketSize);
593}
594
573/*-------------------------------------------------------------------------*/ 595/*-------------------------------------------------------------------------*/
574 596
575/* USB_DT_SS_ENDPOINT_COMP: SuperSpeed Endpoint Companion descriptor */ 597/* USB_DT_SS_ENDPOINT_COMP: SuperSpeed Endpoint Companion descriptor */
@@ -851,6 +873,18 @@ enum usb_device_speed {
851 USB_SPEED_SUPER, /* usb 3.0 */ 873 USB_SPEED_SUPER, /* usb 3.0 */
852}; 874};
853 875
876#ifdef __KERNEL__
877
878/**
879 * usb_speed_string() - Returns human readable-name of the speed.
880 * @speed: The speed to return human-readable name for. If it's not
881 * any of the speeds defined in usb_device_speed enum, string for
882 * USB_SPEED_UNKNOWN will be returned.
883 */
884extern const char *usb_speed_string(enum usb_device_speed speed);
885
886#endif
887
854enum usb_device_state { 888enum usb_device_state {
855 /* NOTATTACHED isn't in the USB spec, and this state acts 889 /* NOTATTACHED isn't in the USB spec, and this state acts
856 * the same as ATTACHED ... but it's clearer this way. 890 * the same as ATTACHED ... but it's clearer this way.
diff --git a/include/linux/usb/gadget.h b/include/linux/usb/gadget.h
index 087f4b931833..1d3a67523ffc 100644
--- a/include/linux/usb/gadget.h
+++ b/include/linux/usb/gadget.h
@@ -437,9 +437,9 @@ static inline void usb_ep_fifo_flush(struct usb_ep *ep)
437 437
438struct usb_dcd_config_params { 438struct usb_dcd_config_params {
439 __u8 bU1devExitLat; /* U1 Device exit Latency */ 439 __u8 bU1devExitLat; /* U1 Device exit Latency */
440#define USB_DEFULT_U1_DEV_EXIT_LAT 0x01 /* Less then 1 microsec */ 440#define USB_DEFAULT_U1_DEV_EXIT_LAT 0x01 /* Less then 1 microsec */
441 __le16 bU2DevExitLat; /* U2 Device exit Latency */ 441 __le16 bU2DevExitLat; /* U2 Device exit Latency */
442#define USB_DEFULT_U2_DEV_EXIT_LAT 0x1F4 /* Less then 500 microsec */ 442#define USB_DEFAULT_U2_DEV_EXIT_LAT 0x1F4 /* Less then 500 microsec */
443}; 443};
444 444
445 445
diff --git a/include/linux/usb/hcd.h b/include/linux/usb/hcd.h
index 0097136ba45d..03354d557b79 100644
--- a/include/linux/usb/hcd.h
+++ b/include/linux/usb/hcd.h
@@ -178,7 +178,7 @@ struct usb_hcd {
178 * this structure. 178 * this structure.
179 */ 179 */
180 unsigned long hcd_priv[0] 180 unsigned long hcd_priv[0]
181 __attribute__ ((aligned(sizeof(unsigned long)))); 181 __attribute__ ((aligned(sizeof(s64))));
182}; 182};
183 183
184/* 2.4 does this a bit differently ... */ 184/* 2.4 does this a bit differently ... */
@@ -343,6 +343,7 @@ struct hc_driver {
343 * address is set 343 * address is set
344 */ 344 */
345 int (*update_device)(struct usb_hcd *, struct usb_device *); 345 int (*update_device)(struct usb_hcd *, struct usb_device *);
346 int (*set_usb2_hw_lpm)(struct usb_hcd *, struct usb_device *, int);
346}; 347};
347 348
348extern int usb_hcd_link_urb_to_ep(struct usb_hcd *hcd, struct urb *urb); 349extern int usb_hcd_link_urb_to_ep(struct usb_hcd *hcd, struct urb *urb);
diff --git a/include/linux/usb/r8a66597.h b/include/linux/usb/r8a66597.h
index b6b8660d0c68..55805f9dcf21 100644
--- a/include/linux/usb/r8a66597.h
+++ b/include/linux/usb/r8a66597.h
@@ -48,6 +48,9 @@ struct r8a66597_platdata {
48 48
49 /* (external controller only) set one = WR0_N shorted to WR1_N */ 49 /* (external controller only) set one = WR0_N shorted to WR1_N */
50 unsigned wr0_shorted_to_wr1:1; 50 unsigned wr0_shorted_to_wr1:1;
51
52 /* set one = using SUDMAC */
53 unsigned sudmac:1;
51}; 54};
52 55
53/* Register definitions */ 56/* Register definitions */
@@ -417,5 +420,62 @@ struct r8a66597_platdata {
417#define USBSPD 0x00C0 420#define USBSPD 0x00C0
418#define RTPORT 0x0001 421#define RTPORT 0x0001
419 422
423/* SUDMAC registers */
424#define CH0CFG 0x00
425#define CH1CFG 0x04
426#define CH0BA 0x10
427#define CH1BA 0x14
428#define CH0BBC 0x18
429#define CH1BBC 0x1C
430#define CH0CA 0x20
431#define CH1CA 0x24
432#define CH0CBC 0x28
433#define CH1CBC 0x2C
434#define CH0DEN 0x30
435#define CH1DEN 0x34
436#define DSTSCLR 0x38
437#define DBUFCTRL 0x3C
438#define DINTCTRL 0x40
439#define DINTSTS 0x44
440#define DINTSTSCLR 0x48
441#define CH0SHCTRL 0x50
442#define CH1SHCTRL 0x54
443
444/* SUDMAC Configuration Registers */
445#define SENDBUFM 0x1000 /* b12: Transmit Buffer Mode */
446#define RCVENDM 0x0100 /* b8: Receive Data Transfer End Mode */
447#define LBA_WAIT 0x0030 /* b5-4: Local Bus Access Wait */
448
449/* DMA Enable Registers */
450#define DEN 0x0001 /* b1: DMA Transfer Enable */
451
452/* DMA Status Clear Register */
453#define CH1STCLR 0x0002 /* b2: Ch1 DMA Status Clear */
454#define CH0STCLR 0x0001 /* b1: Ch0 DMA Status Clear */
455
456/* DMA Buffer Control Register */
457#define CH1BUFW 0x0200 /* b9: Ch1 DMA Buffer Data Transfer Enable */
458#define CH0BUFW 0x0100 /* b8: Ch0 DMA Buffer Data Transfer Enable */
459#define CH1BUFS 0x0002 /* b2: Ch1 DMA Buffer Data Status */
460#define CH0BUFS 0x0001 /* b1: Ch0 DMA Buffer Data Status */
461
462/* DMA Interrupt Control Register */
463#define CH1ERRE 0x0200 /* b9: Ch1 SHwy Res Err Detect Int Enable */
464#define CH0ERRE 0x0100 /* b8: Ch0 SHwy Res Err Detect Int Enable */
465#define CH1ENDE 0x0002 /* b2: Ch1 DMA Transfer End Int Enable */
466#define CH0ENDE 0x0001 /* b1: Ch0 DMA Transfer End Int Enable */
467
468/* DMA Interrupt Status Register */
469#define CH1ERRS 0x0200 /* b9: Ch1 SHwy Res Err Detect Int Status */
470#define CH0ERRS 0x0100 /* b8: Ch0 SHwy Res Err Detect Int Status */
471#define CH1ENDS 0x0002 /* b2: Ch1 DMA Transfer End Int Status */
472#define CH0ENDS 0x0001 /* b1: Ch0 DMA Transfer End Int Status */
473
474/* DMA Interrupt Status Clear Register */
475#define CH1ERRC 0x0200 /* b9: Ch1 SHwy Res Err Detect Int Stat Clear */
476#define CH0ERRC 0x0100 /* b8: Ch0 SHwy Res Err Detect Int Stat Clear */
477#define CH1ENDC 0x0002 /* b2: Ch1 DMA Transfer End Int Stat Clear */
478#define CH0ENDC 0x0001 /* b1: Ch0 DMA Transfer End Int Stat Clear */
479
420#endif /* __LINUX_USB_R8A66597_H */ 480#endif /* __LINUX_USB_R8A66597_H */
421 481
diff --git a/include/linux/usb/renesas_usbhs.h b/include/linux/usb/renesas_usbhs.h
index 8977431259c6..e5a40c318548 100644
--- a/include/linux/usb/renesas_usbhs.h
+++ b/include/linux/usb/renesas_usbhs.h
@@ -82,6 +82,13 @@ struct renesas_usbhs_platform_callback {
82 * get VBUS status function. 82 * get VBUS status function.
83 */ 83 */
84 int (*get_vbus)(struct platform_device *pdev); 84 int (*get_vbus)(struct platform_device *pdev);
85
86 /*
87 * option:
88 *
89 * VBUS control is needed for Host
90 */
91 int (*set_vbus)(struct platform_device *pdev, int enable);
85}; 92};
86 93
87/* 94/*
@@ -101,6 +108,8 @@ struct renesas_usbhs_driver_param {
101 * option: 108 * option:
102 * 109 *
103 * for BUSWAIT :: BWAIT 110 * for BUSWAIT :: BWAIT
111 * see
112 * renesas_usbhs/common.c :: usbhsc_set_buswait()
104 * */ 113 * */
105 int buswait_bwait; 114 int buswait_bwait;
106 115
@@ -127,6 +136,11 @@ struct renesas_usbhs_driver_param {
127 * pio <--> dma border. 136 * pio <--> dma border.
128 */ 137 */
129 int pio_dma_border; /* default is 64byte */ 138 int pio_dma_border; /* default is 64byte */
139
140 /*
141 * option:
142 */
143 u32 has_otg:1; /* for controlling PWEN/EXTLP */
130}; 144};
131 145
132/* 146/*
diff --git a/include/linux/videodev2.h b/include/linux/videodev2.h
index fca24cc50436..225560c1a10f 100644
--- a/include/linux/videodev2.h
+++ b/include/linux/videodev2.h
@@ -759,10 +759,10 @@ typedef __u64 v4l2_std_id;
759#define V4L2_STD_PAL_Nc ((v4l2_std_id)0x00000400) 759#define V4L2_STD_PAL_Nc ((v4l2_std_id)0x00000400)
760#define V4L2_STD_PAL_60 ((v4l2_std_id)0x00000800) 760#define V4L2_STD_PAL_60 ((v4l2_std_id)0x00000800)
761 761
762#define V4L2_STD_NTSC_M ((v4l2_std_id)0x00001000) 762#define V4L2_STD_NTSC_M ((v4l2_std_id)0x00001000) /* BTSC */
763#define V4L2_STD_NTSC_M_JP ((v4l2_std_id)0x00002000) 763#define V4L2_STD_NTSC_M_JP ((v4l2_std_id)0x00002000) /* EIA-J */
764#define V4L2_STD_NTSC_443 ((v4l2_std_id)0x00004000) 764#define V4L2_STD_NTSC_443 ((v4l2_std_id)0x00004000)
765#define V4L2_STD_NTSC_M_KR ((v4l2_std_id)0x00008000) 765#define V4L2_STD_NTSC_M_KR ((v4l2_std_id)0x00008000) /* FM A2 */
766 766
767#define V4L2_STD_SECAM_B ((v4l2_std_id)0x00010000) 767#define V4L2_STD_SECAM_B ((v4l2_std_id)0x00010000)
768#define V4L2_STD_SECAM_D ((v4l2_std_id)0x00020000) 768#define V4L2_STD_SECAM_D ((v4l2_std_id)0x00020000)
@@ -786,47 +786,86 @@ typedef __u64 v4l2_std_id;
786 v4l2-common.c should be fixed. 786 v4l2-common.c should be fixed.
787 */ 787 */
788 788
789/* some merged standards */ 789/*
790#define V4L2_STD_MN (V4L2_STD_PAL_M|V4L2_STD_PAL_N|V4L2_STD_PAL_Nc|V4L2_STD_NTSC) 790 * Some macros to merge video standards in order to make live easier for the
791#define V4L2_STD_B (V4L2_STD_PAL_B|V4L2_STD_PAL_B1|V4L2_STD_SECAM_B) 791 * drivers and V4L2 applications
792#define V4L2_STD_GH (V4L2_STD_PAL_G|V4L2_STD_PAL_H|V4L2_STD_SECAM_G|V4L2_STD_SECAM_H) 792 */
793#define V4L2_STD_DK (V4L2_STD_PAL_DK|V4L2_STD_SECAM_DK)
794 793
795/* some common needed stuff */ 794/*
796#define V4L2_STD_PAL_BG (V4L2_STD_PAL_B |\ 795 * "Common" NTSC/M - It should be noticed that V4L2_STD_NTSC_443 is
797 V4L2_STD_PAL_B1 |\ 796 * Missing here.
798 V4L2_STD_PAL_G) 797 */
799#define V4L2_STD_PAL_DK (V4L2_STD_PAL_D |\
800 V4L2_STD_PAL_D1 |\
801 V4L2_STD_PAL_K)
802#define V4L2_STD_PAL (V4L2_STD_PAL_BG |\
803 V4L2_STD_PAL_DK |\
804 V4L2_STD_PAL_H |\
805 V4L2_STD_PAL_I)
806#define V4L2_STD_NTSC (V4L2_STD_NTSC_M |\ 798#define V4L2_STD_NTSC (V4L2_STD_NTSC_M |\
807 V4L2_STD_NTSC_M_JP |\ 799 V4L2_STD_NTSC_M_JP |\
808 V4L2_STD_NTSC_M_KR) 800 V4L2_STD_NTSC_M_KR)
801/* Secam macros */
809#define V4L2_STD_SECAM_DK (V4L2_STD_SECAM_D |\ 802#define V4L2_STD_SECAM_DK (V4L2_STD_SECAM_D |\
810 V4L2_STD_SECAM_K |\ 803 V4L2_STD_SECAM_K |\
811 V4L2_STD_SECAM_K1) 804 V4L2_STD_SECAM_K1)
805/* All Secam Standards */
812#define V4L2_STD_SECAM (V4L2_STD_SECAM_B |\ 806#define V4L2_STD_SECAM (V4L2_STD_SECAM_B |\
813 V4L2_STD_SECAM_G |\ 807 V4L2_STD_SECAM_G |\
814 V4L2_STD_SECAM_H |\ 808 V4L2_STD_SECAM_H |\
815 V4L2_STD_SECAM_DK |\ 809 V4L2_STD_SECAM_DK |\
816 V4L2_STD_SECAM_L |\ 810 V4L2_STD_SECAM_L |\
817 V4L2_STD_SECAM_LC) 811 V4L2_STD_SECAM_LC)
812/* PAL macros */
813#define V4L2_STD_PAL_BG (V4L2_STD_PAL_B |\
814 V4L2_STD_PAL_B1 |\
815 V4L2_STD_PAL_G)
816#define V4L2_STD_PAL_DK (V4L2_STD_PAL_D |\
817 V4L2_STD_PAL_D1 |\
818 V4L2_STD_PAL_K)
819/*
820 * "Common" PAL - This macro is there to be compatible with the old
821 * V4L1 concept of "PAL": /BGDKHI.
822 * Several PAL standards are mising here: /M, /N and /Nc
823 */
824#define V4L2_STD_PAL (V4L2_STD_PAL_BG |\
825 V4L2_STD_PAL_DK |\
826 V4L2_STD_PAL_H |\
827 V4L2_STD_PAL_I)
828/* Chroma "agnostic" standards */
829#define V4L2_STD_B (V4L2_STD_PAL_B |\
830 V4L2_STD_PAL_B1 |\
831 V4L2_STD_SECAM_B)
832#define V4L2_STD_G (V4L2_STD_PAL_G |\
833 V4L2_STD_SECAM_G)
834#define V4L2_STD_H (V4L2_STD_PAL_H |\
835 V4L2_STD_SECAM_H)
836#define V4L2_STD_L (V4L2_STD_SECAM_L |\
837 V4L2_STD_SECAM_LC)
838#define V4L2_STD_GH (V4L2_STD_G |\
839 V4L2_STD_H)
840#define V4L2_STD_DK (V4L2_STD_PAL_DK |\
841 V4L2_STD_SECAM_DK)
842#define V4L2_STD_BG (V4L2_STD_B |\
843 V4L2_STD_G)
844#define V4L2_STD_MN (V4L2_STD_PAL_M |\
845 V4L2_STD_PAL_N |\
846 V4L2_STD_PAL_Nc |\
847 V4L2_STD_NTSC)
848
849/* Standards where MTS/BTSC stereo could be found */
850#define V4L2_STD_MTS (V4L2_STD_NTSC_M |\
851 V4L2_STD_PAL_M |\
852 V4L2_STD_PAL_N |\
853 V4L2_STD_PAL_Nc)
818 854
855/* Standards for Countries with 60Hz Line frequency */
819#define V4L2_STD_525_60 (V4L2_STD_PAL_M |\ 856#define V4L2_STD_525_60 (V4L2_STD_PAL_M |\
820 V4L2_STD_PAL_60 |\ 857 V4L2_STD_PAL_60 |\
821 V4L2_STD_NTSC |\ 858 V4L2_STD_NTSC |\
822 V4L2_STD_NTSC_443) 859 V4L2_STD_NTSC_443)
860/* Standards for Countries with 50Hz Line frequency */
823#define V4L2_STD_625_50 (V4L2_STD_PAL |\ 861#define V4L2_STD_625_50 (V4L2_STD_PAL |\
824 V4L2_STD_PAL_N |\ 862 V4L2_STD_PAL_N |\
825 V4L2_STD_PAL_Nc |\ 863 V4L2_STD_PAL_Nc |\
826 V4L2_STD_SECAM) 864 V4L2_STD_SECAM)
865
827#define V4L2_STD_ATSC (V4L2_STD_ATSC_8_VSB |\ 866#define V4L2_STD_ATSC (V4L2_STD_ATSC_8_VSB |\
828 V4L2_STD_ATSC_16_VSB) 867 V4L2_STD_ATSC_16_VSB)
829 868/* Macros with none and all analog standards */
830#define V4L2_STD_UNKNOWN 0 869#define V4L2_STD_UNKNOWN 0
831#define V4L2_STD_ALL (V4L2_STD_525_60 |\ 870#define V4L2_STD_ALL (V4L2_STD_525_60 |\
832 V4L2_STD_625_50) 871 V4L2_STD_625_50)
@@ -1082,6 +1121,7 @@ struct v4l2_querymenu {
1082#define V4L2_CTRL_FLAG_INACTIVE 0x0010 1121#define V4L2_CTRL_FLAG_INACTIVE 0x0010
1083#define V4L2_CTRL_FLAG_SLIDER 0x0020 1122#define V4L2_CTRL_FLAG_SLIDER 0x0020
1084#define V4L2_CTRL_FLAG_WRITE_ONLY 0x0040 1123#define V4L2_CTRL_FLAG_WRITE_ONLY 0x0040
1124#define V4L2_CTRL_FLAG_VOLATILE 0x0080
1085 1125
1086/* Query flag, to be ORed with the control ID */ 1126/* Query flag, to be ORed with the control ID */
1087#define V4L2_CTRL_FLAG_NEXT_CTRL 0x80000000 1127#define V4L2_CTRL_FLAG_NEXT_CTRL 0x80000000
@@ -2006,6 +2046,7 @@ struct v4l2_streamparm {
2006#define V4L2_EVENT_VSYNC 1 2046#define V4L2_EVENT_VSYNC 1
2007#define V4L2_EVENT_EOS 2 2047#define V4L2_EVENT_EOS 2
2008#define V4L2_EVENT_CTRL 3 2048#define V4L2_EVENT_CTRL 3
2049#define V4L2_EVENT_FRAME_SYNC 4
2009#define V4L2_EVENT_PRIVATE_START 0x08000000 2050#define V4L2_EVENT_PRIVATE_START 0x08000000
2010 2051
2011/* Payload for V4L2_EVENT_VSYNC */ 2052/* Payload for V4L2_EVENT_VSYNC */
@@ -2032,12 +2073,17 @@ struct v4l2_event_ctrl {
2032 __s32 default_value; 2073 __s32 default_value;
2033}; 2074};
2034 2075
2076struct v4l2_event_frame_sync {
2077 __u32 frame_sequence;
2078};
2079
2035struct v4l2_event { 2080struct v4l2_event {
2036 __u32 type; 2081 __u32 type;
2037 union { 2082 union {
2038 struct v4l2_event_vsync vsync; 2083 struct v4l2_event_vsync vsync;
2039 struct v4l2_event_ctrl ctrl; 2084 struct v4l2_event_ctrl ctrl;
2040 __u8 data[64]; 2085 struct v4l2_event_frame_sync frame_sync;
2086 __u8 data[64];
2041 } u; 2087 } u;
2042 __u32 pending; 2088 __u32 pending;
2043 __u32 sequence; 2089 __u32 sequence;
diff --git a/include/linux/virtio.h b/include/linux/virtio.h
index 710885749605..851ebf1a4476 100644
--- a/include/linux/virtio.h
+++ b/include/linux/virtio.h
@@ -61,6 +61,9 @@ struct virtqueue {
61 * virtqueue_detach_unused_buf: detach first unused buffer 61 * virtqueue_detach_unused_buf: detach first unused buffer
62 * vq: the struct virtqueue we're talking about. 62 * vq: the struct virtqueue we're talking about.
63 * Returns NULL or the "data" token handed to add_buf 63 * Returns NULL or the "data" token handed to add_buf
64 * virtqueue_get_vring_size: return the size of the virtqueue's vring
65 * vq: the struct virtqueue containing the vring of interest.
66 * Returns the size of the vring.
64 * 67 *
65 * Locking rules are straightforward: the driver is responsible for 68 * Locking rules are straightforward: the driver is responsible for
66 * locking. No two operations may be invoked simultaneously, with the exception 69 * locking. No two operations may be invoked simultaneously, with the exception
@@ -97,6 +100,8 @@ bool virtqueue_enable_cb_delayed(struct virtqueue *vq);
97 100
98void *virtqueue_detach_unused_buf(struct virtqueue *vq); 101void *virtqueue_detach_unused_buf(struct virtqueue *vq);
99 102
103unsigned int virtqueue_get_vring_size(struct virtqueue *vq);
104
100/** 105/**
101 * virtio_device - representation of a device using virtio 106 * virtio_device - representation of a device using virtio
102 * @index: unique position on the virtio bus 107 * @index: unique position on the virtio bus
diff --git a/include/linux/vmalloc.h b/include/linux/vmalloc.h
index 9332e52ea8c2..687fb11e2010 100644
--- a/include/linux/vmalloc.h
+++ b/include/linux/vmalloc.h
@@ -13,6 +13,7 @@ struct vm_area_struct; /* vma defining user mapping in mm_types.h */
13#define VM_MAP 0x00000004 /* vmap()ed pages */ 13#define VM_MAP 0x00000004 /* vmap()ed pages */
14#define VM_USERMAP 0x00000008 /* suitable for remap_vmalloc_range */ 14#define VM_USERMAP 0x00000008 /* suitable for remap_vmalloc_range */
15#define VM_VPAGES 0x00000010 /* buffer for pages was vmalloc'ed */ 15#define VM_VPAGES 0x00000010 /* buffer for pages was vmalloc'ed */
16#define VM_UNLIST 0x00000020 /* vm_struct is not listed in vmlist */
16/* bits [20..32] reserved for arch specific ioremap internals */ 17/* bits [20..32] reserved for arch specific ioremap internals */
17 18
18/* 19/*
diff --git a/include/linux/x25.h b/include/linux/x25.h
index 6450a7f12074..810cce6737ea 100644
--- a/include/linux/x25.h
+++ b/include/linux/x25.h
@@ -12,6 +12,7 @@
12#define X25_KERNEL_H 12#define X25_KERNEL_H
13 13
14#include <linux/types.h> 14#include <linux/types.h>
15#include <linux/socket.h>
15 16
16#define SIOCX25GSUBSCRIP (SIOCPROTOPRIVATE + 0) 17#define SIOCX25GSUBSCRIP (SIOCPROTOPRIVATE + 0)
17#define SIOCX25SSUBSCRIP (SIOCPROTOPRIVATE + 1) 18#define SIOCX25SSUBSCRIP (SIOCPROTOPRIVATE + 1)
@@ -57,7 +58,7 @@ struct x25_address {
57 * Linux X.25 Address structure, used for bind, and connect mostly. 58 * Linux X.25 Address structure, used for bind, and connect mostly.
58 */ 59 */
59struct sockaddr_x25 { 60struct sockaddr_x25 {
60 sa_family_t sx25_family; /* Must be AF_X25 */ 61 __kernel_sa_family_t sx25_family; /* Must be AF_X25 */
61 struct x25_address sx25_addr; /* X.121 Address */ 62 struct x25_address sx25_addr; /* X.121 Address */
62}; 63};
63 64
diff --git a/include/linux/xattr.h b/include/linux/xattr.h
index aed54c50aa66..e5d122031542 100644
--- a/include/linux/xattr.h
+++ b/include/linux/xattr.h
@@ -30,6 +30,9 @@
30#define XATTR_USER_PREFIX_LEN (sizeof (XATTR_USER_PREFIX) - 1) 30#define XATTR_USER_PREFIX_LEN (sizeof (XATTR_USER_PREFIX) - 1)
31 31
32/* Security namespace */ 32/* Security namespace */
33#define XATTR_EVM_SUFFIX "evm"
34#define XATTR_NAME_EVM XATTR_SECURITY_PREFIX XATTR_EVM_SUFFIX
35
33#define XATTR_SELINUX_SUFFIX "selinux" 36#define XATTR_SELINUX_SUFFIX "selinux"
34#define XATTR_NAME_SELINUX XATTR_SECURITY_PREFIX XATTR_SELINUX_SUFFIX 37#define XATTR_NAME_SELINUX XATTR_SECURITY_PREFIX XATTR_SELINUX_SUFFIX
35 38
@@ -49,6 +52,11 @@
49#define XATTR_CAPS_SUFFIX "capability" 52#define XATTR_CAPS_SUFFIX "capability"
50#define XATTR_NAME_CAPS XATTR_SECURITY_PREFIX XATTR_CAPS_SUFFIX 53#define XATTR_NAME_CAPS XATTR_SECURITY_PREFIX XATTR_CAPS_SUFFIX
51 54
55#define XATTR_POSIX_ACL_ACCESS "posix_acl_access"
56#define XATTR_NAME_POSIX_ACL_ACCESS XATTR_SYSTEM_PREFIX XATTR_POSIX_ACL_ACCESS
57#define XATTR_POSIX_ACL_DEFAULT "posix_acl_default"
58#define XATTR_NAME_POSIX_ACL_DEFAULT XATTR_SYSTEM_PREFIX XATTR_POSIX_ACL_DEFAULT
59
52#ifdef __KERNEL__ 60#ifdef __KERNEL__
53 61
54#include <linux/types.h> 62#include <linux/types.h>
@@ -67,6 +75,12 @@ struct xattr_handler {
67 size_t size, int flags, int handler_flags); 75 size_t size, int flags, int handler_flags);
68}; 76};
69 77
78struct xattr {
79 char *name;
80 void *value;
81 size_t value_len;
82};
83
70ssize_t xattr_getsecurity(struct inode *, const char *, void *, size_t); 84ssize_t xattr_getsecurity(struct inode *, const char *, void *, size_t);
71ssize_t vfs_getxattr(struct dentry *, const char *, void *, size_t); 85ssize_t vfs_getxattr(struct dentry *, const char *, void *, size_t);
72ssize_t vfs_listxattr(struct dentry *d, char *list, size_t size); 86ssize_t vfs_listxattr(struct dentry *d, char *list, size_t size);
@@ -78,7 +92,10 @@ ssize_t generic_getxattr(struct dentry *dentry, const char *name, void *buffer,
78ssize_t generic_listxattr(struct dentry *dentry, char *buffer, size_t buffer_size); 92ssize_t generic_listxattr(struct dentry *dentry, char *buffer, size_t buffer_size);
79int generic_setxattr(struct dentry *dentry, const char *name, const void *value, size_t size, int flags); 93int generic_setxattr(struct dentry *dentry, const char *name, const void *value, size_t size, int flags);
80int generic_removexattr(struct dentry *dentry, const char *name); 94int generic_removexattr(struct dentry *dentry, const char *name);
81 95ssize_t vfs_getxattr_alloc(struct dentry *dentry, const char *name,
96 char **xattr_value, size_t size, gfp_t flags);
97int vfs_xattr_cmp(struct dentry *dentry, const char *xattr_name,
98 const char *value, size_t size, gfp_t flags);
82#endif /* __KERNEL__ */ 99#endif /* __KERNEL__ */
83 100
84#endif /* _LINUX_XATTR_H */ 101#endif /* _LINUX_XATTR_H */