diff options
Diffstat (limited to 'include')
31 files changed, 975 insertions, 65 deletions
diff --git a/include/asm-generic/fcntl.h b/include/asm-generic/fcntl.h index 681ddf3e844c..fcd268ce0674 100644 --- a/include/asm-generic/fcntl.h +++ b/include/asm-generic/fcntl.h | |||
| @@ -51,7 +51,7 @@ | |||
| 51 | #endif | 51 | #endif |
| 52 | 52 | ||
| 53 | /* | 53 | /* |
| 54 | * Before Linux 2.6.32 only O_DSYNC semantics were implemented, but using | 54 | * Before Linux 2.6.33 only O_DSYNC semantics were implemented, but using |
| 55 | * the O_SYNC flag. We continue to use the existing numerical value | 55 | * the O_SYNC flag. We continue to use the existing numerical value |
| 56 | * for O_DSYNC semantics now, but using the correct symbolic name for it. | 56 | * for O_DSYNC semantics now, but using the correct symbolic name for it. |
| 57 | * This new value is used to request true Posix O_SYNC semantics. It is | 57 | * This new value is used to request true Posix O_SYNC semantics. It is |
diff --git a/include/drm/Kbuild b/include/drm/Kbuild index cfa6af43c9ea..bd3a1c2fbdb4 100644 --- a/include/drm/Kbuild +++ b/include/drm/Kbuild | |||
| @@ -7,5 +7,6 @@ unifdef-y += r128_drm.h | |||
| 7 | unifdef-y += radeon_drm.h | 7 | unifdef-y += radeon_drm.h |
| 8 | unifdef-y += sis_drm.h | 8 | unifdef-y += sis_drm.h |
| 9 | unifdef-y += savage_drm.h | 9 | unifdef-y += savage_drm.h |
| 10 | unifdef-y += vmwgfx_drm.h | ||
| 10 | unifdef-y += via_drm.h | 11 | unifdef-y += via_drm.h |
| 11 | unifdef-y += nouveau_drm.h | 12 | unifdef-y += nouveau_drm.h |
diff --git a/include/drm/ttm/ttm_object.h b/include/drm/ttm/ttm_object.h index 703ca4db0a29..0d9db099978b 100644 --- a/include/drm/ttm/ttm_object.h +++ b/include/drm/ttm/ttm_object.h | |||
| @@ -77,7 +77,11 @@ enum ttm_object_type { | |||
| 77 | ttm_buffer_type, | 77 | ttm_buffer_type, |
| 78 | ttm_lock_type, | 78 | ttm_lock_type, |
| 79 | ttm_driver_type0 = 256, | 79 | ttm_driver_type0 = 256, |
| 80 | ttm_driver_type1 | 80 | ttm_driver_type1, |
| 81 | ttm_driver_type2, | ||
| 82 | ttm_driver_type3, | ||
| 83 | ttm_driver_type4, | ||
| 84 | ttm_driver_type5 | ||
| 81 | }; | 85 | }; |
| 82 | 86 | ||
| 83 | struct ttm_object_file; | 87 | struct ttm_object_file; |
diff --git a/include/drm/vmwgfx_drm.h b/include/drm/vmwgfx_drm.h new file mode 100644 index 000000000000..2be7e1249b6f --- /dev/null +++ b/include/drm/vmwgfx_drm.h | |||
| @@ -0,0 +1,574 @@ | |||
| 1 | /************************************************************************** | ||
| 2 | * | ||
| 3 | * Copyright © 2009 VMware, Inc., Palo Alto, CA., USA | ||
| 4 | * All Rights Reserved. | ||
| 5 | * | ||
| 6 | * Permission is hereby granted, free of charge, to any person obtaining a | ||
| 7 | * copy of this software and associated documentation files (the | ||
| 8 | * "Software"), to deal in the Software without restriction, including | ||
| 9 | * without limitation the rights to use, copy, modify, merge, publish, | ||
| 10 | * distribute, sub license, and/or sell copies of the Software, and to | ||
| 11 | * permit persons to whom the Software is furnished to do so, subject to | ||
| 12 | * the following conditions: | ||
| 13 | * | ||
| 14 | * The above copyright notice and this permission notice (including the | ||
| 15 | * next paragraph) shall be included in all copies or substantial portions | ||
| 16 | * of the Software. | ||
| 17 | * | ||
| 18 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||
| 19 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||
| 20 | * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL | ||
| 21 | * THE COPYRIGHT HOLDERS, AUTHORS AND/OR ITS SUPPLIERS BE LIABLE FOR ANY CLAIM, | ||
| 22 | * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR | ||
| 23 | * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE | ||
| 24 | * USE OR OTHER DEALINGS IN THE SOFTWARE. | ||
| 25 | * | ||
| 26 | **************************************************************************/ | ||
| 27 | |||
| 28 | #ifndef __VMWGFX_DRM_H__ | ||
| 29 | #define __VMWGFX_DRM_H__ | ||
| 30 | |||
| 31 | #define DRM_VMW_MAX_SURFACE_FACES 6 | ||
| 32 | #define DRM_VMW_MAX_MIP_LEVELS 24 | ||
| 33 | |||
| 34 | #define DRM_VMW_EXT_NAME_LEN 128 | ||
| 35 | |||
| 36 | #define DRM_VMW_GET_PARAM 0 | ||
| 37 | #define DRM_VMW_ALLOC_DMABUF 1 | ||
| 38 | #define DRM_VMW_UNREF_DMABUF 2 | ||
| 39 | #define DRM_VMW_CURSOR_BYPASS 3 | ||
| 40 | /* guarded by DRM_VMW_PARAM_NUM_STREAMS != 0*/ | ||
| 41 | #define DRM_VMW_CONTROL_STREAM 4 | ||
| 42 | #define DRM_VMW_CLAIM_STREAM 5 | ||
| 43 | #define DRM_VMW_UNREF_STREAM 6 | ||
| 44 | /* guarded by DRM_VMW_PARAM_3D == 1 */ | ||
| 45 | #define DRM_VMW_CREATE_CONTEXT 7 | ||
| 46 | #define DRM_VMW_UNREF_CONTEXT 8 | ||
| 47 | #define DRM_VMW_CREATE_SURFACE 9 | ||
| 48 | #define DRM_VMW_UNREF_SURFACE 10 | ||
| 49 | #define DRM_VMW_REF_SURFACE 11 | ||
| 50 | #define DRM_VMW_EXECBUF 12 | ||
| 51 | #define DRM_VMW_FIFO_DEBUG 13 | ||
| 52 | #define DRM_VMW_FENCE_WAIT 14 | ||
| 53 | |||
| 54 | |||
| 55 | /*************************************************************************/ | ||
| 56 | /** | ||
| 57 | * DRM_VMW_GET_PARAM - get device information. | ||
| 58 | * | ||
| 59 | * DRM_VMW_PARAM_FIFO_OFFSET: | ||
| 60 | * Offset to use to map the first page of the FIFO read-only. | ||
| 61 | * The fifo is mapped using the mmap() system call on the drm device. | ||
| 62 | * | ||
| 63 | * DRM_VMW_PARAM_OVERLAY_IOCTL: | ||
| 64 | * Does the driver support the overlay ioctl. | ||
| 65 | */ | ||
| 66 | |||
| 67 | #define DRM_VMW_PARAM_NUM_STREAMS 0 | ||
| 68 | #define DRM_VMW_PARAM_NUM_FREE_STREAMS 1 | ||
| 69 | #define DRM_VMW_PARAM_3D 2 | ||
| 70 | #define DRM_VMW_PARAM_FIFO_OFFSET 3 | ||
| 71 | |||
| 72 | |||
| 73 | /** | ||
| 74 | * struct drm_vmw_getparam_arg | ||
| 75 | * | ||
| 76 | * @value: Returned value. //Out | ||
| 77 | * @param: Parameter to query. //In. | ||
| 78 | * | ||
| 79 | * Argument to the DRM_VMW_GET_PARAM Ioctl. | ||
| 80 | */ | ||
| 81 | |||
| 82 | struct drm_vmw_getparam_arg { | ||
| 83 | uint64_t value; | ||
| 84 | uint32_t param; | ||
| 85 | uint32_t pad64; | ||
| 86 | }; | ||
| 87 | |||
| 88 | /*************************************************************************/ | ||
| 89 | /** | ||
| 90 | * DRM_VMW_EXTENSION - Query device extensions. | ||
| 91 | */ | ||
| 92 | |||
| 93 | /** | ||
| 94 | * struct drm_vmw_extension_rep | ||
| 95 | * | ||
| 96 | * @exists: The queried extension exists. | ||
| 97 | * @driver_ioctl_offset: Ioctl number of the first ioctl in the extension. | ||
| 98 | * @driver_sarea_offset: Offset to any space in the DRI SAREA | ||
| 99 | * used by the extension. | ||
| 100 | * @major: Major version number of the extension. | ||
| 101 | * @minor: Minor version number of the extension. | ||
| 102 | * @pl: Patch level version number of the extension. | ||
| 103 | * | ||
| 104 | * Output argument to the DRM_VMW_EXTENSION Ioctl. | ||
| 105 | */ | ||
| 106 | |||
| 107 | struct drm_vmw_extension_rep { | ||
| 108 | int32_t exists; | ||
| 109 | uint32_t driver_ioctl_offset; | ||
| 110 | uint32_t driver_sarea_offset; | ||
| 111 | uint32_t major; | ||
| 112 | uint32_t minor; | ||
| 113 | uint32_t pl; | ||
| 114 | uint32_t pad64; | ||
| 115 | }; | ||
| 116 | |||
| 117 | /** | ||
| 118 | * union drm_vmw_extension_arg | ||
| 119 | * | ||
| 120 | * @extension - Ascii name of the extension to be queried. //In | ||
| 121 | * @rep - Reply as defined above. //Out | ||
| 122 | * | ||
| 123 | * Argument to the DRM_VMW_EXTENSION Ioctl. | ||
| 124 | */ | ||
| 125 | |||
| 126 | union drm_vmw_extension_arg { | ||
| 127 | char extension[DRM_VMW_EXT_NAME_LEN]; | ||
| 128 | struct drm_vmw_extension_rep rep; | ||
| 129 | }; | ||
| 130 | |||
| 131 | /*************************************************************************/ | ||
| 132 | /** | ||
| 133 | * DRM_VMW_CREATE_CONTEXT - Create a host context. | ||
| 134 | * | ||
| 135 | * Allocates a device unique context id, and queues a create context command | ||
| 136 | * for the host. Does not wait for host completion. | ||
| 137 | */ | ||
| 138 | |||
| 139 | /** | ||
| 140 | * struct drm_vmw_context_arg | ||
| 141 | * | ||
| 142 | * @cid: Device unique context ID. | ||
| 143 | * | ||
| 144 | * Output argument to the DRM_VMW_CREATE_CONTEXT Ioctl. | ||
| 145 | * Input argument to the DRM_VMW_UNREF_CONTEXT Ioctl. | ||
| 146 | */ | ||
| 147 | |||
| 148 | struct drm_vmw_context_arg { | ||
| 149 | int32_t cid; | ||
| 150 | uint32_t pad64; | ||
| 151 | }; | ||
| 152 | |||
| 153 | /*************************************************************************/ | ||
| 154 | /** | ||
| 155 | * DRM_VMW_UNREF_CONTEXT - Create a host context. | ||
| 156 | * | ||
| 157 | * Frees a global context id, and queues a destroy host command for the host. | ||
| 158 | * Does not wait for host completion. The context ID can be used directly | ||
| 159 | * in the command stream and shows up as the same context ID on the host. | ||
| 160 | */ | ||
| 161 | |||
| 162 | /*************************************************************************/ | ||
| 163 | /** | ||
| 164 | * DRM_VMW_CREATE_SURFACE - Create a host suface. | ||
| 165 | * | ||
| 166 | * Allocates a device unique surface id, and queues a create surface command | ||
| 167 | * for the host. Does not wait for host completion. The surface ID can be | ||
| 168 | * used directly in the command stream and shows up as the same surface | ||
| 169 | * ID on the host. | ||
| 170 | */ | ||
| 171 | |||
| 172 | /** | ||
| 173 | * struct drm_wmv_surface_create_req | ||
| 174 | * | ||
| 175 | * @flags: Surface flags as understood by the host. | ||
| 176 | * @format: Surface format as understood by the host. | ||
| 177 | * @mip_levels: Number of mip levels for each face. | ||
| 178 | * An unused face should have 0 encoded. | ||
| 179 | * @size_addr: Address of a user-space array of sruct drm_vmw_size | ||
| 180 | * cast to an uint64_t for 32-64 bit compatibility. | ||
| 181 | * The size of the array should equal the total number of mipmap levels. | ||
| 182 | * @shareable: Boolean whether other clients (as identified by file descriptors) | ||
| 183 | * may reference this surface. | ||
| 184 | * | ||
| 185 | * Input data to the DRM_VMW_CREATE_SURFACE Ioctl. | ||
| 186 | * Output data from the DRM_VMW_REF_SURFACE Ioctl. | ||
| 187 | */ | ||
| 188 | |||
| 189 | struct drm_vmw_surface_create_req { | ||
| 190 | uint32_t flags; | ||
| 191 | uint32_t format; | ||
| 192 | uint32_t mip_levels[DRM_VMW_MAX_SURFACE_FACES]; | ||
| 193 | uint64_t size_addr; | ||
| 194 | int32_t shareable; | ||
| 195 | uint32_t pad64; | ||
| 196 | }; | ||
| 197 | |||
| 198 | /** | ||
| 199 | * struct drm_wmv_surface_arg | ||
| 200 | * | ||
| 201 | * @sid: Surface id of created surface or surface to destroy or reference. | ||
| 202 | * | ||
| 203 | * Output data from the DRM_VMW_CREATE_SURFACE Ioctl. | ||
| 204 | * Input argument to the DRM_VMW_UNREF_SURFACE Ioctl. | ||
| 205 | * Input argument to the DRM_VMW_REF_SURFACE Ioctl. | ||
| 206 | */ | ||
| 207 | |||
| 208 | struct drm_vmw_surface_arg { | ||
| 209 | int32_t sid; | ||
| 210 | uint32_t pad64; | ||
| 211 | }; | ||
| 212 | |||
| 213 | /** | ||
| 214 | * struct drm_vmw_size ioctl. | ||
| 215 | * | ||
| 216 | * @width - mip level width | ||
| 217 | * @height - mip level height | ||
| 218 | * @depth - mip level depth | ||
| 219 | * | ||
| 220 | * Description of a mip level. | ||
| 221 | * Input data to the DRM_WMW_CREATE_SURFACE Ioctl. | ||
| 222 | */ | ||
| 223 | |||
| 224 | struct drm_vmw_size { | ||
| 225 | uint32_t width; | ||
| 226 | uint32_t height; | ||
| 227 | uint32_t depth; | ||
| 228 | uint32_t pad64; | ||
| 229 | }; | ||
| 230 | |||
| 231 | /** | ||
| 232 | * union drm_vmw_surface_create_arg | ||
| 233 | * | ||
| 234 | * @rep: Output data as described above. | ||
| 235 | * @req: Input data as described above. | ||
| 236 | * | ||
| 237 | * Argument to the DRM_VMW_CREATE_SURFACE Ioctl. | ||
| 238 | */ | ||
| 239 | |||
| 240 | union drm_vmw_surface_create_arg { | ||
| 241 | struct drm_vmw_surface_arg rep; | ||
| 242 | struct drm_vmw_surface_create_req req; | ||
| 243 | }; | ||
| 244 | |||
| 245 | /*************************************************************************/ | ||
| 246 | /** | ||
| 247 | * DRM_VMW_REF_SURFACE - Reference a host surface. | ||
| 248 | * | ||
| 249 | * Puts a reference on a host surface with a give sid, as previously | ||
| 250 | * returned by the DRM_VMW_CREATE_SURFACE ioctl. | ||
| 251 | * A reference will make sure the surface isn't destroyed while we hold | ||
| 252 | * it and will allow the calling client to use the surface ID in the command | ||
| 253 | * stream. | ||
| 254 | * | ||
| 255 | * On successful return, the Ioctl returns the surface information given | ||
| 256 | * in the DRM_VMW_CREATE_SURFACE ioctl. | ||
| 257 | */ | ||
| 258 | |||
| 259 | /** | ||
| 260 | * union drm_vmw_surface_reference_arg | ||
| 261 | * | ||
| 262 | * @rep: Output data as described above. | ||
| 263 | * @req: Input data as described above. | ||
| 264 | * | ||
| 265 | * Argument to the DRM_VMW_REF_SURFACE Ioctl. | ||
| 266 | */ | ||
| 267 | |||
| 268 | union drm_vmw_surface_reference_arg { | ||
| 269 | struct drm_vmw_surface_create_req rep; | ||
| 270 | struct drm_vmw_surface_arg req; | ||
| 271 | }; | ||
| 272 | |||
| 273 | /*************************************************************************/ | ||
| 274 | /** | ||
| 275 | * DRM_VMW_UNREF_SURFACE - Unreference a host surface. | ||
| 276 | * | ||
| 277 | * Clear a reference previously put on a host surface. | ||
| 278 | * When all references are gone, including the one implicitly placed | ||
| 279 | * on creation, | ||
| 280 | * a destroy surface command will be queued for the host. | ||
| 281 | * Does not wait for completion. | ||
| 282 | */ | ||
| 283 | |||
| 284 | /*************************************************************************/ | ||
| 285 | /** | ||
| 286 | * DRM_VMW_EXECBUF | ||
| 287 | * | ||
| 288 | * Submit a command buffer for execution on the host, and return a | ||
| 289 | * fence sequence that when signaled, indicates that the command buffer has | ||
| 290 | * executed. | ||
| 291 | */ | ||
| 292 | |||
| 293 | /** | ||
| 294 | * struct drm_vmw_execbuf_arg | ||
| 295 | * | ||
| 296 | * @commands: User-space address of a command buffer cast to an uint64_t. | ||
| 297 | * @command-size: Size in bytes of the command buffer. | ||
| 298 | * @fence_rep: User-space address of a struct drm_vmw_fence_rep cast to an | ||
| 299 | * uint64_t. | ||
| 300 | * | ||
| 301 | * Argument to the DRM_VMW_EXECBUF Ioctl. | ||
| 302 | */ | ||
| 303 | |||
| 304 | struct drm_vmw_execbuf_arg { | ||
| 305 | uint64_t commands; | ||
| 306 | uint32_t command_size; | ||
| 307 | uint32_t pad64; | ||
| 308 | uint64_t fence_rep; | ||
| 309 | }; | ||
| 310 | |||
| 311 | /** | ||
| 312 | * struct drm_vmw_fence_rep | ||
| 313 | * | ||
| 314 | * @fence_seq: Fence sequence associated with a command submission. | ||
| 315 | * @error: This member should've been set to -EFAULT on submission. | ||
| 316 | * The following actions should be take on completion: | ||
| 317 | * error == -EFAULT: Fence communication failed. The host is synchronized. | ||
| 318 | * Use the last fence id read from the FIFO fence register. | ||
| 319 | * error != 0 && error != -EFAULT: | ||
| 320 | * Fence submission failed. The host is synchronized. Use the fence_seq member. | ||
| 321 | * error == 0: All is OK, The host may not be synchronized. | ||
| 322 | * Use the fence_seq member. | ||
| 323 | * | ||
| 324 | * Input / Output data to the DRM_VMW_EXECBUF Ioctl. | ||
| 325 | */ | ||
| 326 | |||
| 327 | struct drm_vmw_fence_rep { | ||
| 328 | uint64_t fence_seq; | ||
| 329 | int32_t error; | ||
| 330 | uint32_t pad64; | ||
| 331 | }; | ||
| 332 | |||
| 333 | /*************************************************************************/ | ||
| 334 | /** | ||
| 335 | * DRM_VMW_ALLOC_DMABUF | ||
| 336 | * | ||
| 337 | * Allocate a DMA buffer that is visible also to the host. | ||
| 338 | * NOTE: The buffer is | ||
| 339 | * identified by a handle and an offset, which are private to the guest, but | ||
| 340 | * useable in the command stream. The guest kernel may translate these | ||
| 341 | * and patch up the command stream accordingly. In the future, the offset may | ||
| 342 | * be zero at all times, or it may disappear from the interface before it is | ||
| 343 | * fixed. | ||
| 344 | * | ||
| 345 | * The DMA buffer may stay user-space mapped in the guest at all times, | ||
| 346 | * and is thus suitable for sub-allocation. | ||
| 347 | * | ||
| 348 | * DMA buffers are mapped using the mmap() syscall on the drm device. | ||
| 349 | */ | ||
| 350 | |||
| 351 | /** | ||
| 352 | * struct drm_vmw_alloc_dmabuf_req | ||
| 353 | * | ||
| 354 | * @size: Required minimum size of the buffer. | ||
| 355 | * | ||
| 356 | * Input data to the DRM_VMW_ALLOC_DMABUF Ioctl. | ||
| 357 | */ | ||
| 358 | |||
| 359 | struct drm_vmw_alloc_dmabuf_req { | ||
| 360 | uint32_t size; | ||
| 361 | uint32_t pad64; | ||
| 362 | }; | ||
| 363 | |||
| 364 | /** | ||
| 365 | * struct drm_vmw_dmabuf_rep | ||
| 366 | * | ||
| 367 | * @map_handle: Offset to use in the mmap() call used to map the buffer. | ||
| 368 | * @handle: Handle unique to this buffer. Used for unreferencing. | ||
| 369 | * @cur_gmr_id: GMR id to use in the command stream when this buffer is | ||
| 370 | * referenced. See not above. | ||
| 371 | * @cur_gmr_offset: Offset to use in the command stream when this buffer is | ||
| 372 | * referenced. See note above. | ||
| 373 | * | ||
| 374 | * Output data from the DRM_VMW_ALLOC_DMABUF Ioctl. | ||
| 375 | */ | ||
| 376 | |||
| 377 | struct drm_vmw_dmabuf_rep { | ||
| 378 | uint64_t map_handle; | ||
| 379 | uint32_t handle; | ||
| 380 | uint32_t cur_gmr_id; | ||
| 381 | uint32_t cur_gmr_offset; | ||
| 382 | uint32_t pad64; | ||
| 383 | }; | ||
| 384 | |||
| 385 | /** | ||
| 386 | * union drm_vmw_dmabuf_arg | ||
| 387 | * | ||
| 388 | * @req: Input data as described above. | ||
| 389 | * @rep: Output data as described above. | ||
| 390 | * | ||
| 391 | * Argument to the DRM_VMW_ALLOC_DMABUF Ioctl. | ||
| 392 | */ | ||
| 393 | |||
| 394 | union drm_vmw_alloc_dmabuf_arg { | ||
| 395 | struct drm_vmw_alloc_dmabuf_req req; | ||
| 396 | struct drm_vmw_dmabuf_rep rep; | ||
| 397 | }; | ||
| 398 | |||
| 399 | /*************************************************************************/ | ||
| 400 | /** | ||
| 401 | * DRM_VMW_UNREF_DMABUF - Free a DMA buffer. | ||
| 402 | * | ||
| 403 | */ | ||
| 404 | |||
| 405 | /** | ||
| 406 | * struct drm_vmw_unref_dmabuf_arg | ||
| 407 | * | ||
| 408 | * @handle: Handle indicating what buffer to free. Obtained from the | ||
| 409 | * DRM_VMW_ALLOC_DMABUF Ioctl. | ||
| 410 | * | ||
| 411 | * Argument to the DRM_VMW_UNREF_DMABUF Ioctl. | ||
| 412 | */ | ||
| 413 | |||
| 414 | struct drm_vmw_unref_dmabuf_arg { | ||
| 415 | uint32_t handle; | ||
| 416 | uint32_t pad64; | ||
| 417 | }; | ||
| 418 | |||
| 419 | /*************************************************************************/ | ||
| 420 | /** | ||
| 421 | * DRM_VMW_FIFO_DEBUG - Get last FIFO submission. | ||
| 422 | * | ||
| 423 | * This IOCTL copies the last FIFO submission directly out of the FIFO buffer. | ||
| 424 | */ | ||
| 425 | |||
| 426 | /** | ||
| 427 | * struct drm_vmw_fifo_debug_arg | ||
| 428 | * | ||
| 429 | * @debug_buffer: User space address of a debug_buffer cast to an uint64_t //In | ||
| 430 | * @debug_buffer_size: Size in bytes of debug buffer //In | ||
| 431 | * @used_size: Number of bytes copied to the buffer // Out | ||
| 432 | * @did_not_fit: Boolean indicating that the fifo contents did not fit. //Out | ||
| 433 | * | ||
| 434 | * Argument to the DRM_VMW_FIFO_DEBUG Ioctl. | ||
| 435 | */ | ||
| 436 | |||
| 437 | struct drm_vmw_fifo_debug_arg { | ||
| 438 | uint64_t debug_buffer; | ||
| 439 | uint32_t debug_buffer_size; | ||
| 440 | uint32_t used_size; | ||
| 441 | int32_t did_not_fit; | ||
| 442 | uint32_t pad64; | ||
| 443 | }; | ||
| 444 | |||
| 445 | struct drm_vmw_fence_wait_arg { | ||
| 446 | uint64_t sequence; | ||
| 447 | uint64_t kernel_cookie; | ||
| 448 | int32_t cookie_valid; | ||
| 449 | int32_t pad64; | ||
| 450 | }; | ||
| 451 | |||
| 452 | /*************************************************************************/ | ||
| 453 | /** | ||
| 454 | * DRM_VMW_CONTROL_STREAM - Control overlays, aka streams. | ||
| 455 | * | ||
| 456 | * This IOCTL controls the overlay units of the svga device. | ||
| 457 | * The SVGA overlay units does not work like regular hardware units in | ||
| 458 | * that they do not automaticaly read back the contents of the given dma | ||
| 459 | * buffer. But instead only read back for each call to this ioctl, and | ||
| 460 | * at any point between this call being made and a following call that | ||
| 461 | * either changes the buffer or disables the stream. | ||
| 462 | */ | ||
| 463 | |||
| 464 | /** | ||
| 465 | * struct drm_vmw_rect | ||
| 466 | * | ||
| 467 | * Defines a rectangle. Used in the overlay ioctl to define | ||
| 468 | * source and destination rectangle. | ||
| 469 | */ | ||
| 470 | |||
| 471 | struct drm_vmw_rect { | ||
| 472 | int32_t x; | ||
| 473 | int32_t y; | ||
| 474 | uint32_t w; | ||
| 475 | uint32_t h; | ||
| 476 | }; | ||
| 477 | |||
| 478 | /** | ||
| 479 | * struct drm_vmw_control_stream_arg | ||
| 480 | * | ||
| 481 | * @stream_id: Stearm to control | ||
| 482 | * @enabled: If false all following arguments are ignored. | ||
| 483 | * @handle: Handle to buffer for getting data from. | ||
| 484 | * @format: Format of the overlay as understood by the host. | ||
| 485 | * @width: Width of the overlay. | ||
| 486 | * @height: Height of the overlay. | ||
| 487 | * @size: Size of the overlay in bytes. | ||
| 488 | * @pitch: Array of pitches, the two last are only used for YUV12 formats. | ||
| 489 | * @offset: Offset from start of dma buffer to overlay. | ||
| 490 | * @src: Source rect, must be within the defined area above. | ||
| 491 | * @dst: Destination rect, x and y may be negative. | ||
| 492 | * | ||
| 493 | * Argument to the DRM_VMW_CONTROL_STREAM Ioctl. | ||
| 494 | */ | ||
| 495 | |||
| 496 | struct drm_vmw_control_stream_arg { | ||
| 497 | uint32_t stream_id; | ||
| 498 | uint32_t enabled; | ||
| 499 | |||
| 500 | uint32_t flags; | ||
| 501 | uint32_t color_key; | ||
| 502 | |||
| 503 | uint32_t handle; | ||
| 504 | uint32_t offset; | ||
| 505 | int32_t format; | ||
| 506 | uint32_t size; | ||
| 507 | uint32_t width; | ||
| 508 | uint32_t height; | ||
| 509 | uint32_t pitch[3]; | ||
| 510 | |||
| 511 | uint32_t pad64; | ||
| 512 | struct drm_vmw_rect src; | ||
| 513 | struct drm_vmw_rect dst; | ||
| 514 | }; | ||
| 515 | |||
| 516 | /*************************************************************************/ | ||
| 517 | /** | ||
| 518 | * DRM_VMW_CURSOR_BYPASS - Give extra information about cursor bypass. | ||
| 519 | * | ||
| 520 | */ | ||
| 521 | |||
| 522 | #define DRM_VMW_CURSOR_BYPASS_ALL (1 << 0) | ||
| 523 | #define DRM_VMW_CURSOR_BYPASS_FLAGS (1) | ||
| 524 | |||
| 525 | /** | ||
| 526 | * struct drm_vmw_cursor_bypass_arg | ||
| 527 | * | ||
| 528 | * @flags: Flags. | ||
| 529 | * @crtc_id: Crtc id, only used if DMR_CURSOR_BYPASS_ALL isn't passed. | ||
| 530 | * @xpos: X position of cursor. | ||
| 531 | * @ypos: Y position of cursor. | ||
| 532 | * @xhot: X hotspot. | ||
| 533 | * @yhot: Y hotspot. | ||
| 534 | * | ||
| 535 | * Argument to the DRM_VMW_CURSOR_BYPASS Ioctl. | ||
| 536 | */ | ||
| 537 | |||
| 538 | struct drm_vmw_cursor_bypass_arg { | ||
| 539 | uint32_t flags; | ||
| 540 | uint32_t crtc_id; | ||
| 541 | int32_t xpos; | ||
| 542 | int32_t ypos; | ||
| 543 | int32_t xhot; | ||
| 544 | int32_t yhot; | ||
| 545 | }; | ||
| 546 | |||
| 547 | /*************************************************************************/ | ||
| 548 | /** | ||
| 549 | * DRM_VMW_CLAIM_STREAM - Claim a single stream. | ||
| 550 | */ | ||
| 551 | |||
| 552 | /** | ||
| 553 | * struct drm_vmw_context_arg | ||
| 554 | * | ||
| 555 | * @stream_id: Device unique context ID. | ||
| 556 | * | ||
| 557 | * Output argument to the DRM_VMW_CREATE_CONTEXT Ioctl. | ||
| 558 | * Input argument to the DRM_VMW_UNREF_CONTEXT Ioctl. | ||
| 559 | */ | ||
| 560 | |||
| 561 | struct drm_vmw_stream_arg { | ||
| 562 | uint32_t stream_id; | ||
| 563 | uint32_t pad64; | ||
| 564 | }; | ||
| 565 | |||
| 566 | /*************************************************************************/ | ||
| 567 | /** | ||
| 568 | * DRM_VMW_UNREF_STREAM - Unclaim a stream. | ||
| 569 | * | ||
| 570 | * Return a single stream that was claimed by this process. Also makes | ||
| 571 | * sure that the stream has been stopped. | ||
| 572 | */ | ||
| 573 | |||
| 574 | #endif | ||
diff --git a/include/linux/Kbuild b/include/linux/Kbuild index f72914db2a11..756f831cbdd5 100644 --- a/include/linux/Kbuild +++ b/include/linux/Kbuild | |||
| @@ -118,6 +118,7 @@ header-y += mtio.h | |||
| 118 | header-y += ncp_no.h | 118 | header-y += ncp_no.h |
| 119 | header-y += neighbour.h | 119 | header-y += neighbour.h |
| 120 | header-y += net_dropmon.h | 120 | header-y += net_dropmon.h |
| 121 | header-y += net_tstamp.h | ||
| 121 | header-y += netfilter_arp.h | 122 | header-y += netfilter_arp.h |
| 122 | header-y += netrom.h | 123 | header-y += netrom.h |
| 123 | header-y += nfs2.h | 124 | header-y += nfs2.h |
diff --git a/include/linux/backlight.h b/include/linux/backlight.h index 0f5f57858a23..8c4f884db6b4 100644 --- a/include/linux/backlight.h +++ b/include/linux/backlight.h | |||
| @@ -36,18 +36,18 @@ struct backlight_device; | |||
| 36 | struct fb_info; | 36 | struct fb_info; |
| 37 | 37 | ||
| 38 | struct backlight_ops { | 38 | struct backlight_ops { |
| 39 | unsigned int options; | 39 | const unsigned int options; |
| 40 | 40 | ||
| 41 | #define BL_CORE_SUSPENDRESUME (1 << 0) | 41 | #define BL_CORE_SUSPENDRESUME (1 << 0) |
| 42 | 42 | ||
| 43 | /* Notify the backlight driver some property has changed */ | 43 | /* Notify the backlight driver some property has changed */ |
| 44 | int (*update_status)(struct backlight_device *); | 44 | int (* const update_status)(struct backlight_device *); |
| 45 | /* Return the current backlight brightness (accounting for power, | 45 | /* Return the current backlight brightness (accounting for power, |
| 46 | fb_blank etc.) */ | 46 | fb_blank etc.) */ |
| 47 | int (*get_brightness)(struct backlight_device *); | 47 | int (* const get_brightness)(struct backlight_device *); |
| 48 | /* Check if given framebuffer device is the one bound to this backlight; | 48 | /* Check if given framebuffer device is the one bound to this backlight; |
| 49 | return 0 if not, !=0 if it is. If NULL, backlight always matches the fb. */ | 49 | return 0 if not, !=0 if it is. If NULL, backlight always matches the fb. */ |
| 50 | int (*check_fb)(struct fb_info *); | 50 | int (* const check_fb)(struct fb_info *); |
| 51 | }; | 51 | }; |
| 52 | 52 | ||
| 53 | /* This structure defines all the properties of a backlight */ | 53 | /* This structure defines all the properties of a backlight */ |
| @@ -86,7 +86,7 @@ struct backlight_device { | |||
| 86 | registered this device has been unloaded, and if class_get_devdata() | 86 | registered this device has been unloaded, and if class_get_devdata() |
| 87 | points to something in the body of that driver, it is also invalid. */ | 87 | points to something in the body of that driver, it is also invalid. */ |
| 88 | struct mutex ops_lock; | 88 | struct mutex ops_lock; |
| 89 | struct backlight_ops *ops; | 89 | const struct backlight_ops *ops; |
| 90 | 90 | ||
| 91 | /* The framebuffer notifier block */ | 91 | /* The framebuffer notifier block */ |
| 92 | struct notifier_block fb_notif; | 92 | struct notifier_block fb_notif; |
| @@ -103,7 +103,7 @@ static inline void backlight_update_status(struct backlight_device *bd) | |||
| 103 | } | 103 | } |
| 104 | 104 | ||
| 105 | extern struct backlight_device *backlight_device_register(const char *name, | 105 | extern struct backlight_device *backlight_device_register(const char *name, |
| 106 | struct device *dev, void *devdata, struct backlight_ops *ops); | 106 | struct device *dev, void *devdata, const struct backlight_ops *ops); |
| 107 | extern void backlight_device_unregister(struct backlight_device *bd); | 107 | extern void backlight_device_unregister(struct backlight_device *bd); |
| 108 | extern void backlight_force_update(struct backlight_device *bd, | 108 | extern void backlight_force_update(struct backlight_device *bd, |
| 109 | enum backlight_update_reason reason); | 109 | enum backlight_update_reason reason); |
diff --git a/include/linux/binfmts.h b/include/linux/binfmts.h index aece486ac734..cd4349bdc34e 100644 --- a/include/linux/binfmts.h +++ b/include/linux/binfmts.h | |||
| @@ -68,6 +68,14 @@ struct linux_binprm{ | |||
| 68 | 68 | ||
| 69 | #define BINPRM_MAX_RECURSION 4 | 69 | #define BINPRM_MAX_RECURSION 4 |
| 70 | 70 | ||
| 71 | /* Function parameter for binfmt->coredump */ | ||
| 72 | struct coredump_params { | ||
| 73 | long signr; | ||
| 74 | struct pt_regs *regs; | ||
| 75 | struct file *file; | ||
| 76 | unsigned long limit; | ||
| 77 | }; | ||
| 78 | |||
| 71 | /* | 79 | /* |
| 72 | * This structure defines the functions that are used to load the binary formats that | 80 | * This structure defines the functions that are used to load the binary formats that |
| 73 | * linux accepts. | 81 | * linux accepts. |
| @@ -77,7 +85,7 @@ struct linux_binfmt { | |||
| 77 | struct module *module; | 85 | struct module *module; |
| 78 | int (*load_binary)(struct linux_binprm *, struct pt_regs * regs); | 86 | int (*load_binary)(struct linux_binprm *, struct pt_regs * regs); |
| 79 | int (*load_shlib)(struct file *); | 87 | int (*load_shlib)(struct file *); |
| 80 | int (*core_dump)(long signr, struct pt_regs *regs, struct file *file, unsigned long limit); | 88 | int (*core_dump)(struct coredump_params *cprm); |
| 81 | unsigned long min_coredump; /* minimal dump size */ | 89 | unsigned long min_coredump; /* minimal dump size */ |
| 82 | int hasvdso; | 90 | int hasvdso; |
| 83 | }; | 91 | }; |
diff --git a/include/linux/enclosure.h b/include/linux/enclosure.h index 90d1c2184112..9a33c5f7e126 100644 --- a/include/linux/enclosure.h +++ b/include/linux/enclosure.h | |||
| @@ -42,6 +42,8 @@ enum enclosure_status { | |||
| 42 | ENCLOSURE_STATUS_NOT_INSTALLED, | 42 | ENCLOSURE_STATUS_NOT_INSTALLED, |
| 43 | ENCLOSURE_STATUS_UNKNOWN, | 43 | ENCLOSURE_STATUS_UNKNOWN, |
| 44 | ENCLOSURE_STATUS_UNAVAILABLE, | 44 | ENCLOSURE_STATUS_UNAVAILABLE, |
| 45 | /* last element for counting purposes */ | ||
| 46 | ENCLOSURE_STATUS_MAX | ||
| 45 | }; | 47 | }; |
| 46 | 48 | ||
| 47 | /* SFF-8485 activity light settings */ | 49 | /* SFF-8485 activity light settings */ |
diff --git a/include/linux/fs.h b/include/linux/fs.h index 7c8ff12d1995..cca191933ff6 100644 --- a/include/linux/fs.h +++ b/include/linux/fs.h | |||
| @@ -152,6 +152,7 @@ struct inodes_stat_t { | |||
| 152 | #define WRITE_SYNC_PLUG (WRITE | (1 << BIO_RW_SYNCIO) | (1 << BIO_RW_NOIDLE)) | 152 | #define WRITE_SYNC_PLUG (WRITE | (1 << BIO_RW_SYNCIO) | (1 << BIO_RW_NOIDLE)) |
| 153 | #define WRITE_SYNC (WRITE_SYNC_PLUG | (1 << BIO_RW_UNPLUG)) | 153 | #define WRITE_SYNC (WRITE_SYNC_PLUG | (1 << BIO_RW_UNPLUG)) |
| 154 | #define WRITE_ODIRECT_PLUG (WRITE | (1 << BIO_RW_SYNCIO)) | 154 | #define WRITE_ODIRECT_PLUG (WRITE | (1 << BIO_RW_SYNCIO)) |
| 155 | #define WRITE_META (WRITE | (1 << BIO_RW_META)) | ||
| 155 | #define SWRITE_SYNC_PLUG \ | 156 | #define SWRITE_SYNC_PLUG \ |
| 156 | (SWRITE | (1 << BIO_RW_SYNCIO) | (1 << BIO_RW_NOIDLE)) | 157 | (SWRITE | (1 << BIO_RW_SYNCIO) | (1 << BIO_RW_NOIDLE)) |
| 157 | #define SWRITE_SYNC (SWRITE_SYNC_PLUG | (1 << BIO_RW_UNPLUG)) | 158 | #define SWRITE_SYNC (SWRITE_SYNC_PLUG | (1 << BIO_RW_UNPLUG)) |
| @@ -1094,10 +1095,6 @@ struct file_lock { | |||
| 1094 | 1095 | ||
| 1095 | extern void send_sigio(struct fown_struct *fown, int fd, int band); | 1096 | extern void send_sigio(struct fown_struct *fown, int fd, int band); |
| 1096 | 1097 | ||
| 1097 | /* fs/sync.c */ | ||
| 1098 | extern int do_sync_mapping_range(struct address_space *mapping, loff_t offset, | ||
| 1099 | loff_t endbyte, unsigned int flags); | ||
| 1100 | |||
| 1101 | #ifdef CONFIG_FILE_LOCKING | 1098 | #ifdef CONFIG_FILE_LOCKING |
| 1102 | extern int fcntl_getlk(struct file *, struct flock __user *); | 1099 | extern int fcntl_getlk(struct file *, struct flock __user *); |
| 1103 | extern int fcntl_setlk(unsigned int, struct file *, unsigned int, | 1100 | extern int fcntl_setlk(unsigned int, struct file *, unsigned int, |
| @@ -1590,7 +1587,7 @@ struct super_operations { | |||
| 1590 | * until that flag is cleared. I_WILL_FREE, I_FREEING and I_CLEAR are set at | 1587 | * until that flag is cleared. I_WILL_FREE, I_FREEING and I_CLEAR are set at |
| 1591 | * various stages of removing an inode. | 1588 | * various stages of removing an inode. |
| 1592 | * | 1589 | * |
| 1593 | * Two bits are used for locking and completion notification, I_LOCK and I_SYNC. | 1590 | * Two bits are used for locking and completion notification, I_NEW and I_SYNC. |
| 1594 | * | 1591 | * |
| 1595 | * I_DIRTY_SYNC Inode is dirty, but doesn't have to be written on | 1592 | * I_DIRTY_SYNC Inode is dirty, but doesn't have to be written on |
| 1596 | * fdatasync(). i_atime is the usual cause. | 1593 | * fdatasync(). i_atime is the usual cause. |
| @@ -1599,8 +1596,14 @@ struct super_operations { | |||
| 1599 | * don't have to write inode on fdatasync() when only | 1596 | * don't have to write inode on fdatasync() when only |
| 1600 | * mtime has changed in it. | 1597 | * mtime has changed in it. |
| 1601 | * I_DIRTY_PAGES Inode has dirty pages. Inode itself may be clean. | 1598 | * I_DIRTY_PAGES Inode has dirty pages. Inode itself may be clean. |
| 1602 | * I_NEW get_new_inode() sets i_state to I_LOCK|I_NEW. Both | 1599 | * I_NEW Serves as both a mutex and completion notification. |
| 1603 | * are cleared by unlock_new_inode(), called from iget(). | 1600 | * New inodes set I_NEW. If two processes both create |
| 1601 | * the same inode, one of them will release its inode and | ||
| 1602 | * wait for I_NEW to be released before returning. | ||
| 1603 | * Inodes in I_WILL_FREE, I_FREEING or I_CLEAR state can | ||
| 1604 | * also cause waiting on I_NEW, without I_NEW actually | ||
| 1605 | * being set. find_inode() uses this to prevent returning | ||
| 1606 | * nearly-dead inodes. | ||
| 1604 | * I_WILL_FREE Must be set when calling write_inode_now() if i_count | 1607 | * I_WILL_FREE Must be set when calling write_inode_now() if i_count |
| 1605 | * is zero. I_FREEING must be set when I_WILL_FREE is | 1608 | * is zero. I_FREEING must be set when I_WILL_FREE is |
| 1606 | * cleared. | 1609 | * cleared. |
| @@ -1614,20 +1617,11 @@ struct super_operations { | |||
| 1614 | * prohibited for many purposes. iget() must wait for | 1617 | * prohibited for many purposes. iget() must wait for |
| 1615 | * the inode to be completely released, then create it | 1618 | * the inode to be completely released, then create it |
| 1616 | * anew. Other functions will just ignore such inodes, | 1619 | * anew. Other functions will just ignore such inodes, |
| 1617 | * if appropriate. I_LOCK is used for waiting. | 1620 | * if appropriate. I_NEW is used for waiting. |
| 1618 | * | 1621 | * |
| 1619 | * I_LOCK Serves as both a mutex and completion notification. | 1622 | * I_SYNC Synchonized write of dirty inode data. The bits is |
| 1620 | * New inodes set I_LOCK. If two processes both create | 1623 | * set during data writeback, and cleared with a wakeup |
| 1621 | * the same inode, one of them will release its inode and | 1624 | * on the bit address once it is done. |
| 1622 | * wait for I_LOCK to be released before returning. | ||
| 1623 | * Inodes in I_WILL_FREE, I_FREEING or I_CLEAR state can | ||
| 1624 | * also cause waiting on I_LOCK, without I_LOCK actually | ||
| 1625 | * being set. find_inode() uses this to prevent returning | ||
| 1626 | * nearly-dead inodes. | ||
| 1627 | * I_SYNC Similar to I_LOCK, but limited in scope to writeback | ||
| 1628 | * of inode dirty data. Having a separate lock for this | ||
| 1629 | * purpose reduces latency and prevents some filesystem- | ||
| 1630 | * specific deadlocks. | ||
| 1631 | * | 1625 | * |
| 1632 | * Q: What is the difference between I_WILL_FREE and I_FREEING? | 1626 | * Q: What is the difference between I_WILL_FREE and I_FREEING? |
| 1633 | * Q: igrab() only checks on (I_FREEING|I_WILL_FREE). Should it also check on | 1627 | * Q: igrab() only checks on (I_FREEING|I_WILL_FREE). Should it also check on |
| @@ -1636,13 +1630,12 @@ struct super_operations { | |||
| 1636 | #define I_DIRTY_SYNC 1 | 1630 | #define I_DIRTY_SYNC 1 |
| 1637 | #define I_DIRTY_DATASYNC 2 | 1631 | #define I_DIRTY_DATASYNC 2 |
| 1638 | #define I_DIRTY_PAGES 4 | 1632 | #define I_DIRTY_PAGES 4 |
| 1639 | #define I_NEW 8 | 1633 | #define __I_NEW 3 |
| 1634 | #define I_NEW (1 << __I_NEW) | ||
| 1640 | #define I_WILL_FREE 16 | 1635 | #define I_WILL_FREE 16 |
| 1641 | #define I_FREEING 32 | 1636 | #define I_FREEING 32 |
| 1642 | #define I_CLEAR 64 | 1637 | #define I_CLEAR 64 |
| 1643 | #define __I_LOCK 7 | 1638 | #define __I_SYNC 7 |
| 1644 | #define I_LOCK (1 << __I_LOCK) | ||
| 1645 | #define __I_SYNC 8 | ||
| 1646 | #define I_SYNC (1 << __I_SYNC) | 1639 | #define I_SYNC (1 << __I_SYNC) |
| 1647 | 1640 | ||
| 1648 | #define I_DIRTY (I_DIRTY_SYNC | I_DIRTY_DATASYNC | I_DIRTY_PAGES) | 1641 | #define I_DIRTY (I_DIRTY_SYNC | I_DIRTY_DATASYNC | I_DIRTY_PAGES) |
diff --git a/include/linux/fs_stack.h b/include/linux/fs_stack.h index bb516ceeefc9..da317c7163ab 100644 --- a/include/linux/fs_stack.h +++ b/include/linux/fs_stack.h | |||
| @@ -8,10 +8,8 @@ | |||
| 8 | #include <linux/fs.h> | 8 | #include <linux/fs.h> |
| 9 | 9 | ||
| 10 | /* externs for fs/stack.c */ | 10 | /* externs for fs/stack.c */ |
| 11 | extern void fsstack_copy_attr_all(struct inode *dest, const struct inode *src, | 11 | extern void fsstack_copy_attr_all(struct inode *dest, const struct inode *src); |
| 12 | int (*get_nlinks)(struct inode *)); | 12 | extern void fsstack_copy_inode_size(struct inode *dst, struct inode *src); |
| 13 | |||
| 14 | extern void fsstack_copy_inode_size(struct inode *dst, const struct inode *src); | ||
| 15 | 13 | ||
| 16 | /* inlines */ | 14 | /* inlines */ |
| 17 | static inline void fsstack_copy_attr_atime(struct inode *dest, | 15 | static inline void fsstack_copy_attr_atime(struct inode *dest, |
diff --git a/include/linux/init_task.h b/include/linux/init_task.h index 5ed8b9c50355..abec69b63d7e 100644 --- a/include/linux/init_task.h +++ b/include/linux/init_task.h | |||
| @@ -111,12 +111,6 @@ extern struct cred init_cred; | |||
| 111 | # define INIT_PERF_EVENTS(tsk) | 111 | # define INIT_PERF_EVENTS(tsk) |
| 112 | #endif | 112 | #endif |
| 113 | 113 | ||
| 114 | #ifdef CONFIG_FS_JOURNAL_INFO | ||
| 115 | #define INIT_JOURNAL_INFO .journal_info = NULL, | ||
| 116 | #else | ||
| 117 | #define INIT_JOURNAL_INFO | ||
| 118 | #endif | ||
| 119 | |||
| 120 | /* | 114 | /* |
| 121 | * INIT_TASK is used to set up the first task table, touch at | 115 | * INIT_TASK is used to set up the first task table, touch at |
| 122 | * your own risk!. Base=0, limit=0x1fffff (=2MB) | 116 | * your own risk!. Base=0, limit=0x1fffff (=2MB) |
| @@ -168,6 +162,7 @@ extern struct cred init_cred; | |||
| 168 | .signal = {{0}}}, \ | 162 | .signal = {{0}}}, \ |
| 169 | .blocked = {{0}}, \ | 163 | .blocked = {{0}}, \ |
| 170 | .alloc_lock = __SPIN_LOCK_UNLOCKED(tsk.alloc_lock), \ | 164 | .alloc_lock = __SPIN_LOCK_UNLOCKED(tsk.alloc_lock), \ |
| 165 | .journal_info = NULL, \ | ||
| 171 | .cpu_timers = INIT_CPU_TIMERS(tsk.cpu_timers), \ | 166 | .cpu_timers = INIT_CPU_TIMERS(tsk.cpu_timers), \ |
| 172 | .fs_excl = ATOMIC_INIT(0), \ | 167 | .fs_excl = ATOMIC_INIT(0), \ |
| 173 | .pi_lock = __RAW_SPIN_LOCK_UNLOCKED(tsk.pi_lock), \ | 168 | .pi_lock = __RAW_SPIN_LOCK_UNLOCKED(tsk.pi_lock), \ |
| @@ -178,7 +173,6 @@ extern struct cred init_cred; | |||
| 178 | [PIDTYPE_SID] = INIT_PID_LINK(PIDTYPE_SID), \ | 173 | [PIDTYPE_SID] = INIT_PID_LINK(PIDTYPE_SID), \ |
| 179 | }, \ | 174 | }, \ |
| 180 | .dirties = INIT_PROP_LOCAL_SINGLE(dirties), \ | 175 | .dirties = INIT_PROP_LOCAL_SINGLE(dirties), \ |
| 181 | INIT_JOURNAL_INFO \ | ||
| 182 | INIT_IDS \ | 176 | INIT_IDS \ |
| 183 | INIT_PERF_EVENTS(tsk) \ | 177 | INIT_PERF_EVENTS(tsk) \ |
| 184 | INIT_TRACE_IRQFLAGS \ | 178 | INIT_TRACE_IRQFLAGS \ |
diff --git a/include/linux/kmemleak.h b/include/linux/kmemleak.h index 3c7497d46ee9..99d9a6766f7e 100644 --- a/include/linux/kmemleak.h +++ b/include/linux/kmemleak.h | |||
| @@ -32,8 +32,7 @@ extern void kmemleak_padding(const void *ptr, unsigned long offset, | |||
| 32 | size_t size) __ref; | 32 | size_t size) __ref; |
| 33 | extern void kmemleak_not_leak(const void *ptr) __ref; | 33 | extern void kmemleak_not_leak(const void *ptr) __ref; |
| 34 | extern void kmemleak_ignore(const void *ptr) __ref; | 34 | extern void kmemleak_ignore(const void *ptr) __ref; |
| 35 | extern void kmemleak_scan_area(const void *ptr, unsigned long offset, | 35 | extern void kmemleak_scan_area(const void *ptr, size_t size, gfp_t gfp) __ref; |
| 36 | size_t length, gfp_t gfp) __ref; | ||
| 37 | extern void kmemleak_no_scan(const void *ptr) __ref; | 36 | extern void kmemleak_no_scan(const void *ptr) __ref; |
| 38 | 37 | ||
| 39 | static inline void kmemleak_alloc_recursive(const void *ptr, size_t size, | 38 | static inline void kmemleak_alloc_recursive(const void *ptr, size_t size, |
| @@ -84,8 +83,7 @@ static inline void kmemleak_not_leak(const void *ptr) | |||
| 84 | static inline void kmemleak_ignore(const void *ptr) | 83 | static inline void kmemleak_ignore(const void *ptr) |
| 85 | { | 84 | { |
| 86 | } | 85 | } |
| 87 | static inline void kmemleak_scan_area(const void *ptr, unsigned long offset, | 86 | static inline void kmemleak_scan_area(const void *ptr, size_t size, gfp_t gfp) |
| 88 | size_t length, gfp_t gfp) | ||
| 89 | { | 87 | { |
| 90 | } | 88 | } |
| 91 | static inline void kmemleak_erase(void **ptr) | 89 | static inline void kmemleak_erase(void **ptr) |
diff --git a/include/linux/leds-lp3944.h b/include/linux/leds-lp3944.h index afc9f9fd70f5..2618aa9063bc 100644 --- a/include/linux/leds-lp3944.h +++ b/include/linux/leds-lp3944.h | |||
| @@ -12,9 +12,6 @@ | |||
| 12 | #ifndef __LINUX_LEDS_LP3944_H | 12 | #ifndef __LINUX_LEDS_LP3944_H |
| 13 | #define __LINUX_LEDS_LP3944_H | 13 | #define __LINUX_LEDS_LP3944_H |
| 14 | 14 | ||
| 15 | #include <linux/leds.h> | ||
| 16 | #include <linux/workqueue.h> | ||
| 17 | |||
| 18 | #define LP3944_LED0 0 | 15 | #define LP3944_LED0 0 |
| 19 | #define LP3944_LED1 1 | 16 | #define LP3944_LED1 1 |
| 20 | #define LP3944_LED2 2 | 17 | #define LP3944_LED2 2 |
diff --git a/include/linux/leds-pca9532.h b/include/linux/leds-pca9532.h index 96eea90f01a8..f158eb1149aa 100644 --- a/include/linux/leds-pca9532.h +++ b/include/linux/leds-pca9532.h | |||
| @@ -32,7 +32,7 @@ struct pca9532_led { | |||
| 32 | struct i2c_client *client; | 32 | struct i2c_client *client; |
| 33 | char *name; | 33 | char *name; |
| 34 | struct led_classdev ldev; | 34 | struct led_classdev ldev; |
| 35 | struct work_struct work; | 35 | struct work_struct work; |
| 36 | enum pca9532_type type; | 36 | enum pca9532_type type; |
| 37 | enum pca9532_state state; | 37 | enum pca9532_state state; |
| 38 | }; | 38 | }; |
diff --git a/include/linux/leds-regulator.h b/include/linux/leds-regulator.h new file mode 100644 index 000000000000..5a8eb389aab8 --- /dev/null +++ b/include/linux/leds-regulator.h | |||
| @@ -0,0 +1,46 @@ | |||
| 1 | /* | ||
| 2 | * leds-regulator.h - platform data structure for regulator driven LEDs. | ||
| 3 | * | ||
| 4 | * Copyright (C) 2009 Antonio Ospite <ospite@studenti.unina.it> | ||
| 5 | * | ||
| 6 | * This program is free software; you can redistribute it and/or modify | ||
| 7 | * it under the terms of the GNU General Public License version 2 as | ||
| 8 | * published by the Free Software Foundation. | ||
| 9 | * | ||
| 10 | */ | ||
| 11 | |||
| 12 | #ifndef __LINUX_LEDS_REGULATOR_H | ||
| 13 | #define __LINUX_LEDS_REGULATOR_H | ||
| 14 | |||
| 15 | /* | ||
| 16 | * Use "vled" as supply id when declaring the regulator consumer: | ||
| 17 | * | ||
| 18 | * static struct regulator_consumer_supply pcap_regulator_VVIB_consumers [] = { | ||
| 19 | * { .dev_name = "leds-regulator.0", supply = "vled" }, | ||
| 20 | * }; | ||
| 21 | * | ||
| 22 | * If you have several regulator driven LEDs, you can append a numerical id to | ||
| 23 | * .dev_name as done above, and use the same id when declaring the platform | ||
| 24 | * device: | ||
| 25 | * | ||
| 26 | * static struct led_regulator_platform_data a780_vibrator_data = { | ||
| 27 | * .name = "a780::vibrator", | ||
| 28 | * }; | ||
| 29 | * | ||
| 30 | * static struct platform_device a780_vibrator = { | ||
| 31 | * .name = "leds-regulator", | ||
| 32 | * .id = 0, | ||
| 33 | * .dev = { | ||
| 34 | * .platform_data = &a780_vibrator_data, | ||
| 35 | * }, | ||
| 36 | * }; | ||
| 37 | */ | ||
| 38 | |||
| 39 | #include <linux/leds.h> | ||
| 40 | |||
| 41 | struct led_regulator_platform_data { | ||
| 42 | char *name; /* LED name as expected by LED class */ | ||
| 43 | enum led_brightness brightness; /* initial brightness value */ | ||
| 44 | }; | ||
| 45 | |||
| 46 | #endif /* __LINUX_LEDS_REGULATOR_H */ | ||
diff --git a/include/linux/lmb.h b/include/linux/lmb.h index 2442e3f3d033..ef82b8fcbddb 100644 --- a/include/linux/lmb.h +++ b/include/linux/lmb.h | |||
| @@ -54,6 +54,7 @@ extern u64 __init lmb_phys_mem_size(void); | |||
| 54 | extern u64 lmb_end_of_DRAM(void); | 54 | extern u64 lmb_end_of_DRAM(void); |
| 55 | extern void __init lmb_enforce_memory_limit(u64 memory_limit); | 55 | extern void __init lmb_enforce_memory_limit(u64 memory_limit); |
| 56 | extern int __init lmb_is_reserved(u64 addr); | 56 | extern int __init lmb_is_reserved(u64 addr); |
| 57 | extern int lmb_is_region_reserved(u64 base, u64 size); | ||
| 57 | extern int lmb_find(struct lmb_property *res); | 58 | extern int lmb_find(struct lmb_property *res); |
| 58 | 59 | ||
| 59 | extern void lmb_dump_all(void); | 60 | extern void lmb_dump_all(void); |
diff --git a/include/linux/mfd/wm831x/pdata.h b/include/linux/mfd/wm831x/pdata.h index 415c228743d5..fd322aca33ba 100644 --- a/include/linux/mfd/wm831x/pdata.h +++ b/include/linux/mfd/wm831x/pdata.h | |||
| @@ -41,6 +41,23 @@ struct wm831x_battery_pdata { | |||
| 41 | int timeout; /** Charge cycle timeout, in minutes */ | 41 | int timeout; /** Charge cycle timeout, in minutes */ |
| 42 | }; | 42 | }; |
| 43 | 43 | ||
| 44 | /** | ||
| 45 | * Configuration for the WM831x DC-DC BuckWise convertors. This | ||
| 46 | * should be passed as driver_data in the regulator_init_data. | ||
| 47 | * | ||
| 48 | * Currently all the configuration is for the fast DVS switching | ||
| 49 | * support of the devices. This allows MFPs on the device to be | ||
| 50 | * configured as an input to switch between two output voltages, | ||
| 51 | * allowing voltage transitions without the expense of an access over | ||
| 52 | * I2C or SPI buses. | ||
| 53 | */ | ||
| 54 | struct wm831x_buckv_pdata { | ||
| 55 | int dvs_gpio; /** CPU GPIO to use for DVS switching */ | ||
| 56 | int dvs_control_src; /** Hardware DVS source to use (1 or 2) */ | ||
| 57 | int dvs_init_state; /** DVS state to expect on startup */ | ||
| 58 | int dvs_state_gpio; /** CPU GPIO to use for monitoring status */ | ||
| 59 | }; | ||
| 60 | |||
| 44 | /* Sources for status LED configuration. Values are register values | 61 | /* Sources for status LED configuration. Values are register values |
| 45 | * plus 1 to allow for a zero default for preserve. | 62 | * plus 1 to allow for a zero default for preserve. |
| 46 | */ | 63 | */ |
diff --git a/include/linux/mmdebug.h b/include/linux/mmdebug.h index 8a5509877192..ee24ef8ab616 100644 --- a/include/linux/mmdebug.h +++ b/include/linux/mmdebug.h | |||
| @@ -1,8 +1,6 @@ | |||
| 1 | #ifndef LINUX_MM_DEBUG_H | 1 | #ifndef LINUX_MM_DEBUG_H |
| 2 | #define LINUX_MM_DEBUG_H 1 | 2 | #define LINUX_MM_DEBUG_H 1 |
| 3 | 3 | ||
| 4 | #include <linux/autoconf.h> | ||
| 5 | |||
| 6 | #ifdef CONFIG_DEBUG_VM | 4 | #ifdef CONFIG_DEBUG_VM |
| 7 | #define VM_BUG_ON(cond) BUG_ON(cond) | 5 | #define VM_BUG_ON(cond) BUG_ON(cond) |
| 8 | #else | 6 | #else |
diff --git a/include/linux/mmzone.h b/include/linux/mmzone.h index 6f7561730d88..30fe668c2542 100644 --- a/include/linux/mmzone.h +++ b/include/linux/mmzone.h | |||
| @@ -15,7 +15,7 @@ | |||
| 15 | #include <linux/seqlock.h> | 15 | #include <linux/seqlock.h> |
| 16 | #include <linux/nodemask.h> | 16 | #include <linux/nodemask.h> |
| 17 | #include <linux/pageblock-flags.h> | 17 | #include <linux/pageblock-flags.h> |
| 18 | #include <linux/bounds.h> | 18 | #include <generated/bounds.h> |
| 19 | #include <asm/atomic.h> | 19 | #include <asm/atomic.h> |
| 20 | #include <asm/page.h> | 20 | #include <asm/page.h> |
| 21 | 21 | ||
diff --git a/include/linux/mnt_namespace.h b/include/linux/mnt_namespace.h index d9ebf1037dfa..d74785c2393a 100644 --- a/include/linux/mnt_namespace.h +++ b/include/linux/mnt_namespace.h | |||
| @@ -23,6 +23,7 @@ struct proc_mounts { | |||
| 23 | 23 | ||
| 24 | struct fs_struct; | 24 | struct fs_struct; |
| 25 | 25 | ||
| 26 | extern struct mnt_namespace *create_mnt_ns(struct vfsmount *mnt); | ||
| 26 | extern struct mnt_namespace *copy_mnt_ns(unsigned long, struct mnt_namespace *, | 27 | extern struct mnt_namespace *copy_mnt_ns(unsigned long, struct mnt_namespace *, |
| 27 | struct fs_struct *); | 28 | struct fs_struct *); |
| 28 | extern void put_mnt_ns(struct mnt_namespace *ns); | 29 | extern void put_mnt_ns(struct mnt_namespace *ns); |
diff --git a/include/linux/page-flags.h b/include/linux/page-flags.h index feee2ba8d06a..5b59f35dcb8f 100644 --- a/include/linux/page-flags.h +++ b/include/linux/page-flags.h | |||
| @@ -8,7 +8,7 @@ | |||
| 8 | #include <linux/types.h> | 8 | #include <linux/types.h> |
| 9 | #ifndef __GENERATING_BOUNDS_H | 9 | #ifndef __GENERATING_BOUNDS_H |
| 10 | #include <linux/mm_types.h> | 10 | #include <linux/mm_types.h> |
| 11 | #include <linux/bounds.h> | 11 | #include <generated/bounds.h> |
| 12 | #endif /* !__GENERATING_BOUNDS_H */ | 12 | #endif /* !__GENERATING_BOUNDS_H */ |
| 13 | 13 | ||
| 14 | /* | 14 | /* |
diff --git a/include/linux/pwm_backlight.h b/include/linux/pwm_backlight.h index 7a9754c96775..01b3d759f1fc 100644 --- a/include/linux/pwm_backlight.h +++ b/include/linux/pwm_backlight.h | |||
| @@ -10,7 +10,7 @@ struct platform_pwm_backlight_data { | |||
| 10 | unsigned int dft_brightness; | 10 | unsigned int dft_brightness; |
| 11 | unsigned int pwm_period_ns; | 11 | unsigned int pwm_period_ns; |
| 12 | int (*init)(struct device *dev); | 12 | int (*init)(struct device *dev); |
| 13 | int (*notify)(int brightness); | 13 | int (*notify)(struct device *dev, int brightness); |
| 14 | void (*exit)(struct device *dev); | 14 | void (*exit)(struct device *dev); |
| 15 | }; | 15 | }; |
| 16 | 16 | ||
diff --git a/include/linux/regulator/consumer.h b/include/linux/regulator/consumer.h index 490c5b37b6d7..030d92255c7a 100644 --- a/include/linux/regulator/consumer.h +++ b/include/linux/regulator/consumer.h | |||
| @@ -35,6 +35,8 @@ | |||
| 35 | #ifndef __LINUX_REGULATOR_CONSUMER_H_ | 35 | #ifndef __LINUX_REGULATOR_CONSUMER_H_ |
| 36 | #define __LINUX_REGULATOR_CONSUMER_H_ | 36 | #define __LINUX_REGULATOR_CONSUMER_H_ |
| 37 | 37 | ||
| 38 | #include <linux/device.h> | ||
| 39 | |||
| 38 | /* | 40 | /* |
| 39 | * Regulator operating modes. | 41 | * Regulator operating modes. |
| 40 | * | 42 | * |
diff --git a/include/linux/regulator/machine.h b/include/linux/regulator/machine.h index 87f5f176d4ef..234a8476cba8 100644 --- a/include/linux/regulator/machine.h +++ b/include/linux/regulator/machine.h | |||
| @@ -43,16 +43,20 @@ struct regulator; | |||
| 43 | /** | 43 | /** |
| 44 | * struct regulator_state - regulator state during low power system states | 44 | * struct regulator_state - regulator state during low power system states |
| 45 | * | 45 | * |
| 46 | * This describes a regulators state during a system wide low power state. | 46 | * This describes a regulators state during a system wide low power |
| 47 | * state. One of enabled or disabled must be set for the | ||
| 48 | * configuration to be applied. | ||
| 47 | * | 49 | * |
| 48 | * @uV: Operating voltage during suspend. | 50 | * @uV: Operating voltage during suspend. |
| 49 | * @mode: Operating mode during suspend. | 51 | * @mode: Operating mode during suspend. |
| 50 | * @enabled: Enabled during suspend. | 52 | * @enabled: Enabled during suspend. |
| 53 | * @disabled: Disabled during suspend. | ||
| 51 | */ | 54 | */ |
| 52 | struct regulator_state { | 55 | struct regulator_state { |
| 53 | int uV; /* suspend voltage */ | 56 | int uV; /* suspend voltage */ |
| 54 | unsigned int mode; /* suspend regulator operating mode */ | 57 | unsigned int mode; /* suspend regulator operating mode */ |
| 55 | int enabled; /* is regulator enabled in this suspend state */ | 58 | int enabled; /* is regulator enabled in this suspend state */ |
| 59 | int disabled; /* is the regulator disbled in this suspend state */ | ||
| 56 | }; | 60 | }; |
| 57 | 61 | ||
| 58 | /** | 62 | /** |
diff --git a/include/linux/regulator/max8660.h b/include/linux/regulator/max8660.h new file mode 100644 index 000000000000..9936763621c7 --- /dev/null +++ b/include/linux/regulator/max8660.h | |||
| @@ -0,0 +1,57 @@ | |||
| 1 | /* | ||
| 2 | * max8660.h -- Voltage regulation for the Maxim 8660/8661 | ||
| 3 | * | ||
| 4 | * Copyright (C) 2009 Wolfram Sang, Pengutronix e.K. | ||
| 5 | * | ||
| 6 | * This program is free software; you can redistribute it and/or modify | ||
| 7 | * it under the terms of the GNU General Public License as published by | ||
| 8 | * the Free Software Foundation; version 2 of the License. | ||
| 9 | * | ||
| 10 | * This program is distributed in the hope that it will be useful, | ||
| 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| 13 | * GNU General Public License for more details. | ||
| 14 | * | ||
| 15 | * You should have received a copy of the GNU General Public License | ||
| 16 | * along with this program; if not, write to the Free Software | ||
| 17 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | ||
| 18 | */ | ||
| 19 | |||
| 20 | #ifndef __LINUX_REGULATOR_MAX8660_H | ||
| 21 | #define __LINUX_REGULATOR_MAX8660_H | ||
| 22 | |||
| 23 | #include <linux/regulator/machine.h> | ||
| 24 | |||
| 25 | enum { | ||
| 26 | MAX8660_V3, | ||
| 27 | MAX8660_V4, | ||
| 28 | MAX8660_V5, | ||
| 29 | MAX8660_V6, | ||
| 30 | MAX8660_V7, | ||
| 31 | MAX8660_V_END, | ||
| 32 | }; | ||
| 33 | |||
| 34 | /** | ||
| 35 | * max8660_subdev_data - regulator subdev data | ||
| 36 | * @id: regulator id | ||
| 37 | * @name: regulator name | ||
| 38 | * @platform_data: regulator init data | ||
| 39 | */ | ||
| 40 | struct max8660_subdev_data { | ||
| 41 | int id; | ||
| 42 | char *name; | ||
| 43 | struct regulator_init_data *platform_data; | ||
| 44 | }; | ||
| 45 | |||
| 46 | /** | ||
| 47 | * max8660_platform_data - platform data for max8660 | ||
| 48 | * @num_subdevs: number of regulators used | ||
| 49 | * @subdevs: pointer to regulators used | ||
| 50 | * @en34_is_high: if EN34 is driven high, regulators cannot be en-/disabled. | ||
| 51 | */ | ||
| 52 | struct max8660_platform_data { | ||
| 53 | int num_subdevs; | ||
| 54 | struct max8660_subdev_data *subdevs; | ||
| 55 | unsigned en34_is_high:1; | ||
| 56 | }; | ||
| 57 | #endif | ||
diff --git a/include/linux/sched.h b/include/linux/sched.h index 244c287a5ac1..211ed32befbd 100644 --- a/include/linux/sched.h +++ b/include/linux/sched.h | |||
| @@ -1446,10 +1446,8 @@ struct task_struct { | |||
| 1446 | gfp_t lockdep_reclaim_gfp; | 1446 | gfp_t lockdep_reclaim_gfp; |
| 1447 | #endif | 1447 | #endif |
| 1448 | 1448 | ||
| 1449 | #ifdef CONFIG_FS_JOURNAL_INFO | ||
| 1450 | /* journalling filesystem info */ | 1449 | /* journalling filesystem info */ |
| 1451 | void *journal_info; | 1450 | void *journal_info; |
| 1452 | #endif | ||
| 1453 | 1451 | ||
| 1454 | /* stacked block device info */ | 1452 | /* stacked block device info */ |
| 1455 | struct bio *bio_list, **bio_tail; | 1453 | struct bio *bio_list, **bio_tail; |
diff --git a/include/linux/spi/dw_spi.h b/include/linux/spi/dw_spi.h new file mode 100644 index 000000000000..51b3e771a9a3 --- /dev/null +++ b/include/linux/spi/dw_spi.h | |||
| @@ -0,0 +1,212 @@ | |||
| 1 | #ifndef DW_SPI_HEADER_H | ||
| 2 | #define DW_SPI_HEADER_H | ||
| 3 | #include <linux/io.h> | ||
| 4 | |||
| 5 | /* Bit fields in CTRLR0 */ | ||
| 6 | #define SPI_DFS_OFFSET 0 | ||
| 7 | |||
| 8 | #define SPI_FRF_OFFSET 4 | ||
| 9 | #define SPI_FRF_SPI 0x0 | ||
| 10 | #define SPI_FRF_SSP 0x1 | ||
| 11 | #define SPI_FRF_MICROWIRE 0x2 | ||
| 12 | #define SPI_FRF_RESV 0x3 | ||
| 13 | |||
| 14 | #define SPI_MODE_OFFSET 6 | ||
| 15 | #define SPI_SCPH_OFFSET 6 | ||
| 16 | #define SPI_SCOL_OFFSET 7 | ||
| 17 | #define SPI_TMOD_OFFSET 8 | ||
| 18 | #define SPI_TMOD_TR 0x0 /* xmit & recv */ | ||
| 19 | #define SPI_TMOD_TO 0x1 /* xmit only */ | ||
| 20 | #define SPI_TMOD_RO 0x2 /* recv only */ | ||
| 21 | #define SPI_TMOD_EPROMREAD 0x3 /* eeprom read mode */ | ||
| 22 | |||
| 23 | #define SPI_SLVOE_OFFSET 10 | ||
| 24 | #define SPI_SRL_OFFSET 11 | ||
| 25 | #define SPI_CFS_OFFSET 12 | ||
| 26 | |||
| 27 | /* Bit fields in SR, 7 bits */ | ||
| 28 | #define SR_MASK 0x7f /* cover 7 bits */ | ||
| 29 | #define SR_BUSY (1 << 0) | ||
| 30 | #define SR_TF_NOT_FULL (1 << 1) | ||
| 31 | #define SR_TF_EMPT (1 << 2) | ||
| 32 | #define SR_RF_NOT_EMPT (1 << 3) | ||
| 33 | #define SR_RF_FULL (1 << 4) | ||
| 34 | #define SR_TX_ERR (1 << 5) | ||
| 35 | #define SR_DCOL (1 << 6) | ||
| 36 | |||
| 37 | /* Bit fields in ISR, IMR, RISR, 7 bits */ | ||
| 38 | #define SPI_INT_TXEI (1 << 0) | ||
| 39 | #define SPI_INT_TXOI (1 << 1) | ||
| 40 | #define SPI_INT_RXUI (1 << 2) | ||
| 41 | #define SPI_INT_RXOI (1 << 3) | ||
| 42 | #define SPI_INT_RXFI (1 << 4) | ||
| 43 | #define SPI_INT_MSTI (1 << 5) | ||
| 44 | |||
| 45 | /* TX RX interrupt level threshhold, max can be 256 */ | ||
| 46 | #define SPI_INT_THRESHOLD 32 | ||
| 47 | |||
| 48 | enum dw_ssi_type { | ||
| 49 | SSI_MOTO_SPI = 0, | ||
| 50 | SSI_TI_SSP, | ||
| 51 | SSI_NS_MICROWIRE, | ||
| 52 | }; | ||
| 53 | |||
| 54 | struct dw_spi_reg { | ||
| 55 | u32 ctrl0; | ||
| 56 | u32 ctrl1; | ||
| 57 | u32 ssienr; | ||
| 58 | u32 mwcr; | ||
| 59 | u32 ser; | ||
| 60 | u32 baudr; | ||
| 61 | u32 txfltr; | ||
| 62 | u32 rxfltr; | ||
| 63 | u32 txflr; | ||
| 64 | u32 rxflr; | ||
| 65 | u32 sr; | ||
| 66 | u32 imr; | ||
| 67 | u32 isr; | ||
| 68 | u32 risr; | ||
| 69 | u32 txoicr; | ||
| 70 | u32 rxoicr; | ||
| 71 | u32 rxuicr; | ||
| 72 | u32 msticr; | ||
| 73 | u32 icr; | ||
| 74 | u32 dmacr; | ||
| 75 | u32 dmatdlr; | ||
| 76 | u32 dmardlr; | ||
| 77 | u32 idr; | ||
| 78 | u32 version; | ||
| 79 | u32 dr; /* Currently oper as 32 bits, | ||
| 80 | though only low 16 bits matters */ | ||
| 81 | } __packed; | ||
| 82 | |||
| 83 | struct dw_spi { | ||
| 84 | struct spi_master *master; | ||
| 85 | struct spi_device *cur_dev; | ||
| 86 | struct device *parent_dev; | ||
| 87 | enum dw_ssi_type type; | ||
| 88 | |||
| 89 | void __iomem *regs; | ||
| 90 | unsigned long paddr; | ||
| 91 | u32 iolen; | ||
| 92 | int irq; | ||
| 93 | u32 max_freq; /* max bus freq supported */ | ||
| 94 | |||
| 95 | u16 bus_num; | ||
| 96 | u16 num_cs; /* supported slave numbers */ | ||
| 97 | |||
| 98 | /* Driver message queue */ | ||
| 99 | struct workqueue_struct *workqueue; | ||
| 100 | struct work_struct pump_messages; | ||
| 101 | spinlock_t lock; | ||
| 102 | struct list_head queue; | ||
| 103 | int busy; | ||
| 104 | int run; | ||
| 105 | |||
| 106 | /* Message Transfer pump */ | ||
| 107 | struct tasklet_struct pump_transfers; | ||
| 108 | |||
| 109 | /* Current message transfer state info */ | ||
| 110 | struct spi_message *cur_msg; | ||
| 111 | struct spi_transfer *cur_transfer; | ||
| 112 | struct chip_data *cur_chip; | ||
| 113 | struct chip_data *prev_chip; | ||
| 114 | size_t len; | ||
| 115 | void *tx; | ||
| 116 | void *tx_end; | ||
| 117 | void *rx; | ||
| 118 | void *rx_end; | ||
| 119 | int dma_mapped; | ||
| 120 | dma_addr_t rx_dma; | ||
| 121 | dma_addr_t tx_dma; | ||
| 122 | size_t rx_map_len; | ||
| 123 | size_t tx_map_len; | ||
| 124 | u8 n_bytes; /* current is a 1/2 bytes op */ | ||
| 125 | u8 max_bits_per_word; /* maxim is 16b */ | ||
| 126 | u32 dma_width; | ||
| 127 | int cs_change; | ||
| 128 | int (*write)(struct dw_spi *dws); | ||
| 129 | int (*read)(struct dw_spi *dws); | ||
| 130 | irqreturn_t (*transfer_handler)(struct dw_spi *dws); | ||
| 131 | void (*cs_control)(u32 command); | ||
| 132 | |||
| 133 | /* Dma info */ | ||
| 134 | int dma_inited; | ||
| 135 | struct dma_chan *txchan; | ||
| 136 | struct dma_chan *rxchan; | ||
| 137 | int txdma_done; | ||
| 138 | int rxdma_done; | ||
| 139 | u64 tx_param; | ||
| 140 | u64 rx_param; | ||
| 141 | struct device *dma_dev; | ||
| 142 | dma_addr_t dma_addr; | ||
| 143 | |||
| 144 | /* Bus interface info */ | ||
| 145 | void *priv; | ||
| 146 | #ifdef CONFIG_DEBUG_FS | ||
| 147 | struct dentry *debugfs; | ||
| 148 | #endif | ||
| 149 | }; | ||
| 150 | |||
| 151 | #define dw_readl(dw, name) \ | ||
| 152 | __raw_readl(&(((struct dw_spi_reg *)dw->regs)->name)) | ||
| 153 | #define dw_writel(dw, name, val) \ | ||
| 154 | __raw_writel((val), &(((struct dw_spi_reg *)dw->regs)->name)) | ||
| 155 | #define dw_readw(dw, name) \ | ||
| 156 | __raw_readw(&(((struct dw_spi_reg *)dw->regs)->name)) | ||
| 157 | #define dw_writew(dw, name, val) \ | ||
| 158 | __raw_writew((val), &(((struct dw_spi_reg *)dw->regs)->name)) | ||
| 159 | |||
| 160 | static inline void spi_enable_chip(struct dw_spi *dws, int enable) | ||
| 161 | { | ||
| 162 | dw_writel(dws, ssienr, (enable ? 1 : 0)); | ||
| 163 | } | ||
| 164 | |||
| 165 | static inline void spi_set_clk(struct dw_spi *dws, u16 div) | ||
| 166 | { | ||
| 167 | dw_writel(dws, baudr, div); | ||
| 168 | } | ||
| 169 | |||
| 170 | static inline void spi_chip_sel(struct dw_spi *dws, u16 cs) | ||
| 171 | { | ||
| 172 | if (cs > dws->num_cs) | ||
| 173 | return; | ||
| 174 | dw_writel(dws, ser, 1 << cs); | ||
| 175 | } | ||
| 176 | |||
| 177 | /* Disable IRQ bits */ | ||
| 178 | static inline void spi_mask_intr(struct dw_spi *dws, u32 mask) | ||
| 179 | { | ||
| 180 | u32 new_mask; | ||
| 181 | |||
| 182 | new_mask = dw_readl(dws, imr) & ~mask; | ||
| 183 | dw_writel(dws, imr, new_mask); | ||
| 184 | } | ||
| 185 | |||
| 186 | /* Enable IRQ bits */ | ||
| 187 | static inline void spi_umask_intr(struct dw_spi *dws, u32 mask) | ||
| 188 | { | ||
| 189 | u32 new_mask; | ||
| 190 | |||
| 191 | new_mask = dw_readl(dws, imr) | mask; | ||
| 192 | dw_writel(dws, imr, new_mask); | ||
| 193 | } | ||
| 194 | |||
| 195 | /* | ||
| 196 | * Each SPI slave device to work with dw_api controller should | ||
| 197 | * has such a structure claiming its working mode (PIO/DMA etc), | ||
| 198 | * which can be save in the "controller_data" member of the | ||
| 199 | * struct spi_device | ||
| 200 | */ | ||
| 201 | struct dw_spi_chip { | ||
| 202 | u8 poll_mode; /* 0 for contoller polling mode */ | ||
| 203 | u8 type; /* SPI/SSP/Micrwire */ | ||
| 204 | u8 enable_dma; | ||
| 205 | void (*cs_control)(u32 command); | ||
| 206 | }; | ||
| 207 | |||
| 208 | extern int dw_spi_add_host(struct dw_spi *dws); | ||
| 209 | extern void dw_spi_remove_host(struct dw_spi *dws); | ||
| 210 | extern int dw_spi_suspend_host(struct dw_spi *dws); | ||
| 211 | extern int dw_spi_resume_host(struct dw_spi *dws); | ||
| 212 | #endif /* DW_SPI_HEADER_H */ | ||
diff --git a/include/linux/vermagic.h b/include/linux/vermagic.h index 79b9837d9ca0..cf97b5b9d1fe 100644 --- a/include/linux/vermagic.h +++ b/include/linux/vermagic.h | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | #include <linux/utsrelease.h> | 1 | #include <generated/utsrelease.h> |
| 2 | #include <linux/module.h> | 2 | #include <linux/module.h> |
| 3 | 3 | ||
| 4 | /* Simply sanity version stamp for modules. */ | 4 | /* Simply sanity version stamp for modules. */ |
diff --git a/include/linux/vt.h b/include/linux/vt.h index 3fb9944e50a6..d5dd0bc408fd 100644 --- a/include/linux/vt.h +++ b/include/linux/vt.h | |||
| @@ -84,6 +84,8 @@ struct vt_setactivate { | |||
| 84 | 84 | ||
| 85 | #define VT_SETACTIVATE 0x560F /* Activate and set the mode of a console */ | 85 | #define VT_SETACTIVATE 0x560F /* Activate and set the mode of a console */ |
| 86 | 86 | ||
| 87 | #ifdef __KERNEL__ | ||
| 88 | |||
| 87 | #ifdef CONFIG_VT_CONSOLE | 89 | #ifdef CONFIG_VT_CONSOLE |
| 88 | 90 | ||
| 89 | extern int vt_kmsg_redirect(int new); | 91 | extern int vt_kmsg_redirect(int new); |
| @@ -97,6 +99,8 @@ static inline int vt_kmsg_redirect(int new) | |||
| 97 | 99 | ||
| 98 | #endif | 100 | #endif |
| 99 | 101 | ||
| 102 | #endif /* __KERNEL__ */ | ||
| 103 | |||
| 100 | #define vt_get_kmsg_redirect() vt_kmsg_redirect(-1) | 104 | #define vt_get_kmsg_redirect() vt_kmsg_redirect(-1) |
| 101 | 105 | ||
| 102 | #endif /* _LINUX_VT_H */ | 106 | #endif /* _LINUX_VT_H */ |
diff --git a/include/linux/writeback.h b/include/linux/writeback.h index 705f01fe413a..c18c008f4bbf 100644 --- a/include/linux/writeback.h +++ b/include/linux/writeback.h | |||
| @@ -79,8 +79,7 @@ void wakeup_flusher_threads(long nr_pages); | |||
| 79 | static inline void wait_on_inode(struct inode *inode) | 79 | static inline void wait_on_inode(struct inode *inode) |
| 80 | { | 80 | { |
| 81 | might_sleep(); | 81 | might_sleep(); |
| 82 | wait_on_bit(&inode->i_state, __I_LOCK, inode_wait, | 82 | wait_on_bit(&inode->i_state, __I_NEW, inode_wait, TASK_UNINTERRUPTIBLE); |
| 83 | TASK_UNINTERRUPTIBLE); | ||
| 84 | } | 83 | } |
| 85 | static inline void inode_sync_wait(struct inode *inode) | 84 | static inline void inode_sync_wait(struct inode *inode) |
| 86 | { | 85 | { |
diff --git a/include/scsi/osd_initiator.h b/include/scsi/osd_initiator.h index 39d6d1097153..a8f370126632 100644 --- a/include/scsi/osd_initiator.h +++ b/include/scsi/osd_initiator.h | |||
| @@ -142,6 +142,7 @@ struct osd_request { | |||
| 142 | struct _osd_io_info { | 142 | struct _osd_io_info { |
| 143 | struct bio *bio; | 143 | struct bio *bio; |
| 144 | u64 total_bytes; | 144 | u64 total_bytes; |
| 145 | u64 residual; | ||
| 145 | struct request *req; | 146 | struct request *req; |
| 146 | struct _osd_req_data_segment *last_seg; | 147 | struct _osd_req_data_segment *last_seg; |
| 147 | u8 *pad_buff; | 148 | u8 *pad_buff; |
| @@ -150,12 +151,14 @@ struct osd_request { | |||
| 150 | gfp_t alloc_flags; | 151 | gfp_t alloc_flags; |
| 151 | unsigned timeout; | 152 | unsigned timeout; |
| 152 | unsigned retries; | 153 | unsigned retries; |
| 154 | unsigned sense_len; | ||
| 153 | u8 sense[OSD_MAX_SENSE_LEN]; | 155 | u8 sense[OSD_MAX_SENSE_LEN]; |
| 154 | enum osd_attributes_mode attributes_mode; | 156 | enum osd_attributes_mode attributes_mode; |
| 155 | 157 | ||
| 156 | osd_req_done_fn *async_done; | 158 | osd_req_done_fn *async_done; |
| 157 | void *async_private; | 159 | void *async_private; |
| 158 | int async_error; | 160 | int async_error; |
| 161 | int req_errors; | ||
| 159 | }; | 162 | }; |
| 160 | 163 | ||
| 161 | static inline bool osd_req_is_ver1(struct osd_request *or) | 164 | static inline bool osd_req_is_ver1(struct osd_request *or) |
| @@ -297,8 +300,6 @@ enum osd_err_priority { | |||
| 297 | }; | 300 | }; |
| 298 | 301 | ||
| 299 | struct osd_sense_info { | 302 | struct osd_sense_info { |
| 300 | u64 out_resid; /* Zero on success otherwise out residual */ | ||
| 301 | u64 in_resid; /* Zero on success otherwise in residual */ | ||
| 302 | enum osd_err_priority osd_err_pri; | 303 | enum osd_err_priority osd_err_pri; |
| 303 | 304 | ||
| 304 | int key; /* one of enum scsi_sense_keys */ | 305 | int key; /* one of enum scsi_sense_keys */ |
