drm/radeon/kms: move modeset init outside of GPU init

We are splitting GPU & modeset init so that it's easier
to abord only remaining GPU init when somethings fails.
We want to always provide enough funcionalities to get
fbcon and a shadowfb X working. Only acceptable error
during initialization are memory allocation failure or
io mapping failure.

Signed-off-by: Jerome Glisse <jglisse@redhat.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
This commit is contained in:
Jerome Glisse
2009-09-10 21:46:48 +02:00
committed by Dave Airlie
parent 923f6848e1
commit 6cf8a3f588
3 changed files with 25 additions and 21 deletions

View File

@ -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.
@ -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");
@ -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);