Subversion Repositories Kolibri OS

Rev

Rev 1404 | Rev 3764 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 1404 Rev 2997
Line 31... Line 31...
31
 */
31
 */
32
#include 
32
#include 
33
#include 
33
#include 
34
#include 
34
#include 
35
#include 
35
#include 
-
 
36
#include 
36
#include 
37
#include 
37
#include 
38
#include 
38
#include 
39
#include 
-
 
40
#include 
39
#include "radeon_reg.h"
41
#include "radeon_reg.h"
40
#include "radeon.h"
42
#include "radeon.h"
Line 41... Line 43...
41
 
43
 
Line 55... Line 57...
55
 
57
 
56
 
58
 
57
/*
59
/*
58
 * Global memory.
60
 * Global memory.
59
 */
61
 */
60
static int radeon_ttm_mem_global_init(struct ttm_global_reference *ref)
62
static int radeon_ttm_mem_global_init(struct drm_global_reference *ref)
61
{
63
{
Line 62... Line 64...
62
	return ttm_mem_global_init(ref->object);
64
	return ttm_mem_global_init(ref->object);
63
}
65
}
64
 
66
 
65
static void radeon_ttm_mem_global_release(struct ttm_global_reference *ref)
67
static void radeon_ttm_mem_global_release(struct drm_global_reference *ref)
Line 66... Line 68...
66
{
68
{
67
	ttm_mem_global_release(ref->object);
69
	ttm_mem_global_release(ref->object);
68
}
70
}
69
 
71
 
Line 70... Line 72...
70
static int radeon_ttm_global_init(struct radeon_device *rdev)
72
static int radeon_ttm_global_init(struct radeon_device *rdev)
71
{
73
{
72
	struct ttm_global_reference *global_ref;
74
	struct drm_global_reference *global_ref;
73
	int r;
75
	int r;
74
 
76
 
75
	rdev->mman.mem_global_referenced = false;
77
	rdev->mman.mem_global_referenced = false;
76
	global_ref = &rdev->mman.mem_global_ref;
78
	global_ref = &rdev->mman.mem_global_ref;
77
	global_ref->global_type = TTM_GLOBAL_TTM_MEM;
79
	global_ref->global_type = DRM_GLOBAL_TTM_MEM;
78
	global_ref->size = sizeof(struct ttm_mem_global);
80
	global_ref->size = sizeof(struct ttm_mem_global);
79
	global_ref->init = &radeon_ttm_mem_global_init;
81
	global_ref->init = &radeon_ttm_mem_global_init;
80
	global_ref->release = &radeon_ttm_mem_global_release;
82
	global_ref->release = &radeon_ttm_mem_global_release;
81
	r = ttm_global_item_ref(global_ref);
83
	r = drm_global_item_ref(global_ref);
Line 82... Line 84...
82
	if (r != 0) {
84
	if (r != 0) {
83
		DRM_ERROR("Failed setting up TTM memory accounting "
85
		DRM_ERROR("Failed setting up TTM memory accounting "
84
			  "subsystem.\n");
86
			  "subsystem.\n");
85
		return r;
87
		return r;
86
	}
88
	}
87
 
89
 
88
	rdev->mman.bo_global_ref.mem_glob =
90
	rdev->mman.bo_global_ref.mem_glob =
89
		rdev->mman.mem_global_ref.object;
91
		rdev->mman.mem_global_ref.object;
90
	global_ref = &rdev->mman.bo_global_ref.ref;
92
	global_ref = &rdev->mman.bo_global_ref.ref;
91
	global_ref->global_type = TTM_GLOBAL_TTM_BO;
93
	global_ref->global_type = DRM_GLOBAL_TTM_BO;
92
	global_ref->size = sizeof(struct ttm_bo_global);
94
	global_ref->size = sizeof(struct ttm_bo_global);
93
	global_ref->init = &ttm_bo_global_init;
95
	global_ref->init = &ttm_bo_global_init;
94
	global_ref->release = &ttm_bo_global_release;
96
	global_ref->release = &ttm_bo_global_release;
Line 95... Line 97...
95
	r = ttm_global_item_ref(global_ref);
97
	r = drm_global_item_ref(global_ref);
96
	if (r != 0) {
98
	if (r != 0) {
97
		DRM_ERROR("Failed setting up TTM BO subsystem.\n");
99
		DRM_ERROR("Failed setting up TTM BO subsystem.\n");
Line 98... Line 100...
98
		ttm_global_item_unref(&rdev->mman.mem_global_ref);
100
		drm_global_item_unref(&rdev->mman.mem_global_ref);
99
		return r;
101
		return r;
-
 
102
	}
-
 
103
 
Line 100... Line 104...
100
	}
104
	rdev->mman.mem_global_referenced = true;
101
 
105
	return 0;
102
	rdev->mman.mem_global_referenced = true;
106
}
103
	return 0;
107
 
Line 120... Line 124...
120
		man->flags = TTM_MEMTYPE_FLAG_MAPPABLE;
124
		man->flags = TTM_MEMTYPE_FLAG_MAPPABLE;
121
		man->available_caching = TTM_PL_MASK_CACHING;
125
		man->available_caching = TTM_PL_MASK_CACHING;
122
		man->default_caching = TTM_PL_FLAG_CACHED;
126
		man->default_caching = TTM_PL_FLAG_CACHED;
123
		break;
127
		break;
124
	case TTM_PL_TT:
128
	case TTM_PL_TT:
-
 
129
		man->func = &ttm_bo_manager_func;
125
		man->gpu_offset = rdev->mc.gtt_location;
130
		man->gpu_offset = rdev->mc.gtt_start;
126
		man->available_caching = TTM_PL_MASK_CACHING;
131
		man->available_caching = TTM_PL_MASK_CACHING;
127
		man->default_caching = TTM_PL_FLAG_CACHED;
132
		man->default_caching = TTM_PL_FLAG_CACHED;
128
		man->flags = TTM_MEMTYPE_FLAG_MAPPABLE | TTM_MEMTYPE_FLAG_CMA;
133
		man->flags = TTM_MEMTYPE_FLAG_MAPPABLE | TTM_MEMTYPE_FLAG_CMA;
129
#if __OS_HAS_AGP
134
#if __OS_HAS_AGP
130
		if (rdev->flags & RADEON_IS_AGP) {
135
		if (rdev->flags & RADEON_IS_AGP) {
131
			if (!(drm_core_has_AGP(rdev->ddev) && rdev->ddev->agp)) {
136
			if (!(drm_core_has_AGP(rdev->ddev) && rdev->ddev->agp)) {
132
				DRM_ERROR("AGP is not enabled for memory type %u\n",
137
				DRM_ERROR("AGP is not enabled for memory type %u\n",
133
					  (unsigned)type);
138
					  (unsigned)type);
134
				return -EINVAL;
139
				return -EINVAL;
135
			}
140
			}
136
			man->io_offset = rdev->mc.agp_base;
-
 
137
			man->io_size = rdev->mc.gtt_size;
-
 
138
			man->io_addr = NULL;
-
 
139
			if (!rdev->ddev->agp->cant_use_aperture)
141
			if (!rdev->ddev->agp->cant_use_aperture)
140
				man->flags = TTM_MEMTYPE_FLAG_NEEDS_IOREMAP |
-
 
141
					     TTM_MEMTYPE_FLAG_MAPPABLE;
142
				man->flags = TTM_MEMTYPE_FLAG_MAPPABLE;
142
			man->available_caching = TTM_PL_FLAG_UNCACHED |
143
			man->available_caching = TTM_PL_FLAG_UNCACHED |
143
						 TTM_PL_FLAG_WC;
144
						 TTM_PL_FLAG_WC;
144
			man->default_caching = TTM_PL_FLAG_WC;
145
			man->default_caching = TTM_PL_FLAG_WC;
145
		} else
-
 
146
#endif
-
 
147
		{
-
 
148
			man->io_offset = 0;
-
 
149
			man->io_size = 0;
-
 
150
			man->io_addr = NULL;
-
 
151
		}
146
		}
-
 
147
#endif
152
		break;
148
		break;
153
	case TTM_PL_VRAM:
149
	case TTM_PL_VRAM:
154
		/* "On-card" video ram */
150
		/* "On-card" video ram */
-
 
151
		man->func = &ttm_bo_manager_func;
155
		man->gpu_offset = rdev->mc.vram_location;
152
		man->gpu_offset = rdev->mc.vram_start;
156
		man->flags = TTM_MEMTYPE_FLAG_FIXED |
153
		man->flags = TTM_MEMTYPE_FLAG_FIXED |
157
			     TTM_MEMTYPE_FLAG_NEEDS_IOREMAP |
-
 
158
			     TTM_MEMTYPE_FLAG_MAPPABLE;
154
			     TTM_MEMTYPE_FLAG_MAPPABLE;
159
		man->available_caching = TTM_PL_FLAG_UNCACHED | TTM_PL_FLAG_WC;
155
		man->available_caching = TTM_PL_FLAG_UNCACHED | TTM_PL_FLAG_WC;
160
		man->default_caching = TTM_PL_FLAG_WC;
156
		man->default_caching = TTM_PL_FLAG_WC;
161
		man->io_addr = NULL;
-
 
162
		man->io_offset = rdev->mc.aper_base;
-
 
163
		man->io_size = rdev->mc.aper_size;
-
 
164
		break;
157
		break;
165
	default:
158
	default:
166
		DRM_ERROR("Unsupported memory type %u\n", (unsigned)type);
159
		DRM_ERROR("Unsupported memory type %u\n", (unsigned)type);
167
		return -EINVAL;
160
		return -EINVAL;
168
	}
161
	}