drm/radeon/kms: Check module arguments to be valid V2
This patch add a function which check module argument to be valid. On invalid argument it prints a warning and setback the default value. V2: Allow 0 for vram limit & agp mode which are the default value Signed-off-by: Jerome Glisse <jglisse@redhat.com> Signed-off-by: Dave Airlie <airlied@redhat.com>
This commit is contained in:
committed by
Dave Airlie
parent
0a0c7596c6
commit
3642133816
@@ -546,9 +546,72 @@ void radeon_agp_disable(struct radeon_device *rdev)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
void radeon_check_arguments(struct radeon_device *rdev)
|
||||||
* Radeon device.
|
{
|
||||||
*/
|
/* vramlimit must be a power of two */
|
||||||
|
switch (radeon_vram_limit) {
|
||||||
|
case 0:
|
||||||
|
case 4:
|
||||||
|
case 8:
|
||||||
|
case 16:
|
||||||
|
case 32:
|
||||||
|
case 64:
|
||||||
|
case 128:
|
||||||
|
case 256:
|
||||||
|
case 512:
|
||||||
|
case 1024:
|
||||||
|
case 2048:
|
||||||
|
case 4096:
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
dev_warn(rdev->dev, "vram limit (%d) must be a power of 2\n",
|
||||||
|
radeon_vram_limit);
|
||||||
|
radeon_vram_limit = 0;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
radeon_vram_limit = radeon_vram_limit << 20;
|
||||||
|
/* gtt size must be power of two and greater or equal to 32M */
|
||||||
|
switch (radeon_gart_size) {
|
||||||
|
case 4:
|
||||||
|
case 8:
|
||||||
|
case 16:
|
||||||
|
dev_warn(rdev->dev, "gart size (%d) too small forcing to 512M\n",
|
||||||
|
radeon_gart_size);
|
||||||
|
radeon_gart_size = 512;
|
||||||
|
break;
|
||||||
|
case 32:
|
||||||
|
case 64:
|
||||||
|
case 128:
|
||||||
|
case 256:
|
||||||
|
case 512:
|
||||||
|
case 1024:
|
||||||
|
case 2048:
|
||||||
|
case 4096:
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
dev_warn(rdev->dev, "gart size (%d) must be a power of 2\n",
|
||||||
|
radeon_gart_size);
|
||||||
|
radeon_gart_size = 512;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
rdev->mc.gtt_size = radeon_gart_size * 1024 * 1024;
|
||||||
|
/* AGP mode can only be -1, 1, 2, 4, 8 */
|
||||||
|
switch (radeon_agpmode) {
|
||||||
|
case -1:
|
||||||
|
case 0:
|
||||||
|
case 1:
|
||||||
|
case 2:
|
||||||
|
case 4:
|
||||||
|
case 8:
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
dev_warn(rdev->dev, "invalid AGP mode %d (valid mode: "
|
||||||
|
"-1, 0, 1, 2, 4, 8)\n", radeon_agpmode);
|
||||||
|
radeon_agpmode = 0;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
int radeon_device_init(struct radeon_device *rdev,
|
int radeon_device_init(struct radeon_device *rdev,
|
||||||
struct drm_device *ddev,
|
struct drm_device *ddev,
|
||||||
struct pci_dev *pdev,
|
struct pci_dev *pdev,
|
||||||
@@ -587,9 +650,9 @@ int radeon_device_init(struct radeon_device *rdev,
|
|||||||
|
|
||||||
/* Set asic functions */
|
/* Set asic functions */
|
||||||
r = radeon_asic_init(rdev);
|
r = radeon_asic_init(rdev);
|
||||||
if (r) {
|
if (r)
|
||||||
return r;
|
return r;
|
||||||
}
|
radeon_check_arguments(rdev);
|
||||||
|
|
||||||
if (rdev->flags & RADEON_IS_AGP && radeon_agpmode == -1) {
|
if (rdev->flags & RADEON_IS_AGP && radeon_agpmode == -1) {
|
||||||
radeon_agp_disable(rdev);
|
radeon_agp_disable(rdev);
|
||||||
|
Reference in New Issue
Block a user