View | Details | Raw Unified | Return to bug 80718
Collapse All | Expand All

(-)dev/drm/drm_bufs.c (-15 / +15 lines)
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

Return to bug 80718