Subversion Repositories Kolibri OS

Rev

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

Rev 1321 Rev 1403
Line 54... Line 54...
54
	/* Setup GPU memory space */
54
	/* Setup GPU memory space */
55
	tmp = RREG32_MC(R_000004_MC_FB_LOCATION);
55
	tmp = RREG32_MC(R_000004_MC_FB_LOCATION);
56
	rdev->mc.vram_location = G_000004_MC_FB_START(tmp) << 16;
56
	rdev->mc.vram_location = G_000004_MC_FB_START(tmp) << 16;
57
	rdev->mc.gtt_location = 0xffffffffUL;
57
	rdev->mc.gtt_location = 0xffffffffUL;
58
	r = radeon_mc_setup(rdev);
58
	r = radeon_mc_setup(rdev);
-
 
59
	rdev->mc.igp_sideport_enabled = radeon_atombios_sideport_present(rdev);
59
	if (r)
60
	if (r)
60
		return r;
61
		return r;
61
	return 0;
62
	return 0;
62
}
63
}
Line 121... Line 122...
121
		struct radeon_connector *radeon_connector = to_radeon_connector(connector);
122
		struct radeon_connector *radeon_connector = to_radeon_connector(connector);
122
		switch (radeon_connector->hpd.hpd) {
123
		switch (radeon_connector->hpd.hpd) {
123
		case RADEON_HPD_1:
124
		case RADEON_HPD_1:
124
			WREG32(R_007D00_DC_HOT_PLUG_DETECT1_CONTROL,
125
			WREG32(R_007D00_DC_HOT_PLUG_DETECT1_CONTROL,
125
			       S_007D00_DC_HOT_PLUG_DETECT1_EN(1));
126
			       S_007D00_DC_HOT_PLUG_DETECT1_EN(1));
126
			rdev->irq.hpd[0] = true;
127
//           rdev->irq.hpd[0] = true;
127
			break;
128
			break;
128
		case RADEON_HPD_2:
129
		case RADEON_HPD_2:
129
			WREG32(R_007D10_DC_HOT_PLUG_DETECT2_CONTROL,
130
			WREG32(R_007D10_DC_HOT_PLUG_DETECT2_CONTROL,
130
			       S_007D10_DC_HOT_PLUG_DETECT2_EN(1));
131
			       S_007D10_DC_HOT_PLUG_DETECT2_EN(1));
131
			rdev->irq.hpd[1] = true;
132
//           rdev->irq.hpd[1] = true;
132
			break;
133
			break;
133
		default:
134
		default:
134
			break;
135
			break;
135
		}
136
		}
136
	}
137
	}
-
 
138
//   if (rdev->irq.installed)
137
	rs600_irq_set(rdev);
139
//   rs600_irq_set(rdev);
138
}
140
}
Line 139... Line 141...
139
 
141
 
140
void rs600_hpd_fini(struct radeon_device *rdev)
142
void rs600_hpd_fini(struct radeon_device *rdev)
141
{
143
{
Line 146... Line 148...
146
		struct radeon_connector *radeon_connector = to_radeon_connector(connector);
148
		struct radeon_connector *radeon_connector = to_radeon_connector(connector);
147
		switch (radeon_connector->hpd.hpd) {
149
		switch (radeon_connector->hpd.hpd) {
148
		case RADEON_HPD_1:
150
		case RADEON_HPD_1:
149
			WREG32(R_007D00_DC_HOT_PLUG_DETECT1_CONTROL,
151
			WREG32(R_007D00_DC_HOT_PLUG_DETECT1_CONTROL,
150
			       S_007D00_DC_HOT_PLUG_DETECT1_EN(0));
152
			       S_007D00_DC_HOT_PLUG_DETECT1_EN(0));
151
			rdev->irq.hpd[0] = false;
153
//           rdev->irq.hpd[0] = false;
152
			break;
154
			break;
153
		case RADEON_HPD_2:
155
		case RADEON_HPD_2:
154
			WREG32(R_007D10_DC_HOT_PLUG_DETECT2_CONTROL,
156
			WREG32(R_007D10_DC_HOT_PLUG_DETECT2_CONTROL,
155
			       S_007D10_DC_HOT_PLUG_DETECT2_EN(0));
157
			       S_007D10_DC_HOT_PLUG_DETECT2_EN(0));
156
			rdev->irq.hpd[1] = false;
158
//           rdev->irq.hpd[1] = false;
157
			break;
159
			break;
158
		default:
160
		default:
159
			break;
161
			break;
160
		}
162
		}
161
	}
163
	}
Line 300... Line 302...
300
	addr |= R600_PTE_READABLE | R600_PTE_WRITEABLE;
302
	addr |= R600_PTE_READABLE | R600_PTE_WRITEABLE;
301
	writeq(addr, ((void __iomem *)ptr) + (i * 8));
303
	writeq(addr, ((void __iomem *)ptr) + (i * 8));
302
	return 0;
304
	return 0;
303
}
305
}
Line -... Line 306...
-
 
306
 
304
 
307
/*
305
int rs600_irq_set(struct radeon_device *rdev)
308
int rs600_irq_set(struct radeon_device *rdev)
306
{
309
{
307
	uint32_t tmp = 0;
310
	uint32_t tmp = 0;
308
	uint32_t mode_int = 0;
311
	uint32_t mode_int = 0;
309
	u32 hpd1 = RREG32(R_007D08_DC_HOT_PLUG_DETECT1_INT_CONTROL) &
312
	u32 hpd1 = RREG32(R_007D08_DC_HOT_PLUG_DETECT1_INT_CONTROL) &
310
		~S_007D08_DC_HOT_PLUG_DETECT1_INT_EN(1);
313
		~S_007D08_DC_HOT_PLUG_DETECT1_INT_EN(1);
311
	u32 hpd2 = RREG32(R_007D18_DC_HOT_PLUG_DETECT2_INT_CONTROL) &
314
	u32 hpd2 = RREG32(R_007D18_DC_HOT_PLUG_DETECT2_INT_CONTROL) &
Line -... Line 315...
-
 
315
		~S_007D18_DC_HOT_PLUG_DETECT2_INT_EN(1);
-
 
316
 
-
 
317
   if (!rdev->irq.installed) {
-
 
318
		WARN(1, "Can't enable IRQ/MSI because no handler is installed.\n");
-
 
319
		WREG32(R_000040_GEN_INT_CNTL, 0);
312
		~S_007D18_DC_HOT_PLUG_DETECT2_INT_EN(1);
320
		return -EINVAL;
313
 
321
	}
314
	if (rdev->irq.sw_int) {
322
	if (rdev->irq.sw_int) {
315
		tmp |= S_000040_SW_INT_EN(1);
323
		tmp |= S_000040_SW_INT_EN(1);
316
	}
324
	}
Line 330... Line 338...
330
	WREG32(R_006540_DxMODE_INT_MASK, mode_int);
338
	WREG32(R_006540_DxMODE_INT_MASK, mode_int);
331
	WREG32(R_007D08_DC_HOT_PLUG_DETECT1_INT_CONTROL, hpd1);
339
	WREG32(R_007D08_DC_HOT_PLUG_DETECT1_INT_CONTROL, hpd1);
332
	WREG32(R_007D18_DC_HOT_PLUG_DETECT2_INT_CONTROL, hpd2);
340
	WREG32(R_007D18_DC_HOT_PLUG_DETECT2_INT_CONTROL, hpd2);
333
	return 0;
341
	return 0;
334
}
342
}
-
 
343
*/
Line 335... Line 344...
335
 
344
 
336
static inline uint32_t rs600_irq_ack(struct radeon_device *rdev, u32 *r500_disp_int)
345
static inline uint32_t rs600_irq_ack(struct radeon_device *rdev, u32 *r500_disp_int)
337
{
346
{
338
	uint32_t irqs = RREG32(R_000044_GEN_INT_STATUS);
347
	uint32_t irqs = RREG32(R_000044_GEN_INT_STATUS);
Line 498... Line 507...
498
	r = rs600_gart_enable(rdev);
507
	r = rs600_gart_enable(rdev);
499
	if (r)
508
	if (r)
500
	return r;
509
	return r;
501
	/* Enable IRQ */
510
	/* Enable IRQ */
502
//	rs600_irq_set(rdev);
511
//	rs600_irq_set(rdev);
-
 
512
	rdev->config.r300.hdp_cntl = RREG32(RADEON_HOST_PATH_CNTL);
503
	/* 1M ring buffer */
513
	/* 1M ring buffer */
504
//	r = r100_cp_init(rdev, 1024 * 1024);
514
//	r = r100_cp_init(rdev, 1024 * 1024);
505
//	if (r) {
515
//	if (r) {
506
//		dev_err(rdev->dev, "failled initializing CP (%d).\n", r);
516
//		dev_err(rdev->dev, "failled initializing CP (%d).\n", r);
507
//		return r;
517
//		return r;