Subversion Repositories Kolibri OS

Rev

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

Rev 1128 Rev 1129
Line 166... Line 166...
166
void r100_mc_setup(struct radeon_device *rdev)
166
void r100_mc_setup(struct radeon_device *rdev)
167
{
167
{
168
	uint32_t tmp;
168
	uint32_t tmp;
169
	int r;
169
	int r;
Line 170... Line 170...
170
 
170
 
171
//   r = r100_debugfs_mc_info_init(rdev);
171
	r = r100_debugfs_mc_info_init(rdev);
172
//   if (r) {
172
	if (r) {
173
//       DRM_ERROR("Failed to register debugfs file for R100 MC !\n");
173
		DRM_ERROR("Failed to register debugfs file for R100 MC !\n");
174
//   }
174
	}
175
	/* Write VRAM size in case we are limiting it */
175
	/* Write VRAM size in case we are limiting it */
176
	WREG32(RADEON_CONFIG_MEMSIZE, rdev->mc.vram_size);
176
	WREG32(RADEON_CONFIG_MEMSIZE, rdev->mc.vram_size);
177
	tmp = rdev->mc.vram_location + rdev->mc.vram_size - 1;
177
	tmp = rdev->mc.vram_location + rdev->mc.vram_size - 1;
178
	tmp = REG_SET(RADEON_MC_FB_TOP, tmp >> 16);
178
	tmp = REG_SET(RADEON_MC_FB_TOP, tmp >> 16);
Line 204... Line 204...
204
 
204
 
205
int r100_mc_init(struct radeon_device *rdev)
205
int r100_mc_init(struct radeon_device *rdev)
206
{
206
{
Line 207... Line 207...
207
	int r;
207
	int r;
208
 
208
 
209
//   if (r100_debugfs_rbbm_init(rdev)) {
209
	if (r100_debugfs_rbbm_init(rdev)) {
Line 210... Line 210...
210
//       DRM_ERROR("Failed to register debugfs file for RBBM !\n");
210
		DRM_ERROR("Failed to register debugfs file for RBBM !\n");
211
//   }
211
	}
212
 
212
 
Line 493... Line 493...
493
	unsigned indirect2_start;
493
	unsigned indirect2_start;
494
	unsigned indirect1_start;
494
	unsigned indirect1_start;
495
	uint32_t tmp;
495
	uint32_t tmp;
496
	int r;
496
	int r;
Line 497... Line -...
497
 
-
 
498
    dbgprintf("%s\n",__FUNCTION__);
-
 
499
 
497
 
500
//   if (r100_debugfs_cp_init(rdev)) {
498
	if (r100_debugfs_cp_init(rdev)) {
501
//       DRM_ERROR("Failed to register debugfs file for CP !\n");
499
		DRM_ERROR("Failed to register debugfs file for CP !\n");
502
//   }
500
	}
503
	/* Reset CP */
501
	/* Reset CP */
504
	tmp = RREG32(RADEON_CP_CSQ_STAT);
502
	tmp = RREG32(RADEON_CP_CSQ_STAT);
505
	if ((tmp & (1 << 31))) {
503
	if ((tmp & (1 << 31))) {
506
		DRM_INFO("radeon: cp busy (0x%08X) resetting\n", tmp);
504
		DRM_INFO("radeon: cp busy (0x%08X) resetting\n", tmp);
Line 1375... Line 1373...
1375
int r100_init(struct radeon_device *rdev)
1373
int r100_init(struct radeon_device *rdev)
1376
{
1374
{
1377
	return 0;
1375
	return 0;
1378
}
1376
}
Line -... Line 1377...
-
 
1377
 
-
 
1378
/*
-
 
1379
 * Debugfs info
-
 
1380
 */
-
 
1381
#if defined(CONFIG_DEBUG_FS)
-
 
1382
static int r100_debugfs_rbbm_info(struct seq_file *m, void *data)
-
 
1383
{
-
 
1384
	struct drm_info_node *node = (struct drm_info_node *) m->private;
-
 
1385
	struct drm_device *dev = node->minor->dev;
-
 
1386
	struct radeon_device *rdev = dev->dev_private;
-
 
1387
	uint32_t reg, value;
-
 
1388
	unsigned i;
-
 
1389
 
-
 
1390
	seq_printf(m, "RBBM_STATUS 0x%08x\n", RREG32(RADEON_RBBM_STATUS));
-
 
1391
	seq_printf(m, "RBBM_CMDFIFO_STAT 0x%08x\n", RREG32(0xE7C));
-
 
1392
	seq_printf(m, "CP_STAT 0x%08x\n", RREG32(RADEON_CP_STAT));
-
 
1393
	for (i = 0; i < 64; i++) {
-
 
1394
		WREG32(RADEON_RBBM_CMDFIFO_ADDR, i | 0x100);
-
 
1395
		reg = (RREG32(RADEON_RBBM_CMDFIFO_DATA) - 1) >> 2;
-
 
1396
		WREG32(RADEON_RBBM_CMDFIFO_ADDR, i);
-
 
1397
		value = RREG32(RADEON_RBBM_CMDFIFO_DATA);
-
 
1398
		seq_printf(m, "[0x%03X] 0x%04X=0x%08X\n", i, reg, value);
-
 
1399
	}
-
 
1400
	return 0;
-
 
1401
}
-
 
1402
 
-
 
1403
static int r100_debugfs_cp_ring_info(struct seq_file *m, void *data)
-
 
1404
{
-
 
1405
	struct drm_info_node *node = (struct drm_info_node *) m->private;
-
 
1406
	struct drm_device *dev = node->minor->dev;
-
 
1407
	struct radeon_device *rdev = dev->dev_private;
-
 
1408
	uint32_t rdp, wdp;
-
 
1409
	unsigned count, i, j;
-
 
1410
 
-
 
1411
	radeon_ring_free_size(rdev);
-
 
1412
	rdp = RREG32(RADEON_CP_RB_RPTR);
-
 
1413
	wdp = RREG32(RADEON_CP_RB_WPTR);
-
 
1414
	count = (rdp + rdev->cp.ring_size - wdp) & rdev->cp.ptr_mask;
-
 
1415
	seq_printf(m, "CP_STAT 0x%08x\n", RREG32(RADEON_CP_STAT));
-
 
1416
	seq_printf(m, "CP_RB_WPTR 0x%08x\n", wdp);
-
 
1417
	seq_printf(m, "CP_RB_RPTR 0x%08x\n", rdp);
-
 
1418
	seq_printf(m, "%u free dwords in ring\n", rdev->cp.ring_free_dw);
-
 
1419
	seq_printf(m, "%u dwords in ring\n", count);
-
 
1420
	for (j = 0; j <= count; j++) {
-
 
1421
		i = (rdp + j) & rdev->cp.ptr_mask;
-
 
1422
		seq_printf(m, "r[%04d]=0x%08x\n", i, rdev->cp.ring[i]);
-
 
1423
	}
-
 
1424
	return 0;
-
 
1425
}
-
 
1426
 
-
 
1427
 
-
 
1428
static int r100_debugfs_cp_csq_fifo(struct seq_file *m, void *data)
-
 
1429
{
-
 
1430
	struct drm_info_node *node = (struct drm_info_node *) m->private;
-
 
1431
	struct drm_device *dev = node->minor->dev;
-
 
1432
	struct radeon_device *rdev = dev->dev_private;
-
 
1433
	uint32_t csq_stat, csq2_stat, tmp;
-
 
1434
	unsigned r_rptr, r_wptr, ib1_rptr, ib1_wptr, ib2_rptr, ib2_wptr;
-
 
1435
	unsigned i;
-
 
1436
 
-
 
1437
	seq_printf(m, "CP_STAT 0x%08x\n", RREG32(RADEON_CP_STAT));
-
 
1438
	seq_printf(m, "CP_CSQ_MODE 0x%08x\n", RREG32(RADEON_CP_CSQ_MODE));
-
 
1439
	csq_stat = RREG32(RADEON_CP_CSQ_STAT);
-
 
1440
	csq2_stat = RREG32(RADEON_CP_CSQ2_STAT);
-
 
1441
	r_rptr = (csq_stat >> 0) & 0x3ff;
-
 
1442
	r_wptr = (csq_stat >> 10) & 0x3ff;
-
 
1443
	ib1_rptr = (csq_stat >> 20) & 0x3ff;
-
 
1444
	ib1_wptr = (csq2_stat >> 0) & 0x3ff;
-
 
1445
	ib2_rptr = (csq2_stat >> 10) & 0x3ff;
-
 
1446
	ib2_wptr = (csq2_stat >> 20) & 0x3ff;
-
 
1447
	seq_printf(m, "CP_CSQ_STAT 0x%08x\n", csq_stat);
-
 
1448
	seq_printf(m, "CP_CSQ2_STAT 0x%08x\n", csq2_stat);
-
 
1449
	seq_printf(m, "Ring rptr %u\n", r_rptr);
-
 
1450
	seq_printf(m, "Ring wptr %u\n", r_wptr);
-
 
1451
	seq_printf(m, "Indirect1 rptr %u\n", ib1_rptr);
-
 
1452
	seq_printf(m, "Indirect1 wptr %u\n", ib1_wptr);
-
 
1453
	seq_printf(m, "Indirect2 rptr %u\n", ib2_rptr);
-
 
1454
	seq_printf(m, "Indirect2 wptr %u\n", ib2_wptr);
-
 
1455
	/* FIXME: 0, 128, 640 depends on fifo setup see cp_init_kms
-
 
1456
	 * 128 = indirect1_start * 8 & 640 = indirect2_start * 8 */
-
 
1457
	seq_printf(m, "Ring fifo:\n");
-
 
1458
	for (i = 0; i < 256; i++) {
-
 
1459
		WREG32(RADEON_CP_CSQ_ADDR, i << 2);
-
 
1460
		tmp = RREG32(RADEON_CP_CSQ_DATA);
-
 
1461
		seq_printf(m, "rfifo[%04d]=0x%08X\n", i, tmp);
-
 
1462
	}
-
 
1463
	seq_printf(m, "Indirect1 fifo:\n");
-
 
1464
	for (i = 256; i <= 512; i++) {
-
 
1465
		WREG32(RADEON_CP_CSQ_ADDR, i << 2);
-
 
1466
		tmp = RREG32(RADEON_CP_CSQ_DATA);
-
 
1467
		seq_printf(m, "ib1fifo[%04d]=0x%08X\n", i, tmp);
-
 
1468
	}
-
 
1469
	seq_printf(m, "Indirect2 fifo:\n");
-
 
1470
	for (i = 640; i < ib1_wptr; i++) {
-
 
1471
		WREG32(RADEON_CP_CSQ_ADDR, i << 2);
-
 
1472
		tmp = RREG32(RADEON_CP_CSQ_DATA);
-
 
1473
		seq_printf(m, "ib2fifo[%04d]=0x%08X\n", i, tmp);
-
 
1474
	}
-
 
1475
	return 0;
-
 
1476
}
-
 
1477
 
-
 
1478
static int r100_debugfs_mc_info(struct seq_file *m, void *data)
-
 
1479
{
-
 
1480
	struct drm_info_node *node = (struct drm_info_node *) m->private;
-
 
1481
	struct drm_device *dev = node->minor->dev;
-
 
1482
	struct radeon_device *rdev = dev->dev_private;
-
 
1483
	uint32_t tmp;
-
 
1484
 
-
 
1485
	tmp = RREG32(RADEON_CONFIG_MEMSIZE);
-
 
1486
	seq_printf(m, "CONFIG_MEMSIZE 0x%08x\n", tmp);
-
 
1487
	tmp = RREG32(RADEON_MC_FB_LOCATION);
-
 
1488
	seq_printf(m, "MC_FB_LOCATION 0x%08x\n", tmp);
-
 
1489
	tmp = RREG32(RADEON_BUS_CNTL);
-
 
1490
	seq_printf(m, "BUS_CNTL 0x%08x\n", tmp);
-
 
1491
	tmp = RREG32(RADEON_MC_AGP_LOCATION);
-
 
1492
	seq_printf(m, "MC_AGP_LOCATION 0x%08x\n", tmp);
-
 
1493
	tmp = RREG32(RADEON_AGP_BASE);
-
 
1494
	seq_printf(m, "AGP_BASE 0x%08x\n", tmp);
-
 
1495
	tmp = RREG32(RADEON_HOST_PATH_CNTL);
-
 
1496
	seq_printf(m, "HOST_PATH_CNTL 0x%08x\n", tmp);
-
 
1497
	tmp = RREG32(0x01D0);
-
 
1498
	seq_printf(m, "AIC_CTRL 0x%08x\n", tmp);
-
 
1499
	tmp = RREG32(RADEON_AIC_LO_ADDR);
-
 
1500
	seq_printf(m, "AIC_LO_ADDR 0x%08x\n", tmp);
-
 
1501
	tmp = RREG32(RADEON_AIC_HI_ADDR);
-
 
1502
	seq_printf(m, "AIC_HI_ADDR 0x%08x\n", tmp);
-
 
1503
	tmp = RREG32(0x01E4);
-
 
1504
	seq_printf(m, "AIC_TLB_ADDR 0x%08x\n", tmp);
-
 
1505
	return 0;
-
 
1506
}
-
 
1507
 
-
 
1508
static struct drm_info_list r100_debugfs_rbbm_list[] = {
-
 
1509
	{"r100_rbbm_info", r100_debugfs_rbbm_info, 0, NULL},
-
 
1510
};
-
 
1511
 
-
 
1512
static struct drm_info_list r100_debugfs_cp_list[] = {
-
 
1513
	{"r100_cp_ring_info", r100_debugfs_cp_ring_info, 0, NULL},
-
 
1514
	{"r100_cp_csq_fifo", r100_debugfs_cp_csq_fifo, 0, NULL},
-
 
1515
};
-
 
1516
 
-
 
1517
static struct drm_info_list r100_debugfs_mc_info_list[] = {
-
 
1518
	{"r100_mc_info", r100_debugfs_mc_info, 0, NULL},
-
 
1519
};
-
 
1520
#endif
-
 
1521
 
-
 
1522
int r100_debugfs_rbbm_init(struct radeon_device *rdev)
-
 
1523
{
-
 
1524
#if defined(CONFIG_DEBUG_FS)
-
 
1525
	return radeon_debugfs_add_files(rdev, r100_debugfs_rbbm_list, 1);
-
 
1526
#else
-
 
1527
	return 0;
-
 
1528
#endif
-
 
1529
}
-
 
1530
 
-
 
1531
int r100_debugfs_cp_init(struct radeon_device *rdev)
-
 
1532
{
-
 
1533
#if defined(CONFIG_DEBUG_FS)
-
 
1534
	return radeon_debugfs_add_files(rdev, r100_debugfs_cp_list, 2);
-
 
1535
#else
-
 
1536
	return 0;
-
 
1537
#endif
-
 
1538
}
-
 
1539
 
-
 
1540
int r100_debugfs_mc_info_init(struct radeon_device *rdev)
-
 
1541
{
-
 
1542
#if defined(CONFIG_DEBUG_FS)
-
 
1543
	return radeon_debugfs_add_files(rdev, r100_debugfs_mc_info_list, 1);
-
 
1544
#else
-
 
1545
	return 0;
-
 
1546
#endif