Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 167051
b: refs/heads/master
c: b574f25
h: refs/heads/master
i:
  167049: 825514d
  167047: 9cc5c0b
v: v3
  • Loading branch information
Jerome Glisse authored and Dave Airlie committed Oct 7, 2009
1 parent ab1b672 commit 2f9c4a2
Show file tree
Hide file tree
Showing 4 changed files with 35 additions and 54 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 01ceae8edd7a0a6d8588dc103ad9f55e2c52cae9
refs/heads/master: b574f251f787c5b163da5ea345525569e51775bc
18 changes: 1 addition & 17 deletions trunk/drivers/gpu/drm/radeon/r600.c
Original file line number Diff line number Diff line change
Expand Up @@ -1560,15 +1560,8 @@ int r600_init(struct radeon_device *rdev)
if (r)
return r;
r = r600_mc_init(rdev);
if (r) {
if (rdev->flags & RADEON_IS_AGP) {
/* Retry with disabling AGP */
r600_fini(rdev);
rdev->flags &= ~RADEON_IS_AGP;
return r600_init(rdev);
}
if (r)
return r;
}
/* Memory manager */
r = radeon_object_init(rdev);
if (r)
Expand Down Expand Up @@ -1597,15 +1590,8 @@ int r600_init(struct radeon_device *rdev)

r = r600_startup(rdev);
if (r) {
if (rdev->flags & RADEON_IS_AGP) {
/* Retry with disabling AGP */
r600_fini(rdev);
rdev->flags &= ~RADEON_IS_AGP;
return r600_init(rdev);
}
r600_suspend(rdev);
r600_wb_fini(rdev);
radeon_ib_pool_fini(rdev);
radeon_ring_fini(rdev);
r600_pcie_gart_fini(rdev);
rdev->accel_working = false;
Expand Down Expand Up @@ -1637,10 +1623,8 @@ void r600_fini(struct radeon_device *rdev)
radeon_gem_fini(rdev);
radeon_fence_driver_fini(rdev);
radeon_clocks_fini(rdev);
#if __OS_HAS_AGP
if (rdev->flags & RADEON_IS_AGP)
radeon_agp_fini(rdev);
#endif
radeon_object_fini(rdev);
radeon_atombios_fini(rdev);
kfree(rdev->bios);
Expand Down
51 changes: 32 additions & 19 deletions trunk/drivers/gpu/drm/radeon/radeon_device.c
Original file line number Diff line number Diff line change
Expand Up @@ -476,6 +476,27 @@ void radeon_combios_fini(struct radeon_device *rdev)
{
}

void radeon_agp_disable(struct radeon_device *rdev)
{
rdev->flags &= ~RADEON_IS_AGP;
if (rdev->family >= CHIP_R600) {
DRM_INFO("Forcing AGP to PCIE mode\n");
rdev->flags |= RADEON_IS_PCIE;
} else if (rdev->family >= CHIP_RV515 ||
rdev->family == CHIP_RV380 ||
rdev->family == CHIP_RV410 ||
rdev->family == CHIP_R423) {
DRM_INFO("Forcing AGP to PCIE mode\n");
rdev->flags |= RADEON_IS_PCIE;
rdev->asic->gart_tlb_flush = &rv370_pcie_gart_tlb_flush;
rdev->asic->gart_set_page = &rv370_pcie_gart_set_page;
} else {
DRM_INFO("Forcing AGP to PCI mode\n");
rdev->flags |= RADEON_IS_PCI;
rdev->asic->gart_tlb_flush = &r100_pci_gart_tlb_flush;
rdev->asic->gart_set_page = &r100_pci_gart_set_page;
}
}

/*
* Radeon device.
Expand Down Expand Up @@ -515,24 +536,7 @@ int radeon_device_init(struct radeon_device *rdev,
}

if (radeon_agpmode == -1) {
rdev->flags &= ~RADEON_IS_AGP;
if (rdev->family >= CHIP_R600) {
DRM_INFO("Forcing AGP to PCIE mode\n");
rdev->flags |= RADEON_IS_PCIE;
} else if (rdev->family >= CHIP_RV515 ||
rdev->family == CHIP_RV380 ||
rdev->family == CHIP_RV410 ||
rdev->family == CHIP_R423) {
DRM_INFO("Forcing AGP to PCIE mode\n");
rdev->flags |= RADEON_IS_PCIE;
rdev->asic->gart_tlb_flush = &rv370_pcie_gart_tlb_flush;
rdev->asic->gart_set_page = &rv370_pcie_gart_set_page;
} else {
DRM_INFO("Forcing AGP to PCI mode\n");
rdev->flags |= RADEON_IS_PCI;
rdev->asic->gart_tlb_flush = &r100_pci_gart_tlb_flush;
rdev->asic->gart_set_page = &r100_pci_gart_set_page;
}
radeon_agp_disable(rdev);
}

/* set DMA mask + need_dma32 flags.
Expand Down Expand Up @@ -565,8 +569,17 @@ int radeon_device_init(struct radeon_device *rdev,
DRM_INFO("register mmio size: %u\n", (unsigned)rdev->rmmio_size);

r = radeon_init(rdev);
if (r) {
if (r)
return r;
if (rdev->flags & RADEON_IS_AGP && !rdev->accel_working) {
/* Acceleration not working on AGP card try again
* with fallback to PCI or PCIE GART
*/
radeon_fini(rdev);
radeon_agp_disable(rdev);
r = radeon_init(rdev);
if (r)
return r;
}
if (radeon_testing) {
radeon_test_moves(rdev);
Expand Down
18 changes: 1 addition & 17 deletions trunk/drivers/gpu/drm/radeon/rv770.c
Original file line number Diff line number Diff line change
Expand Up @@ -923,15 +923,8 @@ int rv770_init(struct radeon_device *rdev)
if (r)
return r;
r = rv770_mc_init(rdev);
if (r) {
if (rdev->flags & RADEON_IS_AGP) {
/* Retry with disabling AGP */
rv770_fini(rdev);
rdev->flags &= ~RADEON_IS_AGP;
return rv770_init(rdev);
}
if (r)
return r;
}
/* Memory manager */
r = radeon_object_init(rdev);
if (r)
Expand Down Expand Up @@ -960,15 +953,8 @@ int rv770_init(struct radeon_device *rdev)

r = rv770_startup(rdev);
if (r) {
if (rdev->flags & RADEON_IS_AGP) {
/* Retry with disabling AGP */
rv770_fini(rdev);
rdev->flags &= ~RADEON_IS_AGP;
return rv770_init(rdev);
}
rv770_suspend(rdev);
r600_wb_fini(rdev);
radeon_ib_pool_fini(rdev);
radeon_ring_fini(rdev);
rv770_pcie_gart_fini(rdev);
rdev->accel_working = false;
Expand Down Expand Up @@ -999,10 +985,8 @@ void rv770_fini(struct radeon_device *rdev)
radeon_gem_fini(rdev);
radeon_fence_driver_fini(rdev);
radeon_clocks_fini(rdev);
#if __OS_HAS_AGP
if (rdev->flags & RADEON_IS_AGP)
radeon_agp_fini(rdev);
#endif
radeon_object_fini(rdev);
radeon_atombios_fini(rdev);
kfree(rdev->bios);
Expand Down

0 comments on commit 2f9c4a2

Please sign in to comment.