diff options
Diffstat (limited to 'include/linux')
| -rw-r--r-- | include/linux/ceph/ceph_fs.h | 37 | ||||
| -rw-r--r-- | include/linux/ceph/libceph.h | 3 | ||||
| -rw-r--r-- | include/linux/ceph/messenger.h | 4 | ||||
| -rw-r--r-- | include/linux/ceph/mon_client.h | 9 | ||||
| -rw-r--r-- | include/linux/clk-private.h | 220 | ||||
| -rw-r--r-- | include/linux/clk-provider.h | 58 | ||||
| -rw-r--r-- | include/linux/clk.h | 45 | ||||
| -rw-r--r-- | include/linux/clk/sunxi.h | 22 | ||||
| -rw-r--r-- | include/linux/clk/tegra.h | 2 | ||||
| -rw-r--r-- | include/linux/clk/ti.h | 25 | ||||
| -rw-r--r-- | include/linux/compiler.h | 6 | ||||
| -rw-r--r-- | include/linux/dcache.h | 103 | ||||
| -rw-r--r-- | include/linux/hid-sensor-hub.h | 5 | ||||
| -rw-r--r-- | include/linux/i2c.h | 4 | ||||
| -rw-r--r-- | include/linux/irqchip/mips-gic.h | 1 | ||||
| -rw-r--r-- | include/linux/kdb.h | 8 | ||||
| -rw-r--r-- | include/linux/nfs_fs.h | 1 | ||||
| -rw-r--r-- | include/linux/nfs_xdr.h | 19 | ||||
| -rw-r--r-- | include/linux/nvme.h | 9 | ||||
| -rw-r--r-- | include/linux/platform_data/bfin_rotary.h | 117 | ||||
| -rw-r--r-- | include/linux/sched.h | 10 | ||||
| -rw-r--r-- | include/linux/sunrpc/metrics.h | 7 | ||||
| -rw-r--r-- | include/linux/vfio.h | 2 |
23 files changed, 388 insertions, 329 deletions
diff --git a/include/linux/ceph/ceph_fs.h b/include/linux/ceph/ceph_fs.h index c0dadaac26e3..31eb03d0c766 100644 --- a/include/linux/ceph/ceph_fs.h +++ b/include/linux/ceph/ceph_fs.h | |||
| @@ -158,17 +158,6 @@ enum { | |||
| 158 | }; | 158 | }; |
| 159 | 159 | ||
| 160 | 160 | ||
| 161 | /* pool operations */ | ||
| 162 | enum { | ||
| 163 | POOL_OP_CREATE = 0x01, | ||
| 164 | POOL_OP_DELETE = 0x02, | ||
| 165 | POOL_OP_AUID_CHANGE = 0x03, | ||
| 166 | POOL_OP_CREATE_SNAP = 0x11, | ||
| 167 | POOL_OP_DELETE_SNAP = 0x12, | ||
| 168 | POOL_OP_CREATE_UNMANAGED_SNAP = 0x21, | ||
| 169 | POOL_OP_DELETE_UNMANAGED_SNAP = 0x22, | ||
| 170 | }; | ||
| 171 | |||
| 172 | struct ceph_mon_request_header { | 161 | struct ceph_mon_request_header { |
| 173 | __le64 have_version; | 162 | __le64 have_version; |
| 174 | __le16 session_mon; | 163 | __le16 session_mon; |
| @@ -191,31 +180,6 @@ struct ceph_mon_statfs_reply { | |||
| 191 | struct ceph_statfs st; | 180 | struct ceph_statfs st; |
| 192 | } __attribute__ ((packed)); | 181 | } __attribute__ ((packed)); |
| 193 | 182 | ||
| 194 | const char *ceph_pool_op_name(int op); | ||
| 195 | |||
| 196 | struct ceph_mon_poolop { | ||
| 197 | struct ceph_mon_request_header monhdr; | ||
| 198 | struct ceph_fsid fsid; | ||
| 199 | __le32 pool; | ||
| 200 | __le32 op; | ||
| 201 | __le64 auid; | ||
| 202 | __le64 snapid; | ||
| 203 | __le32 name_len; | ||
| 204 | } __attribute__ ((packed)); | ||
| 205 | |||
| 206 | struct ceph_mon_poolop_reply { | ||
| 207 | struct ceph_mon_request_header monhdr; | ||
| 208 | struct ceph_fsid fsid; | ||
| 209 | __le32 reply_code; | ||
| 210 | __le32 epoch; | ||
| 211 | char has_data; | ||
| 212 | char data[0]; | ||
| 213 | } __attribute__ ((packed)); | ||
| 214 | |||
| 215 | struct ceph_mon_unmanaged_snap { | ||
| 216 | __le64 snapid; | ||
| 217 | } __attribute__ ((packed)); | ||
| 218 | |||
| 219 | struct ceph_osd_getmap { | 183 | struct ceph_osd_getmap { |
| 220 | struct ceph_mon_request_header monhdr; | 184 | struct ceph_mon_request_header monhdr; |
| 221 | struct ceph_fsid fsid; | 185 | struct ceph_fsid fsid; |
| @@ -307,6 +271,7 @@ enum { | |||
| 307 | CEPH_SESSION_RECALL_STATE, | 271 | CEPH_SESSION_RECALL_STATE, |
| 308 | CEPH_SESSION_FLUSHMSG, | 272 | CEPH_SESSION_FLUSHMSG, |
| 309 | CEPH_SESSION_FLUSHMSG_ACK, | 273 | CEPH_SESSION_FLUSHMSG_ACK, |
| 274 | CEPH_SESSION_FORCE_RO, | ||
| 310 | }; | 275 | }; |
| 311 | 276 | ||
| 312 | extern const char *ceph_session_op_name(int op); | 277 | extern const char *ceph_session_op_name(int op); |
diff --git a/include/linux/ceph/libceph.h b/include/linux/ceph/libceph.h index 8b11a79ca1cb..16fff9608848 100644 --- a/include/linux/ceph/libceph.h +++ b/include/linux/ceph/libceph.h | |||
| @@ -30,8 +30,9 @@ | |||
| 30 | #define CEPH_OPT_MYIP (1<<2) /* specified my ip */ | 30 | #define CEPH_OPT_MYIP (1<<2) /* specified my ip */ |
| 31 | #define CEPH_OPT_NOCRC (1<<3) /* no data crc on writes */ | 31 | #define CEPH_OPT_NOCRC (1<<3) /* no data crc on writes */ |
| 32 | #define CEPH_OPT_NOMSGAUTH (1<<4) /* not require cephx message signature */ | 32 | #define CEPH_OPT_NOMSGAUTH (1<<4) /* not require cephx message signature */ |
| 33 | #define CEPH_OPT_TCP_NODELAY (1<<5) /* TCP_NODELAY on TCP sockets */ | ||
| 33 | 34 | ||
| 34 | #define CEPH_OPT_DEFAULT (0) | 35 | #define CEPH_OPT_DEFAULT (CEPH_OPT_TCP_NODELAY) |
| 35 | 36 | ||
| 36 | #define ceph_set_opt(client, opt) \ | 37 | #define ceph_set_opt(client, opt) \ |
| 37 | (client)->options->flags |= CEPH_OPT_##opt; | 38 | (client)->options->flags |= CEPH_OPT_##opt; |
diff --git a/include/linux/ceph/messenger.h b/include/linux/ceph/messenger.h index d9d396c16503..e15499422fdc 100644 --- a/include/linux/ceph/messenger.h +++ b/include/linux/ceph/messenger.h | |||
| @@ -57,6 +57,7 @@ struct ceph_messenger { | |||
| 57 | 57 | ||
| 58 | atomic_t stopping; | 58 | atomic_t stopping; |
| 59 | bool nocrc; | 59 | bool nocrc; |
| 60 | bool tcp_nodelay; | ||
| 60 | 61 | ||
| 61 | /* | 62 | /* |
| 62 | * the global_seq counts connections i (attempt to) initiate | 63 | * the global_seq counts connections i (attempt to) initiate |
| @@ -264,7 +265,8 @@ extern void ceph_messenger_init(struct ceph_messenger *msgr, | |||
| 264 | struct ceph_entity_addr *myaddr, | 265 | struct ceph_entity_addr *myaddr, |
| 265 | u64 supported_features, | 266 | u64 supported_features, |
| 266 | u64 required_features, | 267 | u64 required_features, |
| 267 | bool nocrc); | 268 | bool nocrc, |
| 269 | bool tcp_nodelay); | ||
| 268 | 270 | ||
| 269 | extern void ceph_con_init(struct ceph_connection *con, void *private, | 271 | extern void ceph_con_init(struct ceph_connection *con, void *private, |
| 270 | const struct ceph_connection_operations *ops, | 272 | const struct ceph_connection_operations *ops, |
diff --git a/include/linux/ceph/mon_client.h b/include/linux/ceph/mon_client.h index deb47e45ac7c..81810dc21f06 100644 --- a/include/linux/ceph/mon_client.h +++ b/include/linux/ceph/mon_client.h | |||
| @@ -40,7 +40,7 @@ struct ceph_mon_request { | |||
| 40 | }; | 40 | }; |
| 41 | 41 | ||
| 42 | /* | 42 | /* |
| 43 | * ceph_mon_generic_request is being used for the statfs, poolop and | 43 | * ceph_mon_generic_request is being used for the statfs and |
| 44 | * mon_get_version requests which are being done a bit differently | 44 | * mon_get_version requests which are being done a bit differently |
| 45 | * because we need to get data back to the caller | 45 | * because we need to get data back to the caller |
| 46 | */ | 46 | */ |
| @@ -50,7 +50,6 @@ struct ceph_mon_generic_request { | |||
| 50 | struct rb_node node; | 50 | struct rb_node node; |
| 51 | int result; | 51 | int result; |
| 52 | void *buf; | 52 | void *buf; |
| 53 | int buf_len; | ||
| 54 | struct completion completion; | 53 | struct completion completion; |
| 55 | struct ceph_msg *request; /* original request */ | 54 | struct ceph_msg *request; /* original request */ |
| 56 | struct ceph_msg *reply; /* and reply */ | 55 | struct ceph_msg *reply; /* and reply */ |
| @@ -117,10 +116,4 @@ extern int ceph_monc_open_session(struct ceph_mon_client *monc); | |||
| 117 | 116 | ||
| 118 | extern int ceph_monc_validate_auth(struct ceph_mon_client *monc); | 117 | extern int ceph_monc_validate_auth(struct ceph_mon_client *monc); |
| 119 | 118 | ||
| 120 | extern int ceph_monc_create_snapid(struct ceph_mon_client *monc, | ||
| 121 | u32 pool, u64 *snapid); | ||
| 122 | |||
| 123 | extern int ceph_monc_delete_snapid(struct ceph_mon_client *monc, | ||
| 124 | u32 pool, u64 snapid); | ||
| 125 | |||
| 126 | #endif | 119 | #endif |
diff --git a/include/linux/clk-private.h b/include/linux/clk-private.h deleted file mode 100644 index 0ca5f6046920..000000000000 --- a/include/linux/clk-private.h +++ /dev/null | |||
| @@ -1,220 +0,0 @@ | |||
| 1 | /* | ||
| 2 | * linux/include/linux/clk-private.h | ||
| 3 | * | ||
| 4 | * Copyright (c) 2010-2011 Jeremy Kerr <jeremy.kerr@canonical.com> | ||
| 5 | * Copyright (C) 2011-2012 Linaro Ltd <mturquette@linaro.org> | ||
| 6 | * | ||
| 7 | * This program is free software; you can redistribute it and/or modify | ||
| 8 | * it under the terms of the GNU General Public License version 2 as | ||
| 9 | * published by the Free Software Foundation. | ||
| 10 | */ | ||
| 11 | #ifndef __LINUX_CLK_PRIVATE_H | ||
| 12 | #define __LINUX_CLK_PRIVATE_H | ||
| 13 | |||
| 14 | #include <linux/clk-provider.h> | ||
| 15 | #include <linux/kref.h> | ||
| 16 | #include <linux/list.h> | ||
| 17 | |||
| 18 | /* | ||
| 19 | * WARNING: Do not include clk-private.h from any file that implements struct | ||
| 20 | * clk_ops. Doing so is a layering violation! | ||
| 21 | * | ||
| 22 | * This header exists only to allow for statically initialized clock data. Any | ||
| 23 | * static clock data must be defined in a separate file from the logic that | ||
| 24 | * implements the clock operations for that same data. | ||
| 25 | */ | ||
| 26 | |||
| 27 | #ifdef CONFIG_COMMON_CLK | ||
| 28 | |||
| 29 | struct module; | ||
| 30 | |||
| 31 | struct clk { | ||
| 32 | const char *name; | ||
| 33 | const struct clk_ops *ops; | ||
| 34 | struct clk_hw *hw; | ||
| 35 | struct module *owner; | ||
| 36 | struct clk *parent; | ||
| 37 | const char **parent_names; | ||
| 38 | struct clk **parents; | ||
| 39 | u8 num_parents; | ||
| 40 | u8 new_parent_index; | ||
| 41 | unsigned long rate; | ||
| 42 | unsigned long new_rate; | ||
| 43 | struct clk *new_parent; | ||
| 44 | struct clk *new_child; | ||
| 45 | unsigned long flags; | ||
| 46 | unsigned int enable_count; | ||
| 47 | unsigned int prepare_count; | ||
| 48 | unsigned long accuracy; | ||
| 49 | int phase; | ||
| 50 | struct hlist_head children; | ||
| 51 | struct hlist_node child_node; | ||
| 52 | struct hlist_node debug_node; | ||
| 53 | unsigned int notifier_count; | ||
| 54 | #ifdef CONFIG_DEBUG_FS | ||
| 55 | struct dentry *dentry; | ||
| 56 | #endif | ||
| 57 | struct kref ref; | ||
| 58 | }; | ||
| 59 | |||
| 60 | /* | ||
| 61 | * DOC: Basic clock implementations common to many platforms | ||
| 62 | * | ||
| 63 | * Each basic clock hardware type is comprised of a structure describing the | ||
| 64 | * clock hardware, implementations of the relevant callbacks in struct clk_ops, | ||
| 65 | * unique flags for that hardware type, a registration function and an | ||
| 66 | * alternative macro for static initialization | ||
| 67 | */ | ||
| 68 | |||
| 69 | #define DEFINE_CLK(_name, _ops, _flags, _parent_names, \ | ||
| 70 | _parents) \ | ||
| 71 | static struct clk _name = { \ | ||
| 72 | .name = #_name, \ | ||
| 73 | .ops = &_ops, \ | ||
| 74 | .hw = &_name##_hw.hw, \ | ||
| 75 | .parent_names = _parent_names, \ | ||
| 76 | .num_parents = ARRAY_SIZE(_parent_names), \ | ||
| 77 | .parents = _parents, \ | ||
| 78 | .flags = _flags | CLK_IS_BASIC, \ | ||
| 79 | } | ||
| 80 | |||
| 81 | #define DEFINE_CLK_FIXED_RATE(_name, _flags, _rate, \ | ||
| 82 | _fixed_rate_flags) \ | ||
| 83 | static struct clk _name; \ | ||
| 84 | static const char *_name##_parent_names[] = {}; \ | ||
| 85 | static struct clk_fixed_rate _name##_hw = { \ | ||
| 86 | .hw = { \ | ||
| 87 | .clk = &_name, \ | ||
| 88 | }, \ | ||
| 89 | .fixed_rate = _rate, \ | ||
| 90 | .flags = _fixed_rate_flags, \ | ||
| 91 | }; \ | ||
| 92 | DEFINE_CLK(_name, clk_fixed_rate_ops, _flags, \ | ||
| 93 | _name##_parent_names, NULL); | ||
| 94 | |||
| 95 | #define DEFINE_CLK_GATE(_name, _parent_name, _parent_ptr, \ | ||
| 96 | _flags, _reg, _bit_idx, \ | ||
| 97 | _gate_flags, _lock) \ | ||
| 98 | static struct clk _name; \ | ||
| 99 | static const char *_name##_parent_names[] = { \ | ||
| 100 | _parent_name, \ | ||
| 101 | }; \ | ||
| 102 | static struct clk *_name##_parents[] = { \ | ||
| 103 | _parent_ptr, \ | ||
| 104 | }; \ | ||
| 105 | static struct clk_gate _name##_hw = { \ | ||
| 106 | .hw = { \ | ||
| 107 | .clk = &_name, \ | ||
| 108 | }, \ | ||
| 109 | .reg = _reg, \ | ||
| 110 | .bit_idx = _bit_idx, \ | ||
| 111 | .flags = _gate_flags, \ | ||
| 112 | .lock = _lock, \ | ||
| 113 | }; \ | ||
| 114 | DEFINE_CLK(_name, clk_gate_ops, _flags, \ | ||
| 115 | _name##_parent_names, _name##_parents); | ||
| 116 | |||
| 117 | #define _DEFINE_CLK_DIVIDER(_name, _parent_name, _parent_ptr, \ | ||
| 118 | _flags, _reg, _shift, _width, \ | ||
| 119 | _divider_flags, _table, _lock) \ | ||
| 120 | static struct clk _name; \ | ||
| 121 | static const char *_name##_parent_names[] = { \ | ||
| 122 | _parent_name, \ | ||
| 123 | }; \ | ||
| 124 | static struct clk *_name##_parents[] = { \ | ||
| 125 | _parent_ptr, \ | ||
| 126 | }; \ | ||
| 127 | static struct clk_divider _name##_hw = { \ | ||
| 128 | .hw = { \ | ||
| 129 | .clk = &_name, \ | ||
| 130 | }, \ | ||
| 131 | .reg = _reg, \ | ||
| 132 | .shift = _shift, \ | ||
| 133 | .width = _width, \ | ||
| 134 | .flags = _divider_flags, \ | ||
| 135 | .table = _table, \ | ||
| 136 | .lock = _lock, \ | ||
| 137 | }; \ | ||
| 138 | DEFINE_CLK(_name, clk_divider_ops, _flags, \ | ||
| 139 | _name##_parent_names, _name##_parents); | ||
| 140 | |||
| 141 | #define DEFINE_CLK_DIVIDER(_name, _parent_name, _parent_ptr, \ | ||
| 142 | _flags, _reg, _shift, _width, \ | ||
| 143 | _divider_flags, _lock) \ | ||
| 144 | _DEFINE_CLK_DIVIDER(_name, _parent_name, _parent_ptr, \ | ||
| 145 | _flags, _reg, _shift, _width, \ | ||
| 146 | _divider_flags, NULL, _lock) | ||
| 147 | |||
| 148 | #define DEFINE_CLK_DIVIDER_TABLE(_name, _parent_name, \ | ||
| 149 | _parent_ptr, _flags, _reg, \ | ||
| 150 | _shift, _width, _divider_flags, \ | ||
| 151 | _table, _lock) \ | ||
| 152 | _DEFINE_CLK_DIVIDER(_name, _parent_name, _parent_ptr, \ | ||
| 153 | _flags, _reg, _shift, _width, \ | ||
| 154 | _divider_flags, _table, _lock) \ | ||
| 155 | |||
| 156 | #define DEFINE_CLK_MUX(_name, _parent_names, _parents, _flags, \ | ||
| 157 | _reg, _shift, _width, \ | ||
| 158 | _mux_flags, _lock) \ | ||
| 159 | static struct clk _name; \ | ||
| 160 | static struct clk_mux _name##_hw = { \ | ||
| 161 | .hw = { \ | ||
| 162 | .clk = &_name, \ | ||
| 163 | }, \ | ||
| 164 | .reg = _reg, \ | ||
| 165 | .shift = _shift, \ | ||
| 166 | .mask = BIT(_width) - 1, \ | ||
| 167 | .flags = _mux_flags, \ | ||
| 168 | .lock = _lock, \ | ||
| 169 | }; \ | ||
| 170 | DEFINE_CLK(_name, clk_mux_ops, _flags, _parent_names, \ | ||
| 171 | _parents); | ||
| 172 | |||
| 173 | #define DEFINE_CLK_FIXED_FACTOR(_name, _parent_name, \ | ||
| 174 | _parent_ptr, _flags, \ | ||
| 175 | _mult, _div) \ | ||
| 176 | static struct clk _name; \ | ||
| 177 | static const char *_name##_parent_names[] = { \ | ||
| 178 | _parent_name, \ | ||
| 179 | }; \ | ||
| 180 | static struct clk *_name##_parents[] = { \ | ||
| 181 | _parent_ptr, \ | ||
| 182 | }; \ | ||
| 183 | static struct clk_fixed_factor _name##_hw = { \ | ||
| 184 | .hw = { \ | ||
| 185 | .clk = &_name, \ | ||
| 186 | }, \ | ||
| 187 | .mult = _mult, \ | ||
| 188 | .div = _div, \ | ||
| 189 | }; \ | ||
| 190 | DEFINE_CLK(_name, clk_fixed_factor_ops, _flags, \ | ||
| 191 | _name##_parent_names, _name##_parents); | ||
| 192 | |||
| 193 | /** | ||
| 194 | * __clk_init - initialize the data structures in a struct clk | ||
| 195 | * @dev: device initializing this clk, placeholder for now | ||
| 196 | * @clk: clk being initialized | ||
| 197 | * | ||
| 198 | * Initializes the lists in struct clk, queries the hardware for the | ||
| 199 | * parent and rate and sets them both. | ||
| 200 | * | ||
| 201 | * Any struct clk passed into __clk_init must have the following members | ||
| 202 | * populated: | ||
| 203 | * .name | ||
| 204 | * .ops | ||
| 205 | * .hw | ||
| 206 | * .parent_names | ||
| 207 | * .num_parents | ||
| 208 | * .flags | ||
| 209 | * | ||
| 210 | * It is not necessary to call clk_register if __clk_init is used directly with | ||
| 211 | * statically initialized clock data. | ||
| 212 | * | ||
| 213 | * Returns 0 on success, otherwise an error code. | ||
| 214 | */ | ||
| 215 | int __clk_init(struct device *dev, struct clk *clk); | ||
| 216 | |||
| 217 | struct clk *__clk_register(struct device *dev, struct clk_hw *hw); | ||
| 218 | |||
| 219 | #endif /* CONFIG_COMMON_CLK */ | ||
| 220 | #endif /* CLK_PRIVATE_H */ | ||
diff --git a/include/linux/clk-provider.h b/include/linux/clk-provider.h index d936409520f8..5591ea71a8d1 100644 --- a/include/linux/clk-provider.h +++ b/include/linux/clk-provider.h | |||
| @@ -33,6 +33,7 @@ | |||
| 33 | #define CLK_GET_ACCURACY_NOCACHE BIT(8) /* do not use the cached clk accuracy */ | 33 | #define CLK_GET_ACCURACY_NOCACHE BIT(8) /* do not use the cached clk accuracy */ |
| 34 | 34 | ||
| 35 | struct clk_hw; | 35 | struct clk_hw; |
| 36 | struct clk_core; | ||
| 36 | struct dentry; | 37 | struct dentry; |
| 37 | 38 | ||
| 38 | /** | 39 | /** |
| @@ -174,9 +175,12 @@ struct clk_ops { | |||
| 174 | unsigned long parent_rate); | 175 | unsigned long parent_rate); |
| 175 | long (*round_rate)(struct clk_hw *hw, unsigned long rate, | 176 | long (*round_rate)(struct clk_hw *hw, unsigned long rate, |
| 176 | unsigned long *parent_rate); | 177 | unsigned long *parent_rate); |
| 177 | long (*determine_rate)(struct clk_hw *hw, unsigned long rate, | 178 | long (*determine_rate)(struct clk_hw *hw, |
| 178 | unsigned long *best_parent_rate, | 179 | unsigned long rate, |
| 179 | struct clk_hw **best_parent_hw); | 180 | unsigned long min_rate, |
| 181 | unsigned long max_rate, | ||
| 182 | unsigned long *best_parent_rate, | ||
| 183 | struct clk_hw **best_parent_hw); | ||
| 180 | int (*set_parent)(struct clk_hw *hw, u8 index); | 184 | int (*set_parent)(struct clk_hw *hw, u8 index); |
| 181 | u8 (*get_parent)(struct clk_hw *hw); | 185 | u8 (*get_parent)(struct clk_hw *hw); |
| 182 | int (*set_rate)(struct clk_hw *hw, unsigned long rate, | 186 | int (*set_rate)(struct clk_hw *hw, unsigned long rate, |
| @@ -216,13 +220,17 @@ struct clk_init_data { | |||
| 216 | * clk_foo and then referenced by the struct clk instance that uses struct | 220 | * clk_foo and then referenced by the struct clk instance that uses struct |
| 217 | * clk_foo's clk_ops | 221 | * clk_foo's clk_ops |
| 218 | * | 222 | * |
| 219 | * @clk: pointer to the struct clk instance that points back to this struct | 223 | * @core: pointer to the struct clk_core instance that points back to this |
| 220 | * clk_hw instance | 224 | * struct clk_hw instance |
| 225 | * | ||
| 226 | * @clk: pointer to the per-user struct clk instance that can be used to call | ||
| 227 | * into the clk API | ||
| 221 | * | 228 | * |
| 222 | * @init: pointer to struct clk_init_data that contains the init data shared | 229 | * @init: pointer to struct clk_init_data that contains the init data shared |
| 223 | * with the common clock framework. | 230 | * with the common clock framework. |
| 224 | */ | 231 | */ |
| 225 | struct clk_hw { | 232 | struct clk_hw { |
| 233 | struct clk_core *core; | ||
| 226 | struct clk *clk; | 234 | struct clk *clk; |
| 227 | const struct clk_init_data *init; | 235 | const struct clk_init_data *init; |
| 228 | }; | 236 | }; |
| @@ -294,6 +302,7 @@ struct clk *clk_register_gate(struct device *dev, const char *name, | |||
| 294 | const char *parent_name, unsigned long flags, | 302 | const char *parent_name, unsigned long flags, |
| 295 | void __iomem *reg, u8 bit_idx, | 303 | void __iomem *reg, u8 bit_idx, |
| 296 | u8 clk_gate_flags, spinlock_t *lock); | 304 | u8 clk_gate_flags, spinlock_t *lock); |
| 305 | void clk_unregister_gate(struct clk *clk); | ||
| 297 | 306 | ||
| 298 | struct clk_div_table { | 307 | struct clk_div_table { |
| 299 | unsigned int val; | 308 | unsigned int val; |
| @@ -352,6 +361,17 @@ struct clk_divider { | |||
| 352 | #define CLK_DIVIDER_READ_ONLY BIT(5) | 361 | #define CLK_DIVIDER_READ_ONLY BIT(5) |
| 353 | 362 | ||
| 354 | extern const struct clk_ops clk_divider_ops; | 363 | extern const struct clk_ops clk_divider_ops; |
| 364 | |||
| 365 | unsigned long divider_recalc_rate(struct clk_hw *hw, unsigned long parent_rate, | ||
| 366 | unsigned int val, const struct clk_div_table *table, | ||
| 367 | unsigned long flags); | ||
| 368 | long divider_round_rate(struct clk_hw *hw, unsigned long rate, | ||
| 369 | unsigned long *prate, const struct clk_div_table *table, | ||
| 370 | u8 width, unsigned long flags); | ||
| 371 | int divider_get_val(unsigned long rate, unsigned long parent_rate, | ||
| 372 | const struct clk_div_table *table, u8 width, | ||
| 373 | unsigned long flags); | ||
| 374 | |||
| 355 | struct clk *clk_register_divider(struct device *dev, const char *name, | 375 | struct clk *clk_register_divider(struct device *dev, const char *name, |
| 356 | const char *parent_name, unsigned long flags, | 376 | const char *parent_name, unsigned long flags, |
| 357 | void __iomem *reg, u8 shift, u8 width, | 377 | void __iomem *reg, u8 shift, u8 width, |
| @@ -361,6 +381,7 @@ struct clk *clk_register_divider_table(struct device *dev, const char *name, | |||
| 361 | void __iomem *reg, u8 shift, u8 width, | 381 | void __iomem *reg, u8 shift, u8 width, |
| 362 | u8 clk_divider_flags, const struct clk_div_table *table, | 382 | u8 clk_divider_flags, const struct clk_div_table *table, |
| 363 | spinlock_t *lock); | 383 | spinlock_t *lock); |
| 384 | void clk_unregister_divider(struct clk *clk); | ||
| 364 | 385 | ||
| 365 | /** | 386 | /** |
| 366 | * struct clk_mux - multiplexer clock | 387 | * struct clk_mux - multiplexer clock |
| @@ -382,6 +403,8 @@ struct clk *clk_register_divider_table(struct device *dev, const char *name, | |||
| 382 | * register, and mask of mux bits are in higher 16-bit of this register. | 403 | * register, and mask of mux bits are in higher 16-bit of this register. |
| 383 | * While setting the mux bits, higher 16-bit should also be updated to | 404 | * While setting the mux bits, higher 16-bit should also be updated to |
| 384 | * indicate changing mux bits. | 405 | * indicate changing mux bits. |
| 406 | * CLK_MUX_ROUND_CLOSEST - Use the parent rate that is closest to the desired | ||
| 407 | * frequency. | ||
| 385 | */ | 408 | */ |
| 386 | struct clk_mux { | 409 | struct clk_mux { |
| 387 | struct clk_hw hw; | 410 | struct clk_hw hw; |
| @@ -396,7 +419,8 @@ struct clk_mux { | |||
| 396 | #define CLK_MUX_INDEX_ONE BIT(0) | 419 | #define CLK_MUX_INDEX_ONE BIT(0) |
| 397 | #define CLK_MUX_INDEX_BIT BIT(1) | 420 | #define CLK_MUX_INDEX_BIT BIT(1) |
| 398 | #define CLK_MUX_HIWORD_MASK BIT(2) | 421 | #define CLK_MUX_HIWORD_MASK BIT(2) |
| 399 | #define CLK_MUX_READ_ONLY BIT(3) /* mux setting cannot be changed */ | 422 | #define CLK_MUX_READ_ONLY BIT(3) /* mux can't be changed */ |
| 423 | #define CLK_MUX_ROUND_CLOSEST BIT(4) | ||
| 400 | 424 | ||
| 401 | extern const struct clk_ops clk_mux_ops; | 425 | extern const struct clk_ops clk_mux_ops; |
| 402 | extern const struct clk_ops clk_mux_ro_ops; | 426 | extern const struct clk_ops clk_mux_ro_ops; |
| @@ -411,6 +435,8 @@ struct clk *clk_register_mux_table(struct device *dev, const char *name, | |||
| 411 | void __iomem *reg, u8 shift, u32 mask, | 435 | void __iomem *reg, u8 shift, u32 mask, |
| 412 | u8 clk_mux_flags, u32 *table, spinlock_t *lock); | 436 | u8 clk_mux_flags, u32 *table, spinlock_t *lock); |
| 413 | 437 | ||
| 438 | void clk_unregister_mux(struct clk *clk); | ||
| 439 | |||
| 414 | void of_fixed_factor_clk_setup(struct device_node *node); | 440 | void of_fixed_factor_clk_setup(struct device_node *node); |
| 415 | 441 | ||
| 416 | /** | 442 | /** |
| @@ -550,15 +576,29 @@ bool __clk_is_prepared(struct clk *clk); | |||
| 550 | bool __clk_is_enabled(struct clk *clk); | 576 | bool __clk_is_enabled(struct clk *clk); |
| 551 | struct clk *__clk_lookup(const char *name); | 577 | struct clk *__clk_lookup(const char *name); |
| 552 | long __clk_mux_determine_rate(struct clk_hw *hw, unsigned long rate, | 578 | long __clk_mux_determine_rate(struct clk_hw *hw, unsigned long rate, |
| 579 | unsigned long min_rate, | ||
| 580 | unsigned long max_rate, | ||
| 553 | unsigned long *best_parent_rate, | 581 | unsigned long *best_parent_rate, |
| 554 | struct clk_hw **best_parent_p); | 582 | struct clk_hw **best_parent_p); |
| 583 | unsigned long __clk_determine_rate(struct clk_hw *core, | ||
| 584 | unsigned long rate, | ||
| 585 | unsigned long min_rate, | ||
| 586 | unsigned long max_rate); | ||
| 587 | long __clk_mux_determine_rate_closest(struct clk_hw *hw, unsigned long rate, | ||
| 588 | unsigned long min_rate, | ||
| 589 | unsigned long max_rate, | ||
| 590 | unsigned long *best_parent_rate, | ||
| 591 | struct clk_hw **best_parent_p); | ||
| 592 | |||
| 593 | static inline void __clk_hw_set_clk(struct clk_hw *dst, struct clk_hw *src) | ||
| 594 | { | ||
| 595 | dst->clk = src->clk; | ||
| 596 | dst->core = src->core; | ||
| 597 | } | ||
| 555 | 598 | ||
| 556 | /* | 599 | /* |
| 557 | * FIXME clock api without lock protection | 600 | * FIXME clock api without lock protection |
| 558 | */ | 601 | */ |
| 559 | int __clk_prepare(struct clk *clk); | ||
| 560 | void __clk_unprepare(struct clk *clk); | ||
| 561 | void __clk_reparent(struct clk *clk, struct clk *new_parent); | ||
| 562 | unsigned long __clk_round_rate(struct clk *clk, unsigned long rate); | 602 | unsigned long __clk_round_rate(struct clk *clk, unsigned long rate); |
| 563 | 603 | ||
| 564 | struct of_device_id; | 604 | struct of_device_id; |
diff --git a/include/linux/clk.h b/include/linux/clk.h index c7f258a81761..8381bbfbc308 100644 --- a/include/linux/clk.h +++ b/include/linux/clk.h | |||
| @@ -302,6 +302,46 @@ long clk_round_rate(struct clk *clk, unsigned long rate); | |||
| 302 | int clk_set_rate(struct clk *clk, unsigned long rate); | 302 | int clk_set_rate(struct clk *clk, unsigned long rate); |
| 303 | 303 | ||
| 304 | /** | 304 | /** |
| 305 | * clk_has_parent - check if a clock is a possible parent for another | ||
| 306 | * @clk: clock source | ||
| 307 | * @parent: parent clock source | ||
| 308 | * | ||
| 309 | * This function can be used in drivers that need to check that a clock can be | ||
| 310 | * the parent of another without actually changing the parent. | ||
| 311 | * | ||
| 312 | * Returns true if @parent is a possible parent for @clk, false otherwise. | ||
| 313 | */ | ||
| 314 | bool clk_has_parent(struct clk *clk, struct clk *parent); | ||
| 315 | |||
| 316 | /** | ||
| 317 | * clk_set_rate_range - set a rate range for a clock source | ||
| 318 | * @clk: clock source | ||
| 319 | * @min: desired minimum clock rate in Hz, inclusive | ||
| 320 | * @max: desired maximum clock rate in Hz, inclusive | ||
| 321 | * | ||
| 322 | * Returns success (0) or negative errno. | ||
| 323 | */ | ||
| 324 | int clk_set_rate_range(struct clk *clk, unsigned long min, unsigned long max); | ||
| 325 | |||
| 326 | /** | ||
| 327 | * clk_set_min_rate - set a minimum clock rate for a clock source | ||
| 328 | * @clk: clock source | ||
| 329 | * @rate: desired minimum clock rate in Hz, inclusive | ||
| 330 | * | ||
| 331 | * Returns success (0) or negative errno. | ||
| 332 | */ | ||
| 333 | int clk_set_min_rate(struct clk *clk, unsigned long rate); | ||
| 334 | |||
| 335 | /** | ||
| 336 | * clk_set_max_rate - set a maximum clock rate for a clock source | ||
| 337 | * @clk: clock source | ||
| 338 | * @rate: desired maximum clock rate in Hz, inclusive | ||
| 339 | * | ||
| 340 | * Returns success (0) or negative errno. | ||
| 341 | */ | ||
| 342 | int clk_set_max_rate(struct clk *clk, unsigned long rate); | ||
| 343 | |||
| 344 | /** | ||
| 305 | * clk_set_parent - set the parent clock source for this clock | 345 | * clk_set_parent - set the parent clock source for this clock |
| 306 | * @clk: clock source | 346 | * @clk: clock source |
| 307 | * @parent: parent clock source | 347 | * @parent: parent clock source |
| @@ -374,6 +414,11 @@ static inline long clk_round_rate(struct clk *clk, unsigned long rate) | |||
| 374 | return 0; | 414 | return 0; |
| 375 | } | 415 | } |
| 376 | 416 | ||
| 417 | static inline bool clk_has_parent(struct clk *clk, struct clk *parent) | ||
| 418 | { | ||
| 419 | return true; | ||
| 420 | } | ||
| 421 | |||
| 377 | static inline int clk_set_parent(struct clk *clk, struct clk *parent) | 422 | static inline int clk_set_parent(struct clk *clk, struct clk *parent) |
| 378 | { | 423 | { |
| 379 | return 0; | 424 | return 0; |
diff --git a/include/linux/clk/sunxi.h b/include/linux/clk/sunxi.h deleted file mode 100644 index aed28c4451d9..000000000000 --- a/include/linux/clk/sunxi.h +++ /dev/null | |||
| @@ -1,22 +0,0 @@ | |||
| 1 | /* | ||
| 2 | * Copyright 2013 - Hans de Goede <hdegoede@redhat.com> | ||
| 3 | * | ||
| 4 | * This program is free software; you can redistribute it and/or modify | ||
| 5 | * it under the terms of the GNU General Public License as published by | ||
| 6 | * the Free Software Foundation; either version 2 of the License, or | ||
| 7 | * (at your option) any later version. | ||
| 8 | * | ||
| 9 | * This program is distributed in the hope that it will be useful, | ||
| 10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| 12 | * GNU General Public License for more details. | ||
| 13 | */ | ||
| 14 | |||
| 15 | #ifndef __LINUX_CLK_SUNXI_H_ | ||
| 16 | #define __LINUX_CLK_SUNXI_H_ | ||
| 17 | |||
| 18 | #include <linux/clk.h> | ||
| 19 | |||
| 20 | void clk_sunxi_mmc_phase_control(struct clk *clk, u8 sample, u8 output); | ||
| 21 | |||
| 22 | #endif | ||
diff --git a/include/linux/clk/tegra.h b/include/linux/clk/tegra.h index 3ca9fca827a2..19c4208f4752 100644 --- a/include/linux/clk/tegra.h +++ b/include/linux/clk/tegra.h | |||
| @@ -120,6 +120,4 @@ static inline void tegra_cpu_clock_resume(void) | |||
| 120 | } | 120 | } |
| 121 | #endif | 121 | #endif |
| 122 | 122 | ||
| 123 | void tegra_clocks_apply_init_table(void); | ||
| 124 | |||
| 125 | #endif /* __LINUX_CLK_TEGRA_H_ */ | 123 | #endif /* __LINUX_CLK_TEGRA_H_ */ |
diff --git a/include/linux/clk/ti.h b/include/linux/clk/ti.h index 55ef529a0dbf..67844003493d 100644 --- a/include/linux/clk/ti.h +++ b/include/linux/clk/ti.h | |||
| @@ -15,6 +15,7 @@ | |||
| 15 | #ifndef __LINUX_CLK_TI_H__ | 15 | #ifndef __LINUX_CLK_TI_H__ |
| 16 | #define __LINUX_CLK_TI_H__ | 16 | #define __LINUX_CLK_TI_H__ |
| 17 | 17 | ||
| 18 | #include <linux/clk-provider.h> | ||
| 18 | #include <linux/clkdev.h> | 19 | #include <linux/clkdev.h> |
| 19 | 20 | ||
| 20 | /** | 21 | /** |
| @@ -217,6 +218,13 @@ struct ti_dt_clk { | |||
| 217 | /* Maximum number of clock memmaps */ | 218 | /* Maximum number of clock memmaps */ |
| 218 | #define CLK_MAX_MEMMAPS 4 | 219 | #define CLK_MAX_MEMMAPS 4 |
| 219 | 220 | ||
| 221 | /* Static memmap indices */ | ||
| 222 | enum { | ||
| 223 | TI_CLKM_CM = 0, | ||
| 224 | TI_CLKM_PRM, | ||
| 225 | TI_CLKM_SCRM, | ||
| 226 | }; | ||
| 227 | |||
| 220 | typedef void (*ti_of_clk_init_cb_t)(struct clk_hw *, struct device_node *); | 228 | typedef void (*ti_of_clk_init_cb_t)(struct clk_hw *, struct device_node *); |
| 221 | 229 | ||
| 222 | /** | 230 | /** |
| @@ -263,6 +271,8 @@ int omap3_noncore_dpll_set_rate_and_parent(struct clk_hw *hw, | |||
| 263 | u8 index); | 271 | u8 index); |
| 264 | long omap3_noncore_dpll_determine_rate(struct clk_hw *hw, | 272 | long omap3_noncore_dpll_determine_rate(struct clk_hw *hw, |
| 265 | unsigned long rate, | 273 | unsigned long rate, |
| 274 | unsigned long min_rate, | ||
| 275 | unsigned long max_rate, | ||
| 266 | unsigned long *best_parent_rate, | 276 | unsigned long *best_parent_rate, |
| 267 | struct clk_hw **best_parent_clk); | 277 | struct clk_hw **best_parent_clk); |
| 268 | unsigned long omap4_dpll_regm4xen_recalc(struct clk_hw *hw, | 278 | unsigned long omap4_dpll_regm4xen_recalc(struct clk_hw *hw, |
| @@ -272,6 +282,8 @@ long omap4_dpll_regm4xen_round_rate(struct clk_hw *hw, | |||
| 272 | unsigned long *parent_rate); | 282 | unsigned long *parent_rate); |
| 273 | long omap4_dpll_regm4xen_determine_rate(struct clk_hw *hw, | 283 | long omap4_dpll_regm4xen_determine_rate(struct clk_hw *hw, |
| 274 | unsigned long rate, | 284 | unsigned long rate, |
| 285 | unsigned long min_rate, | ||
| 286 | unsigned long max_rate, | ||
| 275 | unsigned long *best_parent_rate, | 287 | unsigned long *best_parent_rate, |
| 276 | struct clk_hw **best_parent_clk); | 288 | struct clk_hw **best_parent_clk); |
| 277 | u8 omap2_init_dpll_parent(struct clk_hw *hw); | 289 | u8 omap2_init_dpll_parent(struct clk_hw *hw); |
| @@ -348,4 +360,17 @@ extern const struct clk_hw_omap_ops clkhwops_omap3430es2_iclk_ssi_wait; | |||
| 348 | extern const struct clk_hw_omap_ops clkhwops_omap3430es2_iclk_dss_usbhost_wait; | 360 | extern const struct clk_hw_omap_ops clkhwops_omap3430es2_iclk_dss_usbhost_wait; |
| 349 | extern const struct clk_hw_omap_ops clkhwops_omap3430es2_iclk_hsotgusb_wait; | 361 | extern const struct clk_hw_omap_ops clkhwops_omap3430es2_iclk_hsotgusb_wait; |
| 350 | 362 | ||
| 363 | #ifdef CONFIG_ATAGS | ||
| 364 | int omap3430_clk_legacy_init(void); | ||
| 365 | int omap3430es1_clk_legacy_init(void); | ||
| 366 | int omap36xx_clk_legacy_init(void); | ||
| 367 | int am35xx_clk_legacy_init(void); | ||
| 368 | #else | ||
| 369 | static inline int omap3430_clk_legacy_init(void) { return -ENXIO; } | ||
| 370 | static inline int omap3430es1_clk_legacy_init(void) { return -ENXIO; } | ||
| 371 | static inline int omap36xx_clk_legacy_init(void) { return -ENXIO; } | ||
| 372 | static inline int am35xx_clk_legacy_init(void) { return -ENXIO; } | ||
| 373 | #endif | ||
| 374 | |||
| 375 | |||
| 351 | #endif | 376 | #endif |
diff --git a/include/linux/compiler.h b/include/linux/compiler.h index d1ec10a940ff..1b45e4a0519b 100644 --- a/include/linux/compiler.h +++ b/include/linux/compiler.h | |||
| @@ -202,7 +202,7 @@ static __always_inline void data_access_exceeds_word_size(void) | |||
| 202 | { | 202 | { |
| 203 | } | 203 | } |
| 204 | 204 | ||
| 205 | static __always_inline void __read_once_size(volatile void *p, void *res, int size) | 205 | static __always_inline void __read_once_size(const volatile void *p, void *res, int size) |
| 206 | { | 206 | { |
| 207 | switch (size) { | 207 | switch (size) { |
| 208 | case 1: *(__u8 *)res = *(volatile __u8 *)p; break; | 208 | case 1: *(__u8 *)res = *(volatile __u8 *)p; break; |
| @@ -259,10 +259,10 @@ static __always_inline void __write_once_size(volatile void *p, void *res, int s | |||
| 259 | */ | 259 | */ |
| 260 | 260 | ||
| 261 | #define READ_ONCE(x) \ | 261 | #define READ_ONCE(x) \ |
| 262 | ({ typeof(x) __val; __read_once_size(&x, &__val, sizeof(__val)); __val; }) | 262 | ({ union { typeof(x) __val; char __c[1]; } __u; __read_once_size(&(x), __u.__c, sizeof(x)); __u.__val; }) |
| 263 | 263 | ||
| 264 | #define WRITE_ONCE(x, val) \ | 264 | #define WRITE_ONCE(x, val) \ |
| 265 | ({ typeof(x) __val; __val = val; __write_once_size(&x, &__val, sizeof(__val)); __val; }) | 265 | ({ typeof(x) __val = (val); __write_once_size(&(x), &__val, sizeof(__val)); __val; }) |
| 266 | 266 | ||
| 267 | #endif /* __KERNEL__ */ | 267 | #endif /* __KERNEL__ */ |
| 268 | 268 | ||
diff --git a/include/linux/dcache.h b/include/linux/dcache.h index 92c08cf7670e..d8358799c594 100644 --- a/include/linux/dcache.h +++ b/include/linux/dcache.h | |||
| @@ -215,13 +215,16 @@ struct dentry_operations { | |||
| 215 | #define DCACHE_LRU_LIST 0x00080000 | 215 | #define DCACHE_LRU_LIST 0x00080000 |
| 216 | 216 | ||
| 217 | #define DCACHE_ENTRY_TYPE 0x00700000 | 217 | #define DCACHE_ENTRY_TYPE 0x00700000 |
| 218 | #define DCACHE_MISS_TYPE 0x00000000 /* Negative dentry */ | 218 | #define DCACHE_MISS_TYPE 0x00000000 /* Negative dentry (maybe fallthru to nowhere) */ |
| 219 | #define DCACHE_DIRECTORY_TYPE 0x00100000 /* Normal directory */ | 219 | #define DCACHE_WHITEOUT_TYPE 0x00100000 /* Whiteout dentry (stop pathwalk) */ |
| 220 | #define DCACHE_AUTODIR_TYPE 0x00200000 /* Lookupless directory (presumed automount) */ | 220 | #define DCACHE_DIRECTORY_TYPE 0x00200000 /* Normal directory */ |
| 221 | #define DCACHE_SYMLINK_TYPE 0x00300000 /* Symlink */ | 221 | #define DCACHE_AUTODIR_TYPE 0x00300000 /* Lookupless directory (presumed automount) */ |
| 222 | #define DCACHE_FILE_TYPE 0x00400000 /* Other file type */ | 222 | #define DCACHE_REGULAR_TYPE 0x00400000 /* Regular file type (or fallthru to such) */ |
| 223 | #define DCACHE_SPECIAL_TYPE 0x00500000 /* Other file type (or fallthru to such) */ | ||
| 224 | #define DCACHE_SYMLINK_TYPE 0x00600000 /* Symlink (or fallthru to such) */ | ||
| 223 | 225 | ||
| 224 | #define DCACHE_MAY_FREE 0x00800000 | 226 | #define DCACHE_MAY_FREE 0x00800000 |
| 227 | #define DCACHE_FALLTHRU 0x01000000 /* Fall through to lower layer */ | ||
| 225 | 228 | ||
| 226 | extern seqlock_t rename_lock; | 229 | extern seqlock_t rename_lock; |
| 227 | 230 | ||
| @@ -423,6 +426,16 @@ static inline unsigned __d_entry_type(const struct dentry *dentry) | |||
| 423 | return dentry->d_flags & DCACHE_ENTRY_TYPE; | 426 | return dentry->d_flags & DCACHE_ENTRY_TYPE; |
| 424 | } | 427 | } |
| 425 | 428 | ||
| 429 | static inline bool d_is_miss(const struct dentry *dentry) | ||
| 430 | { | ||
| 431 | return __d_entry_type(dentry) == DCACHE_MISS_TYPE; | ||
| 432 | } | ||
| 433 | |||
| 434 | static inline bool d_is_whiteout(const struct dentry *dentry) | ||
| 435 | { | ||
| 436 | return __d_entry_type(dentry) == DCACHE_WHITEOUT_TYPE; | ||
| 437 | } | ||
| 438 | |||
| 426 | static inline bool d_can_lookup(const struct dentry *dentry) | 439 | static inline bool d_can_lookup(const struct dentry *dentry) |
| 427 | { | 440 | { |
| 428 | return __d_entry_type(dentry) == DCACHE_DIRECTORY_TYPE; | 441 | return __d_entry_type(dentry) == DCACHE_DIRECTORY_TYPE; |
| @@ -443,14 +456,25 @@ static inline bool d_is_symlink(const struct dentry *dentry) | |||
| 443 | return __d_entry_type(dentry) == DCACHE_SYMLINK_TYPE; | 456 | return __d_entry_type(dentry) == DCACHE_SYMLINK_TYPE; |
| 444 | } | 457 | } |
| 445 | 458 | ||
| 459 | static inline bool d_is_reg(const struct dentry *dentry) | ||
| 460 | { | ||
| 461 | return __d_entry_type(dentry) == DCACHE_REGULAR_TYPE; | ||
| 462 | } | ||
| 463 | |||
| 464 | static inline bool d_is_special(const struct dentry *dentry) | ||
| 465 | { | ||
| 466 | return __d_entry_type(dentry) == DCACHE_SPECIAL_TYPE; | ||
| 467 | } | ||
| 468 | |||
| 446 | static inline bool d_is_file(const struct dentry *dentry) | 469 | static inline bool d_is_file(const struct dentry *dentry) |
| 447 | { | 470 | { |
| 448 | return __d_entry_type(dentry) == DCACHE_FILE_TYPE; | 471 | return d_is_reg(dentry) || d_is_special(dentry); |
| 449 | } | 472 | } |
| 450 | 473 | ||
| 451 | static inline bool d_is_negative(const struct dentry *dentry) | 474 | static inline bool d_is_negative(const struct dentry *dentry) |
| 452 | { | 475 | { |
| 453 | return __d_entry_type(dentry) == DCACHE_MISS_TYPE; | 476 | // TODO: check d_is_whiteout(dentry) also. |
| 477 | return d_is_miss(dentry); | ||
| 454 | } | 478 | } |
| 455 | 479 | ||
| 456 | static inline bool d_is_positive(const struct dentry *dentry) | 480 | static inline bool d_is_positive(const struct dentry *dentry) |
| @@ -458,10 +482,75 @@ static inline bool d_is_positive(const struct dentry *dentry) | |||
| 458 | return !d_is_negative(dentry); | 482 | return !d_is_negative(dentry); |
| 459 | } | 483 | } |
| 460 | 484 | ||
| 485 | extern void d_set_fallthru(struct dentry *dentry); | ||
| 486 | |||
| 487 | static inline bool d_is_fallthru(const struct dentry *dentry) | ||
| 488 | { | ||
| 489 | return dentry->d_flags & DCACHE_FALLTHRU; | ||
| 490 | } | ||
| 491 | |||
| 492 | |||
| 461 | extern int sysctl_vfs_cache_pressure; | 493 | extern int sysctl_vfs_cache_pressure; |
| 462 | 494 | ||
| 463 | static inline unsigned long vfs_pressure_ratio(unsigned long val) | 495 | static inline unsigned long vfs_pressure_ratio(unsigned long val) |
| 464 | { | 496 | { |
| 465 | return mult_frac(val, sysctl_vfs_cache_pressure, 100); | 497 | return mult_frac(val, sysctl_vfs_cache_pressure, 100); |
| 466 | } | 498 | } |
| 499 | |||
| 500 | /** | ||
| 501 | * d_inode - Get the actual inode of this dentry | ||
| 502 | * @dentry: The dentry to query | ||
| 503 | * | ||
| 504 | * This is the helper normal filesystems should use to get at their own inodes | ||
| 505 | * in their own dentries and ignore the layering superimposed upon them. | ||
| 506 | */ | ||
| 507 | static inline struct inode *d_inode(const struct dentry *dentry) | ||
| 508 | { | ||
| 509 | return dentry->d_inode; | ||
| 510 | } | ||
| 511 | |||
| 512 | /** | ||
| 513 | * d_inode_rcu - Get the actual inode of this dentry with ACCESS_ONCE() | ||
| 514 | * @dentry: The dentry to query | ||
| 515 | * | ||
| 516 | * This is the helper normal filesystems should use to get at their own inodes | ||
| 517 | * in their own dentries and ignore the layering superimposed upon them. | ||
| 518 | */ | ||
| 519 | static inline struct inode *d_inode_rcu(const struct dentry *dentry) | ||
| 520 | { | ||
| 521 | return ACCESS_ONCE(dentry->d_inode); | ||
| 522 | } | ||
| 523 | |||
| 524 | /** | ||
| 525 | * d_backing_inode - Get upper or lower inode we should be using | ||
| 526 | * @upper: The upper layer | ||
| 527 | * | ||
| 528 | * This is the helper that should be used to get at the inode that will be used | ||
| 529 | * if this dentry were to be opened as a file. The inode may be on the upper | ||
| 530 | * dentry or it may be on a lower dentry pinned by the upper. | ||
| 531 | * | ||
| 532 | * Normal filesystems should not use this to access their own inodes. | ||
| 533 | */ | ||
| 534 | static inline struct inode *d_backing_inode(const struct dentry *upper) | ||
| 535 | { | ||
| 536 | struct inode *inode = upper->d_inode; | ||
| 537 | |||
| 538 | return inode; | ||
| 539 | } | ||
| 540 | |||
| 541 | /** | ||
| 542 | * d_backing_dentry - Get upper or lower dentry we should be using | ||
| 543 | * @upper: The upper layer | ||
| 544 | * | ||
| 545 | * This is the helper that should be used to get the dentry of the inode that | ||
| 546 | * will be used if this dentry were opened as a file. It may be the upper | ||
| 547 | * dentry or it may be a lower dentry pinned by the upper. | ||
| 548 | * | ||
| 549 | * Normal filesystems should not use this to access their own dentries. | ||
| 550 | */ | ||
| 551 | static inline struct dentry *d_backing_dentry(struct dentry *upper) | ||
| 552 | { | ||
| 553 | return upper; | ||
| 554 | } | ||
| 555 | |||
| 467 | #endif /* __LINUX_DCACHE_H */ | 556 | #endif /* __LINUX_DCACHE_H */ |
diff --git a/include/linux/hid-sensor-hub.h b/include/linux/hid-sensor-hub.h index 51f7ccadf923..4173a8fdad9e 100644 --- a/include/linux/hid-sensor-hub.h +++ b/include/linux/hid-sensor-hub.h | |||
| @@ -33,6 +33,8 @@ | |||
| 33 | * @units: Measurment unit for this attribute. | 33 | * @units: Measurment unit for this attribute. |
| 34 | * @unit_expo: Exponent used in the data. | 34 | * @unit_expo: Exponent used in the data. |
| 35 | * @size: Size in bytes for data size. | 35 | * @size: Size in bytes for data size. |
| 36 | * @logical_minimum: Logical minimum value for this attribute. | ||
| 37 | * @logical_maximum: Logical maximum value for this attribute. | ||
| 36 | */ | 38 | */ |
| 37 | struct hid_sensor_hub_attribute_info { | 39 | struct hid_sensor_hub_attribute_info { |
| 38 | u32 usage_id; | 40 | u32 usage_id; |
| @@ -146,6 +148,7 @@ int sensor_hub_input_get_attribute_info(struct hid_sensor_hub_device *hsdev, | |||
| 146 | 148 | ||
| 147 | /** | 149 | /** |
| 148 | * sensor_hub_input_attr_get_raw_value() - Synchronous read request | 150 | * sensor_hub_input_attr_get_raw_value() - Synchronous read request |
| 151 | * @hsdev: Hub device instance. | ||
| 149 | * @usage_id: Attribute usage id of parent physical device as per spec | 152 | * @usage_id: Attribute usage id of parent physical device as per spec |
| 150 | * @attr_usage_id: Attribute usage id as per spec | 153 | * @attr_usage_id: Attribute usage id as per spec |
| 151 | * @report_id: Report id to look for | 154 | * @report_id: Report id to look for |
| @@ -160,6 +163,7 @@ int sensor_hub_input_attr_get_raw_value(struct hid_sensor_hub_device *hsdev, | |||
| 160 | u32 attr_usage_id, u32 report_id); | 163 | u32 attr_usage_id, u32 report_id); |
| 161 | /** | 164 | /** |
| 162 | * sensor_hub_set_feature() - Feature set request | 165 | * sensor_hub_set_feature() - Feature set request |
| 166 | * @hsdev: Hub device instance. | ||
| 163 | * @report_id: Report id to look for | 167 | * @report_id: Report id to look for |
| 164 | * @field_index: Field index inside a report | 168 | * @field_index: Field index inside a report |
| 165 | * @value: Value to set | 169 | * @value: Value to set |
| @@ -172,6 +176,7 @@ int sensor_hub_set_feature(struct hid_sensor_hub_device *hsdev, u32 report_id, | |||
| 172 | 176 | ||
| 173 | /** | 177 | /** |
| 174 | * sensor_hub_get_feature() - Feature get request | 178 | * sensor_hub_get_feature() - Feature get request |
| 179 | * @hsdev: Hub device instance. | ||
| 175 | * @report_id: Report id to look for | 180 | * @report_id: Report id to look for |
| 176 | * @field_index: Field index inside a report | 181 | * @field_index: Field index inside a report |
| 177 | * @value: Place holder for return value | 182 | * @value: Place holder for return value |
diff --git a/include/linux/i2c.h b/include/linux/i2c.h index 7c7695940ddd..f17da50402a4 100644 --- a/include/linux/i2c.h +++ b/include/linux/i2c.h | |||
| @@ -130,8 +130,6 @@ extern s32 i2c_smbus_write_i2c_block_data(const struct i2c_client *client, | |||
| 130 | * @probe: Callback for device binding | 130 | * @probe: Callback for device binding |
| 131 | * @remove: Callback for device unbinding | 131 | * @remove: Callback for device unbinding |
| 132 | * @shutdown: Callback for device shutdown | 132 | * @shutdown: Callback for device shutdown |
| 133 | * @suspend: Callback for device suspend | ||
| 134 | * @resume: Callback for device resume | ||
| 135 | * @alert: Alert callback, for example for the SMBus alert protocol | 133 | * @alert: Alert callback, for example for the SMBus alert protocol |
| 136 | * @command: Callback for bus-wide signaling (optional) | 134 | * @command: Callback for bus-wide signaling (optional) |
| 137 | * @driver: Device driver model driver | 135 | * @driver: Device driver model driver |
| @@ -174,8 +172,6 @@ struct i2c_driver { | |||
| 174 | 172 | ||
| 175 | /* driver model interfaces that don't relate to enumeration */ | 173 | /* driver model interfaces that don't relate to enumeration */ |
| 176 | void (*shutdown)(struct i2c_client *); | 174 | void (*shutdown)(struct i2c_client *); |
| 177 | int (*suspend)(struct i2c_client *, pm_message_t mesg); | ||
| 178 | int (*resume)(struct i2c_client *); | ||
| 179 | 175 | ||
| 180 | /* Alert callback, for example for the SMBus alert protocol. | 176 | /* Alert callback, for example for the SMBus alert protocol. |
| 181 | * The format and meaning of the data value depends on the protocol. | 177 | * The format and meaning of the data value depends on the protocol. |
diff --git a/include/linux/irqchip/mips-gic.h b/include/linux/irqchip/mips-gic.h index 420f77b34d02..e6a6aac451db 100644 --- a/include/linux/irqchip/mips-gic.h +++ b/include/linux/irqchip/mips-gic.h | |||
| @@ -243,7 +243,6 @@ extern void gic_write_cpu_compare(cycle_t cnt, int cpu); | |||
| 243 | extern void gic_send_ipi(unsigned int intr); | 243 | extern void gic_send_ipi(unsigned int intr); |
| 244 | extern unsigned int plat_ipi_call_int_xlate(unsigned int); | 244 | extern unsigned int plat_ipi_call_int_xlate(unsigned int); |
| 245 | extern unsigned int plat_ipi_resched_int_xlate(unsigned int); | 245 | extern unsigned int plat_ipi_resched_int_xlate(unsigned int); |
| 246 | extern unsigned int gic_get_timer_pending(void); | ||
| 247 | extern int gic_get_c0_compare_int(void); | 246 | extern int gic_get_c0_compare_int(void); |
| 248 | extern int gic_get_c0_perfcount_int(void); | 247 | extern int gic_get_c0_perfcount_int(void); |
| 249 | #endif /* __LINUX_IRQCHIP_MIPS_GIC_H */ | 248 | #endif /* __LINUX_IRQCHIP_MIPS_GIC_H */ |
diff --git a/include/linux/kdb.h b/include/linux/kdb.h index 75ae2e2631fc..a19bcf9e762e 100644 --- a/include/linux/kdb.h +++ b/include/linux/kdb.h | |||
| @@ -156,8 +156,14 @@ typedef enum { | |||
| 156 | KDB_REASON_SYSTEM_NMI, /* In NMI due to SYSTEM cmd; regs valid */ | 156 | KDB_REASON_SYSTEM_NMI, /* In NMI due to SYSTEM cmd; regs valid */ |
| 157 | } kdb_reason_t; | 157 | } kdb_reason_t; |
| 158 | 158 | ||
| 159 | enum kdb_msgsrc { | ||
| 160 | KDB_MSGSRC_INTERNAL, /* direct call to kdb_printf() */ | ||
| 161 | KDB_MSGSRC_PRINTK, /* trapped from printk() */ | ||
| 162 | }; | ||
| 163 | |||
| 159 | extern int kdb_trap_printk; | 164 | extern int kdb_trap_printk; |
| 160 | extern __printf(1, 0) int vkdb_printf(const char *fmt, va_list args); | 165 | extern __printf(2, 0) int vkdb_printf(enum kdb_msgsrc src, const char *fmt, |
| 166 | va_list args); | ||
| 161 | extern __printf(1, 2) int kdb_printf(const char *, ...); | 167 | extern __printf(1, 2) int kdb_printf(const char *, ...); |
| 162 | typedef __printf(1, 2) int (*kdb_printf_t)(const char *, ...); | 168 | typedef __printf(1, 2) int (*kdb_printf_t)(const char *, ...); |
| 163 | 169 | ||
diff --git a/include/linux/nfs_fs.h b/include/linux/nfs_fs.h index 6d627b92df53..2f77e0c651c8 100644 --- a/include/linux/nfs_fs.h +++ b/include/linux/nfs_fs.h | |||
| @@ -180,7 +180,6 @@ struct nfs_inode { | |||
| 180 | /* NFSv4 state */ | 180 | /* NFSv4 state */ |
| 181 | struct list_head open_states; | 181 | struct list_head open_states; |
| 182 | struct nfs_delegation __rcu *delegation; | 182 | struct nfs_delegation __rcu *delegation; |
| 183 | fmode_t delegation_state; | ||
| 184 | struct rw_semaphore rwsem; | 183 | struct rw_semaphore rwsem; |
| 185 | 184 | ||
| 186 | /* pNFS layout information */ | 185 | /* pNFS layout information */ |
diff --git a/include/linux/nfs_xdr.h b/include/linux/nfs_xdr.h index 38d96ba935c2..4cb3eaa89cf7 100644 --- a/include/linux/nfs_xdr.h +++ b/include/linux/nfs_xdr.h | |||
| @@ -1167,8 +1167,15 @@ struct nfs41_impl_id { | |||
| 1167 | struct nfstime4 date; | 1167 | struct nfstime4 date; |
| 1168 | }; | 1168 | }; |
| 1169 | 1169 | ||
| 1170 | struct nfs41_bind_conn_to_session_args { | ||
| 1171 | struct nfs_client *client; | ||
| 1172 | struct nfs4_sessionid sessionid; | ||
| 1173 | u32 dir; | ||
| 1174 | bool use_conn_in_rdma_mode; | ||
| 1175 | }; | ||
| 1176 | |||
| 1170 | struct nfs41_bind_conn_to_session_res { | 1177 | struct nfs41_bind_conn_to_session_res { |
| 1171 | struct nfs4_session *session; | 1178 | struct nfs4_sessionid sessionid; |
| 1172 | u32 dir; | 1179 | u32 dir; |
| 1173 | bool use_conn_in_rdma_mode; | 1180 | bool use_conn_in_rdma_mode; |
| 1174 | }; | 1181 | }; |
| @@ -1185,6 +1192,8 @@ struct nfs41_exchange_id_res { | |||
| 1185 | 1192 | ||
| 1186 | struct nfs41_create_session_args { | 1193 | struct nfs41_create_session_args { |
| 1187 | struct nfs_client *client; | 1194 | struct nfs_client *client; |
| 1195 | u64 clientid; | ||
| 1196 | uint32_t seqid; | ||
| 1188 | uint32_t flags; | 1197 | uint32_t flags; |
| 1189 | uint32_t cb_program; | 1198 | uint32_t cb_program; |
| 1190 | struct nfs4_channel_attrs fc_attrs; /* Fore Channel */ | 1199 | struct nfs4_channel_attrs fc_attrs; /* Fore Channel */ |
| @@ -1192,7 +1201,11 @@ struct nfs41_create_session_args { | |||
| 1192 | }; | 1201 | }; |
| 1193 | 1202 | ||
| 1194 | struct nfs41_create_session_res { | 1203 | struct nfs41_create_session_res { |
| 1195 | struct nfs_client *client; | 1204 | struct nfs4_sessionid sessionid; |
| 1205 | uint32_t seqid; | ||
| 1206 | uint32_t flags; | ||
| 1207 | struct nfs4_channel_attrs fc_attrs; /* Fore Channel */ | ||
| 1208 | struct nfs4_channel_attrs bc_attrs; /* Back Channel */ | ||
| 1196 | }; | 1209 | }; |
| 1197 | 1210 | ||
| 1198 | struct nfs41_reclaim_complete_args { | 1211 | struct nfs41_reclaim_complete_args { |
| @@ -1351,7 +1364,7 @@ struct nfs_commit_completion_ops { | |||
| 1351 | }; | 1364 | }; |
| 1352 | 1365 | ||
| 1353 | struct nfs_commit_info { | 1366 | struct nfs_commit_info { |
| 1354 | spinlock_t *lock; | 1367 | spinlock_t *lock; /* inode->i_lock */ |
| 1355 | struct nfs_mds_commit_info *mds; | 1368 | struct nfs_mds_commit_info *mds; |
| 1356 | struct pnfs_ds_commit_info *ds; | 1369 | struct pnfs_ds_commit_info *ds; |
| 1357 | struct nfs_direct_req *dreq; /* O_DIRECT request */ | 1370 | struct nfs_direct_req *dreq; /* O_DIRECT request */ |
diff --git a/include/linux/nvme.h b/include/linux/nvme.h index 19a5d4b23209..0adad4a5419b 100644 --- a/include/linux/nvme.h +++ b/include/linux/nvme.h | |||
| @@ -17,7 +17,6 @@ | |||
| 17 | 17 | ||
| 18 | #include <uapi/linux/nvme.h> | 18 | #include <uapi/linux/nvme.h> |
| 19 | #include <linux/pci.h> | 19 | #include <linux/pci.h> |
| 20 | #include <linux/miscdevice.h> | ||
| 21 | #include <linux/kref.h> | 20 | #include <linux/kref.h> |
| 22 | #include <linux/blk-mq.h> | 21 | #include <linux/blk-mq.h> |
| 23 | 22 | ||
| @@ -62,8 +61,6 @@ enum { | |||
| 62 | NVME_CSTS_SHST_MASK = 3 << 2, | 61 | NVME_CSTS_SHST_MASK = 3 << 2, |
| 63 | }; | 62 | }; |
| 64 | 63 | ||
| 65 | #define NVME_VS(major, minor) (major << 16 | minor) | ||
| 66 | |||
| 67 | extern unsigned char nvme_io_timeout; | 64 | extern unsigned char nvme_io_timeout; |
| 68 | #define NVME_IO_TIMEOUT (nvme_io_timeout * HZ) | 65 | #define NVME_IO_TIMEOUT (nvme_io_timeout * HZ) |
| 69 | 66 | ||
| @@ -91,9 +88,10 @@ struct nvme_dev { | |||
| 91 | struct nvme_bar __iomem *bar; | 88 | struct nvme_bar __iomem *bar; |
| 92 | struct list_head namespaces; | 89 | struct list_head namespaces; |
| 93 | struct kref kref; | 90 | struct kref kref; |
| 94 | struct miscdevice miscdev; | 91 | struct device *device; |
| 95 | work_func_t reset_workfn; | 92 | work_func_t reset_workfn; |
| 96 | struct work_struct reset_work; | 93 | struct work_struct reset_work; |
| 94 | struct work_struct probe_work; | ||
| 97 | char name[12]; | 95 | char name[12]; |
| 98 | char serial[20]; | 96 | char serial[20]; |
| 99 | char model[40]; | 97 | char model[40]; |
| @@ -105,7 +103,6 @@ struct nvme_dev { | |||
| 105 | u16 abort_limit; | 103 | u16 abort_limit; |
| 106 | u8 event_limit; | 104 | u8 event_limit; |
| 107 | u8 vwc; | 105 | u8 vwc; |
| 108 | u8 initialized; | ||
| 109 | }; | 106 | }; |
| 110 | 107 | ||
| 111 | /* | 108 | /* |
| @@ -121,6 +118,7 @@ struct nvme_ns { | |||
| 121 | unsigned ns_id; | 118 | unsigned ns_id; |
| 122 | int lba_shift; | 119 | int lba_shift; |
| 123 | int ms; | 120 | int ms; |
| 121 | int pi_type; | ||
| 124 | u64 mode_select_num_blocks; | 122 | u64 mode_select_num_blocks; |
| 125 | u32 mode_select_block_len; | 123 | u32 mode_select_block_len; |
| 126 | }; | 124 | }; |
| @@ -138,6 +136,7 @@ struct nvme_iod { | |||
| 138 | int nents; /* Used in scatterlist */ | 136 | int nents; /* Used in scatterlist */ |
| 139 | int length; /* Of data, in bytes */ | 137 | int length; /* Of data, in bytes */ |
| 140 | dma_addr_t first_dma; | 138 | dma_addr_t first_dma; |
| 139 | struct scatterlist meta_sg[1]; /* metadata requires single contiguous buffer */ | ||
| 141 | struct scatterlist sg[0]; | 140 | struct scatterlist sg[0]; |
| 142 | }; | 141 | }; |
| 143 | 142 | ||
diff --git a/include/linux/platform_data/bfin_rotary.h b/include/linux/platform_data/bfin_rotary.h new file mode 100644 index 000000000000..98829370fee2 --- /dev/null +++ b/include/linux/platform_data/bfin_rotary.h | |||
| @@ -0,0 +1,117 @@ | |||
| 1 | /* | ||
| 2 | * board initialization should put one of these structures into platform_data | ||
| 3 | * and place the bfin-rotary onto platform_bus named "bfin-rotary". | ||
| 4 | * | ||
| 5 | * Copyright 2008-2010 Analog Devices Inc. | ||
| 6 | * | ||
| 7 | * Licensed under the GPL-2 or later. | ||
| 8 | */ | ||
| 9 | |||
| 10 | #ifndef _BFIN_ROTARY_H | ||
| 11 | #define _BFIN_ROTARY_H | ||
| 12 | |||
| 13 | /* mode bitmasks */ | ||
| 14 | #define ROT_QUAD_ENC CNTMODE_QUADENC /* quadrature/grey code encoder mode */ | ||
| 15 | #define ROT_BIN_ENC CNTMODE_BINENC /* binary encoder mode */ | ||
| 16 | #define ROT_UD_CNT CNTMODE_UDCNT /* rotary counter mode */ | ||
| 17 | #define ROT_DIR_CNT CNTMODE_DIRCNT /* direction counter mode */ | ||
| 18 | |||
| 19 | #define ROT_DEBE DEBE /* Debounce Enable */ | ||
| 20 | |||
| 21 | #define ROT_CDGINV CDGINV /* CDG Pin Polarity Invert */ | ||
| 22 | #define ROT_CUDINV CUDINV /* CUD Pin Polarity Invert */ | ||
| 23 | #define ROT_CZMINV CZMINV /* CZM Pin Polarity Invert */ | ||
| 24 | |||
| 25 | struct bfin_rotary_platform_data { | ||
| 26 | /* set rotary UP KEY_### or BTN_### in case you prefer | ||
| 27 | * bfin-rotary to send EV_KEY otherwise set 0 | ||
| 28 | */ | ||
| 29 | unsigned int rotary_up_key; | ||
| 30 | /* set rotary DOWN KEY_### or BTN_### in case you prefer | ||
| 31 | * bfin-rotary to send EV_KEY otherwise set 0 | ||
| 32 | */ | ||
| 33 | unsigned int rotary_down_key; | ||
| 34 | /* set rotary BUTTON KEY_### or BTN_### */ | ||
| 35 | unsigned int rotary_button_key; | ||
| 36 | /* set rotary Relative Axis REL_### in case you prefer | ||
| 37 | * bfin-rotary to send EV_REL otherwise set 0 | ||
| 38 | */ | ||
| 39 | unsigned int rotary_rel_code; | ||
| 40 | unsigned short debounce; /* 0..17 */ | ||
| 41 | unsigned short mode; | ||
| 42 | unsigned short pm_wakeup; | ||
| 43 | unsigned short *pin_list; | ||
| 44 | }; | ||
| 45 | |||
| 46 | /* CNT_CONFIG bitmasks */ | ||
| 47 | #define CNTE (1 << 0) /* Counter Enable */ | ||
| 48 | #define DEBE (1 << 1) /* Debounce Enable */ | ||
| 49 | #define CDGINV (1 << 4) /* CDG Pin Polarity Invert */ | ||
| 50 | #define CUDINV (1 << 5) /* CUD Pin Polarity Invert */ | ||
| 51 | #define CZMINV (1 << 6) /* CZM Pin Polarity Invert */ | ||
| 52 | #define CNTMODE_SHIFT 8 | ||
| 53 | #define CNTMODE (0x7 << CNTMODE_SHIFT) /* Counter Operating Mode */ | ||
| 54 | #define ZMZC (1 << 1) /* CZM Zeroes Counter Enable */ | ||
| 55 | #define BNDMODE_SHIFT 12 | ||
| 56 | #define BNDMODE (0x3 << BNDMODE_SHIFT) /* Boundary register Mode */ | ||
| 57 | #define INPDIS (1 << 15) /* CUG and CDG Input Disable */ | ||
| 58 | |||
| 59 | #define CNTMODE_QUADENC (0 << CNTMODE_SHIFT) /* quadrature encoder mode */ | ||
| 60 | #define CNTMODE_BINENC (1 << CNTMODE_SHIFT) /* binary encoder mode */ | ||
| 61 | #define CNTMODE_UDCNT (2 << CNTMODE_SHIFT) /* up/down counter mode */ | ||
| 62 | #define CNTMODE_DIRCNT (4 << CNTMODE_SHIFT) /* direction counter mode */ | ||
| 63 | #define CNTMODE_DIRTMR (5 << CNTMODE_SHIFT) /* direction timer mode */ | ||
| 64 | |||
| 65 | #define BNDMODE_COMP (0 << BNDMODE_SHIFT) /* boundary compare mode */ | ||
| 66 | #define BNDMODE_ZERO (1 << BNDMODE_SHIFT) /* boundary compare and zero mode */ | ||
| 67 | #define BNDMODE_CAPT (2 << BNDMODE_SHIFT) /* boundary capture mode */ | ||
| 68 | #define BNDMODE_AEXT (3 << BNDMODE_SHIFT) /* boundary auto-extend mode */ | ||
| 69 | |||
| 70 | /* CNT_IMASK bitmasks */ | ||
| 71 | #define ICIE (1 << 0) /* Illegal Gray/Binary Code Interrupt Enable */ | ||
| 72 | #define UCIE (1 << 1) /* Up count Interrupt Enable */ | ||
| 73 | #define DCIE (1 << 2) /* Down count Interrupt Enable */ | ||
| 74 | #define MINCIE (1 << 3) /* Min Count Interrupt Enable */ | ||
| 75 | #define MAXCIE (1 << 4) /* Max Count Interrupt Enable */ | ||
| 76 | #define COV31IE (1 << 5) /* Bit 31 Overflow Interrupt Enable */ | ||
| 77 | #define COV15IE (1 << 6) /* Bit 15 Overflow Interrupt Enable */ | ||
| 78 | #define CZEROIE (1 << 7) /* Count to Zero Interrupt Enable */ | ||
| 79 | #define CZMIE (1 << 8) /* CZM Pin Interrupt Enable */ | ||
| 80 | #define CZMEIE (1 << 9) /* CZM Error Interrupt Enable */ | ||
| 81 | #define CZMZIE (1 << 10) /* CZM Zeroes Counter Interrupt Enable */ | ||
| 82 | |||
| 83 | /* CNT_STATUS bitmasks */ | ||
| 84 | #define ICII (1 << 0) /* Illegal Gray/Binary Code Interrupt Identifier */ | ||
| 85 | #define UCII (1 << 1) /* Up count Interrupt Identifier */ | ||
| 86 | #define DCII (1 << 2) /* Down count Interrupt Identifier */ | ||
| 87 | #define MINCII (1 << 3) /* Min Count Interrupt Identifier */ | ||
| 88 | #define MAXCII (1 << 4) /* Max Count Interrupt Identifier */ | ||
| 89 | #define COV31II (1 << 5) /* Bit 31 Overflow Interrupt Identifier */ | ||
| 90 | #define COV15II (1 << 6) /* Bit 15 Overflow Interrupt Identifier */ | ||
| 91 | #define CZEROII (1 << 7) /* Count to Zero Interrupt Identifier */ | ||
| 92 | #define CZMII (1 << 8) /* CZM Pin Interrupt Identifier */ | ||
| 93 | #define CZMEII (1 << 9) /* CZM Error Interrupt Identifier */ | ||
| 94 | #define CZMZII (1 << 10) /* CZM Zeroes Counter Interrupt Identifier */ | ||
| 95 | |||
| 96 | /* CNT_COMMAND bitmasks */ | ||
| 97 | #define W1LCNT 0xf /* Load Counter Register */ | ||
| 98 | #define W1LMIN 0xf0 /* Load Min Register */ | ||
| 99 | #define W1LMAX 0xf00 /* Load Max Register */ | ||
| 100 | #define W1ZMONCE (1 << 12) /* Enable CZM Clear Counter Once */ | ||
| 101 | |||
| 102 | #define W1LCNT_ZERO (1 << 0) /* write 1 to load CNT_COUNTER with zero */ | ||
| 103 | #define W1LCNT_MIN (1 << 2) /* write 1 to load CNT_COUNTER from CNT_MIN */ | ||
| 104 | #define W1LCNT_MAX (1 << 3) /* write 1 to load CNT_COUNTER from CNT_MAX */ | ||
| 105 | |||
| 106 | #define W1LMIN_ZERO (1 << 4) /* write 1 to load CNT_MIN with zero */ | ||
| 107 | #define W1LMIN_CNT (1 << 5) /* write 1 to load CNT_MIN from CNT_COUNTER */ | ||
| 108 | #define W1LMIN_MAX (1 << 7) /* write 1 to load CNT_MIN from CNT_MAX */ | ||
| 109 | |||
| 110 | #define W1LMAX_ZERO (1 << 8) /* write 1 to load CNT_MAX with zero */ | ||
| 111 | #define W1LMAX_CNT (1 << 9) /* write 1 to load CNT_MAX from CNT_COUNTER */ | ||
| 112 | #define W1LMAX_MIN (1 << 10) /* write 1 to load CNT_MAX from CNT_MIN */ | ||
| 113 | |||
| 114 | /* CNT_DEBOUNCE bitmasks */ | ||
| 115 | #define DPRESCALE 0xf /* Load Counter Register */ | ||
| 116 | |||
| 117 | #endif | ||
diff --git a/include/linux/sched.h b/include/linux/sched.h index 41c60e5302d7..6d77432e14ff 100644 --- a/include/linux/sched.h +++ b/include/linux/sched.h | |||
| @@ -363,9 +363,6 @@ extern void show_regs(struct pt_regs *); | |||
| 363 | */ | 363 | */ |
| 364 | extern void show_stack(struct task_struct *task, unsigned long *sp); | 364 | extern void show_stack(struct task_struct *task, unsigned long *sp); |
| 365 | 365 | ||
| 366 | void io_schedule(void); | ||
| 367 | long io_schedule_timeout(long timeout); | ||
| 368 | |||
| 369 | extern void cpu_init (void); | 366 | extern void cpu_init (void); |
| 370 | extern void trap_init(void); | 367 | extern void trap_init(void); |
| 371 | extern void update_process_times(int user); | 368 | extern void update_process_times(int user); |
| @@ -422,6 +419,13 @@ extern signed long schedule_timeout_uninterruptible(signed long timeout); | |||
| 422 | asmlinkage void schedule(void); | 419 | asmlinkage void schedule(void); |
| 423 | extern void schedule_preempt_disabled(void); | 420 | extern void schedule_preempt_disabled(void); |
| 424 | 421 | ||
| 422 | extern long io_schedule_timeout(long timeout); | ||
| 423 | |||
| 424 | static inline void io_schedule(void) | ||
| 425 | { | ||
| 426 | io_schedule_timeout(MAX_SCHEDULE_TIMEOUT); | ||
| 427 | } | ||
| 428 | |||
| 425 | struct nsproxy; | 429 | struct nsproxy; |
| 426 | struct user_namespace; | 430 | struct user_namespace; |
| 427 | 431 | ||
diff --git a/include/linux/sunrpc/metrics.h b/include/linux/sunrpc/metrics.h index 7e61a17030a4..694eecb2f1b5 100644 --- a/include/linux/sunrpc/metrics.h +++ b/include/linux/sunrpc/metrics.h | |||
| @@ -89,8 +89,11 @@ void rpc_free_iostats(struct rpc_iostats *); | |||
| 89 | static inline struct rpc_iostats *rpc_alloc_iostats(struct rpc_clnt *clnt) { return NULL; } | 89 | static inline struct rpc_iostats *rpc_alloc_iostats(struct rpc_clnt *clnt) { return NULL; } |
| 90 | static inline void rpc_count_iostats(const struct rpc_task *task, | 90 | static inline void rpc_count_iostats(const struct rpc_task *task, |
| 91 | struct rpc_iostats *stats) {} | 91 | struct rpc_iostats *stats) {} |
| 92 | static inline void rpc_count_iostats_metrics(const struct rpc_task *, | 92 | static inline void rpc_count_iostats_metrics(const struct rpc_task *task, |
| 93 | struct rpc_iostats *) {} | 93 | struct rpc_iostats *stats) |
| 94 | { | ||
| 95 | } | ||
| 96 | |||
| 94 | static inline void rpc_print_iostats(struct seq_file *seq, struct rpc_clnt *clnt) {} | 97 | static inline void rpc_print_iostats(struct seq_file *seq, struct rpc_clnt *clnt) {} |
| 95 | static inline void rpc_free_iostats(struct rpc_iostats *stats) {} | 98 | static inline void rpc_free_iostats(struct rpc_iostats *stats) {} |
| 96 | 99 | ||
diff --git a/include/linux/vfio.h b/include/linux/vfio.h index d3204115f15d..2d67b8998fd8 100644 --- a/include/linux/vfio.h +++ b/include/linux/vfio.h | |||
| @@ -26,6 +26,7 @@ | |||
| 26 | * @ioctl: Perform ioctl(2) on device file descriptor, supporting VFIO_DEVICE_* | 26 | * @ioctl: Perform ioctl(2) on device file descriptor, supporting VFIO_DEVICE_* |
| 27 | * operations documented below | 27 | * operations documented below |
| 28 | * @mmap: Perform mmap(2) on a region of the device file descriptor | 28 | * @mmap: Perform mmap(2) on a region of the device file descriptor |
| 29 | * @request: Request for the bus driver to release the device | ||
| 29 | */ | 30 | */ |
| 30 | struct vfio_device_ops { | 31 | struct vfio_device_ops { |
| 31 | char *name; | 32 | char *name; |
| @@ -38,6 +39,7 @@ struct vfio_device_ops { | |||
| 38 | long (*ioctl)(void *device_data, unsigned int cmd, | 39 | long (*ioctl)(void *device_data, unsigned int cmd, |
| 39 | unsigned long arg); | 40 | unsigned long arg); |
| 40 | int (*mmap)(void *device_data, struct vm_area_struct *vma); | 41 | int (*mmap)(void *device_data, struct vm_area_struct *vma); |
| 42 | void (*request)(void *device_data, unsigned int count); | ||
| 41 | }; | 43 | }; |
| 42 | 44 | ||
| 43 | extern int vfio_add_group_dev(struct device *dev, | 45 | extern int vfio_add_group_dev(struct device *dev, |
