diff options
Diffstat (limited to 'include/linux')
| -rw-r--r-- | include/linux/atomic.h | 37 | ||||
| -rw-r--r-- | include/linux/bio.h | 4 | ||||
| -rw-r--r-- | include/linux/blk_types.h | 6 | ||||
| -rw-r--r-- | include/linux/blkdev.h | 3 | ||||
| -rw-r--r-- | include/linux/drbd.h | 2 | ||||
| -rw-r--r-- | include/linux/highmem.h | 1 | ||||
| -rw-r--r-- | include/linux/i2c/adp5588.h | 15 | ||||
| -rw-r--r-- | include/linux/input.h | 4 | ||||
| -rw-r--r-- | include/linux/iocontext.h | 1 | ||||
| -rw-r--r-- | include/linux/kernel.h | 3 | ||||
| -rw-r--r-- | include/linux/leds-lp5521.h | 47 | ||||
| -rw-r--r-- | include/linux/leds-lp5523.h | 47 | ||||
| -rw-r--r-- | include/linux/leds.h | 47 | ||||
| -rw-r--r-- | include/linux/mmc/sh_mmcif.h | 18 | ||||
| -rw-r--r-- | include/linux/perf_event.h | 10 | ||||
| -rw-r--r-- | include/linux/pwm_backlight.h | 1 | ||||
| -rw-r--r-- | include/linux/radix-tree.h | 39 | ||||
| -rw-r--r-- | include/linux/resource.h | 1 | ||||
| -rw-r--r-- | include/linux/sh_clk.h | 4 | ||||
| -rw-r--r-- | include/linux/sh_timer.h | 1 | ||||
| -rw-r--r-- | include/linux/sunrpc/svc_xprt.h | 18 |
21 files changed, 260 insertions, 49 deletions
diff --git a/include/linux/atomic.h b/include/linux/atomic.h new file mode 100644 index 000000000000..96c038e43d66 --- /dev/null +++ b/include/linux/atomic.h | |||
| @@ -0,0 +1,37 @@ | |||
| 1 | #ifndef _LINUX_ATOMIC_H | ||
| 2 | #define _LINUX_ATOMIC_H | ||
| 3 | #include <asm/atomic.h> | ||
| 4 | |||
| 5 | /** | ||
| 6 | * atomic_inc_not_zero_hint - increment if not null | ||
| 7 | * @v: pointer of type atomic_t | ||
| 8 | * @hint: probable value of the atomic before the increment | ||
| 9 | * | ||
| 10 | * This version of atomic_inc_not_zero() gives a hint of probable | ||
| 11 | * value of the atomic. This helps processor to not read the memory | ||
| 12 | * before doing the atomic read/modify/write cycle, lowering | ||
| 13 | * number of bus transactions on some arches. | ||
| 14 | * | ||
| 15 | * Returns: 0 if increment was not done, 1 otherwise. | ||
| 16 | */ | ||
| 17 | #ifndef atomic_inc_not_zero_hint | ||
| 18 | static inline int atomic_inc_not_zero_hint(atomic_t *v, int hint) | ||
| 19 | { | ||
| 20 | int val, c = hint; | ||
| 21 | |||
| 22 | /* sanity test, should be removed by compiler if hint is a constant */ | ||
| 23 | if (!hint) | ||
| 24 | return atomic_inc_not_zero(v); | ||
| 25 | |||
| 26 | do { | ||
| 27 | val = atomic_cmpxchg(v, c, c + 1); | ||
| 28 | if (val == c) | ||
| 29 | return 1; | ||
| 30 | c = val; | ||
| 31 | } while (c); | ||
| 32 | |||
| 33 | return 0; | ||
| 34 | } | ||
| 35 | #endif | ||
| 36 | |||
| 37 | #endif /* _LINUX_ATOMIC_H */ | ||
diff --git a/include/linux/bio.h b/include/linux/bio.h index ba679992d39b..35dcdb3589bc 100644 --- a/include/linux/bio.h +++ b/include/linux/bio.h | |||
| @@ -66,10 +66,6 @@ | |||
| 66 | #define bio_offset(bio) bio_iovec((bio))->bv_offset | 66 | #define bio_offset(bio) bio_iovec((bio))->bv_offset |
| 67 | #define bio_segments(bio) ((bio)->bi_vcnt - (bio)->bi_idx) | 67 | #define bio_segments(bio) ((bio)->bi_vcnt - (bio)->bi_idx) |
| 68 | #define bio_sectors(bio) ((bio)->bi_size >> 9) | 68 | #define bio_sectors(bio) ((bio)->bi_size >> 9) |
| 69 | #define bio_empty_barrier(bio) \ | ||
| 70 | ((bio->bi_rw & REQ_HARDBARRIER) && \ | ||
| 71 | !bio_has_data(bio) && \ | ||
| 72 | !(bio->bi_rw & REQ_DISCARD)) | ||
| 73 | 69 | ||
| 74 | static inline unsigned int bio_cur_bytes(struct bio *bio) | 70 | static inline unsigned int bio_cur_bytes(struct bio *bio) |
| 75 | { | 71 | { |
diff --git a/include/linux/blk_types.h b/include/linux/blk_types.h index 0437ab6bb54c..46ad5197537a 100644 --- a/include/linux/blk_types.h +++ b/include/linux/blk_types.h | |||
| @@ -122,7 +122,6 @@ enum rq_flag_bits { | |||
| 122 | __REQ_FAILFAST_TRANSPORT, /* no driver retries of transport errors */ | 122 | __REQ_FAILFAST_TRANSPORT, /* no driver retries of transport errors */ |
| 123 | __REQ_FAILFAST_DRIVER, /* no driver retries of driver errors */ | 123 | __REQ_FAILFAST_DRIVER, /* no driver retries of driver errors */ |
| 124 | 124 | ||
| 125 | __REQ_HARDBARRIER, /* may not be passed by drive either */ | ||
| 126 | __REQ_SYNC, /* request is sync (sync write or read) */ | 125 | __REQ_SYNC, /* request is sync (sync write or read) */ |
| 127 | __REQ_META, /* metadata io request */ | 126 | __REQ_META, /* metadata io request */ |
| 128 | __REQ_DISCARD, /* request to discard sectors */ | 127 | __REQ_DISCARD, /* request to discard sectors */ |
| @@ -159,7 +158,6 @@ enum rq_flag_bits { | |||
| 159 | #define REQ_FAILFAST_DEV (1 << __REQ_FAILFAST_DEV) | 158 | #define REQ_FAILFAST_DEV (1 << __REQ_FAILFAST_DEV) |
| 160 | #define REQ_FAILFAST_TRANSPORT (1 << __REQ_FAILFAST_TRANSPORT) | 159 | #define REQ_FAILFAST_TRANSPORT (1 << __REQ_FAILFAST_TRANSPORT) |
| 161 | #define REQ_FAILFAST_DRIVER (1 << __REQ_FAILFAST_DRIVER) | 160 | #define REQ_FAILFAST_DRIVER (1 << __REQ_FAILFAST_DRIVER) |
| 162 | #define REQ_HARDBARRIER (1 << __REQ_HARDBARRIER) | ||
| 163 | #define REQ_SYNC (1 << __REQ_SYNC) | 161 | #define REQ_SYNC (1 << __REQ_SYNC) |
| 164 | #define REQ_META (1 << __REQ_META) | 162 | #define REQ_META (1 << __REQ_META) |
| 165 | #define REQ_DISCARD (1 << __REQ_DISCARD) | 163 | #define REQ_DISCARD (1 << __REQ_DISCARD) |
| @@ -168,8 +166,8 @@ enum rq_flag_bits { | |||
| 168 | #define REQ_FAILFAST_MASK \ | 166 | #define REQ_FAILFAST_MASK \ |
| 169 | (REQ_FAILFAST_DEV | REQ_FAILFAST_TRANSPORT | REQ_FAILFAST_DRIVER) | 167 | (REQ_FAILFAST_DEV | REQ_FAILFAST_TRANSPORT | REQ_FAILFAST_DRIVER) |
| 170 | #define REQ_COMMON_MASK \ | 168 | #define REQ_COMMON_MASK \ |
| 171 | (REQ_WRITE | REQ_FAILFAST_MASK | REQ_HARDBARRIER | REQ_SYNC | \ | 169 | (REQ_WRITE | REQ_FAILFAST_MASK | REQ_SYNC | REQ_META | REQ_DISCARD | \ |
| 172 | REQ_META | REQ_DISCARD | REQ_NOIDLE | REQ_FLUSH | REQ_FUA) | 170 | REQ_NOIDLE | REQ_FLUSH | REQ_FUA) |
| 173 | #define REQ_CLONE_MASK REQ_COMMON_MASK | 171 | #define REQ_CLONE_MASK REQ_COMMON_MASK |
| 174 | 172 | ||
| 175 | #define REQ_UNPLUG (1 << __REQ_UNPLUG) | 173 | #define REQ_UNPLUG (1 << __REQ_UNPLUG) |
diff --git a/include/linux/blkdev.h b/include/linux/blkdev.h index 5027a599077d..aae86fd10c4f 100644 --- a/include/linux/blkdev.h +++ b/include/linux/blkdev.h | |||
| @@ -552,8 +552,7 @@ static inline void blk_clear_queue_full(struct request_queue *q, int sync) | |||
| 552 | * it already be started by driver. | 552 | * it already be started by driver. |
| 553 | */ | 553 | */ |
| 554 | #define RQ_NOMERGE_FLAGS \ | 554 | #define RQ_NOMERGE_FLAGS \ |
| 555 | (REQ_NOMERGE | REQ_STARTED | REQ_HARDBARRIER | REQ_SOFTBARRIER | \ | 555 | (REQ_NOMERGE | REQ_STARTED | REQ_SOFTBARRIER | REQ_FLUSH | REQ_FUA) |
| 556 | REQ_FLUSH | REQ_FUA) | ||
| 557 | #define rq_mergeable(rq) \ | 556 | #define rq_mergeable(rq) \ |
| 558 | (!((rq)->cmd_flags & RQ_NOMERGE_FLAGS) && \ | 557 | (!((rq)->cmd_flags & RQ_NOMERGE_FLAGS) && \ |
| 559 | (((rq)->cmd_flags & REQ_DISCARD) || \ | 558 | (((rq)->cmd_flags & REQ_DISCARD) || \ |
diff --git a/include/linux/drbd.h b/include/linux/drbd.h index 9b2a0158f399..ef44c7a0638c 100644 --- a/include/linux/drbd.h +++ b/include/linux/drbd.h | |||
| @@ -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.9rc2" | 56 | #define REL_VERSION "8.3.9" |
| 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 95 | 59 | #define PRO_VERSION_MAX 95 |
diff --git a/include/linux/highmem.h b/include/linux/highmem.h index e9138198e823..b676c585574e 100644 --- a/include/linux/highmem.h +++ b/include/linux/highmem.h | |||
| @@ -5,6 +5,7 @@ | |||
| 5 | #include <linux/kernel.h> | 5 | #include <linux/kernel.h> |
| 6 | #include <linux/mm.h> | 6 | #include <linux/mm.h> |
| 7 | #include <linux/uaccess.h> | 7 | #include <linux/uaccess.h> |
| 8 | #include <linux/hardirq.h> | ||
| 8 | 9 | ||
| 9 | #include <asm/cacheflush.h> | 10 | #include <asm/cacheflush.h> |
| 10 | 11 | ||
diff --git a/include/linux/i2c/adp5588.h b/include/linux/i2c/adp5588.h index 3c5d6b6e765c..cec17cf6cac2 100644 --- a/include/linux/i2c/adp5588.h +++ b/include/linux/i2c/adp5588.h | |||
| @@ -1,7 +1,7 @@ | |||
| 1 | /* | 1 | /* |
| 2 | * Analog Devices ADP5588 I/O Expander and QWERTY Keypad Controller | 2 | * Analog Devices ADP5588 I/O Expander and QWERTY Keypad Controller |
| 3 | * | 3 | * |
| 4 | * Copyright 2009 Analog Devices Inc. | 4 | * Copyright 2009-2010 Analog Devices Inc. |
| 5 | * | 5 | * |
| 6 | * Licensed under the GPL-2 or later. | 6 | * Licensed under the GPL-2 or later. |
| 7 | */ | 7 | */ |
| @@ -77,13 +77,26 @@ | |||
| 77 | /* Configuration Register1 */ | 77 | /* Configuration Register1 */ |
| 78 | #define ADP5588_AUTO_INC (1 << 7) | 78 | #define ADP5588_AUTO_INC (1 << 7) |
| 79 | #define ADP5588_GPIEM_CFG (1 << 6) | 79 | #define ADP5588_GPIEM_CFG (1 << 6) |
| 80 | #define ADP5588_OVR_FLOW_M (1 << 5) | ||
| 80 | #define ADP5588_INT_CFG (1 << 4) | 81 | #define ADP5588_INT_CFG (1 << 4) |
| 82 | #define ADP5588_OVR_FLOW_IEN (1 << 3) | ||
| 83 | #define ADP5588_K_LCK_IM (1 << 2) | ||
| 81 | #define ADP5588_GPI_IEN (1 << 1) | 84 | #define ADP5588_GPI_IEN (1 << 1) |
| 85 | #define ADP5588_KE_IEN (1 << 0) | ||
| 82 | 86 | ||
| 83 | /* Interrupt Status Register */ | 87 | /* Interrupt Status Register */ |
| 88 | #define ADP5588_CMP2_INT (1 << 5) | ||
| 89 | #define ADP5588_CMP1_INT (1 << 4) | ||
| 90 | #define ADP5588_OVR_FLOW_INT (1 << 3) | ||
| 91 | #define ADP5588_K_LCK_INT (1 << 2) | ||
| 84 | #define ADP5588_GPI_INT (1 << 1) | 92 | #define ADP5588_GPI_INT (1 << 1) |
| 85 | #define ADP5588_KE_INT (1 << 0) | 93 | #define ADP5588_KE_INT (1 << 0) |
| 86 | 94 | ||
| 95 | /* Key Lock and Event Counter Register */ | ||
| 96 | #define ADP5588_K_LCK_EN (1 << 6) | ||
| 97 | #define ADP5588_LCK21 0x30 | ||
| 98 | #define ADP5588_KEC 0xF | ||
| 99 | |||
| 87 | #define ADP5588_MAXGPIO 18 | 100 | #define ADP5588_MAXGPIO 18 |
| 88 | #define ADP5588_BANK(offs) ((offs) >> 3) | 101 | #define ADP5588_BANK(offs) ((offs) >> 3) |
| 89 | #define ADP5588_BIT(offs) (1u << ((offs) & 0x7)) | 102 | #define ADP5588_BIT(offs) (1u << ((offs) & 0x7)) |
diff --git a/include/linux/input.h b/include/linux/input.h index 51af441f3a21..6ef44465db8d 100644 --- a/include/linux/input.h +++ b/include/linux/input.h | |||
| @@ -1406,6 +1406,8 @@ static inline void input_set_drvdata(struct input_dev *dev, void *data) | |||
| 1406 | int __must_check input_register_device(struct input_dev *); | 1406 | int __must_check input_register_device(struct input_dev *); |
| 1407 | void input_unregister_device(struct input_dev *); | 1407 | void input_unregister_device(struct input_dev *); |
| 1408 | 1408 | ||
| 1409 | void input_reset_device(struct input_dev *); | ||
| 1410 | |||
| 1409 | int __must_check input_register_handler(struct input_handler *); | 1411 | int __must_check input_register_handler(struct input_handler *); |
| 1410 | void input_unregister_handler(struct input_handler *); | 1412 | void input_unregister_handler(struct input_handler *); |
| 1411 | 1413 | ||
| @@ -1421,7 +1423,7 @@ void input_release_device(struct input_handle *); | |||
| 1421 | int input_open_device(struct input_handle *); | 1423 | int input_open_device(struct input_handle *); |
| 1422 | void input_close_device(struct input_handle *); | 1424 | void input_close_device(struct input_handle *); |
| 1423 | 1425 | ||
| 1424 | int input_flush_device(struct input_handle* handle, struct file* file); | 1426 | int input_flush_device(struct input_handle *handle, struct file *file); |
| 1425 | 1427 | ||
| 1426 | void input_event(struct input_dev *dev, unsigned int type, unsigned int code, int value); | 1428 | void input_event(struct input_dev *dev, unsigned int type, unsigned int code, int value); |
| 1427 | void input_inject_event(struct input_handle *handle, unsigned int type, unsigned int code, int value); | 1429 | void input_inject_event(struct input_handle *handle, unsigned int type, unsigned int code, int value); |
diff --git a/include/linux/iocontext.h b/include/linux/iocontext.h index 3e70b21884a9..b2eee896dcbc 100644 --- a/include/linux/iocontext.h +++ b/include/linux/iocontext.h | |||
| @@ -76,7 +76,6 @@ int put_io_context(struct io_context *ioc); | |||
| 76 | void exit_io_context(struct task_struct *task); | 76 | void exit_io_context(struct task_struct *task); |
| 77 | struct io_context *get_io_context(gfp_t gfp_flags, int node); | 77 | struct io_context *get_io_context(gfp_t gfp_flags, int node); |
| 78 | struct io_context *alloc_io_context(gfp_t gfp_flags, int node); | 78 | struct io_context *alloc_io_context(gfp_t gfp_flags, int node); |
| 79 | void copy_io_context(struct io_context **pdst, struct io_context **psrc); | ||
| 80 | #else | 79 | #else |
| 81 | static inline void exit_io_context(struct task_struct *task) | 80 | static inline void exit_io_context(struct task_struct *task) |
| 82 | { | 81 | { |
diff --git a/include/linux/kernel.h b/include/linux/kernel.h index 450092c1e35f..fc3da9e4da19 100644 --- a/include/linux/kernel.h +++ b/include/linux/kernel.h | |||
| @@ -60,7 +60,7 @@ extern const char linux_proc_banner[]; | |||
| 60 | #define DIV_ROUND_UP(n,d) (((n) + (d) - 1) / (d)) | 60 | #define DIV_ROUND_UP(n,d) (((n) + (d) - 1) / (d)) |
| 61 | #define roundup(x, y) ( \ | 61 | #define roundup(x, y) ( \ |
| 62 | { \ | 62 | { \ |
| 63 | typeof(y) __y = y; \ | 63 | const typeof(y) __y = y; \ |
| 64 | (((x) + (__y - 1)) / __y) * __y; \ | 64 | (((x) + (__y - 1)) / __y) * __y; \ |
| 65 | } \ | 65 | } \ |
| 66 | ) | 66 | ) |
| @@ -293,6 +293,7 @@ extern bool printk_timed_ratelimit(unsigned long *caller_jiffies, | |||
| 293 | unsigned int interval_msec); | 293 | unsigned int interval_msec); |
| 294 | 294 | ||
| 295 | extern int printk_delay_msec; | 295 | extern int printk_delay_msec; |
| 296 | extern int dmesg_restrict; | ||
| 296 | 297 | ||
| 297 | /* | 298 | /* |
| 298 | * Print a one-time message (analogous to WARN_ONCE() et al): | 299 | * Print a one-time message (analogous to WARN_ONCE() et al): |
diff --git a/include/linux/leds-lp5521.h b/include/linux/leds-lp5521.h new file mode 100644 index 000000000000..38368d785f08 --- /dev/null +++ b/include/linux/leds-lp5521.h | |||
| @@ -0,0 +1,47 @@ | |||
| 1 | /* | ||
| 2 | * LP5521 LED chip driver. | ||
| 3 | * | ||
| 4 | * Copyright (C) 2010 Nokia Corporation | ||
| 5 | * | ||
| 6 | * Contact: Samu Onkalo <samu.p.onkalo@nokia.com> | ||
| 7 | * | ||
| 8 | * This program is free software; you can redistribute it and/or | ||
| 9 | * modify it under the terms of the GNU General Public License | ||
| 10 | * version 2 as published by the Free Software Foundation. | ||
| 11 | * | ||
| 12 | * This program is distributed in the hope that it will be useful, but | ||
| 13 | * WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | ||
| 15 | * 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., 51 Franklin St, Fifth Floor, Boston, MA | ||
| 20 | * 02110-1301 USA | ||
| 21 | */ | ||
| 22 | |||
| 23 | #ifndef __LINUX_LP5521_H | ||
| 24 | #define __LINUX_LP5521_H | ||
| 25 | |||
| 26 | /* See Documentation/leds/leds-lp5521.txt */ | ||
| 27 | |||
| 28 | struct lp5521_led_config { | ||
| 29 | u8 chan_nr; | ||
| 30 | u8 led_current; /* mA x10, 0 if led is not connected */ | ||
| 31 | u8 max_current; | ||
| 32 | }; | ||
| 33 | |||
| 34 | #define LP5521_CLOCK_AUTO 0 | ||
| 35 | #define LP5521_CLOCK_INT 1 | ||
| 36 | #define LP5521_CLOCK_EXT 2 | ||
| 37 | |||
| 38 | struct lp5521_platform_data { | ||
| 39 | struct lp5521_led_config *led_config; | ||
| 40 | u8 num_channels; | ||
| 41 | u8 clock_mode; | ||
| 42 | int (*setup_resources)(void); | ||
| 43 | void (*release_resources)(void); | ||
| 44 | void (*enable)(bool state); | ||
| 45 | }; | ||
| 46 | |||
| 47 | #endif /* __LINUX_LP5521_H */ | ||
diff --git a/include/linux/leds-lp5523.h b/include/linux/leds-lp5523.h new file mode 100644 index 000000000000..796747637b80 --- /dev/null +++ b/include/linux/leds-lp5523.h | |||
| @@ -0,0 +1,47 @@ | |||
| 1 | /* | ||
| 2 | * LP5523 LED Driver | ||
| 3 | * | ||
| 4 | * Copyright (C) 2010 Nokia Corporation | ||
| 5 | * | ||
| 6 | * Contact: Samu Onkalo <samu.p.onkalo@nokia.com> | ||
| 7 | * | ||
| 8 | * This program is free software; you can redistribute it and/or | ||
| 9 | * modify it under the terms of the GNU General Public License | ||
| 10 | * version 2 as published by the Free Software Foundation. | ||
| 11 | * | ||
| 12 | * This program is distributed in the hope that it will be useful, but | ||
| 13 | * WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | ||
| 15 | * 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., 51 Franklin St, Fifth Floor, Boston, MA | ||
| 20 | * 02110-1301 USA | ||
| 21 | */ | ||
| 22 | |||
| 23 | #ifndef __LINUX_LP5523_H | ||
| 24 | #define __LINUX_LP5523_H | ||
| 25 | |||
| 26 | /* See Documentation/leds/leds-lp5523.txt */ | ||
| 27 | |||
| 28 | struct lp5523_led_config { | ||
| 29 | u8 chan_nr; | ||
| 30 | u8 led_current; /* mA x10, 0 if led is not connected */ | ||
| 31 | u8 max_current; | ||
| 32 | }; | ||
| 33 | |||
| 34 | #define LP5523_CLOCK_AUTO 0 | ||
| 35 | #define LP5523_CLOCK_INT 1 | ||
| 36 | #define LP5523_CLOCK_EXT 2 | ||
| 37 | |||
| 38 | struct lp5523_platform_data { | ||
| 39 | struct lp5523_led_config *led_config; | ||
| 40 | u8 num_channels; | ||
| 41 | u8 clock_mode; | ||
| 42 | int (*setup_resources)(void); | ||
| 43 | void (*release_resources)(void); | ||
| 44 | void (*enable)(bool state); | ||
| 45 | }; | ||
| 46 | |||
| 47 | #endif /* __LINUX_LP5523_H */ | ||
diff --git a/include/linux/leds.h b/include/linux/leds.h index ba6986a11663..0f19df9e37b0 100644 --- a/include/linux/leds.h +++ b/include/linux/leds.h | |||
| @@ -15,6 +15,7 @@ | |||
| 15 | #include <linux/list.h> | 15 | #include <linux/list.h> |
| 16 | #include <linux/spinlock.h> | 16 | #include <linux/spinlock.h> |
| 17 | #include <linux/rwsem.h> | 17 | #include <linux/rwsem.h> |
| 18 | #include <linux/timer.h> | ||
| 18 | 19 | ||
| 19 | struct device; | 20 | struct device; |
| 20 | /* | 21 | /* |
| @@ -45,10 +46,14 @@ struct led_classdev { | |||
| 45 | /* Get LED brightness level */ | 46 | /* Get LED brightness level */ |
| 46 | enum led_brightness (*brightness_get)(struct led_classdev *led_cdev); | 47 | enum led_brightness (*brightness_get)(struct led_classdev *led_cdev); |
| 47 | 48 | ||
| 48 | /* Activate hardware accelerated blink, delays are in | 49 | /* |
| 49 | * miliseconds and if none is provided then a sensible default | 50 | * Activate hardware accelerated blink, delays are in milliseconds |
| 50 | * should be chosen. The call can adjust the timings if it can't | 51 | * and if both are zero then a sensible default should be chosen. |
| 51 | * match the values specified exactly. */ | 52 | * The call should adjust the timings in that case and if it can't |
| 53 | * match the values specified exactly. | ||
| 54 | * Deactivate blinking again when the brightness is set to a fixed | ||
| 55 | * value via the brightness_set() callback. | ||
| 56 | */ | ||
| 52 | int (*blink_set)(struct led_classdev *led_cdev, | 57 | int (*blink_set)(struct led_classdev *led_cdev, |
| 53 | unsigned long *delay_on, | 58 | unsigned long *delay_on, |
| 54 | unsigned long *delay_off); | 59 | unsigned long *delay_off); |
| @@ -57,6 +62,10 @@ struct led_classdev { | |||
| 57 | struct list_head node; /* LED Device list */ | 62 | struct list_head node; /* LED Device list */ |
| 58 | const char *default_trigger; /* Trigger to use */ | 63 | const char *default_trigger; /* Trigger to use */ |
| 59 | 64 | ||
| 65 | unsigned long blink_delay_on, blink_delay_off; | ||
| 66 | struct timer_list blink_timer; | ||
| 67 | int blink_brightness; | ||
| 68 | |||
| 60 | #ifdef CONFIG_LEDS_TRIGGERS | 69 | #ifdef CONFIG_LEDS_TRIGGERS |
| 61 | /* Protects the trigger data below */ | 70 | /* Protects the trigger data below */ |
| 62 | struct rw_semaphore trigger_lock; | 71 | struct rw_semaphore trigger_lock; |
| @@ -73,6 +82,36 @@ extern void led_classdev_unregister(struct led_classdev *led_cdev); | |||
| 73 | extern void led_classdev_suspend(struct led_classdev *led_cdev); | 82 | extern void led_classdev_suspend(struct led_classdev *led_cdev); |
| 74 | extern void led_classdev_resume(struct led_classdev *led_cdev); | 83 | extern void led_classdev_resume(struct led_classdev *led_cdev); |
| 75 | 84 | ||
| 85 | /** | ||
| 86 | * led_blink_set - set blinking with software fallback | ||
| 87 | * @led_cdev: the LED to start blinking | ||
| 88 | * @delay_on: the time it should be on (in ms) | ||
| 89 | * @delay_off: the time it should ble off (in ms) | ||
| 90 | * | ||
| 91 | * This function makes the LED blink, attempting to use the | ||
| 92 | * hardware acceleration if possible, but falling back to | ||
| 93 | * software blinking if there is no hardware blinking or if | ||
| 94 | * the LED refuses the passed values. | ||
| 95 | * | ||
| 96 | * Note that if software blinking is active, simply calling | ||
| 97 | * led_cdev->brightness_set() will not stop the blinking, | ||
| 98 | * use led_classdev_brightness_set() instead. | ||
| 99 | */ | ||
| 100 | extern void led_blink_set(struct led_classdev *led_cdev, | ||
| 101 | unsigned long *delay_on, | ||
| 102 | unsigned long *delay_off); | ||
| 103 | /** | ||
| 104 | * led_brightness_set - set LED brightness | ||
| 105 | * @led_cdev: the LED to set | ||
| 106 | * @brightness: the brightness to set it to | ||
| 107 | * | ||
| 108 | * Set an LED's brightness, and, if necessary, cancel the | ||
| 109 | * software blink timer that implements blinking when the | ||
| 110 | * hardware doesn't. | ||
| 111 | */ | ||
| 112 | extern void led_brightness_set(struct led_classdev *led_cdev, | ||
| 113 | enum led_brightness brightness); | ||
| 114 | |||
| 76 | /* | 115 | /* |
| 77 | * LED Triggers | 116 | * LED Triggers |
| 78 | */ | 117 | */ |
diff --git a/include/linux/mmc/sh_mmcif.h b/include/linux/mmc/sh_mmcif.h index d19e2114fd86..5c99da1078aa 100644 --- a/include/linux/mmc/sh_mmcif.h +++ b/include/linux/mmc/sh_mmcif.h | |||
| @@ -59,19 +59,19 @@ struct sh_mmcif_plat_data { | |||
| 59 | #define MMCIF_CE_HOST_STS2 0x0000004C | 59 | #define MMCIF_CE_HOST_STS2 0x0000004C |
| 60 | #define MMCIF_CE_VERSION 0x0000007C | 60 | #define MMCIF_CE_VERSION 0x0000007C |
| 61 | 61 | ||
| 62 | extern inline u32 sh_mmcif_readl(void __iomem *addr, int reg) | 62 | static inline u32 sh_mmcif_readl(void __iomem *addr, int reg) |
| 63 | { | 63 | { |
| 64 | return readl(addr + reg); | 64 | return readl(addr + reg); |
| 65 | } | 65 | } |
| 66 | 66 | ||
| 67 | extern inline void sh_mmcif_writel(void __iomem *addr, int reg, u32 val) | 67 | static inline void sh_mmcif_writel(void __iomem *addr, int reg, u32 val) |
| 68 | { | 68 | { |
| 69 | writel(val, addr + reg); | 69 | writel(val, addr + reg); |
| 70 | } | 70 | } |
| 71 | 71 | ||
| 72 | #define SH_MMCIF_BBS 512 /* boot block size */ | 72 | #define SH_MMCIF_BBS 512 /* boot block size */ |
| 73 | 73 | ||
| 74 | extern inline void sh_mmcif_boot_cmd_send(void __iomem *base, | 74 | static inline void sh_mmcif_boot_cmd_send(void __iomem *base, |
| 75 | unsigned long cmd, unsigned long arg) | 75 | unsigned long cmd, unsigned long arg) |
| 76 | { | 76 | { |
| 77 | sh_mmcif_writel(base, MMCIF_CE_INT, 0); | 77 | sh_mmcif_writel(base, MMCIF_CE_INT, 0); |
| @@ -79,7 +79,7 @@ extern inline void sh_mmcif_boot_cmd_send(void __iomem *base, | |||
| 79 | sh_mmcif_writel(base, MMCIF_CE_CMD_SET, cmd); | 79 | sh_mmcif_writel(base, MMCIF_CE_CMD_SET, cmd); |
| 80 | } | 80 | } |
| 81 | 81 | ||
| 82 | extern inline int sh_mmcif_boot_cmd_poll(void __iomem *base, unsigned long mask) | 82 | static inline int sh_mmcif_boot_cmd_poll(void __iomem *base, unsigned long mask) |
| 83 | { | 83 | { |
| 84 | unsigned long tmp; | 84 | unsigned long tmp; |
| 85 | int cnt; | 85 | int cnt; |
| @@ -95,14 +95,14 @@ extern inline int sh_mmcif_boot_cmd_poll(void __iomem *base, unsigned long mask) | |||
| 95 | return -1; | 95 | return -1; |
| 96 | } | 96 | } |
| 97 | 97 | ||
| 98 | extern inline int sh_mmcif_boot_cmd(void __iomem *base, | 98 | static inline int sh_mmcif_boot_cmd(void __iomem *base, |
| 99 | unsigned long cmd, unsigned long arg) | 99 | unsigned long cmd, unsigned long arg) |
| 100 | { | 100 | { |
| 101 | sh_mmcif_boot_cmd_send(base, cmd, arg); | 101 | sh_mmcif_boot_cmd_send(base, cmd, arg); |
| 102 | return sh_mmcif_boot_cmd_poll(base, 0x00010000); | 102 | return sh_mmcif_boot_cmd_poll(base, 0x00010000); |
| 103 | } | 103 | } |
| 104 | 104 | ||
| 105 | extern inline int sh_mmcif_boot_do_read_single(void __iomem *base, | 105 | static inline int sh_mmcif_boot_do_read_single(void __iomem *base, |
| 106 | unsigned int block_nr, | 106 | unsigned int block_nr, |
| 107 | unsigned long *buf) | 107 | unsigned long *buf) |
| 108 | { | 108 | { |
| @@ -125,7 +125,7 @@ extern inline int sh_mmcif_boot_do_read_single(void __iomem *base, | |||
| 125 | return 0; | 125 | return 0; |
| 126 | } | 126 | } |
| 127 | 127 | ||
| 128 | extern inline int sh_mmcif_boot_do_read(void __iomem *base, | 128 | static inline int sh_mmcif_boot_do_read(void __iomem *base, |
| 129 | unsigned long first_block, | 129 | unsigned long first_block, |
| 130 | unsigned long nr_blocks, | 130 | unsigned long nr_blocks, |
| 131 | void *buf) | 131 | void *buf) |
| @@ -143,7 +143,7 @@ extern inline int sh_mmcif_boot_do_read(void __iomem *base, | |||
| 143 | return ret; | 143 | return ret; |
| 144 | } | 144 | } |
| 145 | 145 | ||
| 146 | extern inline void sh_mmcif_boot_init(void __iomem *base) | 146 | static inline void sh_mmcif_boot_init(void __iomem *base) |
| 147 | { | 147 | { |
| 148 | unsigned long tmp; | 148 | unsigned long tmp; |
| 149 | 149 | ||
| @@ -177,7 +177,7 @@ extern inline void sh_mmcif_boot_init(void __iomem *base) | |||
| 177 | sh_mmcif_boot_cmd(base, 0x03400040, 0x00010000); | 177 | sh_mmcif_boot_cmd(base, 0x03400040, 0x00010000); |
| 178 | } | 178 | } |
| 179 | 179 | ||
| 180 | extern inline void sh_mmcif_boot_slurp(void __iomem *base, | 180 | static inline void sh_mmcif_boot_slurp(void __iomem *base, |
| 181 | unsigned char *buf, | 181 | unsigned char *buf, |
| 182 | unsigned long no_bytes) | 182 | unsigned long no_bytes) |
| 183 | { | 183 | { |
diff --git a/include/linux/perf_event.h b/include/linux/perf_event.h index 057bf22a8323..40150f345982 100644 --- a/include/linux/perf_event.h +++ b/include/linux/perf_event.h | |||
| @@ -747,6 +747,16 @@ struct perf_event { | |||
| 747 | u64 tstamp_running; | 747 | u64 tstamp_running; |
| 748 | u64 tstamp_stopped; | 748 | u64 tstamp_stopped; |
| 749 | 749 | ||
| 750 | /* | ||
| 751 | * timestamp shadows the actual context timing but it can | ||
| 752 | * be safely used in NMI interrupt context. It reflects the | ||
| 753 | * context time as it was when the event was last scheduled in. | ||
| 754 | * | ||
| 755 | * ctx_time already accounts for ctx->timestamp. Therefore to | ||
| 756 | * compute ctx_time for a sample, simply add perf_clock(). | ||
| 757 | */ | ||
| 758 | u64 shadow_ctx_time; | ||
| 759 | |||
| 750 | struct perf_event_attr attr; | 760 | struct perf_event_attr attr; |
| 751 | struct hw_perf_event hw; | 761 | struct hw_perf_event hw; |
| 752 | 762 | ||
diff --git a/include/linux/pwm_backlight.h b/include/linux/pwm_backlight.h index 01b3d759f1fc..e031e1a486d9 100644 --- a/include/linux/pwm_backlight.h +++ b/include/linux/pwm_backlight.h | |||
| @@ -8,6 +8,7 @@ struct platform_pwm_backlight_data { | |||
| 8 | int pwm_id; | 8 | int pwm_id; |
| 9 | unsigned int max_brightness; | 9 | unsigned int max_brightness; |
| 10 | unsigned int dft_brightness; | 10 | unsigned int dft_brightness; |
| 11 | unsigned int lth_brightness; | ||
| 11 | unsigned int pwm_period_ns; | 12 | unsigned int pwm_period_ns; |
| 12 | int (*init)(struct device *dev); | 13 | int (*init)(struct device *dev); |
| 13 | int (*notify)(struct device *dev, int brightness); | 14 | int (*notify)(struct device *dev, int brightness); |
diff --git a/include/linux/radix-tree.h b/include/linux/radix-tree.h index a39cbed9ee17..ab2baa5c4884 100644 --- a/include/linux/radix-tree.h +++ b/include/linux/radix-tree.h | |||
| @@ -34,19 +34,13 @@ | |||
| 34 | * needed for RCU lookups (because root->height is unreliable). The only | 34 | * needed for RCU lookups (because root->height is unreliable). The only |
| 35 | * time callers need worry about this is when doing a lookup_slot under | 35 | * time callers need worry about this is when doing a lookup_slot under |
| 36 | * RCU. | 36 | * RCU. |
| 37 | * | ||
| 38 | * Indirect pointer in fact is also used to tag the last pointer of a node | ||
| 39 | * when it is shrunk, before we rcu free the node. See shrink code for | ||
| 40 | * details. | ||
| 37 | */ | 41 | */ |
| 38 | #define RADIX_TREE_INDIRECT_PTR 1 | 42 | #define RADIX_TREE_INDIRECT_PTR 1 |
| 39 | #define RADIX_TREE_RETRY ((void *)-1UL) | ||
| 40 | |||
| 41 | static inline void *radix_tree_ptr_to_indirect(void *ptr) | ||
| 42 | { | ||
| 43 | return (void *)((unsigned long)ptr | RADIX_TREE_INDIRECT_PTR); | ||
| 44 | } | ||
| 45 | 43 | ||
| 46 | static inline void *radix_tree_indirect_to_ptr(void *ptr) | ||
| 47 | { | ||
| 48 | return (void *)((unsigned long)ptr & ~RADIX_TREE_INDIRECT_PTR); | ||
| 49 | } | ||
| 50 | #define radix_tree_indirect_to_ptr(ptr) \ | 44 | #define radix_tree_indirect_to_ptr(ptr) \ |
| 51 | radix_tree_indirect_to_ptr((void __force *)(ptr)) | 45 | radix_tree_indirect_to_ptr((void __force *)(ptr)) |
| 52 | 46 | ||
| @@ -140,16 +134,29 @@ do { \ | |||
| 140 | * removed. | 134 | * removed. |
| 141 | * | 135 | * |
| 142 | * For use with radix_tree_lookup_slot(). Caller must hold tree at least read | 136 | * For use with radix_tree_lookup_slot(). Caller must hold tree at least read |
| 143 | * locked across slot lookup and dereference. More likely, will be used with | 137 | * locked across slot lookup and dereference. Not required if write lock is |
| 144 | * radix_tree_replace_slot(), as well, so caller will hold tree write locked. | 138 | * held (ie. items cannot be concurrently inserted). |
| 139 | * | ||
| 140 | * radix_tree_deref_retry must be used to confirm validity of the pointer if | ||
| 141 | * only the read lock is held. | ||
| 145 | */ | 142 | */ |
| 146 | static inline void *radix_tree_deref_slot(void **pslot) | 143 | static inline void *radix_tree_deref_slot(void **pslot) |
| 147 | { | 144 | { |
| 148 | void *ret = rcu_dereference(*pslot); | 145 | return rcu_dereference(*pslot); |
| 149 | if (unlikely(radix_tree_is_indirect_ptr(ret))) | ||
| 150 | ret = RADIX_TREE_RETRY; | ||
| 151 | return ret; | ||
| 152 | } | 146 | } |
| 147 | |||
| 148 | /** | ||
| 149 | * radix_tree_deref_retry - check radix_tree_deref_slot | ||
| 150 | * @arg: pointer returned by radix_tree_deref_slot | ||
| 151 | * Returns: 0 if retry is not required, otherwise retry is required | ||
| 152 | * | ||
| 153 | * radix_tree_deref_retry must be used with radix_tree_deref_slot. | ||
| 154 | */ | ||
| 155 | static inline int radix_tree_deref_retry(void *arg) | ||
| 156 | { | ||
| 157 | return unlikely((unsigned long)arg & RADIX_TREE_INDIRECT_PTR); | ||
| 158 | } | ||
| 159 | |||
| 153 | /** | 160 | /** |
| 154 | * radix_tree_replace_slot - replace item in a slot | 161 | * radix_tree_replace_slot - replace item in a slot |
| 155 | * @pslot: pointer to slot, returned by radix_tree_lookup_slot | 162 | * @pslot: pointer to slot, returned by radix_tree_lookup_slot |
diff --git a/include/linux/resource.h b/include/linux/resource.h index 88d36f9145ba..d01c96c1966e 100644 --- a/include/linux/resource.h +++ b/include/linux/resource.h | |||
| @@ -2,6 +2,7 @@ | |||
| 2 | #define _LINUX_RESOURCE_H | 2 | #define _LINUX_RESOURCE_H |
| 3 | 3 | ||
| 4 | #include <linux/time.h> | 4 | #include <linux/time.h> |
| 5 | #include <linux/types.h> | ||
| 5 | 6 | ||
| 6 | /* | 7 | /* |
| 7 | * Resource control/accounting header file for linux | 8 | * Resource control/accounting header file for linux |
diff --git a/include/linux/sh_clk.h b/include/linux/sh_clk.h index 4dca992f3093..cea0c38e7a63 100644 --- a/include/linux/sh_clk.h +++ b/include/linux/sh_clk.h | |||
| @@ -122,6 +122,10 @@ int clk_rate_table_find(struct clk *clk, | |||
| 122 | long clk_rate_div_range_round(struct clk *clk, unsigned int div_min, | 122 | long clk_rate_div_range_round(struct clk *clk, unsigned int div_min, |
| 123 | unsigned int div_max, unsigned long rate); | 123 | unsigned int div_max, unsigned long rate); |
| 124 | 124 | ||
| 125 | long clk_round_parent(struct clk *clk, unsigned long target, | ||
| 126 | unsigned long *best_freq, unsigned long *parent_freq, | ||
| 127 | unsigned int div_min, unsigned int div_max); | ||
| 128 | |||
| 125 | #define SH_CLK_MSTP32(_parent, _enable_reg, _enable_bit, _flags) \ | 129 | #define SH_CLK_MSTP32(_parent, _enable_reg, _enable_bit, _flags) \ |
| 126 | { \ | 130 | { \ |
| 127 | .parent = _parent, \ | 131 | .parent = _parent, \ |
diff --git a/include/linux/sh_timer.h b/include/linux/sh_timer.h index 864bd56bd3b0..4d9dcd138315 100644 --- a/include/linux/sh_timer.h +++ b/include/linux/sh_timer.h | |||
| @@ -5,7 +5,6 @@ struct sh_timer_config { | |||
| 5 | char *name; | 5 | char *name; |
| 6 | long channel_offset; | 6 | long channel_offset; |
| 7 | int timer_bit; | 7 | int timer_bit; |
| 8 | char *clk; | ||
| 9 | unsigned long clockevent_rating; | 8 | unsigned long clockevent_rating; |
| 10 | unsigned long clocksource_rating; | 9 | unsigned long clocksource_rating; |
| 11 | }; | 10 | }; |
diff --git a/include/linux/sunrpc/svc_xprt.h b/include/linux/sunrpc/svc_xprt.h index bbdb680ffbe9..aea0d438e3c7 100644 --- a/include/linux/sunrpc/svc_xprt.h +++ b/include/linux/sunrpc/svc_xprt.h | |||
| @@ -82,18 +82,28 @@ struct svc_xprt { | |||
| 82 | struct net *xpt_net; | 82 | struct net *xpt_net; |
| 83 | }; | 83 | }; |
| 84 | 84 | ||
| 85 | static inline void register_xpt_user(struct svc_xprt *xpt, struct svc_xpt_user *u) | 85 | static inline void unregister_xpt_user(struct svc_xprt *xpt, struct svc_xpt_user *u) |
| 86 | { | 86 | { |
| 87 | spin_lock(&xpt->xpt_lock); | 87 | spin_lock(&xpt->xpt_lock); |
| 88 | list_add(&u->list, &xpt->xpt_users); | 88 | list_del_init(&u->list); |
| 89 | spin_unlock(&xpt->xpt_lock); | 89 | spin_unlock(&xpt->xpt_lock); |
| 90 | } | 90 | } |
| 91 | 91 | ||
| 92 | static inline void unregister_xpt_user(struct svc_xprt *xpt, struct svc_xpt_user *u) | 92 | static inline int register_xpt_user(struct svc_xprt *xpt, struct svc_xpt_user *u) |
| 93 | { | 93 | { |
| 94 | spin_lock(&xpt->xpt_lock); | 94 | spin_lock(&xpt->xpt_lock); |
| 95 | list_del_init(&u->list); | 95 | if (test_bit(XPT_CLOSE, &xpt->xpt_flags)) { |
| 96 | /* | ||
| 97 | * The connection is about to be deleted soon (or, | ||
| 98 | * worse, may already be deleted--in which case we've | ||
| 99 | * already notified the xpt_users). | ||
| 100 | */ | ||
| 101 | spin_unlock(&xpt->xpt_lock); | ||
| 102 | return -ENOTCONN; | ||
| 103 | } | ||
| 104 | list_add(&u->list, &xpt->xpt_users); | ||
| 96 | spin_unlock(&xpt->xpt_lock); | 105 | spin_unlock(&xpt->xpt_lock); |
| 106 | return 0; | ||
| 97 | } | 107 | } |
| 98 | 108 | ||
| 99 | int svc_reg_xprt_class(struct svc_xprt_class *); | 109 | int svc_reg_xprt_class(struct svc_xprt_class *); |
