diff options
Diffstat (limited to 'include/linux')
189 files changed, 5421 insertions, 570 deletions
diff --git a/include/linux/Kbuild b/include/linux/Kbuild index 75cf611641e6..01f636275057 100644 --- a/include/linux/Kbuild +++ b/include/linux/Kbuild | |||
@@ -4,6 +4,7 @@ header-y += caif/ | |||
4 | header-y += dvb/ | 4 | header-y += dvb/ |
5 | header-y += hdlc/ | 5 | header-y += hdlc/ |
6 | header-y += isdn/ | 6 | header-y += isdn/ |
7 | header-y += mmc/ | ||
7 | header-y += nfsd/ | 8 | header-y += nfsd/ |
8 | header-y += raid/ | 9 | header-y += raid/ |
9 | header-y += spi/ | 10 | header-y += spi/ |
@@ -302,6 +303,7 @@ header-y += ppp-comp.h | |||
302 | header-y += ppp_defs.h | 303 | header-y += ppp_defs.h |
303 | header-y += pps.h | 304 | header-y += pps.h |
304 | header-y += prctl.h | 305 | header-y += prctl.h |
306 | header-y += ptp_clock.h | ||
305 | header-y += ptrace.h | 307 | header-y += ptrace.h |
306 | header-y += qnx4_fs.h | 308 | header-y += qnx4_fs.h |
307 | header-y += qnxtypes.h | 309 | header-y += qnxtypes.h |
@@ -372,6 +374,7 @@ header-y += unistd.h | |||
372 | header-y += usbdevice_fs.h | 374 | header-y += usbdevice_fs.h |
373 | header-y += utime.h | 375 | header-y += utime.h |
374 | header-y += utsname.h | 376 | header-y += utsname.h |
377 | header-y += uvcvideo.h | ||
375 | header-y += v4l2-mediabus.h | 378 | header-y += v4l2-mediabus.h |
376 | header-y += v4l2-subdev.h | 379 | header-y += v4l2-subdev.h |
377 | header-y += veth.h | 380 | header-y += veth.h |
diff --git a/include/linux/acpi.h b/include/linux/acpi.h index a2e910e01293..1deb2a73c2da 100644 --- a/include/linux/acpi.h +++ b/include/linux/acpi.h | |||
@@ -150,8 +150,7 @@ extern int ec_read(u8 addr, u8 *val); | |||
150 | extern int ec_write(u8 addr, u8 val); | 150 | extern int ec_write(u8 addr, u8 val); |
151 | extern int ec_transaction(u8 command, | 151 | extern int ec_transaction(u8 command, |
152 | const u8 *wdata, unsigned wdata_len, | 152 | const u8 *wdata, unsigned wdata_len, |
153 | u8 *rdata, unsigned rdata_len, | 153 | u8 *rdata, unsigned rdata_len); |
154 | int force_poll); | ||
155 | 154 | ||
156 | #if defined(CONFIG_ACPI_WMI) || defined(CONFIG_ACPI_WMI_MODULE) | 155 | #if defined(CONFIG_ACPI_WMI) || defined(CONFIG_ACPI_WMI_MODULE) |
157 | 156 | ||
diff --git a/include/linux/arcdevice.h b/include/linux/arcdevice.h index 7d650a0e3d8f..7216b0daf544 100644 --- a/include/linux/arcdevice.h +++ b/include/linux/arcdevice.h | |||
@@ -20,6 +20,7 @@ | |||
20 | #include <linux/if_arcnet.h> | 20 | #include <linux/if_arcnet.h> |
21 | 21 | ||
22 | #ifdef __KERNEL__ | 22 | #ifdef __KERNEL__ |
23 | #include <linux/irqreturn.h> | ||
23 | 24 | ||
24 | #ifndef bool | 25 | #ifndef bool |
25 | #define bool int | 26 | #define bool int |
diff --git a/include/linux/atomic.h b/include/linux/atomic.h index 96c038e43d66..ee456c79b0e6 100644 --- a/include/linux/atomic.h +++ b/include/linux/atomic.h | |||
@@ -34,4 +34,17 @@ static inline int atomic_inc_not_zero_hint(atomic_t *v, int hint) | |||
34 | } | 34 | } |
35 | #endif | 35 | #endif |
36 | 36 | ||
37 | #ifndef CONFIG_ARCH_HAS_ATOMIC_OR | ||
38 | static inline void atomic_or(int i, atomic_t *v) | ||
39 | { | ||
40 | int old; | ||
41 | int new; | ||
42 | |||
43 | do { | ||
44 | old = atomic_read(v); | ||
45 | new = old | i; | ||
46 | } while (atomic_cmpxchg(v, old, new) != old); | ||
47 | } | ||
48 | #endif /* #ifndef CONFIG_ARCH_HAS_ATOMIC_OR */ | ||
49 | |||
37 | #endif /* _LINUX_ATOMIC_H */ | 50 | #endif /* _LINUX_ATOMIC_H */ |
diff --git a/include/linux/basic_mmio_gpio.h b/include/linux/basic_mmio_gpio.h index 198087a16fc4..1ae12710d732 100644 --- a/include/linux/basic_mmio_gpio.h +++ b/include/linux/basic_mmio_gpio.h | |||
@@ -13,8 +13,64 @@ | |||
13 | #ifndef __BASIC_MMIO_GPIO_H | 13 | #ifndef __BASIC_MMIO_GPIO_H |
14 | #define __BASIC_MMIO_GPIO_H | 14 | #define __BASIC_MMIO_GPIO_H |
15 | 15 | ||
16 | #include <linux/gpio.h> | ||
17 | #include <linux/types.h> | ||
18 | #include <linux/compiler.h> | ||
19 | |||
16 | struct bgpio_pdata { | 20 | struct bgpio_pdata { |
17 | int base; | 21 | int base; |
22 | int ngpio; | ||
18 | }; | 23 | }; |
19 | 24 | ||
25 | struct device; | ||
26 | |||
27 | struct bgpio_chip { | ||
28 | struct gpio_chip gc; | ||
29 | |||
30 | unsigned long (*read_reg)(void __iomem *reg); | ||
31 | void (*write_reg)(void __iomem *reg, unsigned long data); | ||
32 | |||
33 | void __iomem *reg_dat; | ||
34 | void __iomem *reg_set; | ||
35 | void __iomem *reg_clr; | ||
36 | void __iomem *reg_dir; | ||
37 | |||
38 | /* Number of bits (GPIOs): <register width> * 8. */ | ||
39 | int bits; | ||
40 | |||
41 | /* | ||
42 | * Some GPIO controllers work with the big-endian bits notation, | ||
43 | * e.g. in a 8-bits register, GPIO7 is the least significant bit. | ||
44 | */ | ||
45 | unsigned long (*pin2mask)(struct bgpio_chip *bgc, unsigned int pin); | ||
46 | |||
47 | /* | ||
48 | * Used to lock bgpio_chip->data. Also, this is needed to keep | ||
49 | * shadowed and real data registers writes together. | ||
50 | */ | ||
51 | spinlock_t lock; | ||
52 | |||
53 | /* Shadowed data register to clear/set bits safely. */ | ||
54 | unsigned long data; | ||
55 | |||
56 | /* Shadowed direction registers to clear/set direction safely. */ | ||
57 | unsigned long dir; | ||
58 | }; | ||
59 | |||
60 | static inline struct bgpio_chip *to_bgpio_chip(struct gpio_chip *gc) | ||
61 | { | ||
62 | return container_of(gc, struct bgpio_chip, gc); | ||
63 | } | ||
64 | |||
65 | int __devexit bgpio_remove(struct bgpio_chip *bgc); | ||
66 | int __devinit bgpio_init(struct bgpio_chip *bgc, | ||
67 | struct device *dev, | ||
68 | unsigned long sz, | ||
69 | void __iomem *dat, | ||
70 | void __iomem *set, | ||
71 | void __iomem *clr, | ||
72 | void __iomem *dirout, | ||
73 | void __iomem *dirin, | ||
74 | bool big_endian); | ||
75 | |||
20 | #endif /* __BASIC_MMIO_GPIO_H */ | 76 | #endif /* __BASIC_MMIO_GPIO_H */ |
diff --git a/include/linux/bitmap.h b/include/linux/bitmap.h index daf8c480c786..dcafe0bf0005 100644 --- a/include/linux/bitmap.h +++ b/include/linux/bitmap.h | |||
@@ -55,7 +55,8 @@ | |||
55 | * bitmap_parse(buf, buflen, dst, nbits) Parse bitmap dst from kernel buf | 55 | * bitmap_parse(buf, buflen, dst, nbits) Parse bitmap dst from kernel buf |
56 | * bitmap_parse_user(ubuf, ulen, dst, nbits) Parse bitmap dst from user buf | 56 | * bitmap_parse_user(ubuf, ulen, dst, nbits) Parse bitmap dst from user buf |
57 | * bitmap_scnlistprintf(buf, len, src, nbits) Print bitmap src as list to buf | 57 | * bitmap_scnlistprintf(buf, len, src, nbits) Print bitmap src as list to buf |
58 | * bitmap_parselist(buf, dst, nbits) Parse bitmap dst from list | 58 | * bitmap_parselist(buf, dst, nbits) Parse bitmap dst from kernel buf |
59 | * bitmap_parselist_user(buf, dst, nbits) Parse bitmap dst from user buf | ||
59 | * bitmap_find_free_region(bitmap, bits, order) Find and allocate bit region | 60 | * bitmap_find_free_region(bitmap, bits, order) Find and allocate bit region |
60 | * bitmap_release_region(bitmap, pos, order) Free specified bit region | 61 | * bitmap_release_region(bitmap, pos, order) Free specified bit region |
61 | * bitmap_allocate_region(bitmap, pos, order) Allocate specified bit region | 62 | * bitmap_allocate_region(bitmap, pos, order) Allocate specified bit region |
@@ -129,6 +130,8 @@ extern int bitmap_scnlistprintf(char *buf, unsigned int len, | |||
129 | const unsigned long *src, int nbits); | 130 | const unsigned long *src, int nbits); |
130 | extern int bitmap_parselist(const char *buf, unsigned long *maskp, | 131 | extern int bitmap_parselist(const char *buf, unsigned long *maskp, |
131 | int nmaskbits); | 132 | int nmaskbits); |
133 | extern int bitmap_parselist_user(const char __user *ubuf, unsigned int ulen, | ||
134 | unsigned long *dst, int nbits); | ||
132 | extern void bitmap_remap(unsigned long *dst, const unsigned long *src, | 135 | extern void bitmap_remap(unsigned long *dst, const unsigned long *src, |
133 | const unsigned long *old, const unsigned long *new, int bits); | 136 | const unsigned long *old, const unsigned long *new, int bits); |
134 | extern int bitmap_bitremap(int oldbit, | 137 | extern int bitmap_bitremap(int oldbit, |
diff --git a/include/linux/bitops.h b/include/linux/bitops.h index 2184c6b97aeb..a3ef66a2a083 100644 --- a/include/linux/bitops.h +++ b/include/linux/bitops.h | |||
@@ -148,7 +148,7 @@ static inline unsigned long __ffs64(u64 word) | |||
148 | 148 | ||
149 | #ifdef __KERNEL__ | 149 | #ifdef __KERNEL__ |
150 | 150 | ||
151 | #ifdef CONFIG_GENERIC_FIND_LAST_BIT | 151 | #ifndef find_last_bit |
152 | /** | 152 | /** |
153 | * find_last_bit - find the last set bit in a memory region | 153 | * find_last_bit - find the last set bit in a memory region |
154 | * @addr: The address to start the search at | 154 | * @addr: The address to start the search at |
@@ -158,7 +158,7 @@ static inline unsigned long __ffs64(u64 word) | |||
158 | */ | 158 | */ |
159 | extern unsigned long find_last_bit(const unsigned long *addr, | 159 | extern unsigned long find_last_bit(const unsigned long *addr, |
160 | unsigned long size); | 160 | unsigned long size); |
161 | #endif /* CONFIG_GENERIC_FIND_LAST_BIT */ | 161 | #endif |
162 | 162 | ||
163 | #endif /* __KERNEL__ */ | 163 | #endif /* __KERNEL__ */ |
164 | #endif | 164 | #endif |
diff --git a/include/linux/blk_types.h b/include/linux/blk_types.h index be50d9e70a7d..2a7cea53ca0d 100644 --- a/include/linux/blk_types.h +++ b/include/linux/blk_types.h | |||
@@ -151,7 +151,6 @@ enum rq_flag_bits { | |||
151 | __REQ_IO_STAT, /* account I/O stat */ | 151 | __REQ_IO_STAT, /* account I/O stat */ |
152 | __REQ_MIXED_MERGE, /* merge of different types, fail separately */ | 152 | __REQ_MIXED_MERGE, /* merge of different types, fail separately */ |
153 | __REQ_SECURE, /* secure discard (used with __REQ_DISCARD) */ | 153 | __REQ_SECURE, /* secure discard (used with __REQ_DISCARD) */ |
154 | __REQ_ON_PLUG, /* on plug list */ | ||
155 | __REQ_NR_BITS, /* stops here */ | 154 | __REQ_NR_BITS, /* stops here */ |
156 | }; | 155 | }; |
157 | 156 | ||
@@ -192,6 +191,5 @@ enum rq_flag_bits { | |||
192 | #define REQ_IO_STAT (1 << __REQ_IO_STAT) | 191 | #define REQ_IO_STAT (1 << __REQ_IO_STAT) |
193 | #define REQ_MIXED_MERGE (1 << __REQ_MIXED_MERGE) | 192 | #define REQ_MIXED_MERGE (1 << __REQ_MIXED_MERGE) |
194 | #define REQ_SECURE (1 << __REQ_SECURE) | 193 | #define REQ_SECURE (1 << __REQ_SECURE) |
195 | #define REQ_ON_PLUG (1 << __REQ_ON_PLUG) | ||
196 | 194 | ||
197 | #endif /* __LINUX_BLK_TYPES_H */ | 195 | #endif /* __LINUX_BLK_TYPES_H */ |
diff --git a/include/linux/blkdev.h b/include/linux/blkdev.h index 2ad95fa1d130..1a23722e8878 100644 --- a/include/linux/blkdev.h +++ b/include/linux/blkdev.h | |||
@@ -257,7 +257,7 @@ struct queue_limits { | |||
257 | unsigned char misaligned; | 257 | unsigned char misaligned; |
258 | unsigned char discard_misaligned; | 258 | unsigned char discard_misaligned; |
259 | unsigned char cluster; | 259 | unsigned char cluster; |
260 | signed char discard_zeroes_data; | 260 | unsigned char discard_zeroes_data; |
261 | }; | 261 | }; |
262 | 262 | ||
263 | struct request_queue | 263 | struct request_queue |
@@ -364,6 +364,8 @@ struct request_queue | |||
364 | * for flush operations | 364 | * for flush operations |
365 | */ | 365 | */ |
366 | unsigned int flush_flags; | 366 | unsigned int flush_flags; |
367 | unsigned int flush_not_queueable:1; | ||
368 | unsigned int flush_queue_delayed:1; | ||
367 | unsigned int flush_pending_idx:1; | 369 | unsigned int flush_pending_idx:1; |
368 | unsigned int flush_running_idx:1; | 370 | unsigned int flush_running_idx:1; |
369 | unsigned long flush_pending_since; | 371 | unsigned long flush_pending_since; |
@@ -843,6 +845,7 @@ extern void blk_queue_softirq_done(struct request_queue *, softirq_done_fn *); | |||
843 | extern void blk_queue_rq_timed_out(struct request_queue *, rq_timed_out_fn *); | 845 | extern void blk_queue_rq_timed_out(struct request_queue *, rq_timed_out_fn *); |
844 | extern void blk_queue_rq_timeout(struct request_queue *, unsigned int); | 846 | extern void blk_queue_rq_timeout(struct request_queue *, unsigned int); |
845 | extern void blk_queue_flush(struct request_queue *q, unsigned int flush); | 847 | extern void blk_queue_flush(struct request_queue *q, unsigned int flush); |
848 | extern void blk_queue_flush_queueable(struct request_queue *q, bool queueable); | ||
846 | extern struct backing_dev_info *blk_get_backing_dev_info(struct block_device *bdev); | 849 | extern struct backing_dev_info *blk_get_backing_dev_info(struct block_device *bdev); |
847 | 850 | ||
848 | extern int blk_rq_map_sg(struct request_queue *, struct request *, struct scatterlist *); | 851 | extern int blk_rq_map_sg(struct request_queue *, struct request *, struct scatterlist *); |
@@ -1066,13 +1069,16 @@ static inline int queue_limit_discard_alignment(struct queue_limits *lim, sector | |||
1066 | { | 1069 | { |
1067 | unsigned int alignment = (sector << 9) & (lim->discard_granularity - 1); | 1070 | unsigned int alignment = (sector << 9) & (lim->discard_granularity - 1); |
1068 | 1071 | ||
1072 | if (!lim->max_discard_sectors) | ||
1073 | return 0; | ||
1074 | |||
1069 | return (lim->discard_granularity + lim->discard_alignment - alignment) | 1075 | return (lim->discard_granularity + lim->discard_alignment - alignment) |
1070 | & (lim->discard_granularity - 1); | 1076 | & (lim->discard_granularity - 1); |
1071 | } | 1077 | } |
1072 | 1078 | ||
1073 | static inline unsigned int queue_discard_zeroes_data(struct request_queue *q) | 1079 | static inline unsigned int queue_discard_zeroes_data(struct request_queue *q) |
1074 | { | 1080 | { |
1075 | if (q->limits.discard_zeroes_data == 1) | 1081 | if (q->limits.max_discard_sectors && q->limits.discard_zeroes_data == 1) |
1076 | return 1; | 1082 | return 1; |
1077 | 1083 | ||
1078 | return 0; | 1084 | return 0; |
@@ -1111,6 +1117,11 @@ static inline unsigned int block_size(struct block_device *bdev) | |||
1111 | return bdev->bd_block_size; | 1117 | return bdev->bd_block_size; |
1112 | } | 1118 | } |
1113 | 1119 | ||
1120 | static inline bool queue_flush_queueable(struct request_queue *q) | ||
1121 | { | ||
1122 | return !q->flush_not_queueable; | ||
1123 | } | ||
1124 | |||
1114 | typedef struct {struct page *v;} Sector; | 1125 | typedef struct {struct page *v;} Sector; |
1115 | 1126 | ||
1116 | unsigned char *read_dev_sector(struct block_device *, sector_t, Sector *); | 1127 | unsigned char *read_dev_sector(struct block_device *, sector_t, Sector *); |
@@ -1271,8 +1282,8 @@ queue_max_integrity_segments(struct request_queue *q) | |||
1271 | #define blk_get_integrity(a) (0) | 1282 | #define blk_get_integrity(a) (0) |
1272 | #define blk_integrity_compare(a, b) (0) | 1283 | #define blk_integrity_compare(a, b) (0) |
1273 | #define blk_integrity_register(a, b) (0) | 1284 | #define blk_integrity_register(a, b) (0) |
1274 | #define blk_integrity_unregister(a) do { } while (0); | 1285 | #define blk_integrity_unregister(a) do { } while (0) |
1275 | #define blk_queue_max_integrity_segments(a, b) do { } while (0); | 1286 | #define blk_queue_max_integrity_segments(a, b) do { } while (0) |
1276 | #define queue_max_integrity_segments(a) (0) | 1287 | #define queue_max_integrity_segments(a) (0) |
1277 | #define blk_integrity_merge_rq(a, b, c) (0) | 1288 | #define blk_integrity_merge_rq(a, b, c) (0) |
1278 | #define blk_integrity_merge_bio(a, b, c) (0) | 1289 | #define blk_integrity_merge_bio(a, b, c) (0) |
diff --git a/include/linux/bootmem.h b/include/linux/bootmem.h index 01eca1794e14..ab344a521105 100644 --- a/include/linux/bootmem.h +++ b/include/linux/bootmem.h | |||
@@ -99,24 +99,31 @@ extern void *__alloc_bootmem_low_node(pg_data_t *pgdat, | |||
99 | unsigned long align, | 99 | unsigned long align, |
100 | unsigned long goal); | 100 | unsigned long goal); |
101 | 101 | ||
102 | #ifdef CONFIG_NO_BOOTMEM | ||
103 | /* We are using top down, so it is safe to use 0 here */ | ||
104 | #define BOOTMEM_LOW_LIMIT 0 | ||
105 | #else | ||
106 | #define BOOTMEM_LOW_LIMIT __pa(MAX_DMA_ADDRESS) | ||
107 | #endif | ||
108 | |||
102 | #define alloc_bootmem(x) \ | 109 | #define alloc_bootmem(x) \ |
103 | __alloc_bootmem(x, SMP_CACHE_BYTES, __pa(MAX_DMA_ADDRESS)) | 110 | __alloc_bootmem(x, SMP_CACHE_BYTES, BOOTMEM_LOW_LIMIT) |
104 | #define alloc_bootmem_align(x, align) \ | 111 | #define alloc_bootmem_align(x, align) \ |
105 | __alloc_bootmem(x, align, __pa(MAX_DMA_ADDRESS)) | 112 | __alloc_bootmem(x, align, BOOTMEM_LOW_LIMIT) |
106 | #define alloc_bootmem_nopanic(x) \ | 113 | #define alloc_bootmem_nopanic(x) \ |
107 | __alloc_bootmem_nopanic(x, SMP_CACHE_BYTES, __pa(MAX_DMA_ADDRESS)) | 114 | __alloc_bootmem_nopanic(x, SMP_CACHE_BYTES, BOOTMEM_LOW_LIMIT) |
108 | #define alloc_bootmem_pages(x) \ | 115 | #define alloc_bootmem_pages(x) \ |
109 | __alloc_bootmem(x, PAGE_SIZE, __pa(MAX_DMA_ADDRESS)) | 116 | __alloc_bootmem(x, PAGE_SIZE, BOOTMEM_LOW_LIMIT) |
110 | #define alloc_bootmem_pages_nopanic(x) \ | 117 | #define alloc_bootmem_pages_nopanic(x) \ |
111 | __alloc_bootmem_nopanic(x, PAGE_SIZE, __pa(MAX_DMA_ADDRESS)) | 118 | __alloc_bootmem_nopanic(x, PAGE_SIZE, BOOTMEM_LOW_LIMIT) |
112 | #define alloc_bootmem_node(pgdat, x) \ | 119 | #define alloc_bootmem_node(pgdat, x) \ |
113 | __alloc_bootmem_node(pgdat, x, SMP_CACHE_BYTES, __pa(MAX_DMA_ADDRESS)) | 120 | __alloc_bootmem_node(pgdat, x, SMP_CACHE_BYTES, BOOTMEM_LOW_LIMIT) |
114 | #define alloc_bootmem_node_nopanic(pgdat, x) \ | 121 | #define alloc_bootmem_node_nopanic(pgdat, x) \ |
115 | __alloc_bootmem_node_nopanic(pgdat, x, SMP_CACHE_BYTES, __pa(MAX_DMA_ADDRESS)) | 122 | __alloc_bootmem_node_nopanic(pgdat, x, SMP_CACHE_BYTES, BOOTMEM_LOW_LIMIT) |
116 | #define alloc_bootmem_pages_node(pgdat, x) \ | 123 | #define alloc_bootmem_pages_node(pgdat, x) \ |
117 | __alloc_bootmem_node(pgdat, x, PAGE_SIZE, __pa(MAX_DMA_ADDRESS)) | 124 | __alloc_bootmem_node(pgdat, x, PAGE_SIZE, BOOTMEM_LOW_LIMIT) |
118 | #define alloc_bootmem_pages_node_nopanic(pgdat, x) \ | 125 | #define alloc_bootmem_pages_node_nopanic(pgdat, x) \ |
119 | __alloc_bootmem_node_nopanic(pgdat, x, PAGE_SIZE, __pa(MAX_DMA_ADDRESS)) | 126 | __alloc_bootmem_node_nopanic(pgdat, x, PAGE_SIZE, BOOTMEM_LOW_LIMIT) |
120 | 127 | ||
121 | #define alloc_bootmem_low(x) \ | 128 | #define alloc_bootmem_low(x) \ |
122 | __alloc_bootmem_low(x, SMP_CACHE_BYTES, 0) | 129 | __alloc_bootmem_low(x, SMP_CACHE_BYTES, 0) |
diff --git a/include/linux/buffer_head.h b/include/linux/buffer_head.h index f5df23561b96..503c8a6b3079 100644 --- a/include/linux/buffer_head.h +++ b/include/linux/buffer_head.h | |||
@@ -217,8 +217,24 @@ int cont_write_begin(struct file *, struct address_space *, loff_t, | |||
217 | get_block_t *, loff_t *); | 217 | get_block_t *, loff_t *); |
218 | int generic_cont_expand_simple(struct inode *inode, loff_t size); | 218 | int generic_cont_expand_simple(struct inode *inode, loff_t size); |
219 | int block_commit_write(struct page *page, unsigned from, unsigned to); | 219 | int block_commit_write(struct page *page, unsigned from, unsigned to); |
220 | int __block_page_mkwrite(struct vm_area_struct *vma, struct vm_fault *vmf, | ||
221 | get_block_t get_block); | ||
220 | int block_page_mkwrite(struct vm_area_struct *vma, struct vm_fault *vmf, | 222 | int block_page_mkwrite(struct vm_area_struct *vma, struct vm_fault *vmf, |
221 | get_block_t get_block); | 223 | get_block_t get_block); |
224 | /* Convert errno to return value from ->page_mkwrite() call */ | ||
225 | static inline int block_page_mkwrite_return(int err) | ||
226 | { | ||
227 | if (err == 0) | ||
228 | return VM_FAULT_LOCKED; | ||
229 | if (err == -EFAULT) | ||
230 | return VM_FAULT_NOPAGE; | ||
231 | if (err == -ENOMEM) | ||
232 | return VM_FAULT_OOM; | ||
233 | if (err == -EAGAIN) | ||
234 | return VM_FAULT_RETRY; | ||
235 | /* -ENOSPC, -EDQUOT, -EIO ... */ | ||
236 | return VM_FAULT_SIGBUS; | ||
237 | } | ||
222 | sector_t generic_block_bmap(struct address_space *, sector_t, get_block_t *); | 238 | sector_t generic_block_bmap(struct address_space *, sector_t, get_block_t *); |
223 | int block_truncate_page(struct address_space *, loff_t, get_block_t *); | 239 | int block_truncate_page(struct address_space *, loff_t, get_block_t *); |
224 | int nobh_write_begin(struct address_space *, loff_t, unsigned, unsigned, | 240 | int nobh_write_begin(struct address_space *, loff_t, unsigned, unsigned, |
diff --git a/include/linux/c2port.h b/include/linux/c2port.h index 2a5cd867c365..a2f7d7413f30 100644 --- a/include/linux/c2port.h +++ b/include/linux/c2port.h | |||
@@ -60,9 +60,6 @@ struct c2port_ops { | |||
60 | * Exported functions | 60 | * Exported functions |
61 | */ | 61 | */ |
62 | 62 | ||
63 | #define to_class_dev(obj) container_of((obj), struct class_device, kobj) | ||
64 | #define to_c2port_device(obj) container_of((obj), struct c2port_device, class) | ||
65 | |||
66 | extern struct c2port_device *c2port_device_register(char *name, | 63 | extern struct c2port_device *c2port_device_register(char *name, |
67 | struct c2port_ops *ops, void *devdata); | 64 | struct c2port_ops *ops, void *devdata); |
68 | extern void c2port_device_unregister(struct c2port_device *dev); | 65 | extern void c2port_device_unregister(struct c2port_device *dev); |
diff --git a/include/linux/capability.h b/include/linux/capability.h index 4554db0cde86..c42112350003 100644 --- a/include/linux/capability.h +++ b/include/linux/capability.h | |||
@@ -417,7 +417,6 @@ extern const kernel_cap_t __cap_init_eff_set; | |||
417 | 417 | ||
418 | # define CAP_EMPTY_SET ((kernel_cap_t){{ 0, 0 }}) | 418 | # define CAP_EMPTY_SET ((kernel_cap_t){{ 0, 0 }}) |
419 | # define CAP_FULL_SET ((kernel_cap_t){{ ~0, ~0 }}) | 419 | # define CAP_FULL_SET ((kernel_cap_t){{ ~0, ~0 }}) |
420 | # define CAP_INIT_EFF_SET ((kernel_cap_t){{ ~CAP_TO_MASK(CAP_SETPCAP), ~0 }}) | ||
421 | # define CAP_FS_SET ((kernel_cap_t){{ CAP_FS_MASK_B0 \ | 420 | # define CAP_FS_SET ((kernel_cap_t){{ CAP_FS_MASK_B0 \ |
422 | | CAP_TO_MASK(CAP_LINUX_IMMUTABLE), \ | 421 | | CAP_TO_MASK(CAP_LINUX_IMMUTABLE), \ |
423 | CAP_FS_MASK_B1 } }) | 422 | CAP_FS_MASK_B1 } }) |
@@ -427,11 +426,7 @@ extern const kernel_cap_t __cap_init_eff_set; | |||
427 | 426 | ||
428 | #endif /* _KERNEL_CAPABILITY_U32S != 2 */ | 427 | #endif /* _KERNEL_CAPABILITY_U32S != 2 */ |
429 | 428 | ||
430 | #define CAP_INIT_INH_SET CAP_EMPTY_SET | ||
431 | |||
432 | # define cap_clear(c) do { (c) = __cap_empty_set; } while (0) | 429 | # define cap_clear(c) do { (c) = __cap_empty_set; } while (0) |
433 | # define cap_set_full(c) do { (c) = __cap_full_set; } while (0) | ||
434 | # define cap_set_init_eff(c) do { (c) = __cap_init_eff_set; } while (0) | ||
435 | 430 | ||
436 | #define cap_raise(c, flag) ((c).cap[CAP_TO_INDEX(flag)] |= CAP_TO_MASK(flag)) | 431 | #define cap_raise(c, flag) ((c).cap[CAP_TO_INDEX(flag)] |= CAP_TO_MASK(flag)) |
437 | #define cap_lower(c, flag) ((c).cap[CAP_TO_INDEX(flag)] &= ~CAP_TO_MASK(flag)) | 432 | #define cap_lower(c, flag) ((c).cap[CAP_TO_INDEX(flag)] &= ~CAP_TO_MASK(flag)) |
diff --git a/include/linux/ceph/ceph_fs.h b/include/linux/ceph/ceph_fs.h index b8e995fbd867..b8c60694b2b0 100644 --- a/include/linux/ceph/ceph_fs.h +++ b/include/linux/ceph/ceph_fs.h | |||
@@ -313,6 +313,7 @@ enum { | |||
313 | CEPH_MDS_OP_GETATTR = 0x00101, | 313 | CEPH_MDS_OP_GETATTR = 0x00101, |
314 | CEPH_MDS_OP_LOOKUPHASH = 0x00102, | 314 | CEPH_MDS_OP_LOOKUPHASH = 0x00102, |
315 | CEPH_MDS_OP_LOOKUPPARENT = 0x00103, | 315 | CEPH_MDS_OP_LOOKUPPARENT = 0x00103, |
316 | CEPH_MDS_OP_LOOKUPINO = 0x00104, | ||
316 | 317 | ||
317 | CEPH_MDS_OP_SETXATTR = 0x01105, | 318 | CEPH_MDS_OP_SETXATTR = 0x01105, |
318 | CEPH_MDS_OP_RMXATTR = 0x01106, | 319 | CEPH_MDS_OP_RMXATTR = 0x01106, |
diff --git a/include/linux/cgroup.h b/include/linux/cgroup.h index 5ac7ebc36dbb..ab4ac0ccb857 100644 --- a/include/linux/cgroup.h +++ b/include/linux/cgroup.h | |||
@@ -467,12 +467,14 @@ struct cgroup_subsys { | |||
467 | int (*pre_destroy)(struct cgroup_subsys *ss, struct cgroup *cgrp); | 467 | int (*pre_destroy)(struct cgroup_subsys *ss, struct cgroup *cgrp); |
468 | void (*destroy)(struct cgroup_subsys *ss, struct cgroup *cgrp); | 468 | void (*destroy)(struct cgroup_subsys *ss, struct cgroup *cgrp); |
469 | int (*can_attach)(struct cgroup_subsys *ss, struct cgroup *cgrp, | 469 | int (*can_attach)(struct cgroup_subsys *ss, struct cgroup *cgrp, |
470 | struct task_struct *tsk, bool threadgroup); | 470 | struct task_struct *tsk); |
471 | int (*can_attach_task)(struct cgroup *cgrp, struct task_struct *tsk); | ||
471 | void (*cancel_attach)(struct cgroup_subsys *ss, struct cgroup *cgrp, | 472 | void (*cancel_attach)(struct cgroup_subsys *ss, struct cgroup *cgrp, |
472 | struct task_struct *tsk, bool threadgroup); | 473 | struct task_struct *tsk); |
474 | void (*pre_attach)(struct cgroup *cgrp); | ||
475 | void (*attach_task)(struct cgroup *cgrp, struct task_struct *tsk); | ||
473 | void (*attach)(struct cgroup_subsys *ss, struct cgroup *cgrp, | 476 | void (*attach)(struct cgroup_subsys *ss, struct cgroup *cgrp, |
474 | struct cgroup *old_cgrp, struct task_struct *tsk, | 477 | struct cgroup *old_cgrp, struct task_struct *tsk); |
475 | bool threadgroup); | ||
476 | void (*fork)(struct cgroup_subsys *ss, struct task_struct *task); | 478 | void (*fork)(struct cgroup_subsys *ss, struct task_struct *task); |
477 | void (*exit)(struct cgroup_subsys *ss, struct cgroup *cgrp, | 479 | void (*exit)(struct cgroup_subsys *ss, struct cgroup *cgrp, |
478 | struct cgroup *old_cgrp, struct task_struct *task); | 480 | struct cgroup *old_cgrp, struct task_struct *task); |
@@ -553,9 +555,6 @@ static inline struct cgroup* task_cgroup(struct task_struct *task, | |||
553 | return task_subsys_state(task, subsys_id)->cgroup; | 555 | return task_subsys_state(task, subsys_id)->cgroup; |
554 | } | 556 | } |
555 | 557 | ||
556 | int cgroup_clone(struct task_struct *tsk, struct cgroup_subsys *ss, | ||
557 | char *nodename); | ||
558 | |||
559 | /* A cgroup_iter should be treated as an opaque object */ | 558 | /* A cgroup_iter should be treated as an opaque object */ |
560 | struct cgroup_iter { | 559 | struct cgroup_iter { |
561 | struct list_head *cg_link; | 560 | struct list_head *cg_link; |
diff --git a/include/linux/cgroup_subsys.h b/include/linux/cgroup_subsys.h index cdbfcb8780ec..ac663c18776c 100644 --- a/include/linux/cgroup_subsys.h +++ b/include/linux/cgroup_subsys.h | |||
@@ -19,12 +19,6 @@ SUBSYS(debug) | |||
19 | 19 | ||
20 | /* */ | 20 | /* */ |
21 | 21 | ||
22 | #ifdef CONFIG_CGROUP_NS | ||
23 | SUBSYS(ns) | ||
24 | #endif | ||
25 | |||
26 | /* */ | ||
27 | |||
28 | #ifdef CONFIG_CGROUP_SCHED | 22 | #ifdef CONFIG_CGROUP_SCHED |
29 | SUBSYS(cpu_cgroup) | 23 | SUBSYS(cpu_cgroup) |
30 | #endif | 24 | #endif |
diff --git a/include/linux/cleancache.h b/include/linux/cleancache.h new file mode 100644 index 000000000000..04ffb2e6c9d0 --- /dev/null +++ b/include/linux/cleancache.h | |||
@@ -0,0 +1,122 @@ | |||
1 | #ifndef _LINUX_CLEANCACHE_H | ||
2 | #define _LINUX_CLEANCACHE_H | ||
3 | |||
4 | #include <linux/fs.h> | ||
5 | #include <linux/exportfs.h> | ||
6 | #include <linux/mm.h> | ||
7 | |||
8 | #define CLEANCACHE_KEY_MAX 6 | ||
9 | |||
10 | /* | ||
11 | * cleancache requires every file with a page in cleancache to have a | ||
12 | * unique key unless/until the file is removed/truncated. For some | ||
13 | * filesystems, the inode number is unique, but for "modern" filesystems | ||
14 | * an exportable filehandle is required (see exportfs.h) | ||
15 | */ | ||
16 | struct cleancache_filekey { | ||
17 | union { | ||
18 | ino_t ino; | ||
19 | __u32 fh[CLEANCACHE_KEY_MAX]; | ||
20 | u32 key[CLEANCACHE_KEY_MAX]; | ||
21 | } u; | ||
22 | }; | ||
23 | |||
24 | struct cleancache_ops { | ||
25 | int (*init_fs)(size_t); | ||
26 | int (*init_shared_fs)(char *uuid, size_t); | ||
27 | int (*get_page)(int, struct cleancache_filekey, | ||
28 | pgoff_t, struct page *); | ||
29 | void (*put_page)(int, struct cleancache_filekey, | ||
30 | pgoff_t, struct page *); | ||
31 | void (*flush_page)(int, struct cleancache_filekey, pgoff_t); | ||
32 | void (*flush_inode)(int, struct cleancache_filekey); | ||
33 | void (*flush_fs)(int); | ||
34 | }; | ||
35 | |||
36 | extern struct cleancache_ops | ||
37 | cleancache_register_ops(struct cleancache_ops *ops); | ||
38 | extern void __cleancache_init_fs(struct super_block *); | ||
39 | extern void __cleancache_init_shared_fs(char *, struct super_block *); | ||
40 | extern int __cleancache_get_page(struct page *); | ||
41 | extern void __cleancache_put_page(struct page *); | ||
42 | extern void __cleancache_flush_page(struct address_space *, struct page *); | ||
43 | extern void __cleancache_flush_inode(struct address_space *); | ||
44 | extern void __cleancache_flush_fs(struct super_block *); | ||
45 | extern int cleancache_enabled; | ||
46 | |||
47 | #ifdef CONFIG_CLEANCACHE | ||
48 | static inline bool cleancache_fs_enabled(struct page *page) | ||
49 | { | ||
50 | return page->mapping->host->i_sb->cleancache_poolid >= 0; | ||
51 | } | ||
52 | static inline bool cleancache_fs_enabled_mapping(struct address_space *mapping) | ||
53 | { | ||
54 | return mapping->host->i_sb->cleancache_poolid >= 0; | ||
55 | } | ||
56 | #else | ||
57 | #define cleancache_enabled (0) | ||
58 | #define cleancache_fs_enabled(_page) (0) | ||
59 | #define cleancache_fs_enabled_mapping(_page) (0) | ||
60 | #endif | ||
61 | |||
62 | /* | ||
63 | * The shim layer provided by these inline functions allows the compiler | ||
64 | * to reduce all cleancache hooks to nothingness if CONFIG_CLEANCACHE | ||
65 | * is disabled, to a single global variable check if CONFIG_CLEANCACHE | ||
66 | * is enabled but no cleancache "backend" has dynamically enabled it, | ||
67 | * and, for the most frequent cleancache ops, to a single global variable | ||
68 | * check plus a superblock element comparison if CONFIG_CLEANCACHE is enabled | ||
69 | * and a cleancache backend has dynamically enabled cleancache, but the | ||
70 | * filesystem referenced by that cleancache op has not enabled cleancache. | ||
71 | * As a result, CONFIG_CLEANCACHE can be enabled by default with essentially | ||
72 | * no measurable performance impact. | ||
73 | */ | ||
74 | |||
75 | static inline void cleancache_init_fs(struct super_block *sb) | ||
76 | { | ||
77 | if (cleancache_enabled) | ||
78 | __cleancache_init_fs(sb); | ||
79 | } | ||
80 | |||
81 | static inline void cleancache_init_shared_fs(char *uuid, struct super_block *sb) | ||
82 | { | ||
83 | if (cleancache_enabled) | ||
84 | __cleancache_init_shared_fs(uuid, sb); | ||
85 | } | ||
86 | |||
87 | static inline int cleancache_get_page(struct page *page) | ||
88 | { | ||
89 | int ret = -1; | ||
90 | |||
91 | if (cleancache_enabled && cleancache_fs_enabled(page)) | ||
92 | ret = __cleancache_get_page(page); | ||
93 | return ret; | ||
94 | } | ||
95 | |||
96 | static inline void cleancache_put_page(struct page *page) | ||
97 | { | ||
98 | if (cleancache_enabled && cleancache_fs_enabled(page)) | ||
99 | __cleancache_put_page(page); | ||
100 | } | ||
101 | |||
102 | static inline void cleancache_flush_page(struct address_space *mapping, | ||
103 | struct page *page) | ||
104 | { | ||
105 | /* careful... page->mapping is NULL sometimes when this is called */ | ||
106 | if (cleancache_enabled && cleancache_fs_enabled_mapping(mapping)) | ||
107 | __cleancache_flush_page(mapping, page); | ||
108 | } | ||
109 | |||
110 | static inline void cleancache_flush_inode(struct address_space *mapping) | ||
111 | { | ||
112 | if (cleancache_enabled && cleancache_fs_enabled_mapping(mapping)) | ||
113 | __cleancache_flush_inode(mapping); | ||
114 | } | ||
115 | |||
116 | static inline void cleancache_flush_fs(struct super_block *sb) | ||
117 | { | ||
118 | if (cleancache_enabled) | ||
119 | __cleancache_flush_fs(sb); | ||
120 | } | ||
121 | |||
122 | #endif /* _LINUX_CLEANCACHE_H */ | ||
diff --git a/include/linux/clocksource.h b/include/linux/clocksource.h index c918fbd33ee5..d4646b48dc4a 100644 --- a/include/linux/clocksource.h +++ b/include/linux/clocksource.h | |||
@@ -337,6 +337,14 @@ static inline void update_vsyscall_tz(void) | |||
337 | 337 | ||
338 | extern void timekeeping_notify(struct clocksource *clock); | 338 | extern void timekeeping_notify(struct clocksource *clock); |
339 | 339 | ||
340 | extern cycle_t clocksource_mmio_readl_up(struct clocksource *); | ||
341 | extern cycle_t clocksource_mmio_readl_down(struct clocksource *); | ||
342 | extern cycle_t clocksource_mmio_readw_up(struct clocksource *); | ||
343 | extern cycle_t clocksource_mmio_readw_down(struct clocksource *); | ||
344 | |||
345 | extern int clocksource_mmio_init(void __iomem *, const char *, | ||
346 | unsigned long, int, unsigned, cycle_t (*)(struct clocksource *)); | ||
347 | |||
340 | extern int clocksource_i8253_init(void); | 348 | extern int clocksource_i8253_init(void); |
341 | 349 | ||
342 | #endif /* _LINUX_CLOCKSOURCE_H */ | 350 | #endif /* _LINUX_CLOCKSOURCE_H */ |
diff --git a/include/linux/compat.h b/include/linux/compat.h index 5778b559d59c..ddcb7db38e67 100644 --- a/include/linux/compat.h +++ b/include/linux/compat.h | |||
@@ -12,6 +12,8 @@ | |||
12 | #include <linux/sem.h> | 12 | #include <linux/sem.h> |
13 | #include <linux/socket.h> | 13 | #include <linux/socket.h> |
14 | #include <linux/if.h> | 14 | #include <linux/if.h> |
15 | #include <linux/fs.h> | ||
16 | #include <linux/aio_abi.h> /* for aio_context_t */ | ||
15 | 17 | ||
16 | #include <asm/compat.h> | 18 | #include <asm/compat.h> |
17 | #include <asm/siginfo.h> | 19 | #include <asm/siginfo.h> |
@@ -26,7 +28,7 @@ typedef __compat_gid32_t compat_gid_t; | |||
26 | struct compat_sel_arg_struct; | 28 | struct compat_sel_arg_struct; |
27 | struct rusage; | 29 | struct rusage; |
28 | 30 | ||
29 | struct compat_itimerspec { | 31 | struct compat_itimerspec { |
30 | struct compat_timespec it_interval; | 32 | struct compat_timespec it_interval; |
31 | struct compat_timespec it_value; | 33 | struct compat_timespec it_value; |
32 | }; | 34 | }; |
@@ -70,9 +72,9 @@ struct compat_timex { | |||
70 | compat_long_t stbcnt; | 72 | compat_long_t stbcnt; |
71 | compat_int_t tai; | 73 | compat_int_t tai; |
72 | 74 | ||
73 | compat_int_t :32; compat_int_t :32; compat_int_t :32; compat_int_t :32; | 75 | compat_int_t:32; compat_int_t:32; compat_int_t:32; compat_int_t:32; |
74 | compat_int_t :32; compat_int_t :32; compat_int_t :32; compat_int_t :32; | 76 | compat_int_t:32; compat_int_t:32; compat_int_t:32; compat_int_t:32; |
75 | compat_int_t :32; compat_int_t :32; compat_int_t :32; | 77 | compat_int_t:32; compat_int_t:32; compat_int_t:32; |
76 | }; | 78 | }; |
77 | 79 | ||
78 | #define _COMPAT_NSIG_WORDS (_COMPAT_NSIG / _COMPAT_NSIG_BPW) | 80 | #define _COMPAT_NSIG_WORDS (_COMPAT_NSIG / _COMPAT_NSIG_BPW) |
@@ -81,8 +83,10 @@ typedef struct { | |||
81 | compat_sigset_word sig[_COMPAT_NSIG_WORDS]; | 83 | compat_sigset_word sig[_COMPAT_NSIG_WORDS]; |
82 | } compat_sigset_t; | 84 | } compat_sigset_t; |
83 | 85 | ||
84 | extern int get_compat_timespec(struct timespec *, const struct compat_timespec __user *); | 86 | extern int get_compat_timespec(struct timespec *, |
85 | extern int put_compat_timespec(const struct timespec *, struct compat_timespec __user *); | 87 | const struct compat_timespec __user *); |
88 | extern int put_compat_timespec(const struct timespec *, | ||
89 | struct compat_timespec __user *); | ||
86 | 90 | ||
87 | struct compat_iovec { | 91 | struct compat_iovec { |
88 | compat_uptr_t iov_base; | 92 | compat_uptr_t iov_base; |
@@ -113,7 +117,8 @@ struct compat_rusage { | |||
113 | compat_long_t ru_nivcsw; | 117 | compat_long_t ru_nivcsw; |
114 | }; | 118 | }; |
115 | 119 | ||
116 | extern int put_compat_rusage(const struct rusage *, struct compat_rusage __user *); | 120 | extern int put_compat_rusage(const struct rusage *, |
121 | struct compat_rusage __user *); | ||
117 | 122 | ||
118 | struct compat_siginfo; | 123 | struct compat_siginfo; |
119 | 124 | ||
@@ -166,8 +171,7 @@ struct compat_ifmap { | |||
166 | unsigned char port; | 171 | unsigned char port; |
167 | }; | 172 | }; |
168 | 173 | ||
169 | struct compat_if_settings | 174 | struct compat_if_settings { |
170 | { | ||
171 | unsigned int type; /* Type of physical device or protocol */ | 175 | unsigned int type; /* Type of physical device or protocol */ |
172 | unsigned int size; /* Size of the data allocated by the caller */ | 176 | unsigned int size; /* Size of the data allocated by the caller */ |
173 | compat_uptr_t ifs_ifsu; /* union of pointers */ | 177 | compat_uptr_t ifs_ifsu; /* union of pointers */ |
@@ -195,8 +199,8 @@ struct compat_ifreq { | |||
195 | }; | 199 | }; |
196 | 200 | ||
197 | struct compat_ifconf { | 201 | struct compat_ifconf { |
198 | compat_int_t ifc_len; /* size of buffer */ | 202 | compat_int_t ifc_len; /* size of buffer */ |
199 | compat_caddr_t ifcbuf; | 203 | compat_caddr_t ifcbuf; |
200 | }; | 204 | }; |
201 | 205 | ||
202 | struct compat_robust_list { | 206 | struct compat_robust_list { |
@@ -209,6 +213,18 @@ struct compat_robust_list_head { | |||
209 | compat_uptr_t list_op_pending; | 213 | compat_uptr_t list_op_pending; |
210 | }; | 214 | }; |
211 | 215 | ||
216 | struct compat_statfs; | ||
217 | struct compat_statfs64; | ||
218 | struct compat_old_linux_dirent; | ||
219 | struct compat_linux_dirent; | ||
220 | struct linux_dirent64; | ||
221 | struct compat_msghdr; | ||
222 | struct compat_mmsghdr; | ||
223 | struct compat_sysinfo; | ||
224 | struct compat_sysctl_args; | ||
225 | struct compat_kexec_segment; | ||
226 | struct compat_mq_attr; | ||
227 | |||
212 | extern void compat_exit_robust_list(struct task_struct *curr); | 228 | extern void compat_exit_robust_list(struct task_struct *curr); |
213 | 229 | ||
214 | asmlinkage long | 230 | asmlinkage long |
@@ -243,8 +259,8 @@ asmlinkage ssize_t compat_sys_pwritev(unsigned long fd, | |||
243 | const struct compat_iovec __user *vec, | 259 | const struct compat_iovec __user *vec, |
244 | unsigned long vlen, u32 pos_low, u32 pos_high); | 260 | unsigned long vlen, u32 pos_low, u32 pos_high); |
245 | 261 | ||
246 | int compat_do_execve(char * filename, compat_uptr_t __user *argv, | 262 | int compat_do_execve(char *filename, compat_uptr_t __user *argv, |
247 | compat_uptr_t __user *envp, struct pt_regs * regs); | 263 | compat_uptr_t __user *envp, struct pt_regs *regs); |
248 | 264 | ||
249 | asmlinkage long compat_sys_select(int n, compat_ulong_t __user *inp, | 265 | asmlinkage long compat_sys_select(int n, compat_ulong_t __user *inp, |
250 | compat_ulong_t __user *outp, compat_ulong_t __user *exp, | 266 | compat_ulong_t __user *outp, compat_ulong_t __user *exp, |
@@ -331,12 +347,18 @@ asmlinkage long compat_sys_epoll_pwait(int epfd, | |||
331 | const compat_sigset_t __user *sigmask, | 347 | const compat_sigset_t __user *sigmask, |
332 | compat_size_t sigsetsize); | 348 | compat_size_t sigsetsize); |
333 | 349 | ||
334 | asmlinkage long compat_sys_utimensat(unsigned int dfd, const char __user *filename, | 350 | asmlinkage long compat_sys_utime(const char __user *filename, |
335 | struct compat_timespec __user *t, int flags); | 351 | struct compat_utimbuf __user *t); |
352 | asmlinkage long compat_sys_utimensat(unsigned int dfd, | ||
353 | const char __user *filename, | ||
354 | struct compat_timespec __user *t, | ||
355 | int flags); | ||
336 | 356 | ||
357 | asmlinkage long compat_sys_time(compat_time_t __user *tloc); | ||
358 | asmlinkage long compat_sys_stime(compat_time_t __user *tptr); | ||
337 | asmlinkage long compat_sys_signalfd(int ufd, | 359 | asmlinkage long compat_sys_signalfd(int ufd, |
338 | const compat_sigset_t __user *sigmask, | 360 | const compat_sigset_t __user *sigmask, |
339 | compat_size_t sigsetsize); | 361 | compat_size_t sigsetsize); |
340 | asmlinkage long compat_sys_timerfd_settime(int ufd, int flags, | 362 | asmlinkage long compat_sys_timerfd_settime(int ufd, int flags, |
341 | const struct compat_itimerspec __user *utmr, | 363 | const struct compat_itimerspec __user *utmr, |
342 | struct compat_itimerspec __user *otmr); | 364 | struct compat_itimerspec __user *otmr); |
@@ -348,16 +370,190 @@ asmlinkage long compat_sys_move_pages(pid_t pid, unsigned long nr_page, | |||
348 | const int __user *nodes, | 370 | const int __user *nodes, |
349 | int __user *status, | 371 | int __user *status, |
350 | int flags); | 372 | int flags); |
351 | asmlinkage long compat_sys_futimesat(unsigned int dfd, const char __user *filename, | 373 | asmlinkage long compat_sys_futimesat(unsigned int dfd, |
374 | const char __user *filename, | ||
352 | struct compat_timeval __user *t); | 375 | struct compat_timeval __user *t); |
353 | asmlinkage long compat_sys_newfstatat(unsigned int dfd, const char __user * filename, | 376 | asmlinkage long compat_sys_utimes(const char __user *filename, |
377 | struct compat_timeval __user *t); | ||
378 | asmlinkage long compat_sys_newstat(const char __user *filename, | ||
379 | struct compat_stat __user *statbuf); | ||
380 | asmlinkage long compat_sys_newlstat(const char __user *filename, | ||
381 | struct compat_stat __user *statbuf); | ||
382 | asmlinkage long compat_sys_newfstatat(unsigned int dfd, | ||
383 | const char __user *filename, | ||
354 | struct compat_stat __user *statbuf, | 384 | struct compat_stat __user *statbuf, |
355 | int flag); | 385 | int flag); |
386 | asmlinkage long compat_sys_newfstat(unsigned int fd, | ||
387 | struct compat_stat __user *statbuf); | ||
388 | asmlinkage long compat_sys_statfs(const char __user *pathname, | ||
389 | struct compat_statfs __user *buf); | ||
390 | asmlinkage long compat_sys_fstatfs(unsigned int fd, | ||
391 | struct compat_statfs __user *buf); | ||
392 | asmlinkage long compat_sys_statfs64(const char __user *pathname, | ||
393 | compat_size_t sz, | ||
394 | struct compat_statfs64 __user *buf); | ||
395 | asmlinkage long compat_sys_fstatfs64(unsigned int fd, compat_size_t sz, | ||
396 | struct compat_statfs64 __user *buf); | ||
397 | asmlinkage long compat_sys_fcntl64(unsigned int fd, unsigned int cmd, | ||
398 | unsigned long arg); | ||
399 | asmlinkage long compat_sys_fcntl(unsigned int fd, unsigned int cmd, | ||
400 | unsigned long arg); | ||
401 | asmlinkage long compat_sys_io_setup(unsigned nr_reqs, u32 __user *ctx32p); | ||
402 | asmlinkage long compat_sys_io_getevents(aio_context_t ctx_id, | ||
403 | unsigned long min_nr, | ||
404 | unsigned long nr, | ||
405 | struct io_event __user *events, | ||
406 | struct compat_timespec __user *timeout); | ||
407 | asmlinkage long compat_sys_io_submit(aio_context_t ctx_id, int nr, | ||
408 | u32 __user *iocb); | ||
409 | asmlinkage long compat_sys_mount(const char __user *dev_name, | ||
410 | const char __user *dir_name, | ||
411 | const char __user *type, unsigned long flags, | ||
412 | const void __user *data); | ||
413 | asmlinkage long compat_sys_old_readdir(unsigned int fd, | ||
414 | struct compat_old_linux_dirent __user *, | ||
415 | unsigned int count); | ||
416 | asmlinkage long compat_sys_getdents(unsigned int fd, | ||
417 | struct compat_linux_dirent __user *dirent, | ||
418 | unsigned int count); | ||
419 | asmlinkage long compat_sys_getdents64(unsigned int fd, | ||
420 | struct linux_dirent64 __user *dirent, | ||
421 | unsigned int count); | ||
422 | asmlinkage long compat_sys_vmsplice(int fd, const struct compat_iovec __user *, | ||
423 | unsigned int nr_segs, unsigned int flags); | ||
424 | asmlinkage long compat_sys_open(const char __user *filename, int flags, | ||
425 | int mode); | ||
356 | asmlinkage long compat_sys_openat(unsigned int dfd, const char __user *filename, | 426 | asmlinkage long compat_sys_openat(unsigned int dfd, const char __user *filename, |
357 | int flags, int mode); | 427 | int flags, int mode); |
428 | asmlinkage long compat_sys_open_by_handle_at(int mountdirfd, | ||
429 | struct file_handle __user *handle, | ||
430 | int flags); | ||
431 | asmlinkage long compat_sys_pselect6(int n, compat_ulong_t __user *inp, | ||
432 | compat_ulong_t __user *outp, | ||
433 | compat_ulong_t __user *exp, | ||
434 | struct compat_timespec __user *tsp, | ||
435 | void __user *sig); | ||
436 | asmlinkage long compat_sys_ppoll(struct pollfd __user *ufds, | ||
437 | unsigned int nfds, | ||
438 | struct compat_timespec __user *tsp, | ||
439 | const compat_sigset_t __user *sigmask, | ||
440 | compat_size_t sigsetsize); | ||
441 | #if (defined(CONFIG_NFSD) || defined(CONFIG_NFSD_MODULE)) && \ | ||
442 | !defined(CONFIG_NFSD_DEPRECATED) | ||
443 | union compat_nfsctl_res; | ||
444 | struct compat_nfsctl_arg; | ||
445 | asmlinkage long compat_sys_nfsservctl(int cmd, | ||
446 | struct compat_nfsctl_arg __user *arg, | ||
447 | union compat_nfsctl_res __user *res); | ||
448 | #else | ||
449 | asmlinkage long compat_sys_nfsservctl(int cmd, void *notused, void *notused2); | ||
450 | #endif | ||
451 | asmlinkage long compat_sys_signalfd4(int ufd, | ||
452 | const compat_sigset_t __user *sigmask, | ||
453 | compat_size_t sigsetsize, int flags); | ||
454 | asmlinkage long compat_sys_get_mempolicy(int __user *policy, | ||
455 | compat_ulong_t __user *nmask, | ||
456 | compat_ulong_t maxnode, | ||
457 | compat_ulong_t addr, | ||
458 | compat_ulong_t flags); | ||
459 | asmlinkage long compat_sys_set_mempolicy(int mode, compat_ulong_t __user *nmask, | ||
460 | compat_ulong_t maxnode); | ||
461 | asmlinkage long compat_sys_mbind(compat_ulong_t start, compat_ulong_t len, | ||
462 | compat_ulong_t mode, | ||
463 | compat_ulong_t __user *nmask, | ||
464 | compat_ulong_t maxnode, compat_ulong_t flags); | ||
465 | |||
466 | asmlinkage long compat_sys_setsockopt(int fd, int level, int optname, | ||
467 | char __user *optval, unsigned int optlen); | ||
468 | asmlinkage long compat_sys_sendmsg(int fd, struct compat_msghdr __user *msg, | ||
469 | unsigned flags); | ||
470 | asmlinkage long compat_sys_recvmsg(int fd, struct compat_msghdr __user *msg, | ||
471 | unsigned int flags); | ||
472 | asmlinkage long compat_sys_recv(int fd, void __user *buf, size_t len, | ||
473 | unsigned flags); | ||
474 | asmlinkage long compat_sys_recvfrom(int fd, void __user *buf, size_t len, | ||
475 | unsigned flags, struct sockaddr __user *addr, | ||
476 | int __user *addrlen); | ||
477 | asmlinkage long compat_sys_recvmmsg(int fd, struct compat_mmsghdr __user *mmsg, | ||
478 | unsigned vlen, unsigned int flags, | ||
479 | struct compat_timespec __user *timeout); | ||
480 | asmlinkage long compat_sys_nanosleep(struct compat_timespec __user *rqtp, | ||
481 | struct compat_timespec __user *rmtp); | ||
482 | asmlinkage long compat_sys_getitimer(int which, | ||
483 | struct compat_itimerval __user *it); | ||
484 | asmlinkage long compat_sys_setitimer(int which, | ||
485 | struct compat_itimerval __user *in, | ||
486 | struct compat_itimerval __user *out); | ||
487 | asmlinkage long compat_sys_times(struct compat_tms __user *tbuf); | ||
488 | asmlinkage long compat_sys_setrlimit(unsigned int resource, | ||
489 | struct compat_rlimit __user *rlim); | ||
490 | asmlinkage long compat_sys_getrlimit(unsigned int resource, | ||
491 | struct compat_rlimit __user *rlim); | ||
492 | asmlinkage long compat_sys_getrusage(int who, struct compat_rusage __user *ru); | ||
493 | asmlinkage long compat_sys_sched_setaffinity(compat_pid_t pid, | ||
494 | unsigned int len, | ||
495 | compat_ulong_t __user *user_mask_ptr); | ||
496 | asmlinkage long compat_sys_sched_getaffinity(compat_pid_t pid, | ||
497 | unsigned int len, | ||
498 | compat_ulong_t __user *user_mask_ptr); | ||
499 | asmlinkage long compat_sys_timer_create(clockid_t which_clock, | ||
500 | struct compat_sigevent __user *timer_event_spec, | ||
501 | timer_t __user *created_timer_id); | ||
502 | asmlinkage long compat_sys_timer_settime(timer_t timer_id, int flags, | ||
503 | struct compat_itimerspec __user *new, | ||
504 | struct compat_itimerspec __user *old); | ||
505 | asmlinkage long compat_sys_timer_gettime(timer_t timer_id, | ||
506 | struct compat_itimerspec __user *setting); | ||
507 | asmlinkage long compat_sys_clock_settime(clockid_t which_clock, | ||
508 | struct compat_timespec __user *tp); | ||
509 | asmlinkage long compat_sys_clock_gettime(clockid_t which_clock, | ||
510 | struct compat_timespec __user *tp); | ||
511 | asmlinkage long compat_sys_clock_adjtime(clockid_t which_clock, | ||
512 | struct compat_timex __user *tp); | ||
513 | asmlinkage long compat_sys_clock_getres(clockid_t which_clock, | ||
514 | struct compat_timespec __user *tp); | ||
515 | asmlinkage long compat_sys_clock_nanosleep(clockid_t which_clock, int flags, | ||
516 | struct compat_timespec __user *rqtp, | ||
517 | struct compat_timespec __user *rmtp); | ||
518 | asmlinkage long compat_sys_rt_sigtimedwait(compat_sigset_t __user *uthese, | ||
519 | struct compat_siginfo __user *uinfo, | ||
520 | struct compat_timespec __user *uts, compat_size_t sigsetsize); | ||
521 | asmlinkage long compat_sys_rt_sigsuspend(compat_sigset_t __user *unewset, | ||
522 | compat_size_t sigsetsize); | ||
523 | asmlinkage long compat_sys_sysinfo(struct compat_sysinfo __user *info); | ||
524 | asmlinkage long compat_sys_ioctl(unsigned int fd, unsigned int cmd, | ||
525 | unsigned long arg); | ||
526 | asmlinkage long compat_sys_futex(u32 __user *uaddr, int op, u32 val, | ||
527 | struct compat_timespec __user *utime, u32 __user *uaddr2, | ||
528 | u32 val3); | ||
529 | asmlinkage long compat_sys_getsockopt(int fd, int level, int optname, | ||
530 | char __user *optval, int __user *optlen); | ||
531 | asmlinkage long compat_sys_kexec_load(unsigned long entry, | ||
532 | unsigned long nr_segments, | ||
533 | struct compat_kexec_segment __user *, | ||
534 | unsigned long flags); | ||
535 | asmlinkage long compat_sys_mq_getsetattr(mqd_t mqdes, | ||
536 | const struct compat_mq_attr __user *u_mqstat, | ||
537 | struct compat_mq_attr __user *u_omqstat); | ||
538 | asmlinkage long compat_sys_mq_notify(mqd_t mqdes, | ||
539 | const struct compat_sigevent __user *u_notification); | ||
540 | asmlinkage long compat_sys_mq_open(const char __user *u_name, | ||
541 | int oflag, compat_mode_t mode, | ||
542 | struct compat_mq_attr __user *u_attr); | ||
543 | asmlinkage long compat_sys_mq_timedsend(mqd_t mqdes, | ||
544 | const char __user *u_msg_ptr, | ||
545 | size_t msg_len, unsigned int msg_prio, | ||
546 | const struct compat_timespec __user *u_abs_timeout); | ||
547 | asmlinkage ssize_t compat_sys_mq_timedreceive(mqd_t mqdes, | ||
548 | char __user *u_msg_ptr, | ||
549 | size_t msg_len, unsigned int __user *u_msg_prio, | ||
550 | const struct compat_timespec __user *u_abs_timeout); | ||
551 | asmlinkage long compat_sys_socketcall(int call, u32 __user *args); | ||
552 | asmlinkage long compat_sys_sysctl(struct compat_sysctl_args __user *args); | ||
358 | 553 | ||
359 | extern ssize_t compat_rw_copy_check_uvector(int type, | 554 | extern ssize_t compat_rw_copy_check_uvector(int type, |
360 | const struct compat_iovec __user *uvector, unsigned long nr_segs, | 555 | const struct compat_iovec __user *uvector, |
556 | unsigned long nr_segs, | ||
361 | unsigned long fast_segs, struct iovec *fast_pointer, | 557 | unsigned long fast_segs, struct iovec *fast_pointer, |
362 | struct iovec **ret_pointer); | 558 | struct iovec **ret_pointer); |
363 | 559 | ||
diff --git a/include/linux/compiler-gcc.h b/include/linux/compiler-gcc.h index cb4c1eb7778e..59e4028e833d 100644 --- a/include/linux/compiler-gcc.h +++ b/include/linux/compiler-gcc.h | |||
@@ -34,8 +34,12 @@ | |||
34 | __asm__ ("" : "=r"(__ptr) : "0"(ptr)); \ | 34 | __asm__ ("" : "=r"(__ptr) : "0"(ptr)); \ |
35 | (typeof(ptr)) (__ptr + (off)); }) | 35 | (typeof(ptr)) (__ptr + (off)); }) |
36 | 36 | ||
37 | #ifdef __CHECKER__ | ||
38 | #define __must_be_array(arr) 0 | ||
39 | #else | ||
37 | /* &a[0] degrades to a pointer: a different type from an array */ | 40 | /* &a[0] degrades to a pointer: a different type from an array */ |
38 | #define __must_be_array(a) BUILD_BUG_ON_ZERO(__same_type((a), &(a)[0])) | 41 | #define __must_be_array(a) BUILD_BUG_ON_ZERO(__same_type((a), &(a)[0])) |
42 | #endif | ||
39 | 43 | ||
40 | /* | 44 | /* |
41 | * Force always-inline if the user requests it so via the .config, | 45 | * Force always-inline if the user requests it so via the .config, |
diff --git a/include/linux/compiler-gcc4.h b/include/linux/compiler-gcc4.h index 64b7c003fd7a..dfadc96e9d63 100644 --- a/include/linux/compiler-gcc4.h +++ b/include/linux/compiler-gcc4.h | |||
@@ -51,7 +51,7 @@ | |||
51 | #if __GNUC_MINOR__ > 0 | 51 | #if __GNUC_MINOR__ > 0 |
52 | #define __compiletime_object_size(obj) __builtin_object_size(obj, 0) | 52 | #define __compiletime_object_size(obj) __builtin_object_size(obj, 0) |
53 | #endif | 53 | #endif |
54 | #if __GNUC_MINOR__ >= 4 | 54 | #if __GNUC_MINOR__ >= 4 && !defined(__CHECKER__) |
55 | #define __compiletime_warning(message) __attribute__((warning(message))) | 55 | #define __compiletime_warning(message) __attribute__((warning(message))) |
56 | #define __compiletime_error(message) __attribute__((error(message))) | 56 | #define __compiletime_error(message) __attribute__((error(message))) |
57 | #endif | 57 | #endif |
diff --git a/include/linux/cpumask.h b/include/linux/cpumask.h index bae6fe24d1f9..b24ac56477b4 100644 --- a/include/linux/cpumask.h +++ b/include/linux/cpumask.h | |||
@@ -547,6 +547,21 @@ static inline int cpumask_parse_user(const char __user *buf, int len, | |||
547 | } | 547 | } |
548 | 548 | ||
549 | /** | 549 | /** |
550 | * cpumask_parselist_user - extract a cpumask from a user string | ||
551 | * @buf: the buffer to extract from | ||
552 | * @len: the length of the buffer | ||
553 | * @dstp: the cpumask to set. | ||
554 | * | ||
555 | * Returns -errno, or 0 for success. | ||
556 | */ | ||
557 | static inline int cpumask_parselist_user(const char __user *buf, int len, | ||
558 | struct cpumask *dstp) | ||
559 | { | ||
560 | return bitmap_parselist_user(buf, len, cpumask_bits(dstp), | ||
561 | nr_cpumask_bits); | ||
562 | } | ||
563 | |||
564 | /** | ||
550 | * cpulist_scnprintf - print a cpumask into a string as comma-separated list | 565 | * cpulist_scnprintf - print a cpumask into a string as comma-separated list |
551 | * @buf: the buffer to sprintf into | 566 | * @buf: the buffer to sprintf into |
552 | * @len: the length of the buffer | 567 | * @len: the length of the buffer |
diff --git a/include/linux/cpuset.h b/include/linux/cpuset.h index f20eb8f16025..e9eaec522655 100644 --- a/include/linux/cpuset.h +++ b/include/linux/cpuset.h | |||
@@ -146,7 +146,7 @@ static inline void cpuset_cpus_allowed(struct task_struct *p, | |||
146 | 146 | ||
147 | static inline int cpuset_cpus_allowed_fallback(struct task_struct *p) | 147 | static inline int cpuset_cpus_allowed_fallback(struct task_struct *p) |
148 | { | 148 | { |
149 | cpumask_copy(&p->cpus_allowed, cpu_possible_mask); | 149 | do_set_cpus_allowed(p, cpu_possible_mask); |
150 | return cpumask_any(cpu_active_mask); | 150 | return cpumask_any(cpu_active_mask); |
151 | } | 151 | } |
152 | 152 | ||
diff --git a/include/linux/crash_dump.h b/include/linux/crash_dump.h index 088cd4ace4ef..74054074e876 100644 --- a/include/linux/crash_dump.h +++ b/include/linux/crash_dump.h | |||
@@ -66,6 +66,11 @@ static inline void vmcore_unusable(void) | |||
66 | if (is_kdump_kernel()) | 66 | if (is_kdump_kernel()) |
67 | elfcorehdr_addr = ELFCORE_ADDR_ERR; | 67 | elfcorehdr_addr = ELFCORE_ADDR_ERR; |
68 | } | 68 | } |
69 | |||
70 | #define HAVE_OLDMEM_PFN_IS_RAM 1 | ||
71 | extern int register_oldmem_pfn_is_ram(int (*fn)(unsigned long pfn)); | ||
72 | extern void unregister_oldmem_pfn_is_ram(void); | ||
73 | |||
69 | #else /* !CONFIG_CRASH_DUMP */ | 74 | #else /* !CONFIG_CRASH_DUMP */ |
70 | static inline int is_kdump_kernel(void) { return 0; } | 75 | static inline int is_kdump_kernel(void) { return 0; } |
71 | #endif /* CONFIG_CRASH_DUMP */ | 76 | #endif /* CONFIG_CRASH_DUMP */ |
diff --git a/include/linux/cred.h b/include/linux/cred.h index be16b61283cc..82607992f308 100644 --- a/include/linux/cred.h +++ b/include/linux/cred.h | |||
@@ -1,4 +1,4 @@ | |||
1 | /* Credentials management - see Documentation/credentials.txt | 1 | /* Credentials management - see Documentation/security/credentials.txt |
2 | * | 2 | * |
3 | * Copyright (C) 2008 Red Hat, Inc. All Rights Reserved. | 3 | * Copyright (C) 2008 Red Hat, Inc. All Rights Reserved. |
4 | * Written by David Howells (dhowells@redhat.com) | 4 | * Written by David Howells (dhowells@redhat.com) |
diff --git a/include/linux/dccp.h b/include/linux/dccp.h index d638e85dc501..710c04302a15 100644 --- a/include/linux/dccp.h +++ b/include/linux/dccp.h | |||
@@ -236,6 +236,7 @@ enum dccp_packet_dequeueing_policy { | |||
236 | #ifdef __KERNEL__ | 236 | #ifdef __KERNEL__ |
237 | 237 | ||
238 | #include <linux/in.h> | 238 | #include <linux/in.h> |
239 | #include <linux/interrupt.h> | ||
239 | #include <linux/ktime.h> | 240 | #include <linux/ktime.h> |
240 | #include <linux/list.h> | 241 | #include <linux/list.h> |
241 | #include <linux/uio.h> | 242 | #include <linux/uio.h> |
diff --git a/include/linux/device-mapper.h b/include/linux/device-mapper.h index 32a4423710f5..4427e0454051 100644 --- a/include/linux/device-mapper.h +++ b/include/linux/device-mapper.h | |||
@@ -191,6 +191,12 @@ struct dm_target { | |||
191 | 191 | ||
192 | /* Used to provide an error string from the ctr */ | 192 | /* Used to provide an error string from the ctr */ |
193 | char *error; | 193 | char *error; |
194 | |||
195 | /* | ||
196 | * Set if this target needs to receive discards regardless of | ||
197 | * whether or not its underlying devices have support. | ||
198 | */ | ||
199 | unsigned discards_supported:1; | ||
194 | }; | 200 | }; |
195 | 201 | ||
196 | /* Each target can link one of these into the table */ | 202 | /* Each target can link one of these into the table */ |
diff --git a/include/linux/dlm_plock.h b/include/linux/dlm_plock.h index 2dd21243104f..3b1cc1be419f 100644 --- a/include/linux/dlm_plock.h +++ b/include/linux/dlm_plock.h | |||
@@ -14,7 +14,7 @@ | |||
14 | #define DLM_PLOCK_MISC_NAME "dlm_plock" | 14 | #define DLM_PLOCK_MISC_NAME "dlm_plock" |
15 | 15 | ||
16 | #define DLM_PLOCK_VERSION_MAJOR 1 | 16 | #define DLM_PLOCK_VERSION_MAJOR 1 |
17 | #define DLM_PLOCK_VERSION_MINOR 1 | 17 | #define DLM_PLOCK_VERSION_MINOR 2 |
18 | #define DLM_PLOCK_VERSION_PATCH 0 | 18 | #define DLM_PLOCK_VERSION_PATCH 0 |
19 | 19 | ||
20 | enum { | 20 | enum { |
@@ -23,12 +23,14 @@ enum { | |||
23 | DLM_PLOCK_OP_GET, | 23 | DLM_PLOCK_OP_GET, |
24 | }; | 24 | }; |
25 | 25 | ||
26 | #define DLM_PLOCK_FL_CLOSE 1 | ||
27 | |||
26 | struct dlm_plock_info { | 28 | struct dlm_plock_info { |
27 | __u32 version[3]; | 29 | __u32 version[3]; |
28 | __u8 optype; | 30 | __u8 optype; |
29 | __u8 ex; | 31 | __u8 ex; |
30 | __u8 wait; | 32 | __u8 wait; |
31 | __u8 pad; | 33 | __u8 flags; |
32 | __u32 pid; | 34 | __u32 pid; |
33 | __s32 nodeid; | 35 | __s32 nodeid; |
34 | __s32 rv; | 36 | __s32 rv; |
diff --git a/include/linux/dm-io.h b/include/linux/dm-io.h index 5c9186b93fff..f4b0aa3126f5 100644 --- a/include/linux/dm-io.h +++ b/include/linux/dm-io.h | |||
@@ -69,8 +69,7 @@ struct dm_io_request { | |||
69 | * | 69 | * |
70 | * Create/destroy may block. | 70 | * Create/destroy may block. |
71 | */ | 71 | */ |
72 | struct dm_io_client *dm_io_client_create(unsigned num_pages); | 72 | struct dm_io_client *dm_io_client_create(void); |
73 | int dm_io_client_resize(unsigned num_pages, struct dm_io_client *client); | ||
74 | void dm_io_client_destroy(struct dm_io_client *client); | 73 | void dm_io_client_destroy(struct dm_io_client *client); |
75 | 74 | ||
76 | /* | 75 | /* |
diff --git a/include/linux/dm-kcopyd.h b/include/linux/dm-kcopyd.h index 5db216311695..298d587e349b 100644 --- a/include/linux/dm-kcopyd.h +++ b/include/linux/dm-kcopyd.h | |||
@@ -25,8 +25,7 @@ | |||
25 | * To use kcopyd you must first create a dm_kcopyd_client object. | 25 | * To use kcopyd you must first create a dm_kcopyd_client object. |
26 | */ | 26 | */ |
27 | struct dm_kcopyd_client; | 27 | struct dm_kcopyd_client; |
28 | int dm_kcopyd_client_create(unsigned num_pages, | 28 | struct dm_kcopyd_client *dm_kcopyd_client_create(void); |
29 | struct dm_kcopyd_client **result); | ||
30 | void dm_kcopyd_client_destroy(struct dm_kcopyd_client *kc); | 29 | void dm_kcopyd_client_destroy(struct dm_kcopyd_client *kc); |
31 | 30 | ||
32 | /* | 31 | /* |
diff --git a/include/linux/dma_remapping.h b/include/linux/dma_remapping.h index 5619f8522738..bbd8661b3473 100644 --- a/include/linux/dma_remapping.h +++ b/include/linux/dma_remapping.h | |||
@@ -9,8 +9,12 @@ | |||
9 | #define VTD_PAGE_MASK (((u64)-1) << VTD_PAGE_SHIFT) | 9 | #define VTD_PAGE_MASK (((u64)-1) << VTD_PAGE_SHIFT) |
10 | #define VTD_PAGE_ALIGN(addr) (((addr) + VTD_PAGE_SIZE - 1) & VTD_PAGE_MASK) | 10 | #define VTD_PAGE_ALIGN(addr) (((addr) + VTD_PAGE_SIZE - 1) & VTD_PAGE_MASK) |
11 | 11 | ||
12 | #define VTD_STRIDE_SHIFT (9) | ||
13 | #define VTD_STRIDE_MASK (((u64)-1) << VTD_STRIDE_SHIFT) | ||
14 | |||
12 | #define DMA_PTE_READ (1) | 15 | #define DMA_PTE_READ (1) |
13 | #define DMA_PTE_WRITE (2) | 16 | #define DMA_PTE_WRITE (2) |
17 | #define DMA_PTE_LARGE_PAGE (1 << 7) | ||
14 | #define DMA_PTE_SNP (1 << 11) | 18 | #define DMA_PTE_SNP (1 << 11) |
15 | 19 | ||
16 | #define CONTEXT_TT_MULTI_LEVEL 0 | 20 | #define CONTEXT_TT_MULTI_LEVEL 0 |
diff --git a/include/linux/drbd.h b/include/linux/drbd.h index cec467f5d676..9e5f5607eba3 100644 --- a/include/linux/drbd.h +++ b/include/linux/drbd.h | |||
@@ -38,7 +38,7 @@ | |||
38 | 38 | ||
39 | /* Although the Linux source code makes a difference between | 39 | /* Although the Linux source code makes a difference between |
40 | generic endianness and the bitfields' endianness, there is no | 40 | generic endianness and the bitfields' endianness, there is no |
41 | architecture as of Linux-2.6.24-rc4 where the bitfileds' endianness | 41 | architecture as of Linux-2.6.24-rc4 where the bitfields' endianness |
42 | does not match the generic endianness. */ | 42 | does not match the generic endianness. */ |
43 | 43 | ||
44 | #if __BYTE_ORDER == __LITTLE_ENDIAN | 44 | #if __BYTE_ORDER == __LITTLE_ENDIAN |
@@ -53,7 +53,7 @@ | |||
53 | 53 | ||
54 | 54 | ||
55 | extern const char *drbd_buildtag(void); | 55 | extern const char *drbd_buildtag(void); |
56 | #define REL_VERSION "8.3.10" | 56 | #define REL_VERSION "8.3.11" |
57 | #define API_VERSION 88 | 57 | #define API_VERSION 88 |
58 | #define PRO_VERSION_MIN 86 | 58 | #define PRO_VERSION_MIN 86 |
59 | #define PRO_VERSION_MAX 96 | 59 | #define PRO_VERSION_MAX 96 |
@@ -195,7 +195,7 @@ enum drbd_conns { | |||
195 | C_WF_REPORT_PARAMS, /* we have a socket */ | 195 | C_WF_REPORT_PARAMS, /* we have a socket */ |
196 | C_CONNECTED, /* we have introduced each other */ | 196 | C_CONNECTED, /* we have introduced each other */ |
197 | C_STARTING_SYNC_S, /* starting full sync by admin request. */ | 197 | C_STARTING_SYNC_S, /* starting full sync by admin request. */ |
198 | C_STARTING_SYNC_T, /* stariing full sync by admin request. */ | 198 | C_STARTING_SYNC_T, /* starting full sync by admin request. */ |
199 | C_WF_BITMAP_S, | 199 | C_WF_BITMAP_S, |
200 | C_WF_BITMAP_T, | 200 | C_WF_BITMAP_T, |
201 | C_WF_SYNC_UUID, | 201 | C_WF_SYNC_UUID, |
@@ -236,7 +236,7 @@ union drbd_state { | |||
236 | * pointed out by Maxim Uvarov q<muvarov@ru.mvista.com> | 236 | * pointed out by Maxim Uvarov q<muvarov@ru.mvista.com> |
237 | * even though we transmit as "cpu_to_be32(state)", | 237 | * even though we transmit as "cpu_to_be32(state)", |
238 | * the offsets of the bitfields still need to be swapped | 238 | * the offsets of the bitfields still need to be swapped |
239 | * on different endianess. | 239 | * on different endianness. |
240 | */ | 240 | */ |
241 | struct { | 241 | struct { |
242 | #if defined(__LITTLE_ENDIAN_BITFIELD) | 242 | #if defined(__LITTLE_ENDIAN_BITFIELD) |
@@ -266,7 +266,7 @@ union drbd_state { | |||
266 | unsigned peer:2 ; /* 3/4 primary/secondary/unknown */ | 266 | unsigned peer:2 ; /* 3/4 primary/secondary/unknown */ |
267 | unsigned role:2 ; /* 3/4 primary/secondary/unknown */ | 267 | unsigned role:2 ; /* 3/4 primary/secondary/unknown */ |
268 | #else | 268 | #else |
269 | # error "this endianess is not supported" | 269 | # error "this endianness is not supported" |
270 | #endif | 270 | #endif |
271 | }; | 271 | }; |
272 | unsigned int i; | 272 | unsigned int i; |
diff --git a/include/linux/drbd_tag_magic.h b/include/linux/drbd_tag_magic.h index f14a165e82dc..069543190516 100644 --- a/include/linux/drbd_tag_magic.h +++ b/include/linux/drbd_tag_magic.h | |||
@@ -30,7 +30,7 @@ enum packet_types { | |||
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 | /* declate tag-list-sizes */ | 33 | /* declare tag-list-sizes */ |
34 | static const int tag_list_sizes[] = { | 34 | static const int tag_list_sizes[] = { |
35 | #define NL_PACKET(name, number, fields) 2 fields , | 35 | #define NL_PACKET(name, number, fields) 2 fields , |
36 | #define NL_INTEGER(pn, pr, member) + 4 + 4 | 36 | #define NL_INTEGER(pn, pr, member) + 4 + 4 |
diff --git a/include/linux/dvb/frontend.h b/include/linux/dvb/frontend.h index 493a2bf85f62..36a3ed63f571 100644 --- a/include/linux/dvb/frontend.h +++ b/include/linux/dvb/frontend.h | |||
@@ -175,14 +175,20 @@ typedef enum fe_transmit_mode { | |||
175 | TRANSMISSION_MODE_2K, | 175 | TRANSMISSION_MODE_2K, |
176 | TRANSMISSION_MODE_8K, | 176 | TRANSMISSION_MODE_8K, |
177 | TRANSMISSION_MODE_AUTO, | 177 | TRANSMISSION_MODE_AUTO, |
178 | TRANSMISSION_MODE_4K | 178 | TRANSMISSION_MODE_4K, |
179 | TRANSMISSION_MODE_1K, | ||
180 | TRANSMISSION_MODE_16K, | ||
181 | TRANSMISSION_MODE_32K, | ||
179 | } fe_transmit_mode_t; | 182 | } fe_transmit_mode_t; |
180 | 183 | ||
181 | typedef enum fe_bandwidth { | 184 | typedef enum fe_bandwidth { |
182 | BANDWIDTH_8_MHZ, | 185 | BANDWIDTH_8_MHZ, |
183 | BANDWIDTH_7_MHZ, | 186 | BANDWIDTH_7_MHZ, |
184 | BANDWIDTH_6_MHZ, | 187 | BANDWIDTH_6_MHZ, |
185 | BANDWIDTH_AUTO | 188 | BANDWIDTH_AUTO, |
189 | BANDWIDTH_5_MHZ, | ||
190 | BANDWIDTH_10_MHZ, | ||
191 | BANDWIDTH_1_712_MHZ, | ||
186 | } fe_bandwidth_t; | 192 | } fe_bandwidth_t; |
187 | 193 | ||
188 | 194 | ||
@@ -191,7 +197,10 @@ typedef enum fe_guard_interval { | |||
191 | GUARD_INTERVAL_1_16, | 197 | GUARD_INTERVAL_1_16, |
192 | GUARD_INTERVAL_1_8, | 198 | GUARD_INTERVAL_1_8, |
193 | GUARD_INTERVAL_1_4, | 199 | GUARD_INTERVAL_1_4, |
194 | GUARD_INTERVAL_AUTO | 200 | GUARD_INTERVAL_AUTO, |
201 | GUARD_INTERVAL_1_128, | ||
202 | GUARD_INTERVAL_19_128, | ||
203 | GUARD_INTERVAL_19_256, | ||
195 | } fe_guard_interval_t; | 204 | } fe_guard_interval_t; |
196 | 205 | ||
197 | 206 | ||
@@ -305,7 +314,9 @@ struct dvb_frontend_event { | |||
305 | 314 | ||
306 | #define DTV_ISDBS_TS_ID 42 | 315 | #define DTV_ISDBS_TS_ID 42 |
307 | 316 | ||
308 | #define DTV_MAX_COMMAND DTV_ISDBS_TS_ID | 317 | #define DTV_DVBT2_PLP_ID 43 |
318 | |||
319 | #define DTV_MAX_COMMAND DTV_DVBT2_PLP_ID | ||
309 | 320 | ||
310 | typedef enum fe_pilot { | 321 | typedef enum fe_pilot { |
311 | PILOT_ON, | 322 | PILOT_ON, |
@@ -337,6 +348,7 @@ typedef enum fe_delivery_system { | |||
337 | SYS_DMBTH, | 348 | SYS_DMBTH, |
338 | SYS_CMMB, | 349 | SYS_CMMB, |
339 | SYS_DAB, | 350 | SYS_DAB, |
351 | SYS_DVBT2, | ||
340 | } fe_delivery_system_t; | 352 | } fe_delivery_system_t; |
341 | 353 | ||
342 | struct dtv_cmds_h { | 354 | struct dtv_cmds_h { |
diff --git a/include/linux/dvb/version.h b/include/linux/dvb/version.h index 5a7546c12688..1421cc84afaa 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 2 | 27 | #define DVB_API_VERSION_MINOR 3 |
28 | 28 | ||
29 | #endif /*_DVBVERSION_H_*/ | 29 | #endif /*_DVBVERSION_H_*/ |
diff --git a/include/linux/dw_dmac.h b/include/linux/dw_dmac.h index 6998d9376ef9..4bfe0a2f7d50 100644 --- a/include/linux/dw_dmac.h +++ b/include/linux/dw_dmac.h | |||
@@ -3,6 +3,7 @@ | |||
3 | * AVR32 systems.) | 3 | * AVR32 systems.) |
4 | * | 4 | * |
5 | * Copyright (C) 2007 Atmel Corporation | 5 | * Copyright (C) 2007 Atmel Corporation |
6 | * Copyright (C) 2010-2011 ST Microelectronics | ||
6 | * | 7 | * |
7 | * This program is free software; you can redistribute it and/or modify | 8 | * This program is free software; you can redistribute it and/or modify |
8 | * it under the terms of the GNU General Public License version 2 as | 9 | * it under the terms of the GNU General Public License version 2 as |
diff --git a/include/linux/efi.h b/include/linux/efi.h index 33fa1203024e..e376270cd26e 100644 --- a/include/linux/efi.h +++ b/include/linux/efi.h | |||
@@ -299,6 +299,7 @@ extern void efi_initialize_iomem_resources(struct resource *code_resource, | |||
299 | struct resource *data_resource, struct resource *bss_resource); | 299 | struct resource *data_resource, struct resource *bss_resource); |
300 | extern unsigned long efi_get_time(void); | 300 | extern unsigned long efi_get_time(void); |
301 | extern int efi_set_rtc_mmss(unsigned long nowtime); | 301 | extern int efi_set_rtc_mmss(unsigned long nowtime); |
302 | extern void efi_reserve_boot_services(void); | ||
302 | extern struct efi_memory_map memmap; | 303 | extern struct efi_memory_map memmap; |
303 | 304 | ||
304 | /** | 305 | /** |
diff --git a/include/linux/elf.h b/include/linux/elf.h index 4d608014753a..110821cb6ea5 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_ARM_VFP 0x400 /* ARM VFP/NEON registers */ | ||
398 | 399 | ||
399 | 400 | ||
400 | /* Note header in a PT_NOTE section */ | 401 | /* Note header in a PT_NOTE section */ |
diff --git a/include/linux/ext3_fs.h b/include/linux/ext3_fs.h index 85c1d302c12e..5e06acf95d0f 100644 --- a/include/linux/ext3_fs.h +++ b/include/linux/ext3_fs.h | |||
@@ -909,7 +909,7 @@ extern int ext3_setattr (struct dentry *, struct iattr *); | |||
909 | extern void ext3_evict_inode (struct inode *); | 909 | extern void ext3_evict_inode (struct inode *); |
910 | extern int ext3_sync_inode (handle_t *, struct inode *); | 910 | extern int ext3_sync_inode (handle_t *, struct inode *); |
911 | extern void ext3_discard_reservation (struct inode *); | 911 | extern void ext3_discard_reservation (struct inode *); |
912 | extern void ext3_dirty_inode(struct inode *); | 912 | extern void ext3_dirty_inode(struct inode *, int); |
913 | extern int ext3_change_inode_journal_flag(struct inode *, int); | 913 | extern int ext3_change_inode_journal_flag(struct inode *, int); |
914 | extern int ext3_get_inode_loc(struct inode *, struct ext3_iloc *); | 914 | extern int ext3_get_inode_loc(struct inode *, struct ext3_iloc *); |
915 | extern int ext3_can_truncate(struct inode *inode); | 915 | extern int ext3_can_truncate(struct inode *inode); |
diff --git a/include/linux/flex_array.h b/include/linux/flex_array.h index ebeb2f3ad068..6843cf193a44 100644 --- a/include/linux/flex_array.h +++ b/include/linux/flex_array.h | |||
@@ -21,6 +21,8 @@ struct flex_array { | |||
21 | struct { | 21 | struct { |
22 | int element_size; | 22 | int element_size; |
23 | int total_nr_elements; | 23 | int total_nr_elements; |
24 | int elems_per_part; | ||
25 | u32 reciprocal_elems; | ||
24 | struct flex_array_part *parts[]; | 26 | struct flex_array_part *parts[]; |
25 | }; | 27 | }; |
26 | /* | 28 | /* |
diff --git a/include/linux/fs.h b/include/linux/fs.h index cdf9495df204..c55d6b7cd5d6 100644 --- a/include/linux/fs.h +++ b/include/linux/fs.h | |||
@@ -23,7 +23,8 @@ | |||
23 | 23 | ||
24 | /* Fixed constants first: */ | 24 | /* Fixed constants first: */ |
25 | #undef NR_OPEN | 25 | #undef NR_OPEN |
26 | #define INR_OPEN 1024 /* Initial setting for nfile rlimits */ | 26 | #define INR_OPEN_CUR 1024 /* Initial setting for nfile rlimits */ |
27 | #define INR_OPEN_MAX 4096 /* Hard limit for nfile rlimits */ | ||
27 | 28 | ||
28 | #define BLOCK_SIZE_BITS 10 | 29 | #define BLOCK_SIZE_BITS 10 |
29 | #define BLOCK_SIZE (1<<BLOCK_SIZE_BITS) | 30 | #define BLOCK_SIZE (1<<BLOCK_SIZE_BITS) |
@@ -236,6 +237,7 @@ struct inodes_stat_t { | |||
236 | #define S_PRIVATE 512 /* Inode is fs-internal */ | 237 | #define S_PRIVATE 512 /* Inode is fs-internal */ |
237 | #define S_IMA 1024 /* Inode has an associated IMA struct */ | 238 | #define S_IMA 1024 /* Inode has an associated IMA struct */ |
238 | #define S_AUTOMOUNT 2048 /* Automount/referral quasi-directory */ | 239 | #define S_AUTOMOUNT 2048 /* Automount/referral quasi-directory */ |
240 | #define S_NOSEC 4096 /* no suid or xattr security attributes */ | ||
239 | 241 | ||
240 | /* | 242 | /* |
241 | * Note that nosuid etc flags are inode-specific: setting some file-system | 243 | * Note that nosuid etc flags are inode-specific: setting some file-system |
@@ -272,6 +274,7 @@ struct inodes_stat_t { | |||
272 | #define IS_PRIVATE(inode) ((inode)->i_flags & S_PRIVATE) | 274 | #define IS_PRIVATE(inode) ((inode)->i_flags & S_PRIVATE) |
273 | #define IS_IMA(inode) ((inode)->i_flags & S_IMA) | 275 | #define IS_IMA(inode) ((inode)->i_flags & S_IMA) |
274 | #define IS_AUTOMOUNT(inode) ((inode)->i_flags & S_AUTOMOUNT) | 276 | #define IS_AUTOMOUNT(inode) ((inode)->i_flags & S_AUTOMOUNT) |
277 | #define IS_NOSEC(inode) ((inode)->i_flags & S_NOSEC) | ||
275 | 278 | ||
276 | /* the read-only stuff doesn't really belong here, but any other place is | 279 | /* the read-only stuff doesn't really belong here, but any other place is |
277 | probably as bad and I don't want to create yet another include file. */ | 280 | probably as bad and I don't want to create yet another include file. */ |
@@ -634,8 +637,7 @@ struct address_space { | |||
634 | unsigned int i_mmap_writable;/* count VM_SHARED mappings */ | 637 | unsigned int i_mmap_writable;/* count VM_SHARED mappings */ |
635 | struct prio_tree_root i_mmap; /* tree of private and shared mappings */ | 638 | struct prio_tree_root i_mmap; /* tree of private and shared mappings */ |
636 | struct list_head i_mmap_nonlinear;/*list VM_NONLINEAR mappings */ | 639 | struct list_head i_mmap_nonlinear;/*list VM_NONLINEAR mappings */ |
637 | spinlock_t i_mmap_lock; /* protect tree, count, list */ | 640 | struct mutex i_mmap_mutex; /* protect tree, count, list */ |
638 | unsigned int truncate_count; /* Cover race condition with truncate */ | ||
639 | unsigned long nrpages; /* number of total pages */ | 641 | unsigned long nrpages; /* number of total pages */ |
640 | pgoff_t writeback_index;/* writeback starts here */ | 642 | pgoff_t writeback_index;/* writeback starts here */ |
641 | const struct address_space_operations *a_ops; /* methods */ | 643 | const struct address_space_operations *a_ops; /* methods */ |
@@ -644,7 +646,6 @@ struct address_space { | |||
644 | spinlock_t private_lock; /* for use by the address_space */ | 646 | spinlock_t private_lock; /* for use by the address_space */ |
645 | struct list_head private_list; /* ditto */ | 647 | struct list_head private_list; /* ditto */ |
646 | struct address_space *assoc_mapping; /* ditto */ | 648 | struct address_space *assoc_mapping; /* ditto */ |
647 | struct mutex unmap_mutex; /* to protect unmapping */ | ||
648 | } __attribute__((aligned(sizeof(long)))); | 649 | } __attribute__((aligned(sizeof(long)))); |
649 | /* | 650 | /* |
650 | * On most architectures that alignment is already the case; but | 651 | * On most architectures that alignment is already the case; but |
@@ -1429,6 +1430,11 @@ struct super_block { | |||
1429 | */ | 1430 | */ |
1430 | char __rcu *s_options; | 1431 | char __rcu *s_options; |
1431 | const struct dentry_operations *s_d_op; /* default d_op for dentries */ | 1432 | const struct dentry_operations *s_d_op; /* default d_op for dentries */ |
1433 | |||
1434 | /* | ||
1435 | * Saved pool identifier for cleancache (-1 means none) | ||
1436 | */ | ||
1437 | int cleancache_poolid; | ||
1432 | }; | 1438 | }; |
1433 | 1439 | ||
1434 | extern struct timespec current_fs_time(struct super_block *sb); | 1440 | extern struct timespec current_fs_time(struct super_block *sb); |
@@ -1614,7 +1620,7 @@ struct super_operations { | |||
1614 | struct inode *(*alloc_inode)(struct super_block *sb); | 1620 | struct inode *(*alloc_inode)(struct super_block *sb); |
1615 | void (*destroy_inode)(struct inode *); | 1621 | void (*destroy_inode)(struct inode *); |
1616 | 1622 | ||
1617 | void (*dirty_inode) (struct inode *); | 1623 | void (*dirty_inode) (struct inode *, int flags); |
1618 | int (*write_inode) (struct inode *, struct writeback_control *wbc); | 1624 | int (*write_inode) (struct inode *, struct writeback_control *wbc); |
1619 | int (*drop_inode) (struct inode *); | 1625 | int (*drop_inode) (struct inode *); |
1620 | void (*evict_inode) (struct inode *); | 1626 | void (*evict_inode) (struct inode *); |
@@ -2578,5 +2584,16 @@ int __init get_filesystem_list(char *buf); | |||
2578 | #define OPEN_FMODE(flag) ((__force fmode_t)(((flag + 1) & O_ACCMODE) | \ | 2584 | #define OPEN_FMODE(flag) ((__force fmode_t)(((flag + 1) & O_ACCMODE) | \ |
2579 | (flag & __FMODE_NONOTIFY))) | 2585 | (flag & __FMODE_NONOTIFY))) |
2580 | 2586 | ||
2587 | static inline int is_sxid(mode_t mode) | ||
2588 | { | ||
2589 | return (mode & S_ISUID) || ((mode & S_ISGID) && (mode & S_IXGRP)); | ||
2590 | } | ||
2591 | |||
2592 | static inline void inode_has_no_xattr(struct inode *inode) | ||
2593 | { | ||
2594 | if (!is_sxid(inode->i_mode)) | ||
2595 | inode->i_flags |= S_NOSEC; | ||
2596 | } | ||
2597 | |||
2581 | #endif /* __KERNEL__ */ | 2598 | #endif /* __KERNEL__ */ |
2582 | #endif /* _LINUX_FS_H */ | 2599 | #endif /* _LINUX_FS_H */ |
diff --git a/include/linux/fscache-cache.h b/include/linux/fscache-cache.h index 76427e688d15..af095b54502e 100644 --- a/include/linux/fscache-cache.h +++ b/include/linux/fscache-cache.h | |||
@@ -100,17 +100,6 @@ struct fscache_operation { | |||
100 | 100 | ||
101 | /* operation releaser */ | 101 | /* operation releaser */ |
102 | fscache_operation_release_t release; | 102 | fscache_operation_release_t release; |
103 | |||
104 | #ifdef CONFIG_WORKQUEUE_DEBUGFS | ||
105 | struct work_struct put_work; /* work to delay operation put */ | ||
106 | const char *name; /* operation name */ | ||
107 | const char *state; /* operation state */ | ||
108 | #define fscache_set_op_name(OP, N) do { (OP)->name = (N); } while(0) | ||
109 | #define fscache_set_op_state(OP, S) do { (OP)->state = (S); } while(0) | ||
110 | #else | ||
111 | #define fscache_set_op_name(OP, N) do { } while(0) | ||
112 | #define fscache_set_op_state(OP, S) do { } while(0) | ||
113 | #endif | ||
114 | }; | 103 | }; |
115 | 104 | ||
116 | extern atomic_t fscache_op_debug_id; | 105 | extern atomic_t fscache_op_debug_id; |
@@ -137,7 +126,6 @@ static inline void fscache_operation_init(struct fscache_operation *op, | |||
137 | op->processor = processor; | 126 | op->processor = processor; |
138 | op->release = release; | 127 | op->release = release; |
139 | INIT_LIST_HEAD(&op->pend_link); | 128 | INIT_LIST_HEAD(&op->pend_link); |
140 | fscache_set_op_state(op, "Init"); | ||
141 | } | 129 | } |
142 | 130 | ||
143 | /* | 131 | /* |
diff --git a/include/linux/fsl_devices.h b/include/linux/fsl_devices.h index 4eb56ed75fbc..fffdf00f87b9 100644 --- a/include/linux/fsl_devices.h +++ b/include/linux/fsl_devices.h | |||
@@ -72,6 +72,7 @@ struct fsl_usb2_platform_data { | |||
72 | void (*exit)(struct platform_device *); | 72 | void (*exit)(struct platform_device *); |
73 | void __iomem *regs; /* ioremap'd register base */ | 73 | void __iomem *regs; /* ioremap'd register base */ |
74 | struct clk *clk; | 74 | struct clk *clk; |
75 | unsigned power_budget; /* hcd->power_budget */ | ||
75 | unsigned big_endian_mmio:1; | 76 | unsigned big_endian_mmio:1; |
76 | unsigned big_endian_desc:1; | 77 | unsigned big_endian_desc:1; |
77 | unsigned es:1; /* need USBMODE:ES */ | 78 | unsigned es:1; /* need USBMODE:ES */ |
@@ -79,6 +80,21 @@ struct fsl_usb2_platform_data { | |||
79 | unsigned have_sysif_regs:1; | 80 | unsigned have_sysif_regs:1; |
80 | unsigned invert_drvvbus:1; | 81 | unsigned invert_drvvbus:1; |
81 | unsigned invert_pwr_fault:1; | 82 | unsigned invert_pwr_fault:1; |
83 | |||
84 | unsigned suspended:1; | ||
85 | unsigned already_suspended:1; | ||
86 | |||
87 | /* register save area for suspend/resume */ | ||
88 | u32 pm_command; | ||
89 | u32 pm_status; | ||
90 | u32 pm_intr_enable; | ||
91 | u32 pm_frame_index; | ||
92 | u32 pm_segment; | ||
93 | u32 pm_frame_list; | ||
94 | u32 pm_async_next; | ||
95 | u32 pm_configured_flag; | ||
96 | u32 pm_portsc; | ||
97 | u32 pm_usbgenctrl; | ||
82 | }; | 98 | }; |
83 | 99 | ||
84 | /* Flags in fsl_usb2_mph_platform_data */ | 100 | /* Flags in fsl_usb2_mph_platform_data */ |
diff --git a/include/linux/ftrace_event.h b/include/linux/ftrace_event.h index b5a550a39a70..59d3ef100eb9 100644 --- a/include/linux/ftrace_event.h +++ b/include/linux/ftrace_event.h | |||
@@ -16,6 +16,11 @@ struct trace_print_flags { | |||
16 | const char *name; | 16 | const char *name; |
17 | }; | 17 | }; |
18 | 18 | ||
19 | struct trace_print_flags_u64 { | ||
20 | unsigned long long mask; | ||
21 | const char *name; | ||
22 | }; | ||
23 | |||
19 | const char *ftrace_print_flags_seq(struct trace_seq *p, const char *delim, | 24 | const char *ftrace_print_flags_seq(struct trace_seq *p, const char *delim, |
20 | unsigned long flags, | 25 | unsigned long flags, |
21 | const struct trace_print_flags *flag_array); | 26 | const struct trace_print_flags *flag_array); |
@@ -23,6 +28,13 @@ const char *ftrace_print_flags_seq(struct trace_seq *p, const char *delim, | |||
23 | const char *ftrace_print_symbols_seq(struct trace_seq *p, unsigned long val, | 28 | const char *ftrace_print_symbols_seq(struct trace_seq *p, unsigned long val, |
24 | const struct trace_print_flags *symbol_array); | 29 | const struct trace_print_flags *symbol_array); |
25 | 30 | ||
31 | #if BITS_PER_LONG == 32 | ||
32 | const char *ftrace_print_symbols_seq_u64(struct trace_seq *p, | ||
33 | unsigned long long val, | ||
34 | const struct trace_print_flags_u64 | ||
35 | *symbol_array); | ||
36 | #endif | ||
37 | |||
26 | const char *ftrace_print_hex_seq(struct trace_seq *p, | 38 | const char *ftrace_print_hex_seq(struct trace_seq *p, |
27 | const unsigned char *buf, int len); | 39 | const unsigned char *buf, int len); |
28 | 40 | ||
diff --git a/include/linux/genalloc.h b/include/linux/genalloc.h index 9869ef3674ac..5bbebda78b02 100644 --- a/include/linux/genalloc.h +++ b/include/linux/genalloc.h | |||
@@ -9,6 +9,8 @@ | |||
9 | */ | 9 | */ |
10 | 10 | ||
11 | 11 | ||
12 | #ifndef __GENALLOC_H__ | ||
13 | #define __GENALLOC_H__ | ||
12 | /* | 14 | /* |
13 | * General purpose special memory pool descriptor. | 15 | * General purpose special memory pool descriptor. |
14 | */ | 16 | */ |
@@ -24,13 +26,34 @@ struct gen_pool { | |||
24 | struct gen_pool_chunk { | 26 | struct gen_pool_chunk { |
25 | spinlock_t lock; | 27 | spinlock_t lock; |
26 | struct list_head next_chunk; /* next chunk in pool */ | 28 | struct list_head next_chunk; /* next chunk in pool */ |
29 | phys_addr_t phys_addr; /* physical starting address of memory chunk */ | ||
27 | unsigned long start_addr; /* starting address of memory chunk */ | 30 | unsigned long start_addr; /* starting address of memory chunk */ |
28 | unsigned long end_addr; /* ending address of memory chunk */ | 31 | unsigned long end_addr; /* ending address of memory chunk */ |
29 | unsigned long bits[0]; /* bitmap for allocating memory chunk */ | 32 | unsigned long bits[0]; /* bitmap for allocating memory chunk */ |
30 | }; | 33 | }; |
31 | 34 | ||
32 | extern struct gen_pool *gen_pool_create(int, int); | 35 | extern struct gen_pool *gen_pool_create(int, int); |
33 | extern int gen_pool_add(struct gen_pool *, unsigned long, size_t, int); | 36 | extern phys_addr_t gen_pool_virt_to_phys(struct gen_pool *pool, unsigned long); |
37 | extern int gen_pool_add_virt(struct gen_pool *, unsigned long, phys_addr_t, | ||
38 | size_t, int); | ||
39 | /** | ||
40 | * gen_pool_add - add a new chunk of special memory to the pool | ||
41 | * @pool: pool to add new memory chunk to | ||
42 | * @addr: starting address of memory chunk to add to pool | ||
43 | * @size: size in bytes of the memory chunk to add to pool | ||
44 | * @nid: node id of the node the chunk structure and bitmap should be | ||
45 | * allocated on, or -1 | ||
46 | * | ||
47 | * Add a new chunk of special memory to the specified pool. | ||
48 | * | ||
49 | * Returns 0 on success or a -ve errno on failure. | ||
50 | */ | ||
51 | static inline int gen_pool_add(struct gen_pool *pool, unsigned long addr, | ||
52 | size_t size, int nid) | ||
53 | { | ||
54 | return gen_pool_add_virt(pool, addr, -1, size, nid); | ||
55 | } | ||
34 | extern void gen_pool_destroy(struct gen_pool *); | 56 | extern void gen_pool_destroy(struct gen_pool *); |
35 | extern unsigned long gen_pool_alloc(struct gen_pool *, size_t); | 57 | extern unsigned long gen_pool_alloc(struct gen_pool *, size_t); |
36 | extern void gen_pool_free(struct gen_pool *, unsigned long, size_t); | 58 | extern void gen_pool_free(struct gen_pool *, unsigned long, size_t); |
59 | #endif /* __GENALLOC_H__ */ | ||
diff --git a/include/linux/genhd.h b/include/linux/genhd.h index d764a426e9fd..300d7582006e 100644 --- a/include/linux/genhd.h +++ b/include/linux/genhd.h | |||
@@ -127,6 +127,7 @@ struct hd_struct { | |||
127 | #define GENHD_FL_SUPPRESS_PARTITION_INFO 32 | 127 | #define GENHD_FL_SUPPRESS_PARTITION_INFO 32 |
128 | #define GENHD_FL_EXT_DEVT 64 /* allow extended devt */ | 128 | #define GENHD_FL_EXT_DEVT 64 /* allow extended devt */ |
129 | #define GENHD_FL_NATIVE_CAPACITY 128 | 129 | #define GENHD_FL_NATIVE_CAPACITY 128 |
130 | #define GENHD_FL_BLOCK_EVENTS_ON_EXCL_WRITE 256 | ||
130 | 131 | ||
131 | enum { | 132 | enum { |
132 | DISK_EVENT_MEDIA_CHANGE = 1 << 0, /* media changed */ | 133 | DISK_EVENT_MEDIA_CHANGE = 1 << 0, /* media changed */ |
diff --git a/include/linux/gfp.h b/include/linux/gfp.h index 56d8fc87fbbc..cb4089254f01 100644 --- a/include/linux/gfp.h +++ b/include/linux/gfp.h | |||
@@ -249,14 +249,7 @@ static inline enum zone_type gfp_zone(gfp_t flags) | |||
249 | 249 | ||
250 | z = (GFP_ZONE_TABLE >> (bit * ZONES_SHIFT)) & | 250 | z = (GFP_ZONE_TABLE >> (bit * ZONES_SHIFT)) & |
251 | ((1 << ZONES_SHIFT) - 1); | 251 | ((1 << ZONES_SHIFT) - 1); |
252 | 252 | VM_BUG_ON((GFP_ZONE_BAD >> bit) & 1); | |
253 | if (__builtin_constant_p(bit)) | ||
254 | BUILD_BUG_ON((GFP_ZONE_BAD >> bit) & 1); | ||
255 | else { | ||
256 | #ifdef CONFIG_DEBUG_VM | ||
257 | BUG_ON((GFP_ZONE_BAD >> bit) & 1); | ||
258 | #endif | ||
259 | } | ||
260 | return z; | 253 | return z; |
261 | } | 254 | } |
262 | 255 | ||
diff --git a/include/linux/gpio.h b/include/linux/gpio.h index 32720baf70f1..32d47e710661 100644 --- a/include/linux/gpio.h +++ b/include/linux/gpio.h | |||
@@ -25,9 +25,9 @@ struct gpio_chip; | |||
25 | * warning when something is wrongly called. | 25 | * warning when something is wrongly called. |
26 | */ | 26 | */ |
27 | 27 | ||
28 | static inline int gpio_is_valid(int number) | 28 | static inline bool gpio_is_valid(int number) |
29 | { | 29 | { |
30 | return 0; | 30 | return false; |
31 | } | 31 | } |
32 | 32 | ||
33 | static inline int gpio_request(unsigned gpio, const char *label) | 33 | static inline int gpio_request(unsigned gpio, const char *label) |
@@ -41,7 +41,7 @@ static inline int gpio_request_one(unsigned gpio, | |||
41 | return -ENOSYS; | 41 | return -ENOSYS; |
42 | } | 42 | } |
43 | 43 | ||
44 | static inline int gpio_request_array(struct gpio *array, size_t num) | 44 | static inline int gpio_request_array(const struct gpio *array, size_t num) |
45 | { | 45 | { |
46 | return -ENOSYS; | 46 | return -ENOSYS; |
47 | } | 47 | } |
@@ -54,7 +54,7 @@ static inline void gpio_free(unsigned gpio) | |||
54 | WARN_ON(1); | 54 | WARN_ON(1); |
55 | } | 55 | } |
56 | 56 | ||
57 | static inline void gpio_free_array(struct gpio *array, size_t num) | 57 | static inline void gpio_free_array(const struct gpio *array, size_t num) |
58 | { | 58 | { |
59 | might_sleep(); | 59 | might_sleep(); |
60 | 60 | ||
diff --git a/include/linux/gpio_keys.h b/include/linux/gpio_keys.h index dd1a56fbe924..b5ca4b2c08ec 100644 --- a/include/linux/gpio_keys.h +++ b/include/linux/gpio_keys.h | |||
@@ -3,14 +3,15 @@ | |||
3 | 3 | ||
4 | struct gpio_keys_button { | 4 | struct gpio_keys_button { |
5 | /* Configuration parameters */ | 5 | /* Configuration parameters */ |
6 | int code; /* input event code (KEY_*, SW_*) */ | 6 | unsigned int code; /* input event code (KEY_*, SW_*) */ |
7 | int gpio; | 7 | int gpio; |
8 | int active_low; | 8 | int active_low; |
9 | char *desc; | 9 | const char *desc; |
10 | int type; /* input event type (EV_KEY, EV_SW) */ | 10 | unsigned int type; /* input event type (EV_KEY, EV_SW, EV_ABS) */ |
11 | int wakeup; /* configure the button as a wake-up source */ | 11 | int wakeup; /* configure the button as a wake-up source */ |
12 | int debounce_interval; /* debounce ticks interval in msecs */ | 12 | int debounce_interval; /* debounce ticks interval in msecs */ |
13 | bool can_disable; | 13 | bool can_disable; |
14 | int value; /* axis value for EV_ABS */ | ||
14 | }; | 15 | }; |
15 | 16 | ||
16 | struct gpio_keys_platform_data { | 17 | struct gpio_keys_platform_data { |
@@ -21,6 +22,7 @@ struct gpio_keys_platform_data { | |||
21 | unsigned int rep:1; /* enable input subsystem auto repeat */ | 22 | unsigned int rep:1; /* enable input subsystem auto repeat */ |
22 | int (*enable)(struct device *dev); | 23 | int (*enable)(struct device *dev); |
23 | void (*disable)(struct device *dev); | 24 | void (*disable)(struct device *dev); |
25 | const char *name; /* input device name */ | ||
24 | }; | 26 | }; |
25 | 27 | ||
26 | #endif | 28 | #endif |
diff --git a/include/linux/hrtimer.h b/include/linux/hrtimer.h index 62f500c724f9..51932e5acf7c 100644 --- a/include/linux/hrtimer.h +++ b/include/linux/hrtimer.h | |||
@@ -143,19 +143,18 @@ struct hrtimer_sleeper { | |||
143 | */ | 143 | */ |
144 | struct hrtimer_clock_base { | 144 | struct hrtimer_clock_base { |
145 | struct hrtimer_cpu_base *cpu_base; | 145 | struct hrtimer_cpu_base *cpu_base; |
146 | clockid_t index; | 146 | int index; |
147 | clockid_t clockid; | ||
147 | struct timerqueue_head active; | 148 | struct timerqueue_head active; |
148 | ktime_t resolution; | 149 | ktime_t resolution; |
149 | ktime_t (*get_time)(void); | 150 | ktime_t (*get_time)(void); |
150 | ktime_t softirq_time; | 151 | ktime_t softirq_time; |
151 | #ifdef CONFIG_HIGH_RES_TIMERS | ||
152 | ktime_t offset; | 152 | ktime_t offset; |
153 | #endif | ||
154 | }; | 153 | }; |
155 | 154 | ||
156 | enum hrtimer_base_type { | 155 | enum hrtimer_base_type { |
157 | HRTIMER_BASE_REALTIME, | ||
158 | HRTIMER_BASE_MONOTONIC, | 156 | HRTIMER_BASE_MONOTONIC, |
157 | HRTIMER_BASE_REALTIME, | ||
159 | HRTIMER_BASE_BOOTTIME, | 158 | HRTIMER_BASE_BOOTTIME, |
160 | HRTIMER_MAX_CLOCK_BASES, | 159 | HRTIMER_MAX_CLOCK_BASES, |
161 | }; | 160 | }; |
@@ -164,7 +163,7 @@ enum hrtimer_base_type { | |||
164 | * struct hrtimer_cpu_base - the per cpu clock bases | 163 | * struct hrtimer_cpu_base - the per cpu clock bases |
165 | * @lock: lock protecting the base and associated clock bases | 164 | * @lock: lock protecting the base and associated clock bases |
166 | * and timers | 165 | * and timers |
167 | * @clock_base: array of clock bases for this cpu | 166 | * @active_bases: Bitfield to mark bases with active timers |
168 | * @expires_next: absolute time of the next event which was scheduled | 167 | * @expires_next: absolute time of the next event which was scheduled |
169 | * via clock_set_next_event() | 168 | * via clock_set_next_event() |
170 | * @hres_active: State of high resolution mode | 169 | * @hres_active: State of high resolution mode |
@@ -173,10 +172,11 @@ enum hrtimer_base_type { | |||
173 | * @nr_retries: Total number of hrtimer interrupt retries | 172 | * @nr_retries: Total number of hrtimer interrupt retries |
174 | * @nr_hangs: Total number of hrtimer interrupt hangs | 173 | * @nr_hangs: Total number of hrtimer interrupt hangs |
175 | * @max_hang_time: Maximum time spent in hrtimer_interrupt | 174 | * @max_hang_time: Maximum time spent in hrtimer_interrupt |
175 | * @clock_base: array of clock bases for this cpu | ||
176 | */ | 176 | */ |
177 | struct hrtimer_cpu_base { | 177 | struct hrtimer_cpu_base { |
178 | raw_spinlock_t lock; | 178 | raw_spinlock_t lock; |
179 | struct hrtimer_clock_base clock_base[HRTIMER_MAX_CLOCK_BASES]; | 179 | unsigned long active_bases; |
180 | #ifdef CONFIG_HIGH_RES_TIMERS | 180 | #ifdef CONFIG_HIGH_RES_TIMERS |
181 | ktime_t expires_next; | 181 | ktime_t expires_next; |
182 | int hres_active; | 182 | int hres_active; |
@@ -186,6 +186,7 @@ struct hrtimer_cpu_base { | |||
186 | unsigned long nr_hangs; | 186 | unsigned long nr_hangs; |
187 | ktime_t max_hang_time; | 187 | ktime_t max_hang_time; |
188 | #endif | 188 | #endif |
189 | struct hrtimer_clock_base clock_base[HRTIMER_MAX_CLOCK_BASES]; | ||
189 | }; | 190 | }; |
190 | 191 | ||
191 | static inline void hrtimer_set_expires(struct hrtimer *timer, ktime_t time) | 192 | static inline void hrtimer_set_expires(struct hrtimer *timer, ktime_t time) |
@@ -256,8 +257,6 @@ static inline ktime_t hrtimer_expires_remaining(const struct hrtimer *timer) | |||
256 | #ifdef CONFIG_HIGH_RES_TIMERS | 257 | #ifdef CONFIG_HIGH_RES_TIMERS |
257 | struct clock_event_device; | 258 | struct clock_event_device; |
258 | 259 | ||
259 | extern void clock_was_set(void); | ||
260 | extern void hres_timers_resume(void); | ||
261 | extern void hrtimer_interrupt(struct clock_event_device *dev); | 260 | extern void hrtimer_interrupt(struct clock_event_device *dev); |
262 | 261 | ||
263 | /* | 262 | /* |
@@ -291,16 +290,8 @@ extern void hrtimer_peek_ahead_timers(void); | |||
291 | # define MONOTONIC_RES_NSEC LOW_RES_NSEC | 290 | # define MONOTONIC_RES_NSEC LOW_RES_NSEC |
292 | # define KTIME_MONOTONIC_RES KTIME_LOW_RES | 291 | # define KTIME_MONOTONIC_RES KTIME_LOW_RES |
293 | 292 | ||
294 | /* | ||
295 | * clock_was_set() is a NOP for non- high-resolution systems. The | ||
296 | * time-sorted order guarantees that a timer does not expire early and | ||
297 | * is expired in the next softirq when the clock was advanced. | ||
298 | */ | ||
299 | static inline void clock_was_set(void) { } | ||
300 | static inline void hrtimer_peek_ahead_timers(void) { } | 293 | static inline void hrtimer_peek_ahead_timers(void) { } |
301 | 294 | ||
302 | static inline void hres_timers_resume(void) { } | ||
303 | |||
304 | /* | 295 | /* |
305 | * In non high resolution mode the time reference is taken from | 296 | * In non high resolution mode the time reference is taken from |
306 | * the base softirq time variable. | 297 | * the base softirq time variable. |
@@ -316,10 +307,18 @@ static inline int hrtimer_is_hres_active(struct hrtimer *timer) | |||
316 | } | 307 | } |
317 | #endif | 308 | #endif |
318 | 309 | ||
310 | extern void clock_was_set(void); | ||
311 | #ifdef CONFIG_TIMERFD | ||
312 | extern void timerfd_clock_was_set(void); | ||
313 | #else | ||
314 | static inline void timerfd_clock_was_set(void) { } | ||
315 | #endif | ||
316 | extern void hrtimers_resume(void); | ||
317 | |||
319 | extern ktime_t ktime_get(void); | 318 | extern ktime_t ktime_get(void); |
320 | extern ktime_t ktime_get_real(void); | 319 | extern ktime_t ktime_get_real(void); |
321 | extern ktime_t ktime_get_boottime(void); | 320 | extern ktime_t ktime_get_boottime(void); |
322 | 321 | extern ktime_t ktime_get_monotonic_offset(void); | |
323 | 322 | ||
324 | DECLARE_PER_CPU(struct tick_device, tick_cpu_device); | 323 | DECLARE_PER_CPU(struct tick_device, tick_cpu_device); |
325 | 324 | ||
diff --git a/include/linux/huge_mm.h b/include/linux/huge_mm.h index 8847c8c29791..48c32ebf65a7 100644 --- a/include/linux/huge_mm.h +++ b/include/linux/huge_mm.h | |||
@@ -92,12 +92,8 @@ extern void __split_huge_page_pmd(struct mm_struct *mm, pmd_t *pmd); | |||
92 | #define wait_split_huge_page(__anon_vma, __pmd) \ | 92 | #define wait_split_huge_page(__anon_vma, __pmd) \ |
93 | do { \ | 93 | do { \ |
94 | pmd_t *____pmd = (__pmd); \ | 94 | pmd_t *____pmd = (__pmd); \ |
95 | spin_unlock_wait(&(__anon_vma)->root->lock); \ | 95 | anon_vma_lock(__anon_vma); \ |
96 | /* \ | 96 | anon_vma_unlock(__anon_vma); \ |
97 | * spin_unlock_wait() is just a loop in C and so the \ | ||
98 | * CPU can reorder anything around it. \ | ||
99 | */ \ | ||
100 | smp_mb(); \ | ||
101 | BUG_ON(pmd_trans_splitting(*____pmd) || \ | 97 | BUG_ON(pmd_trans_splitting(*____pmd) || \ |
102 | pmd_trans_huge(*____pmd)); \ | 98 | pmd_trans_huge(*____pmd)); \ |
103 | } while (0) | 99 | } while (0) |
diff --git a/include/linux/hugetlb.h b/include/linux/hugetlb.h index 943c76b3d4bb..59225ef27d15 100644 --- a/include/linux/hugetlb.h +++ b/include/linux/hugetlb.h | |||
@@ -1,6 +1,7 @@ | |||
1 | #ifndef _LINUX_HUGETLB_H | 1 | #ifndef _LINUX_HUGETLB_H |
2 | #define _LINUX_HUGETLB_H | 2 | #define _LINUX_HUGETLB_H |
3 | 3 | ||
4 | #include <linux/mm_types.h> | ||
4 | #include <linux/fs.h> | 5 | #include <linux/fs.h> |
5 | #include <linux/hugetlb_inline.h> | 6 | #include <linux/hugetlb_inline.h> |
6 | 7 | ||
@@ -41,7 +42,7 @@ int hugetlb_fault(struct mm_struct *mm, struct vm_area_struct *vma, | |||
41 | unsigned long address, unsigned int flags); | 42 | unsigned long address, unsigned int flags); |
42 | int hugetlb_reserve_pages(struct inode *inode, long from, long to, | 43 | int hugetlb_reserve_pages(struct inode *inode, long from, long to, |
43 | struct vm_area_struct *vma, | 44 | struct vm_area_struct *vma, |
44 | int acctflags); | 45 | vm_flags_t vm_flags); |
45 | void hugetlb_unreserve_pages(struct inode *inode, long offset, long freed); | 46 | void hugetlb_unreserve_pages(struct inode *inode, long offset, long freed); |
46 | int dequeue_hwpoisoned_huge_page(struct page *page); | 47 | int dequeue_hwpoisoned_huge_page(struct page *page); |
47 | void copy_huge_page(struct page *dst, struct page *src); | 48 | void copy_huge_page(struct page *dst, struct page *src); |
@@ -168,7 +169,7 @@ static inline struct hugetlbfs_sb_info *HUGETLBFS_SB(struct super_block *sb) | |||
168 | 169 | ||
169 | extern const struct file_operations hugetlbfs_file_operations; | 170 | extern const struct file_operations hugetlbfs_file_operations; |
170 | extern const struct vm_operations_struct hugetlb_vm_ops; | 171 | extern const struct vm_operations_struct hugetlb_vm_ops; |
171 | struct file *hugetlb_file_setup(const char *name, size_t size, int acct, | 172 | struct file *hugetlb_file_setup(const char *name, size_t size, vm_flags_t acct, |
172 | struct user_struct **user, int creat_flags); | 173 | struct user_struct **user, int creat_flags); |
173 | int hugetlb_get_quota(struct address_space *mapping, long delta); | 174 | int hugetlb_get_quota(struct address_space *mapping, long delta); |
174 | void hugetlb_put_quota(struct address_space *mapping, long delta); | 175 | void hugetlb_put_quota(struct address_space *mapping, long delta); |
@@ -192,7 +193,7 @@ static inline void set_file_hugepages(struct file *file) | |||
192 | #define is_file_hugepages(file) 0 | 193 | #define is_file_hugepages(file) 0 |
193 | #define set_file_hugepages(file) BUG() | 194 | #define set_file_hugepages(file) BUG() |
194 | static inline struct file *hugetlb_file_setup(const char *name, size_t size, | 195 | static inline struct file *hugetlb_file_setup(const char *name, size_t size, |
195 | int acctflag, struct user_struct **user, int creat_flags) | 196 | vm_flags_t acctflag, struct user_struct **user, int creat_flags) |
196 | { | 197 | { |
197 | return ERR_PTR(-ENOSYS); | 198 | return ERR_PTR(-ENOSYS); |
198 | } | 199 | } |
diff --git a/include/linux/hugetlb_inline.h b/include/linux/hugetlb_inline.h index 6931489a5c14..2bb681fbeb35 100644 --- a/include/linux/hugetlb_inline.h +++ b/include/linux/hugetlb_inline.h | |||
@@ -7,7 +7,7 @@ | |||
7 | 7 | ||
8 | static inline int is_vm_hugetlb_page(struct vm_area_struct *vma) | 8 | static inline int is_vm_hugetlb_page(struct vm_area_struct *vma) |
9 | { | 9 | { |
10 | return vma->vm_flags & VM_HUGETLB; | 10 | return !!(vma->vm_flags & VM_HUGETLB); |
11 | } | 11 | } |
12 | 12 | ||
13 | #else | 13 | #else |
diff --git a/include/linux/i2c.h b/include/linux/i2c.h index f1e3ff5880a9..a6c652ef516d 100644 --- a/include/linux/i2c.h +++ b/include/linux/i2c.h | |||
@@ -409,7 +409,7 @@ void i2c_unlock_adapter(struct i2c_adapter *); | |||
409 | /* i2c adapter classes (bitmask) */ | 409 | /* i2c adapter classes (bitmask) */ |
410 | #define I2C_CLASS_HWMON (1<<0) /* lm_sensors, ... */ | 410 | #define I2C_CLASS_HWMON (1<<0) /* lm_sensors, ... */ |
411 | #define I2C_CLASS_DDC (1<<3) /* DDC bus on graphics adapters */ | 411 | #define I2C_CLASS_DDC (1<<3) /* DDC bus on graphics adapters */ |
412 | #define I2C_CLASS_SPD (1<<7) /* SPD EEPROMs and similar */ | 412 | #define I2C_CLASS_SPD (1<<7) /* Memory modules */ |
413 | 413 | ||
414 | /* Internal numbers to terminate lists */ | 414 | /* Internal numbers to terminate lists */ |
415 | #define I2C_CLIENT_END 0xfffeU | 415 | #define I2C_CLIENT_END 0xfffeU |
diff --git a/include/linux/i2c/i2c-sh_mobile.h b/include/linux/i2c/i2c-sh_mobile.h new file mode 100644 index 000000000000..beda7081aead --- /dev/null +++ b/include/linux/i2c/i2c-sh_mobile.h | |||
@@ -0,0 +1,10 @@ | |||
1 | #ifndef __I2C_SH_MOBILE_H__ | ||
2 | #define __I2C_SH_MOBILE_H__ | ||
3 | |||
4 | #include <linux/platform_device.h> | ||
5 | |||
6 | struct i2c_sh_mobile_platform_data { | ||
7 | unsigned long bus_speed; | ||
8 | }; | ||
9 | |||
10 | #endif /* __I2C_SH_MOBILE_H__ */ | ||
diff --git a/include/linux/i2c/mpr121_touchkey.h b/include/linux/i2c/mpr121_touchkey.h new file mode 100644 index 000000000000..f0bcc38bbb97 --- /dev/null +++ b/include/linux/i2c/mpr121_touchkey.h | |||
@@ -0,0 +1,20 @@ | |||
1 | /* Header file for Freescale MPR121 Capacitive Touch Sensor */ | ||
2 | |||
3 | #ifndef _MPR121_TOUCHKEY_H | ||
4 | #define _MPR121_TOUCHKEY_H | ||
5 | |||
6 | /** | ||
7 | * struct mpr121_platform_data - platform data for mpr121 sensor | ||
8 | * @keymap: pointer to array of KEY_* values representing keymap | ||
9 | * @keymap_size: size of the keymap | ||
10 | * @wakeup: configure the button as a wake-up source | ||
11 | * @vdd_uv: VDD voltage in uV | ||
12 | */ | ||
13 | struct mpr121_platform_data { | ||
14 | const unsigned short *keymap; | ||
15 | unsigned int keymap_size; | ||
16 | bool wakeup; | ||
17 | int vdd_uv; | ||
18 | }; | ||
19 | |||
20 | #endif /* _MPR121_TOUCHKEY_H */ | ||
diff --git a/include/linux/i2c/tsc2007.h b/include/linux/i2c/tsc2007.h index c6361fbb7bf9..591427a63b06 100644 --- a/include/linux/i2c/tsc2007.h +++ b/include/linux/i2c/tsc2007.h | |||
@@ -6,6 +6,13 @@ | |||
6 | struct tsc2007_platform_data { | 6 | struct tsc2007_platform_data { |
7 | u16 model; /* 2007. */ | 7 | u16 model; /* 2007. */ |
8 | u16 x_plate_ohms; | 8 | u16 x_plate_ohms; |
9 | u16 max_rt; /* max. resistance above which samples are ignored */ | ||
10 | unsigned long poll_delay; /* delay (in ms) after pen-down event | ||
11 | before polling starts */ | ||
12 | unsigned long poll_period; /* time (in ms) between samples */ | ||
13 | int fuzzx; /* fuzz factor for X, Y and pressure axes */ | ||
14 | int fuzzy; | ||
15 | int fuzzz; | ||
9 | 16 | ||
10 | int (*get_pendown_state)(void); | 17 | int (*get_pendown_state)(void); |
11 | void (*clear_penirq)(void); /* If needed, clear 2nd level | 18 | void (*clear_penirq)(void); /* If needed, clear 2nd level |
diff --git a/include/linux/i2c/twl.h b/include/linux/i2c/twl.h index 0c0d1ae79981..ba4f88624fcd 100644 --- a/include/linux/i2c/twl.h +++ b/include/linux/i2c/twl.h | |||
@@ -91,6 +91,7 @@ | |||
91 | #define BCI_INTR_OFFSET 2 | 91 | #define BCI_INTR_OFFSET 2 |
92 | #define MADC_INTR_OFFSET 3 | 92 | #define MADC_INTR_OFFSET 3 |
93 | #define USB_INTR_OFFSET 4 | 93 | #define USB_INTR_OFFSET 4 |
94 | #define CHARGERFAULT_INTR_OFFSET 5 | ||
94 | #define BCI_PRES_INTR_OFFSET 9 | 95 | #define BCI_PRES_INTR_OFFSET 9 |
95 | #define USB_PRES_INTR_OFFSET 10 | 96 | #define USB_PRES_INTR_OFFSET 10 |
96 | #define RTC_INTR_OFFSET 11 | 97 | #define RTC_INTR_OFFSET 11 |
@@ -150,7 +151,12 @@ | |||
150 | #define MMC_PU (0x1 << 3) | 151 | #define MMC_PU (0x1 << 3) |
151 | #define MMC_PD (0x1 << 2) | 152 | #define MMC_PD (0x1 << 2) |
152 | 153 | ||
153 | 154 | #define TWL_SIL_TYPE(rev) ((rev) & 0x00FFFFFF) | |
155 | #define TWL_SIL_REV(rev) ((rev) >> 24) | ||
156 | #define TWL_SIL_5030 0x09002F | ||
157 | #define TWL5030_REV_1_0 0x00 | ||
158 | #define TWL5030_REV_1_1 0x10 | ||
159 | #define TWL5030_REV_1_2 0x30 | ||
154 | 160 | ||
155 | #define TWL4030_CLASS_ID 0x4030 | 161 | #define TWL4030_CLASS_ID 0x4030 |
156 | #define TWL6030_CLASS_ID 0x6030 | 162 | #define TWL6030_CLASS_ID 0x6030 |
@@ -165,6 +171,8 @@ static inline int twl_class_is_ ##class(void) \ | |||
165 | TWL_CLASS_IS(4030, TWL4030_CLASS_ID) | 171 | TWL_CLASS_IS(4030, TWL4030_CLASS_ID) |
166 | TWL_CLASS_IS(6030, TWL6030_CLASS_ID) | 172 | TWL_CLASS_IS(6030, TWL6030_CLASS_ID) |
167 | 173 | ||
174 | #define TWL6025_SUBCLASS BIT(4) /* TWL6025 has changed registers */ | ||
175 | |||
168 | /* | 176 | /* |
169 | * Read and write single 8-bit registers | 177 | * Read and write single 8-bit registers |
170 | */ | 178 | */ |
@@ -180,6 +188,9 @@ int twl_i2c_read_u8(u8 mod_no, u8 *val, u8 reg); | |||
180 | int twl_i2c_write(u8 mod_no, u8 *value, u8 reg, unsigned num_bytes); | 188 | int twl_i2c_write(u8 mod_no, u8 *value, u8 reg, unsigned num_bytes); |
181 | int twl_i2c_read(u8 mod_no, u8 *value, u8 reg, unsigned num_bytes); | 189 | int twl_i2c_read(u8 mod_no, u8 *value, u8 reg, unsigned num_bytes); |
182 | 190 | ||
191 | int twl_get_type(void); | ||
192 | int twl_get_version(void); | ||
193 | |||
183 | int twl6030_interrupt_unmask(u8 bit_mask, u8 offset); | 194 | int twl6030_interrupt_unmask(u8 bit_mask, u8 offset); |
184 | int twl6030_interrupt_mask(u8 bit_mask, u8 offset); | 195 | int twl6030_interrupt_mask(u8 bit_mask, u8 offset); |
185 | 196 | ||
@@ -279,7 +290,12 @@ static inline int twl6030_mmc_card_detect(struct device *dev, int slot) | |||
279 | *(Use TWL_4030_MODULE_INTBR) | 290 | *(Use TWL_4030_MODULE_INTBR) |
280 | */ | 291 | */ |
281 | 292 | ||
293 | #define REG_IDCODE_7_0 0x00 | ||
294 | #define REG_IDCODE_15_8 0x01 | ||
295 | #define REG_IDCODE_16_23 0x02 | ||
296 | #define REG_IDCODE_31_24 0x03 | ||
282 | #define REG_GPPUPDCTR1 0x0F | 297 | #define REG_GPPUPDCTR1 0x0F |
298 | #define REG_UNLOCK_TEST_REG 0x12 | ||
283 | 299 | ||
284 | /*I2C1 and I2C4(SR) SDA/SCL pull-up control bits */ | 300 | /*I2C1 and I2C4(SR) SDA/SCL pull-up control bits */ |
285 | 301 | ||
@@ -288,6 +304,8 @@ static inline int twl6030_mmc_card_detect(struct device *dev, int slot) | |||
288 | #define SR_I2C_SCL_CTRL_PU BIT(4) | 304 | #define SR_I2C_SCL_CTRL_PU BIT(4) |
289 | #define SR_I2C_SDA_CTRL_PU BIT(6) | 305 | #define SR_I2C_SDA_CTRL_PU BIT(6) |
290 | 306 | ||
307 | #define TWL_EEPROM_R_UNLOCK 0x49 | ||
308 | |||
291 | /*----------------------------------------------------------------------*/ | 309 | /*----------------------------------------------------------------------*/ |
292 | 310 | ||
293 | /* | 311 | /* |
@@ -501,7 +519,7 @@ static inline int twl6030_mmc_card_detect(struct device *dev, int slot) | |||
501 | #define RES_32KCLKOUT 26 | 519 | #define RES_32KCLKOUT 26 |
502 | #define RES_RESET 27 | 520 | #define RES_RESET 27 |
503 | /* Power Reference */ | 521 | /* Power Reference */ |
504 | #define RES_Main_Ref 28 | 522 | #define RES_MAIN_REF 28 |
505 | 523 | ||
506 | #define TOTAL_RESOURCES 28 | 524 | #define TOTAL_RESOURCES 28 |
507 | /* | 525 | /* |
@@ -593,6 +611,7 @@ enum twl4030_usb_mode { | |||
593 | 611 | ||
594 | struct twl4030_usb_data { | 612 | struct twl4030_usb_data { |
595 | enum twl4030_usb_mode usb_mode; | 613 | enum twl4030_usb_mode usb_mode; |
614 | unsigned long features; | ||
596 | 615 | ||
597 | int (*phy_init)(struct device *dev); | 616 | int (*phy_init)(struct device *dev); |
598 | int (*phy_exit)(struct device *dev); | 617 | int (*phy_exit)(struct device *dev); |
@@ -699,6 +718,20 @@ struct twl4030_platform_data { | |||
699 | struct regulator_init_data *vcxio; | 718 | struct regulator_init_data *vcxio; |
700 | struct regulator_init_data *vusb; | 719 | struct regulator_init_data *vusb; |
701 | struct regulator_init_data *clk32kg; | 720 | struct regulator_init_data *clk32kg; |
721 | /* TWL6025 LDO regulators */ | ||
722 | struct regulator_init_data *ldo1; | ||
723 | struct regulator_init_data *ldo2; | ||
724 | struct regulator_init_data *ldo3; | ||
725 | struct regulator_init_data *ldo4; | ||
726 | struct regulator_init_data *ldo5; | ||
727 | struct regulator_init_data *ldo6; | ||
728 | struct regulator_init_data *ldo7; | ||
729 | struct regulator_init_data *ldoln; | ||
730 | struct regulator_init_data *ldousb; | ||
731 | /* TWL6025 DCDC regulators */ | ||
732 | struct regulator_init_data *smps3; | ||
733 | struct regulator_init_data *smps4; | ||
734 | struct regulator_init_data *vio6025; | ||
702 | }; | 735 | }; |
703 | 736 | ||
704 | /*----------------------------------------------------------------------*/ | 737 | /*----------------------------------------------------------------------*/ |
@@ -780,4 +813,21 @@ static inline int twl4030charger_usb_en(int enable) { return 0; } | |||
780 | #define TWL6030_REG_VRTC 47 | 813 | #define TWL6030_REG_VRTC 47 |
781 | #define TWL6030_REG_CLK32KG 48 | 814 | #define TWL6030_REG_CLK32KG 48 |
782 | 815 | ||
816 | /* LDOs on 6025 have different names */ | ||
817 | #define TWL6025_REG_LDO2 49 | ||
818 | #define TWL6025_REG_LDO4 50 | ||
819 | #define TWL6025_REG_LDO3 51 | ||
820 | #define TWL6025_REG_LDO5 52 | ||
821 | #define TWL6025_REG_LDO1 53 | ||
822 | #define TWL6025_REG_LDO7 54 | ||
823 | #define TWL6025_REG_LDO6 55 | ||
824 | #define TWL6025_REG_LDOLN 56 | ||
825 | #define TWL6025_REG_LDOUSB 57 | ||
826 | |||
827 | /* 6025 DCDC supplies */ | ||
828 | #define TWL6025_REG_SMPS3 58 | ||
829 | #define TWL6025_REG_SMPS4 59 | ||
830 | #define TWL6025_REG_VIO 60 | ||
831 | |||
832 | |||
783 | #endif /* End of __TWL4030_H */ | 833 | #endif /* End of __TWL4030_H */ |
diff --git a/include/linux/if_link.h b/include/linux/if_link.h index f4a2e6b1b864..0ee969a5593d 100644 --- a/include/linux/if_link.h +++ b/include/linux/if_link.h | |||
@@ -136,6 +136,7 @@ enum { | |||
136 | IFLA_PORT_SELF, | 136 | IFLA_PORT_SELF, |
137 | IFLA_AF_SPEC, | 137 | IFLA_AF_SPEC, |
138 | IFLA_GROUP, /* Group the device belongs to */ | 138 | IFLA_GROUP, /* Group the device belongs to */ |
139 | IFLA_NET_NS_FD, | ||
139 | __IFLA_MAX | 140 | __IFLA_MAX |
140 | }; | 141 | }; |
141 | 142 | ||
diff --git a/include/linux/if_packet.h b/include/linux/if_packet.h index 72bfa5a034dd..6d66ce1791a9 100644 --- a/include/linux/if_packet.h +++ b/include/linux/if_packet.h | |||
@@ -70,6 +70,7 @@ struct tpacket_auxdata { | |||
70 | #define TP_STATUS_COPY 0x2 | 70 | #define TP_STATUS_COPY 0x2 |
71 | #define TP_STATUS_LOSING 0x4 | 71 | #define TP_STATUS_LOSING 0x4 |
72 | #define TP_STATUS_CSUMNOTREADY 0x8 | 72 | #define TP_STATUS_CSUMNOTREADY 0x8 |
73 | #define TP_STATUS_VLAN_VALID 0x10 /* auxdata has valid tp_vlan_tci */ | ||
73 | 74 | ||
74 | /* Tx ring - header status */ | 75 | /* Tx ring - header status */ |
75 | #define TP_STATUS_AVAILABLE 0x0 | 76 | #define TP_STATUS_AVAILABLE 0x0 |
diff --git a/include/linux/init_task.h b/include/linux/init_task.h index 689496bb6654..580f70c02391 100644 --- a/include/linux/init_task.h +++ b/include/linux/init_task.h | |||
@@ -22,6 +22,14 @@ | |||
22 | extern struct files_struct init_files; | 22 | extern struct files_struct init_files; |
23 | extern struct fs_struct init_fs; | 23 | extern struct fs_struct init_fs; |
24 | 24 | ||
25 | #ifdef CONFIG_CGROUPS | ||
26 | #define INIT_THREADGROUP_FORK_LOCK(sig) \ | ||
27 | .threadgroup_fork_lock = \ | ||
28 | __RWSEM_INITIALIZER(sig.threadgroup_fork_lock), | ||
29 | #else | ||
30 | #define INIT_THREADGROUP_FORK_LOCK(sig) | ||
31 | #endif | ||
32 | |||
25 | #define INIT_SIGNALS(sig) { \ | 33 | #define INIT_SIGNALS(sig) { \ |
26 | .nr_threads = 1, \ | 34 | .nr_threads = 1, \ |
27 | .wait_chldexit = __WAIT_QUEUE_HEAD_INITIALIZER(sig.wait_chldexit),\ | 35 | .wait_chldexit = __WAIT_QUEUE_HEAD_INITIALIZER(sig.wait_chldexit),\ |
@@ -38,6 +46,7 @@ extern struct fs_struct init_fs; | |||
38 | }, \ | 46 | }, \ |
39 | .cred_guard_mutex = \ | 47 | .cred_guard_mutex = \ |
40 | __MUTEX_INITIALIZER(sig.cred_guard_mutex), \ | 48 | __MUTEX_INITIALIZER(sig.cred_guard_mutex), \ |
49 | INIT_THREADGROUP_FORK_LOCK(sig) \ | ||
41 | } | 50 | } |
42 | 51 | ||
43 | extern struct nsproxy init_nsproxy; | 52 | extern struct nsproxy init_nsproxy; |
@@ -83,13 +92,6 @@ extern struct group_info init_groups; | |||
83 | #define INIT_IDS | 92 | #define INIT_IDS |
84 | #endif | 93 | #endif |
85 | 94 | ||
86 | /* | ||
87 | * Because of the reduced scope of CAP_SETPCAP when filesystem | ||
88 | * capabilities are in effect, it is safe to allow CAP_SETPCAP to | ||
89 | * be available in the default configuration. | ||
90 | */ | ||
91 | # define CAP_INIT_BSET CAP_FULL_SET | ||
92 | |||
93 | #ifdef CONFIG_RCU_BOOST | 95 | #ifdef CONFIG_RCU_BOOST |
94 | #define INIT_TASK_RCU_BOOST() \ | 96 | #define INIT_TASK_RCU_BOOST() \ |
95 | .rcu_boost_mutex = NULL, | 97 | .rcu_boost_mutex = NULL, |
diff --git a/include/linux/input/ad714x.h b/include/linux/input/ad714x.h index 0cbe5e81482e..d388d857bf14 100644 --- a/include/linux/input/ad714x.h +++ b/include/linux/input/ad714x.h | |||
@@ -6,7 +6,7 @@ | |||
6 | * The platform_data for the device's "struct device" holds this | 6 | * The platform_data for the device's "struct device" holds this |
7 | * information. | 7 | * information. |
8 | * | 8 | * |
9 | * Copyright 2009 Analog Devices Inc. | 9 | * Copyright 2009-2011 Analog Devices Inc. |
10 | * | 10 | * |
11 | * Licensed under the GPL-2 or later. | 11 | * Licensed under the GPL-2 or later. |
12 | */ | 12 | */ |
@@ -58,6 +58,7 @@ struct ad714x_platform_data { | |||
58 | struct ad714x_button_plat *button; | 58 | struct ad714x_button_plat *button; |
59 | unsigned short stage_cfg_reg[STAGE_NUM][STAGE_CFGREG_NUM]; | 59 | unsigned short stage_cfg_reg[STAGE_NUM][STAGE_CFGREG_NUM]; |
60 | unsigned short sys_cfg_reg[SYS_CFGREG_NUM]; | 60 | unsigned short sys_cfg_reg[SYS_CFGREG_NUM]; |
61 | unsigned long irqflags; | ||
61 | }; | 62 | }; |
62 | 63 | ||
63 | #endif | 64 | #endif |
diff --git a/include/linux/input/adp5589.h b/include/linux/input/adp5589.h new file mode 100644 index 000000000000..ef792ecfaabf --- /dev/null +++ b/include/linux/input/adp5589.h | |||
@@ -0,0 +1,213 @@ | |||
1 | /* | ||
2 | * Analog Devices ADP5589 I/O Expander and QWERTY Keypad Controller | ||
3 | * | ||
4 | * Copyright 2010-2011 Analog Devices Inc. | ||
5 | * | ||
6 | * Licensed under the GPL-2. | ||
7 | */ | ||
8 | |||
9 | #ifndef _ADP5589_H | ||
10 | #define _ADP5589_H | ||
11 | |||
12 | #define ADP5589_ID 0x00 | ||
13 | #define ADP5589_INT_STATUS 0x01 | ||
14 | #define ADP5589_STATUS 0x02 | ||
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 | |||
96 | #define ADP5589_KEYMAPSIZE 88 | ||
97 | |||
98 | #define ADP5589_GPI_PIN_ROW0 97 | ||
99 | #define ADP5589_GPI_PIN_ROW1 98 | ||
100 | #define ADP5589_GPI_PIN_ROW2 99 | ||
101 | #define ADP5589_GPI_PIN_ROW3 100 | ||
102 | #define ADP5589_GPI_PIN_ROW4 101 | ||
103 | #define ADP5589_GPI_PIN_ROW5 102 | ||
104 | #define ADP5589_GPI_PIN_ROW6 103 | ||
105 | #define ADP5589_GPI_PIN_ROW7 104 | ||
106 | #define ADP5589_GPI_PIN_COL0 105 | ||
107 | #define ADP5589_GPI_PIN_COL1 106 | ||
108 | #define ADP5589_GPI_PIN_COL2 107 | ||
109 | #define ADP5589_GPI_PIN_COL3 108 | ||
110 | #define ADP5589_GPI_PIN_COL4 109 | ||
111 | #define ADP5589_GPI_PIN_COL5 110 | ||
112 | #define ADP5589_GPI_PIN_COL6 111 | ||
113 | #define ADP5589_GPI_PIN_COL7 112 | ||
114 | #define ADP5589_GPI_PIN_COL8 113 | ||
115 | #define ADP5589_GPI_PIN_COL9 114 | ||
116 | #define ADP5589_GPI_PIN_COL10 115 | ||
117 | #define GPI_LOGIC1 116 | ||
118 | #define GPI_LOGIC2 117 | ||
119 | |||
120 | #define ADP5589_GPI_PIN_ROW_BASE ADP5589_GPI_PIN_ROW0 | ||
121 | #define ADP5589_GPI_PIN_ROW_END ADP5589_GPI_PIN_ROW7 | ||
122 | #define ADP5589_GPI_PIN_COL_BASE ADP5589_GPI_PIN_COL0 | ||
123 | #define ADP5589_GPI_PIN_COL_END ADP5589_GPI_PIN_COL10 | ||
124 | |||
125 | #define ADP5589_GPI_PIN_BASE ADP5589_GPI_PIN_ROW_BASE | ||
126 | #define ADP5589_GPI_PIN_END ADP5589_GPI_PIN_COL_END | ||
127 | |||
128 | #define ADP5589_GPIMAPSIZE_MAX (ADP5589_GPI_PIN_END - ADP5589_GPI_PIN_BASE + 1) | ||
129 | |||
130 | struct adp5589_gpi_map { | ||
131 | unsigned short pin; | ||
132 | unsigned short sw_evt; | ||
133 | }; | ||
134 | |||
135 | /* scan_cycle_time */ | ||
136 | #define ADP5589_SCAN_CYCLE_10ms 0 | ||
137 | #define ADP5589_SCAN_CYCLE_20ms 1 | ||
138 | #define ADP5589_SCAN_CYCLE_30ms 2 | ||
139 | #define ADP5589_SCAN_CYCLE_40ms 3 | ||
140 | |||
141 | /* RESET_CFG */ | ||
142 | #define RESET_PULSE_WIDTH_500us 0 | ||
143 | #define RESET_PULSE_WIDTH_1ms 1 | ||
144 | #define RESET_PULSE_WIDTH_2ms 2 | ||
145 | #define RESET_PULSE_WIDTH_10ms 3 | ||
146 | |||
147 | #define RESET_TRIG_TIME_0ms (0 << 2) | ||
148 | #define RESET_TRIG_TIME_1000ms (1 << 2) | ||
149 | #define RESET_TRIG_TIME_1500ms (2 << 2) | ||
150 | #define RESET_TRIG_TIME_2000ms (3 << 2) | ||
151 | #define RESET_TRIG_TIME_2500ms (4 << 2) | ||
152 | #define RESET_TRIG_TIME_3000ms (5 << 2) | ||
153 | #define RESET_TRIG_TIME_3500ms (6 << 2) | ||
154 | #define RESET_TRIG_TIME_4000ms (7 << 2) | ||
155 | |||
156 | #define RESET_PASSTHRU_EN (1 << 5) | ||
157 | #define RESET1_POL_HIGH (1 << 6) | ||
158 | #define RESET1_POL_LOW (0 << 6) | ||
159 | #define RESET2_POL_HIGH (1 << 7) | ||
160 | #define RESET2_POL_LOW (0 << 7) | ||
161 | |||
162 | /* Mask Bits: | ||
163 | * 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 | ||
165 | * 0 | ||
166 | * ---------------- BIT ------------------ | ||
167 | * 1 1 1 1 1 1 1 1 1 0 0 | 0 0 0 0 0 0 0 0 | ||
168 | * 8 7 6 5 4 3 2 1 0 9 8 | 7 6 5 4 3 2 1 0 | ||
169 | */ | ||
170 | |||
171 | #define ADP_ROW(x) (1 << (x)) | ||
172 | #define ADP_COL(x) (1 << (x + 8)) | ||
173 | |||
174 | struct adp5589_kpad_platform_data { | ||
175 | unsigned keypad_en_mask; /* Keypad (Rows/Columns) enable mask */ | ||
176 | const unsigned short *keymap; /* Pointer to keymap */ | ||
177 | unsigned short keymapsize; /* Keymap size */ | ||
178 | bool repeat; /* Enable key repeat */ | ||
179 | bool en_keylock; /* Enable key lock feature */ | ||
180 | unsigned char unlock_key1; /* Unlock Key 1 */ | ||
181 | unsigned char unlock_key2; /* Unlock Key 2 */ | ||
182 | unsigned char unlock_timer; /* Time in seconds [0..7] between the two unlock keys 0=disable */ | ||
183 | unsigned char scan_cycle_time; /* Time between consecutive scan cycles */ | ||
184 | unsigned char reset_cfg; /* Reset config */ | ||
185 | unsigned short reset1_key_1; /* Reset Key 1 */ | ||
186 | unsigned short reset1_key_2; /* Reset Key 2 */ | ||
187 | unsigned short reset1_key_3; /* Reset Key 3 */ | ||
188 | unsigned short reset2_key_1; /* Reset Key 1 */ | ||
189 | unsigned short reset2_key_2; /* Reset Key 2 */ | ||
190 | unsigned debounce_dis_mask; /* Disable debounce mask */ | ||
191 | unsigned pull_dis_mask; /* Disable all pull resistors mask */ | ||
192 | unsigned pullup_en_100k; /* Pull-Up 100k Enable Mask */ | ||
193 | unsigned pullup_en_300k; /* Pull-Up 300k Enable Mask */ | ||
194 | unsigned pulldown_en_300k; /* Pull-Down 300k Enable Mask */ | ||
195 | const struct adp5589_gpi_map *gpimap; | ||
196 | unsigned short gpimapsize; | ||
197 | const struct adp5589_gpio_platform_data *gpio_data; | ||
198 | }; | ||
199 | |||
200 | struct i2c_client; /* forward declaration */ | ||
201 | |||
202 | struct adp5589_gpio_platform_data { | ||
203 | int gpio_start; /* GPIO Chip base # */ | ||
204 | int (*setup)(struct i2c_client *client, | ||
205 | int gpio, unsigned ngpio, | ||
206 | void *context); | ||
207 | int (*teardown)(struct i2c_client *client, | ||
208 | int gpio, unsigned ngpio, | ||
209 | void *context); | ||
210 | void *context; | ||
211 | }; | ||
212 | |||
213 | #endif | ||
diff --git a/include/linux/input/pmic8xxx-keypad.h b/include/linux/input/pmic8xxx-keypad.h new file mode 100644 index 000000000000..5f1e2f9ad959 --- /dev/null +++ b/include/linux/input/pmic8xxx-keypad.h | |||
@@ -0,0 +1,52 @@ | |||
1 | /* Copyright (c) 2011, Code Aurora Forum. All rights reserved. | ||
2 | * | ||
3 | * This program is free software; you can redistribute it and/or modify | ||
4 | * it under the terms of the GNU General Public License version 2 and | ||
5 | * only version 2 as published by the Free Software Foundation. | ||
6 | * | ||
7 | * This program is distributed in the hope that it will be useful, | ||
8 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
9 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
10 | * GNU General Public License for more details. | ||
11 | */ | ||
12 | |||
13 | #ifndef __PMIC8XXX_KEYPAD_H__ | ||
14 | #define __PMIC8XXX_KEYPAD_H__ | ||
15 | |||
16 | #include <linux/input/matrix_keypad.h> | ||
17 | |||
18 | #define PM8XXX_KEYPAD_DEV_NAME "pm8xxx-keypad" | ||
19 | |||
20 | /** | ||
21 | * struct pm8xxx_keypad_platform_data - platform data for keypad | ||
22 | * @keymap_data - matrix keymap data | ||
23 | * @input_name - input device name | ||
24 | * @input_phys_device - input device name | ||
25 | * @num_cols - number of columns of keypad | ||
26 | * @num_rows - number of row of keypad | ||
27 | * @debounce_ms - debounce period in milliseconds | ||
28 | * @scan_delay_ms - scan delay in milliseconds | ||
29 | * @row_hold_ns - row hold period in nanoseconds | ||
30 | * @wakeup - configure keypad as wakeup | ||
31 | * @rep - enable or disable key repeat bit | ||
32 | */ | ||
33 | struct pm8xxx_keypad_platform_data { | ||
34 | const struct matrix_keymap_data *keymap_data; | ||
35 | |||
36 | const char *input_name; | ||
37 | const char *input_phys_device; | ||
38 | |||
39 | unsigned int num_cols; | ||
40 | unsigned int num_rows; | ||
41 | unsigned int rows_gpio_start; | ||
42 | unsigned int cols_gpio_start; | ||
43 | |||
44 | unsigned int debounce_ms; | ||
45 | unsigned int scan_delay_ms; | ||
46 | unsigned int row_hold_ns; | ||
47 | |||
48 | bool wakeup; | ||
49 | bool rep; | ||
50 | }; | ||
51 | |||
52 | #endif /*__PMIC8XXX_KEYPAD_H__ */ | ||
diff --git a/include/linux/input/pmic8xxx-pwrkey.h b/include/linux/input/pmic8xxx-pwrkey.h new file mode 100644 index 000000000000..6d2974e57109 --- /dev/null +++ b/include/linux/input/pmic8xxx-pwrkey.h | |||
@@ -0,0 +1,31 @@ | |||
1 | /* Copyright (c) 2010-2011, Code Aurora Forum. All rights reserved. | ||
2 | * | ||
3 | * This program is free software; you can redistribute it and/or modify | ||
4 | * it under the terms of the GNU General Public License version 2 and | ||
5 | * only version 2 as published by the Free Software Foundation. | ||
6 | * | ||
7 | * This program is distributed in the hope that it will be useful, | ||
8 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
9 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
10 | * GNU General Public License for more details. | ||
11 | */ | ||
12 | |||
13 | #ifndef __PMIC8XXX_PWRKEY_H__ | ||
14 | #define __PMIC8XXX_PWRKEY_H__ | ||
15 | |||
16 | #define PM8XXX_PWRKEY_DEV_NAME "pm8xxx-pwrkey" | ||
17 | |||
18 | /** | ||
19 | * struct pm8xxx_pwrkey_platform_data - platform data for pwrkey driver | ||
20 | * @pull up: power on register control for pull up/down configuration | ||
21 | * @kpd_trigger_delay_us: time delay for power key state change interrupt | ||
22 | * trigger. | ||
23 | * @wakeup: configure power key as wakeup source | ||
24 | */ | ||
25 | struct pm8xxx_pwrkey_platform_data { | ||
26 | bool pull_up; | ||
27 | u32 kpd_trigger_delay_us; | ||
28 | u32 wakeup; | ||
29 | }; | ||
30 | |||
31 | #endif /* __PMIC8XXX_PWRKEY_H__ */ | ||
diff --git a/include/linux/ipmi_smi.h b/include/linux/ipmi_smi.h index 906590aa6907..204f9cd26c16 100644 --- a/include/linux/ipmi_smi.h +++ b/include/linux/ipmi_smi.h | |||
@@ -236,7 +236,7 @@ static inline void ipmi_free_smi_msg(struct ipmi_smi_msg *msg) | |||
236 | directory for this interface. Note that the entry will | 236 | directory for this interface. Note that the entry will |
237 | automatically be dstroyed when the interface is destroyed. */ | 237 | automatically be dstroyed when the interface is destroyed. */ |
238 | int ipmi_smi_add_proc_entry(ipmi_smi_t smi, char *name, | 238 | int ipmi_smi_add_proc_entry(ipmi_smi_t smi, char *name, |
239 | read_proc_t *read_proc, | 239 | const struct file_operations *proc_ops, |
240 | void *data); | 240 | void *data); |
241 | 241 | ||
242 | #endif /* __LINUX_IPMI_SMI_H */ | 242 | #endif /* __LINUX_IPMI_SMI_H */ |
diff --git a/include/linux/jbd2.h b/include/linux/jbd2.h index a32dcaec04e1..4ecb7b16b278 100644 --- a/include/linux/jbd2.h +++ b/include/linux/jbd2.h | |||
@@ -529,9 +529,10 @@ struct transaction_s | |||
529 | enum { | 529 | enum { |
530 | T_RUNNING, | 530 | T_RUNNING, |
531 | T_LOCKED, | 531 | T_LOCKED, |
532 | T_RUNDOWN, | ||
533 | T_FLUSH, | 532 | T_FLUSH, |
534 | T_COMMIT, | 533 | T_COMMIT, |
534 | T_COMMIT_DFLUSH, | ||
535 | T_COMMIT_JFLUSH, | ||
535 | T_FINISHED | 536 | T_FINISHED |
536 | } t_state; | 537 | } t_state; |
537 | 538 | ||
@@ -658,7 +659,9 @@ struct transaction_s | |||
658 | * waiting for it to finish. | 659 | * waiting for it to finish. |
659 | */ | 660 | */ |
660 | unsigned int t_synchronous_commit:1; | 661 | unsigned int t_synchronous_commit:1; |
661 | unsigned int t_flushed_data_blocks:1; | 662 | |
663 | /* Disk flush needs to be sent to fs partition [no locking] */ | ||
664 | int t_need_data_flush; | ||
662 | 665 | ||
663 | /* | 666 | /* |
664 | * For use by the filesystem to store fs-specific data | 667 | * For use by the filesystem to store fs-specific data |
@@ -1228,6 +1231,7 @@ int jbd2_journal_start_commit(journal_t *journal, tid_t *tid); | |||
1228 | int jbd2_journal_force_commit_nested(journal_t *journal); | 1231 | int jbd2_journal_force_commit_nested(journal_t *journal); |
1229 | int jbd2_log_wait_commit(journal_t *journal, tid_t tid); | 1232 | int jbd2_log_wait_commit(journal_t *journal, tid_t tid); |
1230 | int jbd2_log_do_checkpoint(journal_t *journal); | 1233 | int jbd2_log_do_checkpoint(journal_t *journal); |
1234 | int jbd2_trans_will_send_data_barrier(journal_t *journal, tid_t tid); | ||
1231 | 1235 | ||
1232 | void __jbd2_log_wait_for_space(journal_t *journal); | 1236 | void __jbd2_log_wait_for_space(journal_t *journal); |
1233 | extern void __jbd2_journal_drop_transaction(journal_t *, transaction_t *); | 1237 | extern void __jbd2_journal_drop_transaction(journal_t *, transaction_t *); |
diff --git a/include/linux/kernel.h b/include/linux/kernel.h index f37ba716ef8b..fb0e7329fee1 100644 --- a/include/linux/kernel.h +++ b/include/linux/kernel.h | |||
@@ -248,6 +248,37 @@ int __must_check kstrtos16(const char *s, unsigned int base, s16 *res); | |||
248 | int __must_check kstrtou8(const char *s, unsigned int base, u8 *res); | 248 | int __must_check kstrtou8(const char *s, unsigned int base, u8 *res); |
249 | int __must_check kstrtos8(const char *s, unsigned int base, s8 *res); | 249 | int __must_check kstrtos8(const char *s, unsigned int base, s8 *res); |
250 | 250 | ||
251 | int __must_check kstrtoull_from_user(const char __user *s, size_t count, unsigned int base, unsigned long long *res); | ||
252 | int __must_check kstrtoll_from_user(const char __user *s, size_t count, unsigned int base, long long *res); | ||
253 | int __must_check kstrtoul_from_user(const char __user *s, size_t count, unsigned int base, unsigned long *res); | ||
254 | int __must_check kstrtol_from_user(const char __user *s, size_t count, unsigned int base, long *res); | ||
255 | int __must_check kstrtouint_from_user(const char __user *s, size_t count, unsigned int base, unsigned int *res); | ||
256 | int __must_check kstrtoint_from_user(const char __user *s, size_t count, unsigned int base, int *res); | ||
257 | int __must_check kstrtou16_from_user(const char __user *s, size_t count, unsigned int base, u16 *res); | ||
258 | int __must_check kstrtos16_from_user(const char __user *s, size_t count, unsigned int base, s16 *res); | ||
259 | int __must_check kstrtou8_from_user(const char __user *s, size_t count, unsigned int base, u8 *res); | ||
260 | int __must_check kstrtos8_from_user(const char __user *s, size_t count, unsigned int base, s8 *res); | ||
261 | |||
262 | static inline int __must_check kstrtou64_from_user(const char __user *s, size_t count, unsigned int base, u64 *res) | ||
263 | { | ||
264 | return kstrtoull_from_user(s, count, base, res); | ||
265 | } | ||
266 | |||
267 | static inline int __must_check kstrtos64_from_user(const char __user *s, size_t count, unsigned int base, s64 *res) | ||
268 | { | ||
269 | return kstrtoll_from_user(s, count, base, res); | ||
270 | } | ||
271 | |||
272 | static inline int __must_check kstrtou32_from_user(const char __user *s, size_t count, unsigned int base, u32 *res) | ||
273 | { | ||
274 | return kstrtouint_from_user(s, count, base, res); | ||
275 | } | ||
276 | |||
277 | static inline int __must_check kstrtos32_from_user(const char __user *s, size_t count, unsigned int base, s32 *res) | ||
278 | { | ||
279 | return kstrtoint_from_user(s, count, base, res); | ||
280 | } | ||
281 | |||
251 | extern unsigned long simple_strtoul(const char *,char **,unsigned int); | 282 | extern unsigned long simple_strtoul(const char *,char **,unsigned int); |
252 | extern long simple_strtol(const char *,char **,unsigned int); | 283 | extern long simple_strtol(const char *,char **,unsigned int); |
253 | extern unsigned long long simple_strtoull(const char *,char **,unsigned int); | 284 | extern unsigned long long simple_strtoull(const char *,char **,unsigned int); |
@@ -638,6 +669,13 @@ struct sysinfo { | |||
638 | char _f[20-2*sizeof(long)-sizeof(int)]; /* Padding: libc5 uses this.. */ | 669 | char _f[20-2*sizeof(long)-sizeof(int)]; /* Padding: libc5 uses this.. */ |
639 | }; | 670 | }; |
640 | 671 | ||
672 | #ifdef __CHECKER__ | ||
673 | #define BUILD_BUG_ON_NOT_POWER_OF_2(n) | ||
674 | #define BUILD_BUG_ON_ZERO(e) | ||
675 | #define BUILD_BUG_ON_NULL(e) | ||
676 | #define BUILD_BUG_ON(condition) | ||
677 | #else /* __CHECKER__ */ | ||
678 | |||
641 | /* Force a compilation error if a constant expression is not a power of 2 */ | 679 | /* Force a compilation error if a constant expression is not a power of 2 */ |
642 | #define BUILD_BUG_ON_NOT_POWER_OF_2(n) \ | 680 | #define BUILD_BUG_ON_NOT_POWER_OF_2(n) \ |
643 | BUILD_BUG_ON((n) == 0 || (((n) & ((n) - 1)) != 0)) | 681 | BUILD_BUG_ON((n) == 0 || (((n) & ((n) - 1)) != 0)) |
@@ -674,6 +712,7 @@ extern int __build_bug_on_failed; | |||
674 | if (condition) __build_bug_on_failed = 1; \ | 712 | if (condition) __build_bug_on_failed = 1; \ |
675 | } while(0) | 713 | } while(0) |
676 | #endif | 714 | #endif |
715 | #endif /* __CHECKER__ */ | ||
677 | 716 | ||
678 | /* Trap pasters of __FUNCTION__ at compile-time */ | 717 | /* Trap pasters of __FUNCTION__ at compile-time */ |
679 | #define __FUNCTION__ (__func__) | 718 | #define __FUNCTION__ (__func__) |
diff --git a/include/linux/key.h b/include/linux/key.h index b2bb01719561..6ea4eebd3467 100644 --- a/include/linux/key.h +++ b/include/linux/key.h | |||
@@ -9,7 +9,7 @@ | |||
9 | * 2 of the License, or (at your option) any later version. | 9 | * 2 of the License, or (at your option) any later version. |
10 | * | 10 | * |
11 | * | 11 | * |
12 | * See Documentation/keys.txt for information on keys/keyrings. | 12 | * See Documentation/security/keys.txt for information on keys/keyrings. |
13 | */ | 13 | */ |
14 | 14 | ||
15 | #ifndef _LINUX_KEY_H | 15 | #ifndef _LINUX_KEY_H |
@@ -276,6 +276,19 @@ static inline key_serial_t key_serial(struct key *key) | |||
276 | return key ? key->serial : 0; | 276 | return key ? key->serial : 0; |
277 | } | 277 | } |
278 | 278 | ||
279 | /** | ||
280 | * key_is_instantiated - Determine if a key has been positively instantiated | ||
281 | * @key: The key to check. | ||
282 | * | ||
283 | * Return true if the specified key has been positively instantiated, false | ||
284 | * otherwise. | ||
285 | */ | ||
286 | static inline bool key_is_instantiated(const struct key *key) | ||
287 | { | ||
288 | return test_bit(KEY_FLAG_INSTANTIATED, &key->flags) && | ||
289 | !test_bit(KEY_FLAG_NEGATIVE, &key->flags); | ||
290 | } | ||
291 | |||
279 | #define rcu_dereference_key(KEY) \ | 292 | #define rcu_dereference_key(KEY) \ |
280 | (rcu_dereference_protected((KEY)->payload.rcudata, \ | 293 | (rcu_dereference_protected((KEY)->payload.rcudata, \ |
281 | rwsem_is_locked(&((struct key *)(KEY))->sem))) | 294 | rwsem_is_locked(&((struct key *)(KEY))->sem))) |
diff --git a/include/linux/kmod.h b/include/linux/kmod.h index 310231823852..d4a5c84c503d 100644 --- a/include/linux/kmod.h +++ b/include/linux/kmod.h | |||
@@ -24,6 +24,7 @@ | |||
24 | #include <linux/errno.h> | 24 | #include <linux/errno.h> |
25 | #include <linux/compiler.h> | 25 | #include <linux/compiler.h> |
26 | #include <linux/workqueue.h> | 26 | #include <linux/workqueue.h> |
27 | #include <linux/sysctl.h> | ||
27 | 28 | ||
28 | #define KMOD_PATH_LEN 256 | 29 | #define KMOD_PATH_LEN 256 |
29 | 30 | ||
@@ -109,6 +110,8 @@ call_usermodehelper(char *path, char **argv, char **envp, enum umh_wait wait) | |||
109 | NULL, NULL, NULL); | 110 | NULL, NULL, NULL); |
110 | } | 111 | } |
111 | 112 | ||
113 | extern struct ctl_table usermodehelper_table[]; | ||
114 | |||
112 | extern void usermodehelper_init(void); | 115 | extern void usermodehelper_init(void); |
113 | 116 | ||
114 | extern int usermodehelper_disable(void); | 117 | extern int usermodehelper_disable(void); |
diff --git a/include/linux/kvm_host.h b/include/linux/kvm_host.h index b9c3299c6a55..31ebb59cbd2f 100644 --- a/include/linux/kvm_host.h +++ b/include/linux/kvm_host.h | |||
@@ -517,6 +517,7 @@ struct kvm_assigned_dev_kernel { | |||
517 | struct kvm *kvm; | 517 | struct kvm *kvm; |
518 | spinlock_t intx_lock; | 518 | spinlock_t intx_lock; |
519 | char irq_name[32]; | 519 | char irq_name[32]; |
520 | struct pci_saved_state *pci_saved_state; | ||
520 | }; | 521 | }; |
521 | 522 | ||
522 | struct kvm_irq_mask_notifier { | 523 | struct kvm_irq_mask_notifier { |
diff --git a/include/linux/leds-pca9532.h b/include/linux/leds-pca9532.h index f158eb1149aa..b8d6fffed4d8 100644 --- a/include/linux/leds-pca9532.h +++ b/include/linux/leds-pca9532.h | |||
@@ -25,7 +25,7 @@ enum pca9532_state { | |||
25 | }; | 25 | }; |
26 | 26 | ||
27 | enum pca9532_type { PCA9532_TYPE_NONE, PCA9532_TYPE_LED, | 27 | enum pca9532_type { PCA9532_TYPE_NONE, PCA9532_TYPE_LED, |
28 | PCA9532_TYPE_N2100_BEEP }; | 28 | PCA9532_TYPE_N2100_BEEP, PCA9532_TYPE_GPIO }; |
29 | 29 | ||
30 | struct pca9532_led { | 30 | struct pca9532_led { |
31 | u8 id; | 31 | u8 id; |
@@ -41,6 +41,7 @@ struct pca9532_platform_data { | |||
41 | struct pca9532_led leds[16]; | 41 | struct pca9532_led leds[16]; |
42 | u8 pwm[2]; | 42 | u8 pwm[2]; |
43 | u8 psc[2]; | 43 | u8 psc[2]; |
44 | int gpio_base; | ||
44 | }; | 45 | }; |
45 | 46 | ||
46 | #endif /* __LINUX_PCA9532_H */ | 47 | #endif /* __LINUX_PCA9532_H */ |
diff --git a/include/linux/leds.h b/include/linux/leds.h index 61e0340a4b77..5884def15a24 100644 --- a/include/linux/leds.h +++ b/include/linux/leds.h | |||
@@ -207,5 +207,7 @@ struct gpio_led_platform_data { | |||
207 | unsigned long *delay_off); | 207 | unsigned long *delay_off); |
208 | }; | 208 | }; |
209 | 209 | ||
210 | struct platform_device *gpio_led_register_device( | ||
211 | int id, const struct gpio_led_platform_data *pdata); | ||
210 | 212 | ||
211 | #endif /* __LINUX_LEDS_H_INCLUDED */ | 213 | #endif /* __LINUX_LEDS_H_INCLUDED */ |
diff --git a/include/linux/linkage.h b/include/linux/linkage.h index 7135ebc8428c..3f46aedea42f 100644 --- a/include/linux/linkage.h +++ b/include/linux/linkage.h | |||
@@ -14,10 +14,6 @@ | |||
14 | #define asmlinkage CPP_ASMLINKAGE | 14 | #define asmlinkage CPP_ASMLINKAGE |
15 | #endif | 15 | #endif |
16 | 16 | ||
17 | #ifndef asmregparm | ||
18 | # define asmregparm | ||
19 | #endif | ||
20 | |||
21 | #define __page_aligned_data __section(.data..page_aligned) __aligned(PAGE_SIZE) | 17 | #define __page_aligned_data __section(.data..page_aligned) __aligned(PAGE_SIZE) |
22 | #define __page_aligned_bss __section(.bss..page_aligned) __aligned(PAGE_SIZE) | 18 | #define __page_aligned_bss __section(.bss..page_aligned) __aligned(PAGE_SIZE) |
23 | 19 | ||
diff --git a/include/linux/lockdep.h b/include/linux/lockdep.h index 4aef1dda6406..ef820a3c378b 100644 --- a/include/linux/lockdep.h +++ b/include/linux/lockdep.h | |||
@@ -487,12 +487,15 @@ static inline void print_irqtrace_events(struct task_struct *curr) | |||
487 | #ifdef CONFIG_DEBUG_LOCK_ALLOC | 487 | #ifdef CONFIG_DEBUG_LOCK_ALLOC |
488 | # ifdef CONFIG_PROVE_LOCKING | 488 | # ifdef CONFIG_PROVE_LOCKING |
489 | # define mutex_acquire(l, s, t, i) lock_acquire(l, s, t, 0, 2, NULL, i) | 489 | # define mutex_acquire(l, s, t, i) lock_acquire(l, s, t, 0, 2, NULL, i) |
490 | # define mutex_acquire_nest(l, s, t, n, i) lock_acquire(l, s, t, 0, 2, n, i) | ||
490 | # else | 491 | # else |
491 | # define mutex_acquire(l, s, t, i) lock_acquire(l, s, t, 0, 1, NULL, i) | 492 | # define mutex_acquire(l, s, t, i) lock_acquire(l, s, t, 0, 1, NULL, i) |
493 | # define mutex_acquire_nest(l, s, t, n, i) lock_acquire(l, s, t, 0, 1, n, i) | ||
492 | # endif | 494 | # endif |
493 | # define mutex_release(l, n, i) lock_release(l, n, i) | 495 | # define mutex_release(l, n, i) lock_release(l, n, i) |
494 | #else | 496 | #else |
495 | # define mutex_acquire(l, s, t, i) do { } while (0) | 497 | # define mutex_acquire(l, s, t, i) do { } while (0) |
498 | # define mutex_acquire_nest(l, s, t, n, i) do { } while (0) | ||
496 | # define mutex_release(l, n, i) do { } while (0) | 499 | # define mutex_release(l, n, i) do { } while (0) |
497 | #endif | 500 | #endif |
498 | 501 | ||
diff --git a/include/linux/lru_cache.h b/include/linux/lru_cache.h index 6a4fab7c6e09..7a71ffad037c 100644 --- a/include/linux/lru_cache.h +++ b/include/linux/lru_cache.h | |||
@@ -139,9 +139,9 @@ write intent log information, three of which are mentioned here. | |||
139 | * .list is on one of three lists: | 139 | * .list is on one of three lists: |
140 | * in_use: currently in use (refcnt > 0, lc_number != LC_FREE) | 140 | * in_use: currently in use (refcnt > 0, lc_number != LC_FREE) |
141 | * lru: unused but ready to be reused or recycled | 141 | * lru: unused but ready to be reused or recycled |
142 | * (ts_refcnt == 0, lc_number != LC_FREE), | 142 | * (lc_refcnt == 0, lc_number != LC_FREE), |
143 | * free: unused but ready to be recycled | 143 | * free: unused but ready to be recycled |
144 | * (ts_refcnt == 0, lc_number == LC_FREE), | 144 | * (lc_refcnt == 0, lc_number == LC_FREE), |
145 | * | 145 | * |
146 | * an element is said to be "in the active set", | 146 | * an element is said to be "in the active set", |
147 | * if either on "in_use" or "lru", i.e. lc_number != LC_FREE. | 147 | * if either on "in_use" or "lru", i.e. lc_number != LC_FREE. |
@@ -160,8 +160,8 @@ struct lc_element { | |||
160 | struct hlist_node colision; | 160 | struct hlist_node colision; |
161 | struct list_head list; /* LRU list or free list */ | 161 | struct list_head list; /* LRU list or free list */ |
162 | unsigned refcnt; | 162 | unsigned refcnt; |
163 | /* back "pointer" into ts_cache->element[index], | 163 | /* back "pointer" into lc_cache->element[index], |
164 | * for paranoia, and for "ts_element_to_index" */ | 164 | * for paranoia, and for "lc_element_to_index" */ |
165 | unsigned lc_index; | 165 | unsigned lc_index; |
166 | /* if we want to track a larger set of objects, | 166 | /* if we want to track a larger set of objects, |
167 | * it needs to become arch independend u64 */ | 167 | * it needs to become arch independend u64 */ |
@@ -190,8 +190,8 @@ struct lru_cache { | |||
190 | /* Arbitrary limit on maximum tracked objects. Practical limit is much | 190 | /* Arbitrary limit on maximum tracked objects. Practical limit is much |
191 | * lower due to allocation failures, probably. For typical use cases, | 191 | * lower due to allocation failures, probably. For typical use cases, |
192 | * nr_elements should be a few thousand at most. | 192 | * nr_elements should be a few thousand at most. |
193 | * This also limits the maximum value of ts_element.ts_index, allowing the | 193 | * This also limits the maximum value of lc_element.lc_index, allowing the |
194 | * 8 high bits of .ts_index to be overloaded with flags in the future. */ | 194 | * 8 high bits of .lc_index to be overloaded with flags in the future. */ |
195 | #define LC_MAX_ACTIVE (1<<24) | 195 | #define LC_MAX_ACTIVE (1<<24) |
196 | 196 | ||
197 | /* statistics */ | 197 | /* statistics */ |
diff --git a/include/linux/lsm_audit.h b/include/linux/lsm_audit.h index 112a55033352..88e78dedc2e8 100644 --- a/include/linux/lsm_audit.h +++ b/include/linux/lsm_audit.h | |||
@@ -27,7 +27,7 @@ | |||
27 | /* Auxiliary data to use in generating the audit record. */ | 27 | /* Auxiliary data to use in generating the audit record. */ |
28 | struct common_audit_data { | 28 | struct common_audit_data { |
29 | char type; | 29 | char type; |
30 | #define LSM_AUDIT_DATA_FS 1 | 30 | #define LSM_AUDIT_DATA_PATH 1 |
31 | #define LSM_AUDIT_DATA_NET 2 | 31 | #define LSM_AUDIT_DATA_NET 2 |
32 | #define LSM_AUDIT_DATA_CAP 3 | 32 | #define LSM_AUDIT_DATA_CAP 3 |
33 | #define LSM_AUDIT_DATA_IPC 4 | 33 | #define LSM_AUDIT_DATA_IPC 4 |
@@ -35,12 +35,13 @@ struct common_audit_data { | |||
35 | #define LSM_AUDIT_DATA_KEY 6 | 35 | #define LSM_AUDIT_DATA_KEY 6 |
36 | #define LSM_AUDIT_DATA_NONE 7 | 36 | #define LSM_AUDIT_DATA_NONE 7 |
37 | #define LSM_AUDIT_DATA_KMOD 8 | 37 | #define LSM_AUDIT_DATA_KMOD 8 |
38 | #define LSM_AUDIT_DATA_INODE 9 | ||
39 | #define LSM_AUDIT_DATA_DENTRY 10 | ||
38 | struct task_struct *tsk; | 40 | struct task_struct *tsk; |
39 | union { | 41 | union { |
40 | struct { | 42 | struct path path; |
41 | struct path path; | 43 | struct dentry *dentry; |
42 | struct inode *inode; | 44 | struct inode *inode; |
43 | } fs; | ||
44 | struct { | 45 | struct { |
45 | int netif; | 46 | int netif; |
46 | struct sock *sk; | 47 | struct sock *sk; |
diff --git a/include/linux/memblock.h b/include/linux/memblock.h index 62a10c2a11f2..7525e38c434d 100644 --- a/include/linux/memblock.h +++ b/include/linux/memblock.h | |||
@@ -2,6 +2,8 @@ | |||
2 | #define _LINUX_MEMBLOCK_H | 2 | #define _LINUX_MEMBLOCK_H |
3 | #ifdef __KERNEL__ | 3 | #ifdef __KERNEL__ |
4 | 4 | ||
5 | #define MEMBLOCK_ERROR 0 | ||
6 | |||
5 | #ifdef CONFIG_HAVE_MEMBLOCK | 7 | #ifdef CONFIG_HAVE_MEMBLOCK |
6 | /* | 8 | /* |
7 | * Logical memory blocks. | 9 | * Logical memory blocks. |
@@ -20,7 +22,6 @@ | |||
20 | #include <asm/memblock.h> | 22 | #include <asm/memblock.h> |
21 | 23 | ||
22 | #define INIT_MEMBLOCK_REGIONS 128 | 24 | #define INIT_MEMBLOCK_REGIONS 128 |
23 | #define MEMBLOCK_ERROR 0 | ||
24 | 25 | ||
25 | struct memblock_region { | 26 | struct memblock_region { |
26 | phys_addr_t base; | 27 | phys_addr_t base; |
@@ -160,6 +161,12 @@ static inline unsigned long memblock_region_reserved_end_pfn(const struct memblo | |||
160 | #define __initdata_memblock | 161 | #define __initdata_memblock |
161 | #endif | 162 | #endif |
162 | 163 | ||
164 | #else | ||
165 | static inline phys_addr_t memblock_alloc(phys_addr_t size, phys_addr_t align) | ||
166 | { | ||
167 | return MEMBLOCK_ERROR; | ||
168 | } | ||
169 | |||
163 | #endif /* CONFIG_HAVE_MEMBLOCK */ | 170 | #endif /* CONFIG_HAVE_MEMBLOCK */ |
164 | 171 | ||
165 | #endif /* __KERNEL__ */ | 172 | #endif /* __KERNEL__ */ |
diff --git a/include/linux/memcontrol.h b/include/linux/memcontrol.h index 5e9840f50980..9724a38ee69d 100644 --- a/include/linux/memcontrol.h +++ b/include/linux/memcontrol.h | |||
@@ -20,6 +20,8 @@ | |||
20 | #ifndef _LINUX_MEMCONTROL_H | 20 | #ifndef _LINUX_MEMCONTROL_H |
21 | #define _LINUX_MEMCONTROL_H | 21 | #define _LINUX_MEMCONTROL_H |
22 | #include <linux/cgroup.h> | 22 | #include <linux/cgroup.h> |
23 | #include <linux/vm_event_item.h> | ||
24 | |||
23 | struct mem_cgroup; | 25 | struct mem_cgroup; |
24 | struct page_cgroup; | 26 | struct page_cgroup; |
25 | struct page; | 27 | struct page; |
@@ -106,9 +108,10 @@ extern void mem_cgroup_end_migration(struct mem_cgroup *mem, | |||
106 | */ | 108 | */ |
107 | int mem_cgroup_inactive_anon_is_low(struct mem_cgroup *memcg); | 109 | int mem_cgroup_inactive_anon_is_low(struct mem_cgroup *memcg); |
108 | int mem_cgroup_inactive_file_is_low(struct mem_cgroup *memcg); | 110 | int mem_cgroup_inactive_file_is_low(struct mem_cgroup *memcg); |
109 | unsigned long mem_cgroup_zone_nr_pages(struct mem_cgroup *memcg, | 111 | int mem_cgroup_select_victim_node(struct mem_cgroup *memcg); |
110 | struct zone *zone, | 112 | unsigned long mem_cgroup_zone_nr_lru_pages(struct mem_cgroup *memcg, |
111 | enum lru_list lru); | 113 | struct zone *zone, |
114 | enum lru_list lru); | ||
112 | struct zone_reclaim_stat *mem_cgroup_get_reclaim_stat(struct mem_cgroup *memcg, | 115 | struct zone_reclaim_stat *mem_cgroup_get_reclaim_stat(struct mem_cgroup *memcg, |
113 | struct zone *zone); | 116 | struct zone *zone); |
114 | struct zone_reclaim_stat* | 117 | struct zone_reclaim_stat* |
@@ -144,9 +147,11 @@ static inline void mem_cgroup_dec_page_stat(struct page *page, | |||
144 | } | 147 | } |
145 | 148 | ||
146 | unsigned long mem_cgroup_soft_limit_reclaim(struct zone *zone, int order, | 149 | unsigned long mem_cgroup_soft_limit_reclaim(struct zone *zone, int order, |
147 | gfp_t gfp_mask); | 150 | gfp_t gfp_mask, |
151 | unsigned long *total_scanned); | ||
148 | u64 mem_cgroup_get_limit(struct mem_cgroup *mem); | 152 | u64 mem_cgroup_get_limit(struct mem_cgroup *mem); |
149 | 153 | ||
154 | void mem_cgroup_count_vm_event(struct mm_struct *mm, enum vm_event_item idx); | ||
150 | #ifdef CONFIG_TRANSPARENT_HUGEPAGE | 155 | #ifdef CONFIG_TRANSPARENT_HUGEPAGE |
151 | void mem_cgroup_split_huge_fixup(struct page *head, struct page *tail); | 156 | void mem_cgroup_split_huge_fixup(struct page *head, struct page *tail); |
152 | #endif | 157 | #endif |
@@ -302,8 +307,8 @@ mem_cgroup_inactive_file_is_low(struct mem_cgroup *memcg) | |||
302 | } | 307 | } |
303 | 308 | ||
304 | static inline unsigned long | 309 | static inline unsigned long |
305 | mem_cgroup_zone_nr_pages(struct mem_cgroup *memcg, struct zone *zone, | 310 | mem_cgroup_zone_nr_lru_pages(struct mem_cgroup *memcg, struct zone *zone, |
306 | enum lru_list lru) | 311 | enum lru_list lru) |
307 | { | 312 | { |
308 | return 0; | 313 | return 0; |
309 | } | 314 | } |
@@ -338,7 +343,8 @@ static inline void mem_cgroup_dec_page_stat(struct page *page, | |||
338 | 343 | ||
339 | static inline | 344 | static inline |
340 | unsigned long mem_cgroup_soft_limit_reclaim(struct zone *zone, int order, | 345 | unsigned long mem_cgroup_soft_limit_reclaim(struct zone *zone, int order, |
341 | gfp_t gfp_mask) | 346 | gfp_t gfp_mask, |
347 | unsigned long *total_scanned) | ||
342 | { | 348 | { |
343 | return 0; | 349 | return 0; |
344 | } | 350 | } |
@@ -354,6 +360,10 @@ static inline void mem_cgroup_split_huge_fixup(struct page *head, | |||
354 | { | 360 | { |
355 | } | 361 | } |
356 | 362 | ||
363 | static inline | ||
364 | void mem_cgroup_count_vm_event(struct mm_struct *mm, enum vm_event_item idx) | ||
365 | { | ||
366 | } | ||
357 | #endif /* CONFIG_CGROUP_MEM_CONT */ | 367 | #endif /* CONFIG_CGROUP_MEM_CONT */ |
358 | 368 | ||
359 | #if !defined(CONFIG_CGROUP_MEM_RES_CTLR) || !defined(CONFIG_DEBUG_VM) | 369 | #if !defined(CONFIG_CGROUP_MEM_RES_CTLR) || !defined(CONFIG_DEBUG_VM) |
diff --git a/include/linux/mempolicy.h b/include/linux/mempolicy.h index 31ac26ca4acf..7978eec1b7d9 100644 --- a/include/linux/mempolicy.h +++ b/include/linux/mempolicy.h | |||
@@ -199,6 +199,9 @@ void mpol_free_shared_policy(struct shared_policy *p); | |||
199 | struct mempolicy *mpol_shared_policy_lookup(struct shared_policy *sp, | 199 | struct mempolicy *mpol_shared_policy_lookup(struct shared_policy *sp, |
200 | unsigned long idx); | 200 | unsigned long idx); |
201 | 201 | ||
202 | struct mempolicy *get_vma_policy(struct task_struct *tsk, | ||
203 | struct vm_area_struct *vma, unsigned long addr); | ||
204 | |||
202 | extern void numa_default_policy(void); | 205 | extern void numa_default_policy(void); |
203 | extern void numa_policy_init(void); | 206 | extern void numa_policy_init(void); |
204 | extern void mpol_rebind_task(struct task_struct *tsk, const nodemask_t *new, | 207 | extern void mpol_rebind_task(struct task_struct *tsk, const nodemask_t *new, |
@@ -228,10 +231,10 @@ int do_migrate_pages(struct mm_struct *mm, | |||
228 | 231 | ||
229 | #ifdef CONFIG_TMPFS | 232 | #ifdef CONFIG_TMPFS |
230 | extern int mpol_parse_str(char *str, struct mempolicy **mpol, int no_context); | 233 | extern int mpol_parse_str(char *str, struct mempolicy **mpol, int no_context); |
234 | #endif | ||
231 | 235 | ||
232 | extern int mpol_to_str(char *buffer, int maxlen, struct mempolicy *pol, | 236 | extern int mpol_to_str(char *buffer, int maxlen, struct mempolicy *pol, |
233 | int no_context); | 237 | int no_context); |
234 | #endif | ||
235 | 238 | ||
236 | /* Check if a vma is migratable */ | 239 | /* Check if a vma is migratable */ |
237 | static inline int vma_migratable(struct vm_area_struct *vma) | 240 | static inline int vma_migratable(struct vm_area_struct *vma) |
@@ -368,13 +371,13 @@ static inline int mpol_parse_str(char *str, struct mempolicy **mpol, | |||
368 | { | 371 | { |
369 | return 1; /* error */ | 372 | return 1; /* error */ |
370 | } | 373 | } |
374 | #endif | ||
371 | 375 | ||
372 | static inline int mpol_to_str(char *buffer, int maxlen, struct mempolicy *pol, | 376 | static inline int mpol_to_str(char *buffer, int maxlen, struct mempolicy *pol, |
373 | int no_context) | 377 | int no_context) |
374 | { | 378 | { |
375 | return 0; | 379 | return 0; |
376 | } | 380 | } |
377 | #endif | ||
378 | 381 | ||
379 | #endif /* CONFIG_NUMA */ | 382 | #endif /* CONFIG_NUMA */ |
380 | #endif /* __KERNEL__ */ | 383 | #endif /* __KERNEL__ */ |
diff --git a/include/linux/mfd/88pm860x.h b/include/linux/mfd/88pm860x.h index 8fba7972ff5f..63b4fb8e3b6f 100644 --- a/include/linux/mfd/88pm860x.h +++ b/include/linux/mfd/88pm860x.h | |||
@@ -330,6 +330,11 @@ struct pm860x_led_pdata { | |||
330 | unsigned long flags; | 330 | unsigned long flags; |
331 | }; | 331 | }; |
332 | 332 | ||
333 | struct pm860x_rtc_pdata { | ||
334 | int (*sync)(unsigned int ticks); | ||
335 | int vrtc; | ||
336 | }; | ||
337 | |||
333 | struct pm860x_touch_pdata { | 338 | struct pm860x_touch_pdata { |
334 | int gpadc_prebias; | 339 | int gpadc_prebias; |
335 | int slot_cycle; | 340 | int slot_cycle; |
@@ -349,6 +354,7 @@ struct pm860x_power_pdata { | |||
349 | struct pm860x_platform_data { | 354 | struct pm860x_platform_data { |
350 | struct pm860x_backlight_pdata *backlight; | 355 | struct pm860x_backlight_pdata *backlight; |
351 | struct pm860x_led_pdata *led; | 356 | struct pm860x_led_pdata *led; |
357 | struct pm860x_rtc_pdata *rtc; | ||
352 | struct pm860x_touch_pdata *touch; | 358 | struct pm860x_touch_pdata *touch; |
353 | struct pm860x_power_pdata *power; | 359 | struct pm860x_power_pdata *power; |
354 | struct regulator_init_data *regulator; | 360 | struct regulator_init_data *regulator; |
diff --git a/include/linux/mfd/abx500.h b/include/linux/mfd/abx500.h index 7d9b6ae1c203..896b5e47f16e 100644 --- a/include/linux/mfd/abx500.h +++ b/include/linux/mfd/abx500.h | |||
@@ -34,6 +34,13 @@ | |||
34 | #define AB5500_2_0 0x21 | 34 | #define AB5500_2_0 0x21 |
35 | #define AB5500_2_1 0x22 | 35 | #define AB5500_2_1 0x22 |
36 | 36 | ||
37 | /* AB8500 CIDs*/ | ||
38 | #define AB8500_CUTEARLY 0x00 | ||
39 | #define AB8500_CUT1P0 0x10 | ||
40 | #define AB8500_CUT1P1 0x11 | ||
41 | #define AB8500_CUT2P0 0x20 | ||
42 | #define AB8500_CUT3P0 0x30 | ||
43 | |||
37 | /* | 44 | /* |
38 | * AB3100, EVENTA1, A2 and A3 event register flags | 45 | * AB3100, EVENTA1, A2 and A3 event register flags |
39 | * these are catenated into a single 32-bit flag in the code | 46 | * these are catenated into a single 32-bit flag in the code |
@@ -186,6 +193,7 @@ struct abx500_init_settings { | |||
186 | struct ab3550_platform_data { | 193 | struct ab3550_platform_data { |
187 | struct {unsigned int base; unsigned int count; } irq; | 194 | struct {unsigned int base; unsigned int count; } irq; |
188 | void *dev_data[AB3550_NUM_DEVICES]; | 195 | void *dev_data[AB3550_NUM_DEVICES]; |
196 | size_t dev_data_sz[AB3550_NUM_DEVICES]; | ||
189 | struct abx500_init_settings *init_settings; | 197 | struct abx500_init_settings *init_settings; |
190 | unsigned int init_settings_sz; | 198 | unsigned int init_settings_sz; |
191 | }; | 199 | }; |
diff --git a/include/linux/mfd/asic3.h b/include/linux/mfd/asic3.h index de3c4ad19afb..ed793b77a1c5 100644 --- a/include/linux/mfd/asic3.h +++ b/include/linux/mfd/asic3.h | |||
@@ -16,6 +16,13 @@ | |||
16 | 16 | ||
17 | #include <linux/types.h> | 17 | #include <linux/types.h> |
18 | 18 | ||
19 | struct led_classdev; | ||
20 | struct asic3_led { | ||
21 | const char *name; | ||
22 | const char *default_trigger; | ||
23 | struct led_classdev *cdev; | ||
24 | }; | ||
25 | |||
19 | struct asic3_platform_data { | 26 | struct asic3_platform_data { |
20 | u16 *gpio_config; | 27 | u16 *gpio_config; |
21 | unsigned int gpio_config_num; | 28 | unsigned int gpio_config_num; |
@@ -23,6 +30,8 @@ struct asic3_platform_data { | |||
23 | unsigned int irq_base; | 30 | unsigned int irq_base; |
24 | 31 | ||
25 | unsigned int gpio_base; | 32 | unsigned int gpio_base; |
33 | |||
34 | struct asic3_led *leds; | ||
26 | }; | 35 | }; |
27 | 36 | ||
28 | #define ASIC3_NUM_GPIO_BANKS 4 | 37 | #define ASIC3_NUM_GPIO_BANKS 4 |
@@ -111,9 +120,9 @@ struct asic3_platform_data { | |||
111 | #define ASIC3_GPIOA11_PWM0 ASIC3_CONFIG_GPIO(11, 1, 1, 0) | 120 | #define ASIC3_GPIOA11_PWM0 ASIC3_CONFIG_GPIO(11, 1, 1, 0) |
112 | #define ASIC3_GPIOA12_PWM1 ASIC3_CONFIG_GPIO(12, 1, 1, 0) | 121 | #define ASIC3_GPIOA12_PWM1 ASIC3_CONFIG_GPIO(12, 1, 1, 0) |
113 | #define ASIC3_GPIOA15_CONTROL_CX ASIC3_CONFIG_GPIO(15, 1, 1, 0) | 122 | #define ASIC3_GPIOA15_CONTROL_CX ASIC3_CONFIG_GPIO(15, 1, 1, 0) |
114 | #define ASIC3_GPIOC0_LED0 ASIC3_CONFIG_GPIO(32, 1, 1, 0) | 123 | #define ASIC3_GPIOC0_LED0 ASIC3_CONFIG_GPIO(32, 1, 0, 0) |
115 | #define ASIC3_GPIOC1_LED1 ASIC3_CONFIG_GPIO(33, 1, 1, 0) | 124 | #define ASIC3_GPIOC1_LED1 ASIC3_CONFIG_GPIO(33, 1, 0, 0) |
116 | #define ASIC3_GPIOC2_LED2 ASIC3_CONFIG_GPIO(34, 1, 1, 0) | 125 | #define ASIC3_GPIOC2_LED2 ASIC3_CONFIG_GPIO(34, 1, 0, 0) |
117 | #define ASIC3_GPIOC3_SPI_RXD ASIC3_CONFIG_GPIO(35, 1, 0, 0) | 126 | #define ASIC3_GPIOC3_SPI_RXD ASIC3_CONFIG_GPIO(35, 1, 0, 0) |
118 | #define ASIC3_GPIOC4_CF_nCD ASIC3_CONFIG_GPIO(36, 1, 0, 0) | 127 | #define ASIC3_GPIOC4_CF_nCD ASIC3_CONFIG_GPIO(36, 1, 0, 0) |
119 | #define ASIC3_GPIOC4_SPI_TXD ASIC3_CONFIG_GPIO(36, 1, 1, 0) | 128 | #define ASIC3_GPIOC4_SPI_TXD ASIC3_CONFIG_GPIO(36, 1, 1, 0) |
@@ -152,6 +161,7 @@ struct asic3_platform_data { | |||
152 | #define PWM_TIMEBASE_VALUE(x) ((x)&0xf) /* Low 4 bits sets time base */ | 161 | #define PWM_TIMEBASE_VALUE(x) ((x)&0xf) /* Low 4 bits sets time base */ |
153 | #define PWM_TIMEBASE_ENABLE (1 << 4) /* Enable clock */ | 162 | #define PWM_TIMEBASE_ENABLE (1 << 4) /* Enable clock */ |
154 | 163 | ||
164 | #define ASIC3_NUM_LEDS 3 | ||
155 | #define ASIC3_LED_0_Base 0x0700 | 165 | #define ASIC3_LED_0_Base 0x0700 |
156 | #define ASIC3_LED_1_Base 0x0800 | 166 | #define ASIC3_LED_1_Base 0x0800 |
157 | #define ASIC3_LED_2_Base 0x0900 | 167 | #define ASIC3_LED_2_Base 0x0900 |
@@ -287,10 +297,17 @@ struct asic3_platform_data { | |||
287 | * | 297 | * |
288 | *****************************************************************************/ | 298 | *****************************************************************************/ |
289 | #define ASIC3_SD_CONFIG_BASE 0x0400 /* Assumes 32 bit addressing */ | 299 | #define ASIC3_SD_CONFIG_BASE 0x0400 /* Assumes 32 bit addressing */ |
300 | #define ASIC3_SD_CONFIG_SIZE 0x0200 /* Assumes 32 bit addressing */ | ||
290 | #define ASIC3_SD_CTRL_BASE 0x1000 | 301 | #define ASIC3_SD_CTRL_BASE 0x1000 |
291 | #define ASIC3_SDIO_CTRL_BASE 0x1200 | 302 | #define ASIC3_SDIO_CTRL_BASE 0x1200 |
292 | 303 | ||
293 | #define ASIC3_MAP_SIZE_32BIT 0x2000 | 304 | #define ASIC3_MAP_SIZE_32BIT 0x2000 |
294 | #define ASIC3_MAP_SIZE_16BIT 0x1000 | 305 | #define ASIC3_MAP_SIZE_16BIT 0x1000 |
295 | 306 | ||
307 | /* Functions needed by leds-asic3 */ | ||
308 | |||
309 | struct asic3; | ||
310 | extern void asic3_write_register(struct asic3 *asic, unsigned int reg, u32 val); | ||
311 | extern u32 asic3_read_register(struct asic3 *asic, unsigned int reg); | ||
312 | |||
296 | #endif /* __ASIC3_H__ */ | 313 | #endif /* __ASIC3_H__ */ |
diff --git a/include/linux/mfd/core.h b/include/linux/mfd/core.h index aef23309a742..4e76163dd862 100644 --- a/include/linux/mfd/core.h +++ b/include/linux/mfd/core.h | |||
@@ -33,8 +33,9 @@ struct mfd_cell { | |||
33 | int (*suspend)(struct platform_device *dev); | 33 | int (*suspend)(struct platform_device *dev); |
34 | int (*resume)(struct platform_device *dev); | 34 | int (*resume)(struct platform_device *dev); |
35 | 35 | ||
36 | /* mfd_data can be used to pass data to client drivers */ | 36 | /* platform data passed to the sub devices drivers */ |
37 | void *mfd_data; | 37 | void *platform_data; |
38 | size_t pdata_size; | ||
38 | 39 | ||
39 | /* | 40 | /* |
40 | * These resources can be specified relative to the parent device. | 41 | * These resources can be specified relative to the parent device. |
@@ -89,24 +90,6 @@ static inline const struct mfd_cell *mfd_get_cell(struct platform_device *pdev) | |||
89 | return pdev->mfd_cell; | 90 | return pdev->mfd_cell; |
90 | } | 91 | } |
91 | 92 | ||
92 | /* | ||
93 | * Given a platform device that's been created by mfd_add_devices(), fetch | ||
94 | * the .mfd_data entry from the mfd_cell that created it. | ||
95 | * Otherwise just return the platform_data pointer. | ||
96 | * This maintains compatibility with platform drivers whose devices aren't | ||
97 | * created by the mfd layer, and expect platform_data to contain what would've | ||
98 | * otherwise been in mfd_data. | ||
99 | */ | ||
100 | static inline void *mfd_get_data(struct platform_device *pdev) | ||
101 | { | ||
102 | const struct mfd_cell *cell = mfd_get_cell(pdev); | ||
103 | |||
104 | if (cell) | ||
105 | return cell->mfd_data; | ||
106 | else | ||
107 | return pdev->dev.platform_data; | ||
108 | } | ||
109 | |||
110 | extern int mfd_add_devices(struct device *parent, int id, | 93 | extern int mfd_add_devices(struct device *parent, int id, |
111 | struct mfd_cell *cells, int n_devs, | 94 | struct mfd_cell *cells, int n_devs, |
112 | struct resource *mem_base, | 95 | struct resource *mem_base, |
diff --git a/include/linux/mfd/db5500-prcmu.h b/include/linux/mfd/db5500-prcmu.h new file mode 100644 index 000000000000..f0977986402c --- /dev/null +++ b/include/linux/mfd/db5500-prcmu.h | |||
@@ -0,0 +1,45 @@ | |||
1 | /* | ||
2 | * Copyright (C) ST-Ericsson SA 2010 | ||
3 | * | ||
4 | * License Terms: GNU General Public License v2 | ||
5 | * | ||
6 | * U5500 PRCMU API. | ||
7 | */ | ||
8 | #ifndef __MACH_PRCMU_U5500_H | ||
9 | #define __MACH_PRCMU_U5500_H | ||
10 | |||
11 | #ifdef CONFIG_UX500_SOC_DB5500 | ||
12 | |||
13 | void db5500_prcmu_early_init(void); | ||
14 | |||
15 | int db5500_prcmu_abb_read(u8 slave, u8 reg, u8 *value, u8 size); | ||
16 | int db5500_prcmu_abb_write(u8 slave, u8 reg, u8 *value, u8 size); | ||
17 | |||
18 | #else /* !CONFIG_UX500_SOC_DB5500 */ | ||
19 | |||
20 | static inline void db5500_prcmu_early_init(void) | ||
21 | { | ||
22 | } | ||
23 | |||
24 | static inline int db5500_prcmu_abb_read(u8 slave, u8 reg, u8 *value, u8 size) | ||
25 | { | ||
26 | return -ENOSYS; | ||
27 | } | ||
28 | |||
29 | static inline int db5500_prcmu_abb_write(u8 slave, u8 reg, u8 *value, u8 size) | ||
30 | { | ||
31 | return -ENOSYS; | ||
32 | } | ||
33 | |||
34 | #endif /* CONFIG_UX500_SOC_DB5500 */ | ||
35 | |||
36 | static inline int db5500_prcmu_config_abb_event_readout(u32 abb_events) | ||
37 | { | ||
38 | #ifdef CONFIG_MACH_U5500_SIMULATOR | ||
39 | return 0; | ||
40 | #else | ||
41 | return -1; | ||
42 | #endif | ||
43 | } | ||
44 | |||
45 | #endif /* __MACH_PRCMU_U5500_H */ | ||
diff --git a/include/linux/mfd/db8500-prcmu.h b/include/linux/mfd/db8500-prcmu.h new file mode 100644 index 000000000000..917dbcab701c --- /dev/null +++ b/include/linux/mfd/db8500-prcmu.h | |||
@@ -0,0 +1,978 @@ | |||
1 | /* | ||
2 | * Copyright (C) STMicroelectronics 2009 | ||
3 | * Copyright (C) ST-Ericsson SA 2010 | ||
4 | * | ||
5 | * License Terms: GNU General Public License v2 | ||
6 | * Author: Kumar Sanghvi <kumar.sanghvi@stericsson.com> | ||
7 | * | ||
8 | * PRCMU f/w APIs | ||
9 | */ | ||
10 | #ifndef __MFD_DB8500_PRCMU_H | ||
11 | #define __MFD_DB8500_PRCMU_H | ||
12 | |||
13 | #include <linux/interrupt.h> | ||
14 | #include <linux/notifier.h> | ||
15 | |||
16 | /* This portion previously known as <mach/prcmu-fw-defs_v1.h> */ | ||
17 | |||
18 | /** | ||
19 | * enum state - ON/OFF state definition | ||
20 | * @OFF: State is ON | ||
21 | * @ON: State is OFF | ||
22 | * | ||
23 | */ | ||
24 | enum state { | ||
25 | OFF = 0x0, | ||
26 | ON = 0x1, | ||
27 | }; | ||
28 | |||
29 | /** | ||
30 | * enum ret_state - general purpose On/Off/Retention states | ||
31 | * | ||
32 | */ | ||
33 | enum ret_state { | ||
34 | OFFST = 0, | ||
35 | ONST = 1, | ||
36 | RETST = 2 | ||
37 | }; | ||
38 | |||
39 | /** | ||
40 | * enum clk_arm - ARM Cortex A9 clock schemes | ||
41 | * @A9_OFF: | ||
42 | * @A9_BOOT: | ||
43 | * @A9_OPPT1: | ||
44 | * @A9_OPPT2: | ||
45 | * @A9_EXTCLK: | ||
46 | */ | ||
47 | enum clk_arm { | ||
48 | A9_OFF, | ||
49 | A9_BOOT, | ||
50 | A9_OPPT1, | ||
51 | A9_OPPT2, | ||
52 | A9_EXTCLK | ||
53 | }; | ||
54 | |||
55 | /** | ||
56 | * enum clk_gen - GEN#0/GEN#1 clock schemes | ||
57 | * @GEN_OFF: | ||
58 | * @GEN_BOOT: | ||
59 | * @GEN_OPPT1: | ||
60 | */ | ||
61 | enum clk_gen { | ||
62 | GEN_OFF, | ||
63 | GEN_BOOT, | ||
64 | GEN_OPPT1, | ||
65 | }; | ||
66 | |||
67 | /* some information between arm and xp70 */ | ||
68 | |||
69 | /** | ||
70 | * enum romcode_write - Romcode message written by A9 AND read by XP70 | ||
71 | * @RDY_2_DS: Value set when ApDeepSleep state can be executed by XP70 | ||
72 | * @RDY_2_XP70_RST: Value set when 0x0F has been successfully polled by the | ||
73 | * romcode. The xp70 will go into self-reset | ||
74 | */ | ||
75 | enum romcode_write { | ||
76 | RDY_2_DS = 0x09, | ||
77 | RDY_2_XP70_RST = 0x10 | ||
78 | }; | ||
79 | |||
80 | /** | ||
81 | * enum romcode_read - Romcode message written by XP70 and read by A9 | ||
82 | * @INIT: Init value when romcode field is not used | ||
83 | * @FS_2_DS: Value set when power state is going from ApExecute to | ||
84 | * ApDeepSleep | ||
85 | * @END_DS: Value set when ApDeepSleep power state is reached coming from | ||
86 | * ApExecute state | ||
87 | * @DS_TO_FS: Value set when power state is going from ApDeepSleep to | ||
88 | * ApExecute | ||
89 | * @END_FS: Value set when ApExecute power state is reached coming from | ||
90 | * ApDeepSleep state | ||
91 | * @SWR: Value set when power state is going to ApReset | ||
92 | * @END_SWR: Value set when the xp70 finished executing ApReset actions and | ||
93 | * waits for romcode acknowledgment to go to self-reset | ||
94 | */ | ||
95 | enum romcode_read { | ||
96 | INIT = 0x00, | ||
97 | FS_2_DS = 0x0A, | ||
98 | END_DS = 0x0B, | ||
99 | DS_TO_FS = 0x0C, | ||
100 | END_FS = 0x0D, | ||
101 | SWR = 0x0E, | ||
102 | END_SWR = 0x0F | ||
103 | }; | ||
104 | |||
105 | /** | ||
106 | * enum ap_pwrst - current power states defined in PRCMU firmware | ||
107 | * @NO_PWRST: Current power state init | ||
108 | * @AP_BOOT: Current power state is apBoot | ||
109 | * @AP_EXECUTE: Current power state is apExecute | ||
110 | * @AP_DEEP_SLEEP: Current power state is apDeepSleep | ||
111 | * @AP_SLEEP: Current power state is apSleep | ||
112 | * @AP_IDLE: Current power state is apIdle | ||
113 | * @AP_RESET: Current power state is apReset | ||
114 | */ | ||
115 | enum ap_pwrst { | ||
116 | NO_PWRST = 0x00, | ||
117 | AP_BOOT = 0x01, | ||
118 | AP_EXECUTE = 0x02, | ||
119 | AP_DEEP_SLEEP = 0x03, | ||
120 | AP_SLEEP = 0x04, | ||
121 | AP_IDLE = 0x05, | ||
122 | AP_RESET = 0x06 | ||
123 | }; | ||
124 | |||
125 | /** | ||
126 | * enum ap_pwrst_trans - Transition states defined in PRCMU firmware | ||
127 | * @NO_TRANSITION: No power state transition | ||
128 | * @APEXECUTE_TO_APSLEEP: Power state transition from ApExecute to ApSleep | ||
129 | * @APIDLE_TO_APSLEEP: Power state transition from ApIdle to ApSleep | ||
130 | * @APBOOT_TO_APEXECUTE: Power state transition from ApBoot to ApExecute | ||
131 | * @APEXECUTE_TO_APDEEPSLEEP: Power state transition from ApExecute to | ||
132 | * ApDeepSleep | ||
133 | * @APEXECUTE_TO_APIDLE: Power state transition from ApExecute to ApIdle | ||
134 | */ | ||
135 | enum ap_pwrst_trans { | ||
136 | NO_TRANSITION = 0x00, | ||
137 | APEXECUTE_TO_APSLEEP = 0x01, | ||
138 | APIDLE_TO_APSLEEP = 0x02, /* To be removed */ | ||
139 | PRCMU_AP_SLEEP = 0x01, | ||
140 | APBOOT_TO_APEXECUTE = 0x03, | ||
141 | APEXECUTE_TO_APDEEPSLEEP = 0x04, /* To be removed */ | ||
142 | PRCMU_AP_DEEP_SLEEP = 0x04, | ||
143 | APEXECUTE_TO_APIDLE = 0x05, /* To be removed */ | ||
144 | PRCMU_AP_IDLE = 0x05, | ||
145 | PRCMU_AP_DEEP_IDLE = 0x07, | ||
146 | }; | ||
147 | |||
148 | /** | ||
149 | * enum ddr_pwrst - DDR power states definition | ||
150 | * @DDR_PWR_STATE_UNCHANGED: SDRAM and DDR controller state is unchanged | ||
151 | * @DDR_PWR_STATE_ON: | ||
152 | * @DDR_PWR_STATE_OFFLOWLAT: | ||
153 | * @DDR_PWR_STATE_OFFHIGHLAT: | ||
154 | */ | ||
155 | enum ddr_pwrst { | ||
156 | DDR_PWR_STATE_UNCHANGED = 0x00, | ||
157 | DDR_PWR_STATE_ON = 0x01, | ||
158 | DDR_PWR_STATE_OFFLOWLAT = 0x02, | ||
159 | DDR_PWR_STATE_OFFHIGHLAT = 0x03 | ||
160 | }; | ||
161 | |||
162 | /** | ||
163 | * enum arm_opp - ARM OPP states definition | ||
164 | * @ARM_OPP_INIT: | ||
165 | * @ARM_NO_CHANGE: The ARM operating point is unchanged | ||
166 | * @ARM_100_OPP: The new ARM operating point is arm100opp | ||
167 | * @ARM_50_OPP: The new ARM operating point is arm50opp | ||
168 | * @ARM_MAX_OPP: Operating point is "max" (more than 100) | ||
169 | * @ARM_MAX_FREQ100OPP: Set max opp if available, else 100 | ||
170 | * @ARM_EXTCLK: The new ARM operating point is armExtClk | ||
171 | */ | ||
172 | enum arm_opp { | ||
173 | ARM_OPP_INIT = 0x00, | ||
174 | ARM_NO_CHANGE = 0x01, | ||
175 | ARM_100_OPP = 0x02, | ||
176 | ARM_50_OPP = 0x03, | ||
177 | ARM_MAX_OPP = 0x04, | ||
178 | ARM_MAX_FREQ100OPP = 0x05, | ||
179 | ARM_EXTCLK = 0x07 | ||
180 | }; | ||
181 | |||
182 | /** | ||
183 | * enum ape_opp - APE OPP states definition | ||
184 | * @APE_OPP_INIT: | ||
185 | * @APE_NO_CHANGE: The APE operating point is unchanged | ||
186 | * @APE_100_OPP: The new APE operating point is ape100opp | ||
187 | * @APE_50_OPP: 50% | ||
188 | */ | ||
189 | enum ape_opp { | ||
190 | APE_OPP_INIT = 0x00, | ||
191 | APE_NO_CHANGE = 0x01, | ||
192 | APE_100_OPP = 0x02, | ||
193 | APE_50_OPP = 0x03 | ||
194 | }; | ||
195 | |||
196 | /** | ||
197 | * enum hw_acc_state - State definition for hardware accelerator | ||
198 | * @HW_NO_CHANGE: The hardware accelerator state must remain unchanged | ||
199 | * @HW_OFF: The hardware accelerator must be switched off | ||
200 | * @HW_OFF_RAMRET: The hardware accelerator must be switched off with its | ||
201 | * internal RAM in retention | ||
202 | * @HW_ON: The hwa hardware accelerator hwa must be switched on | ||
203 | * | ||
204 | * NOTE! Deprecated, to be removed when all users switched over to use the | ||
205 | * regulator API. | ||
206 | */ | ||
207 | enum hw_acc_state { | ||
208 | HW_NO_CHANGE = 0x00, | ||
209 | HW_OFF = 0x01, | ||
210 | HW_OFF_RAMRET = 0x02, | ||
211 | HW_ON = 0x04 | ||
212 | }; | ||
213 | |||
214 | /** | ||
215 | * enum mbox_2_arm_stat - Status messages definition for mbox_arm | ||
216 | * @BOOT_TO_EXECUTEOK: The apBoot to apExecute state transition has been | ||
217 | * completed | ||
218 | * @DEEPSLEEPOK: The apExecute to apDeepSleep state transition has been | ||
219 | * completed | ||
220 | * @SLEEPOK: The apExecute to apSleep state transition has been completed | ||
221 | * @IDLEOK: The apExecute to apIdle state transition has been completed | ||
222 | * @SOFTRESETOK: The A9 watchdog/ SoftReset state has been completed | ||
223 | * @SOFTRESETGO : The A9 watchdog/SoftReset state is on going | ||
224 | * @BOOT_TO_EXECUTE: The apBoot to apExecute state transition is on going | ||
225 | * @EXECUTE_TO_DEEPSLEEP: The apExecute to apDeepSleep state transition is on | ||
226 | * going | ||
227 | * @DEEPSLEEP_TO_EXECUTE: The apDeepSleep to apExecute state transition is on | ||
228 | * going | ||
229 | * @DEEPSLEEP_TO_EXECUTEOK: The apDeepSleep to apExecute state transition has | ||
230 | * been completed | ||
231 | * @EXECUTE_TO_SLEEP: The apExecute to apSleep state transition is on going | ||
232 | * @SLEEP_TO_EXECUTE: The apSleep to apExecute state transition is on going | ||
233 | * @SLEEP_TO_EXECUTEOK: The apSleep to apExecute state transition has been | ||
234 | * completed | ||
235 | * @EXECUTE_TO_IDLE: The apExecute to apIdle state transition is on going | ||
236 | * @IDLE_TO_EXECUTE: The apIdle to apExecute state transition is on going | ||
237 | * @IDLE_TO_EXECUTEOK: The apIdle to apExecute state transition has been | ||
238 | * completed | ||
239 | * @INIT_STATUS: Status init | ||
240 | */ | ||
241 | enum ap_pwrsttr_status { | ||
242 | BOOT_TO_EXECUTEOK = 0xFF, | ||
243 | DEEPSLEEPOK = 0xFE, | ||
244 | SLEEPOK = 0xFD, | ||
245 | IDLEOK = 0xFC, | ||
246 | SOFTRESETOK = 0xFB, | ||
247 | SOFTRESETGO = 0xFA, | ||
248 | BOOT_TO_EXECUTE = 0xF9, | ||
249 | EXECUTE_TO_DEEPSLEEP = 0xF8, | ||
250 | DEEPSLEEP_TO_EXECUTE = 0xF7, | ||
251 | DEEPSLEEP_TO_EXECUTEOK = 0xF6, | ||
252 | EXECUTE_TO_SLEEP = 0xF5, | ||
253 | SLEEP_TO_EXECUTE = 0xF4, | ||
254 | SLEEP_TO_EXECUTEOK = 0xF3, | ||
255 | EXECUTE_TO_IDLE = 0xF2, | ||
256 | IDLE_TO_EXECUTE = 0xF1, | ||
257 | IDLE_TO_EXECUTEOK = 0xF0, | ||
258 | RDYTODS_RETURNTOEXE = 0xEF, | ||
259 | NORDYTODS_RETURNTOEXE = 0xEE, | ||
260 | EXETOSLEEP_RETURNTOEXE = 0xED, | ||
261 | EXETOIDLE_RETURNTOEXE = 0xEC, | ||
262 | INIT_STATUS = 0xEB, | ||
263 | |||
264 | /*error messages */ | ||
265 | INITERROR = 0x00, | ||
266 | PLLARMLOCKP_ER = 0x01, | ||
267 | PLLDDRLOCKP_ER = 0x02, | ||
268 | PLLSOCLOCKP_ER = 0x03, | ||
269 | PLLSOCK1LOCKP_ER = 0x04, | ||
270 | ARMWFI_ER = 0x05, | ||
271 | SYSCLKOK_ER = 0x06, | ||
272 | I2C_NACK_DATA_ER = 0x07, | ||
273 | BOOT_ER = 0x08, | ||
274 | I2C_STATUS_ALWAYS_1 = 0x0A, | ||
275 | I2C_NACK_REG_ADDR_ER = 0x0B, | ||
276 | I2C_NACK_DATA0123_ER = 0x1B, | ||
277 | I2C_NACK_ADDR_ER = 0x1F, | ||
278 | CURAPPWRSTISNOT_BOOT = 0x20, | ||
279 | CURAPPWRSTISNOT_EXECUTE = 0x21, | ||
280 | CURAPPWRSTISNOT_SLEEPMODE = 0x22, | ||
281 | CURAPPWRSTISNOT_CORRECTFORIT10 = 0x23, | ||
282 | FIFO4500WUISNOT_WUPEVENT = 0x24, | ||
283 | PLL32KLOCKP_ER = 0x29, | ||
284 | DDRDEEPSLEEPOK_ER = 0x2A, | ||
285 | ROMCODEREADY_ER = 0x50, | ||
286 | WUPBEFOREDS = 0x51, | ||
287 | DDRCONFIG_ER = 0x52, | ||
288 | WUPBEFORESLEEP = 0x53, | ||
289 | WUPBEFOREIDLE = 0x54 | ||
290 | }; /* earlier called as mbox_2_arm_stat */ | ||
291 | |||
292 | /** | ||
293 | * enum dvfs_stat - DVFS status messages definition | ||
294 | * @DVFS_GO: A state transition DVFS is on going | ||
295 | * @DVFS_ARM100OPPOK: The state transition DVFS has been completed for 100OPP | ||
296 | * @DVFS_ARM50OPPOK: The state transition DVFS has been completed for 50OPP | ||
297 | * @DVFS_ARMEXTCLKOK: The state transition DVFS has been completed for EXTCLK | ||
298 | * @DVFS_NOCHGTCLKOK: The state transition DVFS has been completed for | ||
299 | * NOCHGCLK | ||
300 | * @DVFS_INITSTATUS: Value init | ||
301 | */ | ||
302 | enum dvfs_stat { | ||
303 | DVFS_GO = 0xFF, | ||
304 | DVFS_ARM100OPPOK = 0xFE, | ||
305 | DVFS_ARM50OPPOK = 0xFD, | ||
306 | DVFS_ARMEXTCLKOK = 0xFC, | ||
307 | DVFS_NOCHGTCLKOK = 0xFB, | ||
308 | DVFS_INITSTATUS = 0x00 | ||
309 | }; | ||
310 | |||
311 | /** | ||
312 | * enum sva_mmdsp_stat - SVA MMDSP status messages | ||
313 | * @SVA_MMDSP_GO: SVAMMDSP interrupt has happened | ||
314 | * @SVA_MMDSP_INIT: Status init | ||
315 | */ | ||
316 | enum sva_mmdsp_stat { | ||
317 | SVA_MMDSP_GO = 0xFF, | ||
318 | SVA_MMDSP_INIT = 0x00 | ||
319 | }; | ||
320 | |||
321 | /** | ||
322 | * enum sia_mmdsp_stat - SIA MMDSP status messages | ||
323 | * @SIA_MMDSP_GO: SIAMMDSP interrupt has happened | ||
324 | * @SIA_MMDSP_INIT: Status init | ||
325 | */ | ||
326 | enum sia_mmdsp_stat { | ||
327 | SIA_MMDSP_GO = 0xFF, | ||
328 | SIA_MMDSP_INIT = 0x00 | ||
329 | }; | ||
330 | |||
331 | /** | ||
332 | * enum mbox_to_arm_err - Error messages definition | ||
333 | * @INIT_ERR: Init value | ||
334 | * @PLLARMLOCKP_ERR: PLLARM has not been correctly locked in given time | ||
335 | * @PLLDDRLOCKP_ERR: PLLDDR has not been correctly locked in the given time | ||
336 | * @PLLSOC0LOCKP_ERR: PLLSOC0 has not been correctly locked in the given time | ||
337 | * @PLLSOC1LOCKP_ERR: PLLSOC1 has not been correctly locked in the given time | ||
338 | * @ARMWFI_ERR: The ARM WFI has not been correctly executed in the given time | ||
339 | * @SYSCLKOK_ERR: The SYSCLK is not available in the given time | ||
340 | * @BOOT_ERR: Romcode has not validated the XP70 self reset in the given time | ||
341 | * @ROMCODESAVECONTEXT: The Romcode didn.t correctly save it secure context | ||
342 | * @VARMHIGHSPEEDVALTO_ERR: The ARM high speed supply value transfered | ||
343 | * through I2C has not been correctly executed in the given time | ||
344 | * @VARMHIGHSPEEDACCESS_ERR: The command value of VarmHighSpeedVal transfered | ||
345 | * through I2C has not been correctly executed in the given time | ||
346 | * @VARMLOWSPEEDVALTO_ERR:The ARM low speed supply value transfered through | ||
347 | * I2C has not been correctly executed in the given time | ||
348 | * @VARMLOWSPEEDACCESS_ERR: The command value of VarmLowSpeedVal transfered | ||
349 | * through I2C has not been correctly executed in the given time | ||
350 | * @VARMRETENTIONVALTO_ERR: The ARM retention supply value transfered through | ||
351 | * I2C has not been correctly executed in the given time | ||
352 | * @VARMRETENTIONACCESS_ERR: The command value of VarmRetentionVal transfered | ||
353 | * through I2C has not been correctly executed in the given time | ||
354 | * @VAPEHIGHSPEEDVALTO_ERR: The APE highspeed supply value transfered through | ||
355 | * I2C has not been correctly executed in the given time | ||
356 | * @VSAFEHPVALTO_ERR: The SAFE high power supply value transfered through I2C | ||
357 | * has not been correctly executed in the given time | ||
358 | * @VMODSEL1VALTO_ERR: The MODEM sel1 supply value transfered through I2C has | ||
359 | * not been correctly executed in the given time | ||
360 | * @VMODSEL2VALTO_ERR: The MODEM sel2 supply value transfered through I2C has | ||
361 | * not been correctly executed in the given time | ||
362 | * @VARMOFFACCESS_ERR: The command value of Varm ON/OFF transfered through | ||
363 | * I2C has not been correctly executed in the given time | ||
364 | * @VAPEOFFACCESS_ERR: The command value of Vape ON/OFF transfered through | ||
365 | * I2C has not been correctly executed in the given time | ||
366 | * @VARMRETACCES_ERR: The command value of Varm retention ON/OFF transfered | ||
367 | * through I2C has not been correctly executed in the given time | ||
368 | * @CURAPPWRSTISNOTBOOT:Generated when Arm want to do power state transition | ||
369 | * ApBoot to ApExecute but the power current state is not Apboot | ||
370 | * @CURAPPWRSTISNOTEXECUTE: Generated when Arm want to do power state | ||
371 | * transition from ApExecute to others power state but the | ||
372 | * power current state is not ApExecute | ||
373 | * @CURAPPWRSTISNOTSLEEPMODE: Generated when wake up events are transmitted | ||
374 | * but the power current state is not ApDeepSleep/ApSleep/ApIdle | ||
375 | * @CURAPPWRSTISNOTCORRECTDBG: Generated when wake up events are transmitted | ||
376 | * but the power current state is not correct | ||
377 | * @ARMREGU1VALTO_ERR:The ArmRegu1 value transferred through I2C has not | ||
378 | * been correctly executed in the given time | ||
379 | * @ARMREGU2VALTO_ERR: The ArmRegu2 value transferred through I2C has not | ||
380 | * been correctly executed in the given time | ||
381 | * @VAPEREGUVALTO_ERR: The VApeRegu value transfered through I2C has not | ||
382 | * been correctly executed in the given time | ||
383 | * @VSMPS3REGUVALTO_ERR: The VSmps3Regu value transfered through I2C has not | ||
384 | * been correctly executed in the given time | ||
385 | * @VMODREGUVALTO_ERR: The VModemRegu value transfered through I2C has not | ||
386 | * been correctly executed in the given time | ||
387 | */ | ||
388 | enum mbox_to_arm_err { | ||
389 | INIT_ERR = 0x00, | ||
390 | PLLARMLOCKP_ERR = 0x01, | ||
391 | PLLDDRLOCKP_ERR = 0x02, | ||
392 | PLLSOC0LOCKP_ERR = 0x03, | ||
393 | PLLSOC1LOCKP_ERR = 0x04, | ||
394 | ARMWFI_ERR = 0x05, | ||
395 | SYSCLKOK_ERR = 0x06, | ||
396 | BOOT_ERR = 0x07, | ||
397 | ROMCODESAVECONTEXT = 0x08, | ||
398 | VARMHIGHSPEEDVALTO_ERR = 0x10, | ||
399 | VARMHIGHSPEEDACCESS_ERR = 0x11, | ||
400 | VARMLOWSPEEDVALTO_ERR = 0x12, | ||
401 | VARMLOWSPEEDACCESS_ERR = 0x13, | ||
402 | VARMRETENTIONVALTO_ERR = 0x14, | ||
403 | VARMRETENTIONACCESS_ERR = 0x15, | ||
404 | VAPEHIGHSPEEDVALTO_ERR = 0x16, | ||
405 | VSAFEHPVALTO_ERR = 0x17, | ||
406 | VMODSEL1VALTO_ERR = 0x18, | ||
407 | VMODSEL2VALTO_ERR = 0x19, | ||
408 | VARMOFFACCESS_ERR = 0x1A, | ||
409 | VAPEOFFACCESS_ERR = 0x1B, | ||
410 | VARMRETACCES_ERR = 0x1C, | ||
411 | CURAPPWRSTISNOTBOOT = 0x20, | ||
412 | CURAPPWRSTISNOTEXECUTE = 0x21, | ||
413 | CURAPPWRSTISNOTSLEEPMODE = 0x22, | ||
414 | CURAPPWRSTISNOTCORRECTDBG = 0x23, | ||
415 | ARMREGU1VALTO_ERR = 0x24, | ||
416 | ARMREGU2VALTO_ERR = 0x25, | ||
417 | VAPEREGUVALTO_ERR = 0x26, | ||
418 | VSMPS3REGUVALTO_ERR = 0x27, | ||
419 | VMODREGUVALTO_ERR = 0x28 | ||
420 | }; | ||
421 | |||
422 | enum hw_acc { | ||
423 | SVAMMDSP = 0, | ||
424 | SVAPIPE = 1, | ||
425 | SIAMMDSP = 2, | ||
426 | SIAPIPE = 3, | ||
427 | SGA = 4, | ||
428 | B2R2MCDE = 5, | ||
429 | ESRAM12 = 6, | ||
430 | ESRAM34 = 7, | ||
431 | }; | ||
432 | |||
433 | enum cs_pwrmgt { | ||
434 | PWRDNCS0 = 0, | ||
435 | WKUPCS0 = 1, | ||
436 | PWRDNCS1 = 2, | ||
437 | WKUPCS1 = 3 | ||
438 | }; | ||
439 | |||
440 | /* Defs related to autonomous power management */ | ||
441 | |||
442 | /** | ||
443 | * enum sia_sva_pwr_policy - Power policy | ||
444 | * @NO_CHGT: No change | ||
445 | * @DSPOFF_HWPOFF: | ||
446 | * @DSPOFFRAMRET_HWPOFF: | ||
447 | * @DSPCLKOFF_HWPOFF: | ||
448 | * @DSPCLKOFF_HWPCLKOFF: | ||
449 | * | ||
450 | */ | ||
451 | enum sia_sva_pwr_policy { | ||
452 | NO_CHGT = 0x0, | ||
453 | DSPOFF_HWPOFF = 0x1, | ||
454 | DSPOFFRAMRET_HWPOFF = 0x2, | ||
455 | DSPCLKOFF_HWPOFF = 0x3, | ||
456 | DSPCLKOFF_HWPCLKOFF = 0x4, | ||
457 | }; | ||
458 | |||
459 | /** | ||
460 | * enum auto_enable - Auto Power enable | ||
461 | * @AUTO_OFF: | ||
462 | * @AUTO_ON: | ||
463 | * | ||
464 | */ | ||
465 | enum auto_enable { | ||
466 | AUTO_OFF = 0x0, | ||
467 | AUTO_ON = 0x1, | ||
468 | }; | ||
469 | |||
470 | /* End of file previously known as prcmu-fw-defs_v1.h */ | ||
471 | |||
472 | /* PRCMU Wakeup defines */ | ||
473 | enum prcmu_wakeup_index { | ||
474 | PRCMU_WAKEUP_INDEX_RTC, | ||
475 | PRCMU_WAKEUP_INDEX_RTT0, | ||
476 | PRCMU_WAKEUP_INDEX_RTT1, | ||
477 | PRCMU_WAKEUP_INDEX_HSI0, | ||
478 | PRCMU_WAKEUP_INDEX_HSI1, | ||
479 | PRCMU_WAKEUP_INDEX_USB, | ||
480 | PRCMU_WAKEUP_INDEX_ABB, | ||
481 | PRCMU_WAKEUP_INDEX_ABB_FIFO, | ||
482 | PRCMU_WAKEUP_INDEX_ARM, | ||
483 | NUM_PRCMU_WAKEUP_INDICES | ||
484 | }; | ||
485 | #define PRCMU_WAKEUP(_name) (BIT(PRCMU_WAKEUP_INDEX_##_name)) | ||
486 | |||
487 | /* PRCMU QoS APE OPP class */ | ||
488 | #define PRCMU_QOS_APE_OPP 1 | ||
489 | #define PRCMU_QOS_DDR_OPP 2 | ||
490 | #define PRCMU_QOS_DEFAULT_VALUE -1 | ||
491 | |||
492 | /** | ||
493 | * enum hw_acc_dev - enum for hw accelerators | ||
494 | * @HW_ACC_SVAMMDSP: for SVAMMDSP | ||
495 | * @HW_ACC_SVAPIPE: for SVAPIPE | ||
496 | * @HW_ACC_SIAMMDSP: for SIAMMDSP | ||
497 | * @HW_ACC_SIAPIPE: for SIAPIPE | ||
498 | * @HW_ACC_SGA: for SGA | ||
499 | * @HW_ACC_B2R2: for B2R2 | ||
500 | * @HW_ACC_MCDE: for MCDE | ||
501 | * @HW_ACC_ESRAM1: for ESRAM1 | ||
502 | * @HW_ACC_ESRAM2: for ESRAM2 | ||
503 | * @HW_ACC_ESRAM3: for ESRAM3 | ||
504 | * @HW_ACC_ESRAM4: for ESRAM4 | ||
505 | * @NUM_HW_ACC: number of hardware accelerators | ||
506 | * | ||
507 | * Different hw accelerators which can be turned ON/ | ||
508 | * OFF or put into retention (MMDSPs and ESRAMs). | ||
509 | * Used with EPOD API. | ||
510 | * | ||
511 | * NOTE! Deprecated, to be removed when all users switched over to use the | ||
512 | * regulator API. | ||
513 | */ | ||
514 | enum hw_acc_dev { | ||
515 | HW_ACC_SVAMMDSP, | ||
516 | HW_ACC_SVAPIPE, | ||
517 | HW_ACC_SIAMMDSP, | ||
518 | HW_ACC_SIAPIPE, | ||
519 | HW_ACC_SGA, | ||
520 | HW_ACC_B2R2, | ||
521 | HW_ACC_MCDE, | ||
522 | HW_ACC_ESRAM1, | ||
523 | HW_ACC_ESRAM2, | ||
524 | HW_ACC_ESRAM3, | ||
525 | HW_ACC_ESRAM4, | ||
526 | NUM_HW_ACC | ||
527 | }; | ||
528 | |||
529 | /* | ||
530 | * Ids for all EPODs (power domains) | ||
531 | * - EPOD_ID_SVAMMDSP: power domain for SVA MMDSP | ||
532 | * - EPOD_ID_SVAPIPE: power domain for SVA pipe | ||
533 | * - EPOD_ID_SIAMMDSP: power domain for SIA MMDSP | ||
534 | * - EPOD_ID_SIAPIPE: power domain for SIA pipe | ||
535 | * - EPOD_ID_SGA: power domain for SGA | ||
536 | * - EPOD_ID_B2R2_MCDE: power domain for B2R2 and MCDE | ||
537 | * - EPOD_ID_ESRAM12: power domain for ESRAM 1 and 2 | ||
538 | * - EPOD_ID_ESRAM34: power domain for ESRAM 3 and 4 | ||
539 | * - NUM_EPOD_ID: number of power domains | ||
540 | */ | ||
541 | #define EPOD_ID_SVAMMDSP 0 | ||
542 | #define EPOD_ID_SVAPIPE 1 | ||
543 | #define EPOD_ID_SIAMMDSP 2 | ||
544 | #define EPOD_ID_SIAPIPE 3 | ||
545 | #define EPOD_ID_SGA 4 | ||
546 | #define EPOD_ID_B2R2_MCDE 5 | ||
547 | #define EPOD_ID_ESRAM12 6 | ||
548 | #define EPOD_ID_ESRAM34 7 | ||
549 | #define NUM_EPOD_ID 8 | ||
550 | |||
551 | /* | ||
552 | * state definition for EPOD (power domain) | ||
553 | * - EPOD_STATE_NO_CHANGE: The EPOD should remain unchanged | ||
554 | * - EPOD_STATE_OFF: The EPOD is switched off | ||
555 | * - EPOD_STATE_RAMRET: The EPOD is switched off with its internal RAM in | ||
556 | * retention | ||
557 | * - EPOD_STATE_ON_CLK_OFF: The EPOD is switched on, clock is still off | ||
558 | * - EPOD_STATE_ON: Same as above, but with clock enabled | ||
559 | */ | ||
560 | #define EPOD_STATE_NO_CHANGE 0x00 | ||
561 | #define EPOD_STATE_OFF 0x01 | ||
562 | #define EPOD_STATE_RAMRET 0x02 | ||
563 | #define EPOD_STATE_ON_CLK_OFF 0x03 | ||
564 | #define EPOD_STATE_ON 0x04 | ||
565 | |||
566 | /* | ||
567 | * CLKOUT sources | ||
568 | */ | ||
569 | #define PRCMU_CLKSRC_CLK38M 0x00 | ||
570 | #define PRCMU_CLKSRC_ACLK 0x01 | ||
571 | #define PRCMU_CLKSRC_SYSCLK 0x02 | ||
572 | #define PRCMU_CLKSRC_LCDCLK 0x03 | ||
573 | #define PRCMU_CLKSRC_SDMMCCLK 0x04 | ||
574 | #define PRCMU_CLKSRC_TVCLK 0x05 | ||
575 | #define PRCMU_CLKSRC_TIMCLK 0x06 | ||
576 | #define PRCMU_CLKSRC_CLK009 0x07 | ||
577 | /* These are only valid for CLKOUT1: */ | ||
578 | #define PRCMU_CLKSRC_SIAMMDSPCLK 0x40 | ||
579 | #define PRCMU_CLKSRC_I2CCLK 0x41 | ||
580 | #define PRCMU_CLKSRC_MSP02CLK 0x42 | ||
581 | #define PRCMU_CLKSRC_ARMPLL_OBSCLK 0x43 | ||
582 | #define PRCMU_CLKSRC_HSIRXCLK 0x44 | ||
583 | #define PRCMU_CLKSRC_HSITXCLK 0x45 | ||
584 | #define PRCMU_CLKSRC_ARMCLKFIX 0x46 | ||
585 | #define PRCMU_CLKSRC_HDMICLK 0x47 | ||
586 | |||
587 | /* | ||
588 | * Definitions for autonomous power management configuration. | ||
589 | */ | ||
590 | |||
591 | #define PRCMU_AUTO_PM_OFF 0 | ||
592 | #define PRCMU_AUTO_PM_ON 1 | ||
593 | |||
594 | #define PRCMU_AUTO_PM_POWER_ON_HSEM BIT(0) | ||
595 | #define PRCMU_AUTO_PM_POWER_ON_ABB_FIFO_IT BIT(1) | ||
596 | |||
597 | enum prcmu_auto_pm_policy { | ||
598 | PRCMU_AUTO_PM_POLICY_NO_CHANGE, | ||
599 | PRCMU_AUTO_PM_POLICY_DSP_OFF_HWP_OFF, | ||
600 | PRCMU_AUTO_PM_POLICY_DSP_OFF_RAMRET_HWP_OFF, | ||
601 | PRCMU_AUTO_PM_POLICY_DSP_CLK_OFF_HWP_OFF, | ||
602 | PRCMU_AUTO_PM_POLICY_DSP_CLK_OFF_HWP_CLK_OFF, | ||
603 | }; | ||
604 | |||
605 | /** | ||
606 | * struct prcmu_auto_pm_config - Autonomous power management configuration. | ||
607 | * @sia_auto_pm_enable: SIA autonomous pm enable. (PRCMU_AUTO_PM_{OFF,ON}) | ||
608 | * @sia_power_on: SIA power ON enable. (PRCMU_AUTO_PM_POWER_ON_* bitmask) | ||
609 | * @sia_policy: SIA power policy. (enum prcmu_auto_pm_policy) | ||
610 | * @sva_auto_pm_enable: SVA autonomous pm enable. (PRCMU_AUTO_PM_{OFF,ON}) | ||
611 | * @sva_power_on: SVA power ON enable. (PRCMU_AUTO_PM_POWER_ON_* bitmask) | ||
612 | * @sva_policy: SVA power policy. (enum prcmu_auto_pm_policy) | ||
613 | */ | ||
614 | struct prcmu_auto_pm_config { | ||
615 | u8 sia_auto_pm_enable; | ||
616 | u8 sia_power_on; | ||
617 | u8 sia_policy; | ||
618 | u8 sva_auto_pm_enable; | ||
619 | u8 sva_power_on; | ||
620 | u8 sva_policy; | ||
621 | }; | ||
622 | |||
623 | /** | ||
624 | * enum ddr_opp - DDR OPP states definition | ||
625 | * @DDR_100_OPP: The new DDR operating point is ddr100opp | ||
626 | * @DDR_50_OPP: The new DDR operating point is ddr50opp | ||
627 | * @DDR_25_OPP: The new DDR operating point is ddr25opp | ||
628 | */ | ||
629 | enum ddr_opp { | ||
630 | DDR_100_OPP = 0x00, | ||
631 | DDR_50_OPP = 0x01, | ||
632 | DDR_25_OPP = 0x02, | ||
633 | }; | ||
634 | |||
635 | /* | ||
636 | * Clock identifiers. | ||
637 | */ | ||
638 | enum prcmu_clock { | ||
639 | PRCMU_SGACLK, | ||
640 | PRCMU_UARTCLK, | ||
641 | PRCMU_MSP02CLK, | ||
642 | PRCMU_MSP1CLK, | ||
643 | PRCMU_I2CCLK, | ||
644 | PRCMU_SDMMCCLK, | ||
645 | PRCMU_SLIMCLK, | ||
646 | PRCMU_PER1CLK, | ||
647 | PRCMU_PER2CLK, | ||
648 | PRCMU_PER3CLK, | ||
649 | PRCMU_PER5CLK, | ||
650 | PRCMU_PER6CLK, | ||
651 | PRCMU_PER7CLK, | ||
652 | PRCMU_LCDCLK, | ||
653 | PRCMU_BMLCLK, | ||
654 | PRCMU_HSITXCLK, | ||
655 | PRCMU_HSIRXCLK, | ||
656 | PRCMU_HDMICLK, | ||
657 | PRCMU_APEATCLK, | ||
658 | PRCMU_APETRACECLK, | ||
659 | PRCMU_MCDECLK, | ||
660 | PRCMU_IPI2CCLK, | ||
661 | PRCMU_DSIALTCLK, | ||
662 | PRCMU_DMACLK, | ||
663 | PRCMU_B2R2CLK, | ||
664 | PRCMU_TVCLK, | ||
665 | PRCMU_SSPCLK, | ||
666 | PRCMU_RNGCLK, | ||
667 | PRCMU_UICCCLK, | ||
668 | PRCMU_NUM_REG_CLOCKS, | ||
669 | PRCMU_SYSCLK = PRCMU_NUM_REG_CLOCKS, | ||
670 | PRCMU_TIMCLK, | ||
671 | }; | ||
672 | |||
673 | /* | ||
674 | * Definitions for controlling ESRAM0 in deep sleep. | ||
675 | */ | ||
676 | #define ESRAM0_DEEP_SLEEP_STATE_OFF 1 | ||
677 | #define ESRAM0_DEEP_SLEEP_STATE_RET 2 | ||
678 | |||
679 | #ifdef CONFIG_MFD_DB8500_PRCMU | ||
680 | void __init prcmu_early_init(void); | ||
681 | int prcmu_set_display_clocks(void); | ||
682 | int prcmu_disable_dsipll(void); | ||
683 | int prcmu_enable_dsipll(void); | ||
684 | #else | ||
685 | static inline void __init prcmu_early_init(void) {} | ||
686 | #endif | ||
687 | |||
688 | #ifdef CONFIG_MFD_DB8500_PRCMU | ||
689 | |||
690 | int prcmu_set_rc_a2p(enum romcode_write); | ||
691 | enum romcode_read prcmu_get_rc_p2a(void); | ||
692 | enum ap_pwrst prcmu_get_xp70_current_state(void); | ||
693 | int prcmu_set_power_state(u8 state, bool keep_ulp_clk, bool keep_ap_pll); | ||
694 | |||
695 | void prcmu_enable_wakeups(u32 wakeups); | ||
696 | static inline void prcmu_disable_wakeups(void) | ||
697 | { | ||
698 | prcmu_enable_wakeups(0); | ||
699 | } | ||
700 | |||
701 | void prcmu_config_abb_event_readout(u32 abb_events); | ||
702 | void prcmu_get_abb_event_buffer(void __iomem **buf); | ||
703 | int prcmu_set_arm_opp(u8 opp); | ||
704 | int prcmu_get_arm_opp(void); | ||
705 | bool prcmu_has_arm_maxopp(void); | ||
706 | bool prcmu_is_u8400(void); | ||
707 | int prcmu_set_ape_opp(u8 opp); | ||
708 | int prcmu_get_ape_opp(void); | ||
709 | int prcmu_request_ape_opp_100_voltage(bool enable); | ||
710 | int prcmu_release_usb_wakeup_state(void); | ||
711 | int prcmu_set_ddr_opp(u8 opp); | ||
712 | int prcmu_get_ddr_opp(void); | ||
713 | unsigned long prcmu_qos_get_cpufreq_opp_delay(void); | ||
714 | void prcmu_qos_set_cpufreq_opp_delay(unsigned long); | ||
715 | /* NOTE! Use regulator framework instead */ | ||
716 | int prcmu_set_hwacc(u16 hw_acc_dev, u8 state); | ||
717 | int prcmu_set_epod(u16 epod_id, u8 epod_state); | ||
718 | void prcmu_configure_auto_pm(struct prcmu_auto_pm_config *sleep, | ||
719 | struct prcmu_auto_pm_config *idle); | ||
720 | bool prcmu_is_auto_pm_enabled(void); | ||
721 | |||
722 | int prcmu_config_clkout(u8 clkout, u8 source, u8 div); | ||
723 | int prcmu_request_clock(u8 clock, bool enable); | ||
724 | int prcmu_set_clock_divider(u8 clock, u8 divider); | ||
725 | int prcmu_config_esram0_deep_sleep(u8 state); | ||
726 | int prcmu_config_hotdog(u8 threshold); | ||
727 | int prcmu_config_hotmon(u8 low, u8 high); | ||
728 | int prcmu_start_temp_sense(u16 cycles32k); | ||
729 | int prcmu_stop_temp_sense(void); | ||
730 | int prcmu_abb_read(u8 slave, u8 reg, u8 *value, u8 size); | ||
731 | int prcmu_abb_write(u8 slave, u8 reg, u8 *value, u8 size); | ||
732 | |||
733 | void prcmu_ac_wake_req(void); | ||
734 | void prcmu_ac_sleep_req(void); | ||
735 | void prcmu_system_reset(u16 reset_code); | ||
736 | void prcmu_modem_reset(void); | ||
737 | bool prcmu_is_ac_wake_requested(void); | ||
738 | void prcmu_enable_spi2(void); | ||
739 | void prcmu_disable_spi2(void); | ||
740 | |||
741 | #else /* !CONFIG_MFD_DB8500_PRCMU */ | ||
742 | |||
743 | static inline int prcmu_set_rc_a2p(enum romcode_write code) | ||
744 | { | ||
745 | return 0; | ||
746 | } | ||
747 | |||
748 | static inline enum romcode_read prcmu_get_rc_p2a(void) | ||
749 | { | ||
750 | return INIT; | ||
751 | } | ||
752 | |||
753 | static inline enum ap_pwrst prcmu_get_xp70_current_state(void) | ||
754 | { | ||
755 | return AP_EXECUTE; | ||
756 | } | ||
757 | |||
758 | static inline int prcmu_set_power_state(u8 state, bool keep_ulp_clk, | ||
759 | bool keep_ap_pll) | ||
760 | { | ||
761 | return 0; | ||
762 | } | ||
763 | |||
764 | static inline void prcmu_enable_wakeups(u32 wakeups) {} | ||
765 | |||
766 | static inline void prcmu_disable_wakeups(void) {} | ||
767 | |||
768 | static inline void prcmu_config_abb_event_readout(u32 abb_events) {} | ||
769 | |||
770 | static inline int prcmu_set_arm_opp(u8 opp) | ||
771 | { | ||
772 | return 0; | ||
773 | } | ||
774 | |||
775 | static inline int prcmu_get_arm_opp(void) | ||
776 | { | ||
777 | return ARM_100_OPP; | ||
778 | } | ||
779 | |||
780 | static bool prcmu_has_arm_maxopp(void) | ||
781 | { | ||
782 | return false; | ||
783 | } | ||
784 | |||
785 | static bool prcmu_is_u8400(void) | ||
786 | { | ||
787 | return false; | ||
788 | } | ||
789 | |||
790 | static inline int prcmu_set_ape_opp(u8 opp) | ||
791 | { | ||
792 | return 0; | ||
793 | } | ||
794 | |||
795 | static inline int prcmu_get_ape_opp(void) | ||
796 | { | ||
797 | return APE_100_OPP; | ||
798 | } | ||
799 | |||
800 | static inline int prcmu_request_ape_opp_100_voltage(bool enable) | ||
801 | { | ||
802 | return 0; | ||
803 | } | ||
804 | |||
805 | static inline int prcmu_release_usb_wakeup_state(void) | ||
806 | { | ||
807 | return 0; | ||
808 | } | ||
809 | |||
810 | static inline int prcmu_set_ddr_opp(u8 opp) | ||
811 | { | ||
812 | return 0; | ||
813 | } | ||
814 | |||
815 | static inline int prcmu_get_ddr_opp(void) | ||
816 | { | ||
817 | return DDR_100_OPP; | ||
818 | } | ||
819 | |||
820 | static inline unsigned long prcmu_qos_get_cpufreq_opp_delay(void) | ||
821 | { | ||
822 | return 0; | ||
823 | } | ||
824 | |||
825 | static inline void prcmu_qos_set_cpufreq_opp_delay(unsigned long n) {} | ||
826 | |||
827 | static inline int prcmu_set_hwacc(u16 hw_acc_dev, u8 state) | ||
828 | { | ||
829 | return 0; | ||
830 | } | ||
831 | |||
832 | static inline void prcmu_configure_auto_pm(struct prcmu_auto_pm_config *sleep, | ||
833 | struct prcmu_auto_pm_config *idle) | ||
834 | { | ||
835 | } | ||
836 | |||
837 | static inline bool prcmu_is_auto_pm_enabled(void) | ||
838 | { | ||
839 | return false; | ||
840 | } | ||
841 | |||
842 | static inline int prcmu_config_clkout(u8 clkout, u8 source, u8 div) | ||
843 | { | ||
844 | return 0; | ||
845 | } | ||
846 | |||
847 | static inline int prcmu_request_clock(u8 clock, bool enable) | ||
848 | { | ||
849 | return 0; | ||
850 | } | ||
851 | |||
852 | static inline int prcmu_set_clock_divider(u8 clock, u8 divider) | ||
853 | { | ||
854 | return 0; | ||
855 | } | ||
856 | |||
857 | int prcmu_config_esram0_deep_sleep(u8 state) | ||
858 | { | ||
859 | return 0; | ||
860 | } | ||
861 | |||
862 | static inline int prcmu_config_hotdog(u8 threshold) | ||
863 | { | ||
864 | return 0; | ||
865 | } | ||
866 | |||
867 | static inline int prcmu_config_hotmon(u8 low, u8 high) | ||
868 | { | ||
869 | return 0; | ||
870 | } | ||
871 | |||
872 | static inline int prcmu_start_temp_sense(u16 cycles32k) | ||
873 | { | ||
874 | return 0; | ||
875 | } | ||
876 | |||
877 | static inline int prcmu_stop_temp_sense(void) | ||
878 | { | ||
879 | return 0; | ||
880 | } | ||
881 | |||
882 | static inline int prcmu_abb_read(u8 slave, u8 reg, u8 *value, u8 size) | ||
883 | { | ||
884 | return -ENOSYS; | ||
885 | } | ||
886 | |||
887 | static inline int prcmu_abb_write(u8 slave, u8 reg, u8 *value, u8 size) | ||
888 | { | ||
889 | return -ENOSYS; | ||
890 | } | ||
891 | |||
892 | static inline void prcmu_ac_wake_req(void) {} | ||
893 | |||
894 | static inline void prcmu_ac_sleep_req(void) {} | ||
895 | |||
896 | static inline void prcmu_system_reset(u16 reset_code) {} | ||
897 | |||
898 | static inline void prcmu_modem_reset(void) {} | ||
899 | |||
900 | static inline bool prcmu_is_ac_wake_requested(void) | ||
901 | { | ||
902 | return false; | ||
903 | } | ||
904 | |||
905 | #ifndef CONFIG_UX500_SOC_DB5500 | ||
906 | static inline int prcmu_set_display_clocks(void) | ||
907 | { | ||
908 | return 0; | ||
909 | } | ||
910 | |||
911 | static inline int prcmu_disable_dsipll(void) | ||
912 | { | ||
913 | return 0; | ||
914 | } | ||
915 | |||
916 | static inline int prcmu_enable_dsipll(void) | ||
917 | { | ||
918 | return 0; | ||
919 | } | ||
920 | #endif | ||
921 | |||
922 | static inline int prcmu_enable_spi2(void) | ||
923 | { | ||
924 | return 0; | ||
925 | } | ||
926 | |||
927 | static inline int prcmu_disable_spi2(void) | ||
928 | { | ||
929 | return 0; | ||
930 | } | ||
931 | |||
932 | #endif /* !CONFIG_MFD_DB8500_PRCMU */ | ||
933 | |||
934 | #ifdef CONFIG_UX500_PRCMU_QOS_POWER | ||
935 | int prcmu_qos_requirement(int pm_qos_class); | ||
936 | int prcmu_qos_add_requirement(int pm_qos_class, char *name, s32 value); | ||
937 | int prcmu_qos_update_requirement(int pm_qos_class, char *name, s32 new_value); | ||
938 | void prcmu_qos_remove_requirement(int pm_qos_class, char *name); | ||
939 | int prcmu_qos_add_notifier(int prcmu_qos_class, | ||
940 | struct notifier_block *notifier); | ||
941 | int prcmu_qos_remove_notifier(int prcmu_qos_class, | ||
942 | struct notifier_block *notifier); | ||
943 | #else | ||
944 | static inline int prcmu_qos_requirement(int prcmu_qos_class) | ||
945 | { | ||
946 | return 0; | ||
947 | } | ||
948 | |||
949 | static inline int prcmu_qos_add_requirement(int prcmu_qos_class, | ||
950 | char *name, s32 value) | ||
951 | { | ||
952 | return 0; | ||
953 | } | ||
954 | |||
955 | static inline int prcmu_qos_update_requirement(int prcmu_qos_class, | ||
956 | char *name, s32 new_value) | ||
957 | { | ||
958 | return 0; | ||
959 | } | ||
960 | |||
961 | static inline void prcmu_qos_remove_requirement(int prcmu_qos_class, char *name) | ||
962 | { | ||
963 | } | ||
964 | |||
965 | static inline int prcmu_qos_add_notifier(int prcmu_qos_class, | ||
966 | struct notifier_block *notifier) | ||
967 | { | ||
968 | return 0; | ||
969 | } | ||
970 | static inline int prcmu_qos_remove_notifier(int prcmu_qos_class, | ||
971 | struct notifier_block *notifier) | ||
972 | { | ||
973 | return 0; | ||
974 | } | ||
975 | |||
976 | #endif | ||
977 | |||
978 | #endif /* __MFD_DB8500_PRCMU_H */ | ||
diff --git a/include/linux/mfd/max8997-private.h b/include/linux/mfd/max8997-private.h index 69d1010e2e51..5ff2400ad46c 100644 --- a/include/linux/mfd/max8997-private.h +++ b/include/linux/mfd/max8997-private.h | |||
@@ -311,10 +311,6 @@ enum max8997_irq { | |||
311 | MAX8997_IRQ_NR, | 311 | MAX8997_IRQ_NR, |
312 | }; | 312 | }; |
313 | 313 | ||
314 | #define MAX8997_REG_BUCK1DVS(x) (MAX8997_REG_BUCK1DVS1 + (x) - 1) | ||
315 | #define MAX8997_REG_BUCK2DVS(x) (MAX8997_REG_BUCK2DVS1 + (x) - 1) | ||
316 | #define MAX8997_REG_BUCK5DVS(x) (MAX8997_REG_BUCK5DVS1 + (x) - 1) | ||
317 | |||
318 | #define MAX8997_NUM_GPIO 12 | 314 | #define MAX8997_NUM_GPIO 12 |
319 | struct max8997_dev { | 315 | struct max8997_dev { |
320 | struct device *dev; | 316 | struct device *dev; |
diff --git a/include/linux/mfd/pm8xxx/core.h b/include/linux/mfd/pm8xxx/core.h new file mode 100644 index 000000000000..bd2f4f64e931 --- /dev/null +++ b/include/linux/mfd/pm8xxx/core.h | |||
@@ -0,0 +1,81 @@ | |||
1 | /* | ||
2 | * Copyright (c) 2011, Code Aurora Forum. All rights reserved. | ||
3 | * | ||
4 | * This program is free software; you can redistribute it and/or modify | ||
5 | * it under the terms of the GNU General Public License version 2 and | ||
6 | * only version 2 as published by the Free Software Foundation. | ||
7 | * | ||
8 | * This program is distributed in the hope that it will be useful, | ||
9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
11 | * GNU General Public License for more details. | ||
12 | */ | ||
13 | /* | ||
14 | * Qualcomm PMIC 8xxx driver header file | ||
15 | * | ||
16 | */ | ||
17 | |||
18 | #ifndef __MFD_PM8XXX_CORE_H | ||
19 | #define __MFD_PM8XXX_CORE_H | ||
20 | |||
21 | #include <linux/mfd/core.h> | ||
22 | |||
23 | struct pm8xxx_drvdata { | ||
24 | int (*pmic_readb) (const struct device *dev, u16 addr, u8 *val); | ||
25 | int (*pmic_writeb) (const struct device *dev, u16 addr, u8 val); | ||
26 | int (*pmic_read_buf) (const struct device *dev, u16 addr, u8 *buf, | ||
27 | int n); | ||
28 | int (*pmic_write_buf) (const struct device *dev, u16 addr, u8 *buf, | ||
29 | int n); | ||
30 | int (*pmic_read_irq_stat) (const struct device *dev, int irq); | ||
31 | void *pm_chip_data; | ||
32 | }; | ||
33 | |||
34 | static inline int pm8xxx_readb(const struct device *dev, u16 addr, u8 *val) | ||
35 | { | ||
36 | struct pm8xxx_drvdata *dd = dev_get_drvdata(dev); | ||
37 | |||
38 | if (!dd) | ||
39 | return -EINVAL; | ||
40 | return dd->pmic_readb(dev, addr, val); | ||
41 | } | ||
42 | |||
43 | static inline int pm8xxx_writeb(const struct device *dev, u16 addr, u8 val) | ||
44 | { | ||
45 | struct pm8xxx_drvdata *dd = dev_get_drvdata(dev); | ||
46 | |||
47 | if (!dd) | ||
48 | return -EINVAL; | ||
49 | return dd->pmic_writeb(dev, addr, val); | ||
50 | } | ||
51 | |||
52 | static inline int pm8xxx_read_buf(const struct device *dev, u16 addr, u8 *buf, | ||
53 | int n) | ||
54 | { | ||
55 | struct pm8xxx_drvdata *dd = dev_get_drvdata(dev); | ||
56 | |||
57 | if (!dd) | ||
58 | return -EINVAL; | ||
59 | return dd->pmic_read_buf(dev, addr, buf, n); | ||
60 | } | ||
61 | |||
62 | static inline int pm8xxx_write_buf(const struct device *dev, u16 addr, u8 *buf, | ||
63 | int n) | ||
64 | { | ||
65 | struct pm8xxx_drvdata *dd = dev_get_drvdata(dev); | ||
66 | |||
67 | if (!dd) | ||
68 | return -EINVAL; | ||
69 | return dd->pmic_write_buf(dev, addr, buf, n); | ||
70 | } | ||
71 | |||
72 | static inline int pm8xxx_read_irq_stat(const struct device *dev, int irq) | ||
73 | { | ||
74 | struct pm8xxx_drvdata *dd = dev_get_drvdata(dev); | ||
75 | |||
76 | if (!dd) | ||
77 | return -EINVAL; | ||
78 | return dd->pmic_read_irq_stat(dev, irq); | ||
79 | } | ||
80 | |||
81 | #endif | ||
diff --git a/include/linux/mfd/pm8xxx/irq.h b/include/linux/mfd/pm8xxx/irq.h new file mode 100644 index 000000000000..4b21769f4483 --- /dev/null +++ b/include/linux/mfd/pm8xxx/irq.h | |||
@@ -0,0 +1,59 @@ | |||
1 | /* | ||
2 | * Copyright (c) 2011, Code Aurora Forum. All rights reserved. | ||
3 | * | ||
4 | * This program is free software; you can redistribute it and/or modify | ||
5 | * it under the terms of the GNU General Public License version 2 and | ||
6 | * only version 2 as published by the Free Software Foundation. | ||
7 | * | ||
8 | * This program is distributed in the hope that it will be useful, | ||
9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
11 | * GNU General Public License for more details. | ||
12 | */ | ||
13 | /* | ||
14 | * Qualcomm PMIC irq 8xxx driver header file | ||
15 | * | ||
16 | */ | ||
17 | |||
18 | #ifndef __MFD_PM8XXX_IRQ_H | ||
19 | #define __MFD_PM8XXX_IRQ_H | ||
20 | |||
21 | #include <linux/errno.h> | ||
22 | #include <linux/err.h> | ||
23 | |||
24 | struct pm8xxx_irq_core_data { | ||
25 | u32 rev; | ||
26 | int nirqs; | ||
27 | }; | ||
28 | |||
29 | struct pm8xxx_irq_platform_data { | ||
30 | int irq_base; | ||
31 | struct pm8xxx_irq_core_data irq_cdata; | ||
32 | int devirq; | ||
33 | int irq_trigger_flag; | ||
34 | }; | ||
35 | |||
36 | struct pm_irq_chip; | ||
37 | |||
38 | #ifdef CONFIG_MFD_PM8XXX_IRQ | ||
39 | int pm8xxx_get_irq_stat(struct pm_irq_chip *chip, int irq); | ||
40 | struct pm_irq_chip * __devinit pm8xxx_irq_init(struct device *dev, | ||
41 | const struct pm8xxx_irq_platform_data *pdata); | ||
42 | int __devexit pm8xxx_irq_exit(struct pm_irq_chip *chip); | ||
43 | #else | ||
44 | static inline int pm8xxx_get_irq_stat(struct pm_irq_chip *chip, int irq) | ||
45 | { | ||
46 | return -ENXIO; | ||
47 | } | ||
48 | static inline struct pm_irq_chip * __devinit pm8xxx_irq_init( | ||
49 | const struct device *dev, | ||
50 | const struct pm8xxx_irq_platform_data *pdata) | ||
51 | { | ||
52 | return ERR_PTR(-ENXIO); | ||
53 | } | ||
54 | static inline int __devexit pm8xxx_irq_exit(struct pm_irq_chip *chip) | ||
55 | { | ||
56 | return -ENXIO; | ||
57 | } | ||
58 | #endif /* CONFIG_MFD_PM8XXX_IRQ */ | ||
59 | #endif /* __MFD_PM8XXX_IRQ_H */ | ||
diff --git a/include/linux/mfd/pm8xxx/pm8921.h b/include/linux/mfd/pm8xxx/pm8921.h new file mode 100644 index 000000000000..d5517fd32d1b --- /dev/null +++ b/include/linux/mfd/pm8xxx/pm8921.h | |||
@@ -0,0 +1,31 @@ | |||
1 | /* | ||
2 | * Copyright (c) 2011, Code Aurora Forum. All rights reserved. | ||
3 | * | ||
4 | * This program is free software; you can redistribute it and/or modify | ||
5 | * it under the terms of the GNU General Public License version 2 and | ||
6 | * only version 2 as published by the Free Software Foundation. | ||
7 | * | ||
8 | * This program is distributed in the hope that it will be useful, | ||
9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
11 | * GNU General Public License for more details. | ||
12 | */ | ||
13 | /* | ||
14 | * Qualcomm PMIC 8921 driver header file | ||
15 | * | ||
16 | */ | ||
17 | |||
18 | #ifndef __MFD_PM8921_H | ||
19 | #define __MFD_PM8921_H | ||
20 | |||
21 | #include <linux/device.h> | ||
22 | #include <linux/mfd/pm8xxx/irq.h> | ||
23 | |||
24 | #define PM8921_NR_IRQS 256 | ||
25 | |||
26 | struct pm8921_platform_data { | ||
27 | int irq_base; | ||
28 | struct pm8xxx_irq_platform_data *irq_pdata; | ||
29 | }; | ||
30 | |||
31 | #endif | ||
diff --git a/include/linux/mfd/tmio.h b/include/linux/mfd/tmio.h index 8e70310ee945..5a90266c3a5a 100644 --- a/include/linux/mfd/tmio.h +++ b/include/linux/mfd/tmio.h | |||
@@ -4,6 +4,7 @@ | |||
4 | #include <linux/fb.h> | 4 | #include <linux/fb.h> |
5 | #include <linux/io.h> | 5 | #include <linux/io.h> |
6 | #include <linux/platform_device.h> | 6 | #include <linux/platform_device.h> |
7 | #include <linux/pm_runtime.h> | ||
7 | 8 | ||
8 | #define tmio_ioread8(addr) readb(addr) | 9 | #define tmio_ioread8(addr) readb(addr) |
9 | #define tmio_ioread16(addr) readw(addr) | 10 | #define tmio_ioread16(addr) readw(addr) |
@@ -61,6 +62,12 @@ | |||
61 | * Some controllers can support SDIO IRQ signalling. | 62 | * Some controllers can support SDIO IRQ signalling. |
62 | */ | 63 | */ |
63 | #define TMIO_MMC_SDIO_IRQ (1 << 2) | 64 | #define TMIO_MMC_SDIO_IRQ (1 << 2) |
65 | /* | ||
66 | * Some platforms can detect card insertion events with controller powered | ||
67 | * down, in which case they have to call tmio_mmc_cd_wakeup() to power up the | ||
68 | * controller and report the event to the driver. | ||
69 | */ | ||
70 | #define TMIO_MMC_HAS_COLD_CD (1 << 3) | ||
64 | 71 | ||
65 | int tmio_core_mmc_enable(void __iomem *cnf, int shift, unsigned long base); | 72 | int tmio_core_mmc_enable(void __iomem *cnf, int shift, unsigned long base); |
66 | int tmio_core_mmc_resume(void __iomem *cnf, int shift, unsigned long base); | 73 | int tmio_core_mmc_resume(void __iomem *cnf, int shift, unsigned long base); |
@@ -82,11 +89,21 @@ struct tmio_mmc_data { | |||
82 | unsigned long flags; | 89 | unsigned long flags; |
83 | u32 ocr_mask; /* available voltages */ | 90 | u32 ocr_mask; /* available voltages */ |
84 | struct tmio_mmc_dma *dma; | 91 | struct tmio_mmc_dma *dma; |
92 | struct device *dev; | ||
93 | bool power; | ||
85 | void (*set_pwr)(struct platform_device *host, int state); | 94 | void (*set_pwr)(struct platform_device *host, int state); |
86 | void (*set_clk_div)(struct platform_device *host, int state); | 95 | void (*set_clk_div)(struct platform_device *host, int state); |
87 | int (*get_cd)(struct platform_device *host); | 96 | int (*get_cd)(struct platform_device *host); |
88 | }; | 97 | }; |
89 | 98 | ||
99 | static inline void tmio_mmc_cd_wakeup(struct tmio_mmc_data *pdata) | ||
100 | { | ||
101 | if (pdata && !pdata->power) { | ||
102 | pdata->power = true; | ||
103 | pm_runtime_get(pdata->dev); | ||
104 | } | ||
105 | } | ||
106 | |||
90 | /* | 107 | /* |
91 | * data for the NAND controller | 108 | * data for the NAND controller |
92 | */ | 109 | */ |
diff --git a/include/linux/mfd/tps65910.h b/include/linux/mfd/tps65910.h new file mode 100644 index 000000000000..8bb85b930c07 --- /dev/null +++ b/include/linux/mfd/tps65910.h | |||
@@ -0,0 +1,800 @@ | |||
1 | /* | ||
2 | * tps65910.h -- TI TPS6591x | ||
3 | * | ||
4 | * Copyright 2010-2011 Texas Instruments Inc. | ||
5 | * | ||
6 | * Author: Graeme Gregory <gg@slimlogic.co.uk> | ||
7 | * Author: Jorge Eduardo Candelaria <jedu@slimlogic.co.uk> | ||
8 | * Author: Arnaud Deconinck <a-deconinck@ti.com> | ||
9 | * | ||
10 | * This program is free software; you can redistribute it and/or modify it | ||
11 | * under the terms of the GNU General Public License as published by the | ||
12 | * Free Software Foundation; either version 2 of the License, or (at your | ||
13 | * option) any later version. | ||
14 | * | ||
15 | */ | ||
16 | |||
17 | #ifndef __LINUX_MFD_TPS65910_H | ||
18 | #define __LINUX_MFD_TPS65910_H | ||
19 | |||
20 | /* TPS chip id list */ | ||
21 | #define TPS65910 0 | ||
22 | #define TPS65911 1 | ||
23 | |||
24 | /* TPS regulator type list */ | ||
25 | #define REGULATOR_LDO 0 | ||
26 | #define REGULATOR_DCDC 1 | ||
27 | |||
28 | /* | ||
29 | * List of registers for component TPS65910 | ||
30 | * | ||
31 | */ | ||
32 | |||
33 | #define TPS65910_SECONDS 0x0 | ||
34 | #define TPS65910_MINUTES 0x1 | ||
35 | #define TPS65910_HOURS 0x2 | ||
36 | #define TPS65910_DAYS 0x3 | ||
37 | #define TPS65910_MONTHS 0x4 | ||
38 | #define TPS65910_YEARS 0x5 | ||
39 | #define TPS65910_WEEKS 0x6 | ||
40 | #define TPS65910_ALARM_SECONDS 0x8 | ||
41 | #define TPS65910_ALARM_MINUTES 0x9 | ||
42 | #define TPS65910_ALARM_HOURS 0xA | ||
43 | #define TPS65910_ALARM_DAYS 0xB | ||
44 | #define TPS65910_ALARM_MONTHS 0xC | ||
45 | #define TPS65910_ALARM_YEARS 0xD | ||
46 | #define TPS65910_RTC_CTRL 0x10 | ||
47 | #define TPS65910_RTC_STATUS 0x11 | ||
48 | #define TPS65910_RTC_INTERRUPTS 0x12 | ||
49 | #define TPS65910_RTC_COMP_LSB 0x13 | ||
50 | #define TPS65910_RTC_COMP_MSB 0x14 | ||
51 | #define TPS65910_RTC_RES_PROG 0x15 | ||
52 | #define TPS65910_RTC_RESET_STATUS 0x16 | ||
53 | #define TPS65910_BCK1 0x17 | ||
54 | #define TPS65910_BCK2 0x18 | ||
55 | #define TPS65910_BCK3 0x19 | ||
56 | #define TPS65910_BCK4 0x1A | ||
57 | #define TPS65910_BCK5 0x1B | ||
58 | #define TPS65910_PUADEN 0x1C | ||
59 | #define TPS65910_REF 0x1D | ||
60 | #define TPS65910_VRTC 0x1E | ||
61 | #define TPS65910_VIO 0x20 | ||
62 | #define TPS65910_VDD1 0x21 | ||
63 | #define TPS65910_VDD1_OP 0x22 | ||
64 | #define TPS65910_VDD1_SR 0x23 | ||
65 | #define TPS65910_VDD2 0x24 | ||
66 | #define TPS65910_VDD2_OP 0x25 | ||
67 | #define TPS65910_VDD2_SR 0x26 | ||
68 | #define TPS65910_VDD3 0x27 | ||
69 | #define TPS65910_VDIG1 0x30 | ||
70 | #define TPS65910_VDIG2 0x31 | ||
71 | #define TPS65910_VAUX1 0x32 | ||
72 | #define TPS65910_VAUX2 0x33 | ||
73 | #define TPS65910_VAUX33 0x34 | ||
74 | #define TPS65910_VMMC 0x35 | ||
75 | #define TPS65910_VPLL 0x36 | ||
76 | #define TPS65910_VDAC 0x37 | ||
77 | #define TPS65910_THERM 0x38 | ||
78 | #define TPS65910_BBCH 0x39 | ||
79 | #define TPS65910_DCDCCTRL 0x3E | ||
80 | #define TPS65910_DEVCTRL 0x3F | ||
81 | #define TPS65910_DEVCTRL2 0x40 | ||
82 | #define TPS65910_SLEEP_KEEP_LDO_ON 0x41 | ||
83 | #define TPS65910_SLEEP_KEEP_RES_ON 0x42 | ||
84 | #define TPS65910_SLEEP_SET_LDO_OFF 0x43 | ||
85 | #define TPS65910_SLEEP_SET_RES_OFF 0x44 | ||
86 | #define TPS65910_EN1_LDO_ASS 0x45 | ||
87 | #define TPS65910_EN1_SMPS_ASS 0x46 | ||
88 | #define TPS65910_EN2_LDO_ASS 0x47 | ||
89 | #define TPS65910_EN2_SMPS_ASS 0x48 | ||
90 | #define TPS65910_EN3_LDO_ASS 0x49 | ||
91 | #define TPS65910_SPARE 0x4A | ||
92 | #define TPS65910_INT_STS 0x50 | ||
93 | #define TPS65910_INT_MSK 0x51 | ||
94 | #define TPS65910_INT_STS2 0x52 | ||
95 | #define TPS65910_INT_MSK2 0x53 | ||
96 | #define TPS65910_INT_STS3 0x54 | ||
97 | #define TPS65910_INT_MSK3 0x55 | ||
98 | #define TPS65910_GPIO0 0x60 | ||
99 | #define TPS65910_GPIO1 0x61 | ||
100 | #define TPS65910_GPIO2 0x62 | ||
101 | #define TPS65910_GPIO3 0x63 | ||
102 | #define TPS65910_GPIO4 0x64 | ||
103 | #define TPS65910_GPIO5 0x65 | ||
104 | #define TPS65910_GPIO6 0x66 | ||
105 | #define TPS65910_GPIO7 0x67 | ||
106 | #define TPS65910_GPIO8 0x68 | ||
107 | #define TPS65910_JTAGVERNUM 0x80 | ||
108 | #define TPS65910_MAX_REGISTER 0x80 | ||
109 | |||
110 | /* | ||
111 | * List of registers specific to TPS65911 | ||
112 | */ | ||
113 | #define TPS65911_VDDCTRL 0x27 | ||
114 | #define TPS65911_VDDCTRL_OP 0x28 | ||
115 | #define TPS65911_VDDCTRL_SR 0x29 | ||
116 | #define TPS65911_LDO1 0x30 | ||
117 | #define TPS65911_LDO2 0x31 | ||
118 | #define TPS65911_LDO5 0x32 | ||
119 | #define TPS65911_LDO8 0x33 | ||
120 | #define TPS65911_LDO7 0x34 | ||
121 | #define TPS65911_LDO6 0x35 | ||
122 | #define TPS65911_LDO4 0x36 | ||
123 | #define TPS65911_LDO3 0x37 | ||
124 | #define TPS65911_VMBCH 0x6A | ||
125 | #define TPS65911_VMBCH2 0x6B | ||
126 | |||
127 | /* | ||
128 | * List of register bitfields for component TPS65910 | ||
129 | * | ||
130 | */ | ||
131 | |||
132 | |||
133 | /*Register BCK1 (0x80) register.RegisterDescription */ | ||
134 | #define BCK1_BCKUP_MASK 0xFF | ||
135 | #define BCK1_BCKUP_SHIFT 0 | ||
136 | |||
137 | |||
138 | /*Register BCK2 (0x80) register.RegisterDescription */ | ||
139 | #define BCK2_BCKUP_MASK 0xFF | ||
140 | #define BCK2_BCKUP_SHIFT 0 | ||
141 | |||
142 | |||
143 | /*Register BCK3 (0x80) register.RegisterDescription */ | ||
144 | #define BCK3_BCKUP_MASK 0xFF | ||
145 | #define BCK3_BCKUP_SHIFT 0 | ||
146 | |||
147 | |||
148 | /*Register BCK4 (0x80) register.RegisterDescription */ | ||
149 | #define BCK4_BCKUP_MASK 0xFF | ||
150 | #define BCK4_BCKUP_SHIFT 0 | ||
151 | |||
152 | |||
153 | /*Register BCK5 (0x80) register.RegisterDescription */ | ||
154 | #define BCK5_BCKUP_MASK 0xFF | ||
155 | #define BCK5_BCKUP_SHIFT 0 | ||
156 | |||
157 | |||
158 | /*Register PUADEN (0x80) register.RegisterDescription */ | ||
159 | #define PUADEN_EN3P_MASK 0x80 | ||
160 | #define PUADEN_EN3P_SHIFT 7 | ||
161 | #define PUADEN_I2CCTLP_MASK 0x40 | ||
162 | #define PUADEN_I2CCTLP_SHIFT 6 | ||
163 | #define PUADEN_I2CSRP_MASK 0x20 | ||
164 | #define PUADEN_I2CSRP_SHIFT 5 | ||
165 | #define PUADEN_PWRONP_MASK 0x10 | ||
166 | #define PUADEN_PWRONP_SHIFT 4 | ||
167 | #define PUADEN_SLEEPP_MASK 0x08 | ||
168 | #define PUADEN_SLEEPP_SHIFT 3 | ||
169 | #define PUADEN_PWRHOLDP_MASK 0x04 | ||
170 | #define PUADEN_PWRHOLDP_SHIFT 2 | ||
171 | #define PUADEN_BOOT1P_MASK 0x02 | ||
172 | #define PUADEN_BOOT1P_SHIFT 1 | ||
173 | #define PUADEN_BOOT0P_MASK 0x01 | ||
174 | #define PUADEN_BOOT0P_SHIFT 0 | ||
175 | |||
176 | |||
177 | /*Register REF (0x80) register.RegisterDescription */ | ||
178 | #define REF_VMBCH_SEL_MASK 0x0C | ||
179 | #define REF_VMBCH_SEL_SHIFT 2 | ||
180 | #define REF_ST_MASK 0x03 | ||
181 | #define REF_ST_SHIFT 0 | ||
182 | |||
183 | |||
184 | /*Register VRTC (0x80) register.RegisterDescription */ | ||
185 | #define VRTC_VRTC_OFFMASK_MASK 0x08 | ||
186 | #define VRTC_VRTC_OFFMASK_SHIFT 3 | ||
187 | #define VRTC_ST_MASK 0x03 | ||
188 | #define VRTC_ST_SHIFT 0 | ||
189 | |||
190 | |||
191 | /*Register VIO (0x80) register.RegisterDescription */ | ||
192 | #define VIO_ILMAX_MASK 0xC0 | ||
193 | #define VIO_ILMAX_SHIFT 6 | ||
194 | #define VIO_SEL_MASK 0x0C | ||
195 | #define VIO_SEL_SHIFT 2 | ||
196 | #define VIO_ST_MASK 0x03 | ||
197 | #define VIO_ST_SHIFT 0 | ||
198 | |||
199 | |||
200 | /*Register VDD1 (0x80) register.RegisterDescription */ | ||
201 | #define VDD1_VGAIN_SEL_MASK 0xC0 | ||
202 | #define VDD1_VGAIN_SEL_SHIFT 6 | ||
203 | #define VDD1_ILMAX_MASK 0x20 | ||
204 | #define VDD1_ILMAX_SHIFT 5 | ||
205 | #define VDD1_TSTEP_MASK 0x1C | ||
206 | #define VDD1_TSTEP_SHIFT 2 | ||
207 | #define VDD1_ST_MASK 0x03 | ||
208 | #define VDD1_ST_SHIFT 0 | ||
209 | |||
210 | |||
211 | /*Register VDD1_OP (0x80) register.RegisterDescription */ | ||
212 | #define VDD1_OP_CMD_MASK 0x80 | ||
213 | #define VDD1_OP_CMD_SHIFT 7 | ||
214 | #define VDD1_OP_SEL_MASK 0x7F | ||
215 | #define VDD1_OP_SEL_SHIFT 0 | ||
216 | |||
217 | |||
218 | /*Register VDD1_SR (0x80) register.RegisterDescription */ | ||
219 | #define VDD1_SR_SEL_MASK 0x7F | ||
220 | #define VDD1_SR_SEL_SHIFT 0 | ||
221 | |||
222 | |||
223 | /*Register VDD2 (0x80) register.RegisterDescription */ | ||
224 | #define VDD2_VGAIN_SEL_MASK 0xC0 | ||
225 | #define VDD2_VGAIN_SEL_SHIFT 6 | ||
226 | #define VDD2_ILMAX_MASK 0x20 | ||
227 | #define VDD2_ILMAX_SHIFT 5 | ||
228 | #define VDD2_TSTEP_MASK 0x1C | ||
229 | #define VDD2_TSTEP_SHIFT 2 | ||
230 | #define VDD2_ST_MASK 0x03 | ||
231 | #define VDD2_ST_SHIFT 0 | ||
232 | |||
233 | |||
234 | /*Register VDD2_OP (0x80) register.RegisterDescription */ | ||
235 | #define VDD2_OP_CMD_MASK 0x80 | ||
236 | #define VDD2_OP_CMD_SHIFT 7 | ||
237 | #define VDD2_OP_SEL_MASK 0x7F | ||
238 | #define VDD2_OP_SEL_SHIFT 0 | ||
239 | |||
240 | /*Register VDD2_SR (0x80) register.RegisterDescription */ | ||
241 | #define VDD2_SR_SEL_MASK 0x7F | ||
242 | #define VDD2_SR_SEL_SHIFT 0 | ||
243 | |||
244 | |||
245 | /*Registers VDD1, VDD2 voltage values definitions */ | ||
246 | #define VDD1_2_NUM_VOLTS 73 | ||
247 | #define VDD1_2_MIN_VOLT 6000 | ||
248 | #define VDD1_2_OFFSET 125 | ||
249 | |||
250 | |||
251 | /*Register VDD3 (0x80) register.RegisterDescription */ | ||
252 | #define VDD3_CKINEN_MASK 0x04 | ||
253 | #define VDD3_CKINEN_SHIFT 2 | ||
254 | #define VDD3_ST_MASK 0x03 | ||
255 | #define VDD3_ST_SHIFT 0 | ||
256 | #define VDDCTRL_MIN_VOLT 6000 | ||
257 | #define VDDCTRL_OFFSET 125 | ||
258 | |||
259 | /*Registers VDIG (0x80) to VDAC register.RegisterDescription */ | ||
260 | #define LDO_SEL_MASK 0x0C | ||
261 | #define LDO_SEL_SHIFT 2 | ||
262 | #define LDO_ST_MASK 0x03 | ||
263 | #define LDO_ST_SHIFT 0 | ||
264 | #define LDO_ST_ON_BIT 0x01 | ||
265 | #define LDO_ST_MODE_BIT 0x02 | ||
266 | |||
267 | |||
268 | /* Registers LDO1 to LDO8 in tps65910 */ | ||
269 | #define LDO1_SEL_MASK 0xFC | ||
270 | #define LDO3_SEL_MASK 0x7C | ||
271 | #define LDO_MIN_VOLT 1000 | ||
272 | #define LDO_MAX_VOLT 3300; | ||
273 | |||
274 | |||
275 | /*Register VDIG1 (0x80) register.RegisterDescription */ | ||
276 | #define VDIG1_SEL_MASK 0x0C | ||
277 | #define VDIG1_SEL_SHIFT 2 | ||
278 | #define VDIG1_ST_MASK 0x03 | ||
279 | #define VDIG1_ST_SHIFT 0 | ||
280 | |||
281 | |||
282 | /*Register VDIG2 (0x80) register.RegisterDescription */ | ||
283 | #define VDIG2_SEL_MASK 0x0C | ||
284 | #define VDIG2_SEL_SHIFT 2 | ||
285 | #define VDIG2_ST_MASK 0x03 | ||
286 | #define VDIG2_ST_SHIFT 0 | ||
287 | |||
288 | |||
289 | /*Register VAUX1 (0x80) register.RegisterDescription */ | ||
290 | #define VAUX1_SEL_MASK 0x0C | ||
291 | #define VAUX1_SEL_SHIFT 2 | ||
292 | #define VAUX1_ST_MASK 0x03 | ||
293 | #define VAUX1_ST_SHIFT 0 | ||
294 | |||
295 | |||
296 | /*Register VAUX2 (0x80) register.RegisterDescription */ | ||
297 | #define VAUX2_SEL_MASK 0x0C | ||
298 | #define VAUX2_SEL_SHIFT 2 | ||
299 | #define VAUX2_ST_MASK 0x03 | ||
300 | #define VAUX2_ST_SHIFT 0 | ||
301 | |||
302 | |||
303 | /*Register VAUX33 (0x80) register.RegisterDescription */ | ||
304 | #define VAUX33_SEL_MASK 0x0C | ||
305 | #define VAUX33_SEL_SHIFT 2 | ||
306 | #define VAUX33_ST_MASK 0x03 | ||
307 | #define VAUX33_ST_SHIFT 0 | ||
308 | |||
309 | |||
310 | /*Register VMMC (0x80) register.RegisterDescription */ | ||
311 | #define VMMC_SEL_MASK 0x0C | ||
312 | #define VMMC_SEL_SHIFT 2 | ||
313 | #define VMMC_ST_MASK 0x03 | ||
314 | #define VMMC_ST_SHIFT 0 | ||
315 | |||
316 | |||
317 | /*Register VPLL (0x80) register.RegisterDescription */ | ||
318 | #define VPLL_SEL_MASK 0x0C | ||
319 | #define VPLL_SEL_SHIFT 2 | ||
320 | #define VPLL_ST_MASK 0x03 | ||
321 | #define VPLL_ST_SHIFT 0 | ||
322 | |||
323 | |||
324 | /*Register VDAC (0x80) register.RegisterDescription */ | ||
325 | #define VDAC_SEL_MASK 0x0C | ||
326 | #define VDAC_SEL_SHIFT 2 | ||
327 | #define VDAC_ST_MASK 0x03 | ||
328 | #define VDAC_ST_SHIFT 0 | ||
329 | |||
330 | |||
331 | /*Register THERM (0x80) register.RegisterDescription */ | ||
332 | #define THERM_THERM_HD_MASK 0x20 | ||
333 | #define THERM_THERM_HD_SHIFT 5 | ||
334 | #define THERM_THERM_TS_MASK 0x10 | ||
335 | #define THERM_THERM_TS_SHIFT 4 | ||
336 | #define THERM_THERM_HDSEL_MASK 0x0C | ||
337 | #define THERM_THERM_HDSEL_SHIFT 2 | ||
338 | #define THERM_RSVD1_MASK 0x02 | ||
339 | #define THERM_RSVD1_SHIFT 1 | ||
340 | #define THERM_THERM_STATE_MASK 0x01 | ||
341 | #define THERM_THERM_STATE_SHIFT 0 | ||
342 | |||
343 | |||
344 | /*Register BBCH (0x80) register.RegisterDescription */ | ||
345 | #define BBCH_BBSEL_MASK 0x06 | ||
346 | #define BBCH_BBSEL_SHIFT 1 | ||
347 | #define BBCH_BBCHEN_MASK 0x01 | ||
348 | #define BBCH_BBCHEN_SHIFT 0 | ||
349 | |||
350 | |||
351 | /*Register DCDCCTRL (0x80) register.RegisterDescription */ | ||
352 | #define DCDCCTRL_VDD2_PSKIP_MASK 0x20 | ||
353 | #define DCDCCTRL_VDD2_PSKIP_SHIFT 5 | ||
354 | #define DCDCCTRL_VDD1_PSKIP_MASK 0x10 | ||
355 | #define DCDCCTRL_VDD1_PSKIP_SHIFT 4 | ||
356 | #define DCDCCTRL_VIO_PSKIP_MASK 0x08 | ||
357 | #define DCDCCTRL_VIO_PSKIP_SHIFT 3 | ||
358 | #define DCDCCTRL_DCDCCKEXT_MASK 0x04 | ||
359 | #define DCDCCTRL_DCDCCKEXT_SHIFT 2 | ||
360 | #define DCDCCTRL_DCDCCKSYNC_MASK 0x03 | ||
361 | #define DCDCCTRL_DCDCCKSYNC_SHIFT 0 | ||
362 | |||
363 | |||
364 | /*Register DEVCTRL (0x80) register.RegisterDescription */ | ||
365 | #define DEVCTRL_RTC_PWDN_MASK 0x40 | ||
366 | #define DEVCTRL_RTC_PWDN_SHIFT 6 | ||
367 | #define DEVCTRL_CK32K_CTRL_MASK 0x20 | ||
368 | #define DEVCTRL_CK32K_CTRL_SHIFT 5 | ||
369 | #define DEVCTRL_SR_CTL_I2C_SEL_MASK 0x10 | ||
370 | #define DEVCTRL_SR_CTL_I2C_SEL_SHIFT 4 | ||
371 | #define DEVCTRL_DEV_OFF_RST_MASK 0x08 | ||
372 | #define DEVCTRL_DEV_OFF_RST_SHIFT 3 | ||
373 | #define DEVCTRL_DEV_ON_MASK 0x04 | ||
374 | #define DEVCTRL_DEV_ON_SHIFT 2 | ||
375 | #define DEVCTRL_DEV_SLP_MASK 0x02 | ||
376 | #define DEVCTRL_DEV_SLP_SHIFT 1 | ||
377 | #define DEVCTRL_DEV_OFF_MASK 0x01 | ||
378 | #define DEVCTRL_DEV_OFF_SHIFT 0 | ||
379 | |||
380 | |||
381 | /*Register DEVCTRL2 (0x80) register.RegisterDescription */ | ||
382 | #define DEVCTRL2_TSLOT_LENGTH_MASK 0x30 | ||
383 | #define DEVCTRL2_TSLOT_LENGTH_SHIFT 4 | ||
384 | #define DEVCTRL2_SLEEPSIG_POL_MASK 0x08 | ||
385 | #define DEVCTRL2_SLEEPSIG_POL_SHIFT 3 | ||
386 | #define DEVCTRL2_PWON_LP_OFF_MASK 0x04 | ||
387 | #define DEVCTRL2_PWON_LP_OFF_SHIFT 2 | ||
388 | #define DEVCTRL2_PWON_LP_RST_MASK 0x02 | ||
389 | #define DEVCTRL2_PWON_LP_RST_SHIFT 1 | ||
390 | #define DEVCTRL2_IT_POL_MASK 0x01 | ||
391 | #define DEVCTRL2_IT_POL_SHIFT 0 | ||
392 | |||
393 | |||
394 | /*Register SLEEP_KEEP_LDO_ON (0x80) register.RegisterDescription */ | ||
395 | #define SLEEP_KEEP_LDO_ON_VDAC_KEEPON_MASK 0x80 | ||
396 | #define SLEEP_KEEP_LDO_ON_VDAC_KEEPON_SHIFT 7 | ||
397 | #define SLEEP_KEEP_LDO_ON_VPLL_KEEPON_MASK 0x40 | ||
398 | #define SLEEP_KEEP_LDO_ON_VPLL_KEEPON_SHIFT 6 | ||
399 | #define SLEEP_KEEP_LDO_ON_VAUX33_KEEPON_MASK 0x20 | ||
400 | #define SLEEP_KEEP_LDO_ON_VAUX33_KEEPON_SHIFT 5 | ||
401 | #define SLEEP_KEEP_LDO_ON_VAUX2_KEEPON_MASK 0x10 | ||
402 | #define SLEEP_KEEP_LDO_ON_VAUX2_KEEPON_SHIFT 4 | ||
403 | #define SLEEP_KEEP_LDO_ON_VAUX1_KEEPON_MASK 0x08 | ||
404 | #define SLEEP_KEEP_LDO_ON_VAUX1_KEEPON_SHIFT 3 | ||
405 | #define SLEEP_KEEP_LDO_ON_VDIG2_KEEPON_MASK 0x04 | ||
406 | #define SLEEP_KEEP_LDO_ON_VDIG2_KEEPON_SHIFT 2 | ||
407 | #define SLEEP_KEEP_LDO_ON_VDIG1_KEEPON_MASK 0x02 | ||
408 | #define SLEEP_KEEP_LDO_ON_VDIG1_KEEPON_SHIFT 1 | ||
409 | #define SLEEP_KEEP_LDO_ON_VMMC_KEEPON_MASK 0x01 | ||
410 | #define SLEEP_KEEP_LDO_ON_VMMC_KEEPON_SHIFT 0 | ||
411 | |||
412 | |||
413 | /*Register SLEEP_KEEP_RES_ON (0x80) register.RegisterDescription */ | ||
414 | #define SLEEP_KEEP_RES_ON_THERM_KEEPON_MASK 0x80 | ||
415 | #define SLEEP_KEEP_RES_ON_THERM_KEEPON_SHIFT 7 | ||
416 | #define SLEEP_KEEP_RES_ON_CLKOUT32K_KEEPON_MASK 0x40 | ||
417 | #define SLEEP_KEEP_RES_ON_CLKOUT32K_KEEPON_SHIFT 6 | ||
418 | #define SLEEP_KEEP_RES_ON_VRTC_KEEPON_MASK 0x20 | ||
419 | #define SLEEP_KEEP_RES_ON_VRTC_KEEPON_SHIFT 5 | ||
420 | #define SLEEP_KEEP_RES_ON_I2CHS_KEEPON_MASK 0x10 | ||
421 | #define SLEEP_KEEP_RES_ON_I2CHS_KEEPON_SHIFT 4 | ||
422 | #define SLEEP_KEEP_RES_ON_VDD3_KEEPON_MASK 0x08 | ||
423 | #define SLEEP_KEEP_RES_ON_VDD3_KEEPON_SHIFT 3 | ||
424 | #define SLEEP_KEEP_RES_ON_VDD2_KEEPON_MASK 0x04 | ||
425 | #define SLEEP_KEEP_RES_ON_VDD2_KEEPON_SHIFT 2 | ||
426 | #define SLEEP_KEEP_RES_ON_VDD1_KEEPON_MASK 0x02 | ||
427 | #define SLEEP_KEEP_RES_ON_VDD1_KEEPON_SHIFT 1 | ||
428 | #define SLEEP_KEEP_RES_ON_VIO_KEEPON_MASK 0x01 | ||
429 | #define SLEEP_KEEP_RES_ON_VIO_KEEPON_SHIFT 0 | ||
430 | |||
431 | |||
432 | /*Register SLEEP_SET_LDO_OFF (0x80) register.RegisterDescription */ | ||
433 | #define SLEEP_SET_LDO_OFF_VDAC_SETOFF_MASK 0x80 | ||
434 | #define SLEEP_SET_LDO_OFF_VDAC_SETOFF_SHIFT 7 | ||
435 | #define SLEEP_SET_LDO_OFF_VPLL_SETOFF_MASK 0x40 | ||
436 | #define SLEEP_SET_LDO_OFF_VPLL_SETOFF_SHIFT 6 | ||
437 | #define SLEEP_SET_LDO_OFF_VAUX33_SETOFF_MASK 0x20 | ||
438 | #define SLEEP_SET_LDO_OFF_VAUX33_SETOFF_SHIFT 5 | ||
439 | #define SLEEP_SET_LDO_OFF_VAUX2_SETOFF_MASK 0x10 | ||
440 | #define SLEEP_SET_LDO_OFF_VAUX2_SETOFF_SHIFT 4 | ||
441 | #define SLEEP_SET_LDO_OFF_VAUX1_SETOFF_MASK 0x08 | ||
442 | #define SLEEP_SET_LDO_OFF_VAUX1_SETOFF_SHIFT 3 | ||
443 | #define SLEEP_SET_LDO_OFF_VDIG2_SETOFF_MASK 0x04 | ||
444 | #define SLEEP_SET_LDO_OFF_VDIG2_SETOFF_SHIFT 2 | ||
445 | #define SLEEP_SET_LDO_OFF_VDIG1_SETOFF_MASK 0x02 | ||
446 | #define SLEEP_SET_LDO_OFF_VDIG1_SETOFF_SHIFT 1 | ||
447 | #define SLEEP_SET_LDO_OFF_VMMC_SETOFF_MASK 0x01 | ||
448 | #define SLEEP_SET_LDO_OFF_VMMC_SETOFF_SHIFT 0 | ||
449 | |||
450 | |||
451 | /*Register SLEEP_SET_RES_OFF (0x80) register.RegisterDescription */ | ||
452 | #define SLEEP_SET_RES_OFF_DEFAULT_VOLT_MASK 0x80 | ||
453 | #define SLEEP_SET_RES_OFF_DEFAULT_VOLT_SHIFT 7 | ||
454 | #define SLEEP_SET_RES_OFF_RSVD_MASK 0x60 | ||
455 | #define SLEEP_SET_RES_OFF_RSVD_SHIFT 5 | ||
456 | #define SLEEP_SET_RES_OFF_SPARE_SETOFF_MASK 0x10 | ||
457 | #define SLEEP_SET_RES_OFF_SPARE_SETOFF_SHIFT 4 | ||
458 | #define SLEEP_SET_RES_OFF_VDD3_SETOFF_MASK 0x08 | ||
459 | #define SLEEP_SET_RES_OFF_VDD3_SETOFF_SHIFT 3 | ||
460 | #define SLEEP_SET_RES_OFF_VDD2_SETOFF_MASK 0x04 | ||
461 | #define SLEEP_SET_RES_OFF_VDD2_SETOFF_SHIFT 2 | ||
462 | #define SLEEP_SET_RES_OFF_VDD1_SETOFF_MASK 0x02 | ||
463 | #define SLEEP_SET_RES_OFF_VDD1_SETOFF_SHIFT 1 | ||
464 | #define SLEEP_SET_RES_OFF_VIO_SETOFF_MASK 0x01 | ||
465 | #define SLEEP_SET_RES_OFF_VIO_SETOFF_SHIFT 0 | ||
466 | |||
467 | |||
468 | /*Register EN1_LDO_ASS (0x80) register.RegisterDescription */ | ||
469 | #define EN1_LDO_ASS_VDAC_EN1_MASK 0x80 | ||
470 | #define EN1_LDO_ASS_VDAC_EN1_SHIFT 7 | ||
471 | #define EN1_LDO_ASS_VPLL_EN1_MASK 0x40 | ||
472 | #define EN1_LDO_ASS_VPLL_EN1_SHIFT 6 | ||
473 | #define EN1_LDO_ASS_VAUX33_EN1_MASK 0x20 | ||
474 | #define EN1_LDO_ASS_VAUX33_EN1_SHIFT 5 | ||
475 | #define EN1_LDO_ASS_VAUX2_EN1_MASK 0x10 | ||
476 | #define EN1_LDO_ASS_VAUX2_EN1_SHIFT 4 | ||
477 | #define EN1_LDO_ASS_VAUX1_EN1_MASK 0x08 | ||
478 | #define EN1_LDO_ASS_VAUX1_EN1_SHIFT 3 | ||
479 | #define EN1_LDO_ASS_VDIG2_EN1_MASK 0x04 | ||
480 | #define EN1_LDO_ASS_VDIG2_EN1_SHIFT 2 | ||
481 | #define EN1_LDO_ASS_VDIG1_EN1_MASK 0x02 | ||
482 | #define EN1_LDO_ASS_VDIG1_EN1_SHIFT 1 | ||
483 | #define EN1_LDO_ASS_VMMC_EN1_MASK 0x01 | ||
484 | #define EN1_LDO_ASS_VMMC_EN1_SHIFT 0 | ||
485 | |||
486 | |||
487 | /*Register EN1_SMPS_ASS (0x80) register.RegisterDescription */ | ||
488 | #define EN1_SMPS_ASS_RSVD_MASK 0xE0 | ||
489 | #define EN1_SMPS_ASS_RSVD_SHIFT 5 | ||
490 | #define EN1_SMPS_ASS_SPARE_EN1_MASK 0x10 | ||
491 | #define EN1_SMPS_ASS_SPARE_EN1_SHIFT 4 | ||
492 | #define EN1_SMPS_ASS_VDD3_EN1_MASK 0x08 | ||
493 | #define EN1_SMPS_ASS_VDD3_EN1_SHIFT 3 | ||
494 | #define EN1_SMPS_ASS_VDD2_EN1_MASK 0x04 | ||
495 | #define EN1_SMPS_ASS_VDD2_EN1_SHIFT 2 | ||
496 | #define EN1_SMPS_ASS_VDD1_EN1_MASK 0x02 | ||
497 | #define EN1_SMPS_ASS_VDD1_EN1_SHIFT 1 | ||
498 | #define EN1_SMPS_ASS_VIO_EN1_MASK 0x01 | ||
499 | #define EN1_SMPS_ASS_VIO_EN1_SHIFT 0 | ||
500 | |||
501 | |||
502 | /*Register EN2_LDO_ASS (0x80) register.RegisterDescription */ | ||
503 | #define EN2_LDO_ASS_VDAC_EN2_MASK 0x80 | ||
504 | #define EN2_LDO_ASS_VDAC_EN2_SHIFT 7 | ||
505 | #define EN2_LDO_ASS_VPLL_EN2_MASK 0x40 | ||
506 | #define EN2_LDO_ASS_VPLL_EN2_SHIFT 6 | ||
507 | #define EN2_LDO_ASS_VAUX33_EN2_MASK 0x20 | ||
508 | #define EN2_LDO_ASS_VAUX33_EN2_SHIFT 5 | ||
509 | #define EN2_LDO_ASS_VAUX2_EN2_MASK 0x10 | ||
510 | #define EN2_LDO_ASS_VAUX2_EN2_SHIFT 4 | ||
511 | #define EN2_LDO_ASS_VAUX1_EN2_MASK 0x08 | ||
512 | #define EN2_LDO_ASS_VAUX1_EN2_SHIFT 3 | ||
513 | #define EN2_LDO_ASS_VDIG2_EN2_MASK 0x04 | ||
514 | #define EN2_LDO_ASS_VDIG2_EN2_SHIFT 2 | ||
515 | #define EN2_LDO_ASS_VDIG1_EN2_MASK 0x02 | ||
516 | #define EN2_LDO_ASS_VDIG1_EN2_SHIFT 1 | ||
517 | #define EN2_LDO_ASS_VMMC_EN2_MASK 0x01 | ||
518 | #define EN2_LDO_ASS_VMMC_EN2_SHIFT 0 | ||
519 | |||
520 | |||
521 | /*Register EN2_SMPS_ASS (0x80) register.RegisterDescription */ | ||
522 | #define EN2_SMPS_ASS_RSVD_MASK 0xE0 | ||
523 | #define EN2_SMPS_ASS_RSVD_SHIFT 5 | ||
524 | #define EN2_SMPS_ASS_SPARE_EN2_MASK 0x10 | ||
525 | #define EN2_SMPS_ASS_SPARE_EN2_SHIFT 4 | ||
526 | #define EN2_SMPS_ASS_VDD3_EN2_MASK 0x08 | ||
527 | #define EN2_SMPS_ASS_VDD3_EN2_SHIFT 3 | ||
528 | #define EN2_SMPS_ASS_VDD2_EN2_MASK 0x04 | ||
529 | #define EN2_SMPS_ASS_VDD2_EN2_SHIFT 2 | ||
530 | #define EN2_SMPS_ASS_VDD1_EN2_MASK 0x02 | ||
531 | #define EN2_SMPS_ASS_VDD1_EN2_SHIFT 1 | ||
532 | #define EN2_SMPS_ASS_VIO_EN2_MASK 0x01 | ||
533 | #define EN2_SMPS_ASS_VIO_EN2_SHIFT 0 | ||
534 | |||
535 | |||
536 | /*Register EN3_LDO_ASS (0x80) register.RegisterDescription */ | ||
537 | #define EN3_LDO_ASS_VDAC_EN3_MASK 0x80 | ||
538 | #define EN3_LDO_ASS_VDAC_EN3_SHIFT 7 | ||
539 | #define EN3_LDO_ASS_VPLL_EN3_MASK 0x40 | ||
540 | #define EN3_LDO_ASS_VPLL_EN3_SHIFT 6 | ||
541 | #define EN3_LDO_ASS_VAUX33_EN3_MASK 0x20 | ||
542 | #define EN3_LDO_ASS_VAUX33_EN3_SHIFT 5 | ||
543 | #define EN3_LDO_ASS_VAUX2_EN3_MASK 0x10 | ||
544 | #define EN3_LDO_ASS_VAUX2_EN3_SHIFT 4 | ||
545 | #define EN3_LDO_ASS_VAUX1_EN3_MASK 0x08 | ||
546 | #define EN3_LDO_ASS_VAUX1_EN3_SHIFT 3 | ||
547 | #define EN3_LDO_ASS_VDIG2_EN3_MASK 0x04 | ||
548 | #define EN3_LDO_ASS_VDIG2_EN3_SHIFT 2 | ||
549 | #define EN3_LDO_ASS_VDIG1_EN3_MASK 0x02 | ||
550 | #define EN3_LDO_ASS_VDIG1_EN3_SHIFT 1 | ||
551 | #define EN3_LDO_ASS_VMMC_EN3_MASK 0x01 | ||
552 | #define EN3_LDO_ASS_VMMC_EN3_SHIFT 0 | ||
553 | |||
554 | |||
555 | /*Register SPARE (0x80) register.RegisterDescription */ | ||
556 | #define SPARE_SPARE_MASK 0xFF | ||
557 | #define SPARE_SPARE_SHIFT 0 | ||
558 | |||
559 | |||
560 | /*Register INT_STS (0x80) register.RegisterDescription */ | ||
561 | #define INT_STS_RTC_PERIOD_IT_MASK 0x80 | ||
562 | #define INT_STS_RTC_PERIOD_IT_SHIFT 7 | ||
563 | #define INT_STS_RTC_ALARM_IT_MASK 0x40 | ||
564 | #define INT_STS_RTC_ALARM_IT_SHIFT 6 | ||
565 | #define INT_STS_HOTDIE_IT_MASK 0x20 | ||
566 | #define INT_STS_HOTDIE_IT_SHIFT 5 | ||
567 | #define INT_STS_PWRHOLD_IT_MASK 0x10 | ||
568 | #define INT_STS_PWRHOLD_IT_SHIFT 4 | ||
569 | #define INT_STS_PWRON_LP_IT_MASK 0x08 | ||
570 | #define INT_STS_PWRON_LP_IT_SHIFT 3 | ||
571 | #define INT_STS_PWRON_IT_MASK 0x04 | ||
572 | #define INT_STS_PWRON_IT_SHIFT 2 | ||
573 | #define INT_STS_VMBHI_IT_MASK 0x02 | ||
574 | #define INT_STS_VMBHI_IT_SHIFT 1 | ||
575 | #define INT_STS_VMBDCH_IT_MASK 0x01 | ||
576 | #define INT_STS_VMBDCH_IT_SHIFT 0 | ||
577 | |||
578 | |||
579 | /*Register INT_MSK (0x80) register.RegisterDescription */ | ||
580 | #define INT_MSK_RTC_PERIOD_IT_MSK_MASK 0x80 | ||
581 | #define INT_MSK_RTC_PERIOD_IT_MSK_SHIFT 7 | ||
582 | #define INT_MSK_RTC_ALARM_IT_MSK_MASK 0x40 | ||
583 | #define INT_MSK_RTC_ALARM_IT_MSK_SHIFT 6 | ||
584 | #define INT_MSK_HOTDIE_IT_MSK_MASK 0x20 | ||
585 | #define INT_MSK_HOTDIE_IT_MSK_SHIFT 5 | ||
586 | #define INT_MSK_PWRHOLD_IT_MSK_MASK 0x10 | ||
587 | #define INT_MSK_PWRHOLD_IT_MSK_SHIFT 4 | ||
588 | #define INT_MSK_PWRON_LP_IT_MSK_MASK 0x08 | ||
589 | #define INT_MSK_PWRON_LP_IT_MSK_SHIFT 3 | ||
590 | #define INT_MSK_PWRON_IT_MSK_MASK 0x04 | ||
591 | #define INT_MSK_PWRON_IT_MSK_SHIFT 2 | ||
592 | #define INT_MSK_VMBHI_IT_MSK_MASK 0x02 | ||
593 | #define INT_MSK_VMBHI_IT_MSK_SHIFT 1 | ||
594 | #define INT_MSK_VMBDCH_IT_MSK_MASK 0x01 | ||
595 | #define INT_MSK_VMBDCH_IT_MSK_SHIFT 0 | ||
596 | |||
597 | |||
598 | /*Register INT_STS2 (0x80) register.RegisterDescription */ | ||
599 | #define INT_STS2_GPIO3_F_IT_MASK 0x80 | ||
600 | #define INT_STS2_GPIO3_F_IT_SHIFT 7 | ||
601 | #define INT_STS2_GPIO3_R_IT_MASK 0x40 | ||
602 | #define INT_STS2_GPIO3_R_IT_SHIFT 6 | ||
603 | #define INT_STS2_GPIO2_F_IT_MASK 0x20 | ||
604 | #define INT_STS2_GPIO2_F_IT_SHIFT 5 | ||
605 | #define INT_STS2_GPIO2_R_IT_MASK 0x10 | ||
606 | #define INT_STS2_GPIO2_R_IT_SHIFT 4 | ||
607 | #define INT_STS2_GPIO1_F_IT_MASK 0x08 | ||
608 | #define INT_STS2_GPIO1_F_IT_SHIFT 3 | ||
609 | #define INT_STS2_GPIO1_R_IT_MASK 0x04 | ||
610 | #define INT_STS2_GPIO1_R_IT_SHIFT 2 | ||
611 | #define INT_STS2_GPIO0_F_IT_MASK 0x02 | ||
612 | #define INT_STS2_GPIO0_F_IT_SHIFT 1 | ||
613 | #define INT_STS2_GPIO0_R_IT_MASK 0x01 | ||
614 | #define INT_STS2_GPIO0_R_IT_SHIFT 0 | ||
615 | |||
616 | |||
617 | /*Register INT_MSK2 (0x80) register.RegisterDescription */ | ||
618 | #define INT_MSK2_GPIO3_F_IT_MSK_MASK 0x80 | ||
619 | #define INT_MSK2_GPIO3_F_IT_MSK_SHIFT 7 | ||
620 | #define INT_MSK2_GPIO3_R_IT_MSK_MASK 0x40 | ||
621 | #define INT_MSK2_GPIO3_R_IT_MSK_SHIFT 6 | ||
622 | #define INT_MSK2_GPIO2_F_IT_MSK_MASK 0x20 | ||
623 | #define INT_MSK2_GPIO2_F_IT_MSK_SHIFT 5 | ||
624 | #define INT_MSK2_GPIO2_R_IT_MSK_MASK 0x10 | ||
625 | #define INT_MSK2_GPIO2_R_IT_MSK_SHIFT 4 | ||
626 | #define INT_MSK2_GPIO1_F_IT_MSK_MASK 0x08 | ||
627 | #define INT_MSK2_GPIO1_F_IT_MSK_SHIFT 3 | ||
628 | #define INT_MSK2_GPIO1_R_IT_MSK_MASK 0x04 | ||
629 | #define INT_MSK2_GPIO1_R_IT_MSK_SHIFT 2 | ||
630 | #define INT_MSK2_GPIO0_F_IT_MSK_MASK 0x02 | ||
631 | #define INT_MSK2_GPIO0_F_IT_MSK_SHIFT 1 | ||
632 | #define INT_MSK2_GPIO0_R_IT_MSK_MASK 0x01 | ||
633 | #define INT_MSK2_GPIO0_R_IT_MSK_SHIFT 0 | ||
634 | |||
635 | |||
636 | /*Register INT_STS3 (0x80) register.RegisterDescription */ | ||
637 | #define INT_STS3_GPIO5_F_IT_MASK 0x08 | ||
638 | #define INT_STS3_GPIO5_F_IT_SHIFT 3 | ||
639 | #define INT_STS3_GPIO5_R_IT_MASK 0x04 | ||
640 | #define INT_STS3_GPIO5_R_IT_SHIFT 2 | ||
641 | #define INT_STS3_GPIO4_F_IT_MASK 0x02 | ||
642 | #define INT_STS3_GPIO4_F_IT_SHIFT 1 | ||
643 | #define INT_STS3_GPIO4_R_IT_MASK 0x01 | ||
644 | #define INT_STS3_GPIO4_R_IT_SHIFT 0 | ||
645 | |||
646 | |||
647 | /*Register INT_MSK3 (0x80) register.RegisterDescription */ | ||
648 | #define INT_MSK3_GPIO5_F_IT_MSK_MASK 0x08 | ||
649 | #define INT_MSK3_GPIO5_F_IT_MSK_SHIFT 3 | ||
650 | #define INT_MSK3_GPIO5_R_IT_MSK_MASK 0x04 | ||
651 | #define INT_MSK3_GPIO5_R_IT_MSK_SHIFT 2 | ||
652 | #define INT_MSK3_GPIO4_F_IT_MSK_MASK 0x02 | ||
653 | #define INT_MSK3_GPIO4_F_IT_MSK_SHIFT 1 | ||
654 | #define INT_MSK3_GPIO4_R_IT_MSK_MASK 0x01 | ||
655 | #define INT_MSK3_GPIO4_R_IT_MSK_SHIFT 0 | ||
656 | |||
657 | |||
658 | /*Register GPIO (0x80) register.RegisterDescription */ | ||
659 | #define GPIO_DEB_MASK 0x10 | ||
660 | #define GPIO_DEB_SHIFT 4 | ||
661 | #define GPIO_PUEN_MASK 0x08 | ||
662 | #define GPIO_PUEN_SHIFT 3 | ||
663 | #define GPIO_CFG_MASK 0x04 | ||
664 | #define GPIO_CFG_SHIFT 2 | ||
665 | #define GPIO_STS_MASK 0x02 | ||
666 | #define GPIO_STS_SHIFT 1 | ||
667 | #define GPIO_SET_MASK 0x01 | ||
668 | #define GPIO_SET_SHIFT 0 | ||
669 | |||
670 | |||
671 | /*Register JTAGVERNUM (0x80) register.RegisterDescription */ | ||
672 | #define JTAGVERNUM_VERNUM_MASK 0x0F | ||
673 | #define JTAGVERNUM_VERNUM_SHIFT 0 | ||
674 | |||
675 | |||
676 | /* Register VDDCTRL (0x27) bit definitions */ | ||
677 | #define VDDCTRL_ST_MASK 0x03 | ||
678 | #define VDDCTRL_ST_SHIFT 0 | ||
679 | |||
680 | |||
681 | /*Register VDDCTRL_OP (0x28) bit definitios */ | ||
682 | #define VDDCTRL_OP_CMD_MASK 0x80 | ||
683 | #define VDDCTRL_OP_CMD_SHIFT 7 | ||
684 | #define VDDCTRL_OP_SEL_MASK 0x7F | ||
685 | #define VDDCTRL_OP_SEL_SHIFT 0 | ||
686 | |||
687 | |||
688 | /*Register VDDCTRL_SR (0x29) bit definitions */ | ||
689 | #define VDDCTRL_SR_SEL_MASK 0x7F | ||
690 | #define VDDCTRL_SR_SEL_SHIFT 0 | ||
691 | |||
692 | |||
693 | /* IRQ Definitions */ | ||
694 | #define TPS65910_IRQ_VBAT_VMBDCH 0 | ||
695 | #define TPS65910_IRQ_VBAT_VMHI 1 | ||
696 | #define TPS65910_IRQ_PWRON 2 | ||
697 | #define TPS65910_IRQ_PWRON_LP 3 | ||
698 | #define TPS65910_IRQ_PWRHOLD 4 | ||
699 | #define TPS65910_IRQ_HOTDIE 5 | ||
700 | #define TPS65910_IRQ_RTC_ALARM 6 | ||
701 | #define TPS65910_IRQ_RTC_PERIOD 7 | ||
702 | #define TPS65910_IRQ_GPIO_R 8 | ||
703 | #define TPS65910_IRQ_GPIO_F 9 | ||
704 | #define TPS65910_NUM_IRQ 10 | ||
705 | |||
706 | #define TPS65911_IRQ_VBAT_VMBDCH 0 | ||
707 | #define TPS65911_IRQ_VBAT_VMBDCH2L 1 | ||
708 | #define TPS65911_IRQ_VBAT_VMBDCH2H 2 | ||
709 | #define TPS65911_IRQ_VBAT_VMHI 3 | ||
710 | #define TPS65911_IRQ_PWRON 4 | ||
711 | #define TPS65911_IRQ_PWRON_LP 5 | ||
712 | #define TPS65911_IRQ_PWRHOLD_F 6 | ||
713 | #define TPS65911_IRQ_PWRHOLD_R 7 | ||
714 | #define TPS65911_IRQ_HOTDIE 8 | ||
715 | #define TPS65911_IRQ_RTC_ALARM 9 | ||
716 | #define TPS65911_IRQ_RTC_PERIOD 10 | ||
717 | #define TPS65911_IRQ_GPIO0_R 11 | ||
718 | #define TPS65911_IRQ_GPIO0_F 12 | ||
719 | #define TPS65911_IRQ_GPIO1_R 13 | ||
720 | #define TPS65911_IRQ_GPIO1_F 14 | ||
721 | #define TPS65911_IRQ_GPIO2_R 15 | ||
722 | #define TPS65911_IRQ_GPIO2_F 16 | ||
723 | #define TPS65911_IRQ_GPIO3_R 17 | ||
724 | #define TPS65911_IRQ_GPIO3_F 18 | ||
725 | #define TPS65911_IRQ_GPIO4_R 19 | ||
726 | #define TPS65911_IRQ_GPIO4_F 20 | ||
727 | #define TPS65911_IRQ_GPIO5_R 21 | ||
728 | #define TPS65911_IRQ_GPIO5_F 22 | ||
729 | #define TPS65911_IRQ_WTCHDG 23 | ||
730 | #define TPS65911_IRQ_PWRDN 24 | ||
731 | |||
732 | #define TPS65911_NUM_IRQ 25 | ||
733 | |||
734 | |||
735 | /* GPIO Register Definitions */ | ||
736 | #define TPS65910_GPIO_DEB BIT(2) | ||
737 | #define TPS65910_GPIO_PUEN BIT(3) | ||
738 | #define TPS65910_GPIO_CFG BIT(2) | ||
739 | #define TPS65910_GPIO_STS BIT(1) | ||
740 | #define TPS65910_GPIO_SET BIT(0) | ||
741 | |||
742 | /** | ||
743 | * struct tps65910_board | ||
744 | * Board platform data may be used to initialize regulators. | ||
745 | */ | ||
746 | |||
747 | struct tps65910_board { | ||
748 | int gpio_base; | ||
749 | int irq; | ||
750 | int irq_base; | ||
751 | int vmbch_threshold; | ||
752 | int vmbch2_threshold; | ||
753 | struct regulator_init_data *tps65910_pmic_init_data; | ||
754 | }; | ||
755 | |||
756 | /** | ||
757 | * struct tps65910 - tps65910 sub-driver chip access routines | ||
758 | */ | ||
759 | |||
760 | struct tps65910 { | ||
761 | struct device *dev; | ||
762 | struct i2c_client *i2c_client; | ||
763 | struct mutex io_mutex; | ||
764 | unsigned int id; | ||
765 | int (*read)(struct tps65910 *tps65910, u8 reg, int size, void *dest); | ||
766 | int (*write)(struct tps65910 *tps65910, u8 reg, int size, void *src); | ||
767 | |||
768 | /* Client devices */ | ||
769 | struct tps65910_pmic *pmic; | ||
770 | struct tps65910_rtc *rtc; | ||
771 | struct tps65910_power *power; | ||
772 | |||
773 | /* GPIO Handling */ | ||
774 | struct gpio_chip gpio; | ||
775 | |||
776 | /* IRQ Handling */ | ||
777 | struct mutex irq_lock; | ||
778 | int chip_irq; | ||
779 | int irq_base; | ||
780 | int irq_num; | ||
781 | u32 irq_mask; | ||
782 | }; | ||
783 | |||
784 | struct tps65910_platform_data { | ||
785 | int irq; | ||
786 | int irq_base; | ||
787 | }; | ||
788 | |||
789 | int tps65910_set_bits(struct tps65910 *tps65910, u8 reg, u8 mask); | ||
790 | int tps65910_clear_bits(struct tps65910 *tps65910, u8 reg, u8 mask); | ||
791 | void tps65910_gpio_init(struct tps65910 *tps65910, int gpio_base); | ||
792 | int tps65910_irq_init(struct tps65910 *tps65910, int irq, | ||
793 | struct tps65910_platform_data *pdata); | ||
794 | |||
795 | static inline int tps65910_chip_id(struct tps65910 *tps65910) | ||
796 | { | ||
797 | return tps65910->id; | ||
798 | } | ||
799 | |||
800 | #endif /* __LINUX_MFD_TPS65910_H */ | ||
diff --git a/include/linux/mfd/twl4030-codec.h b/include/linux/mfd/twl4030-codec.h index 2ec317c68e59..5cc16bbd1da1 100644 --- a/include/linux/mfd/twl4030-codec.h +++ b/include/linux/mfd/twl4030-codec.h | |||
@@ -1,7 +1,7 @@ | |||
1 | /* | 1 | /* |
2 | * MFD driver for twl4030 codec submodule | 2 | * MFD driver for twl4030 codec submodule |
3 | * | 3 | * |
4 | * Author: Peter Ujfalusi <peter.ujfalusi@nokia.com> | 4 | * Author: Peter Ujfalusi <peter.ujfalusi@ti.com> |
5 | * | 5 | * |
6 | * Copyright: (C) 2009 Nokia Corporation | 6 | * Copyright: (C) 2009 Nokia Corporation |
7 | * | 7 | * |
diff --git a/include/linux/mfd/wm831x/core.h b/include/linux/mfd/wm831x/core.h index 903280d21866..0d515ee1c247 100644 --- a/include/linux/mfd/wm831x/core.h +++ b/include/linux/mfd/wm831x/core.h | |||
@@ -301,30 +301,4 @@ int wm831x_device_suspend(struct wm831x *wm831x); | |||
301 | int wm831x_irq_init(struct wm831x *wm831x, int irq); | 301 | int wm831x_irq_init(struct wm831x *wm831x, int irq); |
302 | void wm831x_irq_exit(struct wm831x *wm831x); | 302 | void wm831x_irq_exit(struct wm831x *wm831x); |
303 | 303 | ||
304 | static inline int __must_check wm831x_request_irq(struct wm831x *wm831x, | ||
305 | unsigned int irq, | ||
306 | irq_handler_t handler, | ||
307 | unsigned long flags, | ||
308 | const char *name, | ||
309 | void *dev) | ||
310 | { | ||
311 | return request_threaded_irq(irq, NULL, handler, flags, name, dev); | ||
312 | } | ||
313 | |||
314 | static inline void wm831x_free_irq(struct wm831x *wm831x, | ||
315 | unsigned int irq, void *dev) | ||
316 | { | ||
317 | free_irq(irq, dev); | ||
318 | } | ||
319 | |||
320 | static inline void wm831x_disable_irq(struct wm831x *wm831x, int irq) | ||
321 | { | ||
322 | disable_irq(irq); | ||
323 | } | ||
324 | |||
325 | static inline void wm831x_enable_irq(struct wm831x *wm831x, int irq) | ||
326 | { | ||
327 | enable_irq(irq); | ||
328 | } | ||
329 | |||
330 | #endif | 304 | #endif |
diff --git a/include/linux/mfd/wm831x/pdata.h b/include/linux/mfd/wm831x/pdata.h index 632d1567a1b6..ff42d700293f 100644 --- a/include/linux/mfd/wm831x/pdata.h +++ b/include/linux/mfd/wm831x/pdata.h | |||
@@ -105,6 +105,9 @@ struct wm831x_watchdog_pdata { | |||
105 | #define WM831X_MAX_LDO 11 | 105 | #define WM831X_MAX_LDO 11 |
106 | #define WM831X_MAX_ISINK 2 | 106 | #define WM831X_MAX_ISINK 2 |
107 | 107 | ||
108 | #define WM831X_GPIO_CONFIGURE 0x10000 | ||
109 | #define WM831X_GPIO_NUM 16 | ||
110 | |||
108 | struct wm831x_pdata { | 111 | struct wm831x_pdata { |
109 | /** Used to distinguish multiple WM831x chips */ | 112 | /** Used to distinguish multiple WM831x chips */ |
110 | int wm831x_num; | 113 | int wm831x_num; |
@@ -119,6 +122,7 @@ struct wm831x_pdata { | |||
119 | 122 | ||
120 | int irq_base; | 123 | int irq_base; |
121 | int gpio_base; | 124 | int gpio_base; |
125 | int gpio_defaults[WM831X_GPIO_NUM]; | ||
122 | struct wm831x_backlight_pdata *backlight; | 126 | struct wm831x_backlight_pdata *backlight; |
123 | struct wm831x_backup_pdata *backup; | 127 | struct wm831x_backup_pdata *backup; |
124 | struct wm831x_battery_pdata *battery; | 128 | struct wm831x_battery_pdata *battery; |
diff --git a/include/linux/mm.h b/include/linux/mm.h index 6507dde38b16..9670f71d7be9 100644 --- a/include/linux/mm.h +++ b/include/linux/mm.h | |||
@@ -153,6 +153,7 @@ extern pgprot_t protection_map[16]; | |||
153 | #define FAULT_FLAG_MKWRITE 0x04 /* Fault was mkwrite of existing pte */ | 153 | #define FAULT_FLAG_MKWRITE 0x04 /* Fault was mkwrite of existing pte */ |
154 | #define FAULT_FLAG_ALLOW_RETRY 0x08 /* Retry fault if blocking */ | 154 | #define FAULT_FLAG_ALLOW_RETRY 0x08 /* Retry fault if blocking */ |
155 | #define FAULT_FLAG_RETRY_NOWAIT 0x10 /* Don't drop mmap_sem and wait when retrying */ | 155 | #define FAULT_FLAG_RETRY_NOWAIT 0x10 /* Don't drop mmap_sem and wait when retrying */ |
156 | #define FAULT_FLAG_KILLABLE 0x20 /* The fault task is in SIGKILL killable region */ | ||
156 | 157 | ||
157 | /* | 158 | /* |
158 | * This interface is used by x86 PAT code to identify a pfn mapping that is | 159 | * This interface is used by x86 PAT code to identify a pfn mapping that is |
@@ -164,12 +165,12 @@ extern pgprot_t protection_map[16]; | |||
164 | */ | 165 | */ |
165 | static inline int is_linear_pfn_mapping(struct vm_area_struct *vma) | 166 | static inline int is_linear_pfn_mapping(struct vm_area_struct *vma) |
166 | { | 167 | { |
167 | return (vma->vm_flags & VM_PFN_AT_MMAP); | 168 | return !!(vma->vm_flags & VM_PFN_AT_MMAP); |
168 | } | 169 | } |
169 | 170 | ||
170 | static inline int is_pfn_mapping(struct vm_area_struct *vma) | 171 | static inline int is_pfn_mapping(struct vm_area_struct *vma) |
171 | { | 172 | { |
172 | return (vma->vm_flags & VM_PFNMAP); | 173 | return !!(vma->vm_flags & VM_PFNMAP); |
173 | } | 174 | } |
174 | 175 | ||
175 | /* | 176 | /* |
@@ -604,10 +605,6 @@ static inline pte_t maybe_mkwrite(pte_t pte, struct vm_area_struct *vma) | |||
604 | #define NODE_NOT_IN_PAGE_FLAGS | 605 | #define NODE_NOT_IN_PAGE_FLAGS |
605 | #endif | 606 | #endif |
606 | 607 | ||
607 | #ifndef PFN_SECTION_SHIFT | ||
608 | #define PFN_SECTION_SHIFT 0 | ||
609 | #endif | ||
610 | |||
611 | /* | 608 | /* |
612 | * Define the bit shifts to access each section. For non-existent | 609 | * Define the bit shifts to access each section. For non-existent |
613 | * sections we define the shift as 0; that plus a 0 mask ensures | 610 | * sections we define the shift as 0; that plus a 0 mask ensures |
@@ -681,6 +678,12 @@ static inline struct zone *page_zone(struct page *page) | |||
681 | } | 678 | } |
682 | 679 | ||
683 | #if defined(CONFIG_SPARSEMEM) && !defined(CONFIG_SPARSEMEM_VMEMMAP) | 680 | #if defined(CONFIG_SPARSEMEM) && !defined(CONFIG_SPARSEMEM_VMEMMAP) |
681 | static inline void set_page_section(struct page *page, unsigned long section) | ||
682 | { | ||
683 | page->flags &= ~(SECTIONS_MASK << SECTIONS_PGSHIFT); | ||
684 | page->flags |= (section & SECTIONS_MASK) << SECTIONS_PGSHIFT; | ||
685 | } | ||
686 | |||
684 | static inline unsigned long page_to_section(struct page *page) | 687 | static inline unsigned long page_to_section(struct page *page) |
685 | { | 688 | { |
686 | return (page->flags >> SECTIONS_PGSHIFT) & SECTIONS_MASK; | 689 | return (page->flags >> SECTIONS_PGSHIFT) & SECTIONS_MASK; |
@@ -699,18 +702,14 @@ static inline void set_page_node(struct page *page, unsigned long node) | |||
699 | page->flags |= (node & NODES_MASK) << NODES_PGSHIFT; | 702 | page->flags |= (node & NODES_MASK) << NODES_PGSHIFT; |
700 | } | 703 | } |
701 | 704 | ||
702 | static inline void set_page_section(struct page *page, unsigned long section) | ||
703 | { | ||
704 | page->flags &= ~(SECTIONS_MASK << SECTIONS_PGSHIFT); | ||
705 | page->flags |= (section & SECTIONS_MASK) << SECTIONS_PGSHIFT; | ||
706 | } | ||
707 | |||
708 | static inline void set_page_links(struct page *page, enum zone_type zone, | 705 | static inline void set_page_links(struct page *page, enum zone_type zone, |
709 | unsigned long node, unsigned long pfn) | 706 | unsigned long node, unsigned long pfn) |
710 | { | 707 | { |
711 | set_page_zone(page, zone); | 708 | set_page_zone(page, zone); |
712 | set_page_node(page, node); | 709 | set_page_node(page, node); |
710 | #if defined(CONFIG_SPARSEMEM) && !defined(CONFIG_SPARSEMEM_VMEMMAP) | ||
713 | set_page_section(page, pfn_to_section_nr(pfn)); | 711 | set_page_section(page, pfn_to_section_nr(pfn)); |
712 | #endif | ||
714 | } | 713 | } |
715 | 714 | ||
716 | /* | 715 | /* |
@@ -862,26 +861,18 @@ extern void pagefault_out_of_memory(void); | |||
862 | #define offset_in_page(p) ((unsigned long)(p) & ~PAGE_MASK) | 861 | #define offset_in_page(p) ((unsigned long)(p) & ~PAGE_MASK) |
863 | 862 | ||
864 | /* | 863 | /* |
865 | * Flags passed to show_mem() and __show_free_areas() to suppress output in | 864 | * Flags passed to show_mem() and show_free_areas() to suppress output in |
866 | * various contexts. | 865 | * various contexts. |
867 | */ | 866 | */ |
868 | #define SHOW_MEM_FILTER_NODES (0x0001u) /* filter disallowed nodes */ | 867 | #define SHOW_MEM_FILTER_NODES (0x0001u) /* filter disallowed nodes */ |
869 | 868 | ||
870 | extern void show_free_areas(void); | 869 | extern void show_free_areas(unsigned int flags); |
871 | extern void __show_free_areas(unsigned int flags); | 870 | extern bool skip_free_areas_node(unsigned int flags, int nid); |
872 | 871 | ||
873 | int shmem_lock(struct file *file, int lock, struct user_struct *user); | 872 | int shmem_lock(struct file *file, int lock, struct user_struct *user); |
874 | struct file *shmem_file_setup(const char *name, loff_t size, unsigned long flags); | 873 | struct file *shmem_file_setup(const char *name, loff_t size, unsigned long flags); |
875 | int shmem_zero_setup(struct vm_area_struct *); | 874 | int shmem_zero_setup(struct vm_area_struct *); |
876 | 875 | ||
877 | #ifndef CONFIG_MMU | ||
878 | extern unsigned long shmem_get_unmapped_area(struct file *file, | ||
879 | unsigned long addr, | ||
880 | unsigned long len, | ||
881 | unsigned long pgoff, | ||
882 | unsigned long flags); | ||
883 | #endif | ||
884 | |||
885 | extern int can_do_mlock(void); | 876 | extern int can_do_mlock(void); |
886 | extern int user_shm_lock(size_t, struct user_struct *); | 877 | extern int user_shm_lock(size_t, struct user_struct *); |
887 | extern void user_shm_unlock(size_t, struct user_struct *); | 878 | extern void user_shm_unlock(size_t, struct user_struct *); |
@@ -894,8 +885,6 @@ struct zap_details { | |||
894 | struct address_space *check_mapping; /* Check page->mapping if set */ | 885 | struct address_space *check_mapping; /* Check page->mapping if set */ |
895 | pgoff_t first_index; /* Lowest page->index to unmap */ | 886 | pgoff_t first_index; /* Lowest page->index to unmap */ |
896 | pgoff_t last_index; /* Highest page->index to unmap */ | 887 | pgoff_t last_index; /* Highest page->index to unmap */ |
897 | spinlock_t *i_mmap_lock; /* For unmap_mapping_range: */ | ||
898 | unsigned long truncate_count; /* Compare vm_truncate_count */ | ||
899 | }; | 888 | }; |
900 | 889 | ||
901 | struct page *vm_normal_page(struct vm_area_struct *vma, unsigned long addr, | 890 | struct page *vm_normal_page(struct vm_area_struct *vma, unsigned long addr, |
@@ -905,7 +894,7 @@ int zap_vma_ptes(struct vm_area_struct *vma, unsigned long address, | |||
905 | unsigned long size); | 894 | unsigned long size); |
906 | unsigned long zap_page_range(struct vm_area_struct *vma, unsigned long address, | 895 | unsigned long zap_page_range(struct vm_area_struct *vma, unsigned long address, |
907 | unsigned long size, struct zap_details *); | 896 | unsigned long size, struct zap_details *); |
908 | unsigned long unmap_vmas(struct mmu_gather **tlb, | 897 | unsigned long unmap_vmas(struct mmu_gather *tlb, |
909 | struct vm_area_struct *start_vma, unsigned long start_addr, | 898 | struct vm_area_struct *start_vma, unsigned long start_addr, |
910 | unsigned long end_addr, unsigned long *nr_accounted, | 899 | unsigned long end_addr, unsigned long *nr_accounted, |
911 | struct zap_details *); | 900 | struct zap_details *); |
@@ -1056,65 +1045,35 @@ int __get_user_pages_fast(unsigned long start, int nr_pages, int write, | |||
1056 | /* | 1045 | /* |
1057 | * per-process(per-mm_struct) statistics. | 1046 | * per-process(per-mm_struct) statistics. |
1058 | */ | 1047 | */ |
1059 | #if defined(SPLIT_RSS_COUNTING) | ||
1060 | /* | ||
1061 | * The mm counters are not protected by its page_table_lock, | ||
1062 | * so must be incremented atomically. | ||
1063 | */ | ||
1064 | static inline void set_mm_counter(struct mm_struct *mm, int member, long value) | 1048 | static inline void set_mm_counter(struct mm_struct *mm, int member, long value) |
1065 | { | 1049 | { |
1066 | atomic_long_set(&mm->rss_stat.count[member], value); | 1050 | atomic_long_set(&mm->rss_stat.count[member], value); |
1067 | } | 1051 | } |
1068 | 1052 | ||
1053 | #if defined(SPLIT_RSS_COUNTING) | ||
1069 | unsigned long get_mm_counter(struct mm_struct *mm, int member); | 1054 | unsigned long get_mm_counter(struct mm_struct *mm, int member); |
1070 | 1055 | #else | |
1071 | static inline void add_mm_counter(struct mm_struct *mm, int member, long value) | ||
1072 | { | ||
1073 | atomic_long_add(value, &mm->rss_stat.count[member]); | ||
1074 | } | ||
1075 | |||
1076 | static inline void inc_mm_counter(struct mm_struct *mm, int member) | ||
1077 | { | ||
1078 | atomic_long_inc(&mm->rss_stat.count[member]); | ||
1079 | } | ||
1080 | |||
1081 | static inline void dec_mm_counter(struct mm_struct *mm, int member) | ||
1082 | { | ||
1083 | atomic_long_dec(&mm->rss_stat.count[member]); | ||
1084 | } | ||
1085 | |||
1086 | #else /* !USE_SPLIT_PTLOCKS */ | ||
1087 | /* | ||
1088 | * The mm counters are protected by its page_table_lock, | ||
1089 | * so can be incremented directly. | ||
1090 | */ | ||
1091 | static inline void set_mm_counter(struct mm_struct *mm, int member, long value) | ||
1092 | { | ||
1093 | mm->rss_stat.count[member] = value; | ||
1094 | } | ||
1095 | |||
1096 | static inline unsigned long get_mm_counter(struct mm_struct *mm, int member) | 1056 | static inline unsigned long get_mm_counter(struct mm_struct *mm, int member) |
1097 | { | 1057 | { |
1098 | return mm->rss_stat.count[member]; | 1058 | return atomic_long_read(&mm->rss_stat.count[member]); |
1099 | } | 1059 | } |
1060 | #endif | ||
1100 | 1061 | ||
1101 | static inline void add_mm_counter(struct mm_struct *mm, int member, long value) | 1062 | static inline void add_mm_counter(struct mm_struct *mm, int member, long value) |
1102 | { | 1063 | { |
1103 | mm->rss_stat.count[member] += value; | 1064 | atomic_long_add(value, &mm->rss_stat.count[member]); |
1104 | } | 1065 | } |
1105 | 1066 | ||
1106 | static inline void inc_mm_counter(struct mm_struct *mm, int member) | 1067 | static inline void inc_mm_counter(struct mm_struct *mm, int member) |
1107 | { | 1068 | { |
1108 | mm->rss_stat.count[member]++; | 1069 | atomic_long_inc(&mm->rss_stat.count[member]); |
1109 | } | 1070 | } |
1110 | 1071 | ||
1111 | static inline void dec_mm_counter(struct mm_struct *mm, int member) | 1072 | static inline void dec_mm_counter(struct mm_struct *mm, int member) |
1112 | { | 1073 | { |
1113 | mm->rss_stat.count[member]--; | 1074 | atomic_long_dec(&mm->rss_stat.count[member]); |
1114 | } | 1075 | } |
1115 | 1076 | ||
1116 | #endif /* !USE_SPLIT_PTLOCKS */ | ||
1117 | |||
1118 | static inline unsigned long get_mm_rss(struct mm_struct *mm) | 1077 | static inline unsigned long get_mm_rss(struct mm_struct *mm) |
1119 | { | 1078 | { |
1120 | return get_mm_counter(mm, MM_FILEPAGES) + | 1079 | return get_mm_counter(mm, MM_FILEPAGES) + |
@@ -1163,13 +1122,24 @@ static inline void sync_mm_rss(struct task_struct *task, struct mm_struct *mm) | |||
1163 | #endif | 1122 | #endif |
1164 | 1123 | ||
1165 | /* | 1124 | /* |
1125 | * This struct is used to pass information from page reclaim to the shrinkers. | ||
1126 | * We consolidate the values for easier extention later. | ||
1127 | */ | ||
1128 | struct shrink_control { | ||
1129 | gfp_t gfp_mask; | ||
1130 | |||
1131 | /* How many slab objects shrinker() should scan and try to reclaim */ | ||
1132 | unsigned long nr_to_scan; | ||
1133 | }; | ||
1134 | |||
1135 | /* | ||
1166 | * A callback you can register to apply pressure to ageable caches. | 1136 | * A callback you can register to apply pressure to ageable caches. |
1167 | * | 1137 | * |
1168 | * 'shrink' is passed a count 'nr_to_scan' and a 'gfpmask'. It should | 1138 | * 'sc' is passed shrink_control which includes a count 'nr_to_scan' |
1169 | * look through the least-recently-used 'nr_to_scan' entries and | 1139 | * and a 'gfpmask'. It should look through the least-recently-used |
1170 | * attempt to free them up. It should return the number of objects | 1140 | * 'nr_to_scan' entries and attempt to free them up. It should return |
1171 | * which remain in the cache. If it returns -1, it means it cannot do | 1141 | * the number of objects which remain in the cache. If it returns -1, it means |
1172 | * any scanning at this time (eg. there is a risk of deadlock). | 1142 | * it cannot do any scanning at this time (eg. there is a risk of deadlock). |
1173 | * | 1143 | * |
1174 | * The 'gfpmask' refers to the allocation we are currently trying to | 1144 | * The 'gfpmask' refers to the allocation we are currently trying to |
1175 | * fulfil. | 1145 | * fulfil. |
@@ -1178,7 +1148,7 @@ static inline void sync_mm_rss(struct task_struct *task, struct mm_struct *mm) | |||
1178 | * querying the cache size, so a fastpath for that case is appropriate. | 1148 | * querying the cache size, so a fastpath for that case is appropriate. |
1179 | */ | 1149 | */ |
1180 | struct shrinker { | 1150 | struct shrinker { |
1181 | int (*shrink)(struct shrinker *, int nr_to_scan, gfp_t gfp_mask); | 1151 | int (*shrink)(struct shrinker *, struct shrink_control *sc); |
1182 | int seeks; /* seeks to recreate an obj */ | 1152 | int seeks; /* seeks to recreate an obj */ |
1183 | 1153 | ||
1184 | /* These are for internal use */ | 1154 | /* These are for internal use */ |
@@ -1380,7 +1350,7 @@ extern void set_dma_reserve(unsigned long new_dma_reserve); | |||
1380 | extern void memmap_init_zone(unsigned long, int, unsigned long, | 1350 | extern void memmap_init_zone(unsigned long, int, unsigned long, |
1381 | unsigned long, enum memmap_context); | 1351 | unsigned long, enum memmap_context); |
1382 | extern void setup_per_zone_wmarks(void); | 1352 | extern void setup_per_zone_wmarks(void); |
1383 | extern void calculate_zone_inactive_ratio(struct zone *zone); | 1353 | extern int __meminit init_per_zone_wmark_min(void); |
1384 | extern void mem_init(void); | 1354 | extern void mem_init(void); |
1385 | extern void __init mmap_init(void); | 1355 | extern void __init mmap_init(void); |
1386 | extern void show_mem(unsigned int flags); | 1356 | extern void show_mem(unsigned int flags); |
@@ -1388,6 +1358,8 @@ extern void si_meminfo(struct sysinfo * val); | |||
1388 | extern void si_meminfo_node(struct sysinfo *val, int nid); | 1358 | extern void si_meminfo_node(struct sysinfo *val, int nid); |
1389 | extern int after_bootmem; | 1359 | extern int after_bootmem; |
1390 | 1360 | ||
1361 | extern void warn_alloc_failed(gfp_t gfp_mask, int order, const char *fmt, ...); | ||
1362 | |||
1391 | extern void setup_per_cpu_pageset(void); | 1363 | extern void setup_per_cpu_pageset(void); |
1392 | 1364 | ||
1393 | extern void zone_pcp_update(struct zone *zone); | 1365 | extern void zone_pcp_update(struct zone *zone); |
@@ -1436,17 +1408,11 @@ extern void exit_mmap(struct mm_struct *); | |||
1436 | extern int mm_take_all_locks(struct mm_struct *mm); | 1408 | extern int mm_take_all_locks(struct mm_struct *mm); |
1437 | extern void mm_drop_all_locks(struct mm_struct *mm); | 1409 | extern void mm_drop_all_locks(struct mm_struct *mm); |
1438 | 1410 | ||
1439 | #ifdef CONFIG_PROC_FS | ||
1440 | /* From fs/proc/base.c. callers must _not_ hold the mm's exe_file_lock */ | 1411 | /* From fs/proc/base.c. callers must _not_ hold the mm's exe_file_lock */ |
1441 | extern void added_exe_file_vma(struct mm_struct *mm); | 1412 | extern void added_exe_file_vma(struct mm_struct *mm); |
1442 | extern void removed_exe_file_vma(struct mm_struct *mm); | 1413 | extern void removed_exe_file_vma(struct mm_struct *mm); |
1443 | #else | 1414 | extern void set_mm_exe_file(struct mm_struct *mm, struct file *new_exe_file); |
1444 | static inline void added_exe_file_vma(struct mm_struct *mm) | 1415 | extern struct file *get_mm_exe_file(struct mm_struct *mm); |
1445 | {} | ||
1446 | |||
1447 | static inline void removed_exe_file_vma(struct mm_struct *mm) | ||
1448 | {} | ||
1449 | #endif /* CONFIG_PROC_FS */ | ||
1450 | 1416 | ||
1451 | extern int may_expand_vm(struct mm_struct *mm, unsigned long npages); | 1417 | extern int may_expand_vm(struct mm_struct *mm, unsigned long npages); |
1452 | extern int install_special_mapping(struct mm_struct *mm, | 1418 | extern int install_special_mapping(struct mm_struct *mm, |
@@ -1460,7 +1426,7 @@ extern unsigned long do_mmap_pgoff(struct file *file, unsigned long addr, | |||
1460 | unsigned long flag, unsigned long pgoff); | 1426 | unsigned long flag, unsigned long pgoff); |
1461 | extern unsigned long mmap_region(struct file *file, unsigned long addr, | 1427 | extern unsigned long mmap_region(struct file *file, unsigned long addr, |
1462 | unsigned long len, unsigned long flags, | 1428 | unsigned long len, unsigned long flags, |
1463 | unsigned int vm_flags, unsigned long pgoff); | 1429 | vm_flags_t vm_flags, unsigned long pgoff); |
1464 | 1430 | ||
1465 | static inline unsigned long do_mmap(struct file *file, unsigned long addr, | 1431 | static inline unsigned long do_mmap(struct file *file, unsigned long addr, |
1466 | unsigned long len, unsigned long prot, | 1432 | unsigned long len, unsigned long prot, |
@@ -1517,15 +1483,17 @@ unsigned long ra_submit(struct file_ra_state *ra, | |||
1517 | struct address_space *mapping, | 1483 | struct address_space *mapping, |
1518 | struct file *filp); | 1484 | struct file *filp); |
1519 | 1485 | ||
1520 | /* Do stack extension */ | 1486 | /* Generic expand stack which grows the stack according to GROWS{UP,DOWN} */ |
1521 | extern int expand_stack(struct vm_area_struct *vma, unsigned long address); | 1487 | extern int expand_stack(struct vm_area_struct *vma, unsigned long address); |
1488 | |||
1489 | /* CONFIG_STACK_GROWSUP still needs to to grow downwards at some places */ | ||
1490 | extern int expand_downwards(struct vm_area_struct *vma, | ||
1491 | unsigned long address); | ||
1522 | #if VM_GROWSUP | 1492 | #if VM_GROWSUP |
1523 | extern int expand_upwards(struct vm_area_struct *vma, unsigned long address); | 1493 | extern int expand_upwards(struct vm_area_struct *vma, unsigned long address); |
1524 | #else | 1494 | #else |
1525 | #define expand_upwards(vma, address) do { } while (0) | 1495 | #define expand_upwards(vma, address) do { } while (0) |
1526 | #endif | 1496 | #endif |
1527 | extern int expand_stack_downwards(struct vm_area_struct *vma, | ||
1528 | unsigned long address); | ||
1529 | 1497 | ||
1530 | /* Look up the first VMA which satisfies addr < vm_end, NULL if none. */ | 1498 | /* Look up the first VMA which satisfies addr < vm_end, NULL if none. */ |
1531 | extern struct vm_area_struct * find_vma(struct mm_struct * mm, unsigned long addr); | 1499 | extern struct vm_area_struct * find_vma(struct mm_struct * mm, unsigned long addr); |
@@ -1627,8 +1595,9 @@ int in_gate_area_no_mm(unsigned long addr); | |||
1627 | 1595 | ||
1628 | int drop_caches_sysctl_handler(struct ctl_table *, int, | 1596 | int drop_caches_sysctl_handler(struct ctl_table *, int, |
1629 | void __user *, size_t *, loff_t *); | 1597 | void __user *, size_t *, loff_t *); |
1630 | unsigned long shrink_slab(unsigned long scanned, gfp_t gfp_mask, | 1598 | unsigned long shrink_slab(struct shrink_control *shrink, |
1631 | unsigned long lru_pages); | 1599 | unsigned long nr_pages_scanned, |
1600 | unsigned long lru_pages); | ||
1632 | 1601 | ||
1633 | #ifndef CONFIG_MMU | 1602 | #ifndef CONFIG_MMU |
1634 | #define randomize_va_space 0 | 1603 | #define randomize_va_space 0 |
diff --git a/include/linux/mm_types.h b/include/linux/mm_types.h index 02aa5619709b..027935c86c68 100644 --- a/include/linux/mm_types.h +++ b/include/linux/mm_types.h | |||
@@ -102,6 +102,8 @@ struct page { | |||
102 | #endif | 102 | #endif |
103 | }; | 103 | }; |
104 | 104 | ||
105 | typedef unsigned long __nocast vm_flags_t; | ||
106 | |||
105 | /* | 107 | /* |
106 | * A region containing a mapping of a non-memory backed file under NOMMU | 108 | * A region containing a mapping of a non-memory backed file under NOMMU |
107 | * conditions. These are held in a global tree and are pinned by the VMAs that | 109 | * conditions. These are held in a global tree and are pinned by the VMAs that |
@@ -109,7 +111,7 @@ struct page { | |||
109 | */ | 111 | */ |
110 | struct vm_region { | 112 | struct vm_region { |
111 | struct rb_node vm_rb; /* link in global region tree */ | 113 | struct rb_node vm_rb; /* link in global region tree */ |
112 | unsigned long vm_flags; /* VMA vm_flags */ | 114 | vm_flags_t vm_flags; /* VMA vm_flags */ |
113 | unsigned long vm_start; /* start address of region */ | 115 | unsigned long vm_start; /* start address of region */ |
114 | unsigned long vm_end; /* region initialised to here */ | 116 | unsigned long vm_end; /* region initialised to here */ |
115 | unsigned long vm_top; /* region allocated to here */ | 117 | unsigned long vm_top; /* region allocated to here */ |
@@ -175,7 +177,6 @@ struct vm_area_struct { | |||
175 | units, *not* PAGE_CACHE_SIZE */ | 177 | units, *not* PAGE_CACHE_SIZE */ |
176 | struct file * vm_file; /* File we map to (can be NULL). */ | 178 | struct file * vm_file; /* File we map to (can be NULL). */ |
177 | void * vm_private_data; /* was vm_pte (shared mem) */ | 179 | void * vm_private_data; /* was vm_pte (shared mem) */ |
178 | unsigned long vm_truncate_count;/* truncate_count or restart_addr */ | ||
179 | 180 | ||
180 | #ifndef CONFIG_MMU | 181 | #ifndef CONFIG_MMU |
181 | struct vm_region *vm_region; /* NOMMU mapping region */ | 182 | struct vm_region *vm_region; /* NOMMU mapping region */ |
@@ -205,19 +206,16 @@ enum { | |||
205 | 206 | ||
206 | #if USE_SPLIT_PTLOCKS && defined(CONFIG_MMU) | 207 | #if USE_SPLIT_PTLOCKS && defined(CONFIG_MMU) |
207 | #define SPLIT_RSS_COUNTING | 208 | #define SPLIT_RSS_COUNTING |
208 | struct mm_rss_stat { | ||
209 | atomic_long_t count[NR_MM_COUNTERS]; | ||
210 | }; | ||
211 | /* per-thread cached information, */ | 209 | /* per-thread cached information, */ |
212 | struct task_rss_stat { | 210 | struct task_rss_stat { |
213 | int events; /* for synchronization threshold */ | 211 | int events; /* for synchronization threshold */ |
214 | int count[NR_MM_COUNTERS]; | 212 | int count[NR_MM_COUNTERS]; |
215 | }; | 213 | }; |
216 | #else /* !USE_SPLIT_PTLOCKS */ | 214 | #endif /* USE_SPLIT_PTLOCKS */ |
215 | |||
217 | struct mm_rss_stat { | 216 | struct mm_rss_stat { |
218 | unsigned long count[NR_MM_COUNTERS]; | 217 | atomic_long_t count[NR_MM_COUNTERS]; |
219 | }; | 218 | }; |
220 | #endif /* !USE_SPLIT_PTLOCKS */ | ||
221 | 219 | ||
222 | struct mm_struct { | 220 | struct mm_struct { |
223 | struct vm_area_struct * mmap; /* list of VMAs */ | 221 | struct vm_area_struct * mmap; /* list of VMAs */ |
@@ -266,7 +264,7 @@ struct mm_struct { | |||
266 | 264 | ||
267 | struct linux_binfmt *binfmt; | 265 | struct linux_binfmt *binfmt; |
268 | 266 | ||
269 | cpumask_t cpu_vm_mask; | 267 | cpumask_var_t cpu_vm_mask_var; |
270 | 268 | ||
271 | /* Architecture-specific MM context */ | 269 | /* Architecture-specific MM context */ |
272 | mm_context_t context; | 270 | mm_context_t context; |
@@ -306,20 +304,31 @@ struct mm_struct { | |||
306 | struct task_struct __rcu *owner; | 304 | struct task_struct __rcu *owner; |
307 | #endif | 305 | #endif |
308 | 306 | ||
309 | #ifdef CONFIG_PROC_FS | ||
310 | /* store ref to file /proc/<pid>/exe symlink points to */ | 307 | /* store ref to file /proc/<pid>/exe symlink points to */ |
311 | struct file *exe_file; | 308 | struct file *exe_file; |
312 | unsigned long num_exe_file_vmas; | 309 | unsigned long num_exe_file_vmas; |
313 | #endif | ||
314 | #ifdef CONFIG_MMU_NOTIFIER | 310 | #ifdef CONFIG_MMU_NOTIFIER |
315 | struct mmu_notifier_mm *mmu_notifier_mm; | 311 | struct mmu_notifier_mm *mmu_notifier_mm; |
316 | #endif | 312 | #endif |
317 | #ifdef CONFIG_TRANSPARENT_HUGEPAGE | 313 | #ifdef CONFIG_TRANSPARENT_HUGEPAGE |
318 | pgtable_t pmd_huge_pte; /* protected by page_table_lock */ | 314 | pgtable_t pmd_huge_pte; /* protected by page_table_lock */ |
319 | #endif | 315 | #endif |
316 | #ifdef CONFIG_CPUMASK_OFFSTACK | ||
317 | struct cpumask cpumask_allocation; | ||
318 | #endif | ||
320 | }; | 319 | }; |
321 | 320 | ||
321 | static inline void mm_init_cpumask(struct mm_struct *mm) | ||
322 | { | ||
323 | #ifdef CONFIG_CPUMASK_OFFSTACK | ||
324 | mm->cpu_vm_mask_var = &mm->cpumask_allocation; | ||
325 | #endif | ||
326 | } | ||
327 | |||
322 | /* Future-safe accessor for struct mm_struct's cpu_vm_mask. */ | 328 | /* Future-safe accessor for struct mm_struct's cpu_vm_mask. */ |
323 | #define mm_cpumask(mm) (&(mm)->cpu_vm_mask) | 329 | static inline cpumask_t *mm_cpumask(struct mm_struct *mm) |
330 | { | ||
331 | return mm->cpu_vm_mask_var; | ||
332 | } | ||
324 | 333 | ||
325 | #endif /* _LINUX_MM_TYPES_H */ | 334 | #endif /* _LINUX_MM_TYPES_H */ |
diff --git a/include/linux/mmc/Kbuild b/include/linux/mmc/Kbuild new file mode 100644 index 000000000000..1fb26448faa9 --- /dev/null +++ b/include/linux/mmc/Kbuild | |||
@@ -0,0 +1 @@ | |||
header-y += ioctl.h | |||
diff --git a/include/linux/mmc/card.h b/include/linux/mmc/card.h index adb4888248be..c6927a4d157f 100644 --- a/include/linux/mmc/card.h +++ b/include/linux/mmc/card.h | |||
@@ -11,6 +11,7 @@ | |||
11 | #define LINUX_MMC_CARD_H | 11 | #define LINUX_MMC_CARD_H |
12 | 12 | ||
13 | #include <linux/mmc/core.h> | 13 | #include <linux/mmc/core.h> |
14 | #include <linux/mod_devicetable.h> | ||
14 | 15 | ||
15 | struct mmc_cid { | 16 | struct mmc_cid { |
16 | unsigned int manfid; | 17 | unsigned int manfid; |
@@ -29,6 +30,7 @@ struct mmc_csd { | |||
29 | unsigned short cmdclass; | 30 | unsigned short cmdclass; |
30 | unsigned short tacc_clks; | 31 | unsigned short tacc_clks; |
31 | unsigned int tacc_ns; | 32 | unsigned int tacc_ns; |
33 | unsigned int c_size; | ||
32 | unsigned int r2w_factor; | 34 | unsigned int r2w_factor; |
33 | unsigned int max_dtr; | 35 | unsigned int max_dtr; |
34 | unsigned int erase_size; /* In sectors */ | 36 | unsigned int erase_size; /* In sectors */ |
@@ -45,6 +47,10 @@ struct mmc_ext_csd { | |||
45 | u8 rev; | 47 | u8 rev; |
46 | u8 erase_group_def; | 48 | u8 erase_group_def; |
47 | u8 sec_feature_support; | 49 | u8 sec_feature_support; |
50 | u8 rel_sectors; | ||
51 | u8 rel_param; | ||
52 | u8 part_config; | ||
53 | unsigned int part_time; /* Units: ms */ | ||
48 | unsigned int sa_timeout; /* Units: 100ns */ | 54 | unsigned int sa_timeout; /* Units: 100ns */ |
49 | unsigned int hs_max_dtr; | 55 | unsigned int hs_max_dtr; |
50 | unsigned int sectors; | 56 | unsigned int sectors; |
@@ -57,13 +63,18 @@ struct mmc_ext_csd { | |||
57 | bool enhanced_area_en; /* enable bit */ | 63 | bool enhanced_area_en; /* enable bit */ |
58 | unsigned long long enhanced_area_offset; /* Units: Byte */ | 64 | unsigned long long enhanced_area_offset; /* Units: Byte */ |
59 | unsigned int enhanced_area_size; /* Units: KB */ | 65 | unsigned int enhanced_area_size; /* Units: KB */ |
66 | unsigned int boot_size; /* in bytes */ | ||
60 | }; | 67 | }; |
61 | 68 | ||
62 | struct sd_scr { | 69 | struct sd_scr { |
63 | unsigned char sda_vsn; | 70 | unsigned char sda_vsn; |
71 | unsigned char sda_spec3; | ||
64 | unsigned char bus_widths; | 72 | unsigned char bus_widths; |
65 | #define SD_SCR_BUS_WIDTH_1 (1<<0) | 73 | #define SD_SCR_BUS_WIDTH_1 (1<<0) |
66 | #define SD_SCR_BUS_WIDTH_4 (1<<2) | 74 | #define SD_SCR_BUS_WIDTH_4 (1<<2) |
75 | unsigned char cmds; | ||
76 | #define SD_SCR_CMD20_SUPPORT (1<<0) | ||
77 | #define SD_SCR_CMD23_SUPPORT (1<<1) | ||
67 | }; | 78 | }; |
68 | 79 | ||
69 | struct sd_ssr { | 80 | struct sd_ssr { |
@@ -74,6 +85,39 @@ struct sd_ssr { | |||
74 | 85 | ||
75 | struct sd_switch_caps { | 86 | struct sd_switch_caps { |
76 | unsigned int hs_max_dtr; | 87 | unsigned int hs_max_dtr; |
88 | unsigned int uhs_max_dtr; | ||
89 | #define UHS_SDR104_MAX_DTR 208000000 | ||
90 | #define UHS_SDR50_MAX_DTR 100000000 | ||
91 | #define UHS_DDR50_MAX_DTR 50000000 | ||
92 | #define UHS_SDR25_MAX_DTR UHS_DDR50_MAX_DTR | ||
93 | #define UHS_SDR12_MAX_DTR 25000000 | ||
94 | unsigned int sd3_bus_mode; | ||
95 | #define UHS_SDR12_BUS_SPEED 0 | ||
96 | #define UHS_SDR25_BUS_SPEED 1 | ||
97 | #define UHS_SDR50_BUS_SPEED 2 | ||
98 | #define UHS_SDR104_BUS_SPEED 3 | ||
99 | #define UHS_DDR50_BUS_SPEED 4 | ||
100 | |||
101 | #define SD_MODE_UHS_SDR12 (1 << UHS_SDR12_BUS_SPEED) | ||
102 | #define SD_MODE_UHS_SDR25 (1 << UHS_SDR25_BUS_SPEED) | ||
103 | #define SD_MODE_UHS_SDR50 (1 << UHS_SDR50_BUS_SPEED) | ||
104 | #define SD_MODE_UHS_SDR104 (1 << UHS_SDR104_BUS_SPEED) | ||
105 | #define SD_MODE_UHS_DDR50 (1 << UHS_DDR50_BUS_SPEED) | ||
106 | unsigned int sd3_drv_type; | ||
107 | #define SD_DRIVER_TYPE_B 0x01 | ||
108 | #define SD_DRIVER_TYPE_A 0x02 | ||
109 | #define SD_DRIVER_TYPE_C 0x04 | ||
110 | #define SD_DRIVER_TYPE_D 0x08 | ||
111 | unsigned int sd3_curr_limit; | ||
112 | #define SD_SET_CURRENT_LIMIT_200 0 | ||
113 | #define SD_SET_CURRENT_LIMIT_400 1 | ||
114 | #define SD_SET_CURRENT_LIMIT_600 2 | ||
115 | #define SD_SET_CURRENT_LIMIT_800 3 | ||
116 | |||
117 | #define SD_MAX_CURRENT_200 (1 << SD_SET_CURRENT_LIMIT_200) | ||
118 | #define SD_MAX_CURRENT_400 (1 << SD_SET_CURRENT_LIMIT_400) | ||
119 | #define SD_MAX_CURRENT_600 (1 << SD_SET_CURRENT_LIMIT_600) | ||
120 | #define SD_MAX_CURRENT_800 (1 << SD_SET_CURRENT_LIMIT_800) | ||
77 | }; | 121 | }; |
78 | 122 | ||
79 | struct sdio_cccr { | 123 | struct sdio_cccr { |
@@ -118,6 +162,8 @@ struct mmc_card { | |||
118 | #define MMC_STATE_HIGHSPEED (1<<2) /* card is in high speed mode */ | 162 | #define MMC_STATE_HIGHSPEED (1<<2) /* card is in high speed mode */ |
119 | #define MMC_STATE_BLOCKADDR (1<<3) /* card uses block-addressing */ | 163 | #define MMC_STATE_BLOCKADDR (1<<3) /* card uses block-addressing */ |
120 | #define MMC_STATE_HIGHSPEED_DDR (1<<4) /* card is in high speed mode */ | 164 | #define MMC_STATE_HIGHSPEED_DDR (1<<4) /* card is in high speed mode */ |
165 | #define MMC_STATE_ULTRAHIGHSPEED (1<<5) /* card is in ultra high speed mode */ | ||
166 | #define MMC_CARD_SDXC (1<<6) /* card is SDXC */ | ||
121 | unsigned int quirks; /* card quirks */ | 167 | unsigned int quirks; /* card quirks */ |
122 | #define MMC_QUIRK_LENIENT_FN0 (1<<0) /* allow SDIO FN0 writes outside of the VS CCCR range */ | 168 | #define MMC_QUIRK_LENIENT_FN0 (1<<0) /* allow SDIO FN0 writes outside of the VS CCCR range */ |
123 | #define MMC_QUIRK_BLKSZ_FOR_BYTE_MODE (1<<1) /* use func->cur_blksize */ | 169 | #define MMC_QUIRK_BLKSZ_FOR_BYTE_MODE (1<<1) /* use func->cur_blksize */ |
@@ -125,6 +171,10 @@ struct mmc_card { | |||
125 | #define MMC_QUIRK_NONSTD_SDIO (1<<2) /* non-standard SDIO card attached */ | 171 | #define MMC_QUIRK_NONSTD_SDIO (1<<2) /* non-standard SDIO card attached */ |
126 | /* (missing CIA registers) */ | 172 | /* (missing CIA registers) */ |
127 | #define MMC_QUIRK_BROKEN_CLK_GATING (1<<3) /* clock gating the sdio bus will make card fail */ | 173 | #define MMC_QUIRK_BROKEN_CLK_GATING (1<<3) /* clock gating the sdio bus will make card fail */ |
174 | #define MMC_QUIRK_NONSTD_FUNC_IF (1<<4) /* SDIO card has nonstd function interfaces */ | ||
175 | #define MMC_QUIRK_DISABLE_CD (1<<5) /* disconnect CD/DAT[3] resistor */ | ||
176 | #define MMC_QUIRK_INAND_CMD38 (1<<6) /* iNAND devices have broken CMD38 */ | ||
177 | #define MMC_QUIRK_BLK_NO_CMD23 (1<<7) /* Avoid CMD23 for regular multiblock */ | ||
128 | 178 | ||
129 | unsigned int erase_size; /* erase size in sectors */ | 179 | unsigned int erase_size; /* erase size in sectors */ |
130 | unsigned int erase_shift; /* if erase unit is power 2 */ | 180 | unsigned int erase_shift; /* if erase unit is power 2 */ |
@@ -145,14 +195,100 @@ struct mmc_card { | |||
145 | struct sdio_cccr cccr; /* common card info */ | 195 | struct sdio_cccr cccr; /* common card info */ |
146 | struct sdio_cis cis; /* common tuple info */ | 196 | struct sdio_cis cis; /* common tuple info */ |
147 | struct sdio_func *sdio_func[SDIO_MAX_FUNCS]; /* SDIO functions (devices) */ | 197 | struct sdio_func *sdio_func[SDIO_MAX_FUNCS]; /* SDIO functions (devices) */ |
198 | struct sdio_func *sdio_single_irq; /* SDIO function when only one IRQ active */ | ||
148 | unsigned num_info; /* number of info strings */ | 199 | unsigned num_info; /* number of info strings */ |
149 | const char **info; /* info strings */ | 200 | const char **info; /* info strings */ |
150 | struct sdio_func_tuple *tuples; /* unknown common tuples */ | 201 | struct sdio_func_tuple *tuples; /* unknown common tuples */ |
151 | 202 | ||
203 | unsigned int sd_bus_speed; /* Bus Speed Mode set for the card */ | ||
204 | |||
152 | struct dentry *debugfs_root; | 205 | struct dentry *debugfs_root; |
153 | }; | 206 | }; |
154 | 207 | ||
155 | void mmc_fixup_device(struct mmc_card *dev); | 208 | /* |
209 | * The world is not perfect and supplies us with broken mmc/sdio devices. | ||
210 | * For at least some of these bugs we need a work-around. | ||
211 | */ | ||
212 | |||
213 | struct mmc_fixup { | ||
214 | /* CID-specific fields. */ | ||
215 | const char *name; | ||
216 | |||
217 | /* Valid revision range */ | ||
218 | u64 rev_start, rev_end; | ||
219 | |||
220 | unsigned int manfid; | ||
221 | unsigned short oemid; | ||
222 | |||
223 | /* SDIO-specfic fields. You can use SDIO_ANY_ID here of course */ | ||
224 | u16 cis_vendor, cis_device; | ||
225 | |||
226 | void (*vendor_fixup)(struct mmc_card *card, int data); | ||
227 | int data; | ||
228 | }; | ||
229 | |||
230 | #define CID_MANFID_ANY (-1u) | ||
231 | #define CID_OEMID_ANY ((unsigned short) -1) | ||
232 | #define CID_NAME_ANY (NULL) | ||
233 | |||
234 | #define END_FIXUP { 0 } | ||
235 | |||
236 | #define _FIXUP_EXT(_name, _manfid, _oemid, _rev_start, _rev_end, \ | ||
237 | _cis_vendor, _cis_device, \ | ||
238 | _fixup, _data) \ | ||
239 | { \ | ||
240 | .name = (_name), \ | ||
241 | .manfid = (_manfid), \ | ||
242 | .oemid = (_oemid), \ | ||
243 | .rev_start = (_rev_start), \ | ||
244 | .rev_end = (_rev_end), \ | ||
245 | .cis_vendor = (_cis_vendor), \ | ||
246 | .cis_device = (_cis_device), \ | ||
247 | .vendor_fixup = (_fixup), \ | ||
248 | .data = (_data), \ | ||
249 | } | ||
250 | |||
251 | #define MMC_FIXUP_REV(_name, _manfid, _oemid, _rev_start, _rev_end, \ | ||
252 | _fixup, _data) \ | ||
253 | _FIXUP_EXT(_name, _manfid, \ | ||
254 | _oemid, _rev_start, _rev_end, \ | ||
255 | SDIO_ANY_ID, SDIO_ANY_ID, \ | ||
256 | _fixup, _data) \ | ||
257 | |||
258 | #define MMC_FIXUP(_name, _manfid, _oemid, _fixup, _data) \ | ||
259 | MMC_FIXUP_REV(_name, _manfid, _oemid, 0, -1ull, _fixup, _data) | ||
260 | |||
261 | #define SDIO_FIXUP(_vendor, _device, _fixup, _data) \ | ||
262 | _FIXUP_EXT(CID_NAME_ANY, CID_MANFID_ANY, \ | ||
263 | CID_OEMID_ANY, 0, -1ull, \ | ||
264 | _vendor, _device, \ | ||
265 | _fixup, _data) \ | ||
266 | |||
267 | #define cid_rev(hwrev, fwrev, year, month) \ | ||
268 | (((u64) hwrev) << 40 | \ | ||
269 | ((u64) fwrev) << 32 | \ | ||
270 | ((u64) year) << 16 | \ | ||
271 | ((u64) month)) | ||
272 | |||
273 | #define cid_rev_card(card) \ | ||
274 | cid_rev(card->cid.hwrev, \ | ||
275 | card->cid.fwrev, \ | ||
276 | card->cid.year, \ | ||
277 | card->cid.month) | ||
278 | |||
279 | /* | ||
280 | * Unconditionally quirk add/remove. | ||
281 | */ | ||
282 | |||
283 | static inline void __maybe_unused add_quirk(struct mmc_card *card, int data) | ||
284 | { | ||
285 | card->quirks |= data; | ||
286 | } | ||
287 | |||
288 | static inline void __maybe_unused remove_quirk(struct mmc_card *card, int data) | ||
289 | { | ||
290 | card->quirks &= ~data; | ||
291 | } | ||
156 | 292 | ||
157 | #define mmc_card_mmc(c) ((c)->type == MMC_TYPE_MMC) | 293 | #define mmc_card_mmc(c) ((c)->type == MMC_TYPE_MMC) |
158 | #define mmc_card_sd(c) ((c)->type == MMC_TYPE_SD) | 294 | #define mmc_card_sd(c) ((c)->type == MMC_TYPE_SD) |
@@ -163,12 +299,50 @@ void mmc_fixup_device(struct mmc_card *dev); | |||
163 | #define mmc_card_highspeed(c) ((c)->state & MMC_STATE_HIGHSPEED) | 299 | #define mmc_card_highspeed(c) ((c)->state & MMC_STATE_HIGHSPEED) |
164 | #define mmc_card_blockaddr(c) ((c)->state & MMC_STATE_BLOCKADDR) | 300 | #define mmc_card_blockaddr(c) ((c)->state & MMC_STATE_BLOCKADDR) |
165 | #define mmc_card_ddr_mode(c) ((c)->state & MMC_STATE_HIGHSPEED_DDR) | 301 | #define mmc_card_ddr_mode(c) ((c)->state & MMC_STATE_HIGHSPEED_DDR) |
302 | #define mmc_sd_card_uhs(c) ((c)->state & MMC_STATE_ULTRAHIGHSPEED) | ||
303 | #define mmc_card_ext_capacity(c) ((c)->state & MMC_CARD_SDXC) | ||
166 | 304 | ||
167 | #define mmc_card_set_present(c) ((c)->state |= MMC_STATE_PRESENT) | 305 | #define mmc_card_set_present(c) ((c)->state |= MMC_STATE_PRESENT) |
168 | #define mmc_card_set_readonly(c) ((c)->state |= MMC_STATE_READONLY) | 306 | #define mmc_card_set_readonly(c) ((c)->state |= MMC_STATE_READONLY) |
169 | #define mmc_card_set_highspeed(c) ((c)->state |= MMC_STATE_HIGHSPEED) | 307 | #define mmc_card_set_highspeed(c) ((c)->state |= MMC_STATE_HIGHSPEED) |
170 | #define mmc_card_set_blockaddr(c) ((c)->state |= MMC_STATE_BLOCKADDR) | 308 | #define mmc_card_set_blockaddr(c) ((c)->state |= MMC_STATE_BLOCKADDR) |
171 | #define mmc_card_set_ddr_mode(c) ((c)->state |= MMC_STATE_HIGHSPEED_DDR) | 309 | #define mmc_card_set_ddr_mode(c) ((c)->state |= MMC_STATE_HIGHSPEED_DDR) |
310 | #define mmc_sd_card_set_uhs(c) ((c)->state |= MMC_STATE_ULTRAHIGHSPEED) | ||
311 | #define mmc_card_set_ext_capacity(c) ((c)->state |= MMC_CARD_SDXC) | ||
312 | |||
313 | /* | ||
314 | * Quirk add/remove for MMC products. | ||
315 | */ | ||
316 | |||
317 | static inline void __maybe_unused add_quirk_mmc(struct mmc_card *card, int data) | ||
318 | { | ||
319 | if (mmc_card_mmc(card)) | ||
320 | card->quirks |= data; | ||
321 | } | ||
322 | |||
323 | static inline void __maybe_unused remove_quirk_mmc(struct mmc_card *card, | ||
324 | int data) | ||
325 | { | ||
326 | if (mmc_card_mmc(card)) | ||
327 | card->quirks &= ~data; | ||
328 | } | ||
329 | |||
330 | /* | ||
331 | * Quirk add/remove for SD products. | ||
332 | */ | ||
333 | |||
334 | static inline void __maybe_unused add_quirk_sd(struct mmc_card *card, int data) | ||
335 | { | ||
336 | if (mmc_card_sd(card)) | ||
337 | card->quirks |= data; | ||
338 | } | ||
339 | |||
340 | static inline void __maybe_unused remove_quirk_sd(struct mmc_card *card, | ||
341 | int data) | ||
342 | { | ||
343 | if (mmc_card_sd(card)) | ||
344 | card->quirks &= ~data; | ||
345 | } | ||
172 | 346 | ||
173 | static inline int mmc_card_lenient_fn0(const struct mmc_card *c) | 347 | static inline int mmc_card_lenient_fn0(const struct mmc_card *c) |
174 | { | 348 | { |
@@ -180,6 +354,16 @@ static inline int mmc_blksz_for_byte_mode(const struct mmc_card *c) | |||
180 | return c->quirks & MMC_QUIRK_BLKSZ_FOR_BYTE_MODE; | 354 | return c->quirks & MMC_QUIRK_BLKSZ_FOR_BYTE_MODE; |
181 | } | 355 | } |
182 | 356 | ||
357 | static inline int mmc_card_disable_cd(const struct mmc_card *c) | ||
358 | { | ||
359 | return c->quirks & MMC_QUIRK_DISABLE_CD; | ||
360 | } | ||
361 | |||
362 | static inline int mmc_card_nonstd_func_interface(const struct mmc_card *c) | ||
363 | { | ||
364 | return c->quirks & MMC_QUIRK_NONSTD_FUNC_IF; | ||
365 | } | ||
366 | |||
183 | #define mmc_card_name(c) ((c)->cid.prod_name) | 367 | #define mmc_card_name(c) ((c)->cid.prod_name) |
184 | #define mmc_card_id(c) (dev_name(&(c)->dev)) | 368 | #define mmc_card_id(c) (dev_name(&(c)->dev)) |
185 | 369 | ||
@@ -203,4 +387,7 @@ struct mmc_driver { | |||
203 | extern int mmc_register_driver(struct mmc_driver *); | 387 | extern int mmc_register_driver(struct mmc_driver *); |
204 | extern void mmc_unregister_driver(struct mmc_driver *); | 388 | extern void mmc_unregister_driver(struct mmc_driver *); |
205 | 389 | ||
390 | extern void mmc_fixup_device(struct mmc_card *card, | ||
391 | const struct mmc_fixup *table); | ||
392 | |||
206 | #endif | 393 | #endif |
diff --git a/include/linux/mmc/core.h b/include/linux/mmc/core.h index 07f27af4dba5..b6718e549a51 100644 --- a/include/linux/mmc/core.h +++ b/include/linux/mmc/core.h | |||
@@ -92,7 +92,7 @@ struct mmc_command { | |||
92 | * actively failing requests | 92 | * actively failing requests |
93 | */ | 93 | */ |
94 | 94 | ||
95 | unsigned int erase_timeout; /* in milliseconds */ | 95 | unsigned int cmd_timeout_ms; /* in milliseconds */ |
96 | 96 | ||
97 | struct mmc_data *data; /* data segment associated with cmd */ | 97 | struct mmc_data *data; /* data segment associated with cmd */ |
98 | struct mmc_request *mrq; /* associated request */ | 98 | struct mmc_request *mrq; /* associated request */ |
@@ -120,6 +120,7 @@ struct mmc_data { | |||
120 | }; | 120 | }; |
121 | 121 | ||
122 | struct mmc_request { | 122 | struct mmc_request { |
123 | struct mmc_command *sbc; /* SET_BLOCK_COUNT for multiblock */ | ||
123 | struct mmc_command *cmd; | 124 | struct mmc_command *cmd; |
124 | struct mmc_data *data; | 125 | struct mmc_data *data; |
125 | struct mmc_command *stop; | 126 | struct mmc_command *stop; |
@@ -133,8 +134,10 @@ struct mmc_card; | |||
133 | 134 | ||
134 | extern void mmc_wait_for_req(struct mmc_host *, struct mmc_request *); | 135 | extern void mmc_wait_for_req(struct mmc_host *, struct mmc_request *); |
135 | extern int mmc_wait_for_cmd(struct mmc_host *, struct mmc_command *, int); | 136 | extern int mmc_wait_for_cmd(struct mmc_host *, struct mmc_command *, int); |
137 | extern int mmc_app_cmd(struct mmc_host *, struct mmc_card *); | ||
136 | extern int mmc_wait_for_app_cmd(struct mmc_host *, struct mmc_card *, | 138 | extern int mmc_wait_for_app_cmd(struct mmc_host *, struct mmc_card *, |
137 | struct mmc_command *, int); | 139 | struct mmc_command *, int); |
140 | extern int mmc_switch(struct mmc_card *, u8, u8, u8, unsigned int); | ||
138 | 141 | ||
139 | #define MMC_ERASE_ARG 0x00000000 | 142 | #define MMC_ERASE_ARG 0x00000000 |
140 | #define MMC_SECURE_ERASE_ARG 0x80000000 | 143 | #define MMC_SECURE_ERASE_ARG 0x80000000 |
diff --git a/include/linux/mmc/host.h b/include/linux/mmc/host.h index bcb793ec7374..1ee4424462eb 100644 --- a/include/linux/mmc/host.h +++ b/include/linux/mmc/host.h | |||
@@ -50,12 +50,30 @@ struct mmc_ios { | |||
50 | #define MMC_TIMING_LEGACY 0 | 50 | #define MMC_TIMING_LEGACY 0 |
51 | #define MMC_TIMING_MMC_HS 1 | 51 | #define MMC_TIMING_MMC_HS 1 |
52 | #define MMC_TIMING_SD_HS 2 | 52 | #define MMC_TIMING_SD_HS 2 |
53 | #define MMC_TIMING_UHS_SDR12 MMC_TIMING_LEGACY | ||
54 | #define MMC_TIMING_UHS_SDR25 MMC_TIMING_SD_HS | ||
55 | #define MMC_TIMING_UHS_SDR50 3 | ||
56 | #define MMC_TIMING_UHS_SDR104 4 | ||
57 | #define MMC_TIMING_UHS_DDR50 5 | ||
53 | 58 | ||
54 | unsigned char ddr; /* dual data rate used */ | 59 | unsigned char ddr; /* dual data rate used */ |
55 | 60 | ||
56 | #define MMC_SDR_MODE 0 | 61 | #define MMC_SDR_MODE 0 |
57 | #define MMC_1_2V_DDR_MODE 1 | 62 | #define MMC_1_2V_DDR_MODE 1 |
58 | #define MMC_1_8V_DDR_MODE 2 | 63 | #define MMC_1_8V_DDR_MODE 2 |
64 | |||
65 | unsigned char signal_voltage; /* signalling voltage (1.8V or 3.3V) */ | ||
66 | |||
67 | #define MMC_SIGNAL_VOLTAGE_330 0 | ||
68 | #define MMC_SIGNAL_VOLTAGE_180 1 | ||
69 | #define MMC_SIGNAL_VOLTAGE_120 2 | ||
70 | |||
71 | unsigned char drv_type; /* driver type (A, B, C, D) */ | ||
72 | |||
73 | #define MMC_SET_DRIVER_TYPE_B 0 | ||
74 | #define MMC_SET_DRIVER_TYPE_A 1 | ||
75 | #define MMC_SET_DRIVER_TYPE_C 2 | ||
76 | #define MMC_SET_DRIVER_TYPE_D 3 | ||
59 | }; | 77 | }; |
60 | 78 | ||
61 | struct mmc_host_ops { | 79 | struct mmc_host_ops { |
@@ -117,6 +135,10 @@ struct mmc_host_ops { | |||
117 | 135 | ||
118 | /* optional callback for HC quirks */ | 136 | /* optional callback for HC quirks */ |
119 | void (*init_card)(struct mmc_host *host, struct mmc_card *card); | 137 | void (*init_card)(struct mmc_host *host, struct mmc_card *card); |
138 | |||
139 | int (*start_signal_voltage_switch)(struct mmc_host *host, struct mmc_ios *ios); | ||
140 | int (*execute_tuning)(struct mmc_host *host); | ||
141 | void (*enable_preset_value)(struct mmc_host *host, bool enable); | ||
120 | }; | 142 | }; |
121 | 143 | ||
122 | struct mmc_card; | 144 | struct mmc_card; |
@@ -173,6 +195,22 @@ struct mmc_host { | |||
173 | /* DDR mode at 1.2V */ | 195 | /* DDR mode at 1.2V */ |
174 | #define MMC_CAP_POWER_OFF_CARD (1 << 13) /* Can power off after boot */ | 196 | #define MMC_CAP_POWER_OFF_CARD (1 << 13) /* Can power off after boot */ |
175 | #define MMC_CAP_BUS_WIDTH_TEST (1 << 14) /* CMD14/CMD19 bus width ok */ | 197 | #define MMC_CAP_BUS_WIDTH_TEST (1 << 14) /* CMD14/CMD19 bus width ok */ |
198 | #define MMC_CAP_UHS_SDR12 (1 << 15) /* Host supports UHS SDR12 mode */ | ||
199 | #define MMC_CAP_UHS_SDR25 (1 << 16) /* Host supports UHS SDR25 mode */ | ||
200 | #define MMC_CAP_UHS_SDR50 (1 << 17) /* Host supports UHS SDR50 mode */ | ||
201 | #define MMC_CAP_UHS_SDR104 (1 << 18) /* Host supports UHS SDR104 mode */ | ||
202 | #define MMC_CAP_UHS_DDR50 (1 << 19) /* Host supports UHS DDR50 mode */ | ||
203 | #define MMC_CAP_SET_XPC_330 (1 << 20) /* Host supports >150mA current at 3.3V */ | ||
204 | #define MMC_CAP_SET_XPC_300 (1 << 21) /* Host supports >150mA current at 3.0V */ | ||
205 | #define MMC_CAP_SET_XPC_180 (1 << 22) /* Host supports >150mA current at 1.8V */ | ||
206 | #define MMC_CAP_DRIVER_TYPE_A (1 << 23) /* Host supports Driver Type A */ | ||
207 | #define MMC_CAP_DRIVER_TYPE_C (1 << 24) /* Host supports Driver Type C */ | ||
208 | #define MMC_CAP_DRIVER_TYPE_D (1 << 25) /* Host supports Driver Type D */ | ||
209 | #define MMC_CAP_MAX_CURRENT_200 (1 << 26) /* Host max current limit is 200mA */ | ||
210 | #define MMC_CAP_MAX_CURRENT_400 (1 << 27) /* Host max current limit is 400mA */ | ||
211 | #define MMC_CAP_MAX_CURRENT_600 (1 << 28) /* Host max current limit is 600mA */ | ||
212 | #define MMC_CAP_MAX_CURRENT_800 (1 << 29) /* Host max current limit is 800mA */ | ||
213 | #define MMC_CAP_CMD23 (1 << 30) /* CMD23 supported. */ | ||
176 | 214 | ||
177 | mmc_pm_flag_t pm_caps; /* supported pm features */ | 215 | mmc_pm_flag_t pm_caps; /* supported pm features */ |
178 | 216 | ||
@@ -321,10 +359,19 @@ static inline int mmc_card_is_removable(struct mmc_host *host) | |||
321 | return !(host->caps & MMC_CAP_NONREMOVABLE) && mmc_assume_removable; | 359 | return !(host->caps & MMC_CAP_NONREMOVABLE) && mmc_assume_removable; |
322 | } | 360 | } |
323 | 361 | ||
324 | static inline int mmc_card_is_powered_resumed(struct mmc_host *host) | 362 | static inline int mmc_card_keep_power(struct mmc_host *host) |
325 | { | 363 | { |
326 | return host->pm_flags & MMC_PM_KEEP_POWER; | 364 | return host->pm_flags & MMC_PM_KEEP_POWER; |
327 | } | 365 | } |
328 | 366 | ||
367 | static inline int mmc_card_wake_sdio_irq(struct mmc_host *host) | ||
368 | { | ||
369 | return host->pm_flags & MMC_PM_WAKE_SDIO_IRQ; | ||
370 | } | ||
371 | |||
372 | static inline int mmc_host_cmd23(struct mmc_host *host) | ||
373 | { | ||
374 | return host->caps & MMC_CAP_CMD23; | ||
375 | } | ||
329 | #endif | 376 | #endif |
330 | 377 | ||
diff --git a/include/linux/mmc/ioctl.h b/include/linux/mmc/ioctl.h new file mode 100644 index 000000000000..5baf2983a12f --- /dev/null +++ b/include/linux/mmc/ioctl.h | |||
@@ -0,0 +1,54 @@ | |||
1 | #ifndef LINUX_MMC_IOCTL_H | ||
2 | #define LINUX_MMC_IOCTL_H | ||
3 | struct mmc_ioc_cmd { | ||
4 | /* Implies direction of data. true = write, false = read */ | ||
5 | int write_flag; | ||
6 | |||
7 | /* Application-specific command. true = precede with CMD55 */ | ||
8 | int is_acmd; | ||
9 | |||
10 | __u32 opcode; | ||
11 | __u32 arg; | ||
12 | __u32 response[4]; /* CMD response */ | ||
13 | unsigned int flags; | ||
14 | unsigned int blksz; | ||
15 | unsigned int blocks; | ||
16 | |||
17 | /* | ||
18 | * Sleep at least postsleep_min_us useconds, and at most | ||
19 | * postsleep_max_us useconds *after* issuing command. Needed for | ||
20 | * some read commands for which cards have no other way of indicating | ||
21 | * they're ready for the next command (i.e. there is no equivalent of | ||
22 | * a "busy" indicator for read operations). | ||
23 | */ | ||
24 | unsigned int postsleep_min_us; | ||
25 | unsigned int postsleep_max_us; | ||
26 | |||
27 | /* | ||
28 | * Override driver-computed timeouts. Note the difference in units! | ||
29 | */ | ||
30 | unsigned int data_timeout_ns; | ||
31 | unsigned int cmd_timeout_ms; | ||
32 | |||
33 | /* | ||
34 | * For 64-bit machines, the next member, ``__u64 data_ptr``, wants to | ||
35 | * be 8-byte aligned. Make sure this struct is the same size when | ||
36 | * built for 32-bit. | ||
37 | */ | ||
38 | __u32 __pad; | ||
39 | |||
40 | /* DAT buffer */ | ||
41 | __u64 data_ptr; | ||
42 | }; | ||
43 | #define mmc_ioc_cmd_set_data(ic, ptr) ic.data_ptr = (__u64)(unsigned long) ptr | ||
44 | |||
45 | #define MMC_IOC_CMD _IOWR(MMC_BLOCK_MAJOR, 0, struct mmc_ioc_cmd) | ||
46 | |||
47 | /* | ||
48 | * Since this ioctl is only meant to enhance (and not replace) normal access | ||
49 | * to the mmc bus device, an upper data transfer limit of MMC_IOC_MAX_BYTES | ||
50 | * is enforced per ioctl call. For larger data transfers, use the normal | ||
51 | * block device operations. | ||
52 | */ | ||
53 | #define MMC_IOC_MAX_BYTES (512L * 256) | ||
54 | #endif /* LINUX_MMC_IOCTL_H */ | ||
diff --git a/include/linux/mmc/mmc.h b/include/linux/mmc/mmc.h index 264ba5451e3b..ac26a685cca8 100644 --- a/include/linux/mmc/mmc.h +++ b/include/linux/mmc/mmc.h | |||
@@ -50,6 +50,7 @@ | |||
50 | #define MMC_SET_BLOCKLEN 16 /* ac [31:0] block len R1 */ | 50 | #define MMC_SET_BLOCKLEN 16 /* ac [31:0] block len R1 */ |
51 | #define MMC_READ_SINGLE_BLOCK 17 /* adtc [31:0] data addr R1 */ | 51 | #define MMC_READ_SINGLE_BLOCK 17 /* adtc [31:0] data addr R1 */ |
52 | #define MMC_READ_MULTIPLE_BLOCK 18 /* adtc [31:0] data addr R1 */ | 52 | #define MMC_READ_MULTIPLE_BLOCK 18 /* adtc [31:0] data addr R1 */ |
53 | #define MMC_SEND_TUNING_BLOCK 19 /* adtc R1 */ | ||
53 | 54 | ||
54 | /* class 3 */ | 55 | /* class 3 */ |
55 | #define MMC_WRITE_DAT_UNTIL_STOP 20 /* adtc [31:0] data addr R1 */ | 56 | #define MMC_WRITE_DAT_UNTIL_STOP 20 /* adtc [31:0] data addr R1 */ |
@@ -82,6 +83,12 @@ | |||
82 | #define MMC_APP_CMD 55 /* ac [31:16] RCA R1 */ | 83 | #define MMC_APP_CMD 55 /* ac [31:16] RCA R1 */ |
83 | #define MMC_GEN_CMD 56 /* adtc [0] RD/WR R1 */ | 84 | #define MMC_GEN_CMD 56 /* adtc [0] RD/WR R1 */ |
84 | 85 | ||
86 | static inline bool mmc_op_multi(u32 opcode) | ||
87 | { | ||
88 | return opcode == MMC_WRITE_MULTIPLE_BLOCK || | ||
89 | opcode == MMC_READ_MULTIPLE_BLOCK; | ||
90 | } | ||
91 | |||
85 | /* | 92 | /* |
86 | * MMC_SWITCH argument format: | 93 | * MMC_SWITCH argument format: |
87 | * | 94 | * |
@@ -255,18 +262,23 @@ struct _mmc_csd { | |||
255 | 262 | ||
256 | #define EXT_CSD_PARTITION_ATTRIBUTE 156 /* R/W */ | 263 | #define EXT_CSD_PARTITION_ATTRIBUTE 156 /* R/W */ |
257 | #define EXT_CSD_PARTITION_SUPPORT 160 /* RO */ | 264 | #define EXT_CSD_PARTITION_SUPPORT 160 /* RO */ |
265 | #define EXT_CSD_WR_REL_PARAM 166 /* RO */ | ||
258 | #define EXT_CSD_ERASE_GROUP_DEF 175 /* R/W */ | 266 | #define EXT_CSD_ERASE_GROUP_DEF 175 /* R/W */ |
267 | #define EXT_CSD_PART_CONFIG 179 /* R/W */ | ||
259 | #define EXT_CSD_ERASED_MEM_CONT 181 /* RO */ | 268 | #define EXT_CSD_ERASED_MEM_CONT 181 /* RO */ |
260 | #define EXT_CSD_BUS_WIDTH 183 /* R/W */ | 269 | #define EXT_CSD_BUS_WIDTH 183 /* R/W */ |
261 | #define EXT_CSD_HS_TIMING 185 /* R/W */ | 270 | #define EXT_CSD_HS_TIMING 185 /* R/W */ |
262 | #define EXT_CSD_REV 192 /* RO */ | 271 | #define EXT_CSD_REV 192 /* RO */ |
263 | #define EXT_CSD_STRUCTURE 194 /* RO */ | 272 | #define EXT_CSD_STRUCTURE 194 /* RO */ |
264 | #define EXT_CSD_CARD_TYPE 196 /* RO */ | 273 | #define EXT_CSD_CARD_TYPE 196 /* RO */ |
274 | #define EXT_CSD_PART_SWITCH_TIME 199 /* RO */ | ||
265 | #define EXT_CSD_SEC_CNT 212 /* RO, 4 bytes */ | 275 | #define EXT_CSD_SEC_CNT 212 /* RO, 4 bytes */ |
266 | #define EXT_CSD_S_A_TIMEOUT 217 /* RO */ | 276 | #define EXT_CSD_S_A_TIMEOUT 217 /* RO */ |
277 | #define EXT_CSD_REL_WR_SEC_C 222 /* RO */ | ||
267 | #define EXT_CSD_HC_WP_GRP_SIZE 221 /* RO */ | 278 | #define EXT_CSD_HC_WP_GRP_SIZE 221 /* RO */ |
268 | #define EXT_CSD_ERASE_TIMEOUT_MULT 223 /* RO */ | 279 | #define EXT_CSD_ERASE_TIMEOUT_MULT 223 /* RO */ |
269 | #define EXT_CSD_HC_ERASE_GRP_SIZE 224 /* RO */ | 280 | #define EXT_CSD_HC_ERASE_GRP_SIZE 224 /* RO */ |
281 | #define EXT_CSD_BOOT_MULT 226 /* RO */ | ||
270 | #define EXT_CSD_SEC_TRIM_MULT 229 /* RO */ | 282 | #define EXT_CSD_SEC_TRIM_MULT 229 /* RO */ |
271 | #define EXT_CSD_SEC_ERASE_MULT 230 /* RO */ | 283 | #define EXT_CSD_SEC_ERASE_MULT 230 /* RO */ |
272 | #define EXT_CSD_SEC_FEATURE_SUPPORT 231 /* RO */ | 284 | #define EXT_CSD_SEC_FEATURE_SUPPORT 231 /* RO */ |
@@ -276,6 +288,12 @@ struct _mmc_csd { | |||
276 | * EXT_CSD field definitions | 288 | * EXT_CSD field definitions |
277 | */ | 289 | */ |
278 | 290 | ||
291 | #define EXT_CSD_WR_REL_PARAM_EN (1<<2) | ||
292 | |||
293 | #define EXT_CSD_PART_CONFIG_ACC_MASK (0x7) | ||
294 | #define EXT_CSD_PART_CONFIG_ACC_BOOT0 (0x1) | ||
295 | #define EXT_CSD_PART_CONFIG_ACC_BOOT1 (0x2) | ||
296 | |||
279 | #define EXT_CSD_CMD_SET_NORMAL (1<<0) | 297 | #define EXT_CSD_CMD_SET_NORMAL (1<<0) |
280 | #define EXT_CSD_CMD_SET_SECURE (1<<1) | 298 | #define EXT_CSD_CMD_SET_SECURE (1<<1) |
281 | #define EXT_CSD_CMD_SET_CPSECURE (1<<2) | 299 | #define EXT_CSD_CMD_SET_CPSECURE (1<<2) |
diff --git a/include/linux/mmc/sd.h b/include/linux/mmc/sd.h index 3fd85e088cc3..7d35d52c3df3 100644 --- a/include/linux/mmc/sd.h +++ b/include/linux/mmc/sd.h | |||
@@ -17,6 +17,7 @@ | |||
17 | /* This is basically the same command as for MMC with some quirks. */ | 17 | /* This is basically the same command as for MMC with some quirks. */ |
18 | #define SD_SEND_RELATIVE_ADDR 3 /* bcr R6 */ | 18 | #define SD_SEND_RELATIVE_ADDR 3 /* bcr R6 */ |
19 | #define SD_SEND_IF_COND 8 /* bcr [11:0] See below R7 */ | 19 | #define SD_SEND_IF_COND 8 /* bcr [11:0] See below R7 */ |
20 | #define SD_SWITCH_VOLTAGE 11 /* ac R1 */ | ||
20 | 21 | ||
21 | /* class 10 */ | 22 | /* class 10 */ |
22 | #define SD_SWITCH 6 /* adtc [31:0] See below R1 */ | 23 | #define SD_SWITCH 6 /* adtc [31:0] See below R1 */ |
@@ -32,6 +33,12 @@ | |||
32 | #define SD_APP_OP_COND 41 /* bcr [31:0] OCR R3 */ | 33 | #define SD_APP_OP_COND 41 /* bcr [31:0] OCR R3 */ |
33 | #define SD_APP_SEND_SCR 51 /* adtc R1 */ | 34 | #define SD_APP_SEND_SCR 51 /* adtc R1 */ |
34 | 35 | ||
36 | /* OCR bit definitions */ | ||
37 | #define SD_OCR_S18R (1 << 24) /* 1.8V switching request */ | ||
38 | #define SD_ROCR_S18A SD_OCR_S18R /* 1.8V switching accepted by card */ | ||
39 | #define SD_OCR_XPC (1 << 28) /* SDXC power control */ | ||
40 | #define SD_OCR_CCS (1 << 30) /* Card Capacity Status */ | ||
41 | |||
35 | /* | 42 | /* |
36 | * SD_SWITCH argument format: | 43 | * SD_SWITCH argument format: |
37 | * | 44 | * |
@@ -59,7 +66,7 @@ | |||
59 | 66 | ||
60 | #define SCR_SPEC_VER_0 0 /* Implements system specification 1.0 - 1.01 */ | 67 | #define SCR_SPEC_VER_0 0 /* Implements system specification 1.0 - 1.01 */ |
61 | #define SCR_SPEC_VER_1 1 /* Implements system specification 1.10 */ | 68 | #define SCR_SPEC_VER_1 1 /* Implements system specification 1.10 */ |
62 | #define SCR_SPEC_VER_2 2 /* Implements system specification 2.00 */ | 69 | #define SCR_SPEC_VER_2 2 /* Implements system specification 2.00-3.0X */ |
63 | 70 | ||
64 | /* | 71 | /* |
65 | * SD bus widths | 72 | * SD bus widths |
diff --git a/include/linux/mmc/sdhci.h b/include/linux/mmc/sdhci.h index 83bd9f76709a..6a68c4eb4e44 100644 --- a/include/linux/mmc/sdhci.h +++ b/include/linux/mmc/sdhci.h | |||
@@ -85,6 +85,8 @@ struct sdhci_host { | |||
85 | #define SDHCI_QUIRK_NO_HISPD_BIT (1<<29) | 85 | #define SDHCI_QUIRK_NO_HISPD_BIT (1<<29) |
86 | /* Controller treats ADMA descriptors with length 0000h incorrectly */ | 86 | /* Controller treats ADMA descriptors with length 0000h incorrectly */ |
87 | #define SDHCI_QUIRK_BROKEN_ADMA_ZEROLEN_DESC (1<<30) | 87 | #define SDHCI_QUIRK_BROKEN_ADMA_ZEROLEN_DESC (1<<30) |
88 | /* The read-only detection via SDHCI_PRESENT_STATE register is unstable */ | ||
89 | #define SDHCI_QUIRK_UNSTABLE_RO_DETECT (1<<31) | ||
88 | 90 | ||
89 | int irq; /* Device IRQ */ | 91 | int irq; /* Device IRQ */ |
90 | void __iomem *ioaddr; /* Mapped address */ | 92 | void __iomem *ioaddr; /* Mapped address */ |
@@ -109,11 +111,16 @@ struct sdhci_host { | |||
109 | #define SDHCI_USE_ADMA (1<<1) /* Host is ADMA capable */ | 111 | #define SDHCI_USE_ADMA (1<<1) /* Host is ADMA capable */ |
110 | #define SDHCI_REQ_USE_DMA (1<<2) /* Use DMA for this req. */ | 112 | #define SDHCI_REQ_USE_DMA (1<<2) /* Use DMA for this req. */ |
111 | #define SDHCI_DEVICE_DEAD (1<<3) /* Device unresponsive */ | 113 | #define SDHCI_DEVICE_DEAD (1<<3) /* Device unresponsive */ |
114 | #define SDHCI_SDR50_NEEDS_TUNING (1<<4) /* SDR50 needs tuning */ | ||
115 | #define SDHCI_NEEDS_RETUNING (1<<5) /* Host needs retuning */ | ||
116 | #define SDHCI_AUTO_CMD12 (1<<6) /* Auto CMD12 support */ | ||
117 | #define SDHCI_AUTO_CMD23 (1<<7) /* Auto CMD23 support */ | ||
112 | 118 | ||
113 | unsigned int version; /* SDHCI spec. version */ | 119 | unsigned int version; /* SDHCI spec. version */ |
114 | 120 | ||
115 | unsigned int max_clk; /* Max possible freq (MHz) */ | 121 | unsigned int max_clk; /* Max possible freq (MHz) */ |
116 | unsigned int timeout_clk; /* Timeout freq (KHz) */ | 122 | unsigned int timeout_clk; /* Timeout freq (KHz) */ |
123 | unsigned int clk_mul; /* Clock Muliplier value */ | ||
117 | 124 | ||
118 | unsigned int clock; /* Current clock (MHz) */ | 125 | unsigned int clock; /* Current clock (MHz) */ |
119 | u8 pwr; /* Current voltage */ | 126 | u8 pwr; /* Current voltage */ |
@@ -145,6 +152,14 @@ struct sdhci_host { | |||
145 | unsigned int ocr_avail_sd; | 152 | unsigned int ocr_avail_sd; |
146 | unsigned int ocr_avail_mmc; | 153 | unsigned int ocr_avail_mmc; |
147 | 154 | ||
155 | wait_queue_head_t buf_ready_int; /* Waitqueue for Buffer Read Ready interrupt */ | ||
156 | unsigned int tuning_done; /* Condition flag set when CMD19 succeeds */ | ||
157 | |||
158 | unsigned int tuning_count; /* Timer count for re-tuning */ | ||
159 | unsigned int tuning_mode; /* Re-tuning mode supported by host */ | ||
160 | #define SDHCI_TUNING_MODE_1 0 | ||
161 | struct timer_list tuning_timer; /* Timer for tuning */ | ||
162 | |||
148 | unsigned long private[0] ____cacheline_aligned; | 163 | unsigned long private[0] ____cacheline_aligned; |
149 | }; | 164 | }; |
150 | #endif /* __SDHCI_H */ | 165 | #endif /* __SDHCI_H */ |
diff --git a/include/linux/mmc/sh_mobile_sdhi.h b/include/linux/mmc/sh_mobile_sdhi.h index c981b959760f..faf32b6ec185 100644 --- a/include/linux/mmc/sh_mobile_sdhi.h +++ b/include/linux/mmc/sh_mobile_sdhi.h | |||
@@ -3,12 +3,16 @@ | |||
3 | 3 | ||
4 | #include <linux/types.h> | 4 | #include <linux/types.h> |
5 | 5 | ||
6 | struct platform_device; | ||
7 | struct tmio_mmc_data; | ||
8 | |||
6 | struct sh_mobile_sdhi_info { | 9 | struct sh_mobile_sdhi_info { |
7 | int dma_slave_tx; | 10 | int dma_slave_tx; |
8 | int dma_slave_rx; | 11 | int dma_slave_rx; |
9 | unsigned long tmio_flags; | 12 | unsigned long tmio_flags; |
10 | unsigned long tmio_caps; | 13 | unsigned long tmio_caps; |
11 | u32 tmio_ocr_mask; /* available MMC voltages */ | 14 | u32 tmio_ocr_mask; /* available MMC voltages */ |
15 | struct tmio_mmc_data *pdata; | ||
12 | void (*set_pwr)(struct platform_device *pdev, int state); | 16 | void (*set_pwr)(struct platform_device *pdev, int state); |
13 | int (*get_cd)(struct platform_device *pdev); | 17 | int (*get_cd)(struct platform_device *pdev); |
14 | }; | 18 | }; |
diff --git a/include/linux/mmu_notifier.h b/include/linux/mmu_notifier.h index cc2e7dfea9d7..1d1b1e13f79f 100644 --- a/include/linux/mmu_notifier.h +++ b/include/linux/mmu_notifier.h | |||
@@ -150,7 +150,7 @@ struct mmu_notifier_ops { | |||
150 | * Therefore notifier chains can only be traversed when either | 150 | * Therefore notifier chains can only be traversed when either |
151 | * | 151 | * |
152 | * 1. mmap_sem is held. | 152 | * 1. mmap_sem is held. |
153 | * 2. One of the reverse map locks is held (i_mmap_lock or anon_vma->lock). | 153 | * 2. One of the reverse map locks is held (i_mmap_mutex or anon_vma->mutex). |
154 | * 3. No other concurrent thread can access the list (release) | 154 | * 3. No other concurrent thread can access the list (release) |
155 | */ | 155 | */ |
156 | struct mmu_notifier { | 156 | struct mmu_notifier { |
diff --git a/include/linux/mmzone.h b/include/linux/mmzone.h index e56f835274c9..c928dac6cad0 100644 --- a/include/linux/mmzone.h +++ b/include/linux/mmzone.h | |||
@@ -273,11 +273,6 @@ struct zone_reclaim_stat { | |||
273 | */ | 273 | */ |
274 | unsigned long recent_rotated[2]; | 274 | unsigned long recent_rotated[2]; |
275 | unsigned long recent_scanned[2]; | 275 | unsigned long recent_scanned[2]; |
276 | |||
277 | /* | ||
278 | * accumulated for batching | ||
279 | */ | ||
280 | unsigned long nr_saved_scan[NR_LRU_LISTS]; | ||
281 | }; | 276 | }; |
282 | 277 | ||
283 | struct zone { | 278 | struct zone { |
@@ -928,9 +923,6 @@ static inline unsigned long early_pfn_to_nid(unsigned long pfn) | |||
928 | #define pfn_to_nid(pfn) (0) | 923 | #define pfn_to_nid(pfn) (0) |
929 | #endif | 924 | #endif |
930 | 925 | ||
931 | #define pfn_to_section_nr(pfn) ((pfn) >> PFN_SECTION_SHIFT) | ||
932 | #define section_nr_to_pfn(sec) ((sec) << PFN_SECTION_SHIFT) | ||
933 | |||
934 | #ifdef CONFIG_SPARSEMEM | 926 | #ifdef CONFIG_SPARSEMEM |
935 | 927 | ||
936 | /* | 928 | /* |
@@ -956,6 +948,12 @@ static inline unsigned long early_pfn_to_nid(unsigned long pfn) | |||
956 | #error Allocator MAX_ORDER exceeds SECTION_SIZE | 948 | #error Allocator MAX_ORDER exceeds SECTION_SIZE |
957 | #endif | 949 | #endif |
958 | 950 | ||
951 | #define pfn_to_section_nr(pfn) ((pfn) >> PFN_SECTION_SHIFT) | ||
952 | #define section_nr_to_pfn(sec) ((sec) << PFN_SECTION_SHIFT) | ||
953 | |||
954 | #define SECTION_ALIGN_UP(pfn) (((pfn) + PAGES_PER_SECTION - 1) & PAGE_SECTION_MASK) | ||
955 | #define SECTION_ALIGN_DOWN(pfn) ((pfn) & PAGE_SECTION_MASK) | ||
956 | |||
959 | struct page; | 957 | struct page; |
960 | struct page_cgroup; | 958 | struct page_cgroup; |
961 | struct mem_section { | 959 | struct mem_section { |
@@ -1053,12 +1051,14 @@ static inline struct mem_section *__pfn_to_section(unsigned long pfn) | |||
1053 | return __nr_to_section(pfn_to_section_nr(pfn)); | 1051 | return __nr_to_section(pfn_to_section_nr(pfn)); |
1054 | } | 1052 | } |
1055 | 1053 | ||
1054 | #ifndef CONFIG_HAVE_ARCH_PFN_VALID | ||
1056 | static inline int pfn_valid(unsigned long pfn) | 1055 | static inline int pfn_valid(unsigned long pfn) |
1057 | { | 1056 | { |
1058 | if (pfn_to_section_nr(pfn) >= NR_MEM_SECTIONS) | 1057 | if (pfn_to_section_nr(pfn) >= NR_MEM_SECTIONS) |
1059 | return 0; | 1058 | return 0; |
1060 | return valid_section(__nr_to_section(pfn_to_section_nr(pfn))); | 1059 | return valid_section(__nr_to_section(pfn_to_section_nr(pfn))); |
1061 | } | 1060 | } |
1061 | #endif | ||
1062 | 1062 | ||
1063 | static inline int pfn_present(unsigned long pfn) | 1063 | static inline int pfn_present(unsigned long pfn) |
1064 | { | 1064 | { |
diff --git a/include/linux/mtd/mtd.h b/include/linux/mtd/mtd.h index 9d5306bad117..2541fb848daa 100644 --- a/include/linux/mtd/mtd.h +++ b/include/linux/mtd/mtd.h | |||
@@ -322,9 +322,12 @@ static inline uint32_t mtd_mod_by_ws(uint64_t sz, struct mtd_info *mtd) | |||
322 | 322 | ||
323 | /* Kernel-side ioctl definitions */ | 323 | /* Kernel-side ioctl definitions */ |
324 | 324 | ||
325 | extern int add_mtd_device(struct mtd_info *mtd); | 325 | struct mtd_partition; |
326 | extern int del_mtd_device (struct mtd_info *mtd); | ||
327 | 326 | ||
327 | extern int mtd_device_register(struct mtd_info *master, | ||
328 | const struct mtd_partition *parts, | ||
329 | int nr_parts); | ||
330 | extern int mtd_device_unregister(struct mtd_info *master); | ||
328 | extern struct mtd_info *get_mtd_device(struct mtd_info *mtd, int num); | 331 | extern struct mtd_info *get_mtd_device(struct mtd_info *mtd, int num); |
329 | extern int __get_mtd_device(struct mtd_info *mtd); | 332 | extern int __get_mtd_device(struct mtd_info *mtd); |
330 | extern void __put_mtd_device(struct mtd_info *mtd); | 333 | extern void __put_mtd_device(struct mtd_info *mtd); |
@@ -348,15 +351,9 @@ int default_mtd_writev(struct mtd_info *mtd, const struct kvec *vecs, | |||
348 | int default_mtd_readv(struct mtd_info *mtd, struct kvec *vecs, | 351 | int default_mtd_readv(struct mtd_info *mtd, struct kvec *vecs, |
349 | unsigned long count, loff_t from, size_t *retlen); | 352 | unsigned long count, loff_t from, size_t *retlen); |
350 | 353 | ||
351 | #ifdef CONFIG_MTD_PARTITIONS | 354 | void *mtd_kmalloc_up_to(const struct mtd_info *mtd, size_t *size); |
355 | |||
352 | void mtd_erase_callback(struct erase_info *instr); | 356 | void mtd_erase_callback(struct erase_info *instr); |
353 | #else | ||
354 | static inline void mtd_erase_callback(struct erase_info *instr) | ||
355 | { | ||
356 | if (instr->callback) | ||
357 | instr->callback(instr); | ||
358 | } | ||
359 | #endif | ||
360 | 357 | ||
361 | /* | 358 | /* |
362 | * Debugging macro and defines | 359 | * Debugging macro and defines |
diff --git a/include/linux/mtd/nand.h b/include/linux/mtd/nand.h index d44192740f6f..c2b9ac4fbc4a 100644 --- a/include/linux/mtd/nand.h +++ b/include/linux/mtd/nand.h | |||
@@ -237,9 +237,9 @@ typedef enum { | |||
237 | * If passed additionally to NAND_USE_FLASH_BBT then BBT code will not touch | 237 | * If passed additionally to NAND_USE_FLASH_BBT then BBT code will not touch |
238 | * the OOB area. | 238 | * the OOB area. |
239 | */ | 239 | */ |
240 | #define NAND_USE_FLASH_BBT_NO_OOB 0x00100000 | 240 | #define NAND_USE_FLASH_BBT_NO_OOB 0x00800000 |
241 | /* Create an empty BBT with no vendor information if the BBT is available */ | 241 | /* Create an empty BBT with no vendor information if the BBT is available */ |
242 | #define NAND_CREATE_EMPTY_BBT 0x00200000 | 242 | #define NAND_CREATE_EMPTY_BBT 0x01000000 |
243 | 243 | ||
244 | /* Options set by nand scan */ | 244 | /* Options set by nand scan */ |
245 | /* Nand scan has allocated controller struct */ | 245 | /* Nand scan has allocated controller struct */ |
diff --git a/include/linux/mtd/partitions.h b/include/linux/mtd/partitions.h index 4a0a8ba90a72..3a6f0372fc96 100644 --- a/include/linux/mtd/partitions.h +++ b/include/linux/mtd/partitions.h | |||
@@ -16,7 +16,7 @@ | |||
16 | * Partition definition structure: | 16 | * Partition definition structure: |
17 | * | 17 | * |
18 | * An array of struct partition is passed along with a MTD object to | 18 | * An array of struct partition is passed along with a MTD object to |
19 | * add_mtd_partitions() to create them. | 19 | * mtd_device_register() to create them. |
20 | * | 20 | * |
21 | * For each partition, these fields are available: | 21 | * For each partition, these fields are available: |
22 | * name: string that will be used to label the partition's MTD device. | 22 | * name: string that will be used to label the partition's MTD device. |
@@ -49,9 +49,6 @@ struct mtd_partition { | |||
49 | 49 | ||
50 | struct mtd_info; | 50 | struct mtd_info; |
51 | 51 | ||
52 | int add_mtd_partitions(struct mtd_info *, const struct mtd_partition *, int); | ||
53 | int del_mtd_partitions(struct mtd_info *); | ||
54 | |||
55 | /* | 52 | /* |
56 | * Functions dealing with the various ways of partitioning the space | 53 | * Functions dealing with the various ways of partitioning the space |
57 | */ | 54 | */ |
@@ -73,14 +70,17 @@ extern int parse_mtd_partitions(struct mtd_info *master, const char **types, | |||
73 | struct device; | 70 | struct device; |
74 | struct device_node; | 71 | struct device_node; |
75 | 72 | ||
73 | #ifdef CONFIG_MTD_OF_PARTS | ||
76 | int __devinit of_mtd_parse_partitions(struct device *dev, | 74 | int __devinit of_mtd_parse_partitions(struct device *dev, |
77 | struct device_node *node, | 75 | struct device_node *node, |
78 | struct mtd_partition **pparts); | 76 | struct mtd_partition **pparts); |
79 | |||
80 | #ifdef CONFIG_MTD_PARTITIONS | ||
81 | static inline int mtd_has_partitions(void) { return 1; } | ||
82 | #else | 77 | #else |
83 | static inline int mtd_has_partitions(void) { return 0; } | 78 | static inline int of_mtd_parse_partitions(struct device *dev, |
79 | struct device_node *node, | ||
80 | struct mtd_partition **pparts) | ||
81 | { | ||
82 | return 0; | ||
83 | } | ||
84 | #endif | 84 | #endif |
85 | 85 | ||
86 | #ifdef CONFIG_MTD_CMDLINE_PARTS | 86 | #ifdef CONFIG_MTD_CMDLINE_PARTS |
diff --git a/include/linux/mtd/physmap.h b/include/linux/mtd/physmap.h index bcfd9f777454..e5f21d293c70 100644 --- a/include/linux/mtd/physmap.h +++ b/include/linux/mtd/physmap.h | |||
@@ -19,10 +19,13 @@ | |||
19 | #include <linux/mtd/partitions.h> | 19 | #include <linux/mtd/partitions.h> |
20 | 20 | ||
21 | struct map_info; | 21 | struct map_info; |
22 | struct platform_device; | ||
22 | 23 | ||
23 | struct physmap_flash_data { | 24 | struct physmap_flash_data { |
24 | unsigned int width; | 25 | unsigned int width; |
25 | void (*set_vpp)(struct map_info *, int); | 26 | int (*init)(struct platform_device *); |
27 | void (*exit)(struct platform_device *); | ||
28 | void (*set_vpp)(struct platform_device *, int); | ||
26 | unsigned int nr_parts; | 29 | unsigned int nr_parts; |
27 | unsigned int pfow_base; | 30 | unsigned int pfow_base; |
28 | char *probe_type; | 31 | char *probe_type; |
@@ -35,8 +38,6 @@ struct physmap_flash_data { | |||
35 | void physmap_configure(unsigned long addr, unsigned long size, | 38 | void physmap_configure(unsigned long addr, unsigned long size, |
36 | int bankwidth, void (*set_vpp)(struct map_info *, int) ); | 39 | int bankwidth, void (*set_vpp)(struct map_info *, int) ); |
37 | 40 | ||
38 | #ifdef CONFIG_MTD_PARTITIONS | ||
39 | |||
40 | /* | 41 | /* |
41 | * Machines that wish to do flash partition may want to call this function in | 42 | * Machines that wish to do flash partition may want to call this function in |
42 | * their setup routine. | 43 | * their setup routine. |
@@ -48,6 +49,4 @@ void physmap_configure(unsigned long addr, unsigned long size, | |||
48 | */ | 49 | */ |
49 | void physmap_set_partitions(struct mtd_partition *parts, int num_parts); | 50 | void physmap_set_partitions(struct mtd_partition *parts, int num_parts); |
50 | 51 | ||
51 | #endif /* defined(CONFIG_MTD_PARTITIONS) */ | ||
52 | |||
53 | #endif /* __LINUX_MTD_PHYSMAP__ */ | 52 | #endif /* __LINUX_MTD_PHYSMAP__ */ |
diff --git a/include/linux/mtd/ubi.h b/include/linux/mtd/ubi.h index 84854edf4436..15da0e99f48a 100644 --- a/include/linux/mtd/ubi.h +++ b/include/linux/mtd/ubi.h | |||
@@ -21,7 +21,7 @@ | |||
21 | #ifndef __LINUX_UBI_H__ | 21 | #ifndef __LINUX_UBI_H__ |
22 | #define __LINUX_UBI_H__ | 22 | #define __LINUX_UBI_H__ |
23 | 23 | ||
24 | #include <asm/ioctl.h> | 24 | #include <linux/ioctl.h> |
25 | #include <linux/types.h> | 25 | #include <linux/types.h> |
26 | #include <mtd/ubi-user.h> | 26 | #include <mtd/ubi-user.h> |
27 | 27 | ||
@@ -87,7 +87,7 @@ enum { | |||
87 | * physical eraseblock size and on how much bytes UBI headers consume. But | 87 | * physical eraseblock size and on how much bytes UBI headers consume. But |
88 | * because of the volume alignment (@alignment), the usable size of logical | 88 | * because of the volume alignment (@alignment), the usable size of logical |
89 | * eraseblocks if a volume may be less. The following equation is true: | 89 | * eraseblocks if a volume may be less. The following equation is true: |
90 | * @usable_leb_size = LEB size - (LEB size mod @alignment), | 90 | * @usable_leb_size = LEB size - (LEB size mod @alignment), |
91 | * where LEB size is the logical eraseblock size defined by the UBI device. | 91 | * where LEB size is the logical eraseblock size defined by the UBI device. |
92 | * | 92 | * |
93 | * The alignment is multiple to the minimal flash input/output unit size or %1 | 93 | * The alignment is multiple to the minimal flash input/output unit size or %1 |
diff --git a/include/linux/mutex.h b/include/linux/mutex.h index c75471db576e..a940fe435aca 100644 --- a/include/linux/mutex.h +++ b/include/linux/mutex.h | |||
@@ -132,6 +132,7 @@ static inline int mutex_is_locked(struct mutex *lock) | |||
132 | */ | 132 | */ |
133 | #ifdef CONFIG_DEBUG_LOCK_ALLOC | 133 | #ifdef CONFIG_DEBUG_LOCK_ALLOC |
134 | extern void mutex_lock_nested(struct mutex *lock, unsigned int subclass); | 134 | extern void mutex_lock_nested(struct mutex *lock, unsigned int subclass); |
135 | extern void _mutex_lock_nest_lock(struct mutex *lock, struct lockdep_map *nest_lock); | ||
135 | extern int __must_check mutex_lock_interruptible_nested(struct mutex *lock, | 136 | extern int __must_check mutex_lock_interruptible_nested(struct mutex *lock, |
136 | unsigned int subclass); | 137 | unsigned int subclass); |
137 | extern int __must_check mutex_lock_killable_nested(struct mutex *lock, | 138 | extern int __must_check mutex_lock_killable_nested(struct mutex *lock, |
@@ -140,6 +141,13 @@ extern int __must_check mutex_lock_killable_nested(struct mutex *lock, | |||
140 | #define mutex_lock(lock) mutex_lock_nested(lock, 0) | 141 | #define mutex_lock(lock) mutex_lock_nested(lock, 0) |
141 | #define mutex_lock_interruptible(lock) mutex_lock_interruptible_nested(lock, 0) | 142 | #define mutex_lock_interruptible(lock) mutex_lock_interruptible_nested(lock, 0) |
142 | #define mutex_lock_killable(lock) mutex_lock_killable_nested(lock, 0) | 143 | #define mutex_lock_killable(lock) mutex_lock_killable_nested(lock, 0) |
144 | |||
145 | #define mutex_lock_nest_lock(lock, nest_lock) \ | ||
146 | do { \ | ||
147 | typecheck(struct lockdep_map *, &(nest_lock)->dep_map); \ | ||
148 | _mutex_lock_nest_lock(lock, &(nest_lock)->dep_map); \ | ||
149 | } while (0) | ||
150 | |||
143 | #else | 151 | #else |
144 | extern void mutex_lock(struct mutex *lock); | 152 | extern void mutex_lock(struct mutex *lock); |
145 | extern int __must_check mutex_lock_interruptible(struct mutex *lock); | 153 | extern int __must_check mutex_lock_interruptible(struct mutex *lock); |
@@ -148,6 +156,7 @@ extern int __must_check mutex_lock_killable(struct mutex *lock); | |||
148 | # define mutex_lock_nested(lock, subclass) mutex_lock(lock) | 156 | # define mutex_lock_nested(lock, subclass) mutex_lock(lock) |
149 | # define mutex_lock_interruptible_nested(lock, subclass) mutex_lock_interruptible(lock) | 157 | # define mutex_lock_interruptible_nested(lock, subclass) mutex_lock_interruptible(lock) |
150 | # define mutex_lock_killable_nested(lock, subclass) mutex_lock_killable(lock) | 158 | # define mutex_lock_killable_nested(lock, subclass) mutex_lock_killable(lock) |
159 | # define mutex_lock_nest_lock(lock, nest_lock) mutex_lock(lock) | ||
151 | #endif | 160 | #endif |
152 | 161 | ||
153 | /* | 162 | /* |
diff --git a/include/linux/mxm-wmi.h b/include/linux/mxm-wmi.h new file mode 100644 index 000000000000..617a2950523c --- /dev/null +++ b/include/linux/mxm-wmi.h | |||
@@ -0,0 +1,33 @@ | |||
1 | /* | ||
2 | * MXM WMI driver | ||
3 | * | ||
4 | * Copyright(C) 2010 Red Hat. | ||
5 | * | ||
6 | * This program is free software; you can redistribute it and/or modify | ||
7 | * it under the terms of the GNU General Public License as published by | ||
8 | * the Free Software Foundation; either version 2 of the License, or | ||
9 | * (at your option) any later version. | ||
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 | * You should have received a copy of the GNU General Public License | ||
17 | * along with this program; if not, write to the Free Software | ||
18 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | ||
19 | */ | ||
20 | |||
21 | #ifndef MXM_WMI_H | ||
22 | #define MXM_WMI_H | ||
23 | |||
24 | /* discrete adapters */ | ||
25 | #define MXM_MXDS_ADAPTER_0 0x0 | ||
26 | #define MXM_MXDS_ADAPTER_1 0x0 | ||
27 | /* integrated adapter */ | ||
28 | #define MXM_MXDS_ADAPTER_IGD 0x10 | ||
29 | int mxm_wmi_call_mxds(int adapter); | ||
30 | int mxm_wmi_call_mxmx(int adapter); | ||
31 | bool mxm_wmi_supported(void); | ||
32 | |||
33 | #endif | ||
diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h index ca333e79e10f..336288567c78 100644 --- a/include/linux/netdevice.h +++ b/include/linux/netdevice.h | |||
@@ -1563,7 +1563,6 @@ struct packet_type { | |||
1563 | struct list_head list; | 1563 | struct list_head list; |
1564 | }; | 1564 | }; |
1565 | 1565 | ||
1566 | #include <linux/interrupt.h> | ||
1567 | #include <linux/notifier.h> | 1566 | #include <linux/notifier.h> |
1568 | 1567 | ||
1569 | extern rwlock_t dev_base_lock; /* Device list lock */ | 1568 | extern rwlock_t dev_base_lock; /* Device list lock */ |
diff --git a/include/linux/netlink.h b/include/linux/netlink.h index 4c4ac3f3ce5a..a9dd89552f9c 100644 --- a/include/linux/netlink.h +++ b/include/linux/netlink.h | |||
@@ -24,6 +24,7 @@ | |||
24 | /* leave room for NETLINK_DM (DM Events) */ | 24 | /* leave room for NETLINK_DM (DM Events) */ |
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 | 28 | ||
28 | #define MAX_LINKS 32 | 29 | #define MAX_LINKS 32 |
29 | 30 | ||
diff --git a/include/linux/nfs4.h b/include/linux/nfs4.h index 178fafe0ff93..504b289ba680 100644 --- a/include/linux/nfs4.h +++ b/include/linux/nfs4.h | |||
@@ -562,6 +562,7 @@ enum { | |||
562 | NFSPROC4_CLNT_LAYOUTGET, | 562 | NFSPROC4_CLNT_LAYOUTGET, |
563 | NFSPROC4_CLNT_GETDEVICEINFO, | 563 | NFSPROC4_CLNT_GETDEVICEINFO, |
564 | NFSPROC4_CLNT_LAYOUTCOMMIT, | 564 | NFSPROC4_CLNT_LAYOUTCOMMIT, |
565 | NFSPROC4_CLNT_LAYOUTRETURN, | ||
565 | }; | 566 | }; |
566 | 567 | ||
567 | /* nfs41 types */ | 568 | /* nfs41 types */ |
@@ -570,9 +571,11 @@ struct nfs4_sessionid { | |||
570 | }; | 571 | }; |
571 | 572 | ||
572 | /* Create Session Flags */ | 573 | /* Create Session Flags */ |
573 | #define SESSION4_PERSIST 0x001 | 574 | #define SESSION4_PERSIST 0x001 |
574 | #define SESSION4_BACK_CHAN 0x002 | 575 | #define SESSION4_BACK_CHAN 0x002 |
575 | #define SESSION4_RDMA 0x004 | 576 | #define SESSION4_RDMA 0x004 |
577 | |||
578 | #define SESSION4_FLAG_MASK_A 0x007 | ||
576 | 579 | ||
577 | enum state_protect_how4 { | 580 | enum state_protect_how4 { |
578 | SP4_NONE = 0, | 581 | SP4_NONE = 0, |
diff --git a/include/linux/nfs_page.h b/include/linux/nfs_page.h index 91af2e49fa3a..3a34e80ae92f 100644 --- a/include/linux/nfs_page.h +++ b/include/linux/nfs_page.h | |||
@@ -68,7 +68,7 @@ struct nfs_pageio_descriptor { | |||
68 | int pg_ioflags; | 68 | int pg_ioflags; |
69 | int pg_error; | 69 | int pg_error; |
70 | struct pnfs_layout_segment *pg_lseg; | 70 | struct pnfs_layout_segment *pg_lseg; |
71 | int (*pg_test)(struct nfs_pageio_descriptor *, struct nfs_page *, struct nfs_page *); | 71 | bool (*pg_test)(struct nfs_pageio_descriptor *, struct nfs_page *, struct nfs_page *); |
72 | }; | 72 | }; |
73 | 73 | ||
74 | #define NFS_WBACK_BUSY(req) (test_bit(PG_BUSY,&(req)->wb_flags)) | 74 | #define NFS_WBACK_BUSY(req) (test_bit(PG_BUSY,&(req)->wb_flags)) |
diff --git a/include/linux/nfs_xdr.h b/include/linux/nfs_xdr.h index 7e371f7df9c4..5e8444a11adf 100644 --- a/include/linux/nfs_xdr.h +++ b/include/linux/nfs_xdr.h | |||
@@ -269,6 +269,27 @@ struct nfs4_layoutcommit_data { | |||
269 | struct nfs4_layoutcommit_res res; | 269 | struct nfs4_layoutcommit_res res; |
270 | }; | 270 | }; |
271 | 271 | ||
272 | struct nfs4_layoutreturn_args { | ||
273 | __u32 layout_type; | ||
274 | struct inode *inode; | ||
275 | nfs4_stateid stateid; | ||
276 | struct nfs4_sequence_args seq_args; | ||
277 | }; | ||
278 | |||
279 | struct nfs4_layoutreturn_res { | ||
280 | struct nfs4_sequence_res seq_res; | ||
281 | u32 lrs_present; | ||
282 | nfs4_stateid stateid; | ||
283 | }; | ||
284 | |||
285 | struct nfs4_layoutreturn { | ||
286 | struct nfs4_layoutreturn_args args; | ||
287 | struct nfs4_layoutreturn_res res; | ||
288 | struct rpc_cred *cred; | ||
289 | struct nfs_client *clp; | ||
290 | int rpc_status; | ||
291 | }; | ||
292 | |||
272 | /* | 293 | /* |
273 | * Arguments to the open call. | 294 | * Arguments to the open call. |
274 | */ | 295 | */ |
@@ -1087,6 +1108,7 @@ struct nfs_read_data { | |||
1087 | const struct rpc_call_ops *mds_ops; | 1108 | const struct rpc_call_ops *mds_ops; |
1088 | int (*read_done_cb) (struct rpc_task *task, struct nfs_read_data *data); | 1109 | int (*read_done_cb) (struct rpc_task *task, struct nfs_read_data *data); |
1089 | __u64 mds_offset; | 1110 | __u64 mds_offset; |
1111 | int pnfs_error; | ||
1090 | struct page *page_array[NFS_PAGEVEC_SIZE]; | 1112 | struct page *page_array[NFS_PAGEVEC_SIZE]; |
1091 | }; | 1113 | }; |
1092 | 1114 | ||
@@ -1112,6 +1134,7 @@ struct nfs_write_data { | |||
1112 | unsigned long timestamp; /* For lease renewal */ | 1134 | unsigned long timestamp; /* For lease renewal */ |
1113 | #endif | 1135 | #endif |
1114 | __u64 mds_offset; /* Filelayout dense stripe */ | 1136 | __u64 mds_offset; /* Filelayout dense stripe */ |
1137 | int pnfs_error; | ||
1115 | struct page *page_array[NFS_PAGEVEC_SIZE]; | 1138 | struct page *page_array[NFS_PAGEVEC_SIZE]; |
1116 | }; | 1139 | }; |
1117 | 1140 | ||
diff --git a/include/linux/nsproxy.h b/include/linux/nsproxy.h index 7b370c7cfeff..50d20aba57d3 100644 --- a/include/linux/nsproxy.h +++ b/include/linux/nsproxy.h | |||
@@ -81,13 +81,4 @@ static inline void get_nsproxy(struct nsproxy *ns) | |||
81 | atomic_inc(&ns->count); | 81 | atomic_inc(&ns->count); |
82 | } | 82 | } |
83 | 83 | ||
84 | #ifdef CONFIG_CGROUP_NS | ||
85 | int ns_cgroup_clone(struct task_struct *tsk, struct pid *pid); | ||
86 | #else | ||
87 | static inline int ns_cgroup_clone(struct task_struct *tsk, struct pid *pid) | ||
88 | { | ||
89 | return 0; | ||
90 | } | ||
91 | #endif | ||
92 | |||
93 | #endif | 84 | #endif |
diff --git a/include/linux/oom.h b/include/linux/oom.h index 5e3aa8311c5e..4952fb874ad3 100644 --- a/include/linux/oom.h +++ b/include/linux/oom.h | |||
@@ -40,6 +40,8 @@ enum oom_constraint { | |||
40 | CONSTRAINT_MEMCG, | 40 | CONSTRAINT_MEMCG, |
41 | }; | 41 | }; |
42 | 42 | ||
43 | extern int test_set_oom_score_adj(int new_val); | ||
44 | |||
43 | extern unsigned int oom_badness(struct task_struct *p, struct mem_cgroup *mem, | 45 | extern unsigned int oom_badness(struct task_struct *p, struct mem_cgroup *mem, |
44 | const nodemask_t *nodemask, unsigned long totalpages); | 46 | const nodemask_t *nodemask, unsigned long totalpages); |
45 | extern int try_set_zonelist_oom(struct zonelist *zonelist, gfp_t gfp_flags); | 47 | extern int try_set_zonelist_oom(struct zonelist *zonelist, gfp_t gfp_flags); |
diff --git a/include/linux/page-flags.h b/include/linux/page-flags.h index 811183de1ef5..6081493db68f 100644 --- a/include/linux/page-flags.h +++ b/include/linux/page-flags.h | |||
@@ -308,7 +308,7 @@ static inline void SetPageUptodate(struct page *page) | |||
308 | { | 308 | { |
309 | #ifdef CONFIG_S390 | 309 | #ifdef CONFIG_S390 |
310 | if (!test_and_set_bit(PG_uptodate, &page->flags)) | 310 | if (!test_and_set_bit(PG_uptodate, &page->flags)) |
311 | page_clear_dirty(page, 0); | 311 | page_set_storage_key(page_to_phys(page), PAGE_DEFAULT_KEY, 0); |
312 | #else | 312 | #else |
313 | /* | 313 | /* |
314 | * Memory barrier must be issued before setting the PG_uptodate bit, | 314 | * Memory barrier must be issued before setting the PG_uptodate bit, |
diff --git a/include/linux/pagemap.h b/include/linux/pagemap.h index c11950652646..716875e53520 100644 --- a/include/linux/pagemap.h +++ b/include/linux/pagemap.h | |||
@@ -219,6 +219,12 @@ static inline struct page *page_cache_alloc_cold(struct address_space *x) | |||
219 | return __page_cache_alloc(mapping_gfp_mask(x)|__GFP_COLD); | 219 | return __page_cache_alloc(mapping_gfp_mask(x)|__GFP_COLD); |
220 | } | 220 | } |
221 | 221 | ||
222 | static inline struct page *page_cache_alloc_readahead(struct address_space *x) | ||
223 | { | ||
224 | return __page_cache_alloc(mapping_gfp_mask(x) | | ||
225 | __GFP_COLD | __GFP_NORETRY | __GFP_NOWARN); | ||
226 | } | ||
227 | |||
222 | typedef int filler_t(void *, struct page *); | 228 | typedef int filler_t(void *, struct page *); |
223 | 229 | ||
224 | extern struct page * find_get_page(struct address_space *mapping, | 230 | extern struct page * find_get_page(struct address_space *mapping, |
@@ -357,6 +363,15 @@ static inline int lock_page_or_retry(struct page *page, struct mm_struct *mm, | |||
357 | */ | 363 | */ |
358 | extern void wait_on_page_bit(struct page *page, int bit_nr); | 364 | extern void wait_on_page_bit(struct page *page, int bit_nr); |
359 | 365 | ||
366 | extern int wait_on_page_bit_killable(struct page *page, int bit_nr); | ||
367 | |||
368 | static inline int wait_on_page_locked_killable(struct page *page) | ||
369 | { | ||
370 | if (PageLocked(page)) | ||
371 | return wait_on_page_bit_killable(page, PG_locked); | ||
372 | return 0; | ||
373 | } | ||
374 | |||
360 | /* | 375 | /* |
361 | * Wait for a page to be unlocked. | 376 | * Wait for a page to be unlocked. |
362 | * | 377 | * |
diff --git a/include/linux/pci-aspm.h b/include/linux/pci-aspm.h index 67cb3ae38016..7cea7b6c1413 100644 --- a/include/linux/pci-aspm.h +++ b/include/linux/pci-aspm.h | |||
@@ -28,6 +28,7 @@ extern void pcie_aspm_exit_link_state(struct pci_dev *pdev); | |||
28 | extern void pcie_aspm_pm_state_change(struct pci_dev *pdev); | 28 | extern void pcie_aspm_pm_state_change(struct pci_dev *pdev); |
29 | extern void pcie_aspm_powersave_config_link(struct pci_dev *pdev); | 29 | extern void pcie_aspm_powersave_config_link(struct pci_dev *pdev); |
30 | extern void pci_disable_link_state(struct pci_dev *pdev, int state); | 30 | extern void pci_disable_link_state(struct pci_dev *pdev, int state); |
31 | extern void pci_disable_link_state_locked(struct pci_dev *pdev, int state); | ||
31 | extern void pcie_clear_aspm(void); | 32 | extern void pcie_clear_aspm(void); |
32 | extern void pcie_no_aspm(void); | 33 | extern void pcie_no_aspm(void); |
33 | #else | 34 | #else |
diff --git a/include/linux/pci.h b/include/linux/pci.h index 96f70d7e058d..c446b5ca2d38 100644 --- a/include/linux/pci.h +++ b/include/linux/pci.h | |||
@@ -214,12 +214,17 @@ enum pci_bus_speed { | |||
214 | PCI_SPEED_UNKNOWN = 0xff, | 214 | PCI_SPEED_UNKNOWN = 0xff, |
215 | }; | 215 | }; |
216 | 216 | ||
217 | struct pci_cap_saved_state { | 217 | struct pci_cap_saved_data { |
218 | struct hlist_node next; | ||
219 | char cap_nr; | 218 | char cap_nr; |
219 | unsigned int size; | ||
220 | u32 data[0]; | 220 | u32 data[0]; |
221 | }; | 221 | }; |
222 | 222 | ||
223 | struct pci_cap_saved_state { | ||
224 | struct hlist_node next; | ||
225 | struct pci_cap_saved_data cap; | ||
226 | }; | ||
227 | |||
223 | struct pcie_link_state; | 228 | struct pcie_link_state; |
224 | struct pci_vpd; | 229 | struct pci_vpd; |
225 | struct pci_sriov; | 230 | struct pci_sriov; |
@@ -366,7 +371,7 @@ static inline struct pci_cap_saved_state *pci_find_saved_cap( | |||
366 | struct hlist_node *pos; | 371 | struct hlist_node *pos; |
367 | 372 | ||
368 | hlist_for_each_entry(tmp, pos, &pci_dev->saved_cap_space, next) { | 373 | hlist_for_each_entry(tmp, pos, &pci_dev->saved_cap_space, next) { |
369 | if (tmp->cap_nr == cap) | 374 | if (tmp->cap.cap_nr == cap) |
370 | return tmp; | 375 | return tmp; |
371 | } | 376 | } |
372 | return NULL; | 377 | return NULL; |
@@ -807,6 +812,10 @@ size_t pci_get_rom_size(struct pci_dev *pdev, void __iomem *rom, size_t size); | |||
807 | /* Power management related routines */ | 812 | /* Power management related routines */ |
808 | int pci_save_state(struct pci_dev *dev); | 813 | int pci_save_state(struct pci_dev *dev); |
809 | void pci_restore_state(struct pci_dev *dev); | 814 | void pci_restore_state(struct pci_dev *dev); |
815 | struct pci_saved_state *pci_store_saved_state(struct pci_dev *dev); | ||
816 | int pci_load_saved_state(struct pci_dev *dev, struct pci_saved_state *state); | ||
817 | int pci_load_and_free_saved_state(struct pci_dev *dev, | ||
818 | struct pci_saved_state **state); | ||
810 | int __pci_complete_power_transition(struct pci_dev *dev, pci_power_t state); | 819 | int __pci_complete_power_transition(struct pci_dev *dev, pci_power_t state); |
811 | int pci_set_power_state(struct pci_dev *dev, pci_power_t state); | 820 | int pci_set_power_state(struct pci_dev *dev, pci_power_t state); |
812 | pci_power_t pci_choose_state(struct pci_dev *dev, pm_message_t state); | 821 | pci_power_t pci_choose_state(struct pci_dev *dev, pm_message_t state); |
@@ -828,6 +837,23 @@ static inline int pci_enable_wake(struct pci_dev *dev, pci_power_t state, | |||
828 | return __pci_enable_wake(dev, state, false, enable); | 837 | return __pci_enable_wake(dev, state, false, enable); |
829 | } | 838 | } |
830 | 839 | ||
840 | #define PCI_EXP_IDO_REQUEST (1<<0) | ||
841 | #define PCI_EXP_IDO_COMPLETION (1<<1) | ||
842 | void pci_enable_ido(struct pci_dev *dev, unsigned long type); | ||
843 | void pci_disable_ido(struct pci_dev *dev, unsigned long type); | ||
844 | |||
845 | enum pci_obff_signal_type { | ||
846 | PCI_EXP_OBFF_SIGNAL_L0, | ||
847 | PCI_EXP_OBFF_SIGNAL_ALWAYS, | ||
848 | }; | ||
849 | int pci_enable_obff(struct pci_dev *dev, enum pci_obff_signal_type); | ||
850 | void pci_disable_obff(struct pci_dev *dev); | ||
851 | |||
852 | bool pci_ltr_supported(struct pci_dev *dev); | ||
853 | int pci_enable_ltr(struct pci_dev *dev); | ||
854 | void pci_disable_ltr(struct pci_dev *dev); | ||
855 | int pci_set_ltr(struct pci_dev *dev, int snoop_lat_ns, int nosnoop_lat_ns); | ||
856 | |||
831 | /* For use by arch with custom probe code */ | 857 | /* For use by arch with custom probe code */ |
832 | void set_pcie_port_type(struct pci_dev *pdev); | 858 | void set_pcie_port_type(struct pci_dev *pdev); |
833 | void set_pcie_hotplug_bridge(struct pci_dev *pdev); | 859 | void set_pcie_hotplug_bridge(struct pci_dev *pdev); |
@@ -915,8 +941,11 @@ int pci_cfg_space_size_ext(struct pci_dev *dev); | |||
915 | int pci_cfg_space_size(struct pci_dev *dev); | 941 | int pci_cfg_space_size(struct pci_dev *dev); |
916 | unsigned char pci_bus_max_busnr(struct pci_bus *bus); | 942 | unsigned char pci_bus_max_busnr(struct pci_bus *bus); |
917 | 943 | ||
944 | #define PCI_VGA_STATE_CHANGE_BRIDGE (1 << 0) | ||
945 | #define PCI_VGA_STATE_CHANGE_DECODES (1 << 1) | ||
946 | |||
918 | int pci_set_vga_state(struct pci_dev *pdev, bool decode, | 947 | int pci_set_vga_state(struct pci_dev *pdev, bool decode, |
919 | unsigned int command_bits, bool change_bridge); | 948 | unsigned int command_bits, u32 flags); |
920 | /* kmem_cache style wrapper around pci_alloc_consistent() */ | 949 | /* kmem_cache style wrapper around pci_alloc_consistent() */ |
921 | 950 | ||
922 | #include <linux/pci-dma.h> | 951 | #include <linux/pci-dma.h> |
@@ -1061,7 +1090,7 @@ static inline int pci_proc_domain(struct pci_bus *bus) | |||
1061 | 1090 | ||
1062 | /* some architectures require additional setup to direct VGA traffic */ | 1091 | /* some architectures require additional setup to direct VGA traffic */ |
1063 | typedef int (*arch_set_vga_state_t)(struct pci_dev *pdev, bool decode, | 1092 | typedef int (*arch_set_vga_state_t)(struct pci_dev *pdev, bool decode, |
1064 | unsigned int command_bits, bool change_bridge); | 1093 | unsigned int command_bits, u32 flags); |
1065 | extern void pci_register_set_vga_state(arch_set_vga_state_t func); | 1094 | extern void pci_register_set_vga_state(arch_set_vga_state_t func); |
1066 | 1095 | ||
1067 | #else /* CONFIG_PCI is not enabled */ | 1096 | #else /* CONFIG_PCI is not enabled */ |
@@ -1207,6 +1236,23 @@ static inline int pci_enable_wake(struct pci_dev *dev, pci_power_t state, | |||
1207 | return 0; | 1236 | return 0; |
1208 | } | 1237 | } |
1209 | 1238 | ||
1239 | static inline void pci_enable_ido(struct pci_dev *dev, unsigned long type) | ||
1240 | { | ||
1241 | } | ||
1242 | |||
1243 | static inline void pci_disable_ido(struct pci_dev *dev, unsigned long type) | ||
1244 | { | ||
1245 | } | ||
1246 | |||
1247 | static inline int pci_enable_obff(struct pci_dev *dev, unsigned long type) | ||
1248 | { | ||
1249 | return 0; | ||
1250 | } | ||
1251 | |||
1252 | static inline void pci_disable_obff(struct pci_dev *dev) | ||
1253 | { | ||
1254 | } | ||
1255 | |||
1210 | static inline int pci_request_regions(struct pci_dev *dev, const char *res_name) | 1256 | static inline int pci_request_regions(struct pci_dev *dev, const char *res_name) |
1211 | { | 1257 | { |
1212 | return -EIO; | 1258 | return -EIO; |
diff --git a/include/linux/pci_ids.h b/include/linux/pci_ids.h index 8652a4fa3fe2..a311008af5e1 100644 --- a/include/linux/pci_ids.h +++ b/include/linux/pci_ids.h | |||
@@ -2483,6 +2483,9 @@ | |||
2483 | #define PCI_DEVICE_ID_INTEL_COUGARPOINT_LPC_MAX 0x1c5f | 2483 | #define PCI_DEVICE_ID_INTEL_COUGARPOINT_LPC_MAX 0x1c5f |
2484 | #define PCI_DEVICE_ID_INTEL_PATSBURG_LPC_0 0x1d40 | 2484 | #define PCI_DEVICE_ID_INTEL_PATSBURG_LPC_0 0x1d40 |
2485 | #define PCI_DEVICE_ID_INTEL_PATSBURG_LPC_1 0x1d41 | 2485 | #define PCI_DEVICE_ID_INTEL_PATSBURG_LPC_1 0x1d41 |
2486 | #define PCI_DEVICE_ID_INTEL_PANTHERPOINT_XHCI 0x1e31 | ||
2487 | #define PCI_DEVICE_ID_INTEL_PANTHERPOINT_LPC_MIN 0x1e40 | ||
2488 | #define PCI_DEVICE_ID_INTEL_PANTHERPOINT_LPC_MAX 0x1e5f | ||
2486 | #define PCI_DEVICE_ID_INTEL_DH89XXCC_LPC_MIN 0x2310 | 2489 | #define PCI_DEVICE_ID_INTEL_DH89XXCC_LPC_MIN 0x2310 |
2487 | #define PCI_DEVICE_ID_INTEL_DH89XXCC_LPC_MAX 0x231f | 2490 | #define PCI_DEVICE_ID_INTEL_DH89XXCC_LPC_MAX 0x231f |
2488 | #define PCI_DEVICE_ID_INTEL_82801AA_0 0x2410 | 2491 | #define PCI_DEVICE_ID_INTEL_82801AA_0 0x2410 |
diff --git a/include/linux/pci_regs.h b/include/linux/pci_regs.h index be01380f798a..e8840964aca1 100644 --- a/include/linux/pci_regs.h +++ b/include/linux/pci_regs.h | |||
@@ -508,8 +508,18 @@ | |||
508 | #define PCI_EXP_RTSTA_PENDING 0x20000 /* PME pending */ | 508 | #define PCI_EXP_RTSTA_PENDING 0x20000 /* PME pending */ |
509 | #define PCI_EXP_DEVCAP2 36 /* Device Capabilities 2 */ | 509 | #define PCI_EXP_DEVCAP2 36 /* Device Capabilities 2 */ |
510 | #define PCI_EXP_DEVCAP2_ARI 0x20 /* Alternative Routing-ID */ | 510 | #define PCI_EXP_DEVCAP2_ARI 0x20 /* Alternative Routing-ID */ |
511 | #define PCI_EXP_DEVCAP2_LTR 0x800 /* Latency tolerance reporting */ | ||
512 | #define PCI_EXP_OBFF_MASK 0xc0000 /* OBFF support mechanism */ | ||
513 | #define PCI_EXP_OBFF_MSG 0x40000 /* New message signaling */ | ||
514 | #define PCI_EXP_OBFF_WAKE 0x80000 /* Re-use WAKE# for OBFF */ | ||
511 | #define PCI_EXP_DEVCTL2 40 /* Device Control 2 */ | 515 | #define PCI_EXP_DEVCTL2 40 /* Device Control 2 */ |
512 | #define PCI_EXP_DEVCTL2_ARI 0x20 /* Alternative Routing-ID */ | 516 | #define PCI_EXP_DEVCTL2_ARI 0x20 /* Alternative Routing-ID */ |
517 | #define PCI_EXP_IDO_REQ_EN 0x100 /* ID-based ordering request enable */ | ||
518 | #define PCI_EXP_IDO_CMP_EN 0x200 /* ID-based ordering completion enable */ | ||
519 | #define PCI_EXP_LTR_EN 0x400 /* Latency tolerance reporting */ | ||
520 | #define PCI_EXP_OBFF_MSGA_EN 0x2000 /* OBFF enable with Message type A */ | ||
521 | #define PCI_EXP_OBFF_MSGB_EN 0x4000 /* OBFF enable with Message type B */ | ||
522 | #define PCI_EXP_OBFF_WAKE_EN 0x6000 /* OBFF using WAKE# signaling */ | ||
513 | #define PCI_EXP_LNKCTL2 48 /* Link Control 2 */ | 523 | #define PCI_EXP_LNKCTL2 48 /* Link Control 2 */ |
514 | #define PCI_EXP_SLTCTL2 56 /* Slot Control 2 */ | 524 | #define PCI_EXP_SLTCTL2 56 /* Slot Control 2 */ |
515 | 525 | ||
@@ -527,6 +537,7 @@ | |||
527 | #define PCI_EXT_CAP_ID_ARI 14 | 537 | #define PCI_EXT_CAP_ID_ARI 14 |
528 | #define PCI_EXT_CAP_ID_ATS 15 | 538 | #define PCI_EXT_CAP_ID_ATS 15 |
529 | #define PCI_EXT_CAP_ID_SRIOV 16 | 539 | #define PCI_EXT_CAP_ID_SRIOV 16 |
540 | #define PCI_EXT_CAP_ID_LTR 24 | ||
530 | 541 | ||
531 | /* Advanced Error Reporting */ | 542 | /* Advanced Error Reporting */ |
532 | #define PCI_ERR_UNCOR_STATUS 4 /* Uncorrectable Error Status */ | 543 | #define PCI_ERR_UNCOR_STATUS 4 /* Uncorrectable Error Status */ |
@@ -683,6 +694,12 @@ | |||
683 | #define PCI_SRIOV_VFM_MO 0x2 /* Active.MigrateOut */ | 694 | #define PCI_SRIOV_VFM_MO 0x2 /* Active.MigrateOut */ |
684 | #define PCI_SRIOV_VFM_AV 0x3 /* Active.Available */ | 695 | #define PCI_SRIOV_VFM_AV 0x3 /* Active.Available */ |
685 | 696 | ||
697 | #define PCI_LTR_MAX_SNOOP_LAT 0x4 | ||
698 | #define PCI_LTR_MAX_NOSNOOP_LAT 0x6 | ||
699 | #define PCI_LTR_VALUE_MASK 0x000003ff | ||
700 | #define PCI_LTR_SCALE_MASK 0x00001c00 | ||
701 | #define PCI_LTR_SCALE_SHIFT 10 | ||
702 | |||
686 | /* Access Control Service */ | 703 | /* Access Control Service */ |
687 | #define PCI_ACS_CAP 0x04 /* ACS Capability Register */ | 704 | #define PCI_ACS_CAP 0x04 /* ACS Capability Register */ |
688 | #define PCI_ACS_SV 0x01 /* Source Validation */ | 705 | #define PCI_ACS_SV 0x01 /* Source Validation */ |
diff --git a/include/linux/percpu_counter.h b/include/linux/percpu_counter.h index 46f6ba56fa91..5edc9014263a 100644 --- a/include/linux/percpu_counter.h +++ b/include/linux/percpu_counter.h | |||
@@ -75,7 +75,7 @@ static inline s64 percpu_counter_read_positive(struct percpu_counter *fbc) | |||
75 | barrier(); /* Prevent reloads of fbc->count */ | 75 | barrier(); /* Prevent reloads of fbc->count */ |
76 | if (ret >= 0) | 76 | if (ret >= 0) |
77 | return ret; | 77 | return ret; |
78 | return 1; | 78 | return 0; |
79 | } | 79 | } |
80 | 80 | ||
81 | static inline int percpu_counter_initialized(struct percpu_counter *fbc) | 81 | static inline int percpu_counter_initialized(struct percpu_counter *fbc) |
@@ -133,6 +133,10 @@ static inline s64 percpu_counter_read(struct percpu_counter *fbc) | |||
133 | return fbc->count; | 133 | return fbc->count; |
134 | } | 134 | } |
135 | 135 | ||
136 | /* | ||
137 | * percpu_counter is intended to track positive numbers. In the UP case the | ||
138 | * number should never be negative. | ||
139 | */ | ||
136 | static inline s64 percpu_counter_read_positive(struct percpu_counter *fbc) | 140 | static inline s64 percpu_counter_read_positive(struct percpu_counter *fbc) |
137 | { | 141 | { |
138 | return fbc->count; | 142 | return fbc->count; |
diff --git a/include/linux/pid.h b/include/linux/pid.h index cdced84261d7..b152d44fb181 100644 --- a/include/linux/pid.h +++ b/include/linux/pid.h | |||
@@ -105,7 +105,7 @@ extern struct pid_namespace init_pid_ns; | |||
105 | * or rcu_read_lock() held. | 105 | * or rcu_read_lock() held. |
106 | * | 106 | * |
107 | * find_pid_ns() finds the pid in the namespace specified | 107 | * find_pid_ns() finds the pid in the namespace specified |
108 | * find_vpid() finr the pid by its virtual id, i.e. in the current namespace | 108 | * find_vpid() finds the pid by its virtual id, i.e. in the current namespace |
109 | * | 109 | * |
110 | * see also find_task_by_vpid() set in include/linux/sched.h | 110 | * see also find_task_by_vpid() set in include/linux/sched.h |
111 | */ | 111 | */ |
diff --git a/include/linux/pm_qos_params.h b/include/linux/pm_qos_params.h index 77cbddb3784c..a7d87f911cab 100644 --- a/include/linux/pm_qos_params.h +++ b/include/linux/pm_qos_params.h | |||
@@ -16,6 +16,10 @@ | |||
16 | #define PM_QOS_NUM_CLASSES 4 | 16 | #define PM_QOS_NUM_CLASSES 4 |
17 | #define PM_QOS_DEFAULT_VALUE -1 | 17 | #define PM_QOS_DEFAULT_VALUE -1 |
18 | 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 | |||
19 | struct pm_qos_request_list { | 23 | struct pm_qos_request_list { |
20 | struct plist_node list; | 24 | struct plist_node list; |
21 | int pm_qos_class; | 25 | int pm_qos_class; |
diff --git a/include/linux/pnfs_osd_xdr.h b/include/linux/pnfs_osd_xdr.h new file mode 100644 index 000000000000..76efbdd01622 --- /dev/null +++ b/include/linux/pnfs_osd_xdr.h | |||
@@ -0,0 +1,345 @@ | |||
1 | /* | ||
2 | * pNFS-osd on-the-wire data structures | ||
3 | * | ||
4 | * Copyright (C) 2007 Panasas Inc. [year of first publication] | ||
5 | * All rights reserved. | ||
6 | * | ||
7 | * Benny Halevy <bhalevy@panasas.com> | ||
8 | * Boaz Harrosh <bharrosh@panasas.com> | ||
9 | * | ||
10 | * This program is free software; you can redistribute it and/or modify | ||
11 | * it under the terms of the GNU General Public License version 2 | ||
12 | * See the file COPYING included with this distribution for more details. | ||
13 | * | ||
14 | * Redistribution and use in source and binary forms, with or without | ||
15 | * modification, are permitted provided that the following conditions | ||
16 | * are met: | ||
17 | * | ||
18 | * 1. Redistributions of source code must retain the above copyright | ||
19 | * notice, this list of conditions and the following disclaimer. | ||
20 | * 2. Redistributions in binary form must reproduce the above copyright | ||
21 | * notice, this list of conditions and the following disclaimer in the | ||
22 | * documentation and/or other materials provided with the distribution. | ||
23 | * 3. Neither the name of the Panasas company nor the names of its | ||
24 | * contributors may be used to endorse or promote products derived | ||
25 | * from this software without specific prior written permission. | ||
26 | * | ||
27 | * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED | ||
28 | * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF | ||
29 | * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||
30 | * DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE | ||
31 | * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR | ||
32 | * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF | ||
33 | * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR | ||
34 | * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF | ||
35 | * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING | ||
36 | * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||
37 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
38 | */ | ||
39 | #ifndef __PNFS_OSD_XDR_H__ | ||
40 | #define __PNFS_OSD_XDR_H__ | ||
41 | |||
42 | #include <linux/nfs_fs.h> | ||
43 | #include <linux/nfs_page.h> | ||
44 | #include <scsi/osd_protocol.h> | ||
45 | |||
46 | #define PNFS_OSD_OSDNAME_MAXSIZE 256 | ||
47 | |||
48 | /* | ||
49 | * draft-ietf-nfsv4-minorversion-22 | ||
50 | * draft-ietf-nfsv4-pnfs-obj-12 | ||
51 | */ | ||
52 | |||
53 | /* Layout Structure */ | ||
54 | |||
55 | enum pnfs_osd_raid_algorithm4 { | ||
56 | PNFS_OSD_RAID_0 = 1, | ||
57 | PNFS_OSD_RAID_4 = 2, | ||
58 | PNFS_OSD_RAID_5 = 3, | ||
59 | PNFS_OSD_RAID_PQ = 4 /* Reed-Solomon P+Q */ | ||
60 | }; | ||
61 | |||
62 | /* struct pnfs_osd_data_map4 { | ||
63 | * uint32_t odm_num_comps; | ||
64 | * length4 odm_stripe_unit; | ||
65 | * uint32_t odm_group_width; | ||
66 | * uint32_t odm_group_depth; | ||
67 | * uint32_t odm_mirror_cnt; | ||
68 | * pnfs_osd_raid_algorithm4 odm_raid_algorithm; | ||
69 | * }; | ||
70 | */ | ||
71 | struct pnfs_osd_data_map { | ||
72 | u32 odm_num_comps; | ||
73 | u64 odm_stripe_unit; | ||
74 | u32 odm_group_width; | ||
75 | u32 odm_group_depth; | ||
76 | u32 odm_mirror_cnt; | ||
77 | u32 odm_raid_algorithm; | ||
78 | }; | ||
79 | |||
80 | /* struct pnfs_osd_objid4 { | ||
81 | * deviceid4 oid_device_id; | ||
82 | * uint64_t oid_partition_id; | ||
83 | * uint64_t oid_object_id; | ||
84 | * }; | ||
85 | */ | ||
86 | struct pnfs_osd_objid { | ||
87 | struct nfs4_deviceid oid_device_id; | ||
88 | u64 oid_partition_id; | ||
89 | u64 oid_object_id; | ||
90 | }; | ||
91 | |||
92 | /* For printout. I use: | ||
93 | * kprint("dev(%llx:%llx)", _DEVID_LO(pointer), _DEVID_HI(pointer)); | ||
94 | * BE style | ||
95 | */ | ||
96 | #define _DEVID_LO(oid_device_id) \ | ||
97 | (unsigned long long)be64_to_cpup((__be64 *)(oid_device_id)->data) | ||
98 | |||
99 | #define _DEVID_HI(oid_device_id) \ | ||
100 | (unsigned long long)be64_to_cpup(((__be64 *)(oid_device_id)->data) + 1) | ||
101 | |||
102 | static inline int | ||
103 | pnfs_osd_objid_xdr_sz(void) | ||
104 | { | ||
105 | return (NFS4_DEVICEID4_SIZE / 4) + 2 + 2; | ||
106 | } | ||
107 | |||
108 | enum pnfs_osd_version { | ||
109 | PNFS_OSD_MISSING = 0, | ||
110 | PNFS_OSD_VERSION_1 = 1, | ||
111 | PNFS_OSD_VERSION_2 = 2 | ||
112 | }; | ||
113 | |||
114 | struct pnfs_osd_opaque_cred { | ||
115 | u32 cred_len; | ||
116 | void *cred; | ||
117 | }; | ||
118 | |||
119 | enum pnfs_osd_cap_key_sec { | ||
120 | PNFS_OSD_CAP_KEY_SEC_NONE = 0, | ||
121 | PNFS_OSD_CAP_KEY_SEC_SSV = 1, | ||
122 | }; | ||
123 | |||
124 | /* struct pnfs_osd_object_cred4 { | ||
125 | * pnfs_osd_objid4 oc_object_id; | ||
126 | * pnfs_osd_version4 oc_osd_version; | ||
127 | * pnfs_osd_cap_key_sec4 oc_cap_key_sec; | ||
128 | * opaque oc_capability_key<>; | ||
129 | * opaque oc_capability<>; | ||
130 | * }; | ||
131 | */ | ||
132 | struct pnfs_osd_object_cred { | ||
133 | struct pnfs_osd_objid oc_object_id; | ||
134 | u32 oc_osd_version; | ||
135 | u32 oc_cap_key_sec; | ||
136 | struct pnfs_osd_opaque_cred oc_cap_key; | ||
137 | struct pnfs_osd_opaque_cred oc_cap; | ||
138 | }; | ||
139 | |||
140 | /* struct pnfs_osd_layout4 { | ||
141 | * pnfs_osd_data_map4 olo_map; | ||
142 | * uint32_t olo_comps_index; | ||
143 | * pnfs_osd_object_cred4 olo_components<>; | ||
144 | * }; | ||
145 | */ | ||
146 | struct pnfs_osd_layout { | ||
147 | struct pnfs_osd_data_map olo_map; | ||
148 | u32 olo_comps_index; | ||
149 | u32 olo_num_comps; | ||
150 | struct pnfs_osd_object_cred *olo_comps; | ||
151 | }; | ||
152 | |||
153 | /* Device Address */ | ||
154 | enum pnfs_osd_targetid_type { | ||
155 | OBJ_TARGET_ANON = 1, | ||
156 | OBJ_TARGET_SCSI_NAME = 2, | ||
157 | OBJ_TARGET_SCSI_DEVICE_ID = 3, | ||
158 | }; | ||
159 | |||
160 | /* union pnfs_osd_targetid4 switch (pnfs_osd_targetid_type4 oti_type) { | ||
161 | * case OBJ_TARGET_SCSI_NAME: | ||
162 | * string oti_scsi_name<>; | ||
163 | * | ||
164 | * case OBJ_TARGET_SCSI_DEVICE_ID: | ||
165 | * opaque oti_scsi_device_id<>; | ||
166 | * | ||
167 | * default: | ||
168 | * void; | ||
169 | * }; | ||
170 | * | ||
171 | * union pnfs_osd_targetaddr4 switch (bool ota_available) { | ||
172 | * case TRUE: | ||
173 | * netaddr4 ota_netaddr; | ||
174 | * case FALSE: | ||
175 | * void; | ||
176 | * }; | ||
177 | * | ||
178 | * struct pnfs_osd_deviceaddr4 { | ||
179 | * pnfs_osd_targetid4 oda_targetid; | ||
180 | * pnfs_osd_targetaddr4 oda_targetaddr; | ||
181 | * uint64_t oda_lun; | ||
182 | * opaque oda_systemid<>; | ||
183 | * pnfs_osd_object_cred4 oda_root_obj_cred; | ||
184 | * opaque oda_osdname<>; | ||
185 | * }; | ||
186 | */ | ||
187 | struct pnfs_osd_targetid { | ||
188 | u32 oti_type; | ||
189 | struct nfs4_string oti_scsi_device_id; | ||
190 | }; | ||
191 | |||
192 | enum { PNFS_OSD_TARGETID_MAX = 1 + PNFS_OSD_OSDNAME_MAXSIZE / 4 }; | ||
193 | |||
194 | /* struct netaddr4 { | ||
195 | * // see struct rpcb in RFC1833 | ||
196 | * string r_netid<>; // network id | ||
197 | * string r_addr<>; // universal address | ||
198 | * }; | ||
199 | */ | ||
200 | struct pnfs_osd_net_addr { | ||
201 | struct nfs4_string r_netid; | ||
202 | struct nfs4_string r_addr; | ||
203 | }; | ||
204 | |||
205 | struct pnfs_osd_targetaddr { | ||
206 | u32 ota_available; | ||
207 | struct pnfs_osd_net_addr ota_netaddr; | ||
208 | }; | ||
209 | |||
210 | enum { | ||
211 | NETWORK_ID_MAX = 16 / 4, | ||
212 | UNIVERSAL_ADDRESS_MAX = 64 / 4, | ||
213 | PNFS_OSD_TARGETADDR_MAX = 3 + NETWORK_ID_MAX + UNIVERSAL_ADDRESS_MAX, | ||
214 | }; | ||
215 | |||
216 | struct pnfs_osd_deviceaddr { | ||
217 | struct pnfs_osd_targetid oda_targetid; | ||
218 | struct pnfs_osd_targetaddr oda_targetaddr; | ||
219 | u8 oda_lun[8]; | ||
220 | struct nfs4_string oda_systemid; | ||
221 | struct pnfs_osd_object_cred oda_root_obj_cred; | ||
222 | struct nfs4_string oda_osdname; | ||
223 | }; | ||
224 | |||
225 | enum { | ||
226 | ODA_OSDNAME_MAX = PNFS_OSD_OSDNAME_MAXSIZE / 4, | ||
227 | PNFS_OSD_DEVICEADDR_MAX = | ||
228 | PNFS_OSD_TARGETID_MAX + PNFS_OSD_TARGETADDR_MAX + | ||
229 | 2 /*oda_lun*/ + | ||
230 | 1 + OSD_SYSTEMID_LEN + | ||
231 | 1 + ODA_OSDNAME_MAX, | ||
232 | }; | ||
233 | |||
234 | /* LAYOUTCOMMIT: layoutupdate */ | ||
235 | |||
236 | /* union pnfs_osd_deltaspaceused4 switch (bool dsu_valid) { | ||
237 | * case TRUE: | ||
238 | * int64_t dsu_delta; | ||
239 | * case FALSE: | ||
240 | * void; | ||
241 | * }; | ||
242 | * | ||
243 | * struct pnfs_osd_layoutupdate4 { | ||
244 | * pnfs_osd_deltaspaceused4 olu_delta_space_used; | ||
245 | * bool olu_ioerr_flag; | ||
246 | * }; | ||
247 | */ | ||
248 | struct pnfs_osd_layoutupdate { | ||
249 | u32 dsu_valid; | ||
250 | s64 dsu_delta; | ||
251 | u32 olu_ioerr_flag; | ||
252 | }; | ||
253 | |||
254 | /* LAYOUTRETURN: I/O Rrror Report */ | ||
255 | |||
256 | enum pnfs_osd_errno { | ||
257 | PNFS_OSD_ERR_EIO = 1, | ||
258 | PNFS_OSD_ERR_NOT_FOUND = 2, | ||
259 | PNFS_OSD_ERR_NO_SPACE = 3, | ||
260 | PNFS_OSD_ERR_BAD_CRED = 4, | ||
261 | PNFS_OSD_ERR_NO_ACCESS = 5, | ||
262 | PNFS_OSD_ERR_UNREACHABLE = 6, | ||
263 | PNFS_OSD_ERR_RESOURCE = 7 | ||
264 | }; | ||
265 | |||
266 | /* struct pnfs_osd_ioerr4 { | ||
267 | * pnfs_osd_objid4 oer_component; | ||
268 | * length4 oer_comp_offset; | ||
269 | * length4 oer_comp_length; | ||
270 | * bool oer_iswrite; | ||
271 | * pnfs_osd_errno4 oer_errno; | ||
272 | * }; | ||
273 | */ | ||
274 | struct pnfs_osd_ioerr { | ||
275 | struct pnfs_osd_objid oer_component; | ||
276 | u64 oer_comp_offset; | ||
277 | u64 oer_comp_length; | ||
278 | u32 oer_iswrite; | ||
279 | u32 oer_errno; | ||
280 | }; | ||
281 | |||
282 | /* OSD XDR API */ | ||
283 | /* Layout helpers */ | ||
284 | /* Layout decoding is done in two parts: | ||
285 | * 1. First Call pnfs_osd_xdr_decode_layout_map to read in only the header part | ||
286 | * of the layout. @iter members need not be initialized. | ||
287 | * Returned: | ||
288 | * @layout members are set. (@layout->olo_comps set to NULL). | ||
289 | * | ||
290 | * Zero on success, or negative error if passed xdr is broken. | ||
291 | * | ||
292 | * 2. 2nd Call pnfs_osd_xdr_decode_layout_comp() in a loop until it returns | ||
293 | * false, to decode the next component. | ||
294 | * Returned: | ||
295 | * true if there is more to decode or false if we are done or error. | ||
296 | * | ||
297 | * Example: | ||
298 | * struct pnfs_osd_xdr_decode_layout_iter iter; | ||
299 | * struct pnfs_osd_layout layout; | ||
300 | * struct pnfs_osd_object_cred comp; | ||
301 | * int status; | ||
302 | * | ||
303 | * status = pnfs_osd_xdr_decode_layout_map(&layout, &iter, xdr); | ||
304 | * if (unlikely(status)) | ||
305 | * goto err; | ||
306 | * while(pnfs_osd_xdr_decode_layout_comp(&comp, &iter, xdr, &status)) { | ||
307 | * // All of @comp strings point to inside the xdr_buffer | ||
308 | * // or scrach buffer. Copy them out to user memory eg. | ||
309 | * copy_single_comp(dest_comp++, &comp); | ||
310 | * } | ||
311 | * if (unlikely(status)) | ||
312 | * goto err; | ||
313 | */ | ||
314 | |||
315 | struct pnfs_osd_xdr_decode_layout_iter { | ||
316 | unsigned total_comps; | ||
317 | unsigned decoded_comps; | ||
318 | }; | ||
319 | |||
320 | extern int pnfs_osd_xdr_decode_layout_map(struct pnfs_osd_layout *layout, | ||
321 | struct pnfs_osd_xdr_decode_layout_iter *iter, struct xdr_stream *xdr); | ||
322 | |||
323 | extern bool pnfs_osd_xdr_decode_layout_comp(struct pnfs_osd_object_cred *comp, | ||
324 | struct pnfs_osd_xdr_decode_layout_iter *iter, struct xdr_stream *xdr, | ||
325 | int *err); | ||
326 | |||
327 | /* Device Info helpers */ | ||
328 | |||
329 | /* Note: All strings inside @deviceaddr point to space inside @p. | ||
330 | * @p should stay valid while @deviceaddr is in use. | ||
331 | */ | ||
332 | extern void pnfs_osd_xdr_decode_deviceaddr( | ||
333 | struct pnfs_osd_deviceaddr *deviceaddr, __be32 *p); | ||
334 | |||
335 | /* layoutupdate (layout_commit) xdr helpers */ | ||
336 | extern int | ||
337 | pnfs_osd_xdr_encode_layoutupdate(struct xdr_stream *xdr, | ||
338 | struct pnfs_osd_layoutupdate *lou); | ||
339 | |||
340 | /* osd_ioerror encoding/decoding (layout_return) */ | ||
341 | /* Client */ | ||
342 | extern __be32 *pnfs_osd_xdr_ioerr_reserve_space(struct xdr_stream *xdr); | ||
343 | extern void pnfs_osd_xdr_encode_ioerr(__be32 *p, struct pnfs_osd_ioerr *ioerr); | ||
344 | |||
345 | #endif /* __PNFS_OSD_XDR_H__ */ | ||
diff --git a/include/linux/posix-timers.h b/include/linux/posix-timers.h index 808227d40a64..959c14132f46 100644 --- a/include/linux/posix-timers.h +++ b/include/linux/posix-timers.h | |||
@@ -82,6 +82,7 @@ struct k_itimer { | |||
82 | unsigned long expires; | 82 | unsigned long expires; |
83 | } mmtimer; | 83 | } mmtimer; |
84 | struct alarm alarmtimer; | 84 | struct alarm alarmtimer; |
85 | struct rcu_head rcu; | ||
85 | } it; | 86 | } it; |
86 | }; | 87 | }; |
87 | 88 | ||
diff --git a/include/linux/power/isp1704_charger.h b/include/linux/power/isp1704_charger.h new file mode 100644 index 000000000000..68096a6aa2d7 --- /dev/null +++ b/include/linux/power/isp1704_charger.h | |||
@@ -0,0 +1,29 @@ | |||
1 | /* | ||
2 | * ISP1704 USB Charger Detection driver | ||
3 | * | ||
4 | * Copyright (C) 2011 Nokia Corporation | ||
5 | * | ||
6 | * This program is free software; you can redistribute it and/or modify | ||
7 | * it under the terms of the GNU General Public License as published by | ||
8 | * the Free Software Foundation; either version 2 of the License, or | ||
9 | * (at your option) any later version. | ||
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 | * You should have received a copy of the GNU General Public License | ||
17 | * along with this program; if not, write to the Free Software | ||
18 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | ||
19 | */ | ||
20 | |||
21 | |||
22 | #ifndef __ISP1704_CHARGER_H | ||
23 | #define __ISP1704_CHARGER_H | ||
24 | |||
25 | struct isp1704_charger_data { | ||
26 | void (*set_power)(bool on); | ||
27 | }; | ||
28 | |||
29 | #endif | ||
diff --git a/include/linux/power/max8903_charger.h b/include/linux/power/max8903_charger.h new file mode 100644 index 000000000000..24f51db8a83f --- /dev/null +++ b/include/linux/power/max8903_charger.h | |||
@@ -0,0 +1,57 @@ | |||
1 | /* | ||
2 | * max8903_charger.h - Maxim 8903 USB/Adapter Charger Driver | ||
3 | * | ||
4 | * Copyright (C) 2011 Samsung Electronics | ||
5 | * MyungJoo Ham <myungjoo.ham@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 | |||
23 | #ifndef __MAX8903_CHARGER_H__ | ||
24 | #define __MAX8903_CHARGER_H__ | ||
25 | |||
26 | struct max8903_pdata { | ||
27 | /* | ||
28 | * GPIOs | ||
29 | * cen, chg, flt, and usus are optional. | ||
30 | * dok, dcm, and uok are not optional depending on the status of | ||
31 | * dc_valid and usb_valid. | ||
32 | */ | ||
33 | int cen; /* Charger Enable input */ | ||
34 | int dok; /* DC(Adapter) Power OK output */ | ||
35 | int uok; /* USB Power OK output */ | ||
36 | int chg; /* Charger status output */ | ||
37 | int flt; /* Fault output */ | ||
38 | int dcm; /* Current-Limit Mode input (1: DC, 2: USB) */ | ||
39 | int usus; /* USB Suspend Input (1: suspended) */ | ||
40 | |||
41 | /* | ||
42 | * DC(Adapter/TA) is wired | ||
43 | * When dc_valid is true, | ||
44 | * dok and dcm should be valid. | ||
45 | * | ||
46 | * At least one of dc_valid or usb_valid should be true. | ||
47 | */ | ||
48 | bool dc_valid; | ||
49 | /* | ||
50 | * USB is wired | ||
51 | * When usb_valid is true, | ||
52 | * uok should be valid. | ||
53 | */ | ||
54 | bool usb_valid; | ||
55 | }; | ||
56 | |||
57 | #endif /* __MAX8903_CHARGER_H__ */ | ||
diff --git a/include/linux/printk.h b/include/linux/printk.h index ee048e77e1ae..0101d55d9651 100644 --- a/include/linux/printk.h +++ b/include/linux/printk.h | |||
@@ -1,6 +1,8 @@ | |||
1 | #ifndef __KERNEL_PRINTK__ | 1 | #ifndef __KERNEL_PRINTK__ |
2 | #define __KERNEL_PRINTK__ | 2 | #define __KERNEL_PRINTK__ |
3 | 3 | ||
4 | #include <linux/init.h> | ||
5 | |||
4 | extern const char linux_banner[]; | 6 | extern const char linux_banner[]; |
5 | extern const char linux_proc_banner[]; | 7 | extern const char linux_proc_banner[]; |
6 | 8 | ||
@@ -113,6 +115,7 @@ extern int dmesg_restrict; | |||
113 | extern int kptr_restrict; | 115 | extern int kptr_restrict; |
114 | 116 | ||
115 | void log_buf_kexec_setup(void); | 117 | void log_buf_kexec_setup(void); |
118 | void __init setup_log_buf(int early); | ||
116 | #else | 119 | #else |
117 | static inline __attribute__ ((format (printf, 1, 0))) | 120 | static inline __attribute__ ((format (printf, 1, 0))) |
118 | int vprintk(const char *s, va_list args) | 121 | int vprintk(const char *s, va_list args) |
@@ -137,6 +140,10 @@ static inline bool printk_timed_ratelimit(unsigned long *caller_jiffies, | |||
137 | static inline void log_buf_kexec_setup(void) | 140 | static inline void log_buf_kexec_setup(void) |
138 | { | 141 | { |
139 | } | 142 | } |
143 | |||
144 | static inline void setup_log_buf(int early) | ||
145 | { | ||
146 | } | ||
140 | #endif | 147 | #endif |
141 | 148 | ||
142 | extern void dump_stack(void) __cold; | 149 | extern void dump_stack(void) __cold; |
diff --git a/include/linux/proc_fs.h b/include/linux/proc_fs.h index eaf4350c0f90..e7576cf9e32d 100644 --- a/include/linux/proc_fs.h +++ b/include/linux/proc_fs.h | |||
@@ -173,11 +173,7 @@ extern void proc_net_remove(struct net *net, const char *name); | |||
173 | extern struct proc_dir_entry *proc_net_mkdir(struct net *net, const char *name, | 173 | extern struct proc_dir_entry *proc_net_mkdir(struct net *net, const char *name, |
174 | struct proc_dir_entry *parent); | 174 | struct proc_dir_entry *parent); |
175 | 175 | ||
176 | /* While the {get|set|dup}_mm_exe_file functions are for mm_structs, they are | 176 | extern struct file *proc_ns_fget(int fd); |
177 | * only needed to implement /proc/<pid>|self/exe so we define them here. */ | ||
178 | extern void set_mm_exe_file(struct mm_struct *mm, struct file *new_exe_file); | ||
179 | extern struct file *get_mm_exe_file(struct mm_struct *mm); | ||
180 | extern void dup_mm_exe_file(struct mm_struct *oldmm, struct mm_struct *newmm); | ||
181 | 177 | ||
182 | #else | 178 | #else |
183 | 179 | ||
@@ -228,19 +224,11 @@ static inline void pid_ns_release_proc(struct pid_namespace *ns) | |||
228 | { | 224 | { |
229 | } | 225 | } |
230 | 226 | ||
231 | static inline void set_mm_exe_file(struct mm_struct *mm, | 227 | static inline struct file *proc_ns_fget(int fd) |
232 | struct file *new_exe_file) | ||
233 | {} | ||
234 | |||
235 | static inline struct file *get_mm_exe_file(struct mm_struct *mm) | ||
236 | { | 228 | { |
237 | return NULL; | 229 | return ERR_PTR(-EINVAL); |
238 | } | 230 | } |
239 | 231 | ||
240 | static inline void dup_mm_exe_file(struct mm_struct *oldmm, | ||
241 | struct mm_struct *newmm) | ||
242 | {} | ||
243 | |||
244 | #endif /* CONFIG_PROC_FS */ | 232 | #endif /* CONFIG_PROC_FS */ |
245 | 233 | ||
246 | #if !defined(CONFIG_PROC_KCORE) | 234 | #if !defined(CONFIG_PROC_KCORE) |
@@ -252,6 +240,18 @@ kclist_add(struct kcore_list *new, void *addr, size_t size, int type) | |||
252 | extern void kclist_add(struct kcore_list *, void *, size_t, int type); | 240 | extern void kclist_add(struct kcore_list *, void *, size_t, int type); |
253 | #endif | 241 | #endif |
254 | 242 | ||
243 | struct nsproxy; | ||
244 | struct proc_ns_operations { | ||
245 | const char *name; | ||
246 | int type; | ||
247 | void *(*get)(struct task_struct *task); | ||
248 | void (*put)(void *ns); | ||
249 | int (*install)(struct nsproxy *nsproxy, void *ns); | ||
250 | }; | ||
251 | extern const struct proc_ns_operations netns_operations; | ||
252 | extern const struct proc_ns_operations utsns_operations; | ||
253 | extern const struct proc_ns_operations ipcns_operations; | ||
254 | |||
255 | union proc_op { | 255 | union proc_op { |
256 | int (*proc_get_link)(struct inode *, struct path *); | 256 | int (*proc_get_link)(struct inode *, struct path *); |
257 | int (*proc_read)(struct task_struct *task, char *page); | 257 | int (*proc_read)(struct task_struct *task, char *page); |
@@ -270,6 +270,8 @@ struct proc_inode { | |||
270 | struct proc_dir_entry *pde; | 270 | struct proc_dir_entry *pde; |
271 | struct ctl_table_header *sysctl; | 271 | struct ctl_table_header *sysctl; |
272 | struct ctl_table *sysctl_entry; | 272 | struct ctl_table *sysctl_entry; |
273 | void *ns; | ||
274 | const struct proc_ns_operations *ns_ops; | ||
273 | struct inode vfs_inode; | 275 | struct inode vfs_inode; |
274 | }; | 276 | }; |
275 | 277 | ||
@@ -288,12 +290,4 @@ static inline struct net *PDE_NET(struct proc_dir_entry *pde) | |||
288 | return pde->parent->data; | 290 | return pde->parent->data; |
289 | } | 291 | } |
290 | 292 | ||
291 | struct proc_maps_private { | ||
292 | struct pid *pid; | ||
293 | struct task_struct *task; | ||
294 | #ifdef CONFIG_MMU | ||
295 | struct vm_area_struct *tail_vma; | ||
296 | #endif | ||
297 | }; | ||
298 | |||
299 | #endif /* _LINUX_PROC_FS_H */ | 293 | #endif /* _LINUX_PROC_FS_H */ |
diff --git a/include/linux/pti.h b/include/linux/pti.h new file mode 100644 index 000000000000..81af667bb2d5 --- /dev/null +++ b/include/linux/pti.h | |||
@@ -0,0 +1,42 @@ | |||
1 | /* | ||
2 | * Copyright (C) Intel 2011 | ||
3 | * | ||
4 | * This program is free software; you can redistribute it and/or modify | ||
5 | * it under the terms of the GNU General Public License version 2 as | ||
6 | * published by the Free Software Foundation. | ||
7 | * | ||
8 | * This program is distributed in the hope that it will be useful, | ||
9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
11 | * GNU General Public License for more details. | ||
12 | * | ||
13 | * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||
14 | * | ||
15 | * The PTI (Parallel Trace Interface) driver directs trace data routed from | ||
16 | * various parts in the system out through the Intel Penwell PTI port and | ||
17 | * out of the mobile device for analysis with a debugging tool | ||
18 | * (Lauterbach, Fido). This is part of a solution for the MIPI P1149.7, | ||
19 | * compact JTAG, standard. | ||
20 | * | ||
21 | * This header file will allow other parts of the OS to use the | ||
22 | * interface to write out it's contents for debugging a mobile system. | ||
23 | */ | ||
24 | |||
25 | #ifndef PTI_H_ | ||
26 | #define PTI_H_ | ||
27 | |||
28 | /* offset for last dword of any PTI message. Part of MIPI P1149.7 */ | ||
29 | #define PTI_LASTDWORD_DTS 0x30 | ||
30 | |||
31 | /* basic structure used as a write address to the PTI HW */ | ||
32 | struct pti_masterchannel { | ||
33 | u8 master; | ||
34 | u8 channel; | ||
35 | }; | ||
36 | |||
37 | /* the following functions are defined in misc/pti.c */ | ||
38 | void pti_writedata(struct pti_masterchannel *mc, u8 *buf, int count); | ||
39 | struct pti_masterchannel *pti_request_masterchannel(u8 type); | ||
40 | void pti_release_masterchannel(struct pti_masterchannel *mc); | ||
41 | |||
42 | #endif /*PTI_H_*/ | ||
diff --git a/include/linux/ptp_classify.h b/include/linux/ptp_classify.h index 943a85ab0020..e07e2742a865 100644 --- a/include/linux/ptp_classify.h +++ b/include/linux/ptp_classify.h | |||
@@ -25,6 +25,7 @@ | |||
25 | 25 | ||
26 | #include <linux/if_ether.h> | 26 | #include <linux/if_ether.h> |
27 | #include <linux/if_vlan.h> | 27 | #include <linux/if_vlan.h> |
28 | #include <linux/ip.h> | ||
28 | #include <linux/filter.h> | 29 | #include <linux/filter.h> |
29 | #ifdef __KERNEL__ | 30 | #ifdef __KERNEL__ |
30 | #include <linux/in.h> | 31 | #include <linux/in.h> |
@@ -58,6 +59,12 @@ | |||
58 | #define OFF_NEXT 6 | 59 | #define OFF_NEXT 6 |
59 | #define OFF_UDP_DST 2 | 60 | #define OFF_UDP_DST 2 |
60 | 61 | ||
62 | #define OFF_PTP_SOURCE_UUID 22 /* PTPv1 only */ | ||
63 | #define OFF_PTP_SEQUENCE_ID 30 | ||
64 | #define OFF_PTP_CONTROL 32 /* PTPv1 only */ | ||
65 | |||
66 | #define IPV4_HLEN(data) (((struct iphdr *)(data + OFF_IHL))->ihl << 2) | ||
67 | |||
61 | #define IP6_HLEN 40 | 68 | #define IP6_HLEN 40 |
62 | #define UDP_HLEN 8 | 69 | #define UDP_HLEN 8 |
63 | 70 | ||
diff --git a/include/linux/ptp_clock.h b/include/linux/ptp_clock.h new file mode 100644 index 000000000000..94e981f810a2 --- /dev/null +++ b/include/linux/ptp_clock.h | |||
@@ -0,0 +1,84 @@ | |||
1 | /* | ||
2 | * PTP 1588 clock support - user space interface | ||
3 | * | ||
4 | * Copyright (C) 2010 OMICRON electronics GmbH | ||
5 | * | ||
6 | * This program is free software; you can redistribute it and/or modify | ||
7 | * it under the terms of the GNU General Public License as published by | ||
8 | * the Free Software Foundation; either version 2 of the License, or | ||
9 | * (at your option) any later version. | ||
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 | * You should have received a copy of the GNU General Public License | ||
17 | * along with this program; if not, write to the Free Software | ||
18 | * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | ||
19 | */ | ||
20 | |||
21 | #ifndef _PTP_CLOCK_H_ | ||
22 | #define _PTP_CLOCK_H_ | ||
23 | |||
24 | #include <linux/ioctl.h> | ||
25 | #include <linux/types.h> | ||
26 | |||
27 | /* PTP_xxx bits, for the flags field within the request structures. */ | ||
28 | #define PTP_ENABLE_FEATURE (1<<0) | ||
29 | #define PTP_RISING_EDGE (1<<1) | ||
30 | #define PTP_FALLING_EDGE (1<<2) | ||
31 | |||
32 | /* | ||
33 | * struct ptp_clock_time - represents a time value | ||
34 | * | ||
35 | * The sign of the seconds field applies to the whole value. The | ||
36 | * nanoseconds field is always unsigned. The reserved field is | ||
37 | * included for sub-nanosecond resolution, should the demand for | ||
38 | * this ever appear. | ||
39 | * | ||
40 | */ | ||
41 | struct ptp_clock_time { | ||
42 | __s64 sec; /* seconds */ | ||
43 | __u32 nsec; /* nanoseconds */ | ||
44 | __u32 reserved; | ||
45 | }; | ||
46 | |||
47 | struct ptp_clock_caps { | ||
48 | int max_adj; /* Maximum frequency adjustment in parts per billon. */ | ||
49 | int n_alarm; /* Number of programmable alarms. */ | ||
50 | int n_ext_ts; /* Number of external time stamp channels. */ | ||
51 | int n_per_out; /* Number of programmable periodic signals. */ | ||
52 | int pps; /* Whether the clock supports a PPS callback. */ | ||
53 | int rsv[15]; /* Reserved for future use. */ | ||
54 | }; | ||
55 | |||
56 | struct ptp_extts_request { | ||
57 | unsigned int index; /* Which channel to configure. */ | ||
58 | unsigned int flags; /* Bit field for PTP_xxx flags. */ | ||
59 | unsigned int rsv[2]; /* Reserved for future use. */ | ||
60 | }; | ||
61 | |||
62 | struct ptp_perout_request { | ||
63 | struct ptp_clock_time start; /* Absolute start time. */ | ||
64 | struct ptp_clock_time period; /* Desired period, zero means disable. */ | ||
65 | unsigned int index; /* Which channel to configure. */ | ||
66 | unsigned int flags; /* Reserved for future use. */ | ||
67 | unsigned int rsv[4]; /* Reserved for future use. */ | ||
68 | }; | ||
69 | |||
70 | #define PTP_CLK_MAGIC '=' | ||
71 | |||
72 | #define PTP_CLOCK_GETCAPS _IOR(PTP_CLK_MAGIC, 1, struct ptp_clock_caps) | ||
73 | #define PTP_EXTTS_REQUEST _IOW(PTP_CLK_MAGIC, 2, struct ptp_extts_request) | ||
74 | #define PTP_PEROUT_REQUEST _IOW(PTP_CLK_MAGIC, 3, struct ptp_perout_request) | ||
75 | #define PTP_ENABLE_PPS _IOW(PTP_CLK_MAGIC, 4, int) | ||
76 | |||
77 | struct ptp_extts_event { | ||
78 | struct ptp_clock_time t; /* Time event occured. */ | ||
79 | unsigned int index; /* Which channel produced the event. */ | ||
80 | unsigned int flags; /* Reserved for future use. */ | ||
81 | unsigned int rsv[2]; /* Reserved for future use. */ | ||
82 | }; | ||
83 | |||
84 | #endif | ||
diff --git a/include/linux/ptp_clock_kernel.h b/include/linux/ptp_clock_kernel.h new file mode 100644 index 000000000000..dd2e44fba63e --- /dev/null +++ b/include/linux/ptp_clock_kernel.h | |||
@@ -0,0 +1,139 @@ | |||
1 | /* | ||
2 | * PTP 1588 clock support | ||
3 | * | ||
4 | * Copyright (C) 2010 OMICRON electronics GmbH | ||
5 | * | ||
6 | * This program is free software; you can redistribute it and/or modify | ||
7 | * it under the terms of the GNU General Public License as published by | ||
8 | * the Free Software Foundation; either version 2 of the License, or | ||
9 | * (at your option) any later version. | ||
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 | * You should have received a copy of the GNU General Public License | ||
17 | * along with this program; if not, write to the Free Software | ||
18 | * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | ||
19 | */ | ||
20 | |||
21 | #ifndef _PTP_CLOCK_KERNEL_H_ | ||
22 | #define _PTP_CLOCK_KERNEL_H_ | ||
23 | |||
24 | #include <linux/ptp_clock.h> | ||
25 | |||
26 | |||
27 | struct ptp_clock_request { | ||
28 | enum { | ||
29 | PTP_CLK_REQ_EXTTS, | ||
30 | PTP_CLK_REQ_PEROUT, | ||
31 | PTP_CLK_REQ_PPS, | ||
32 | } type; | ||
33 | union { | ||
34 | struct ptp_extts_request extts; | ||
35 | struct ptp_perout_request perout; | ||
36 | }; | ||
37 | }; | ||
38 | |||
39 | /** | ||
40 | * struct ptp_clock_info - decribes a PTP hardware clock | ||
41 | * | ||
42 | * @owner: The clock driver should set to THIS_MODULE. | ||
43 | * @name: A short name to identify the clock. | ||
44 | * @max_adj: The maximum possible frequency adjustment, in parts per billon. | ||
45 | * @n_alarm: The number of programmable alarms. | ||
46 | * @n_ext_ts: The number of external time stamp channels. | ||
47 | * @n_per_out: The number of programmable periodic signals. | ||
48 | * @pps: Indicates whether the clock supports a PPS callback. | ||
49 | * | ||
50 | * clock operations | ||
51 | * | ||
52 | * @adjfreq: Adjusts the frequency of the hardware clock. | ||
53 | * parameter delta: Desired period change in parts per billion. | ||
54 | * | ||
55 | * @adjtime: Shifts the time of the hardware clock. | ||
56 | * parameter delta: Desired change in nanoseconds. | ||
57 | * | ||
58 | * @gettime: Reads the current time from the hardware clock. | ||
59 | * parameter ts: Holds the result. | ||
60 | * | ||
61 | * @settime: Set the current time on the hardware clock. | ||
62 | * parameter ts: Time value to set. | ||
63 | * | ||
64 | * @enable: Request driver to enable or disable an ancillary feature. | ||
65 | * parameter request: Desired resource to enable or disable. | ||
66 | * parameter on: Caller passes one to enable or zero to disable. | ||
67 | * | ||
68 | * Drivers should embed their ptp_clock_info within a private | ||
69 | * structure, obtaining a reference to it using container_of(). | ||
70 | * | ||
71 | * The callbacks must all return zero on success, non-zero otherwise. | ||
72 | */ | ||
73 | |||
74 | struct ptp_clock_info { | ||
75 | struct module *owner; | ||
76 | char name[16]; | ||
77 | s32 max_adj; | ||
78 | int n_alarm; | ||
79 | int n_ext_ts; | ||
80 | int n_per_out; | ||
81 | int pps; | ||
82 | int (*adjfreq)(struct ptp_clock_info *ptp, s32 delta); | ||
83 | int (*adjtime)(struct ptp_clock_info *ptp, s64 delta); | ||
84 | int (*gettime)(struct ptp_clock_info *ptp, struct timespec *ts); | ||
85 | int (*settime)(struct ptp_clock_info *ptp, const struct timespec *ts); | ||
86 | int (*enable)(struct ptp_clock_info *ptp, | ||
87 | struct ptp_clock_request *request, int on); | ||
88 | }; | ||
89 | |||
90 | struct ptp_clock; | ||
91 | |||
92 | /** | ||
93 | * ptp_clock_register() - register a PTP hardware clock driver | ||
94 | * | ||
95 | * @info: Structure describing the new clock. | ||
96 | */ | ||
97 | |||
98 | extern struct ptp_clock *ptp_clock_register(struct ptp_clock_info *info); | ||
99 | |||
100 | /** | ||
101 | * ptp_clock_unregister() - unregister a PTP hardware clock driver | ||
102 | * | ||
103 | * @ptp: The clock to remove from service. | ||
104 | */ | ||
105 | |||
106 | extern int ptp_clock_unregister(struct ptp_clock *ptp); | ||
107 | |||
108 | |||
109 | enum ptp_clock_events { | ||
110 | PTP_CLOCK_ALARM, | ||
111 | PTP_CLOCK_EXTTS, | ||
112 | PTP_CLOCK_PPS, | ||
113 | }; | ||
114 | |||
115 | /** | ||
116 | * struct ptp_clock_event - decribes a PTP hardware clock event | ||
117 | * | ||
118 | * @type: One of the ptp_clock_events enumeration values. | ||
119 | * @index: Identifies the source of the event. | ||
120 | * @timestamp: When the event occured. | ||
121 | */ | ||
122 | |||
123 | struct ptp_clock_event { | ||
124 | int type; | ||
125 | int index; | ||
126 | u64 timestamp; | ||
127 | }; | ||
128 | |||
129 | /** | ||
130 | * ptp_clock_event() - notify the PTP layer about an event | ||
131 | * | ||
132 | * @ptp: The clock obtained from ptp_clock_register(). | ||
133 | * @event: Message structure describing the event. | ||
134 | */ | ||
135 | |||
136 | extern void ptp_clock_event(struct ptp_clock *ptp, | ||
137 | struct ptp_clock_event *event); | ||
138 | |||
139 | #endif | ||
diff --git a/include/linux/regulator/db8500-prcmu.h b/include/linux/regulator/db8500-prcmu.h new file mode 100644 index 000000000000..612062313b68 --- /dev/null +++ b/include/linux/regulator/db8500-prcmu.h | |||
@@ -0,0 +1,45 @@ | |||
1 | /* | ||
2 | * Copyright (C) ST-Ericsson SA 2010 | ||
3 | * | ||
4 | * License Terms: GNU General Public License v2 | ||
5 | * | ||
6 | * Author: Bengt Jonsson <bengt.g.jonsson@stericsson.com> for ST-Ericsson | ||
7 | * | ||
8 | * Interface to power domain regulators on DB8500 | ||
9 | */ | ||
10 | |||
11 | #ifndef __REGULATOR_H__ | ||
12 | #define __REGULATOR_H__ | ||
13 | |||
14 | /* Number of DB8500 regulators and regulator enumeration */ | ||
15 | enum db8500_regulator_id { | ||
16 | DB8500_REGULATOR_VAPE, | ||
17 | DB8500_REGULATOR_VARM, | ||
18 | DB8500_REGULATOR_VMODEM, | ||
19 | DB8500_REGULATOR_VPLL, | ||
20 | DB8500_REGULATOR_VSMPS1, | ||
21 | DB8500_REGULATOR_VSMPS2, | ||
22 | DB8500_REGULATOR_VSMPS3, | ||
23 | DB8500_REGULATOR_VRF1, | ||
24 | DB8500_REGULATOR_SWITCH_SVAMMDSP, | ||
25 | DB8500_REGULATOR_SWITCH_SVAMMDSPRET, | ||
26 | DB8500_REGULATOR_SWITCH_SVAPIPE, | ||
27 | DB8500_REGULATOR_SWITCH_SIAMMDSP, | ||
28 | DB8500_REGULATOR_SWITCH_SIAMMDSPRET, | ||
29 | DB8500_REGULATOR_SWITCH_SIAPIPE, | ||
30 | DB8500_REGULATOR_SWITCH_SGA, | ||
31 | DB8500_REGULATOR_SWITCH_B2R2_MCDE, | ||
32 | DB8500_REGULATOR_SWITCH_ESRAM12, | ||
33 | DB8500_REGULATOR_SWITCH_ESRAM12RET, | ||
34 | DB8500_REGULATOR_SWITCH_ESRAM34, | ||
35 | DB8500_REGULATOR_SWITCH_ESRAM34RET, | ||
36 | DB8500_NUM_REGULATORS | ||
37 | }; | ||
38 | |||
39 | /* | ||
40 | * Exported interface for CPUIdle only. This function is called with all | ||
41 | * interrupts turned off. | ||
42 | */ | ||
43 | int power_state_active_is_enabled(void); | ||
44 | |||
45 | #endif | ||
diff --git a/include/linux/regulator/machine.h b/include/linux/regulator/machine.h index c4c4fc45f856..ce3127a75c88 100644 --- a/include/linux/regulator/machine.h +++ b/include/linux/regulator/machine.h | |||
@@ -68,6 +68,8 @@ struct regulator_state { | |||
68 | * | 68 | * |
69 | * @min_uV: Smallest voltage consumers may set. | 69 | * @min_uV: Smallest voltage consumers may set. |
70 | * @max_uV: Largest voltage consumers may set. | 70 | * @max_uV: Largest voltage consumers may set. |
71 | * @uV_offset: Offset applied to voltages from consumer to compensate for | ||
72 | * voltage drops. | ||
71 | * | 73 | * |
72 | * @min_uA: Smallest consumers consumers may set. | 74 | * @min_uA: Smallest consumers consumers may set. |
73 | * @max_uA: Largest current consumers may set. | 75 | * @max_uA: Largest current consumers may set. |
@@ -99,6 +101,8 @@ struct regulation_constraints { | |||
99 | int min_uV; | 101 | int min_uV; |
100 | int max_uV; | 102 | int max_uV; |
101 | 103 | ||
104 | int uV_offset; | ||
105 | |||
102 | /* current output range (inclusive) - for current control */ | 106 | /* current output range (inclusive) - for current control */ |
103 | int min_uA; | 107 | int min_uA; |
104 | int max_uA; | 108 | int max_uA; |
@@ -160,8 +164,6 @@ struct regulator_consumer_supply { | |||
160 | * @supply_regulator: Parent regulator. Specified using the regulator name | 164 | * @supply_regulator: Parent regulator. Specified using the regulator name |
161 | * as it appears in the name field in sysfs, which can | 165 | * as it appears in the name field in sysfs, which can |
162 | * be explicitly set using the constraints field 'name'. | 166 | * be explicitly set using the constraints field 'name'. |
163 | * @supply_regulator_dev: Parent regulator (if any) - DEPRECATED in favour | ||
164 | * of supply_regulator. | ||
165 | * | 167 | * |
166 | * @constraints: Constraints. These must be specified for the regulator to | 168 | * @constraints: Constraints. These must be specified for the regulator to |
167 | * be usable. | 169 | * be usable. |
@@ -173,7 +175,6 @@ struct regulator_consumer_supply { | |||
173 | */ | 175 | */ |
174 | struct regulator_init_data { | 176 | struct regulator_init_data { |
175 | const char *supply_regulator; /* or NULL for system supply */ | 177 | const char *supply_regulator; /* or NULL for system supply */ |
176 | struct device *supply_regulator_dev; /* or NULL for system supply */ | ||
177 | 178 | ||
178 | struct regulation_constraints constraints; | 179 | struct regulation_constraints constraints; |
179 | 180 | ||
diff --git a/include/linux/rmap.h b/include/linux/rmap.h index 830e65dc01ee..2148b122779b 100644 --- a/include/linux/rmap.h +++ b/include/linux/rmap.h | |||
@@ -7,7 +7,7 @@ | |||
7 | #include <linux/list.h> | 7 | #include <linux/list.h> |
8 | #include <linux/slab.h> | 8 | #include <linux/slab.h> |
9 | #include <linux/mm.h> | 9 | #include <linux/mm.h> |
10 | #include <linux/spinlock.h> | 10 | #include <linux/mutex.h> |
11 | #include <linux/memcontrol.h> | 11 | #include <linux/memcontrol.h> |
12 | 12 | ||
13 | /* | 13 | /* |
@@ -26,7 +26,7 @@ | |||
26 | */ | 26 | */ |
27 | struct anon_vma { | 27 | struct anon_vma { |
28 | struct anon_vma *root; /* Root of this anon_vma tree */ | 28 | struct anon_vma *root; /* Root of this anon_vma tree */ |
29 | spinlock_t lock; /* Serialize access to vma list */ | 29 | struct mutex mutex; /* Serialize access to vma list */ |
30 | /* | 30 | /* |
31 | * The refcount is taken on an anon_vma when there is no | 31 | * The refcount is taken on an anon_vma when there is no |
32 | * guarantee that the vma of page tables will exist for | 32 | * guarantee that the vma of page tables will exist for |
@@ -64,7 +64,7 @@ struct anon_vma_chain { | |||
64 | struct vm_area_struct *vma; | 64 | struct vm_area_struct *vma; |
65 | struct anon_vma *anon_vma; | 65 | struct anon_vma *anon_vma; |
66 | struct list_head same_vma; /* locked by mmap_sem & page_table_lock */ | 66 | struct list_head same_vma; /* locked by mmap_sem & page_table_lock */ |
67 | struct list_head same_anon_vma; /* locked by anon_vma->lock */ | 67 | struct list_head same_anon_vma; /* locked by anon_vma->mutex */ |
68 | }; | 68 | }; |
69 | 69 | ||
70 | #ifdef CONFIG_MMU | 70 | #ifdef CONFIG_MMU |
@@ -93,24 +93,24 @@ static inline void vma_lock_anon_vma(struct vm_area_struct *vma) | |||
93 | { | 93 | { |
94 | struct anon_vma *anon_vma = vma->anon_vma; | 94 | struct anon_vma *anon_vma = vma->anon_vma; |
95 | if (anon_vma) | 95 | if (anon_vma) |
96 | spin_lock(&anon_vma->root->lock); | 96 | mutex_lock(&anon_vma->root->mutex); |
97 | } | 97 | } |
98 | 98 | ||
99 | static inline void vma_unlock_anon_vma(struct vm_area_struct *vma) | 99 | static inline void vma_unlock_anon_vma(struct vm_area_struct *vma) |
100 | { | 100 | { |
101 | struct anon_vma *anon_vma = vma->anon_vma; | 101 | struct anon_vma *anon_vma = vma->anon_vma; |
102 | if (anon_vma) | 102 | if (anon_vma) |
103 | spin_unlock(&anon_vma->root->lock); | 103 | mutex_unlock(&anon_vma->root->mutex); |
104 | } | 104 | } |
105 | 105 | ||
106 | static inline void anon_vma_lock(struct anon_vma *anon_vma) | 106 | static inline void anon_vma_lock(struct anon_vma *anon_vma) |
107 | { | 107 | { |
108 | spin_lock(&anon_vma->root->lock); | 108 | mutex_lock(&anon_vma->root->mutex); |
109 | } | 109 | } |
110 | 110 | ||
111 | static inline void anon_vma_unlock(struct anon_vma *anon_vma) | 111 | static inline void anon_vma_unlock(struct anon_vma *anon_vma) |
112 | { | 112 | { |
113 | spin_unlock(&anon_vma->root->lock); | 113 | mutex_unlock(&anon_vma->root->mutex); |
114 | } | 114 | } |
115 | 115 | ||
116 | /* | 116 | /* |
@@ -218,20 +218,7 @@ int try_to_munlock(struct page *); | |||
218 | /* | 218 | /* |
219 | * Called by memory-failure.c to kill processes. | 219 | * Called by memory-failure.c to kill processes. |
220 | */ | 220 | */ |
221 | struct anon_vma *__page_lock_anon_vma(struct page *page); | 221 | struct anon_vma *page_lock_anon_vma(struct page *page); |
222 | |||
223 | static inline struct anon_vma *page_lock_anon_vma(struct page *page) | ||
224 | { | ||
225 | struct anon_vma *anon_vma; | ||
226 | |||
227 | __cond_lock(RCU, anon_vma = __page_lock_anon_vma(page)); | ||
228 | |||
229 | /* (void) is needed to make gcc happy */ | ||
230 | (void) __cond_lock(&anon_vma->root->lock, anon_vma); | ||
231 | |||
232 | return anon_vma; | ||
233 | } | ||
234 | |||
235 | void page_unlock_anon_vma(struct anon_vma *anon_vma); | 222 | void page_unlock_anon_vma(struct anon_vma *anon_vma); |
236 | int page_mapped_in_vma(struct page *page, struct vm_area_struct *vma); | 223 | int page_mapped_in_vma(struct page *page, struct vm_area_struct *vma); |
237 | 224 | ||
diff --git a/include/linux/rotary_encoder.h b/include/linux/rotary_encoder.h index 215278b8df2a..3f594dce5716 100644 --- a/include/linux/rotary_encoder.h +++ b/include/linux/rotary_encoder.h | |||
@@ -10,6 +10,7 @@ struct rotary_encoder_platform_data { | |||
10 | unsigned int inverted_b; | 10 | unsigned int inverted_b; |
11 | bool relative_axis; | 11 | bool relative_axis; |
12 | bool rollover; | 12 | bool rollover; |
13 | bool half_period; | ||
13 | }; | 14 | }; |
14 | 15 | ||
15 | #endif /* __ROTARY_ENCODER_H__ */ | 16 | #endif /* __ROTARY_ENCODER_H__ */ |
diff --git a/include/linux/rtc.h b/include/linux/rtc.h index 877ece45426f..b27ebea25660 100644 --- a/include/linux/rtc.h +++ b/include/linux/rtc.h | |||
@@ -92,10 +92,10 @@ struct rtc_pll_info { | |||
92 | #define RTC_PLL_SET _IOW('p', 0x12, struct rtc_pll_info) /* Set PLL correction */ | 92 | #define RTC_PLL_SET _IOW('p', 0x12, struct rtc_pll_info) /* Set PLL correction */ |
93 | 93 | ||
94 | /* interrupt flags */ | 94 | /* interrupt flags */ |
95 | #define RTC_IRQF 0x80 /* any of the following is active */ | 95 | #define RTC_IRQF 0x80 /* Any of the following is active */ |
96 | #define RTC_PF 0x40 | 96 | #define RTC_PF 0x40 /* Periodic interrupt */ |
97 | #define RTC_AF 0x20 | 97 | #define RTC_AF 0x20 /* Alarm interrupt */ |
98 | #define RTC_UF 0x10 | 98 | #define RTC_UF 0x10 /* Update interrupt for 1Hz RTC */ |
99 | 99 | ||
100 | #ifdef __KERNEL__ | 100 | #ifdef __KERNEL__ |
101 | 101 | ||
diff --git a/include/linux/sched.h b/include/linux/sched.h index 340f5ee57334..2a8621c4be1e 100644 --- a/include/linux/sched.h +++ b/include/linux/sched.h | |||
@@ -513,6 +513,7 @@ struct thread_group_cputimer { | |||
513 | spinlock_t lock; | 513 | spinlock_t lock; |
514 | }; | 514 | }; |
515 | 515 | ||
516 | #include <linux/rwsem.h> | ||
516 | struct autogroup; | 517 | struct autogroup; |
517 | 518 | ||
518 | /* | 519 | /* |
@@ -632,6 +633,16 @@ struct signal_struct { | |||
632 | unsigned audit_tty; | 633 | unsigned audit_tty; |
633 | struct tty_audit_buf *tty_audit_buf; | 634 | struct tty_audit_buf *tty_audit_buf; |
634 | #endif | 635 | #endif |
636 | #ifdef CONFIG_CGROUPS | ||
637 | /* | ||
638 | * The threadgroup_fork_lock prevents threads from forking with | ||
639 | * CLONE_THREAD while held for writing. Use this for fork-sensitive | ||
640 | * threadgroup-wide operations. It's taken for reading in fork.c in | ||
641 | * copy_process(). | ||
642 | * Currently only needed write-side by cgroups. | ||
643 | */ | ||
644 | struct rw_semaphore threadgroup_fork_lock; | ||
645 | #endif | ||
635 | 646 | ||
636 | int oom_adj; /* OOM kill score adjustment (bit shift) */ | 647 | int oom_adj; /* OOM kill score adjustment (bit shift) */ |
637 | int oom_score_adj; /* OOM kill score adjustment */ | 648 | int oom_score_adj; /* OOM kill score adjustment */ |
@@ -786,17 +797,39 @@ enum cpu_idle_type { | |||
786 | }; | 797 | }; |
787 | 798 | ||
788 | /* | 799 | /* |
789 | * sched-domains (multiprocessor balancing) declarations: | 800 | * Increase resolution of nice-level calculations for 64-bit architectures. |
801 | * The extra resolution improves shares distribution and load balancing of | ||
802 | * low-weight task groups (eg. nice +19 on an autogroup), deeper taskgroup | ||
803 | * hierarchies, especially on larger systems. This is not a user-visible change | ||
804 | * and does not change the user-interface for setting shares/weights. | ||
805 | * | ||
806 | * We increase resolution only if we have enough bits to allow this increased | ||
807 | * resolution (i.e. BITS_PER_LONG > 32). The costs for increasing resolution | ||
808 | * when BITS_PER_LONG <= 32 are pretty high and the returns do not justify the | ||
809 | * increased costs. | ||
790 | */ | 810 | */ |
811 | #if BITS_PER_LONG > 32 | ||
812 | # define SCHED_LOAD_RESOLUTION 10 | ||
813 | # define scale_load(w) ((w) << SCHED_LOAD_RESOLUTION) | ||
814 | # define scale_load_down(w) ((w) >> SCHED_LOAD_RESOLUTION) | ||
815 | #else | ||
816 | # define SCHED_LOAD_RESOLUTION 0 | ||
817 | # define scale_load(w) (w) | ||
818 | # define scale_load_down(w) (w) | ||
819 | #endif | ||
791 | 820 | ||
792 | /* | 821 | #define SCHED_LOAD_SHIFT (10 + SCHED_LOAD_RESOLUTION) |
793 | * Increase resolution of nice-level calculations: | ||
794 | */ | ||
795 | #define SCHED_LOAD_SHIFT 10 | ||
796 | #define SCHED_LOAD_SCALE (1L << SCHED_LOAD_SHIFT) | 822 | #define SCHED_LOAD_SCALE (1L << SCHED_LOAD_SHIFT) |
797 | 823 | ||
798 | #define SCHED_LOAD_SCALE_FUZZ SCHED_LOAD_SCALE | 824 | /* |
825 | * Increase resolution of cpu_power calculations | ||
826 | */ | ||
827 | #define SCHED_POWER_SHIFT 10 | ||
828 | #define SCHED_POWER_SCALE (1L << SCHED_POWER_SHIFT) | ||
799 | 829 | ||
830 | /* | ||
831 | * sched-domains (multiprocessor balancing) declarations: | ||
832 | */ | ||
800 | #ifdef CONFIG_SMP | 833 | #ifdef CONFIG_SMP |
801 | #define SD_LOAD_BALANCE 0x0001 /* Do load balancing on this domain. */ | 834 | #define SD_LOAD_BALANCE 0x0001 /* Do load balancing on this domain. */ |
802 | #define SD_BALANCE_NEWIDLE 0x0002 /* Balance when about to become idle */ | 835 | #define SD_BALANCE_NEWIDLE 0x0002 /* Balance when about to become idle */ |
@@ -1513,7 +1546,7 @@ struct task_struct { | |||
1513 | #ifdef CONFIG_TRACING | 1546 | #ifdef CONFIG_TRACING |
1514 | /* state flags for use by tracers */ | 1547 | /* state flags for use by tracers */ |
1515 | unsigned long trace; | 1548 | unsigned long trace; |
1516 | /* bitmask of trace recursion */ | 1549 | /* bitmask and counter of trace recursion */ |
1517 | unsigned long trace_recursion; | 1550 | unsigned long trace_recursion; |
1518 | #endif /* CONFIG_TRACING */ | 1551 | #endif /* CONFIG_TRACING */ |
1519 | #ifdef CONFIG_CGROUP_MEM_RES_CTLR /* memcg uses this to do batch job */ | 1552 | #ifdef CONFIG_CGROUP_MEM_RES_CTLR /* memcg uses this to do batch job */ |
@@ -1731,7 +1764,6 @@ extern void thread_group_times(struct task_struct *p, cputime_t *ut, cputime_t * | |||
1731 | #define PF_FROZEN 0x00010000 /* frozen for system suspend */ | 1764 | #define PF_FROZEN 0x00010000 /* frozen for system suspend */ |
1732 | #define PF_FSTRANS 0x00020000 /* inside a filesystem transaction */ | 1765 | #define PF_FSTRANS 0x00020000 /* inside a filesystem transaction */ |
1733 | #define PF_KSWAPD 0x00040000 /* I am kswapd */ | 1766 | #define PF_KSWAPD 0x00040000 /* I am kswapd */ |
1734 | #define PF_OOM_ORIGIN 0x00080000 /* Allocating much memory to others */ | ||
1735 | #define PF_LESS_THROTTLE 0x00100000 /* Throttle me less: I clean memory */ | 1767 | #define PF_LESS_THROTTLE 0x00100000 /* Throttle me less: I clean memory */ |
1736 | #define PF_KTHREAD 0x00200000 /* I am a kernel thread */ | 1768 | #define PF_KTHREAD 0x00200000 /* I am a kernel thread */ |
1737 | #define PF_RANDOMIZE 0x00400000 /* randomize virtual address space */ | 1769 | #define PF_RANDOMIZE 0x00400000 /* randomize virtual address space */ |
@@ -1809,9 +1841,16 @@ static inline void rcu_copy_process(struct task_struct *p) | |||
1809 | #endif | 1841 | #endif |
1810 | 1842 | ||
1811 | #ifdef CONFIG_SMP | 1843 | #ifdef CONFIG_SMP |
1844 | extern void do_set_cpus_allowed(struct task_struct *p, | ||
1845 | const struct cpumask *new_mask); | ||
1846 | |||
1812 | extern int set_cpus_allowed_ptr(struct task_struct *p, | 1847 | extern int set_cpus_allowed_ptr(struct task_struct *p, |
1813 | const struct cpumask *new_mask); | 1848 | const struct cpumask *new_mask); |
1814 | #else | 1849 | #else |
1850 | static inline void do_set_cpus_allowed(struct task_struct *p, | ||
1851 | const struct cpumask *new_mask) | ||
1852 | { | ||
1853 | } | ||
1815 | static inline int set_cpus_allowed_ptr(struct task_struct *p, | 1854 | static inline int set_cpus_allowed_ptr(struct task_struct *p, |
1816 | const struct cpumask *new_mask) | 1855 | const struct cpumask *new_mask) |
1817 | { | 1856 | { |
@@ -2301,6 +2340,31 @@ static inline void unlock_task_sighand(struct task_struct *tsk, | |||
2301 | spin_unlock_irqrestore(&tsk->sighand->siglock, *flags); | 2340 | spin_unlock_irqrestore(&tsk->sighand->siglock, *flags); |
2302 | } | 2341 | } |
2303 | 2342 | ||
2343 | /* See the declaration of threadgroup_fork_lock in signal_struct. */ | ||
2344 | #ifdef CONFIG_CGROUPS | ||
2345 | static inline void threadgroup_fork_read_lock(struct task_struct *tsk) | ||
2346 | { | ||
2347 | down_read(&tsk->signal->threadgroup_fork_lock); | ||
2348 | } | ||
2349 | static inline void threadgroup_fork_read_unlock(struct task_struct *tsk) | ||
2350 | { | ||
2351 | up_read(&tsk->signal->threadgroup_fork_lock); | ||
2352 | } | ||
2353 | static inline void threadgroup_fork_write_lock(struct task_struct *tsk) | ||
2354 | { | ||
2355 | down_write(&tsk->signal->threadgroup_fork_lock); | ||
2356 | } | ||
2357 | static inline void threadgroup_fork_write_unlock(struct task_struct *tsk) | ||
2358 | { | ||
2359 | up_write(&tsk->signal->threadgroup_fork_lock); | ||
2360 | } | ||
2361 | #else | ||
2362 | static inline void threadgroup_fork_read_lock(struct task_struct *tsk) {} | ||
2363 | static inline void threadgroup_fork_read_unlock(struct task_struct *tsk) {} | ||
2364 | static inline void threadgroup_fork_write_lock(struct task_struct *tsk) {} | ||
2365 | static inline void threadgroup_fork_write_unlock(struct task_struct *tsk) {} | ||
2366 | #endif | ||
2367 | |||
2304 | #ifndef __HAVE_THREAD_FUNCTIONS | 2368 | #ifndef __HAVE_THREAD_FUNCTIONS |
2305 | 2369 | ||
2306 | #define task_thread_info(task) ((struct thread_info *)(task)->stack) | 2370 | #define task_thread_info(task) ((struct thread_info *)(task)->stack) |
diff --git a/include/linux/seqlock.h b/include/linux/seqlock.h index 06d69648fc86..e9811892844f 100644 --- a/include/linux/seqlock.h +++ b/include/linux/seqlock.h | |||
@@ -41,9 +41,6 @@ typedef struct { | |||
41 | #define __SEQLOCK_UNLOCKED(lockname) \ | 41 | #define __SEQLOCK_UNLOCKED(lockname) \ |
42 | { 0, __SPIN_LOCK_UNLOCKED(lockname) } | 42 | { 0, __SPIN_LOCK_UNLOCKED(lockname) } |
43 | 43 | ||
44 | #define SEQLOCK_UNLOCKED \ | ||
45 | __SEQLOCK_UNLOCKED(old_style_seqlock_init) | ||
46 | |||
47 | #define seqlock_init(x) \ | 44 | #define seqlock_init(x) \ |
48 | do { \ | 45 | do { \ |
49 | (x)->sequence = 0; \ | 46 | (x)->sequence = 0; \ |
diff --git a/include/linux/serial_core.h b/include/linux/serial_core.h index 758c5b0c6fd3..a5c31146a337 100644 --- a/include/linux/serial_core.h +++ b/include/linux/serial_core.h | |||
@@ -45,7 +45,8 @@ | |||
45 | #define PORT_OCTEON 17 /* Cavium OCTEON internal UART */ | 45 | #define PORT_OCTEON 17 /* Cavium OCTEON internal UART */ |
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_MAX_8250 19 /* max port ID */ | 48 | #define PORT_TEGRA 20 /* NVIDIA Tegra internal UART */ |
49 | #define PORT_MAX_8250 20 /* max port ID */ | ||
49 | 50 | ||
50 | /* | 51 | /* |
51 | * ARM specific type numbers. These are not currently guaranteed | 52 | * ARM specific type numbers. These are not currently guaranteed |
@@ -202,6 +203,9 @@ | |||
202 | /* VIA VT8500 SoC */ | 203 | /* VIA VT8500 SoC */ |
203 | #define PORT_VT8500 97 | 204 | #define PORT_VT8500 97 |
204 | 205 | ||
206 | /* Xilinx PSS UART */ | ||
207 | #define PORT_XUARTPS 98 | ||
208 | |||
205 | #ifdef __KERNEL__ | 209 | #ifdef __KERNEL__ |
206 | 210 | ||
207 | #include <linux/compiler.h> | 211 | #include <linux/compiler.h> |
diff --git a/include/linux/serial_reg.h b/include/linux/serial_reg.h index 3ecb71a9e505..c75bda37c18e 100644 --- a/include/linux/serial_reg.h +++ b/include/linux/serial_reg.h | |||
@@ -57,6 +57,7 @@ | |||
57 | * ST16C654: 8 16 56 60 8 16 32 56 PORT_16654 | 57 | * ST16C654: 8 16 56 60 8 16 32 56 PORT_16654 |
58 | * TI16C750: 1 16 32 56 xx xx xx xx PORT_16750 | 58 | * TI16C750: 1 16 32 56 xx xx xx xx PORT_16750 |
59 | * TI16C752: 8 16 56 60 8 16 32 56 | 59 | * TI16C752: 8 16 56 60 8 16 32 56 |
60 | * Tegra: 1 4 8 14 16 8 4 1 PORT_TEGRA | ||
60 | */ | 61 | */ |
61 | #define UART_FCR_R_TRIG_00 0x00 | 62 | #define UART_FCR_R_TRIG_00 0x00 |
62 | #define UART_FCR_R_TRIG_01 0x40 | 63 | #define UART_FCR_R_TRIG_01 0x40 |
@@ -118,6 +119,7 @@ | |||
118 | #define UART_MCR_DTR 0x01 /* DTR complement */ | 119 | #define UART_MCR_DTR 0x01 /* DTR complement */ |
119 | 120 | ||
120 | #define UART_LSR 5 /* In: Line Status Register */ | 121 | #define UART_LSR 5 /* In: Line Status Register */ |
122 | #define UART_LSR_FIFOE 0x80 /* Fifo error */ | ||
121 | #define UART_LSR_TEMT 0x40 /* Transmitter empty */ | 123 | #define UART_LSR_TEMT 0x40 /* Transmitter empty */ |
122 | #define UART_LSR_THRE 0x20 /* Transmit-hold-register empty */ | 124 | #define UART_LSR_THRE 0x20 /* Transmit-hold-register empty */ |
123 | #define UART_LSR_BI 0x10 /* Break interrupt indicator */ | 125 | #define UART_LSR_BI 0x10 /* Break interrupt indicator */ |
diff --git a/include/linux/shmem_fs.h b/include/linux/shmem_fs.h index 399be5ad2f99..2b7fec840517 100644 --- a/include/linux/shmem_fs.h +++ b/include/linux/shmem_fs.h | |||
@@ -9,6 +9,8 @@ | |||
9 | 9 | ||
10 | #define SHMEM_NR_DIRECT 16 | 10 | #define SHMEM_NR_DIRECT 16 |
11 | 11 | ||
12 | #define SHMEM_SYMLINK_INLINE_LEN (SHMEM_NR_DIRECT * sizeof(swp_entry_t)) | ||
13 | |||
12 | struct shmem_inode_info { | 14 | struct shmem_inode_info { |
13 | spinlock_t lock; | 15 | spinlock_t lock; |
14 | unsigned long flags; | 16 | unsigned long flags; |
@@ -17,8 +19,12 @@ struct shmem_inode_info { | |||
17 | unsigned long next_index; /* highest alloced index + 1 */ | 19 | unsigned long next_index; /* highest alloced index + 1 */ |
18 | struct shared_policy policy; /* NUMA memory alloc policy */ | 20 | struct shared_policy policy; /* NUMA memory alloc policy */ |
19 | struct page *i_indirect; /* top indirect blocks page */ | 21 | struct page *i_indirect; /* top indirect blocks page */ |
20 | swp_entry_t i_direct[SHMEM_NR_DIRECT]; /* first blocks */ | 22 | union { |
23 | swp_entry_t i_direct[SHMEM_NR_DIRECT]; /* first blocks */ | ||
24 | char inline_symlink[SHMEM_SYMLINK_INLINE_LEN]; | ||
25 | }; | ||
21 | struct list_head swaplist; /* chain of maybes on swap */ | 26 | struct list_head swaplist; /* chain of maybes on swap */ |
27 | struct list_head xattr_list; /* list of shmem_xattr */ | ||
22 | struct inode vfs_inode; | 28 | struct inode vfs_inode; |
23 | }; | 29 | }; |
24 | 30 | ||
diff --git a/include/linux/smp.h b/include/linux/smp.h index 74243c86ba39..7ad824d510a2 100644 --- a/include/linux/smp.h +++ b/include/linux/smp.h | |||
@@ -98,16 +98,6 @@ void ipi_call_unlock_irq(void); | |||
98 | */ | 98 | */ |
99 | int on_each_cpu(smp_call_func_t func, void *info, int wait); | 99 | int on_each_cpu(smp_call_func_t func, void *info, int wait); |
100 | 100 | ||
101 | #define MSG_ALL_BUT_SELF 0x8000 /* Assume <32768 CPU's */ | ||
102 | #define MSG_ALL 0x8001 | ||
103 | |||
104 | #define MSG_INVALIDATE_TLB 0x0001 /* Remote processor TLB invalidate */ | ||
105 | #define MSG_STOP_CPU 0x0002 /* Sent to shut down slave CPU's | ||
106 | * when rebooting | ||
107 | */ | ||
108 | #define MSG_RESCHEDULE 0x0003 /* Reschedule request from master CPU*/ | ||
109 | #define MSG_CALL_FUNCTION 0x0004 /* Call function on all other CPUs */ | ||
110 | |||
111 | /* | 101 | /* |
112 | * Mark the boot cpu "online" so that it can call console drivers in | 102 | * Mark the boot cpu "online" so that it can call console drivers in |
113 | * printk() and can access its per-cpu storage. | 103 | * printk() and can access its per-cpu storage. |
diff --git a/include/linux/spi/ads7846.h b/include/linux/spi/ads7846.h index 92bd0839d5b4..c64de9dd7631 100644 --- a/include/linux/spi/ads7846.h +++ b/include/linux/spi/ads7846.h | |||
@@ -14,7 +14,8 @@ enum ads7846_filter { | |||
14 | struct ads7846_platform_data { | 14 | struct ads7846_platform_data { |
15 | u16 model; /* 7843, 7845, 7846, 7873. */ | 15 | u16 model; /* 7843, 7845, 7846, 7873. */ |
16 | u16 vref_delay_usecs; /* 0 for external vref; etc */ | 16 | u16 vref_delay_usecs; /* 0 for external vref; etc */ |
17 | u16 vref_mv; /* external vref value, milliVolts */ | 17 | u16 vref_mv; /* external vref value, milliVolts |
18 | * ads7846: if 0, use internal vref */ | ||
18 | bool keep_vref_on; /* set to keep vref on for differential | 19 | bool keep_vref_on; /* set to keep vref on for differential |
19 | * measurements as well */ | 20 | * measurements as well */ |
20 | bool swap_xy; /* swap x and y axes */ | 21 | bool swap_xy; /* swap x and y axes */ |
diff --git a/include/linux/spi/spi.h b/include/linux/spi/spi.h index b4d7710bc38d..bb4f5fbbbd8e 100644 --- a/include/linux/spi/spi.h +++ b/include/linux/spi/spi.h | |||
@@ -581,7 +581,7 @@ extern int spi_bus_unlock(struct spi_master *master); | |||
581 | * Callable only from contexts that can sleep. | 581 | * Callable only from contexts that can sleep. |
582 | */ | 582 | */ |
583 | static inline int | 583 | static inline int |
584 | spi_write(struct spi_device *spi, const u8 *buf, size_t len) | 584 | spi_write(struct spi_device *spi, const void *buf, size_t len) |
585 | { | 585 | { |
586 | struct spi_transfer t = { | 586 | struct spi_transfer t = { |
587 | .tx_buf = buf, | 587 | .tx_buf = buf, |
@@ -605,7 +605,7 @@ spi_write(struct spi_device *spi, const u8 *buf, size_t len) | |||
605 | * Callable only from contexts that can sleep. | 605 | * Callable only from contexts that can sleep. |
606 | */ | 606 | */ |
607 | static inline int | 607 | static inline int |
608 | spi_read(struct spi_device *spi, u8 *buf, size_t len) | 608 | spi_read(struct spi_device *spi, void *buf, size_t len) |
609 | { | 609 | { |
610 | struct spi_transfer t = { | 610 | struct spi_transfer t = { |
611 | .rx_buf = buf, | 611 | .rx_buf = buf, |
@@ -620,8 +620,8 @@ spi_read(struct spi_device *spi, u8 *buf, size_t len) | |||
620 | 620 | ||
621 | /* this copies txbuf and rxbuf data; for small transfers only! */ | 621 | /* this copies txbuf and rxbuf data; for small transfers only! */ |
622 | extern int spi_write_then_read(struct spi_device *spi, | 622 | extern int spi_write_then_read(struct spi_device *spi, |
623 | const u8 *txbuf, unsigned n_tx, | 623 | const void *txbuf, unsigned n_tx, |
624 | u8 *rxbuf, unsigned n_rx); | 624 | void *rxbuf, unsigned n_rx); |
625 | 625 | ||
626 | /** | 626 | /** |
627 | * spi_w8r8 - SPI synchronous 8 bit write followed by 8 bit read | 627 | * spi_w8r8 - SPI synchronous 8 bit write followed by 8 bit read |
diff --git a/include/linux/sunrpc/msg_prot.h b/include/linux/sunrpc/msg_prot.h index 77e624883393..c68a147939a6 100644 --- a/include/linux/sunrpc/msg_prot.h +++ b/include/linux/sunrpc/msg_prot.h | |||
@@ -145,6 +145,7 @@ typedef __be32 rpc_fraghdr; | |||
145 | #define RPCBIND_NETID_TCP "tcp" | 145 | #define RPCBIND_NETID_TCP "tcp" |
146 | #define RPCBIND_NETID_UDP6 "udp6" | 146 | #define RPCBIND_NETID_UDP6 "udp6" |
147 | #define RPCBIND_NETID_TCP6 "tcp6" | 147 | #define RPCBIND_NETID_TCP6 "tcp6" |
148 | #define RPCBIND_NETID_LOCAL "local" | ||
148 | 149 | ||
149 | /* | 150 | /* |
150 | * Note that RFC 1833 does not put any size restrictions on the | 151 | * Note that RFC 1833 does not put any size restrictions on the |
diff --git a/include/linux/sunrpc/svcsock.h b/include/linux/sunrpc/svcsock.h index 04dba23c59f2..85c50b40759d 100644 --- a/include/linux/sunrpc/svcsock.h +++ b/include/linux/sunrpc/svcsock.h | |||
@@ -28,6 +28,7 @@ struct svc_sock { | |||
28 | /* private TCP part */ | 28 | /* private TCP part */ |
29 | u32 sk_reclen; /* length of record */ | 29 | u32 sk_reclen; /* length of record */ |
30 | u32 sk_tcplen; /* current read length */ | 30 | u32 sk_tcplen; /* current read length */ |
31 | struct page * sk_pages[RPCSVC_MAXPAGES]; /* received data */ | ||
31 | }; | 32 | }; |
32 | 33 | ||
33 | /* | 34 | /* |
diff --git a/include/linux/sunrpc/xdr.h b/include/linux/sunrpc/xdr.h index fc84b7a19ca3..a20970ef9e4e 100644 --- a/include/linux/sunrpc/xdr.h +++ b/include/linux/sunrpc/xdr.h | |||
@@ -216,6 +216,8 @@ extern __be32 *xdr_reserve_space(struct xdr_stream *xdr, size_t nbytes); | |||
216 | extern void xdr_write_pages(struct xdr_stream *xdr, struct page **pages, | 216 | extern void xdr_write_pages(struct xdr_stream *xdr, struct page **pages, |
217 | unsigned int base, unsigned int len); | 217 | unsigned int base, unsigned int len); |
218 | extern void xdr_init_decode(struct xdr_stream *xdr, struct xdr_buf *buf, __be32 *p); | 218 | extern void xdr_init_decode(struct xdr_stream *xdr, struct xdr_buf *buf, __be32 *p); |
219 | extern void xdr_init_decode_pages(struct xdr_stream *xdr, struct xdr_buf *buf, | ||
220 | struct page **pages, unsigned int len); | ||
219 | extern void xdr_set_scratch_buffer(struct xdr_stream *xdr, void *buf, size_t buflen); | 221 | extern void xdr_set_scratch_buffer(struct xdr_stream *xdr, void *buf, size_t buflen); |
220 | extern __be32 *xdr_inline_decode(struct xdr_stream *xdr, size_t nbytes); | 222 | extern __be32 *xdr_inline_decode(struct xdr_stream *xdr, size_t nbytes); |
221 | extern void xdr_read_pages(struct xdr_stream *xdr, unsigned int len); | 223 | extern void xdr_read_pages(struct xdr_stream *xdr, unsigned int len); |
diff --git a/include/linux/sunrpc/xprt.h b/include/linux/sunrpc/xprt.h index a0f998c07c65..81cce3b3ee66 100644 --- a/include/linux/sunrpc/xprt.h +++ b/include/linux/sunrpc/xprt.h | |||
@@ -141,7 +141,8 @@ enum xprt_transports { | |||
141 | XPRT_TRANSPORT_UDP = IPPROTO_UDP, | 141 | XPRT_TRANSPORT_UDP = IPPROTO_UDP, |
142 | XPRT_TRANSPORT_TCP = IPPROTO_TCP, | 142 | XPRT_TRANSPORT_TCP = IPPROTO_TCP, |
143 | XPRT_TRANSPORT_BC_TCP = IPPROTO_TCP | XPRT_TRANSPORT_BC, | 143 | XPRT_TRANSPORT_BC_TCP = IPPROTO_TCP | XPRT_TRANSPORT_BC, |
144 | XPRT_TRANSPORT_RDMA = 256 | 144 | XPRT_TRANSPORT_RDMA = 256, |
145 | XPRT_TRANSPORT_LOCAL = 257, | ||
145 | }; | 146 | }; |
146 | 147 | ||
147 | struct rpc_xprt { | 148 | struct rpc_xprt { |
diff --git a/include/linux/swap.h b/include/linux/swap.h index a5c6da5d8df8..384eb5fe530b 100644 --- a/include/linux/swap.h +++ b/include/linux/swap.h | |||
@@ -257,7 +257,8 @@ extern unsigned long try_to_free_mem_cgroup_pages(struct mem_cgroup *mem, | |||
257 | extern unsigned long mem_cgroup_shrink_node_zone(struct mem_cgroup *mem, | 257 | extern unsigned long mem_cgroup_shrink_node_zone(struct mem_cgroup *mem, |
258 | gfp_t gfp_mask, bool noswap, | 258 | gfp_t gfp_mask, bool noswap, |
259 | unsigned int swappiness, | 259 | unsigned int swappiness, |
260 | struct zone *zone); | 260 | struct zone *zone, |
261 | unsigned long *nr_scanned); | ||
261 | extern int __isolate_lru_page(struct page *page, int mode, int file); | 262 | extern int __isolate_lru_page(struct page *page, int mode, int file); |
262 | extern unsigned long shrink_all_memory(unsigned long nr_pages); | 263 | extern unsigned long shrink_all_memory(unsigned long nr_pages); |
263 | extern int vm_swappiness; | 264 | extern int vm_swappiness; |
diff --git a/include/linux/syscalls.h b/include/linux/syscalls.h index ab71447d0c5a..8c03b98df5f9 100644 --- a/include/linux/syscalls.h +++ b/include/linux/syscalls.h | |||
@@ -846,4 +846,5 @@ asmlinkage long sys_name_to_handle_at(int dfd, const char __user *name, | |||
846 | asmlinkage long sys_open_by_handle_at(int mountdirfd, | 846 | asmlinkage long sys_open_by_handle_at(int mountdirfd, |
847 | struct file_handle __user *handle, | 847 | struct file_handle __user *handle, |
848 | int flags); | 848 | int flags); |
849 | asmlinkage long sys_setns(int fd, int nstype); | ||
849 | #endif | 850 | #endif |
diff --git a/include/linux/thread_info.h b/include/linux/thread_info.h index 20fc303947d3..8d03f079688c 100644 --- a/include/linux/thread_info.h +++ b/include/linux/thread_info.h | |||
@@ -29,7 +29,7 @@ struct restart_block { | |||
29 | } futex; | 29 | } futex; |
30 | /* For nanosleep */ | 30 | /* For nanosleep */ |
31 | struct { | 31 | struct { |
32 | clockid_t index; | 32 | clockid_t clockid; |
33 | struct timespec __user *rmtp; | 33 | struct timespec __user *rmtp; |
34 | #ifdef CONFIG_COMPAT | 34 | #ifdef CONFIG_COMPAT |
35 | struct compat_timespec __user *compat_rmtp; | 35 | struct compat_timespec __user *compat_rmtp; |
diff --git a/include/linux/timerfd.h b/include/linux/timerfd.h index 2d0792983f8c..d3b57fa12225 100644 --- a/include/linux/timerfd.h +++ b/include/linux/timerfd.h | |||
@@ -19,6 +19,7 @@ | |||
19 | * shared O_* flags. | 19 | * shared O_* flags. |
20 | */ | 20 | */ |
21 | #define TFD_TIMER_ABSTIME (1 << 0) | 21 | #define TFD_TIMER_ABSTIME (1 << 0) |
22 | #define TFD_TIMER_CANCEL_ON_SET (1 << 1) | ||
22 | #define TFD_CLOEXEC O_CLOEXEC | 23 | #define TFD_CLOEXEC O_CLOEXEC |
23 | #define TFD_NONBLOCK O_NONBLOCK | 24 | #define TFD_NONBLOCK O_NONBLOCK |
24 | 25 | ||
@@ -26,6 +27,6 @@ | |||
26 | /* Flags for timerfd_create. */ | 27 | /* Flags for timerfd_create. */ |
27 | #define TFD_CREATE_FLAGS TFD_SHARED_FCNTL_FLAGS | 28 | #define TFD_CREATE_FLAGS TFD_SHARED_FCNTL_FLAGS |
28 | /* Flags for timerfd_settime. */ | 29 | /* Flags for timerfd_settime. */ |
29 | #define TFD_SETTIME_FLAGS TFD_TIMER_ABSTIME | 30 | #define TFD_SETTIME_FLAGS (TFD_TIMER_ABSTIME | TFD_TIMER_CANCEL_ON_SET) |
30 | 31 | ||
31 | #endif /* _LINUX_TIMERFD_H */ | 32 | #endif /* _LINUX_TIMERFD_H */ |
diff --git a/include/linux/tty.h b/include/linux/tty.h index 9f469c700550..d6f05292e456 100644 --- a/include/linux/tty.h +++ b/include/linux/tty.h | |||
@@ -50,6 +50,8 @@ | |||
50 | #define N_CAIF 20 /* CAIF protocol for talking to modems */ | 50 | #define N_CAIF 20 /* CAIF protocol for talking to modems */ |
51 | #define N_GSM0710 21 /* GSM 0710 Mux */ | 51 | #define N_GSM0710 21 /* GSM 0710 Mux */ |
52 | #define N_TI_WL 22 /* for TI's WL BT, FM, GPS combo chips */ | 52 | #define N_TI_WL 22 /* for TI's WL BT, FM, GPS combo chips */ |
53 | #define N_TRACESINK 23 /* Trace data routing for MIPI P1149.7 */ | ||
54 | #define N_TRACEROUTER 24 /* Trace data routing for MIPI P1149.7 */ | ||
53 | 55 | ||
54 | /* | 56 | /* |
55 | * This character is the same as _POSIX_VDISABLE: it cannot be used as | 57 | * This character is the same as _POSIX_VDISABLE: it cannot be used as |
@@ -472,6 +474,7 @@ extern int tty_add_file(struct tty_struct *tty, struct file *file); | |||
472 | extern void free_tty_struct(struct tty_struct *tty); | 474 | extern void free_tty_struct(struct tty_struct *tty); |
473 | extern void initialize_tty_struct(struct tty_struct *tty, | 475 | extern void initialize_tty_struct(struct tty_struct *tty, |
474 | struct tty_driver *driver, int idx); | 476 | struct tty_driver *driver, int idx); |
477 | extern void deinitialize_tty_struct(struct tty_struct *tty); | ||
475 | extern struct tty_struct *tty_init_dev(struct tty_driver *driver, int idx, | 478 | extern struct tty_struct *tty_init_dev(struct tty_driver *driver, int idx, |
476 | int first_ok); | 479 | int first_ok); |
477 | extern int tty_release(struct inode *inode, struct file *filp); | 480 | extern int tty_release(struct inode *inode, struct file *filp); |
@@ -525,6 +528,7 @@ extern int tty_set_ldisc(struct tty_struct *tty, int ldisc); | |||
525 | extern int tty_ldisc_setup(struct tty_struct *tty, struct tty_struct *o_tty); | 528 | extern int tty_ldisc_setup(struct tty_struct *tty, struct tty_struct *o_tty); |
526 | extern void tty_ldisc_release(struct tty_struct *tty, struct tty_struct *o_tty); | 529 | extern void tty_ldisc_release(struct tty_struct *tty, struct tty_struct *o_tty); |
527 | extern void tty_ldisc_init(struct tty_struct *tty); | 530 | extern void tty_ldisc_init(struct tty_struct *tty); |
531 | extern void tty_ldisc_deinit(struct tty_struct *tty); | ||
528 | extern void tty_ldisc_begin(void); | 532 | extern void tty_ldisc_begin(void); |
529 | /* This last one is just for the tty layer internals and shouldn't be used elsewhere */ | 533 | /* This last one is just for the tty layer internals and shouldn't be used elsewhere */ |
530 | extern void tty_ldisc_enable(struct tty_struct *tty); | 534 | extern void tty_ldisc_enable(struct tty_struct *tty); |
diff --git a/include/linux/uaccess.h b/include/linux/uaccess.h index d512d98dfb7d..5ca0951e1855 100644 --- a/include/linux/uaccess.h +++ b/include/linux/uaccess.h | |||
@@ -93,8 +93,8 @@ static inline unsigned long __copy_from_user_nocache(void *to, | |||
93 | * Safely read from address @src to the buffer at @dst. If a kernel fault | 93 | * Safely read from address @src to the buffer at @dst. If a kernel fault |
94 | * happens, handle that and return -EFAULT. | 94 | * happens, handle that and return -EFAULT. |
95 | */ | 95 | */ |
96 | extern long probe_kernel_read(void *dst, void *src, size_t size); | 96 | extern long probe_kernel_read(void *dst, const void *src, size_t size); |
97 | extern long __probe_kernel_read(void *dst, void *src, size_t size); | 97 | extern long __probe_kernel_read(void *dst, const void *src, size_t size); |
98 | 98 | ||
99 | /* | 99 | /* |
100 | * probe_kernel_write(): safely attempt to write to a location | 100 | * probe_kernel_write(): safely attempt to write to a location |
@@ -105,7 +105,7 @@ extern long __probe_kernel_read(void *dst, void *src, size_t size); | |||
105 | * Safely write to address @dst from the buffer at @src. If a kernel fault | 105 | * Safely write to address @dst from the buffer at @src. If a kernel fault |
106 | * happens, handle that and return -EFAULT. | 106 | * happens, handle that and return -EFAULT. |
107 | */ | 107 | */ |
108 | extern long notrace probe_kernel_write(void *dst, void *src, size_t size); | 108 | extern long notrace probe_kernel_write(void *dst, const void *src, size_t size); |
109 | extern long notrace __probe_kernel_write(void *dst, void *src, size_t size); | 109 | extern long notrace __probe_kernel_write(void *dst, const void *src, size_t size); |
110 | 110 | ||
111 | #endif /* __LINUX_UACCESS_H__ */ | 111 | #endif /* __LINUX_UACCESS_H__ */ |
diff --git a/include/linux/usb.h b/include/linux/usb.h index 65f78ca5d88e..73c7df489607 100644 --- a/include/linux/usb.h +++ b/include/linux/usb.h | |||
@@ -806,8 +806,10 @@ struct usbdrv_wrap { | |||
806 | * @resume: Called when the device is being resumed by the system. | 806 | * @resume: Called when the device is being resumed by the system. |
807 | * @reset_resume: Called when the suspended device has been reset instead | 807 | * @reset_resume: Called when the suspended device has been reset instead |
808 | * of being resumed. | 808 | * of being resumed. |
809 | * @pre_reset: Called by usb_reset_device() when the device | 809 | * @pre_reset: Called by usb_reset_device() when the device is about to be |
810 | * is about to be reset. | 810 | * reset. This routine must not return until the driver has no active |
811 | * URBs for the device, and no more URBs may be submitted until the | ||
812 | * post_reset method is called. | ||
811 | * @post_reset: Called by usb_reset_device() after the device | 813 | * @post_reset: Called by usb_reset_device() after the device |
812 | * has been reset | 814 | * has been reset |
813 | * @id_table: USB drivers use ID table to support hotplugging. | 815 | * @id_table: USB drivers use ID table to support hotplugging. |
diff --git a/include/linux/usb/ch9.h b/include/linux/usb/ch9.h index b72f305ce6bd..0fd3fbdd8283 100644 --- a/include/linux/usb/ch9.h +++ b/include/linux/usb/ch9.h | |||
@@ -579,7 +579,7 @@ struct usb_ss_ep_comp_descriptor { | |||
579 | 579 | ||
580 | __u8 bMaxBurst; | 580 | __u8 bMaxBurst; |
581 | __u8 bmAttributes; | 581 | __u8 bmAttributes; |
582 | __u16 wBytesPerInterval; | 582 | __le16 wBytesPerInterval; |
583 | } __attribute__ ((packed)); | 583 | } __attribute__ ((packed)); |
584 | 584 | ||
585 | #define USB_DT_SS_EP_COMP_SIZE 6 | 585 | #define USB_DT_SS_EP_COMP_SIZE 6 |
diff --git a/include/linux/usb/composite.h b/include/linux/usb/composite.h index 882a084a8411..b78cba466d3d 100644 --- a/include/linux/usb/composite.h +++ b/include/linux/usb/composite.h | |||
@@ -37,6 +37,14 @@ | |||
37 | #include <linux/usb/ch9.h> | 37 | #include <linux/usb/ch9.h> |
38 | #include <linux/usb/gadget.h> | 38 | #include <linux/usb/gadget.h> |
39 | 39 | ||
40 | /* | ||
41 | * USB function drivers should return USB_GADGET_DELAYED_STATUS if they | ||
42 | * wish to delay the data/status stages of the control transfer till they | ||
43 | * are ready. The control transfer will then be kept from completing till | ||
44 | * all the function drivers that requested for USB_GADGET_DELAYED_STAUS | ||
45 | * invoke usb_composite_setup_continue(). | ||
46 | */ | ||
47 | #define USB_GADGET_DELAYED_STATUS 0x7fff /* Impossibly large value */ | ||
40 | 48 | ||
41 | struct usb_configuration; | 49 | struct usb_configuration; |
42 | 50 | ||
@@ -285,6 +293,7 @@ struct usb_composite_driver { | |||
285 | extern int usb_composite_probe(struct usb_composite_driver *driver, | 293 | extern int usb_composite_probe(struct usb_composite_driver *driver, |
286 | int (*bind)(struct usb_composite_dev *cdev)); | 294 | int (*bind)(struct usb_composite_dev *cdev)); |
287 | extern void usb_composite_unregister(struct usb_composite_driver *driver); | 295 | extern void usb_composite_unregister(struct usb_composite_driver *driver); |
296 | extern void usb_composite_setup_continue(struct usb_composite_dev *cdev); | ||
288 | 297 | ||
289 | 298 | ||
290 | /** | 299 | /** |
@@ -342,7 +351,12 @@ struct usb_composite_dev { | |||
342 | */ | 351 | */ |
343 | unsigned deactivations; | 352 | unsigned deactivations; |
344 | 353 | ||
345 | /* protects at least deactivation count */ | 354 | /* the composite driver won't complete the control transfer's |
355 | * data/status stages till delayed_status is zero. | ||
356 | */ | ||
357 | int delayed_status; | ||
358 | |||
359 | /* protects deactivations and delayed_status counts*/ | ||
346 | spinlock_t lock; | 360 | spinlock_t lock; |
347 | }; | 361 | }; |
348 | 362 | ||
diff --git a/include/linux/usb/ehci_def.h b/include/linux/usb/ehci_def.h index e49dfd45baa4..7cc95ee3606b 100644 --- a/include/linux/usb/ehci_def.h +++ b/include/linux/usb/ehci_def.h | |||
@@ -25,10 +25,15 @@ | |||
25 | struct ehci_caps { | 25 | struct ehci_caps { |
26 | /* these fields are specified as 8 and 16 bit registers, | 26 | /* these fields are specified as 8 and 16 bit registers, |
27 | * but some hosts can't perform 8 or 16 bit PCI accesses. | 27 | * but some hosts can't perform 8 or 16 bit PCI accesses. |
28 | * some hosts treat caplength and hciversion as parts of a 32-bit | ||
29 | * register, others treat them as two separate registers, this | ||
30 | * affects the memory map for big endian controllers. | ||
28 | */ | 31 | */ |
29 | u32 hc_capbase; | 32 | u32 hc_capbase; |
30 | #define HC_LENGTH(p) (((p)>>00)&0x00ff) /* bits 7:0 */ | 33 | #define HC_LENGTH(ehci, p) (0x00ff&((p) >> /* bits 7:0 / offset 00h */ \ |
31 | #define HC_VERSION(p) (((p)>>16)&0xffff) /* bits 31:16 */ | 34 | (ehci_big_endian_capbase(ehci) ? 24 : 0))) |
35 | #define HC_VERSION(ehci, p) (0xffff&((p) >> /* bits 31:16 / offset 02h */ \ | ||
36 | (ehci_big_endian_capbase(ehci) ? 0 : 16))) | ||
32 | u32 hcs_params; /* HCSPARAMS - offset 0x4 */ | 37 | u32 hcs_params; /* HCSPARAMS - offset 0x4 */ |
33 | #define HCS_DEBUG_PORT(p) (((p)>>20)&0xf) /* bits 23:20, debug port? */ | 38 | #define HCS_DEBUG_PORT(p) (((p)>>20)&0xf) /* bits 23:20, debug port? */ |
34 | #define HCS_INDICATOR(p) ((p)&(1 << 16)) /* true: has port indicators */ | 39 | #define HCS_INDICATOR(p) ((p)&(1 << 16)) /* true: has port indicators */ |
@@ -52,7 +57,7 @@ struct ehci_caps { | |||
52 | #define HCC_PGM_FRAMELISTLEN(p) ((p)&(1 << 1)) /* true: periodic_size changes*/ | 57 | #define HCC_PGM_FRAMELISTLEN(p) ((p)&(1 << 1)) /* true: periodic_size changes*/ |
53 | #define HCC_64BIT_ADDR(p) ((p)&(1)) /* true: can use 64-bit addr */ | 58 | #define HCC_64BIT_ADDR(p) ((p)&(1)) /* true: can use 64-bit addr */ |
54 | u8 portroute[8]; /* nibbles for routing - offset 0xC */ | 59 | u8 portroute[8]; /* nibbles for routing - offset 0xC */ |
55 | } __attribute__ ((packed)); | 60 | }; |
56 | 61 | ||
57 | 62 | ||
58 | /* Section 2.3 Host Controller Operational Registers */ | 63 | /* Section 2.3 Host Controller Operational Registers */ |
@@ -150,7 +155,7 @@ struct ehci_regs { | |||
150 | #define PORT_CSC (1<<1) /* connect status change */ | 155 | #define PORT_CSC (1<<1) /* connect status change */ |
151 | #define PORT_CONNECT (1<<0) /* device connected */ | 156 | #define PORT_CONNECT (1<<0) /* device connected */ |
152 | #define PORT_RWC_BITS (PORT_CSC | PORT_PEC | PORT_OCC) | 157 | #define PORT_RWC_BITS (PORT_CSC | PORT_PEC | PORT_OCC) |
153 | } __attribute__ ((packed)); | 158 | }; |
154 | 159 | ||
155 | #define USBMODE 0x68 /* USB Device mode */ | 160 | #define USBMODE 0x68 /* USB Device mode */ |
156 | #define USBMODE_SDIS (1<<3) /* Stream disable */ | 161 | #define USBMODE_SDIS (1<<3) /* Stream disable */ |
@@ -194,7 +199,7 @@ struct ehci_dbg_port { | |||
194 | u32 data47; | 199 | u32 data47; |
195 | u32 address; | 200 | u32 address; |
196 | #define DBGP_EPADDR(dev, ep) (((dev)<<8)|(ep)) | 201 | #define DBGP_EPADDR(dev, ep) (((dev)<<8)|(ep)) |
197 | } __attribute__ ((packed)); | 202 | }; |
198 | 203 | ||
199 | #ifdef CONFIG_EARLY_PRINTK_DBGP | 204 | #ifdef CONFIG_EARLY_PRINTK_DBGP |
200 | #include <linux/init.h> | 205 | #include <linux/init.h> |
diff --git a/include/linux/usb/gadget.h b/include/linux/usb/gadget.h index e538172c0f64..dd1571db55e7 100644 --- a/include/linux/usb/gadget.h +++ b/include/linux/usb/gadget.h | |||
@@ -890,8 +890,8 @@ static inline void usb_free_descriptors(struct usb_descriptor_header **v) | |||
890 | /* utility wrapping a simple endpoint selection policy */ | 890 | /* utility wrapping a simple endpoint selection policy */ |
891 | 891 | ||
892 | extern struct usb_ep *usb_ep_autoconfig(struct usb_gadget *, | 892 | extern struct usb_ep *usb_ep_autoconfig(struct usb_gadget *, |
893 | struct usb_endpoint_descriptor *) __devinit; | 893 | struct usb_endpoint_descriptor *); |
894 | 894 | ||
895 | extern void usb_ep_autoconfig_reset(struct usb_gadget *) __devinit; | 895 | extern void usb_ep_autoconfig_reset(struct usb_gadget *); |
896 | 896 | ||
897 | #endif /* __LINUX_USB_GADGET_H */ | 897 | #endif /* __LINUX_USB_GADGET_H */ |
diff --git a/include/linux/usb/msm_hsusb.h b/include/linux/usb/msm_hsusb.h index 3657403eac18..00311fe9d0df 100644 --- a/include/linux/usb/msm_hsusb.h +++ b/include/linux/usb/msm_hsusb.h | |||
@@ -2,7 +2,7 @@ | |||
2 | * | 2 | * |
3 | * Copyright (C) 2008 Google, Inc. | 3 | * Copyright (C) 2008 Google, Inc. |
4 | * Author: Brian Swetland <swetland@google.com> | 4 | * Author: Brian Swetland <swetland@google.com> |
5 | * Copyright (c) 2009-2010, Code Aurora Forum. All rights reserved. | 5 | * Copyright (c) 2009-2011, Code Aurora Forum. All rights reserved. |
6 | * | 6 | * |
7 | * This software is licensed under the terms of the GNU General Public | 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 | 8 | * License version 2, as published by the Free Software Foundation, and |
@@ -54,6 +54,64 @@ enum otg_control_type { | |||
54 | }; | 54 | }; |
55 | 55 | ||
56 | /** | 56 | /** |
57 | * PHY used in | ||
58 | * | ||
59 | * INVALID_PHY Unsupported PHY | ||
60 | * CI_45NM_INTEGRATED_PHY Chipidea 45nm integrated PHY | ||
61 | * SNPS_28NM_INTEGRATED_PHY Synopsis 28nm integrated PHY | ||
62 | * | ||
63 | */ | ||
64 | enum msm_usb_phy_type { | ||
65 | INVALID_PHY = 0, | ||
66 | CI_45NM_INTEGRATED_PHY, | ||
67 | SNPS_28NM_INTEGRATED_PHY, | ||
68 | }; | ||
69 | |||
70 | #define IDEV_CHG_MAX 1500 | ||
71 | #define IUNIT 100 | ||
72 | |||
73 | /** | ||
74 | * Different states involved in USB charger detection. | ||
75 | * | ||
76 | * USB_CHG_STATE_UNDEFINED USB charger is not connected or detection | ||
77 | * process is not yet started. | ||
78 | * USB_CHG_STATE_WAIT_FOR_DCD Waiting for Data pins contact. | ||
79 | * USB_CHG_STATE_DCD_DONE Data pin contact is detected. | ||
80 | * USB_CHG_STATE_PRIMARY_DONE Primary detection is completed (Detects | ||
81 | * between SDP and DCP/CDP). | ||
82 | * USB_CHG_STATE_SECONDARY_DONE Secondary detection is completed (Detects | ||
83 | * between DCP and CDP). | ||
84 | * USB_CHG_STATE_DETECTED USB charger type is determined. | ||
85 | * | ||
86 | */ | ||
87 | enum usb_chg_state { | ||
88 | USB_CHG_STATE_UNDEFINED = 0, | ||
89 | USB_CHG_STATE_WAIT_FOR_DCD, | ||
90 | USB_CHG_STATE_DCD_DONE, | ||
91 | USB_CHG_STATE_PRIMARY_DONE, | ||
92 | USB_CHG_STATE_SECONDARY_DONE, | ||
93 | USB_CHG_STATE_DETECTED, | ||
94 | }; | ||
95 | |||
96 | /** | ||
97 | * USB charger types | ||
98 | * | ||
99 | * USB_INVALID_CHARGER Invalid USB charger. | ||
100 | * USB_SDP_CHARGER Standard downstream port. Refers to a downstream port | ||
101 | * on USB2.0 compliant host/hub. | ||
102 | * USB_DCP_CHARGER Dedicated charger port (AC charger/ Wall charger). | ||
103 | * USB_CDP_CHARGER Charging downstream port. Enumeration can happen and | ||
104 | * IDEV_CHG_MAX can be drawn irrespective of USB state. | ||
105 | * | ||
106 | */ | ||
107 | enum usb_chg_type { | ||
108 | USB_INVALID_CHARGER = 0, | ||
109 | USB_SDP_CHARGER, | ||
110 | USB_DCP_CHARGER, | ||
111 | USB_CDP_CHARGER, | ||
112 | }; | ||
113 | |||
114 | /** | ||
57 | * struct msm_otg_platform_data - platform device data | 115 | * struct msm_otg_platform_data - platform device data |
58 | * for msm_otg driver. | 116 | * for msm_otg driver. |
59 | * @phy_init_seq: PHY configuration sequence. val, reg pairs | 117 | * @phy_init_seq: PHY configuration sequence. val, reg pairs |
@@ -64,7 +122,8 @@ enum otg_control_type { | |||
64 | * @otg_control: OTG switch controlled by user/Id pin | 122 | * @otg_control: OTG switch controlled by user/Id pin |
65 | * @default_mode: Default operational mode. Applicable only if | 123 | * @default_mode: Default operational mode. Applicable only if |
66 | * OTG switch is controller by user. | 124 | * OTG switch is controller by user. |
67 | * | 125 | * @pclk_src_name: pclk is derived from ebi1_usb_clk in case of 7x27 and 8k |
126 | * dfab_usb_hs_clk in case of 8660 and 8960. | ||
68 | */ | 127 | */ |
69 | struct msm_otg_platform_data { | 128 | struct msm_otg_platform_data { |
70 | int *phy_init_seq; | 129 | int *phy_init_seq; |
@@ -73,7 +132,9 @@ struct msm_otg_platform_data { | |||
73 | enum usb_mode_type mode; | 132 | enum usb_mode_type mode; |
74 | enum otg_control_type otg_control; | 133 | enum otg_control_type otg_control; |
75 | enum usb_mode_type default_mode; | 134 | enum usb_mode_type default_mode; |
135 | enum msm_usb_phy_type phy_type; | ||
76 | void (*setup_gpio)(enum usb_otg_state state); | 136 | void (*setup_gpio)(enum usb_otg_state state); |
137 | char *pclk_src_name; | ||
77 | }; | 138 | }; |
78 | 139 | ||
79 | /** | 140 | /** |
@@ -83,6 +144,7 @@ struct msm_otg_platform_data { | |||
83 | * @irq: IRQ number assigned for HSUSB controller. | 144 | * @irq: IRQ number assigned for HSUSB controller. |
84 | * @clk: clock struct of usb_hs_clk. | 145 | * @clk: clock struct of usb_hs_clk. |
85 | * @pclk: clock struct of usb_hs_pclk. | 146 | * @pclk: clock struct of usb_hs_pclk. |
147 | * @pclk_src: pclk source for voting. | ||
86 | * @phy_reset_clk: clock struct of usb_phy_clk. | 148 | * @phy_reset_clk: clock struct of usb_phy_clk. |
87 | * @core_clk: clock struct of usb_hs_core_clk. | 149 | * @core_clk: clock struct of usb_hs_core_clk. |
88 | * @regs: ioremapped register base address. | 150 | * @regs: ioremapped register base address. |
@@ -90,7 +152,12 @@ struct msm_otg_platform_data { | |||
90 | * @sm_work: OTG state machine work. | 152 | * @sm_work: OTG state machine work. |
91 | * @in_lpm: indicates low power mode (LPM) state. | 153 | * @in_lpm: indicates low power mode (LPM) state. |
92 | * @async_int: Async interrupt arrived. | 154 | * @async_int: Async interrupt arrived. |
93 | * | 155 | * @cur_power: The amount of mA available from downstream port. |
156 | * @chg_work: Charger detection work. | ||
157 | * @chg_state: The state of charger detection process. | ||
158 | * @chg_type: The type of charger attached. | ||
159 | * @dcd_retires: The retry count used to track Data contact | ||
160 | * detection process. | ||
94 | */ | 161 | */ |
95 | struct msm_otg { | 162 | struct msm_otg { |
96 | struct otg_transceiver otg; | 163 | struct otg_transceiver otg; |
@@ -98,6 +165,7 @@ struct msm_otg { | |||
98 | int irq; | 165 | int irq; |
99 | struct clk *clk; | 166 | struct clk *clk; |
100 | struct clk *pclk; | 167 | struct clk *pclk; |
168 | struct clk *pclk_src; | ||
101 | struct clk *phy_reset_clk; | 169 | struct clk *phy_reset_clk; |
102 | struct clk *core_clk; | 170 | struct clk *core_clk; |
103 | void __iomem *regs; | 171 | void __iomem *regs; |
@@ -107,6 +175,11 @@ struct msm_otg { | |||
107 | struct work_struct sm_work; | 175 | struct work_struct sm_work; |
108 | atomic_t in_lpm; | 176 | atomic_t in_lpm; |
109 | int async_int; | 177 | int async_int; |
178 | unsigned cur_power; | ||
179 | struct delayed_work chg_work; | ||
180 | enum usb_chg_state chg_state; | ||
181 | enum usb_chg_type chg_type; | ||
182 | u8 dcd_retries; | ||
110 | }; | 183 | }; |
111 | 184 | ||
112 | #endif | 185 | #endif |
diff --git a/include/linux/usb/msm_hsusb_hw.h b/include/linux/usb/msm_hsusb_hw.h index 7d1babbff071..6e97a2d3d39f 100644 --- a/include/linux/usb/msm_hsusb_hw.h +++ b/include/linux/usb/msm_hsusb_hw.h | |||
@@ -24,6 +24,7 @@ | |||
24 | #define USB_PORTSC (MSM_USB_BASE + 0x0184) | 24 | #define USB_PORTSC (MSM_USB_BASE + 0x0184) |
25 | #define USB_OTGSC (MSM_USB_BASE + 0x01A4) | 25 | #define USB_OTGSC (MSM_USB_BASE + 0x01A4) |
26 | #define USB_USBMODE (MSM_USB_BASE + 0x01A8) | 26 | #define USB_USBMODE (MSM_USB_BASE + 0x01A8) |
27 | #define USB_PHY_CTRL (MSM_USB_BASE + 0x0240) | ||
27 | 28 | ||
28 | #define USBCMD_RESET 2 | 29 | #define USBCMD_RESET 2 |
29 | #define USB_USBINTR (MSM_USB_BASE + 0x0148) | 30 | #define USB_USBINTR (MSM_USB_BASE + 0x0148) |
@@ -42,6 +43,7 @@ | |||
42 | 43 | ||
43 | #define ASYNC_INTR_CTRL (1 << 29) /* Enable async interrupt */ | 44 | #define ASYNC_INTR_CTRL (1 << 29) /* Enable async interrupt */ |
44 | #define ULPI_STP_CTRL (1 << 30) /* Block communication with PHY */ | 45 | #define ULPI_STP_CTRL (1 << 30) /* Block communication with PHY */ |
46 | #define PHY_RETEN (1 << 1) /* PHY retention enable/disable */ | ||
45 | 47 | ||
46 | /* OTG definitions */ | 48 | /* OTG definitions */ |
47 | #define OTGSC_INTSTS_MASK (0x7f << 16) | 49 | #define OTGSC_INTSTS_MASK (0x7f << 16) |
diff --git a/include/linux/usb/otg.h b/include/linux/usb/otg.h index 6e40718f5abe..d87f44f5b04e 100644 --- a/include/linux/usb/otg.h +++ b/include/linux/usb/otg.h | |||
@@ -168,6 +168,7 @@ otg_shutdown(struct otg_transceiver *otg) | |||
168 | #ifdef CONFIG_USB_OTG_UTILS | 168 | #ifdef CONFIG_USB_OTG_UTILS |
169 | extern struct otg_transceiver *otg_get_transceiver(void); | 169 | extern struct otg_transceiver *otg_get_transceiver(void); |
170 | extern void otg_put_transceiver(struct otg_transceiver *); | 170 | extern void otg_put_transceiver(struct otg_transceiver *); |
171 | extern const char *otg_state_string(enum usb_otg_state state); | ||
171 | #else | 172 | #else |
172 | static inline struct otg_transceiver *otg_get_transceiver(void) | 173 | static inline struct otg_transceiver *otg_get_transceiver(void) |
173 | { | 174 | { |
@@ -177,6 +178,11 @@ static inline struct otg_transceiver *otg_get_transceiver(void) | |||
177 | static inline void otg_put_transceiver(struct otg_transceiver *x) | 178 | static inline void otg_put_transceiver(struct otg_transceiver *x) |
178 | { | 179 | { |
179 | } | 180 | } |
181 | |||
182 | static inline const char *otg_state_string(enum usb_otg_state state) | ||
183 | { | ||
184 | return NULL; | ||
185 | } | ||
180 | #endif | 186 | #endif |
181 | 187 | ||
182 | /* Context: can sleep */ | 188 | /* Context: can sleep */ |
diff --git a/include/linux/usb/renesas_usbhs.h b/include/linux/usb/renesas_usbhs.h new file mode 100644 index 000000000000..3a7f1d982dd6 --- /dev/null +++ b/include/linux/usb/renesas_usbhs.h | |||
@@ -0,0 +1,156 @@ | |||
1 | /* | ||
2 | * Renesas USB | ||
3 | * | ||
4 | * Copyright (C) 2011 Renesas Solutions Corp. | ||
5 | * Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> | ||
6 | * | ||
7 | * This program is distributed in the hope that it will be useful, | ||
8 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
9 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
10 | * GNU General Public License for more details. | ||
11 | * | ||
12 | * You should have received a copy of the GNU General Public License | ||
13 | * along with this program; if not, write to the Free Software | ||
14 | * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA | ||
15 | * | ||
16 | */ | ||
17 | #ifndef RENESAS_USB_H | ||
18 | #define RENESAS_USB_H | ||
19 | #include <linux/platform_device.h> | ||
20 | #include <linux/usb/ch9.h> | ||
21 | |||
22 | /* | ||
23 | * module type | ||
24 | * | ||
25 | * it will be return value from get_id | ||
26 | */ | ||
27 | enum { | ||
28 | USBHS_HOST = 0, | ||
29 | USBHS_GADGET, | ||
30 | USBHS_MAX, | ||
31 | }; | ||
32 | |||
33 | /* | ||
34 | * callback functions table for driver | ||
35 | * | ||
36 | * These functions are called from platform for driver. | ||
37 | * Callback function's pointer will be set before | ||
38 | * renesas_usbhs_platform_callback :: hardware_init was called | ||
39 | */ | ||
40 | struct renesas_usbhs_driver_callback { | ||
41 | int (*notify_hotplug)(struct platform_device *pdev); | ||
42 | }; | ||
43 | |||
44 | /* | ||
45 | * callback functions for platform | ||
46 | * | ||
47 | * These functions are called from driver for platform | ||
48 | */ | ||
49 | struct renesas_usbhs_platform_callback { | ||
50 | |||
51 | /* | ||
52 | * option: | ||
53 | * | ||
54 | * Hardware init function for platform. | ||
55 | * it is called when driver was probed. | ||
56 | */ | ||
57 | int (*hardware_init)(struct platform_device *pdev); | ||
58 | |||
59 | /* | ||
60 | * option: | ||
61 | * | ||
62 | * Hardware exit function for platform. | ||
63 | * it is called when driver was removed | ||
64 | */ | ||
65 | void (*hardware_exit)(struct platform_device *pdev); | ||
66 | |||
67 | /* | ||
68 | * option: | ||
69 | * | ||
70 | * Phy reset for platform | ||
71 | */ | ||
72 | void (*phy_reset)(struct platform_device *pdev); | ||
73 | |||
74 | /* | ||
75 | * get USB ID function | ||
76 | * - USBHS_HOST | ||
77 | * - USBHS_GADGET | ||
78 | */ | ||
79 | int (*get_id)(struct platform_device *pdev); | ||
80 | |||
81 | /* | ||
82 | * get VBUS status function. | ||
83 | */ | ||
84 | int (*get_vbus)(struct platform_device *pdev); | ||
85 | }; | ||
86 | |||
87 | /* | ||
88 | * parameters for renesas usbhs | ||
89 | * | ||
90 | * some register needs USB chip specific parameters. | ||
91 | * This struct show it to driver | ||
92 | */ | ||
93 | struct renesas_usbhs_driver_param { | ||
94 | /* | ||
95 | * pipe settings | ||
96 | */ | ||
97 | u32 *pipe_type; /* array of USB_ENDPOINT_XFER_xxx (from ep0) */ | ||
98 | int pipe_size; /* pipe_type array size */ | ||
99 | |||
100 | /* | ||
101 | * option: | ||
102 | * | ||
103 | * for BUSWAIT :: BWAIT | ||
104 | * */ | ||
105 | int buswait_bwait; | ||
106 | |||
107 | /* | ||
108 | * option: | ||
109 | * | ||
110 | * delay time from notify_hotplug callback | ||
111 | */ | ||
112 | int detection_delay; | ||
113 | }; | ||
114 | |||
115 | /* | ||
116 | * option: | ||
117 | * | ||
118 | * platform information for renesas_usbhs driver. | ||
119 | */ | ||
120 | struct renesas_usbhs_platform_info { | ||
121 | /* | ||
122 | * option: | ||
123 | * | ||
124 | * platform set these functions before | ||
125 | * call platform_add_devices if needed | ||
126 | */ | ||
127 | struct renesas_usbhs_platform_callback platform_callback; | ||
128 | |||
129 | /* | ||
130 | * driver set these callback functions pointer. | ||
131 | * platform can use it on callback functions | ||
132 | */ | ||
133 | struct renesas_usbhs_driver_callback driver_callback; | ||
134 | |||
135 | /* | ||
136 | * option: | ||
137 | * | ||
138 | * driver use these param for some register | ||
139 | */ | ||
140 | struct renesas_usbhs_driver_param driver_param; | ||
141 | }; | ||
142 | |||
143 | /* | ||
144 | * macro for platform | ||
145 | */ | ||
146 | #define renesas_usbhs_get_info(pdev)\ | ||
147 | ((struct renesas_usbhs_platform_info *)(pdev)->dev.platform_data) | ||
148 | |||
149 | #define renesas_usbhs_call_notify_hotplug(pdev) \ | ||
150 | ({ \ | ||
151 | struct renesas_usbhs_driver_callback *dc; \ | ||
152 | dc = &(renesas_usbhs_get_info(pdev)->driver_callback); \ | ||
153 | if (dc && dc->notify_hotplug) \ | ||
154 | dc->notify_hotplug(pdev); \ | ||
155 | }) | ||
156 | #endif /* RENESAS_USB_H */ | ||
diff --git a/include/linux/uvcvideo.h b/include/linux/uvcvideo.h new file mode 100644 index 000000000000..f46a53f060d7 --- /dev/null +++ b/include/linux/uvcvideo.h | |||
@@ -0,0 +1,69 @@ | |||
1 | #ifndef __LINUX_UVCVIDEO_H_ | ||
2 | #define __LINUX_UVCVIDEO_H_ | ||
3 | |||
4 | #include <linux/ioctl.h> | ||
5 | #include <linux/types.h> | ||
6 | |||
7 | /* | ||
8 | * Dynamic controls | ||
9 | */ | ||
10 | |||
11 | /* Data types for UVC control data */ | ||
12 | #define UVC_CTRL_DATA_TYPE_RAW 0 | ||
13 | #define UVC_CTRL_DATA_TYPE_SIGNED 1 | ||
14 | #define UVC_CTRL_DATA_TYPE_UNSIGNED 2 | ||
15 | #define UVC_CTRL_DATA_TYPE_BOOLEAN 3 | ||
16 | #define UVC_CTRL_DATA_TYPE_ENUM 4 | ||
17 | #define UVC_CTRL_DATA_TYPE_BITMASK 5 | ||
18 | |||
19 | /* Control flags */ | ||
20 | #define UVC_CTRL_FLAG_SET_CUR (1 << 0) | ||
21 | #define UVC_CTRL_FLAG_GET_CUR (1 << 1) | ||
22 | #define UVC_CTRL_FLAG_GET_MIN (1 << 2) | ||
23 | #define UVC_CTRL_FLAG_GET_MAX (1 << 3) | ||
24 | #define UVC_CTRL_FLAG_GET_RES (1 << 4) | ||
25 | #define UVC_CTRL_FLAG_GET_DEF (1 << 5) | ||
26 | /* Control should be saved at suspend and restored at resume. */ | ||
27 | #define UVC_CTRL_FLAG_RESTORE (1 << 6) | ||
28 | /* Control can be updated by the camera. */ | ||
29 | #define UVC_CTRL_FLAG_AUTO_UPDATE (1 << 7) | ||
30 | |||
31 | #define UVC_CTRL_FLAG_GET_RANGE \ | ||
32 | (UVC_CTRL_FLAG_GET_CUR | UVC_CTRL_FLAG_GET_MIN | \ | ||
33 | UVC_CTRL_FLAG_GET_MAX | UVC_CTRL_FLAG_GET_RES | \ | ||
34 | UVC_CTRL_FLAG_GET_DEF) | ||
35 | |||
36 | struct uvc_menu_info { | ||
37 | __u32 value; | ||
38 | __u8 name[32]; | ||
39 | }; | ||
40 | |||
41 | struct uvc_xu_control_mapping { | ||
42 | __u32 id; | ||
43 | __u8 name[32]; | ||
44 | __u8 entity[16]; | ||
45 | __u8 selector; | ||
46 | |||
47 | __u8 size; | ||
48 | __u8 offset; | ||
49 | __u32 v4l2_type; | ||
50 | __u32 data_type; | ||
51 | |||
52 | struct uvc_menu_info __user *menu_info; | ||
53 | __u32 menu_count; | ||
54 | |||
55 | __u32 reserved[4]; | ||
56 | }; | ||
57 | |||
58 | struct uvc_xu_control_query { | ||
59 | __u8 unit; | ||
60 | __u8 selector; | ||
61 | __u8 query; | ||
62 | __u16 size; | ||
63 | __u8 __user *data; | ||
64 | }; | ||
65 | |||
66 | #define UVCIOC_CTRL_MAP _IOWR('u', 0x20, struct uvc_xu_control_mapping) | ||
67 | #define UVCIOC_CTRL_QUERY _IOWR('u', 0x21, struct uvc_xu_control_query) | ||
68 | |||
69 | #endif | ||
diff --git a/include/linux/v4l2-mediabus.h b/include/linux/v4l2-mediabus.h index de5c15921025..5ea7f753a348 100644 --- a/include/linux/v4l2-mediabus.h +++ b/include/linux/v4l2-mediabus.h | |||
@@ -89,6 +89,9 @@ enum v4l2_mbus_pixelcode { | |||
89 | V4L2_MBUS_FMT_SGBRG12_1X12 = 0x3010, | 89 | V4L2_MBUS_FMT_SGBRG12_1X12 = 0x3010, |
90 | V4L2_MBUS_FMT_SGRBG12_1X12 = 0x3011, | 90 | V4L2_MBUS_FMT_SGRBG12_1X12 = 0x3011, |
91 | V4L2_MBUS_FMT_SRGGB12_1X12 = 0x3012, | 91 | V4L2_MBUS_FMT_SRGGB12_1X12 = 0x3012, |
92 | |||
93 | /* JPEG compressed formats - next is 0x4002 */ | ||
94 | V4L2_MBUS_FMT_JPEG_1X8 = 0x4001, | ||
92 | }; | 95 | }; |
93 | 96 | ||
94 | /** | 97 | /** |
diff --git a/include/linux/videodev2.h b/include/linux/videodev2.h index be82c8ead1af..8a4c309d2344 100644 --- a/include/linux/videodev2.h +++ b/include/linux/videodev2.h | |||
@@ -311,6 +311,9 @@ struct v4l2_pix_format { | |||
311 | #define V4L2_PIX_FMT_Y12 v4l2_fourcc('Y', '1', '2', ' ') /* 12 Greyscale */ | 311 | #define V4L2_PIX_FMT_Y12 v4l2_fourcc('Y', '1', '2', ' ') /* 12 Greyscale */ |
312 | #define V4L2_PIX_FMT_Y16 v4l2_fourcc('Y', '1', '6', ' ') /* 16 Greyscale */ | 312 | #define V4L2_PIX_FMT_Y16 v4l2_fourcc('Y', '1', '6', ' ') /* 16 Greyscale */ |
313 | 313 | ||
314 | /* Grey bit-packed formats */ | ||
315 | #define V4L2_PIX_FMT_Y10BPACK v4l2_fourcc('Y', '1', '0', 'B') /* 10 Greyscale bit-packed */ | ||
316 | |||
314 | /* Palette formats */ | 317 | /* Palette formats */ |
315 | #define V4L2_PIX_FMT_PAL8 v4l2_fourcc('P', 'A', 'L', '8') /* 8 8-bit palette */ | 318 | #define V4L2_PIX_FMT_PAL8 v4l2_fourcc('P', 'A', 'L', '8') /* 8 8-bit palette */ |
316 | 319 | ||
@@ -333,6 +336,7 @@ struct v4l2_pix_format { | |||
333 | #define V4L2_PIX_FMT_YUV420 v4l2_fourcc('Y', 'U', '1', '2') /* 12 YUV 4:2:0 */ | 336 | #define V4L2_PIX_FMT_YUV420 v4l2_fourcc('Y', 'U', '1', '2') /* 12 YUV 4:2:0 */ |
334 | #define V4L2_PIX_FMT_HI240 v4l2_fourcc('H', 'I', '2', '4') /* 8 8-bit color */ | 337 | #define V4L2_PIX_FMT_HI240 v4l2_fourcc('H', 'I', '2', '4') /* 8 8-bit color */ |
335 | #define V4L2_PIX_FMT_HM12 v4l2_fourcc('H', 'M', '1', '2') /* 8 YUV 4:2:0 16x16 macroblocks */ | 338 | #define V4L2_PIX_FMT_HM12 v4l2_fourcc('H', 'M', '1', '2') /* 8 YUV 4:2:0 16x16 macroblocks */ |
339 | #define V4L2_PIX_FMT_M420 v4l2_fourcc('M', '4', '2', '0') /* 12 YUV 4:2:0 2 lines y, 1 line uv interleaved */ | ||
336 | 340 | ||
337 | /* two planes -- one Y, one Cr + Cb interleaved */ | 341 | /* two planes -- one Y, one Cr + Cb interleaved */ |
338 | #define V4L2_PIX_FMT_NV12 v4l2_fourcc('N', 'V', '1', '2') /* 12 Y/CbCr 4:2:0 */ | 342 | #define V4L2_PIX_FMT_NV12 v4l2_fourcc('N', 'V', '1', '2') /* 12 Y/CbCr 4:2:0 */ |
diff --git a/include/linux/virtio.h b/include/linux/virtio.h index aff5b4f74041..710885749605 100644 --- a/include/linux/virtio.h +++ b/include/linux/virtio.h | |||
@@ -51,6 +51,13 @@ struct virtqueue { | |||
51 | * This re-enables callbacks; it returns "false" if there are pending | 51 | * This re-enables callbacks; it returns "false" if there are pending |
52 | * buffers in the queue, to detect a possible race between the driver | 52 | * buffers in the queue, to detect a possible race between the driver |
53 | * checking for more work, and enabling callbacks. | 53 | * checking for more work, and enabling callbacks. |
54 | * virtqueue_enable_cb_delayed: restart callbacks after disable_cb. | ||
55 | * vq: the struct virtqueue we're talking about. | ||
56 | * This re-enables callbacks but hints to the other side to delay | ||
57 | * interrupts until most of the available buffers have been processed; | ||
58 | * it returns "false" if there are many pending buffers in the queue, | ||
59 | * to detect a possible race between the driver checking for more work, | ||
60 | * and enabling callbacks. | ||
54 | * virtqueue_detach_unused_buf: detach first unused buffer | 61 | * virtqueue_detach_unused_buf: detach first unused buffer |
55 | * vq: the struct virtqueue we're talking about. | 62 | * vq: the struct virtqueue we're talking about. |
56 | * Returns NULL or the "data" token handed to add_buf | 63 | * Returns NULL or the "data" token handed to add_buf |
@@ -86,6 +93,8 @@ void virtqueue_disable_cb(struct virtqueue *vq); | |||
86 | 93 | ||
87 | bool virtqueue_enable_cb(struct virtqueue *vq); | 94 | bool virtqueue_enable_cb(struct virtqueue *vq); |
88 | 95 | ||
96 | bool virtqueue_enable_cb_delayed(struct virtqueue *vq); | ||
97 | |||
89 | void *virtqueue_detach_unused_buf(struct virtqueue *vq); | 98 | void *virtqueue_detach_unused_buf(struct virtqueue *vq); |
90 | 99 | ||
91 | /** | 100 | /** |
diff --git a/include/linux/virtio_9p.h b/include/linux/virtio_9p.h index e68b439b2860..277c4ad44e84 100644 --- a/include/linux/virtio_9p.h +++ b/include/linux/virtio_9p.h | |||
@@ -1,7 +1,30 @@ | |||
1 | #ifndef _LINUX_VIRTIO_9P_H | 1 | #ifndef _LINUX_VIRTIO_9P_H |
2 | #define _LINUX_VIRTIO_9P_H | 2 | #define _LINUX_VIRTIO_9P_H |
3 | /* This header is BSD licensed so anyone can use the definitions to implement | 3 | /* This header is BSD licensed so anyone can use the definitions to implement |
4 | * compatible drivers/servers. */ | 4 | * compatible drivers/servers. |
5 | * | ||
6 | * Redistribution and use in source and binary forms, with or without | ||
7 | * modification, are permitted provided that the following conditions | ||
8 | * are met: | ||
9 | * 1. Redistributions of source code must retain the above copyright | ||
10 | * notice, this list of conditions and the following disclaimer. | ||
11 | * 2. Redistributions in binary form must reproduce the above copyright | ||
12 | * notice, this list of conditions and the following disclaimer in the | ||
13 | * documentation and/or other materials provided with the distribution. | ||
14 | * 3. Neither the name of IBM nor the names of its contributors | ||
15 | * may be used to endorse or promote products derived from this software | ||
16 | * without specific prior written permission. | ||
17 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS'' AND | ||
18 | * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||
19 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | ||
20 | * ARE DISCLAIMED. IN NO EVENT SHALL IBM OR CONTRIBUTORS BE LIABLE | ||
21 | * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | ||
22 | * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS | ||
23 | * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | ||
24 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT | ||
25 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY | ||
26 | * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | ||
27 | * SUCH DAMAGE. */ | ||
5 | #include <linux/types.h> | 28 | #include <linux/types.h> |
6 | #include <linux/virtio_ids.h> | 29 | #include <linux/virtio_ids.h> |
7 | #include <linux/virtio_config.h> | 30 | #include <linux/virtio_config.h> |
diff --git a/include/linux/virtio_balloon.h b/include/linux/virtio_balloon.h index a50ecd1b81a2..652dc8bea921 100644 --- a/include/linux/virtio_balloon.h +++ b/include/linux/virtio_balloon.h | |||
@@ -1,7 +1,30 @@ | |||
1 | #ifndef _LINUX_VIRTIO_BALLOON_H | 1 | #ifndef _LINUX_VIRTIO_BALLOON_H |
2 | #define _LINUX_VIRTIO_BALLOON_H | 2 | #define _LINUX_VIRTIO_BALLOON_H |
3 | /* This header is BSD licensed so anyone can use the definitions to implement | 3 | /* This header is BSD licensed so anyone can use the definitions to implement |
4 | * compatible drivers/servers. */ | 4 | * compatible drivers/servers. |
5 | * | ||
6 | * Redistribution and use in source and binary forms, with or without | ||
7 | * modification, are permitted provided that the following conditions | ||
8 | * are met: | ||
9 | * 1. Redistributions of source code must retain the above copyright | ||
10 | * notice, this list of conditions and the following disclaimer. | ||
11 | * 2. Redistributions in binary form must reproduce the above copyright | ||
12 | * notice, this list of conditions and the following disclaimer in the | ||
13 | * documentation and/or other materials provided with the distribution. | ||
14 | * 3. Neither the name of IBM nor the names of its contributors | ||
15 | * may be used to endorse or promote products derived from this software | ||
16 | * without specific prior written permission. | ||
17 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS'' AND | ||
18 | * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||
19 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | ||
20 | * ARE DISCLAIMED. IN NO EVENT SHALL IBM OR CONTRIBUTORS BE LIABLE | ||
21 | * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | ||
22 | * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS | ||
23 | * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | ||
24 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT | ||
25 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY | ||
26 | * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | ||
27 | * SUCH DAMAGE. */ | ||
5 | #include <linux/virtio_ids.h> | 28 | #include <linux/virtio_ids.h> |
6 | #include <linux/virtio_config.h> | 29 | #include <linux/virtio_config.h> |
7 | 30 | ||
diff --git a/include/linux/virtio_blk.h b/include/linux/virtio_blk.h index 167720d695ed..e0edb40ca7aa 100644 --- a/include/linux/virtio_blk.h +++ b/include/linux/virtio_blk.h | |||
@@ -1,7 +1,30 @@ | |||
1 | #ifndef _LINUX_VIRTIO_BLK_H | 1 | #ifndef _LINUX_VIRTIO_BLK_H |
2 | #define _LINUX_VIRTIO_BLK_H | 2 | #define _LINUX_VIRTIO_BLK_H |
3 | /* This header is BSD licensed so anyone can use the definitions to implement | 3 | /* This header is BSD licensed so anyone can use the definitions to implement |
4 | * compatible drivers/servers. */ | 4 | * compatible drivers/servers. |
5 | * | ||
6 | * Redistribution and use in source and binary forms, with or without | ||
7 | * modification, are permitted provided that the following conditions | ||
8 | * are met: | ||
9 | * 1. Redistributions of source code must retain the above copyright | ||
10 | * notice, this list of conditions and the following disclaimer. | ||
11 | * 2. Redistributions in binary form must reproduce the above copyright | ||
12 | * notice, this list of conditions and the following disclaimer in the | ||
13 | * documentation and/or other materials provided with the distribution. | ||
14 | * 3. Neither the name of IBM nor the names of its contributors | ||
15 | * may be used to endorse or promote products derived from this software | ||
16 | * without specific prior written permission. | ||
17 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS'' AND | ||
18 | * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||
19 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | ||
20 | * ARE DISCLAIMED. IN NO EVENT SHALL IBM OR CONTRIBUTORS BE LIABLE | ||
21 | * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | ||
22 | * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS | ||
23 | * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | ||
24 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT | ||
25 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY | ||
26 | * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | ||
27 | * SUCH DAMAGE. */ | ||
5 | #include <linux/types.h> | 28 | #include <linux/types.h> |
6 | #include <linux/virtio_ids.h> | 29 | #include <linux/virtio_ids.h> |
7 | #include <linux/virtio_config.h> | 30 | #include <linux/virtio_config.h> |
diff --git a/include/linux/virtio_config.h b/include/linux/virtio_config.h index 800617b4ddd5..39c88c5ad19d 100644 --- a/include/linux/virtio_config.h +++ b/include/linux/virtio_config.h | |||
@@ -1,7 +1,30 @@ | |||
1 | #ifndef _LINUX_VIRTIO_CONFIG_H | 1 | #ifndef _LINUX_VIRTIO_CONFIG_H |
2 | #define _LINUX_VIRTIO_CONFIG_H | 2 | #define _LINUX_VIRTIO_CONFIG_H |
3 | /* This header, excluding the #ifdef __KERNEL__ part, is BSD licensed so | 3 | /* This header, excluding the #ifdef __KERNEL__ part, is BSD licensed so |
4 | * anyone can use the definitions to implement compatible drivers/servers. */ | 4 | * anyone can use the definitions to implement compatible drivers/servers. |
5 | * | ||
6 | * Redistribution and use in source and binary forms, with or without | ||
7 | * modification, are permitted provided that the following conditions | ||
8 | * are met: | ||
9 | * 1. Redistributions of source code must retain the above copyright | ||
10 | * notice, this list of conditions and the following disclaimer. | ||
11 | * 2. Redistributions in binary form must reproduce the above copyright | ||
12 | * notice, this list of conditions and the following disclaimer in the | ||
13 | * documentation and/or other materials provided with the distribution. | ||
14 | * 3. Neither the name of IBM nor the names of its contributors | ||
15 | * may be used to endorse or promote products derived from this software | ||
16 | * without specific prior written permission. | ||
17 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS'' AND | ||
18 | * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||
19 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | ||
20 | * ARE DISCLAIMED. IN NO EVENT SHALL IBM OR CONTRIBUTORS BE LIABLE | ||
21 | * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | ||
22 | * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS | ||
23 | * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | ||
24 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT | ||
25 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY | ||
26 | * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | ||
27 | * SUCH DAMAGE. */ | ||
5 | 28 | ||
6 | /* Virtio devices use a standardized configuration space to define their | 29 | /* Virtio devices use a standardized configuration space to define their |
7 | * features and pass configuration information, but each implementation can | 30 | * features and pass configuration information, but each implementation can |
diff --git a/include/linux/virtio_console.h b/include/linux/virtio_console.h index e4d333543a33..bdf4b0034739 100644 --- a/include/linux/virtio_console.h +++ b/include/linux/virtio_console.h | |||
@@ -5,7 +5,31 @@ | |||
5 | #include <linux/virtio_config.h> | 5 | #include <linux/virtio_config.h> |
6 | /* | 6 | /* |
7 | * This header, excluding the #ifdef __KERNEL__ part, is BSD licensed so | 7 | * This header, excluding the #ifdef __KERNEL__ part, is BSD licensed so |
8 | * anyone can use the definitions to implement compatible drivers/servers. | 8 | * anyone can use the definitions to implement compatible drivers/servers: |
9 | * | ||
10 | * | ||
11 | * Redistribution and use in source and binary forms, with or without | ||
12 | * modification, are permitted provided that the following conditions | ||
13 | * are met: | ||
14 | * 1. Redistributions of source code must retain the above copyright | ||
15 | * notice, this list of conditions and the following disclaimer. | ||
16 | * 2. Redistributions in binary form must reproduce the above copyright | ||
17 | * notice, this list of conditions and the following disclaimer in the | ||
18 | * documentation and/or other materials provided with the distribution. | ||
19 | * 3. Neither the name of IBM nor the names of its contributors | ||
20 | * may be used to endorse or promote products derived from this software | ||
21 | * without specific prior written permission. | ||
22 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS'' AND | ||
23 | * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||
24 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | ||
25 | * ARE DISCLAIMED. IN NO EVENT SHALL IBM OR CONTRIBUTORS BE LIABLE | ||
26 | * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | ||
27 | * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS | ||
28 | * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | ||
29 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT | ||
30 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY | ||
31 | * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | ||
32 | * SUCH DAMAGE. | ||
9 | * | 33 | * |
10 | * Copyright (C) Red Hat, Inc., 2009, 2010, 2011 | 34 | * Copyright (C) Red Hat, Inc., 2009, 2010, 2011 |
11 | * Copyright (C) Amit Shah <amit.shah@redhat.com>, 2009, 2010, 2011 | 35 | * Copyright (C) Amit Shah <amit.shah@redhat.com>, 2009, 2010, 2011 |
diff --git a/include/linux/virtio_ids.h b/include/linux/virtio_ids.h index 06660c0a78d7..85bb0bb66ffc 100644 --- a/include/linux/virtio_ids.h +++ b/include/linux/virtio_ids.h | |||
@@ -5,7 +5,29 @@ | |||
5 | * | 5 | * |
6 | * This header is BSD licensed so anyone can use the definitions to implement | 6 | * This header is BSD licensed so anyone can use the definitions to implement |
7 | * compatible drivers/servers. | 7 | * compatible drivers/servers. |
8 | */ | 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 | * 2. Redistributions in binary form must reproduce the above copyright | ||
15 | * notice, this list of conditions and the following disclaimer in the | ||
16 | * documentation and/or other materials provided with the distribution. | ||
17 | * 3. Neither the name of IBM nor the names of its contributors | ||
18 | * may be used to endorse or promote products derived from this software | ||
19 | * without specific prior written permission. | ||
20 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS'' AND | ||
21 | * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||
22 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | ||
23 | * ARE DISCLAIMED. IN NO EVENT SHALL IBM OR CONTRIBUTORS BE LIABLE | ||
24 | * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | ||
25 | * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS | ||
26 | * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | ||
27 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT | ||
28 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY | ||
29 | * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | ||
30 | * SUCH DAMAGE. */ | ||
9 | 31 | ||
10 | #define VIRTIO_ID_NET 1 /* virtio net */ | 32 | #define VIRTIO_ID_NET 1 /* virtio net */ |
11 | #define VIRTIO_ID_BLOCK 2 /* virtio block */ | 33 | #define VIRTIO_ID_BLOCK 2 /* virtio block */ |
diff --git a/include/linux/virtio_net.h b/include/linux/virtio_net.h index 085e42298ce5..136040bba3e3 100644 --- a/include/linux/virtio_net.h +++ b/include/linux/virtio_net.h | |||
@@ -1,7 +1,30 @@ | |||
1 | #ifndef _LINUX_VIRTIO_NET_H | 1 | #ifndef _LINUX_VIRTIO_NET_H |
2 | #define _LINUX_VIRTIO_NET_H | 2 | #define _LINUX_VIRTIO_NET_H |
3 | /* This header is BSD licensed so anyone can use the definitions to implement | 3 | /* This header is BSD licensed so anyone can use the definitions to implement |
4 | * compatible drivers/servers. */ | 4 | * compatible drivers/servers. |
5 | * | ||
6 | * Redistribution and use in source and binary forms, with or without | ||
7 | * modification, are permitted provided that the following conditions | ||
8 | * are met: | ||
9 | * 1. Redistributions of source code must retain the above copyright | ||
10 | * notice, this list of conditions and the following disclaimer. | ||
11 | * 2. Redistributions in binary form must reproduce the above copyright | ||
12 | * notice, this list of conditions and the following disclaimer in the | ||
13 | * documentation and/or other materials provided with the distribution. | ||
14 | * 3. Neither the name of IBM nor the names of its contributors | ||
15 | * may be used to endorse or promote products derived from this software | ||
16 | * without specific prior written permission. | ||
17 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS'' AND | ||
18 | * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||
19 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | ||
20 | * ARE DISCLAIMED. IN NO EVENT SHALL IBM OR CONTRIBUTORS BE LIABLE | ||
21 | * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | ||
22 | * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS | ||
23 | * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | ||
24 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT | ||
25 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY | ||
26 | * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | ||
27 | * SUCH DAMAGE. */ | ||
5 | #include <linux/types.h> | 28 | #include <linux/types.h> |
6 | #include <linux/virtio_ids.h> | 29 | #include <linux/virtio_ids.h> |
7 | #include <linux/virtio_config.h> | 30 | #include <linux/virtio_config.h> |
diff --git a/include/linux/virtio_pci.h b/include/linux/virtio_pci.h index 9a3d7c48c622..ea66f3f60d63 100644 --- a/include/linux/virtio_pci.h +++ b/include/linux/virtio_pci.h | |||
@@ -11,6 +11,29 @@ | |||
11 | * | 11 | * |
12 | * This header is BSD licensed so anyone can use the definitions to implement | 12 | * This header is BSD licensed so anyone can use the definitions to implement |
13 | * compatible drivers/servers. | 13 | * compatible drivers/servers. |
14 | * | ||
15 | * Redistribution and use in source and binary forms, with or without | ||
16 | * modification, are permitted provided that the following conditions | ||
17 | * are met: | ||
18 | * 1. Redistributions of source code must retain the above copyright | ||
19 | * notice, this list of conditions and the following disclaimer. | ||
20 | * 2. Redistributions in binary form must reproduce the above copyright | ||
21 | * notice, this list of conditions and the following disclaimer in the | ||
22 | * documentation and/or other materials provided with the distribution. | ||
23 | * 3. Neither the name of IBM nor the names of its contributors | ||
24 | * may be used to endorse or promote products derived from this software | ||
25 | * without specific prior written permission. | ||
26 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS'' AND | ||
27 | * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||
28 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | ||
29 | * ARE DISCLAIMED. IN NO EVENT SHALL IBM OR CONTRIBUTORS BE LIABLE | ||
30 | * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | ||
31 | * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS | ||
32 | * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | ||
33 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT | ||
34 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY | ||
35 | * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | ||
36 | * SUCH DAMAGE. | ||
14 | */ | 37 | */ |
15 | 38 | ||
16 | #ifndef _LINUX_VIRTIO_PCI_H | 39 | #ifndef _LINUX_VIRTIO_PCI_H |
diff --git a/include/linux/virtio_ring.h b/include/linux/virtio_ring.h index e4d144b132b5..4a32cb6da425 100644 --- a/include/linux/virtio_ring.h +++ b/include/linux/virtio_ring.h | |||
@@ -7,6 +7,29 @@ | |||
7 | * This header is BSD licensed so anyone can use the definitions to implement | 7 | * This header is BSD licensed so anyone can use the definitions to implement |
8 | * compatible drivers/servers. | 8 | * compatible drivers/servers. |
9 | * | 9 | * |
10 | * Redistribution and use in source and binary forms, with or without | ||
11 | * modification, are permitted provided that the following conditions | ||
12 | * are met: | ||
13 | * 1. Redistributions of source code must retain the above copyright | ||
14 | * notice, this list of conditions and the following disclaimer. | ||
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. Neither the name of IBM nor the names of its contributors | ||
19 | * may be used to endorse or promote products derived from this software | ||
20 | * without specific prior written permission. | ||
21 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS'' AND | ||
22 | * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||
23 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | ||
24 | * ARE DISCLAIMED. IN NO EVENT SHALL IBM OR CONTRIBUTORS BE LIABLE | ||
25 | * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | ||
26 | * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS | ||
27 | * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | ||
28 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT | ||
29 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY | ||
30 | * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | ||
31 | * SUCH DAMAGE. | ||
32 | * | ||
10 | * Copyright Rusty Russell IBM Corporation 2007. */ | 33 | * Copyright Rusty Russell IBM Corporation 2007. */ |
11 | #include <linux/types.h> | 34 | #include <linux/types.h> |
12 | 35 | ||
@@ -29,6 +52,12 @@ | |||
29 | /* We support indirect buffer descriptors */ | 52 | /* We support indirect buffer descriptors */ |
30 | #define VIRTIO_RING_F_INDIRECT_DESC 28 | 53 | #define VIRTIO_RING_F_INDIRECT_DESC 28 |
31 | 54 | ||
55 | /* The Guest publishes the used index for which it expects an interrupt | ||
56 | * at the end of the avail ring. Host should ignore the avail->flags field. */ | ||
57 | /* The Host publishes the avail index for which it expects a kick | ||
58 | * at the end of the used ring. Guest should ignore the used->flags field. */ | ||
59 | #define VIRTIO_RING_F_EVENT_IDX 29 | ||
60 | |||
32 | /* Virtio ring descriptors: 16 bytes. These can chain together via "next". */ | 61 | /* Virtio ring descriptors: 16 bytes. These can chain together via "next". */ |
33 | struct vring_desc { | 62 | struct vring_desc { |
34 | /* Address (guest-physical). */ | 63 | /* Address (guest-physical). */ |
@@ -83,6 +112,7 @@ struct vring { | |||
83 | * __u16 avail_flags; | 112 | * __u16 avail_flags; |
84 | * __u16 avail_idx; | 113 | * __u16 avail_idx; |
85 | * __u16 available[num]; | 114 | * __u16 available[num]; |
115 | * __u16 used_event_idx; | ||
86 | * | 116 | * |
87 | * // Padding to the next align boundary. | 117 | * // Padding to the next align boundary. |
88 | * char pad[]; | 118 | * char pad[]; |
@@ -91,8 +121,14 @@ struct vring { | |||
91 | * __u16 used_flags; | 121 | * __u16 used_flags; |
92 | * __u16 used_idx; | 122 | * __u16 used_idx; |
93 | * struct vring_used_elem used[num]; | 123 | * struct vring_used_elem used[num]; |
124 | * __u16 avail_event_idx; | ||
94 | * }; | 125 | * }; |
95 | */ | 126 | */ |
127 | /* We publish the used event index at the end of the available ring, and vice | ||
128 | * versa. They are at the end for backwards compatibility. */ | ||
129 | #define vring_used_event(vr) ((vr)->avail->ring[(vr)->num]) | ||
130 | #define vring_avail_event(vr) (*(__u16 *)&(vr)->used->ring[(vr)->num]) | ||
131 | |||
96 | static inline void vring_init(struct vring *vr, unsigned int num, void *p, | 132 | static inline void vring_init(struct vring *vr, unsigned int num, void *p, |
97 | unsigned long align) | 133 | unsigned long align) |
98 | { | 134 | { |
@@ -107,7 +143,21 @@ static inline unsigned vring_size(unsigned int num, unsigned long align) | |||
107 | { | 143 | { |
108 | return ((sizeof(struct vring_desc) * num + sizeof(__u16) * (2 + num) | 144 | return ((sizeof(struct vring_desc) * num + sizeof(__u16) * (2 + num) |
109 | + align - 1) & ~(align - 1)) | 145 | + align - 1) & ~(align - 1)) |
110 | + sizeof(__u16) * 2 + sizeof(struct vring_used_elem) * num; | 146 | + sizeof(__u16) * 3 + sizeof(struct vring_used_elem) * num; |
147 | } | ||
148 | |||
149 | /* The following is used with USED_EVENT_IDX and AVAIL_EVENT_IDX */ | ||
150 | /* Assuming a given event_idx value from the other size, if | ||
151 | * we have just incremented index from old to new_idx, | ||
152 | * should we trigger an event? */ | ||
153 | static inline int vring_need_event(__u16 event_idx, __u16 new_idx, __u16 old) | ||
154 | { | ||
155 | /* Note: Xen has similar logic for notification hold-off | ||
156 | * in include/xen/interface/io/ring.h with req_event and req_prod | ||
157 | * corresponding to event_idx + 1 and new_idx respectively. | ||
158 | * Note also that req_event and req_prod in Xen start at 1, | ||
159 | * event indexes in virtio start at 0. */ | ||
160 | return (__u16)(new_idx - event_idx - 1) < (__u16)(new_idx - old); | ||
111 | } | 161 | } |
112 | 162 | ||
113 | #ifdef __KERNEL__ | 163 | #ifdef __KERNEL__ |
diff --git a/include/linux/vm_event_item.h b/include/linux/vm_event_item.h new file mode 100644 index 000000000000..03b90cdc1921 --- /dev/null +++ b/include/linux/vm_event_item.h | |||
@@ -0,0 +1,64 @@ | |||
1 | #ifndef VM_EVENT_ITEM_H_INCLUDED | ||
2 | #define VM_EVENT_ITEM_H_INCLUDED | ||
3 | |||
4 | #ifdef CONFIG_ZONE_DMA | ||
5 | #define DMA_ZONE(xx) xx##_DMA, | ||
6 | #else | ||
7 | #define DMA_ZONE(xx) | ||
8 | #endif | ||
9 | |||
10 | #ifdef CONFIG_ZONE_DMA32 | ||
11 | #define DMA32_ZONE(xx) xx##_DMA32, | ||
12 | #else | ||
13 | #define DMA32_ZONE(xx) | ||
14 | #endif | ||
15 | |||
16 | #ifdef CONFIG_HIGHMEM | ||
17 | #define HIGHMEM_ZONE(xx) , xx##_HIGH | ||
18 | #else | ||
19 | #define HIGHMEM_ZONE(xx) | ||
20 | #endif | ||
21 | |||
22 | #define FOR_ALL_ZONES(xx) DMA_ZONE(xx) DMA32_ZONE(xx) xx##_NORMAL HIGHMEM_ZONE(xx) , xx##_MOVABLE | ||
23 | |||
24 | enum vm_event_item { PGPGIN, PGPGOUT, PSWPIN, PSWPOUT, | ||
25 | FOR_ALL_ZONES(PGALLOC), | ||
26 | PGFREE, PGACTIVATE, PGDEACTIVATE, | ||
27 | PGFAULT, PGMAJFAULT, | ||
28 | FOR_ALL_ZONES(PGREFILL), | ||
29 | FOR_ALL_ZONES(PGSTEAL), | ||
30 | FOR_ALL_ZONES(PGSCAN_KSWAPD), | ||
31 | FOR_ALL_ZONES(PGSCAN_DIRECT), | ||
32 | #ifdef CONFIG_NUMA | ||
33 | PGSCAN_ZONE_RECLAIM_FAILED, | ||
34 | #endif | ||
35 | PGINODESTEAL, SLABS_SCANNED, KSWAPD_STEAL, KSWAPD_INODESTEAL, | ||
36 | KSWAPD_LOW_WMARK_HIT_QUICKLY, KSWAPD_HIGH_WMARK_HIT_QUICKLY, | ||
37 | KSWAPD_SKIP_CONGESTION_WAIT, | ||
38 | PAGEOUTRUN, ALLOCSTALL, PGROTATED, | ||
39 | #ifdef CONFIG_COMPACTION | ||
40 | COMPACTBLOCKS, COMPACTPAGES, COMPACTPAGEFAILED, | ||
41 | COMPACTSTALL, COMPACTFAIL, COMPACTSUCCESS, | ||
42 | #endif | ||
43 | #ifdef CONFIG_HUGETLB_PAGE | ||
44 | HTLB_BUDDY_PGALLOC, HTLB_BUDDY_PGALLOC_FAIL, | ||
45 | #endif | ||
46 | UNEVICTABLE_PGCULLED, /* culled to noreclaim list */ | ||
47 | UNEVICTABLE_PGSCANNED, /* scanned for reclaimability */ | ||
48 | UNEVICTABLE_PGRESCUED, /* rescued from noreclaim list */ | ||
49 | UNEVICTABLE_PGMLOCKED, | ||
50 | UNEVICTABLE_PGMUNLOCKED, | ||
51 | UNEVICTABLE_PGCLEARED, /* on COW, page truncate */ | ||
52 | UNEVICTABLE_PGSTRANDED, /* unable to isolate on unlock */ | ||
53 | UNEVICTABLE_MLOCKFREED, | ||
54 | #ifdef CONFIG_TRANSPARENT_HUGEPAGE | ||
55 | THP_FAULT_ALLOC, | ||
56 | THP_FAULT_FALLBACK, | ||
57 | THP_COLLAPSE_ALLOC, | ||
58 | THP_COLLAPSE_ALLOC_FAILED, | ||
59 | THP_SPLIT, | ||
60 | #endif | ||
61 | NR_VM_EVENT_ITEMS | ||
62 | }; | ||
63 | |||
64 | #endif /* VM_EVENT_ITEM_H_INCLUDED */ | ||
diff --git a/include/linux/vmstat.h b/include/linux/vmstat.h index 2b3831b58aa4..bcd942fa611c 100644 --- a/include/linux/vmstat.h +++ b/include/linux/vmstat.h | |||
@@ -5,69 +5,9 @@ | |||
5 | #include <linux/percpu.h> | 5 | #include <linux/percpu.h> |
6 | #include <linux/mm.h> | 6 | #include <linux/mm.h> |
7 | #include <linux/mmzone.h> | 7 | #include <linux/mmzone.h> |
8 | #include <linux/vm_event_item.h> | ||
8 | #include <asm/atomic.h> | 9 | #include <asm/atomic.h> |
9 | 10 | ||
10 | #ifdef CONFIG_ZONE_DMA | ||
11 | #define DMA_ZONE(xx) xx##_DMA, | ||
12 | #else | ||
13 | #define DMA_ZONE(xx) | ||
14 | #endif | ||
15 | |||
16 | #ifdef CONFIG_ZONE_DMA32 | ||
17 | #define DMA32_ZONE(xx) xx##_DMA32, | ||
18 | #else | ||
19 | #define DMA32_ZONE(xx) | ||
20 | #endif | ||
21 | |||
22 | #ifdef CONFIG_HIGHMEM | ||
23 | #define HIGHMEM_ZONE(xx) , xx##_HIGH | ||
24 | #else | ||
25 | #define HIGHMEM_ZONE(xx) | ||
26 | #endif | ||
27 | |||
28 | |||
29 | #define FOR_ALL_ZONES(xx) DMA_ZONE(xx) DMA32_ZONE(xx) xx##_NORMAL HIGHMEM_ZONE(xx) , xx##_MOVABLE | ||
30 | |||
31 | enum vm_event_item { PGPGIN, PGPGOUT, PSWPIN, PSWPOUT, | ||
32 | FOR_ALL_ZONES(PGALLOC), | ||
33 | PGFREE, PGACTIVATE, PGDEACTIVATE, | ||
34 | PGFAULT, PGMAJFAULT, | ||
35 | FOR_ALL_ZONES(PGREFILL), | ||
36 | FOR_ALL_ZONES(PGSTEAL), | ||
37 | FOR_ALL_ZONES(PGSCAN_KSWAPD), | ||
38 | FOR_ALL_ZONES(PGSCAN_DIRECT), | ||
39 | #ifdef CONFIG_NUMA | ||
40 | PGSCAN_ZONE_RECLAIM_FAILED, | ||
41 | #endif | ||
42 | PGINODESTEAL, SLABS_SCANNED, KSWAPD_STEAL, KSWAPD_INODESTEAL, | ||
43 | KSWAPD_LOW_WMARK_HIT_QUICKLY, KSWAPD_HIGH_WMARK_HIT_QUICKLY, | ||
44 | KSWAPD_SKIP_CONGESTION_WAIT, | ||
45 | PAGEOUTRUN, ALLOCSTALL, PGROTATED, | ||
46 | #ifdef CONFIG_COMPACTION | ||
47 | COMPACTBLOCKS, COMPACTPAGES, COMPACTPAGEFAILED, | ||
48 | COMPACTSTALL, COMPACTFAIL, COMPACTSUCCESS, | ||
49 | #endif | ||
50 | #ifdef CONFIG_HUGETLB_PAGE | ||
51 | HTLB_BUDDY_PGALLOC, HTLB_BUDDY_PGALLOC_FAIL, | ||
52 | #endif | ||
53 | UNEVICTABLE_PGCULLED, /* culled to noreclaim list */ | ||
54 | UNEVICTABLE_PGSCANNED, /* scanned for reclaimability */ | ||
55 | UNEVICTABLE_PGRESCUED, /* rescued from noreclaim list */ | ||
56 | UNEVICTABLE_PGMLOCKED, | ||
57 | UNEVICTABLE_PGMUNLOCKED, | ||
58 | UNEVICTABLE_PGCLEARED, /* on COW, page truncate */ | ||
59 | UNEVICTABLE_PGSTRANDED, /* unable to isolate on unlock */ | ||
60 | UNEVICTABLE_MLOCKFREED, | ||
61 | #ifdef CONFIG_TRANSPARENT_HUGEPAGE | ||
62 | THP_FAULT_ALLOC, | ||
63 | THP_FAULT_FALLBACK, | ||
64 | THP_COLLAPSE_ALLOC, | ||
65 | THP_COLLAPSE_ALLOC_FAILED, | ||
66 | THP_SPLIT, | ||
67 | #endif | ||
68 | NR_VM_EVENT_ITEMS | ||
69 | }; | ||
70 | |||
71 | extern int sysctl_stat_interval; | 11 | extern int sysctl_stat_interval; |
72 | 12 | ||
73 | #ifdef CONFIG_VM_EVENT_COUNTERS | 13 | #ifdef CONFIG_VM_EVENT_COUNTERS |
@@ -261,6 +201,7 @@ extern void dec_zone_state(struct zone *, enum zone_stat_item); | |||
261 | extern void __dec_zone_state(struct zone *, enum zone_stat_item); | 201 | extern void __dec_zone_state(struct zone *, enum zone_stat_item); |
262 | 202 | ||
263 | void refresh_cpu_vm_stats(int); | 203 | void refresh_cpu_vm_stats(int); |
204 | void refresh_zone_stat_thresholds(void); | ||
264 | 205 | ||
265 | int calculate_pressure_threshold(struct zone *zone); | 206 | int calculate_pressure_threshold(struct zone *zone); |
266 | int calculate_normal_threshold(struct zone *zone); | 207 | int calculate_normal_threshold(struct zone *zone); |
@@ -313,6 +254,10 @@ static inline void __dec_zone_page_state(struct page *page, | |||
313 | #define set_pgdat_percpu_threshold(pgdat, callback) { } | 254 | #define set_pgdat_percpu_threshold(pgdat, callback) { } |
314 | 255 | ||
315 | static inline void refresh_cpu_vm_stats(int cpu) { } | 256 | static inline void refresh_cpu_vm_stats(int cpu) { } |
316 | #endif | 257 | static inline void refresh_zone_stat_thresholds(void) { } |
258 | |||
259 | #endif /* CONFIG_SMP */ | ||
260 | |||
261 | extern const char * const vmstat_text[]; | ||
317 | 262 | ||
318 | #endif /* _LINUX_VMSTAT_H */ | 263 | #endif /* _LINUX_VMSTAT_H */ |
diff --git a/include/linux/xattr.h b/include/linux/xattr.h index 6050783005bd..aed54c50aa66 100644 --- a/include/linux/xattr.h +++ b/include/linux/xattr.h | |||
@@ -13,10 +13,6 @@ | |||
13 | #define XATTR_CREATE 0x1 /* set value, fail if attr already exists */ | 13 | #define XATTR_CREATE 0x1 /* set value, fail if attr already exists */ |
14 | #define XATTR_REPLACE 0x2 /* set value, fail if attr does not exist */ | 14 | #define XATTR_REPLACE 0x2 /* set value, fail if attr does not exist */ |
15 | 15 | ||
16 | #ifdef __KERNEL__ | ||
17 | |||
18 | #include <linux/types.h> | ||
19 | |||
20 | /* Namespaces */ | 16 | /* Namespaces */ |
21 | #define XATTR_OS2_PREFIX "os2." | 17 | #define XATTR_OS2_PREFIX "os2." |
22 | #define XATTR_OS2_PREFIX_LEN (sizeof (XATTR_OS2_PREFIX) - 1) | 18 | #define XATTR_OS2_PREFIX_LEN (sizeof (XATTR_OS2_PREFIX) - 1) |
@@ -53,6 +49,10 @@ | |||
53 | #define XATTR_CAPS_SUFFIX "capability" | 49 | #define XATTR_CAPS_SUFFIX "capability" |
54 | #define XATTR_NAME_CAPS XATTR_SECURITY_PREFIX XATTR_CAPS_SUFFIX | 50 | #define XATTR_NAME_CAPS XATTR_SECURITY_PREFIX XATTR_CAPS_SUFFIX |
55 | 51 | ||
52 | #ifdef __KERNEL__ | ||
53 | |||
54 | #include <linux/types.h> | ||
55 | |||
56 | struct inode; | 56 | struct inode; |
57 | struct dentry; | 57 | struct dentry; |
58 | 58 | ||