drmP.h (203288) | drmP.h (207066) |
---|---|
1/* drmP.h -- Private header for Direct Rendering Manager -*- linux-c -*- 2 * Created: Mon Jan 4 10:05:05 1999 by faith@precisioninsight.com 3 */ 4/*- 5 * Copyright 1999 Precision Insight, Inc., Cedar Park, Texas. 6 * Copyright 2000 VA Linux Systems, Inc., Sunnyvale, California. 7 * All rights reserved. 8 * --- 18 unchanged lines hidden (view full) --- 27 * 28 * Authors: 29 * Rickard E. (Rik) Faith <faith@valinux.com> 30 * Gareth Hughes <gareth@valinux.com> 31 * 32 */ 33 34#include <sys/cdefs.h> | 1/* drmP.h -- Private header for Direct Rendering Manager -*- linux-c -*- 2 * Created: Mon Jan 4 10:05:05 1999 by faith@precisioninsight.com 3 */ 4/*- 5 * Copyright 1999 Precision Insight, Inc., Cedar Park, Texas. 6 * Copyright 2000 VA Linux Systems, Inc., Sunnyvale, California. 7 * All rights reserved. 8 * --- 18 unchanged lines hidden (view full) --- 27 * 28 * Authors: 29 * Rickard E. (Rik) Faith <faith@valinux.com> 30 * Gareth Hughes <gareth@valinux.com> 31 * 32 */ 33 34#include <sys/cdefs.h> |
35__FBSDID("$FreeBSD: head/sys/dev/drm/drmP.h 203288 2010-01-31 14:30:39Z rnoland $"); | 35__FBSDID("$FreeBSD: head/sys/dev/drm/drmP.h 207066 2010-04-22 18:21:25Z rnoland $"); |
36 37#ifndef _DRM_P_H_ 38#define _DRM_P_H_ 39 40#if defined(_KERNEL) || defined(__KERNEL__) 41 42struct drm_device; 43struct drm_file; --- 190 unchanged lines hidden (view full) --- 234 * DRM_WRITEMEMORYBARRIER() prevents reordering of writes. 235 * DRM_MEMORYBARRIER() prevents reordering of reads and writes. 236 */ 237#define DRM_READMEMORYBARRIER() rmb() 238#define DRM_WRITEMEMORYBARRIER() wmb() 239#define DRM_MEMORYBARRIER() mb() 240 241#define DRM_READ8(map, offset) \ | 36 37#ifndef _DRM_P_H_ 38#define _DRM_P_H_ 39 40#if defined(_KERNEL) || defined(__KERNEL__) 41 42struct drm_device; 43struct drm_file; --- 190 unchanged lines hidden (view full) --- 234 * DRM_WRITEMEMORYBARRIER() prevents reordering of writes. 235 * DRM_MEMORYBARRIER() prevents reordering of reads and writes. 236 */ 237#define DRM_READMEMORYBARRIER() rmb() 238#define DRM_WRITEMEMORYBARRIER() wmb() 239#define DRM_MEMORYBARRIER() mb() 240 241#define DRM_READ8(map, offset) \ |
242 *(volatile u_int8_t *)(((vm_offset_t)(map)->handle) + \ | 242 *(volatile u_int8_t *)(((vm_offset_t)(map)->virtual) + \ |
243 (vm_offset_t)(offset)) 244#define DRM_READ16(map, offset) \ | 243 (vm_offset_t)(offset)) 244#define DRM_READ16(map, offset) \ |
245 *(volatile u_int16_t *)(((vm_offset_t)(map)->handle) + \ | 245 *(volatile u_int16_t *)(((vm_offset_t)(map)->virtual) + \ |
246 (vm_offset_t)(offset)) 247#define DRM_READ32(map, offset) \ | 246 (vm_offset_t)(offset)) 247#define DRM_READ32(map, offset) \ |
248 *(volatile u_int32_t *)(((vm_offset_t)(map)->handle) + \ | 248 *(volatile u_int32_t *)(((vm_offset_t)(map)->virtual) + \ |
249 (vm_offset_t)(offset)) 250#define DRM_WRITE8(map, offset, val) \ | 249 (vm_offset_t)(offset)) 250#define DRM_WRITE8(map, offset, val) \ |
251 *(volatile u_int8_t *)(((vm_offset_t)(map)->handle) + \ | 251 *(volatile u_int8_t *)(((vm_offset_t)(map)->virtual) + \ |
252 (vm_offset_t)(offset)) = val 253#define DRM_WRITE16(map, offset, val) \ | 252 (vm_offset_t)(offset)) = val 253#define DRM_WRITE16(map, offset, val) \ |
254 *(volatile u_int16_t *)(((vm_offset_t)(map)->handle) + \ | 254 *(volatile u_int16_t *)(((vm_offset_t)(map)->virtual) + \ |
255 (vm_offset_t)(offset)) = val 256#define DRM_WRITE32(map, offset, val) \ | 255 (vm_offset_t)(offset)) = val 256#define DRM_WRITE32(map, offset, val) \ |
257 *(volatile u_int32_t *)(((vm_offset_t)(map)->handle) + \ | 257 *(volatile u_int32_t *)(((vm_offset_t)(map)->virtual) + \ |
258 (vm_offset_t)(offset)) = val 259 260#define DRM_VERIFYAREA_READ( uaddr, size ) \ 261 (!useracc(__DECONST(caddr_t, uaddr), size, VM_PROT_READ)) 262 263#define DRM_COPY_TO_USER(user, kern, size) \ 264 copyout(kern, user, size) 265#define DRM_COPY_FROM_USER(kern, user, size) \ --- 210 unchanged lines hidden (view full) --- 476typedef struct drm_sg_mem { 477 unsigned long handle; 478 void *virtual; 479 int pages; 480 dma_addr_t *busaddr; 481 struct drm_dma_handle *dmah; /* Handle to PCI memory */ 482} drm_sg_mem_t; 483 | 258 (vm_offset_t)(offset)) = val 259 260#define DRM_VERIFYAREA_READ( uaddr, size ) \ 261 (!useracc(__DECONST(caddr_t, uaddr), size, VM_PROT_READ)) 262 263#define DRM_COPY_TO_USER(user, kern, size) \ 264 copyout(kern, user, size) 265#define DRM_COPY_FROM_USER(kern, user, size) \ --- 210 unchanged lines hidden (view full) --- 476typedef struct drm_sg_mem { 477 unsigned long handle; 478 void *virtual; 479 int pages; 480 dma_addr_t *busaddr; 481 struct drm_dma_handle *dmah; /* Handle to PCI memory */ 482} drm_sg_mem_t; 483 |
484#define DRM_MAP_HANDLE_BITS (sizeof(void *) == 4 ? 4 : 24) 485#define DRM_MAP_HANDLE_SHIFT (sizeof(void *) * 8 - DRM_MAP_HANDLE_BITS) |
|
484typedef TAILQ_HEAD(drm_map_list, drm_local_map) drm_map_list_t; 485 486typedef struct drm_local_map { | 486typedef TAILQ_HEAD(drm_map_list, drm_local_map) drm_map_list_t; 487 488typedef struct drm_local_map { |
487 unsigned long offset; /* Physical address (0 for SAREA)*/ 488 unsigned long size; /* Physical size (bytes) */ 489 enum drm_map_type type; /* Type of memory mapped */ 490 enum drm_map_flags flags; /* Flags */ 491 void *handle; /* User-space: "Handle" to pass to mmap */ 492 /* Kernel-space: kernel-virtual address */ 493 int mtrr; /* Boolean: MTRR used */ 494 /* Private data */ 495 int rid; /* PCI resource ID for bus_space */ | 489 unsigned long offset; /* Physical address (0 for SAREA) */ 490 unsigned long size; /* Physical size (bytes) */ 491 enum drm_map_type type; /* Type of memory mapped */ 492 enum drm_map_flags flags; /* Flags */ 493 void *handle; /* User-space: "Handle" to pass to mmap */ 494 /* Kernel-space: kernel-virtual address */ 495 int mtrr; /* Boolean: MTRR used */ 496 /* Private data */ 497 int rid; /* PCI resource ID for bus_space */ 498 void *virtual; /* Kernel-space: kernel-virtual address */ |
496 struct resource *bsr; 497 bus_space_tag_t bst; 498 bus_space_handle_t bsh; 499 drm_dma_handle_t *dmah; 500 TAILQ_ENTRY(drm_local_map) link; 501} drm_local_map_t; 502 503struct drm_vblank_info { --- 134 unchanged lines hidden (view full) --- 638 atomic_t counts[15]; 639 640 /* Authentication */ 641 drm_file_list_t files; 642 drm_magic_head_t magiclist[DRM_HASH_SIZE]; 643 644 /* Linked list of mappable regions. Protected by dev_lock */ 645 drm_map_list_t maplist; | 499 struct resource *bsr; 500 bus_space_tag_t bst; 501 bus_space_handle_t bsh; 502 drm_dma_handle_t *dmah; 503 TAILQ_ENTRY(drm_local_map) link; 504} drm_local_map_t; 505 506struct drm_vblank_info { --- 134 unchanged lines hidden (view full) --- 641 atomic_t counts[15]; 642 643 /* Authentication */ 644 drm_file_list_t files; 645 drm_magic_head_t magiclist[DRM_HASH_SIZE]; 646 647 /* Linked list of mappable regions. Protected by dev_lock */ 648 drm_map_list_t maplist; |
649 struct unrhdr *map_unrhdr; |
|
646 647 drm_local_map_t **context_sareas; 648 int max_context; 649 650 drm_lock_data_t lock; /* Information on hardware lock */ 651 652 /* DMA queues (contexts) */ 653 drm_device_dma_t *dma; /* Optional pointer for DMA support */ --- 314 unchanged lines hidden (view full) --- 968{ 969 free(pt, area); 970} 971 972/* Inline replacements for DRM_IOREMAP macros */ 973static __inline__ void 974drm_core_ioremap_wc(struct drm_local_map *map, struct drm_device *dev) 975{ | 650 651 drm_local_map_t **context_sareas; 652 int max_context; 653 654 drm_lock_data_t lock; /* Information on hardware lock */ 655 656 /* DMA queues (contexts) */ 657 drm_device_dma_t *dma; /* Optional pointer for DMA support */ --- 314 unchanged lines hidden (view full) --- 972{ 973 free(pt, area); 974} 975 976/* Inline replacements for DRM_IOREMAP macros */ 977static __inline__ void 978drm_core_ioremap_wc(struct drm_local_map *map, struct drm_device *dev) 979{ |
976 map->handle = drm_ioremap_wc(dev, map); | 980 map->virtual = drm_ioremap_wc(dev, map); |
977} 978static __inline__ void 979drm_core_ioremap(struct drm_local_map *map, struct drm_device *dev) 980{ | 981} 982static __inline__ void 983drm_core_ioremap(struct drm_local_map *map, struct drm_device *dev) 984{ |
981 map->handle = drm_ioremap(dev, map); | 985 map->virtual = drm_ioremap(dev, map); |
982} 983static __inline__ void 984drm_core_ioremapfree(struct drm_local_map *map, struct drm_device *dev) 985{ | 986} 987static __inline__ void 988drm_core_ioremapfree(struct drm_local_map *map, struct drm_device *dev) 989{ |
986 if ( map->handle && map->size ) | 990 if ( map->virtual && map->size ) |
987 drm_ioremapfree(map); 988} 989 990static __inline__ struct drm_local_map * 991drm_core_findmap(struct drm_device *dev, unsigned long offset) 992{ 993 drm_local_map_t *map; 994 995 DRM_SPINLOCK_ASSERT(&dev->dev_lock); 996 TAILQ_FOREACH(map, &dev->maplist, link) { | 991 drm_ioremapfree(map); 992} 993 994static __inline__ struct drm_local_map * 995drm_core_findmap(struct drm_device *dev, unsigned long offset) 996{ 997 drm_local_map_t *map; 998 999 DRM_SPINLOCK_ASSERT(&dev->dev_lock); 1000 TAILQ_FOREACH(map, &dev->maplist, link) { |
997 if (map->offset == offset) | 1001 if (offset == (unsigned long)map->handle) |
998 return map; 999 } 1000 return NULL; 1001} 1002 1003static __inline__ void drm_core_dropmap(struct drm_map *map) 1004{ 1005} 1006 1007#endif /* __KERNEL__ */ 1008#endif /* _DRM_P_H_ */ | 1002 return map; 1003 } 1004 return NULL; 1005} 1006 1007static __inline__ void drm_core_dropmap(struct drm_map *map) 1008{ 1009} 1010 1011#endif /* __KERNEL__ */ 1012#endif /* _DRM_P_H_ */ |