diff options
Diffstat (limited to 'include/linux')
25 files changed, 285 insertions, 99 deletions
diff --git a/include/linux/ceph/ceph_features.h b/include/linux/ceph/ceph_features.h new file mode 100644 index 000000000000..dad579b0c0e6 --- /dev/null +++ b/include/linux/ceph/ceph_features.h | |||
| @@ -0,0 +1,27 @@ | |||
| 1 | #ifndef __CEPH_FEATURES | ||
| 2 | #define __CEPH_FEATURES | ||
| 3 | |||
| 4 | /* | ||
| 5 | * feature bits | ||
| 6 | */ | ||
| 7 | #define CEPH_FEATURE_UID (1<<0) | ||
| 8 | #define CEPH_FEATURE_NOSRCADDR (1<<1) | ||
| 9 | #define CEPH_FEATURE_MONCLOCKCHECK (1<<2) | ||
| 10 | #define CEPH_FEATURE_FLOCK (1<<3) | ||
| 11 | #define CEPH_FEATURE_SUBSCRIBE2 (1<<4) | ||
| 12 | #define CEPH_FEATURE_MONNAMES (1<<5) | ||
| 13 | #define CEPH_FEATURE_RECONNECT_SEQ (1<<6) | ||
| 14 | #define CEPH_FEATURE_DIRLAYOUTHASH (1<<7) | ||
| 15 | /* bits 8-17 defined by user-space; not supported yet here */ | ||
| 16 | #define CEPH_FEATURE_CRUSH_TUNABLES (1<<18) | ||
| 17 | |||
| 18 | /* | ||
| 19 | * Features supported. | ||
| 20 | */ | ||
| 21 | #define CEPH_FEATURES_SUPPORTED_DEFAULT \ | ||
| 22 | (CEPH_FEATURE_NOSRCADDR | \ | ||
| 23 | CEPH_FEATURE_CRUSH_TUNABLES) | ||
| 24 | |||
| 25 | #define CEPH_FEATURES_REQUIRED_DEFAULT \ | ||
| 26 | (CEPH_FEATURE_NOSRCADDR) | ||
| 27 | #endif | ||
diff --git a/include/linux/ceph/ceph_fs.h b/include/linux/ceph/ceph_fs.h index e81ab30d4896..d021610efd65 100644 --- a/include/linux/ceph/ceph_fs.h +++ b/include/linux/ceph/ceph_fs.h | |||
| @@ -35,20 +35,6 @@ | |||
| 35 | /* arbitrary limit on max # of monitors (cluster of 3 is typical) */ | 35 | /* arbitrary limit on max # of monitors (cluster of 3 is typical) */ |
| 36 | #define CEPH_MAX_MON 31 | 36 | #define CEPH_MAX_MON 31 |
| 37 | 37 | ||
| 38 | |||
| 39 | /* | ||
| 40 | * feature bits | ||
| 41 | */ | ||
| 42 | #define CEPH_FEATURE_UID (1<<0) | ||
| 43 | #define CEPH_FEATURE_NOSRCADDR (1<<1) | ||
| 44 | #define CEPH_FEATURE_MONCLOCKCHECK (1<<2) | ||
| 45 | #define CEPH_FEATURE_FLOCK (1<<3) | ||
| 46 | #define CEPH_FEATURE_SUBSCRIBE2 (1<<4) | ||
| 47 | #define CEPH_FEATURE_MONNAMES (1<<5) | ||
| 48 | #define CEPH_FEATURE_RECONNECT_SEQ (1<<6) | ||
| 49 | #define CEPH_FEATURE_DIRLAYOUTHASH (1<<7) | ||
| 50 | |||
| 51 | |||
| 52 | /* | 38 | /* |
| 53 | * ceph_file_layout - describe data layout for a file/inode | 39 | * ceph_file_layout - describe data layout for a file/inode |
| 54 | */ | 40 | */ |
diff --git a/include/linux/ceph/decode.h b/include/linux/ceph/decode.h index d8615dee5808..4bbf2db45f46 100644 --- a/include/linux/ceph/decode.h +++ b/include/linux/ceph/decode.h | |||
| @@ -1,6 +1,7 @@ | |||
| 1 | #ifndef __CEPH_DECODE_H | 1 | #ifndef __CEPH_DECODE_H |
| 2 | #define __CEPH_DECODE_H | 2 | #define __CEPH_DECODE_H |
| 3 | 3 | ||
| 4 | #include <linux/err.h> | ||
| 4 | #include <linux/bug.h> | 5 | #include <linux/bug.h> |
| 5 | #include <linux/time.h> | 6 | #include <linux/time.h> |
| 6 | #include <asm/unaligned.h> | 7 | #include <asm/unaligned.h> |
| @@ -85,6 +86,52 @@ static inline int ceph_has_room(void **p, void *end, size_t n) | |||
| 85 | } while (0) | 86 | } while (0) |
| 86 | 87 | ||
| 87 | /* | 88 | /* |
| 89 | * Allocate a buffer big enough to hold the wire-encoded string, and | ||
| 90 | * decode the string into it. The resulting string will always be | ||
| 91 | * terminated with '\0'. If successful, *p will be advanced | ||
| 92 | * past the decoded data. Also, if lenp is not a null pointer, the | ||
| 93 | * length (not including the terminating '\0') will be recorded in | ||
| 94 | * *lenp. Note that a zero-length string is a valid return value. | ||
| 95 | * | ||
| 96 | * Returns a pointer to the newly-allocated string buffer, or a | ||
| 97 | * pointer-coded errno if an error occurs. Neither *p nor *lenp | ||
| 98 | * will have been updated if an error is returned. | ||
| 99 | * | ||
| 100 | * There are two possible failures: | ||
| 101 | * - converting the string would require accessing memory at or | ||
| 102 | * beyond the "end" pointer provided (-E | ||
| 103 | * - memory could not be allocated for the result | ||
| 104 | */ | ||
| 105 | static inline char *ceph_extract_encoded_string(void **p, void *end, | ||
| 106 | size_t *lenp, gfp_t gfp) | ||
| 107 | { | ||
| 108 | u32 len; | ||
| 109 | void *sp = *p; | ||
| 110 | char *buf; | ||
| 111 | |||
| 112 | ceph_decode_32_safe(&sp, end, len, bad); | ||
| 113 | if (!ceph_has_room(&sp, end, len)) | ||
| 114 | goto bad; | ||
| 115 | |||
| 116 | buf = kmalloc(len + 1, gfp); | ||
| 117 | if (!buf) | ||
| 118 | return ERR_PTR(-ENOMEM); | ||
| 119 | |||
| 120 | if (len) | ||
| 121 | memcpy(buf, sp, len); | ||
| 122 | buf[len] = '\0'; | ||
| 123 | |||
| 124 | *p = (char *) *p + sizeof (u32) + len; | ||
| 125 | if (lenp) | ||
| 126 | *lenp = (size_t) len; | ||
| 127 | |||
| 128 | return buf; | ||
| 129 | |||
| 130 | bad: | ||
| 131 | return ERR_PTR(-ERANGE); | ||
| 132 | } | ||
| 133 | |||
| 134 | /* | ||
| 88 | * struct ceph_timespec <-> struct timespec | 135 | * struct ceph_timespec <-> struct timespec |
| 89 | */ | 136 | */ |
| 90 | static inline void ceph_decode_timespec(struct timespec *ts, | 137 | static inline void ceph_decode_timespec(struct timespec *ts, |
| @@ -151,7 +198,7 @@ static inline void ceph_encode_filepath(void **p, void *end, | |||
| 151 | u64 ino, const char *path) | 198 | u64 ino, const char *path) |
| 152 | { | 199 | { |
| 153 | u32 len = path ? strlen(path) : 0; | 200 | u32 len = path ? strlen(path) : 0; |
| 154 | BUG_ON(*p + sizeof(ino) + sizeof(len) + len > end); | 201 | BUG_ON(*p + 1 + sizeof(ino) + sizeof(len) + len > end); |
| 155 | ceph_encode_8(p, 1); | 202 | ceph_encode_8(p, 1); |
| 156 | ceph_encode_64(p, ino); | 203 | ceph_encode_64(p, ino); |
| 157 | ceph_encode_32(p, len); | 204 | ceph_encode_32(p, len); |
diff --git a/include/linux/ceph/libceph.h b/include/linux/ceph/libceph.h index e71d683982a6..42624789b06f 100644 --- a/include/linux/ceph/libceph.h +++ b/include/linux/ceph/libceph.h | |||
| @@ -23,12 +23,6 @@ | |||
| 23 | #include "ceph_fs.h" | 23 | #include "ceph_fs.h" |
| 24 | 24 | ||
| 25 | /* | 25 | /* |
| 26 | * Supported features | ||
| 27 | */ | ||
| 28 | #define CEPH_FEATURE_SUPPORTED_DEFAULT CEPH_FEATURE_NOSRCADDR | ||
| 29 | #define CEPH_FEATURE_REQUIRED_DEFAULT CEPH_FEATURE_NOSRCADDR | ||
| 30 | |||
| 31 | /* | ||
| 32 | * mount options | 26 | * mount options |
| 33 | */ | 27 | */ |
| 34 | #define CEPH_OPT_FSID (1<<0) | 28 | #define CEPH_OPT_FSID (1<<0) |
| @@ -132,7 +126,7 @@ struct ceph_client { | |||
| 132 | u32 supported_features; | 126 | u32 supported_features; |
| 133 | u32 required_features; | 127 | u32 required_features; |
| 134 | 128 | ||
| 135 | struct ceph_messenger *msgr; /* messenger instance */ | 129 | struct ceph_messenger msgr; /* messenger instance */ |
| 136 | struct ceph_mon_client monc; | 130 | struct ceph_mon_client monc; |
| 137 | struct ceph_osd_client osdc; | 131 | struct ceph_osd_client osdc; |
| 138 | 132 | ||
| @@ -160,7 +154,7 @@ struct ceph_client { | |||
| 160 | struct ceph_snap_context { | 154 | struct ceph_snap_context { |
| 161 | atomic_t nref; | 155 | atomic_t nref; |
| 162 | u64 seq; | 156 | u64 seq; |
| 163 | int num_snaps; | 157 | u32 num_snaps; |
| 164 | u64 snaps[]; | 158 | u64 snaps[]; |
| 165 | }; | 159 | }; |
| 166 | 160 | ||
diff --git a/include/linux/ceph/messenger.h b/include/linux/ceph/messenger.h index 44c87e731e9d..189ae0637634 100644 --- a/include/linux/ceph/messenger.h +++ b/include/linux/ceph/messenger.h | |||
| @@ -31,9 +31,6 @@ struct ceph_connection_operations { | |||
| 31 | int (*verify_authorizer_reply) (struct ceph_connection *con, int len); | 31 | int (*verify_authorizer_reply) (struct ceph_connection *con, int len); |
| 32 | int (*invalidate_authorizer)(struct ceph_connection *con); | 32 | int (*invalidate_authorizer)(struct ceph_connection *con); |
| 33 | 33 | ||
| 34 | /* protocol version mismatch */ | ||
| 35 | void (*bad_proto) (struct ceph_connection *con); | ||
| 36 | |||
| 37 | /* there was some error on the socket (disconnect, whatever) */ | 34 | /* there was some error on the socket (disconnect, whatever) */ |
| 38 | void (*fault) (struct ceph_connection *con); | 35 | void (*fault) (struct ceph_connection *con); |
| 39 | 36 | ||
| @@ -53,6 +50,7 @@ struct ceph_messenger { | |||
| 53 | struct ceph_entity_inst inst; /* my name+address */ | 50 | struct ceph_entity_inst inst; /* my name+address */ |
| 54 | struct ceph_entity_addr my_enc_addr; | 51 | struct ceph_entity_addr my_enc_addr; |
| 55 | 52 | ||
| 53 | atomic_t stopping; | ||
| 56 | bool nocrc; | 54 | bool nocrc; |
| 57 | 55 | ||
| 58 | /* | 56 | /* |
| @@ -80,7 +78,10 @@ struct ceph_msg { | |||
| 80 | unsigned nr_pages; /* size of page array */ | 78 | unsigned nr_pages; /* size of page array */ |
| 81 | unsigned page_alignment; /* io offset in first page */ | 79 | unsigned page_alignment; /* io offset in first page */ |
| 82 | struct ceph_pagelist *pagelist; /* instead of pages */ | 80 | struct ceph_pagelist *pagelist; /* instead of pages */ |
| 81 | |||
| 82 | struct ceph_connection *con; | ||
| 83 | struct list_head list_head; | 83 | struct list_head list_head; |
| 84 | |||
| 84 | struct kref kref; | 85 | struct kref kref; |
| 85 | struct bio *bio; /* instead of pages/pagelist */ | 86 | struct bio *bio; /* instead of pages/pagelist */ |
| 86 | struct bio *bio_iter; /* bio iterator */ | 87 | struct bio *bio_iter; /* bio iterator */ |
| @@ -106,23 +107,6 @@ struct ceph_msg_pos { | |||
| 106 | #define MAX_DELAY_INTERVAL (5 * 60 * HZ) | 107 | #define MAX_DELAY_INTERVAL (5 * 60 * HZ) |
| 107 | 108 | ||
| 108 | /* | 109 | /* |
| 109 | * ceph_connection state bit flags | ||
| 110 | */ | ||
| 111 | #define LOSSYTX 0 /* we can close channel or drop messages on errors */ | ||
| 112 | #define CONNECTING 1 | ||
| 113 | #define NEGOTIATING 2 | ||
| 114 | #define KEEPALIVE_PENDING 3 | ||
| 115 | #define WRITE_PENDING 4 /* we have data ready to send */ | ||
| 116 | #define STANDBY 8 /* no outgoing messages, socket closed. we keep | ||
| 117 | * the ceph_connection around to maintain shared | ||
| 118 | * state with the peer. */ | ||
| 119 | #define CLOSED 10 /* we've closed the connection */ | ||
| 120 | #define SOCK_CLOSED 11 /* socket state changed to closed */ | ||
| 121 | #define OPENING 13 /* open connection w/ (possibly new) peer */ | ||
| 122 | #define DEAD 14 /* dead, about to kfree */ | ||
| 123 | #define BACKOFF 15 | ||
| 124 | |||
| 125 | /* | ||
| 126 | * A single connection with another host. | 110 | * A single connection with another host. |
| 127 | * | 111 | * |
| 128 | * We maintain a queue of outgoing messages, and some session state to | 112 | * We maintain a queue of outgoing messages, and some session state to |
| @@ -131,18 +115,22 @@ struct ceph_msg_pos { | |||
| 131 | */ | 115 | */ |
| 132 | struct ceph_connection { | 116 | struct ceph_connection { |
| 133 | void *private; | 117 | void *private; |
| 134 | atomic_t nref; | ||
| 135 | 118 | ||
| 136 | const struct ceph_connection_operations *ops; | 119 | const struct ceph_connection_operations *ops; |
| 137 | 120 | ||
| 138 | struct ceph_messenger *msgr; | 121 | struct ceph_messenger *msgr; |
| 122 | |||
| 123 | atomic_t sock_state; | ||
| 139 | struct socket *sock; | 124 | struct socket *sock; |
| 140 | unsigned long state; /* connection state (see flags above) */ | 125 | struct ceph_entity_addr peer_addr; /* peer address */ |
| 126 | struct ceph_entity_addr peer_addr_for_me; | ||
| 127 | |||
| 128 | unsigned long flags; | ||
| 129 | unsigned long state; | ||
| 141 | const char *error_msg; /* error message, if any */ | 130 | const char *error_msg; /* error message, if any */ |
| 142 | 131 | ||
| 143 | struct ceph_entity_addr peer_addr; /* peer address */ | ||
| 144 | struct ceph_entity_name peer_name; /* peer name */ | 132 | struct ceph_entity_name peer_name; /* peer name */ |
| 145 | struct ceph_entity_addr peer_addr_for_me; | 133 | |
| 146 | unsigned peer_features; | 134 | unsigned peer_features; |
| 147 | u32 connect_seq; /* identify the most recent connection | 135 | u32 connect_seq; /* identify the most recent connection |
| 148 | attempt for this connection, client */ | 136 | attempt for this connection, client */ |
| @@ -207,24 +195,26 @@ extern int ceph_msgr_init(void); | |||
| 207 | extern void ceph_msgr_exit(void); | 195 | extern void ceph_msgr_exit(void); |
| 208 | extern void ceph_msgr_flush(void); | 196 | extern void ceph_msgr_flush(void); |
| 209 | 197 | ||
| 210 | extern struct ceph_messenger *ceph_messenger_create( | 198 | extern void ceph_messenger_init(struct ceph_messenger *msgr, |
| 211 | struct ceph_entity_addr *myaddr, | 199 | struct ceph_entity_addr *myaddr, |
| 212 | u32 features, u32 required); | 200 | u32 supported_features, |
| 213 | extern void ceph_messenger_destroy(struct ceph_messenger *); | 201 | u32 required_features, |
| 202 | bool nocrc); | ||
| 214 | 203 | ||
| 215 | extern void ceph_con_init(struct ceph_messenger *msgr, | 204 | extern void ceph_con_init(struct ceph_connection *con, void *private, |
| 216 | struct ceph_connection *con); | 205 | const struct ceph_connection_operations *ops, |
| 206 | struct ceph_messenger *msgr); | ||
| 217 | extern void ceph_con_open(struct ceph_connection *con, | 207 | extern void ceph_con_open(struct ceph_connection *con, |
| 208 | __u8 entity_type, __u64 entity_num, | ||
| 218 | struct ceph_entity_addr *addr); | 209 | struct ceph_entity_addr *addr); |
| 219 | extern bool ceph_con_opened(struct ceph_connection *con); | 210 | extern bool ceph_con_opened(struct ceph_connection *con); |
| 220 | extern void ceph_con_close(struct ceph_connection *con); | 211 | extern void ceph_con_close(struct ceph_connection *con); |
| 221 | extern void ceph_con_send(struct ceph_connection *con, struct ceph_msg *msg); | 212 | extern void ceph_con_send(struct ceph_connection *con, struct ceph_msg *msg); |
| 222 | extern void ceph_con_revoke(struct ceph_connection *con, struct ceph_msg *msg); | 213 | |
| 223 | extern void ceph_con_revoke_message(struct ceph_connection *con, | 214 | extern void ceph_msg_revoke(struct ceph_msg *msg); |
| 224 | struct ceph_msg *msg); | 215 | extern void ceph_msg_revoke_incoming(struct ceph_msg *msg); |
| 216 | |||
| 225 | extern void ceph_con_keepalive(struct ceph_connection *con); | 217 | extern void ceph_con_keepalive(struct ceph_connection *con); |
| 226 | extern struct ceph_connection *ceph_con_get(struct ceph_connection *con); | ||
| 227 | extern void ceph_con_put(struct ceph_connection *con); | ||
| 228 | 218 | ||
| 229 | extern struct ceph_msg *ceph_msg_new(int type, int front_len, gfp_t flags, | 219 | extern struct ceph_msg *ceph_msg_new(int type, int front_len, gfp_t flags, |
| 230 | bool can_fail); | 220 | bool can_fail); |
diff --git a/include/linux/ceph/mon_client.h b/include/linux/ceph/mon_client.h index 545f85917780..2113e3850a4e 100644 --- a/include/linux/ceph/mon_client.h +++ b/include/linux/ceph/mon_client.h | |||
| @@ -70,7 +70,7 @@ struct ceph_mon_client { | |||
| 70 | bool hunting; | 70 | bool hunting; |
| 71 | int cur_mon; /* last monitor i contacted */ | 71 | int cur_mon; /* last monitor i contacted */ |
| 72 | unsigned long sub_sent, sub_renew_after; | 72 | unsigned long sub_sent, sub_renew_after; |
| 73 | struct ceph_connection *con; | 73 | struct ceph_connection con; |
| 74 | bool have_fsid; | 74 | bool have_fsid; |
| 75 | 75 | ||
| 76 | /* pending generic requests */ | 76 | /* pending generic requests */ |
diff --git a/include/linux/ceph/msgpool.h b/include/linux/ceph/msgpool.h index a362605f9368..09fa96b43436 100644 --- a/include/linux/ceph/msgpool.h +++ b/include/linux/ceph/msgpool.h | |||
| @@ -11,10 +11,11 @@ | |||
| 11 | struct ceph_msgpool { | 11 | struct ceph_msgpool { |
| 12 | const char *name; | 12 | const char *name; |
| 13 | mempool_t *pool; | 13 | mempool_t *pool; |
| 14 | int type; /* preallocated message type */ | ||
| 14 | int front_len; /* preallocated payload size */ | 15 | int front_len; /* preallocated payload size */ |
| 15 | }; | 16 | }; |
| 16 | 17 | ||
| 17 | extern int ceph_msgpool_init(struct ceph_msgpool *pool, | 18 | extern int ceph_msgpool_init(struct ceph_msgpool *pool, int type, |
| 18 | int front_len, int size, bool blocking, | 19 | int front_len, int size, bool blocking, |
| 19 | const char *name); | 20 | const char *name); |
| 20 | extern void ceph_msgpool_destroy(struct ceph_msgpool *pool); | 21 | extern void ceph_msgpool_destroy(struct ceph_msgpool *pool); |
diff --git a/include/linux/crush/crush.h b/include/linux/crush/crush.h index 7c4750811b96..25baa287cff7 100644 --- a/include/linux/crush/crush.h +++ b/include/linux/crush/crush.h | |||
| @@ -154,6 +154,14 @@ struct crush_map { | |||
| 154 | __s32 max_buckets; | 154 | __s32 max_buckets; |
| 155 | __u32 max_rules; | 155 | __u32 max_rules; |
| 156 | __s32 max_devices; | 156 | __s32 max_devices; |
| 157 | |||
| 158 | /* choose local retries before re-descent */ | ||
| 159 | __u32 choose_local_tries; | ||
| 160 | /* choose local attempts using a fallback permutation before | ||
| 161 | * re-descent */ | ||
| 162 | __u32 choose_local_fallback_tries; | ||
| 163 | /* choose attempts before giving up */ | ||
| 164 | __u32 choose_total_tries; | ||
| 157 | }; | 165 | }; |
| 158 | 166 | ||
| 159 | 167 | ||
diff --git a/include/linux/fs.h b/include/linux/fs.h index 8fabb037a48d..b178f9e91e23 100644 --- a/include/linux/fs.h +++ b/include/linux/fs.h | |||
| @@ -1163,9 +1163,10 @@ struct lock_manager { | |||
| 1163 | struct list_head list; | 1163 | struct list_head list; |
| 1164 | }; | 1164 | }; |
| 1165 | 1165 | ||
| 1166 | void locks_start_grace(struct lock_manager *); | 1166 | struct net; |
| 1167 | void locks_start_grace(struct net *, struct lock_manager *); | ||
| 1167 | void locks_end_grace(struct lock_manager *); | 1168 | void locks_end_grace(struct lock_manager *); |
| 1168 | int locks_in_grace(void); | 1169 | int locks_in_grace(struct net *); |
| 1169 | 1170 | ||
| 1170 | /* that will die - we need it for nfs_lock_info */ | 1171 | /* that will die - we need it for nfs_lock_info */ |
| 1171 | #include <linux/nfs_fs_i.h> | 1172 | #include <linux/nfs_fs_i.h> |
diff --git a/include/linux/i2c/twl.h b/include/linux/i2c/twl.h index 555382660bc4..7ea898c55a60 100644 --- a/include/linux/i2c/twl.h +++ b/include/linux/i2c/twl.h | |||
| @@ -555,6 +555,8 @@ struct twl4030_clock_init_data { | |||
| 555 | struct twl4030_bci_platform_data { | 555 | struct twl4030_bci_platform_data { |
| 556 | int *battery_tmp_tbl; | 556 | int *battery_tmp_tbl; |
| 557 | unsigned int tblsize; | 557 | unsigned int tblsize; |
| 558 | int bb_uvolt; /* voltage to charge backup battery */ | ||
| 559 | int bb_uamp; /* current for backup battery charging */ | ||
| 558 | }; | 560 | }; |
| 559 | 561 | ||
| 560 | /* TWL4030_GPIO_MAX (18) GPIOs, with interrupts */ | 562 | /* TWL4030_GPIO_MAX (18) GPIOs, with interrupts */ |
diff --git a/include/linux/interrupt.h b/include/linux/interrupt.h index e68a8e53bb59..c5f856a040b9 100644 --- a/include/linux/interrupt.h +++ b/include/linux/interrupt.h | |||
| @@ -42,7 +42,6 @@ | |||
| 42 | * | 42 | * |
| 43 | * IRQF_DISABLED - keep irqs disabled when calling the action handler. | 43 | * IRQF_DISABLED - keep irqs disabled when calling the action handler. |
| 44 | * DEPRECATED. This flag is a NOOP and scheduled to be removed | 44 | * DEPRECATED. This flag is a NOOP and scheduled to be removed |
| 45 | * IRQF_SAMPLE_RANDOM - irq is used to feed the random generator | ||
| 46 | * IRQF_SHARED - allow sharing the irq among several devices | 45 | * IRQF_SHARED - allow sharing the irq among several devices |
| 47 | * IRQF_PROBE_SHARED - set by callers when they expect sharing mismatches to occur | 46 | * IRQF_PROBE_SHARED - set by callers when they expect sharing mismatches to occur |
| 48 | * IRQF_TIMER - Flag to mark this interrupt as timer interrupt | 47 | * IRQF_TIMER - Flag to mark this interrupt as timer interrupt |
| @@ -61,7 +60,6 @@ | |||
| 61 | * resume time. | 60 | * resume time. |
| 62 | */ | 61 | */ |
| 63 | #define IRQF_DISABLED 0x00000020 | 62 | #define IRQF_DISABLED 0x00000020 |
| 64 | #define IRQF_SAMPLE_RANDOM 0x00000040 | ||
| 65 | #define IRQF_SHARED 0x00000080 | 63 | #define IRQF_SHARED 0x00000080 |
| 66 | #define IRQF_PROBE_SHARED 0x00000100 | 64 | #define IRQF_PROBE_SHARED 0x00000100 |
| 67 | #define __IRQF_TIMER 0x00000200 | 65 | #define __IRQF_TIMER 0x00000200 |
diff --git a/include/linux/irqdesc.h b/include/linux/irqdesc.h index f1e2527006bd..9a323d12de1c 100644 --- a/include/linux/irqdesc.h +++ b/include/linux/irqdesc.h | |||
| @@ -39,7 +39,6 @@ struct module; | |||
| 39 | */ | 39 | */ |
| 40 | struct irq_desc { | 40 | struct irq_desc { |
| 41 | struct irq_data irq_data; | 41 | struct irq_data irq_data; |
| 42 | struct timer_rand_state *timer_rand_state; | ||
| 43 | unsigned int __percpu *kstat_irqs; | 42 | unsigned int __percpu *kstat_irqs; |
| 44 | irq_flow_handler_t handle_irq; | 43 | irq_flow_handler_t handle_irq; |
| 45 | #ifdef CONFIG_IRQ_PREFLOW_FASTEOI | 44 | #ifdef CONFIG_IRQ_PREFLOW_FASTEOI |
diff --git a/include/linux/lockd/lockd.h b/include/linux/lockd/lockd.h index f04ce6ac6d04..f5a051a79273 100644 --- a/include/linux/lockd/lockd.h +++ b/include/linux/lockd/lockd.h | |||
| @@ -262,11 +262,11 @@ typedef int (*nlm_host_match_fn_t)(void *cur, struct nlm_host *ref); | |||
| 262 | __be32 nlmsvc_lock(struct svc_rqst *, struct nlm_file *, | 262 | __be32 nlmsvc_lock(struct svc_rqst *, struct nlm_file *, |
| 263 | struct nlm_host *, struct nlm_lock *, int, | 263 | struct nlm_host *, struct nlm_lock *, int, |
| 264 | struct nlm_cookie *, int); | 264 | struct nlm_cookie *, int); |
| 265 | __be32 nlmsvc_unlock(struct nlm_file *, struct nlm_lock *); | 265 | __be32 nlmsvc_unlock(struct net *net, struct nlm_file *, struct nlm_lock *); |
| 266 | __be32 nlmsvc_testlock(struct svc_rqst *, struct nlm_file *, | 266 | __be32 nlmsvc_testlock(struct svc_rqst *, struct nlm_file *, |
| 267 | struct nlm_host *, struct nlm_lock *, | 267 | struct nlm_host *, struct nlm_lock *, |
| 268 | struct nlm_lock *, struct nlm_cookie *); | 268 | struct nlm_lock *, struct nlm_cookie *); |
| 269 | __be32 nlmsvc_cancel_blocked(struct nlm_file *, struct nlm_lock *); | 269 | __be32 nlmsvc_cancel_blocked(struct net *net, struct nlm_file *, struct nlm_lock *); |
| 270 | unsigned long nlmsvc_retry_blocked(void); | 270 | unsigned long nlmsvc_retry_blocked(void); |
| 271 | void nlmsvc_traverse_blocks(struct nlm_host *, struct nlm_file *, | 271 | void nlmsvc_traverse_blocks(struct nlm_host *, struct nlm_file *, |
| 272 | nlm_host_match_fn_t match); | 272 | nlm_host_match_fn_t match); |
| @@ -279,7 +279,7 @@ void nlmsvc_release_call(struct nlm_rqst *); | |||
| 279 | __be32 nlm_lookup_file(struct svc_rqst *, struct nlm_file **, | 279 | __be32 nlm_lookup_file(struct svc_rqst *, struct nlm_file **, |
| 280 | struct nfs_fh *); | 280 | struct nfs_fh *); |
| 281 | void nlm_release_file(struct nlm_file *); | 281 | void nlm_release_file(struct nlm_file *); |
| 282 | void nlmsvc_mark_resources(void); | 282 | void nlmsvc_mark_resources(struct net *); |
| 283 | void nlmsvc_free_host_resources(struct nlm_host *); | 283 | void nlmsvc_free_host_resources(struct nlm_host *); |
| 284 | void nlmsvc_invalidate_all(void); | 284 | void nlmsvc_invalidate_all(void); |
| 285 | 285 | ||
diff --git a/include/linux/nfs_fs.h b/include/linux/nfs_fs.h index 4b6043c20f77..2889877318bc 100644 --- a/include/linux/nfs_fs.h +++ b/include/linux/nfs_fs.h | |||
| @@ -191,7 +191,7 @@ struct nfs_inode { | |||
| 191 | struct hlist_head silly_list; | 191 | struct hlist_head silly_list; |
| 192 | wait_queue_head_t waitqueue; | 192 | wait_queue_head_t waitqueue; |
| 193 | 193 | ||
| 194 | #ifdef CONFIG_NFS_V4 | 194 | #if IS_ENABLED(CONFIG_NFS_V4) |
| 195 | struct nfs4_cached_acl *nfs4_acl; | 195 | struct nfs4_cached_acl *nfs4_acl; |
| 196 | /* NFSv4 state */ | 196 | /* NFSv4 state */ |
| 197 | struct list_head open_states; | 197 | struct list_head open_states; |
| @@ -428,7 +428,7 @@ extern __be32 root_nfs_parse_addr(char *name); /*__init*/ | |||
| 428 | * linux/fs/nfs/file.c | 428 | * linux/fs/nfs/file.c |
| 429 | */ | 429 | */ |
| 430 | extern const struct file_operations nfs_file_operations; | 430 | extern const struct file_operations nfs_file_operations; |
| 431 | #ifdef CONFIG_NFS_V4 | 431 | #if IS_ENABLED(CONFIG_NFS_V4) |
| 432 | extern const struct file_operations nfs4_file_operations; | 432 | extern const struct file_operations nfs4_file_operations; |
| 433 | #endif /* CONFIG_NFS_V4 */ | 433 | #endif /* CONFIG_NFS_V4 */ |
| 434 | extern const struct address_space_operations nfs_file_aops; | 434 | extern const struct address_space_operations nfs_file_aops; |
| @@ -538,7 +538,7 @@ extern void nfs_writeback_done(struct rpc_task *, struct nfs_write_data *); | |||
| 538 | extern int nfs_wb_all(struct inode *inode); | 538 | extern int nfs_wb_all(struct inode *inode); |
| 539 | extern int nfs_wb_page(struct inode *inode, struct page* page); | 539 | extern int nfs_wb_page(struct inode *inode, struct page* page); |
| 540 | extern int nfs_wb_page_cancel(struct inode *inode, struct page* page); | 540 | extern int nfs_wb_page_cancel(struct inode *inode, struct page* page); |
| 541 | #if defined(CONFIG_NFS_V3) || defined(CONFIG_NFS_V4) | 541 | #if IS_ENABLED(CONFIG_NFS_V3) || IS_ENABLED(CONFIG_NFS_V4) |
| 542 | extern int nfs_commit_inode(struct inode *, int); | 542 | extern int nfs_commit_inode(struct inode *, int); |
| 543 | extern struct nfs_commit_data *nfs_commitdata_alloc(void); | 543 | extern struct nfs_commit_data *nfs_commitdata_alloc(void); |
| 544 | extern void nfs_commit_free(struct nfs_commit_data *data); | 544 | extern void nfs_commit_free(struct nfs_commit_data *data); |
diff --git a/include/linux/nfs_fs_sb.h b/include/linux/nfs_fs_sb.h index 65327652c61a..310c63c8ab2c 100644 --- a/include/linux/nfs_fs_sb.h +++ b/include/linux/nfs_fs_sb.h | |||
| @@ -48,11 +48,12 @@ struct nfs_client { | |||
| 48 | struct rpc_clnt * cl_rpcclient; | 48 | struct rpc_clnt * cl_rpcclient; |
| 49 | const struct nfs_rpc_ops *rpc_ops; /* NFS protocol vector */ | 49 | const struct nfs_rpc_ops *rpc_ops; /* NFS protocol vector */ |
| 50 | int cl_proto; /* Network transport protocol */ | 50 | int cl_proto; /* Network transport protocol */ |
| 51 | struct nfs_subversion * cl_nfs_mod; /* pointer to nfs version module */ | ||
| 51 | 52 | ||
| 52 | u32 cl_minorversion;/* NFSv4 minorversion */ | 53 | u32 cl_minorversion;/* NFSv4 minorversion */ |
| 53 | struct rpc_cred *cl_machine_cred; | 54 | struct rpc_cred *cl_machine_cred; |
| 54 | 55 | ||
| 55 | #ifdef CONFIG_NFS_V4 | 56 | #if IS_ENABLED(CONFIG_NFS_V4) |
| 56 | u64 cl_clientid; /* constant */ | 57 | u64 cl_clientid; /* constant */ |
| 57 | nfs4_verifier cl_confirm; /* Clientid verifier */ | 58 | nfs4_verifier cl_confirm; /* Clientid verifier */ |
| 58 | unsigned long cl_state; | 59 | unsigned long cl_state; |
| @@ -137,7 +138,7 @@ struct nfs_server { | |||
| 137 | #endif | 138 | #endif |
| 138 | 139 | ||
| 139 | u32 pnfs_blksize; /* layout_blksize attr */ | 140 | u32 pnfs_blksize; /* layout_blksize attr */ |
| 140 | #ifdef CONFIG_NFS_V4 | 141 | #if IS_ENABLED(CONFIG_NFS_V4) |
| 141 | u32 attr_bitmask[3];/* V4 bitmask representing the set | 142 | u32 attr_bitmask[3];/* V4 bitmask representing the set |
| 142 | of attributes supported on this | 143 | of attributes supported on this |
| 143 | filesystem */ | 144 | filesystem */ |
| @@ -200,7 +201,7 @@ struct nfs_server { | |||
| 200 | #define NFS4_MAX_SLOT_TABLE (256U) | 201 | #define NFS4_MAX_SLOT_TABLE (256U) |
| 201 | #define NFS4_NO_SLOT ((u32)-1) | 202 | #define NFS4_NO_SLOT ((u32)-1) |
| 202 | 203 | ||
| 203 | #if defined(CONFIG_NFS_V4) | 204 | #if IS_ENABLED(CONFIG_NFS_V4) |
| 204 | 205 | ||
| 205 | /* Sessions */ | 206 | /* Sessions */ |
| 206 | #define SLOT_TABLE_SZ DIV_ROUND_UP(NFS4_MAX_SLOT_TABLE, 8*sizeof(long)) | 207 | #define SLOT_TABLE_SZ DIV_ROUND_UP(NFS4_MAX_SLOT_TABLE, 8*sizeof(long)) |
diff --git a/include/linux/nfs_idmap.h b/include/linux/nfs_idmap.h index 7eed2012d288..ece91c57ad79 100644 --- a/include/linux/nfs_idmap.h +++ b/include/linux/nfs_idmap.h | |||
| @@ -69,7 +69,7 @@ struct nfs_server; | |||
| 69 | struct nfs_fattr; | 69 | struct nfs_fattr; |
| 70 | struct nfs4_string; | 70 | struct nfs4_string; |
| 71 | 71 | ||
| 72 | #ifdef CONFIG_NFS_V4 | 72 | #if IS_ENABLED(CONFIG_NFS_V4) |
| 73 | int nfs_idmap_init(void); | 73 | int nfs_idmap_init(void); |
| 74 | void nfs_idmap_quit(void); | 74 | void nfs_idmap_quit(void); |
| 75 | #else | 75 | #else |
diff --git a/include/linux/nfs_xdr.h b/include/linux/nfs_xdr.h index 0e181c2320b7..00485e084394 100644 --- a/include/linux/nfs_xdr.h +++ b/include/linux/nfs_xdr.h | |||
| @@ -824,7 +824,7 @@ struct nfs3_getaclres { | |||
| 824 | struct posix_acl * acl_default; | 824 | struct posix_acl * acl_default; |
| 825 | }; | 825 | }; |
| 826 | 826 | ||
| 827 | #ifdef CONFIG_NFS_V4 | 827 | #if IS_ENABLED(CONFIG_NFS_V4) |
| 828 | 828 | ||
| 829 | typedef u64 clientid4; | 829 | typedef u64 clientid4; |
| 830 | 830 | ||
| @@ -1353,6 +1353,8 @@ struct nfs_renamedata { | |||
| 1353 | struct nfs_access_entry; | 1353 | struct nfs_access_entry; |
| 1354 | struct nfs_client; | 1354 | struct nfs_client; |
| 1355 | struct rpc_timeout; | 1355 | struct rpc_timeout; |
| 1356 | struct nfs_subversion; | ||
| 1357 | struct nfs_mount_info; | ||
| 1356 | struct nfs_client_initdata; | 1358 | struct nfs_client_initdata; |
| 1357 | struct nfs_pageio_descriptor; | 1359 | struct nfs_pageio_descriptor; |
| 1358 | 1360 | ||
| @@ -1370,6 +1372,8 @@ struct nfs_rpc_ops { | |||
| 1370 | struct nfs_fsinfo *); | 1372 | struct nfs_fsinfo *); |
| 1371 | struct vfsmount *(*submount) (struct nfs_server *, struct dentry *, | 1373 | struct vfsmount *(*submount) (struct nfs_server *, struct dentry *, |
| 1372 | struct nfs_fh *, struct nfs_fattr *); | 1374 | struct nfs_fh *, struct nfs_fattr *); |
| 1375 | struct dentry *(*try_mount) (int, const char *, struct nfs_mount_info *, | ||
| 1376 | struct nfs_subversion *); | ||
| 1373 | int (*getattr) (struct nfs_server *, struct nfs_fh *, | 1377 | int (*getattr) (struct nfs_server *, struct nfs_fh *, |
| 1374 | struct nfs_fattr *); | 1378 | struct nfs_fattr *); |
| 1375 | int (*setattr) (struct dentry *, struct nfs_fattr *, | 1379 | int (*setattr) (struct dentry *, struct nfs_fattr *, |
| @@ -1435,6 +1439,9 @@ struct nfs_rpc_ops { | |||
| 1435 | (*init_client) (struct nfs_client *, const struct rpc_timeout *, | 1439 | (*init_client) (struct nfs_client *, const struct rpc_timeout *, |
| 1436 | const char *, rpc_authflavor_t); | 1440 | const char *, rpc_authflavor_t); |
| 1437 | void (*free_client) (struct nfs_client *); | 1441 | void (*free_client) (struct nfs_client *); |
| 1442 | struct nfs_server *(*create_server)(struct nfs_mount_info *, struct nfs_subversion *); | ||
| 1443 | struct nfs_server *(*clone_server)(struct nfs_server *, struct nfs_fh *, | ||
| 1444 | struct nfs_fattr *, rpc_authflavor_t); | ||
| 1438 | }; | 1445 | }; |
| 1439 | 1446 | ||
| 1440 | /* | 1447 | /* |
diff --git a/include/linux/lp8727.h b/include/linux/platform_data/lp8727.h index ea98c6133d32..ea98c6133d32 100644 --- a/include/linux/lp8727.h +++ b/include/linux/platform_data/lp8727.h | |||
diff --git a/include/linux/power/charger-manager.h b/include/linux/power/charger-manager.h index 241065c9ce51..cd22029e32aa 100644 --- a/include/linux/power/charger-manager.h +++ b/include/linux/power/charger-manager.h | |||
| @@ -16,6 +16,7 @@ | |||
| 16 | #define _CHARGER_MANAGER_H | 16 | #define _CHARGER_MANAGER_H |
| 17 | 17 | ||
| 18 | #include <linux/power_supply.h> | 18 | #include <linux/power_supply.h> |
| 19 | #include <linux/extcon.h> | ||
| 19 | 20 | ||
| 20 | enum data_source { | 21 | enum data_source { |
| 21 | CM_BATTERY_PRESENT, | 22 | CM_BATTERY_PRESENT, |
| @@ -65,6 +66,70 @@ struct charger_global_desc { | |||
| 65 | }; | 66 | }; |
| 66 | 67 | ||
| 67 | /** | 68 | /** |
| 69 | * struct charger_cable | ||
| 70 | * @extcon_name: the name of extcon device. | ||
| 71 | * @name: the name of charger cable(external connector). | ||
| 72 | * @extcon_dev: the extcon device. | ||
| 73 | * @wq: the workqueue to control charger according to the state of | ||
| 74 | * charger cable. If charger cable is attached, enable charger. | ||
| 75 | * But if charger cable is detached, disable charger. | ||
| 76 | * @nb: the notifier block to receive changed state from EXTCON | ||
| 77 | * (External Connector) when charger cable is attached/detached. | ||
| 78 | * @attached: the state of charger cable. | ||
| 79 | * true: the charger cable is attached | ||
| 80 | * false: the charger cable is detached | ||
| 81 | * @charger: the instance of struct charger_regulator. | ||
| 82 | * @cm: the Charger Manager representing the battery. | ||
| 83 | */ | ||
| 84 | struct charger_cable { | ||
| 85 | const char *extcon_name; | ||
| 86 | const char *name; | ||
| 87 | |||
| 88 | /* The charger-manager use Exton framework*/ | ||
| 89 | struct extcon_specific_cable_nb extcon_dev; | ||
| 90 | struct work_struct wq; | ||
| 91 | struct notifier_block nb; | ||
| 92 | |||
| 93 | /* The state of charger cable */ | ||
| 94 | bool attached; | ||
| 95 | |||
| 96 | struct charger_regulator *charger; | ||
| 97 | |||
| 98 | /* | ||
| 99 | * Set min/max current of regulator to protect over-current issue | ||
| 100 | * according to a kind of charger cable when cable is attached. | ||
| 101 | */ | ||
| 102 | int min_uA; | ||
| 103 | int max_uA; | ||
| 104 | |||
| 105 | struct charger_manager *cm; | ||
| 106 | }; | ||
| 107 | |||
| 108 | /** | ||
| 109 | * struct charger_regulator | ||
| 110 | * @regulator_name: the name of regulator for using charger. | ||
| 111 | * @consumer: the regulator consumer for the charger. | ||
| 112 | * @cables: | ||
| 113 | * the array of charger cables to enable/disable charger | ||
| 114 | * and set current limit according to constratint data of | ||
| 115 | * struct charger_cable if only charger cable included | ||
| 116 | * in the array of charger cables is attached/detached. | ||
| 117 | * @num_cables: the number of charger cables. | ||
| 118 | */ | ||
| 119 | struct charger_regulator { | ||
| 120 | /* The name of regulator for charging */ | ||
| 121 | const char *regulator_name; | ||
| 122 | struct regulator *consumer; | ||
| 123 | |||
| 124 | /* | ||
| 125 | * Store constraint information related to current limit, | ||
| 126 | * each cable have different condition for charging. | ||
| 127 | */ | ||
| 128 | struct charger_cable *cables; | ||
| 129 | int num_cables; | ||
| 130 | }; | ||
| 131 | |||
| 132 | /** | ||
| 68 | * struct charger_desc | 133 | * struct charger_desc |
| 69 | * @psy_name: the name of power-supply-class for charger manager | 134 | * @psy_name: the name of power-supply-class for charger manager |
| 70 | * @polling_mode: | 135 | * @polling_mode: |
| @@ -109,7 +174,7 @@ struct charger_desc { | |||
| 109 | char **psy_charger_stat; | 174 | char **psy_charger_stat; |
| 110 | 175 | ||
| 111 | int num_charger_regulators; | 176 | int num_charger_regulators; |
| 112 | struct regulator_bulk_data *charger_regulators; | 177 | struct charger_regulator *charger_regulators; |
| 113 | 178 | ||
| 114 | char *psy_fuel_gauge; | 179 | char *psy_fuel_gauge; |
| 115 | 180 | ||
diff --git a/include/linux/power_supply.h b/include/linux/power_supply.h index 3b912bee28d1..0bafbb15f29c 100644 --- a/include/linux/power_supply.h +++ b/include/linux/power_supply.h | |||
| @@ -109,6 +109,8 @@ enum power_supply_property { | |||
| 109 | POWER_SUPPLY_PROP_CHARGE_NOW, | 109 | POWER_SUPPLY_PROP_CHARGE_NOW, |
| 110 | POWER_SUPPLY_PROP_CHARGE_AVG, | 110 | POWER_SUPPLY_PROP_CHARGE_AVG, |
| 111 | POWER_SUPPLY_PROP_CHARGE_COUNTER, | 111 | POWER_SUPPLY_PROP_CHARGE_COUNTER, |
| 112 | POWER_SUPPLY_PROP_CONSTANT_CHARGE_CURRENT, | ||
| 113 | POWER_SUPPLY_PROP_CONSTANT_CHARGE_VOLTAGE, | ||
| 112 | POWER_SUPPLY_PROP_ENERGY_FULL_DESIGN, | 114 | POWER_SUPPLY_PROP_ENERGY_FULL_DESIGN, |
| 113 | POWER_SUPPLY_PROP_ENERGY_EMPTY_DESIGN, | 115 | POWER_SUPPLY_PROP_ENERGY_EMPTY_DESIGN, |
| 114 | POWER_SUPPLY_PROP_ENERGY_FULL, | 116 | POWER_SUPPLY_PROP_ENERGY_FULL, |
| @@ -116,9 +118,15 @@ enum power_supply_property { | |||
| 116 | POWER_SUPPLY_PROP_ENERGY_NOW, | 118 | POWER_SUPPLY_PROP_ENERGY_NOW, |
| 117 | POWER_SUPPLY_PROP_ENERGY_AVG, | 119 | POWER_SUPPLY_PROP_ENERGY_AVG, |
| 118 | POWER_SUPPLY_PROP_CAPACITY, /* in percents! */ | 120 | POWER_SUPPLY_PROP_CAPACITY, /* in percents! */ |
| 121 | POWER_SUPPLY_PROP_CAPACITY_ALERT_MIN, /* in percents! */ | ||
| 122 | POWER_SUPPLY_PROP_CAPACITY_ALERT_MAX, /* in percents! */ | ||
| 119 | POWER_SUPPLY_PROP_CAPACITY_LEVEL, | 123 | POWER_SUPPLY_PROP_CAPACITY_LEVEL, |
| 120 | POWER_SUPPLY_PROP_TEMP, | 124 | POWER_SUPPLY_PROP_TEMP, |
| 125 | POWER_SUPPLY_PROP_TEMP_ALERT_MIN, | ||
| 126 | POWER_SUPPLY_PROP_TEMP_ALERT_MAX, | ||
| 121 | POWER_SUPPLY_PROP_TEMP_AMBIENT, | 127 | POWER_SUPPLY_PROP_TEMP_AMBIENT, |
| 128 | POWER_SUPPLY_PROP_TEMP_AMBIENT_ALERT_MIN, | ||
| 129 | POWER_SUPPLY_PROP_TEMP_AMBIENT_ALERT_MAX, | ||
| 122 | POWER_SUPPLY_PROP_TIME_TO_EMPTY_NOW, | 130 | POWER_SUPPLY_PROP_TIME_TO_EMPTY_NOW, |
| 123 | POWER_SUPPLY_PROP_TIME_TO_EMPTY_AVG, | 131 | POWER_SUPPLY_PROP_TIME_TO_EMPTY_AVG, |
| 124 | POWER_SUPPLY_PROP_TIME_TO_FULL_NOW, | 132 | POWER_SUPPLY_PROP_TIME_TO_FULL_NOW, |
| @@ -173,6 +181,9 @@ struct power_supply { | |||
| 173 | /* private */ | 181 | /* private */ |
| 174 | struct device *dev; | 182 | struct device *dev; |
| 175 | struct work_struct changed_work; | 183 | struct work_struct changed_work; |
| 184 | #ifdef CONFIG_THERMAL | ||
| 185 | struct thermal_zone_device *tzd; | ||
| 186 | #endif | ||
| 176 | 187 | ||
| 177 | #ifdef CONFIG_LEDS_TRIGGERS | 188 | #ifdef CONFIG_LEDS_TRIGGERS |
| 178 | struct led_trigger *charging_full_trig; | 189 | struct led_trigger *charging_full_trig; |
| @@ -236,6 +247,7 @@ static inline bool power_supply_is_amp_property(enum power_supply_property psp) | |||
| 236 | case POWER_SUPPLY_PROP_CHARGE_NOW: | 247 | case POWER_SUPPLY_PROP_CHARGE_NOW: |
| 237 | case POWER_SUPPLY_PROP_CHARGE_AVG: | 248 | case POWER_SUPPLY_PROP_CHARGE_AVG: |
| 238 | case POWER_SUPPLY_PROP_CHARGE_COUNTER: | 249 | case POWER_SUPPLY_PROP_CHARGE_COUNTER: |
| 250 | case POWER_SUPPLY_PROP_CONSTANT_CHARGE_CURRENT: | ||
| 239 | case POWER_SUPPLY_PROP_CURRENT_MAX: | 251 | case POWER_SUPPLY_PROP_CURRENT_MAX: |
| 240 | case POWER_SUPPLY_PROP_CURRENT_NOW: | 252 | case POWER_SUPPLY_PROP_CURRENT_NOW: |
| 241 | case POWER_SUPPLY_PROP_CURRENT_AVG: | 253 | case POWER_SUPPLY_PROP_CURRENT_AVG: |
| @@ -263,6 +275,7 @@ static inline bool power_supply_is_watt_property(enum power_supply_property psp) | |||
| 263 | case POWER_SUPPLY_PROP_VOLTAGE_NOW: | 275 | case POWER_SUPPLY_PROP_VOLTAGE_NOW: |
| 264 | case POWER_SUPPLY_PROP_VOLTAGE_AVG: | 276 | case POWER_SUPPLY_PROP_VOLTAGE_AVG: |
| 265 | case POWER_SUPPLY_PROP_VOLTAGE_OCV: | 277 | case POWER_SUPPLY_PROP_VOLTAGE_OCV: |
| 278 | case POWER_SUPPLY_PROP_CONSTANT_CHARGE_VOLTAGE: | ||
| 266 | case POWER_SUPPLY_PROP_POWER_NOW: | 279 | case POWER_SUPPLY_PROP_POWER_NOW: |
| 267 | return 1; | 280 | return 1; |
| 268 | default: | 281 | default: |
diff --git a/include/linux/random.h b/include/linux/random.h index 8f74538c96db..ac621ce886ca 100644 --- a/include/linux/random.h +++ b/include/linux/random.h | |||
| @@ -48,13 +48,13 @@ struct rnd_state { | |||
| 48 | 48 | ||
| 49 | #ifdef __KERNEL__ | 49 | #ifdef __KERNEL__ |
| 50 | 50 | ||
| 51 | extern void rand_initialize_irq(int irq); | 51 | extern void add_device_randomness(const void *, unsigned int); |
| 52 | |||
| 53 | extern void add_input_randomness(unsigned int type, unsigned int code, | 52 | extern void add_input_randomness(unsigned int type, unsigned int code, |
| 54 | unsigned int value); | 53 | unsigned int value); |
| 55 | extern void add_interrupt_randomness(int irq); | 54 | extern void add_interrupt_randomness(int irq, int irq_flags); |
| 56 | 55 | ||
| 57 | extern void get_random_bytes(void *buf, int nbytes); | 56 | extern void get_random_bytes(void *buf, int nbytes); |
| 57 | extern void get_random_bytes_arch(void *buf, int nbytes); | ||
| 58 | void generate_random_uuid(unsigned char uuid_out[16]); | 58 | void generate_random_uuid(unsigned char uuid_out[16]); |
| 59 | 59 | ||
| 60 | #ifndef MODULE | 60 | #ifndef MODULE |
diff --git a/include/linux/sunrpc/cache.h b/include/linux/sunrpc/cache.h index f5fd6160dbca..f792794f6634 100644 --- a/include/linux/sunrpc/cache.h +++ b/include/linux/sunrpc/cache.h | |||
| @@ -217,14 +217,32 @@ extern int qword_get(char **bpp, char *dest, int bufsize); | |||
| 217 | static inline int get_int(char **bpp, int *anint) | 217 | static inline int get_int(char **bpp, int *anint) |
| 218 | { | 218 | { |
| 219 | char buf[50]; | 219 | char buf[50]; |
| 220 | char *ep; | 220 | int len = qword_get(bpp, buf, sizeof(buf)); |
| 221 | int rv; | 221 | |
| 222 | int len = qword_get(bpp, buf, 50); | 222 | if (len < 0) |
| 223 | if (len < 0) return -EINVAL; | 223 | return -EINVAL; |
| 224 | if (len ==0) return -ENOENT; | 224 | if (len == 0) |
| 225 | rv = simple_strtol(buf, &ep, 0); | 225 | return -ENOENT; |
| 226 | if (*ep) return -EINVAL; | 226 | |
| 227 | *anint = rv; | 227 | if (kstrtoint(buf, 0, anint)) |
| 228 | return -EINVAL; | ||
| 229 | |||
| 230 | return 0; | ||
| 231 | } | ||
| 232 | |||
| 233 | static inline int get_uint(char **bpp, unsigned int *anint) | ||
| 234 | { | ||
| 235 | char buf[50]; | ||
| 236 | int len = qword_get(bpp, buf, sizeof(buf)); | ||
| 237 | |||
| 238 | if (len < 0) | ||
| 239 | return -EINVAL; | ||
| 240 | if (len == 0) | ||
| 241 | return -ENOENT; | ||
| 242 | |||
| 243 | if (kstrtouint(buf, 0, anint)) | ||
| 244 | return -EINVAL; | ||
| 245 | |||
| 228 | return 0; | 246 | return 0; |
| 229 | } | 247 | } |
| 230 | 248 | ||
diff --git a/include/linux/sunrpc/svc.h b/include/linux/sunrpc/svc.h index 40e0a273faea..d83db800fe02 100644 --- a/include/linux/sunrpc/svc.h +++ b/include/linux/sunrpc/svc.h | |||
| @@ -278,6 +278,8 @@ struct svc_rqst { | |||
| 278 | struct task_struct *rq_task; /* service thread */ | 278 | struct task_struct *rq_task; /* service thread */ |
| 279 | }; | 279 | }; |
| 280 | 280 | ||
| 281 | #define SVC_NET(svc_rqst) (svc_rqst->rq_xprt->xpt_net) | ||
| 282 | |||
| 281 | /* | 283 | /* |
| 282 | * Rigorous type checking on sockaddr type conversions | 284 | * Rigorous type checking on sockaddr type conversions |
| 283 | */ | 285 | */ |
diff --git a/include/linux/thermal.h b/include/linux/thermal.h index cfc8d908892e..4b94a61955df 100644 --- a/include/linux/thermal.h +++ b/include/linux/thermal.h | |||
| @@ -151,7 +151,7 @@ enum { | |||
| 151 | }; | 151 | }; |
| 152 | #define THERMAL_GENL_CMD_MAX (__THERMAL_GENL_CMD_MAX - 1) | 152 | #define THERMAL_GENL_CMD_MAX (__THERMAL_GENL_CMD_MAX - 1) |
| 153 | 153 | ||
| 154 | struct thermal_zone_device *thermal_zone_device_register(char *, int, int, | 154 | struct thermal_zone_device *thermal_zone_device_register(const char *, int, int, |
| 155 | void *, const struct thermal_zone_device_ops *, int tc1, | 155 | void *, const struct thermal_zone_device_ops *, int tc1, |
| 156 | int tc2, int passive_freq, int polling_freq); | 156 | int tc2, int passive_freq, int polling_freq); |
| 157 | void thermal_zone_device_unregister(struct thermal_zone_device *); | 157 | void thermal_zone_device_unregister(struct thermal_zone_device *); |
diff --git a/include/linux/videodev2.h b/include/linux/videodev2.h index 5d78910f926c..7a147c8299ab 100644 --- a/include/linux/videodev2.h +++ b/include/linux/videodev2.h | |||
| @@ -274,6 +274,10 @@ struct v4l2_capability { | |||
| 274 | #define V4L2_CAP_VIDEO_CAPTURE_MPLANE 0x00001000 | 274 | #define V4L2_CAP_VIDEO_CAPTURE_MPLANE 0x00001000 |
| 275 | /* Is a video output device that supports multiplanar formats */ | 275 | /* Is a video output device that supports multiplanar formats */ |
| 276 | #define V4L2_CAP_VIDEO_OUTPUT_MPLANE 0x00002000 | 276 | #define V4L2_CAP_VIDEO_OUTPUT_MPLANE 0x00002000 |
| 277 | /* Is a video mem-to-mem device that supports multiplanar formats */ | ||
| 278 | #define V4L2_CAP_VIDEO_M2M_MPLANE 0x00004000 | ||
| 279 | /* Is a video mem-to-mem device */ | ||
| 280 | #define V4L2_CAP_VIDEO_M2M 0x00008000 | ||
| 277 | 281 | ||
| 278 | #define V4L2_CAP_TUNER 0x00010000 /* has a tuner */ | 282 | #define V4L2_CAP_TUNER 0x00010000 /* has a tuner */ |
| 279 | #define V4L2_CAP_AUDIO 0x00020000 /* has audio support */ | 283 | #define V4L2_CAP_AUDIO 0x00020000 /* has audio support */ |
| @@ -2028,6 +2032,8 @@ struct v4l2_modulator { | |||
| 2028 | #define V4L2_TUNER_CAP_RDS 0x0080 | 2032 | #define V4L2_TUNER_CAP_RDS 0x0080 |
| 2029 | #define V4L2_TUNER_CAP_RDS_BLOCK_IO 0x0100 | 2033 | #define V4L2_TUNER_CAP_RDS_BLOCK_IO 0x0100 |
| 2030 | #define V4L2_TUNER_CAP_RDS_CONTROLS 0x0200 | 2034 | #define V4L2_TUNER_CAP_RDS_CONTROLS 0x0200 |
| 2035 | #define V4L2_TUNER_CAP_FREQ_BANDS 0x0400 | ||
| 2036 | #define V4L2_TUNER_CAP_HWSEEK_PROG_LIM 0x0800 | ||
| 2031 | 2037 | ||
| 2032 | /* Flags for the 'rxsubchans' field */ | 2038 | /* Flags for the 'rxsubchans' field */ |
| 2033 | #define V4L2_TUNER_SUB_MONO 0x0001 | 2039 | #define V4L2_TUNER_SUB_MONO 0x0001 |
| @@ -2046,19 +2052,36 @@ struct v4l2_modulator { | |||
| 2046 | #define V4L2_TUNER_MODE_LANG1_LANG2 0x0004 | 2052 | #define V4L2_TUNER_MODE_LANG1_LANG2 0x0004 |
| 2047 | 2053 | ||
| 2048 | struct v4l2_frequency { | 2054 | struct v4l2_frequency { |
| 2049 | __u32 tuner; | 2055 | __u32 tuner; |
| 2050 | __u32 type; /* enum v4l2_tuner_type */ | 2056 | __u32 type; /* enum v4l2_tuner_type */ |
| 2051 | __u32 frequency; | 2057 | __u32 frequency; |
| 2052 | __u32 reserved[8]; | 2058 | __u32 reserved[8]; |
| 2059 | }; | ||
| 2060 | |||
| 2061 | #define V4L2_BAND_MODULATION_VSB (1 << 1) | ||
| 2062 | #define V4L2_BAND_MODULATION_FM (1 << 2) | ||
| 2063 | #define V4L2_BAND_MODULATION_AM (1 << 3) | ||
| 2064 | |||
| 2065 | struct v4l2_frequency_band { | ||
| 2066 | __u32 tuner; | ||
| 2067 | __u32 type; /* enum v4l2_tuner_type */ | ||
| 2068 | __u32 index; | ||
| 2069 | __u32 capability; | ||
| 2070 | __u32 rangelow; | ||
| 2071 | __u32 rangehigh; | ||
| 2072 | __u32 modulation; | ||
| 2073 | __u32 reserved[9]; | ||
| 2053 | }; | 2074 | }; |
| 2054 | 2075 | ||
| 2055 | struct v4l2_hw_freq_seek { | 2076 | struct v4l2_hw_freq_seek { |
| 2056 | __u32 tuner; | 2077 | __u32 tuner; |
| 2057 | __u32 type; /* enum v4l2_tuner_type */ | 2078 | __u32 type; /* enum v4l2_tuner_type */ |
| 2058 | __u32 seek_upward; | 2079 | __u32 seek_upward; |
| 2059 | __u32 wrap_around; | 2080 | __u32 wrap_around; |
| 2060 | __u32 spacing; | 2081 | __u32 spacing; |
| 2061 | __u32 reserved[7]; | 2082 | __u32 rangelow; |
| 2083 | __u32 rangehigh; | ||
| 2084 | __u32 reserved[5]; | ||
| 2062 | }; | 2085 | }; |
| 2063 | 2086 | ||
| 2064 | /* | 2087 | /* |
| @@ -2626,6 +2649,10 @@ struct v4l2_create_buffers { | |||
| 2626 | #define VIDIOC_QUERY_DV_TIMINGS _IOR('V', 99, struct v4l2_dv_timings) | 2649 | #define VIDIOC_QUERY_DV_TIMINGS _IOR('V', 99, struct v4l2_dv_timings) |
| 2627 | #define VIDIOC_DV_TIMINGS_CAP _IOWR('V', 100, struct v4l2_dv_timings_cap) | 2650 | #define VIDIOC_DV_TIMINGS_CAP _IOWR('V', 100, struct v4l2_dv_timings_cap) |
| 2628 | 2651 | ||
| 2652 | /* Experimental, this ioctl may change over the next couple of kernel | ||
| 2653 | versions. */ | ||
| 2654 | #define VIDIOC_ENUM_FREQ_BANDS _IOWR('V', 101, struct v4l2_frequency_band) | ||
| 2655 | |||
| 2629 | /* Reminder: when adding new ioctls please add support for them to | 2656 | /* Reminder: when adding new ioctls please add support for them to |
| 2630 | drivers/media/video/v4l2-compat-ioctl32.c as well! */ | 2657 | drivers/media/video/v4l2-compat-ioctl32.c as well! */ |
| 2631 | 2658 | ||
