Subversion Repositories Kolibri OS

Rev

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

Rev 1179 Rev 1221
Line 37... Line 37...
37
	int r;
37
	int r;
Line 38... Line 38...
38
 
38
 
39
	/* Setup GPU memory space */
39
	/* Setup GPU memory space */
40
	rdev->mc.vram_location = 0xFFFFFFFFUL;
40
	rdev->mc.vram_location = 0xFFFFFFFFUL;
-
 
41
	rdev->mc.gtt_location = 0xFFFFFFFFUL;
-
 
42
	if (rdev->flags & RADEON_IS_AGP) {
-
 
43
		r = radeon_agp_init(rdev);
-
 
44
		if (r) {
-
 
45
			printk(KERN_WARNING "[drm] Disabling AGP\n");
-
 
46
			rdev->flags &= ~RADEON_IS_AGP;
-
 
47
			rdev->mc.gtt_size = radeon_gart_size * 1024 * 1024;
-
 
48
		} else {
-
 
49
			rdev->mc.gtt_location = rdev->mc.agp_base;
-
 
50
		}
41
	rdev->mc.gtt_location = 0xFFFFFFFFUL;
51
	}
42
	r = radeon_mc_setup(rdev);
52
	r = radeon_mc_setup(rdev);
43
	if (r) {
53
	if (r) {
44
		return r;
54
		return r;
45
	}
55
	}
Line 143... Line 153...
143
}
153
}
Line 144... Line 154...
144
 
154
 
145
static void r420_clock_resume(struct radeon_device *rdev)
155
static void r420_clock_resume(struct radeon_device *rdev)
146
{
156
{
-
 
157
	u32 sclk_cntl;
-
 
158
 
-
 
159
	if (radeon_dynclks != -1 && radeon_dynclks)
147
	u32 sclk_cntl;
160
		radeon_atom_set_clock_gating(rdev, 1);
148
	sclk_cntl = RREG32_PLL(R_00000D_SCLK_CNTL);
161
	sclk_cntl = RREG32_PLL(R_00000D_SCLK_CNTL);
149
	sclk_cntl |= S_00000D_FORCE_CP(1) | S_00000D_FORCE_VIP(1);
162
	sclk_cntl |= S_00000D_FORCE_CP(1) | S_00000D_FORCE_VIP(1);
150
	if (rdev->family == CHIP_R420)
163
	if (rdev->family == CHIP_R420)
151
		sclk_cntl |= S_00000D_FORCE_PX(1) | S_00000D_FORCE_TX(1);
164
		sclk_cntl |= S_00000D_FORCE_PX(1) | S_00000D_FORCE_TX(1);
Line 155... Line 168...
155
static int r420_startup(struct radeon_device *rdev)
168
static int r420_startup(struct radeon_device *rdev)
156
{
169
{
157
	int r;
170
	int r;
Line 158... Line 171...
158
 
171
 
-
 
172
	r300_mc_program(rdev);
-
 
173
	/* Resume clock */
159
	r300_mc_program(rdev);
174
	r420_clock_resume(rdev);
160
	/* Initialize GART (initialize after TTM so we can allocate
175
	/* Initialize GART (initialize after TTM so we can allocate
161
	 * memory through TTM but finalize after TTM) */
176
	 * memory through TTM but finalize after TTM) */
162
	if (rdev->flags & RADEON_IS_PCIE) {
177
	if (rdev->flags & RADEON_IS_PCIE) {
163
		r = rv370_pcie_gart_enable(rdev);
178
		r = rv370_pcie_gart_enable(rdev);
Line 172... Line 187...
172
	r420_pipes_init(rdev);
187
	r420_pipes_init(rdev);
173
	/* Enable IRQ */
188
	/* Enable IRQ */
174
//	rdev->irq.sw_int = true;
189
//	rdev->irq.sw_int = true;
175
//	r100_irq_set(rdev);
190
//	r100_irq_set(rdev);
176
	/* 1M ring buffer */
191
	/* 1M ring buffer */
177
	r = r100_cp_init(rdev, 1024 * 1024);
192
//	r = r100_cp_init(rdev, 1024 * 1024);
178
	if (r) {
193
//	if (r) {
179
		dev_err(rdev->dev, "failled initializing CP (%d).\n", r);
194
//		dev_err(rdev->dev, "failled initializing CP (%d).\n", r);
180
		return r;
195
//		return r;
181
	}
196
//	}
182
//	r = r100_wb_init(rdev);
197
//	r = r100_wb_init(rdev);
183
//	if (r) {
198
//	if (r) {
184
//		dev_err(rdev->dev, "failled initializing WB (%d).\n", r);
199
//		dev_err(rdev->dev, "failled initializing WB (%d).\n", r);
185
//	}
200
//	}
186
//	r = r100_ib_init(rdev);
201
//	r = r100_ib_init(rdev);
Line 216... Line 231...
216
	r420_clock_resume(rdev);
231
	r420_clock_resume(rdev);
Line 217... Line 232...
217
 
232
 
218
	return r420_startup(rdev);
233
	return r420_startup(rdev);
Line 219... Line -...
219
}
-
 
220
 
-
 
221
int r420_suspend(struct radeon_device *rdev)
-
 
222
{
-
 
223
	r100_cp_disable(rdev);
-
 
224
//	r100_wb_disable(rdev);
-
 
225
//	r100_irq_disable(rdev);
-
 
226
	if (rdev->flags & RADEON_IS_PCIE)
-
 
227
		rv370_pcie_gart_disable(rdev);
-
 
228
	if (rdev->flags & RADEON_IS_PCI)
-
 
229
		r100_pci_gart_disable(rdev);
-
 
Line 230... Line -...
230
	return 0;
-
 
231
}
-
 
232
 
-
 
233
void r420_fini(struct radeon_device *rdev)
-
 
234
{
-
 
235
	r100_cp_fini(rdev);
-
 
236
//	r100_wb_fini(rdev);
-
 
237
//	r100_ib_fini(rdev);
-
 
238
	radeon_gem_fini(rdev);
-
 
239
	if (rdev->flags & RADEON_IS_PCIE)
-
 
240
		rv370_pcie_gart_fini(rdev);
-
 
241
	if (rdev->flags & RADEON_IS_PCI)
-
 
242
		r100_pci_gart_fini(rdev);
-
 
243
//	radeon_agp_fini(rdev);
-
 
244
//	radeon_irq_kms_fini(rdev);
-
 
245
//	radeon_fence_driver_fini(rdev);
-
 
246
//   radeon_object_fini(rdev);
-
 
247
	if (rdev->is_atom_bios) {
-
 
248
		radeon_atombios_fini(rdev);
-
 
249
	} else {
-
 
250
		radeon_combios_fini(rdev);
-
 
251
	}
-
 
Line 252... Line 234...
252
	kfree(rdev->bios);
234
}
253
	rdev->bios = NULL;
235
 
254
}
236
 
Line 255... Line -...
255
 
-
 
256
int r420_init(struct radeon_device *rdev)
237
 
257
{
238
int r420_init(struct radeon_device *rdev)
258
	int r;
239
{
259
 
240
	int r;
260
	rdev->new_init_path = true;
241
 
Line 333... Line 314...
333
	rdev->accel_working = true;
314
	rdev->accel_working = true;
334
	r = r420_startup(rdev);
315
	r = r420_startup(rdev);
335
	if (r) {
316
	if (r) {
336
		/* Somethings want wront with the accel init stop accel */
317
		/* Somethings want wront with the accel init stop accel */
337
		dev_err(rdev->dev, "Disabling GPU acceleration\n");
318
		dev_err(rdev->dev, "Disabling GPU acceleration\n");
338
		r420_suspend(rdev);
319
//       r420_suspend(rdev);
339
//		r100_cp_fini(rdev);
320
//		r100_cp_fini(rdev);
340
//		r100_wb_fini(rdev);
321
//		r100_wb_fini(rdev);
341
//		r100_ib_fini(rdev);
322
//		r100_ib_fini(rdev);
342
		if (rdev->flags & RADEON_IS_PCIE)
323
		if (rdev->flags & RADEON_IS_PCIE)
343
			rv370_pcie_gart_fini(rdev);
324
			rv370_pcie_gart_fini(rdev);