|
Lines 96-102
Link Here
|
| 96 |
unsigned int resource, int type, int flags) |
96 |
unsigned int resource, int type, int flags) |
| 97 |
{ |
97 |
{ |
| 98 |
drm_local_map_t *map; |
98 |
drm_local_map_t *map; |
| 99 |
struct resource *bsr; |
|
|
| 100 |
|
99 |
|
| 101 |
if (type != _DRM_REGISTERS && type != _DRM_FRAME_BUFFER) |
100 |
if (type != _DRM_REGISTERS && type != _DRM_FRAME_BUFFER) |
| 102 |
return EINVAL; |
101 |
return EINVAL; |
|
Lines 107-134
Link Here
|
| 107 |
if (map == NULL) |
106 |
if (map == NULL) |
| 108 |
return ENOMEM; |
107 |
return ENOMEM; |
| 109 |
|
108 |
|
| 110 |
map->rid = resource * 4 + 0x10; |
109 |
if (type == _DRM_REGISTERS) { |
| 111 |
bsr = bus_alloc_resource_any(dev->device, SYS_RES_MEMORY, &map->rid, |
110 |
struct resource *bsr; |
| 112 |
RF_ACTIVE | RF_SHAREABLE); |
111 |
map->rid = resource * 4 + 0x10; |
| 113 |
if (bsr == NULL) { |
112 |
bsr = bus_alloc_resource_any(dev->device, SYS_RES_MEMORY, &map->rid, |
| 114 |
DRM_ERROR("Couldn't allocate %s resource\n", |
113 |
RF_ACTIVE | RF_SHAREABLE); |
| 115 |
((type == _DRM_REGISTERS) ? "mmio" : "framebuffer")); |
114 |
if (bsr == NULL) { |
| 116 |
free(map, M_DRM); |
115 |
DRM_ERROR("Couldn't allocate %s resource\n", |
| 117 |
return ENOMEM; |
116 |
((type == _DRM_REGISTERS) ? "mmio" : "framebuffer")); |
|
|
117 |
free(map, M_DRM); |
| 118 |
return ENOMEM; |
| 119 |
} |
| 120 |
map->bsr = bsr; |
| 121 |
map->bst = rman_get_bustag(bsr); |
| 122 |
map->bsh = rman_get_bushandle(bsr); |
| 123 |
map->handle = rman_get_virtual(bsr); |
| 118 |
} |
124 |
} |
| 119 |
|
125 |
|
| 120 |
map->kernel_owned = 1; |
126 |
map->kernel_owned = 1; |
| 121 |
map->type = type; |
127 |
map->type = type; |
| 122 |
map->flags = flags; |
128 |
map->flags = flags; |
| 123 |
map->bsr = bsr; |
|
|
| 124 |
map->bst = rman_get_bustag(bsr); |
| 125 |
map->bsh = rman_get_bushandle(bsr); |
| 126 |
map->offset = start; |
129 |
map->offset = start; |
| 127 |
map->size = len; |
130 |
map->size = len; |
| 128 |
|
131 |
|
| 129 |
if (type == _DRM_REGISTERS) |
|
|
| 130 |
map->handle = rman_get_virtual(bsr); |
| 131 |
|
| 132 |
DRM_DEBUG("initmap %d,0x%x@0x%lx/0x%lx\n", map->type, map->flags, |
132 |
DRM_DEBUG("initmap %d,0x%x@0x%lx/0x%lx\n", map->type, map->flags, |
| 133 |
map->offset, map->size); |
133 |
map->offset, map->size); |
| 134 |
|
134 |
|