Subversion Repositories Kolibri OS

Rev

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

Rev 5346 Rev 6104
Line 28... Line 28...
28
//#include 
28
//#include 
29
#include 
29
#include 
30
#include 
30
#include 
31
#include 
31
#include 
32
#include 
32
#include 
-
 
33
#include 
33
#include "radeon_reg.h"
34
#include "radeon_reg.h"
34
#include "radeon.h"
35
#include "radeon.h"
35
#include "atom.h"
36
#include "atom.h"
Line 36... Line 37...
36
 
37
 
Line 70... Line 71...
70
int radeon_deep_color = 0;
71
int radeon_deep_color = 0;
71
int radeon_use_pflipirq = 2;
72
int radeon_use_pflipirq = 2;
72
int irq_override = 0;
73
int irq_override = 0;
73
int radeon_bapm = -1;
74
int radeon_bapm = -1;
74
int radeon_backlight = 0;
75
int radeon_backlight = 0;
-
 
76
int radeon_auxch = -1;
-
 
77
int radeon_mst = 0;
Line 75... Line 78...
75
 
78
 
76
extern display_t *os_display;
79
extern display_t *os_display;
77
extern struct drm_device *main_device;
80
extern struct drm_device *main_device;
Line 1122... Line 1125...
1122
{
1125
{
1123
	return (arg & (arg - 1)) == 0;
1126
	return (arg & (arg - 1)) == 0;
1124
}
1127
}
Line 1125... Line 1128...
1125
 
1128
 
-
 
1129
/**
-
 
1130
 * Determine a sensible default GART size according to ASIC family.
-
 
1131
 *
-
 
1132
 * @family ASIC family name
-
 
1133
 */
-
 
1134
static int radeon_gart_size_auto(enum radeon_family family)
-
 
1135
{
-
 
1136
	/* default to a larger gart size on newer asics */
-
 
1137
	if (family >= CHIP_TAHITI)
-
 
1138
		return 2048;
-
 
1139
	else if (family >= CHIP_RV770)
-
 
1140
		return 1024;
-
 
1141
	else
-
 
1142
		return 512;
-
 
1143
}
-
 
1144
 
1126
/**
1145
/**
1127
 * radeon_check_arguments - validate module params
1146
 * radeon_check_arguments - validate module params
1128
 *
1147
 *
1129
 * @rdev: radeon_device pointer
1148
 * @rdev: radeon_device pointer
1130
 *
1149
 *
Line 1139... Line 1158...
1139
				radeon_vram_limit);
1158
				radeon_vram_limit);
1140
		radeon_vram_limit = 0;
1159
		radeon_vram_limit = 0;
1141
	}
1160
	}
Line 1142... Line 1161...
1142
 
1161
 
1143
	if (radeon_gart_size == -1) {
1162
	if (radeon_gart_size == -1) {
1144
		/* default to a larger gart size on newer asics */
-
 
1145
		if (rdev->family >= CHIP_RV770)
-
 
1146
			radeon_gart_size = 1024;
-
 
1147
		else
-
 
1148
			radeon_gart_size = 512;
1163
		radeon_gart_size = radeon_gart_size_auto(rdev->family);
1149
	}
1164
	}
1150
	/* gtt size must be power of two and greater or equal to 32M */
1165
	/* gtt size must be power of two and greater or equal to 32M */
1151
	if (radeon_gart_size < 32) {
1166
	if (radeon_gart_size < 32) {
1152
		dev_warn(rdev->dev, "gart size (%d) too small\n",
1167
		dev_warn(rdev->dev, "gart size (%d) too small\n",
1153
				radeon_gart_size);
-
 
1154
		if (rdev->family >= CHIP_RV770)
-
 
1155
			radeon_gart_size = 1024;
-
 
1156
		else
1168
				radeon_gart_size);
1157
		radeon_gart_size = 512;
1169
		radeon_gart_size = radeon_gart_size_auto(rdev->family);
1158
	} else if (!radeon_check_pot_argument(radeon_gart_size)) {
1170
	} else if (!radeon_check_pot_argument(radeon_gart_size)) {
1159
		dev_warn(rdev->dev, "gart size (%d) must be a power of 2\n",
1171
		dev_warn(rdev->dev, "gart size (%d) must be a power of 2\n",
1160
				radeon_gart_size);
-
 
1161
		if (rdev->family >= CHIP_RV770)
-
 
1162
			radeon_gart_size = 1024;
-
 
1163
		else
1172
				radeon_gart_size);
1164
		radeon_gart_size = 512;
1173
		radeon_gart_size = radeon_gart_size_auto(rdev->family);
1165
	}
1174
	}
Line 1166... Line 1175...
1166
	rdev->mc.gtt_size = (uint64_t)radeon_gart_size << 20;
1175
	rdev->mc.gtt_size = (uint64_t)radeon_gart_size << 20;
1167
 
1176
 
Line 1394... Line 1403...
1394
	if (rdev->flags & RADEON_IS_PX)
1403
	if (rdev->flags & RADEON_IS_PX)
1395
		runtime = true;
1404
		runtime = true;
Line 1396... Line 1405...
1396
 
1405
 
1397
	r = radeon_init(rdev);
1406
	r = radeon_init(rdev);
1398
	if (r)
1407
	if (r)
Line 1399... Line 1408...
1399
        return r;
1408
		goto failed;
1400
 
1409
 
Line 1407... Line 1416...
1407
		radeon_asic_reset(rdev);
1416
		radeon_asic_reset(rdev);
1408
		radeon_fini(rdev);
1417
		radeon_fini(rdev);
1409
		radeon_agp_disable(rdev);
1418
		radeon_agp_disable(rdev);
1410
		r = radeon_init(rdev);
1419
		r = radeon_init(rdev);
1411
		if (r)
1420
		if (r)
1412
		return r;
1421
			goto failed;
1413
	}
1422
	}
Line 1414... Line 1423...
1414
 
1423
 
1415
//   r = radeon_ib_ring_tests(rdev);
1424
//   r = radeon_ib_ring_tests(rdev);
1416
//   if (r)
1425
//   if (r)
Line 1433... Line 1442...
1433
		radeon_benchmark(rdev, radeon_benchmarking);
1442
			radeon_benchmark(rdev, radeon_benchmarking);
1434
		else
1443
		else
1435
			DRM_INFO("radeon: acceleration disabled, skipping benchmarks\n");
1444
			DRM_INFO("radeon: acceleration disabled, skipping benchmarks\n");
1436
    }
1445
	}
1437
	return 0;
1446
	return 0;
-
 
1447
 
-
 
1448
failed:
-
 
1449
	return r;
1438
}
1450
}
Line 1439... Line 1451...
1439
 
1451
 
1440
/**
1452
/**
1441
 * radeon_gpu_reset - reset the asic
1453
 * radeon_gpu_reset - reset the asic
Line 1613... Line 1625...
1613
 
1625
 
1614
static struct pci_device_id pciidlist[] = {
1626
static struct pci_device_id pciidlist[] = {
1615
    radeon_PCI_IDS
1627
    radeon_PCI_IDS
Line -... Line 1628...
-
 
1628
};
-
 
1629
 
-
 
1630
u32 radeon_get_vblank_counter_kms(struct drm_device *dev, unsigned int pipe);
-
 
1631
int radeon_enable_vblank_kms(struct drm_device *dev, unsigned int pipe);
-
 
1632
void radeon_disable_vblank_kms(struct drm_device *dev, unsigned int pipe);
-
 
1633
int radeon_get_vblank_timestamp_kms(struct drm_device *dev, unsigned int pipe,
-
 
1634
				    int *max_error,
-
 
1635
				    struct timeval *vblank_time,
1616
};
1636
				    unsigned flags); 
1617
 
1637
void radeon_gem_object_free(struct drm_gem_object *obj); 
1618
void radeon_driver_irq_preinstall_kms(struct drm_device *dev);
1638
void radeon_driver_irq_preinstall_kms(struct drm_device *dev);
1619
int radeon_driver_irq_postinstall_kms(struct drm_device *dev);
1639
int radeon_driver_irq_postinstall_kms(struct drm_device *dev);
Line 1630... Line 1650...
1630
//    .open = radeon_driver_open_kms,
1650
//    .open = radeon_driver_open_kms,
1631
//    .preclose = radeon_driver_preclose_kms,
1651
//    .preclose = radeon_driver_preclose_kms,
1632
//    .postclose = radeon_driver_postclose_kms,
1652
//    .postclose = radeon_driver_postclose_kms,
1633
//    .lastclose = radeon_driver_lastclose_kms,
1653
//    .lastclose = radeon_driver_lastclose_kms,
1634
//    .unload = radeon_driver_unload_kms,
1654
//    .unload = radeon_driver_unload_kms,
1635
//    .get_vblank_counter = radeon_get_vblank_counter_kms,
1655
    .get_vblank_counter = radeon_get_vblank_counter_kms,
1636
//    .enable_vblank = radeon_enable_vblank_kms,
1656
    .enable_vblank = radeon_enable_vblank_kms,
1637
//    .disable_vblank = radeon_disable_vblank_kms,
1657
    .disable_vblank = radeon_disable_vblank_kms,
1638
//    .get_vblank_timestamp = radeon_get_vblank_timestamp_kms,
1658
    .get_vblank_timestamp = radeon_get_vblank_timestamp_kms,
1639
//    .get_scanout_position = radeon_get_crtc_scanoutpos,
1659
    .get_scanout_position = radeon_get_crtc_scanoutpos,
1640
#if defined(CONFIG_DEBUG_FS)
1660
#if defined(CONFIG_DEBUG_FS)
1641
    .debugfs_init = radeon_debugfs_init,
1661
    .debugfs_init = radeon_debugfs_init,
1642
    .debugfs_cleanup = radeon_debugfs_cleanup,
1662
    .debugfs_cleanup = radeon_debugfs_cleanup,
1643
#endif
1663
#endif
1644
    .irq_preinstall = radeon_driver_irq_preinstall_kms,
1664
    .irq_preinstall = radeon_driver_irq_preinstall_kms,
1645
    .irq_postinstall = radeon_driver_irq_postinstall_kms,
1665
    .irq_postinstall = radeon_driver_irq_postinstall_kms,
1646
    .irq_uninstall = radeon_driver_irq_uninstall_kms,
1666
    .irq_uninstall = radeon_driver_irq_uninstall_kms,
1647
    .irq_handler = radeon_driver_irq_handler_kms,
1667
    .irq_handler = radeon_driver_irq_handler_kms,
1648
//    .ioctls = radeon_ioctls_kms,
1668
//    .ioctls = radeon_ioctls_kms,
1649
//    .gem_free_object = radeon_gem_object_free,
1669
    .gem_free_object = radeon_gem_object_free,
1650
//    .gem_open_object = radeon_gem_object_open,
1670
//    .gem_open_object = radeon_gem_object_open,
1651
//    .gem_close_object = radeon_gem_object_close,
1671
//    .gem_close_object = radeon_gem_object_close,
1652
//    .dumb_create = radeon_mode_dumb_create,
1672
//    .dumb_create = radeon_mode_dumb_create,
1653
//    .dumb_map_offset = radeon_mode_dumb_mmap,
1673
//    .dumb_map_offset = radeon_mode_dumb_mmap,
1654
//    .dumb_destroy = drm_gem_dumb_destroy,
1674
//    .dumb_destroy = drm_gem_dumb_destroy,