aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux
diff options
context:
space:
mode:
Diffstat (limited to 'include/linux')
-rw-r--r--include/linux/ceph/ceph_features.h27
-rw-r--r--include/linux/ceph/ceph_fs.h14
-rw-r--r--include/linux/ceph/decode.h49
-rw-r--r--include/linux/ceph/libceph.h10
-rw-r--r--include/linux/ceph/messenger.h60
-rw-r--r--include/linux/ceph/mon_client.h2
-rw-r--r--include/linux/ceph/msgpool.h3
-rw-r--r--include/linux/crush/crush.h8
-rw-r--r--include/linux/fs.h5
-rw-r--r--include/linux/i2c/twl.h2
-rw-r--r--include/linux/interrupt.h2
-rw-r--r--include/linux/irqdesc.h1
-rw-r--r--include/linux/lockd/lockd.h6
-rw-r--r--include/linux/nfs_fs.h6
-rw-r--r--include/linux/nfs_fs_sb.h7
-rw-r--r--include/linux/nfs_idmap.h2
-rw-r--r--include/linux/nfs_xdr.h9
-rw-r--r--include/linux/platform_data/lp8727.h (renamed from include/linux/lp8727.h)0
-rw-r--r--include/linux/power/charger-manager.h67
-rw-r--r--include/linux/power_supply.h13
-rw-r--r--include/linux/random.h6
-rw-r--r--include/linux/sunrpc/cache.h34
-rw-r--r--include/linux/sunrpc/svc.h2
-rw-r--r--include/linux/thermal.h2
-rw-r--r--include/linux/videodev2.h47
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 */
105static 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
130bad:
131 return ERR_PTR(-ERANGE);
132}
133
134/*
88 * struct ceph_timespec <-> struct timespec 135 * struct ceph_timespec <-> struct timespec
89 */ 136 */
90static inline void ceph_decode_timespec(struct timespec *ts, 137static 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 {
160struct ceph_snap_context { 154struct 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 */
132struct ceph_connection { 116struct 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);
207extern void ceph_msgr_exit(void); 195extern void ceph_msgr_exit(void);
208extern void ceph_msgr_flush(void); 196extern void ceph_msgr_flush(void);
209 197
210extern struct ceph_messenger *ceph_messenger_create( 198extern 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,
213extern void ceph_messenger_destroy(struct ceph_messenger *); 201 u32 required_features,
202 bool nocrc);
214 203
215extern void ceph_con_init(struct ceph_messenger *msgr, 204extern 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);
217extern void ceph_con_open(struct ceph_connection *con, 207extern 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);
219extern bool ceph_con_opened(struct ceph_connection *con); 210extern bool ceph_con_opened(struct ceph_connection *con);
220extern void ceph_con_close(struct ceph_connection *con); 211extern void ceph_con_close(struct ceph_connection *con);
221extern void ceph_con_send(struct ceph_connection *con, struct ceph_msg *msg); 212extern void ceph_con_send(struct ceph_connection *con, struct ceph_msg *msg);
222extern void ceph_con_revoke(struct ceph_connection *con, struct ceph_msg *msg); 213
223extern void ceph_con_revoke_message(struct ceph_connection *con, 214extern void ceph_msg_revoke(struct ceph_msg *msg);
224 struct ceph_msg *msg); 215extern void ceph_msg_revoke_incoming(struct ceph_msg *msg);
216
225extern void ceph_con_keepalive(struct ceph_connection *con); 217extern void ceph_con_keepalive(struct ceph_connection *con);
226extern struct ceph_connection *ceph_con_get(struct ceph_connection *con);
227extern void ceph_con_put(struct ceph_connection *con);
228 218
229extern struct ceph_msg *ceph_msg_new(int type, int front_len, gfp_t flags, 219extern 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 @@
11struct ceph_msgpool { 11struct 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
17extern int ceph_msgpool_init(struct ceph_msgpool *pool, 18extern 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);
20extern void ceph_msgpool_destroy(struct ceph_msgpool *pool); 21extern 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
1166void locks_start_grace(struct lock_manager *); 1166struct net;
1167void locks_start_grace(struct net *, struct lock_manager *);
1167void locks_end_grace(struct lock_manager *); 1168void locks_end_grace(struct lock_manager *);
1168int locks_in_grace(void); 1169int 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 {
555struct twl4030_bci_platform_data { 555struct 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 */
40struct irq_desc { 40struct 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 *);
270unsigned long nlmsvc_retry_blocked(void); 270unsigned long nlmsvc_retry_blocked(void);
271void nlmsvc_traverse_blocks(struct nlm_host *, struct nlm_file *, 271void 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 *);
281void nlm_release_file(struct nlm_file *); 281void nlm_release_file(struct nlm_file *);
282void nlmsvc_mark_resources(void); 282void nlmsvc_mark_resources(struct net *);
283void nlmsvc_free_host_resources(struct nlm_host *); 283void nlmsvc_free_host_resources(struct nlm_host *);
284void nlmsvc_invalidate_all(void); 284void 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 */
430extern const struct file_operations nfs_file_operations; 430extern const struct file_operations nfs_file_operations;
431#ifdef CONFIG_NFS_V4 431#if IS_ENABLED(CONFIG_NFS_V4)
432extern const struct file_operations nfs4_file_operations; 432extern const struct file_operations nfs4_file_operations;
433#endif /* CONFIG_NFS_V4 */ 433#endif /* CONFIG_NFS_V4 */
434extern const struct address_space_operations nfs_file_aops; 434extern const struct address_space_operations nfs_file_aops;
@@ -538,7 +538,7 @@ extern void nfs_writeback_done(struct rpc_task *, struct nfs_write_data *);
538extern int nfs_wb_all(struct inode *inode); 538extern int nfs_wb_all(struct inode *inode);
539extern int nfs_wb_page(struct inode *inode, struct page* page); 539extern int nfs_wb_page(struct inode *inode, struct page* page);
540extern int nfs_wb_page_cancel(struct inode *inode, struct page* page); 540extern 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)
542extern int nfs_commit_inode(struct inode *, int); 542extern int nfs_commit_inode(struct inode *, int);
543extern struct nfs_commit_data *nfs_commitdata_alloc(void); 543extern struct nfs_commit_data *nfs_commitdata_alloc(void);
544extern void nfs_commit_free(struct nfs_commit_data *data); 544extern 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;
69struct nfs_fattr; 69struct nfs_fattr;
70struct nfs4_string; 70struct nfs4_string;
71 71
72#ifdef CONFIG_NFS_V4 72#if IS_ENABLED(CONFIG_NFS_V4)
73int nfs_idmap_init(void); 73int nfs_idmap_init(void);
74void nfs_idmap_quit(void); 74void 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
829typedef u64 clientid4; 829typedef u64 clientid4;
830 830
@@ -1353,6 +1353,8 @@ struct nfs_renamedata {
1353struct nfs_access_entry; 1353struct nfs_access_entry;
1354struct nfs_client; 1354struct nfs_client;
1355struct rpc_timeout; 1355struct rpc_timeout;
1356struct nfs_subversion;
1357struct nfs_mount_info;
1356struct nfs_client_initdata; 1358struct nfs_client_initdata;
1357struct nfs_pageio_descriptor; 1359struct 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
20enum data_source { 21enum 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 */
84struct 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 */
119struct 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
51extern void rand_initialize_irq(int irq); 51extern void add_device_randomness(const void *, unsigned int);
52
53extern void add_input_randomness(unsigned int type, unsigned int code, 52extern void add_input_randomness(unsigned int type, unsigned int code,
54 unsigned int value); 53 unsigned int value);
55extern void add_interrupt_randomness(int irq); 54extern void add_interrupt_randomness(int irq, int irq_flags);
56 55
57extern void get_random_bytes(void *buf, int nbytes); 56extern void get_random_bytes(void *buf, int nbytes);
57extern void get_random_bytes_arch(void *buf, int nbytes);
58void generate_random_uuid(unsigned char uuid_out[16]); 58void 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);
217static inline int get_int(char **bpp, int *anint) 217static 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
233static 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
154struct thermal_zone_device *thermal_zone_device_register(char *, int, int, 154struct 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);
157void thermal_zone_device_unregister(struct thermal_zone_device *); 157void 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
2048struct v4l2_frequency { 2054struct 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
2065struct 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
2055struct v4l2_hw_freq_seek { 2076struct 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