Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 164030
b: refs/heads/master
c: fc30b8e
h: refs/heads/master
v: v3
  • Loading branch information
Dave Airlie authored and Dave Airlie committed Sep 18, 2009
1 parent 19a957c commit 40341c4
Show file tree
Hide file tree
Showing 4 changed files with 102 additions and 28 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: bc1a631e5104317cc8b4ef7d14adc597f2844003
refs/heads/master: fc30b8efbe1b271eb64e0d4f6cb2a91bb57ee5f3
52 changes: 29 additions & 23 deletions trunk/drivers/gpu/drm/radeon/r420.c
Original file line number Diff line number Diff line change
Expand Up @@ -157,31 +157,10 @@ static void r420_clock_resume(struct radeon_device *rdev)
WREG32_PLL(R_00000D_SCLK_CNTL, sclk_cntl);
}

int r420_resume(struct radeon_device *rdev)
static int r420_startup(struct radeon_device *rdev)
{
int r;

/* Make sur GART are not working */
if (rdev->flags & RADEON_IS_PCIE)
rv370_pcie_gart_disable(rdev);
if (rdev->flags & RADEON_IS_PCI)
r100_pci_gart_disable(rdev);
/* Resume clock before doing reset */
r420_clock_resume(rdev);
/* Reset gpu before posting otherwise ATOM will enter infinite loop */
if (radeon_gpu_reset(rdev)) {
dev_warn(rdev->dev, "GPU reset failed ! (0xE40=0x%08X, 0x7C0=0x%08X)\n",
RREG32(R_000E40_RBBM_STATUS),
RREG32(R_0007C0_CP_STAT));
}
/* check if cards are posted or not */
if (rdev->is_atom_bios) {
atom_asic_init(rdev->mode_info.atom_context);
} else {
radeon_combios_asic_init(rdev->ddev);
}
/* Resume clock after posting */
r420_clock_resume(rdev);
r300_mc_program(rdev);
/* Initialize GART (initialize after TTM so we can allocate
* memory through TTM but finalize after TTM) */
Expand Down Expand Up @@ -217,6 +196,33 @@ int r420_resume(struct radeon_device *rdev)
return 0;
}

int r420_resume(struct radeon_device *rdev)
{
/* Make sur GART are not working */
if (rdev->flags & RADEON_IS_PCIE)
rv370_pcie_gart_disable(rdev);
if (rdev->flags & RADEON_IS_PCI)
r100_pci_gart_disable(rdev);
/* Resume clock before doing reset */
r420_clock_resume(rdev);
/* Reset gpu before posting otherwise ATOM will enter infinite loop */
if (radeon_gpu_reset(rdev)) {
dev_warn(rdev->dev, "GPU reset failed ! (0xE40=0x%08X, 0x7C0=0x%08X)\n",
RREG32(R_000E40_RBBM_STATUS),
RREG32(R_0007C0_CP_STAT));
}
/* check if cards are posted or not */
if (rdev->is_atom_bios) {
atom_asic_init(rdev->mode_info.atom_context);
} else {
radeon_combios_asic_init(rdev->ddev);
}
/* Resume clock after posting */
r420_clock_resume(rdev);

return r420_startup(rdev);
}

int r420_suspend(struct radeon_device *rdev)
{
r100_cp_disable(rdev);
Expand Down Expand Up @@ -330,7 +336,7 @@ int r420_init(struct radeon_device *rdev)
}
r300_set_reg_safe(rdev);
rdev->accel_working = true;
r = r420_resume(rdev);
r = r420_startup(rdev);
if (r) {
/* Somethings want wront with the accel init stop accel */
dev_err(rdev->dev, "Disabling GPU acceleration\n");
Expand Down
38 changes: 36 additions & 2 deletions trunk/drivers/gpu/drm/radeon/r600.c
Original file line number Diff line number Diff line change
Expand Up @@ -1466,7 +1466,7 @@ bool r600_card_posted(struct radeon_device *rdev)
return false;
}

int r600_resume(struct radeon_device *rdev)
int r600_startup(struct radeon_device *rdev)
{
int r;

Expand Down Expand Up @@ -1499,6 +1499,40 @@ int r600_resume(struct radeon_device *rdev)
return 0;
}

int r600_resume(struct radeon_device *rdev)
{
int r;

if (radeon_gpu_reset(rdev)) {
/* FIXME: what do we want to do here ? */
}
/* post card */
if (rdev->is_atom_bios) {
atom_asic_init(rdev->mode_info.atom_context);
} else {
radeon_combios_asic_init(rdev->ddev);
}
/* Initialize clocks */
r = radeon_clocks_init(rdev);
if (r) {
return r;
}

r = r600_startup(rdev);
if (r) {
DRM_ERROR("r600 startup failed on resume\n");
return r;
}

r = radeon_ib_test(rdev);
if (r) {
DRM_ERROR("radeon: failled testing IB (%d).\n", r);
return r;
}
return r;
}


int r600_suspend(struct radeon_device *rdev)
{
/* FIXME: we should wait for ring to be empty */
Expand Down Expand Up @@ -1596,7 +1630,7 @@ int r600_init(struct radeon_device *rdev)
return r;
}

r = r600_resume(rdev);
r = r600_startup(rdev);
if (r) {
if (rdev->flags & RADEON_IS_AGP) {
/* Retry with disabling AGP */
Expand Down
38 changes: 36 additions & 2 deletions trunk/drivers/gpu/drm/radeon/rv770.c
Original file line number Diff line number Diff line change
Expand Up @@ -851,7 +851,7 @@ int rv770_gpu_reset(struct radeon_device *rdev)
return 0;
}

int rv770_resume(struct radeon_device *rdev)
static int rv770_startup(struct radeon_device *rdev)
{
int r;

Expand All @@ -875,6 +875,40 @@ int rv770_resume(struct radeon_device *rdev)
return 0;
}

int rv770_resume(struct radeon_device *rdev)
{
int r;

if (radeon_gpu_reset(rdev)) {
/* FIXME: what do we want to do here ? */
}
/* post card */
if (rdev->is_atom_bios) {
atom_asic_init(rdev->mode_info.atom_context);
} else {
radeon_combios_asic_init(rdev->ddev);
}
/* Initialize clocks */
r = radeon_clocks_init(rdev);
if (r) {
return r;
}

r = rv770_startup(rdev);
if (r) {
DRM_ERROR("r600 startup failed on resume\n");
return r;
}

r = radeon_ib_test(rdev);
if (r) {
DRM_ERROR("radeon: failled testing IB (%d).\n", r);
return r;
}
return r;

}

int rv770_suspend(struct radeon_device *rdev)
{
/* FIXME: we should wait for ring to be empty */
Expand Down Expand Up @@ -959,7 +993,7 @@ int rv770_init(struct radeon_device *rdev)
return r;

rdev->accel_working = true;
r = rv770_resume(rdev);
r = rv770_startup(rdev);
if (r) {
if (rdev->flags & RADEON_IS_AGP) {
/* Retry with disabling AGP */
Expand Down

0 comments on commit 40341c4

Please sign in to comment.