Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 163999
b: refs/heads/master
c: 6cf8a3f
h: refs/heads/master
i:
  163997: d31ca6f
  163995: 680d34d
  163991: fe51c93
  163983: b121e54
  163967: 45012aa
v: v3
  • Loading branch information
Jerome Glisse authored and Dave Airlie committed Sep 11, 2009
1 parent 0172f1c commit cd7c848
Show file tree
Hide file tree
Showing 4 changed files with 26 additions and 22 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: 923f6848e1686059ef8d272d1fca4d3577911a41
refs/heads/master: 6cf8a3f58806f12b975a89cfd7edf01566ff80a0
4 changes: 4 additions & 0 deletions trunk/drivers/gpu/drm/radeon/radeon.h
Original file line number Diff line number Diff line change
Expand Up @@ -933,6 +933,10 @@ static inline void radeon_ring_write(struct radeon_device *rdev, uint32_t v)
#define radeon_clear_surface_reg(rdev, r) ((rdev)->asic->clear_surface_reg((rdev), (r)))
#define radeon_bandwidth_update(rdev) (rdev)->asic->bandwidth_update((rdev))

/* Common functions */
int radeon_modeset_init(struct radeon_device *rdev);
void radeon_modeset_fini(struct radeon_device *rdev);

/* r100,rv100,rs100,rv200,rs200,r200,rv250,rs300,rv280 */
void r100_cp_disable(struct radeon_device *rdev);
void r100_pci_gart_tlb_flush(struct radeon_device *rdev);
Expand Down
20 changes: 3 additions & 17 deletions trunk/drivers/gpu/drm/radeon/radeon_device.c
Original file line number Diff line number Diff line change
Expand Up @@ -469,9 +469,6 @@ void radeon_combios_fini(struct radeon_device *rdev)
{
}

int radeon_modeset_init(struct radeon_device *rdev);
void radeon_modeset_fini(struct radeon_device *rdev);


/*
* Radeon device.
Expand All @@ -481,7 +478,7 @@ int radeon_device_init(struct radeon_device *rdev,
struct pci_dev *pdev,
uint32_t flags)
{
int r, ret = 0;
int r;
int dma_bits;

DRM_INFO("radeon: Initializing kernel modesetting.\n");
Expand Down Expand Up @@ -660,33 +657,22 @@ int radeon_device_init(struct radeon_device *rdev,
return r;
}
}
ret = r;
}
r = radeon_modeset_init(rdev);
if (r) {
return r;
}
if (!ret) {
DRM_INFO("radeon: kernel modesetting successfully initialized.\n");
}
DRM_INFO("radeon: kernel modesetting successfully initialized.\n");
if (radeon_testing) {
radeon_test_moves(rdev);
}
if (radeon_benchmarking) {
radeon_benchmark(rdev);
}
return ret;
return 0;
}

void radeon_device_fini(struct radeon_device *rdev)
{
if (rdev == NULL || rdev->rmmio == NULL) {
return;
}
DRM_INFO("radeon: finishing device.\n");
rdev->shutdown = true;
/* Order matter so becarefull if you rearrange anythings */
radeon_modeset_fini(rdev);
if (!rdev->new_init_path) {
radeon_ib_pool_fini(rdev);
radeon_cp_fini(rdev);
Expand Down
22 changes: 18 additions & 4 deletions trunk/drivers/gpu/drm/radeon/radeon_kms.c
Original file line number Diff line number Diff line change
Expand Up @@ -54,12 +54,23 @@ int radeon_driver_load_kms(struct drm_device *dev, unsigned long flags)
flags |= RADEON_IS_PCI;
}

/* radeon_device_init should report only fatal error
* like memory allocation failure or iomapping failure,
* or memory manager initialization failure, it must
* properly initialize the GPU MC controller and permit
* VRAM allocation
*/
r = radeon_device_init(rdev, dev, dev->pdev, flags);
if (r) {
DRM_ERROR("Failed to initialize radeon, disabling IOCTL\n");
radeon_device_fini(rdev);
kfree(rdev);
dev->dev_private = NULL;
DRM_ERROR("Fatal error while trying to initialize radeon.\n");
return r;
}
/* Again modeset_init should fail only on fatal error
* otherwise it should provide enough functionalities
* for shadowfb to run
*/
r = radeon_modeset_init(rdev);
if (r) {
return r;
}
return 0;
Expand All @@ -69,6 +80,9 @@ int radeon_driver_unload_kms(struct drm_device *dev)
{
struct radeon_device *rdev = dev->dev_private;

if (rdev == NULL)
return 0;
radeon_modeset_fini(rdev);
radeon_device_fini(rdev);
kfree(rdev);
dev->dev_private = NULL;
Expand Down

0 comments on commit cd7c848

Please sign in to comment.