Rev 5346 | Rev 6938 | 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, |