diff options
author | Alex Deucher <alexdeucher@gmail.com> | 2011-01-12 20:05:11 -0500 |
---|---|---|
committer | Dave Airlie <airlied@redhat.com> | 2011-01-16 21:21:34 -0500 |
commit | d42dd579ac1498e23f29465225fa3eee4520f5e5 (patch) | |
tree | 0781d5ae64b039a23bfdc2ec2c7356b679247d18 /drivers/gpu | |
parent | 394d83c17fac2b7bcf05cb99d1e945135767bb6b (diff) |
drm/radeon/kms: add module option for pcie gen2
Switching to pcie gen2 causes problems on some
boards. Add a module option to turn it on/off.
There are gen2 compatability issues with some
motherboards it seems.
Fixes:
https://bugs.freedesktop.org/show_bug.cgi?id=33027
Signed-off-by: Alex Deucher <alexdeucher@gmail.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
Diffstat (limited to 'drivers/gpu')
-rw-r--r-- | drivers/gpu/drm/radeon/evergreen.c | 3 | ||||
-rw-r--r-- | drivers/gpu/drm/radeon/r600.c | 3 | ||||
-rw-r--r-- | drivers/gpu/drm/radeon/radeon.h | 1 | ||||
-rw-r--r-- | drivers/gpu/drm/radeon/radeon_drv.c | 4 | ||||
-rw-r--r-- | drivers/gpu/drm/radeon/rv770.c | 3 |
5 files changed, 14 insertions, 0 deletions
diff --git a/drivers/gpu/drm/radeon/evergreen.c b/drivers/gpu/drm/radeon/evergreen.c index 7fe8ebdcdc0e..e201a88caf59 100644 --- a/drivers/gpu/drm/radeon/evergreen.c +++ b/drivers/gpu/drm/radeon/evergreen.c | |||
@@ -3158,6 +3158,9 @@ static void evergreen_pcie_gen2_enable(struct radeon_device *rdev) | |||
3158 | { | 3158 | { |
3159 | u32 link_width_cntl, speed_cntl; | 3159 | u32 link_width_cntl, speed_cntl; |
3160 | 3160 | ||
3161 | if (radeon_pcie_gen2 == 0) | ||
3162 | return; | ||
3163 | |||
3161 | if (rdev->flags & RADEON_IS_IGP) | 3164 | if (rdev->flags & RADEON_IS_IGP) |
3162 | return; | 3165 | return; |
3163 | 3166 | ||
diff --git a/drivers/gpu/drm/radeon/r600.c b/drivers/gpu/drm/radeon/r600.c index 6b50716267c0..9fe86253cfcd 100644 --- a/drivers/gpu/drm/radeon/r600.c +++ b/drivers/gpu/drm/radeon/r600.c | |||
@@ -3658,6 +3658,9 @@ static void r600_pcie_gen2_enable(struct radeon_device *rdev) | |||
3658 | u32 link_width_cntl, lanes, speed_cntl, training_cntl, tmp; | 3658 | u32 link_width_cntl, lanes, speed_cntl, training_cntl, tmp; |
3659 | u16 link_cntl2; | 3659 | u16 link_cntl2; |
3660 | 3660 | ||
3661 | if (radeon_pcie_gen2 == 0) | ||
3662 | return; | ||
3663 | |||
3661 | if (rdev->flags & RADEON_IS_IGP) | 3664 | if (rdev->flags & RADEON_IS_IGP) |
3662 | return; | 3665 | return; |
3663 | 3666 | ||
diff --git a/drivers/gpu/drm/radeon/radeon.h b/drivers/gpu/drm/radeon/radeon.h index e9486630a467..71d2a554bbe6 100644 --- a/drivers/gpu/drm/radeon/radeon.h +++ b/drivers/gpu/drm/radeon/radeon.h | |||
@@ -92,6 +92,7 @@ extern int radeon_tv; | |||
92 | extern int radeon_audio; | 92 | extern int radeon_audio; |
93 | extern int radeon_disp_priority; | 93 | extern int radeon_disp_priority; |
94 | extern int radeon_hw_i2c; | 94 | extern int radeon_hw_i2c; |
95 | extern int radeon_pcie_gen2; | ||
95 | 96 | ||
96 | /* | 97 | /* |
97 | * Copy from radeon_drv.h so we don't have to include both and have conflicting | 98 | * Copy from radeon_drv.h so we don't have to include both and have conflicting |
diff --git a/drivers/gpu/drm/radeon/radeon_drv.c b/drivers/gpu/drm/radeon/radeon_drv.c index be5cb4f28c29..d5680a0c87af 100644 --- a/drivers/gpu/drm/radeon/radeon_drv.c +++ b/drivers/gpu/drm/radeon/radeon_drv.c | |||
@@ -104,6 +104,7 @@ int radeon_tv = 1; | |||
104 | int radeon_audio = 1; | 104 | int radeon_audio = 1; |
105 | int radeon_disp_priority = 0; | 105 | int radeon_disp_priority = 0; |
106 | int radeon_hw_i2c = 0; | 106 | int radeon_hw_i2c = 0; |
107 | int radeon_pcie_gen2 = 0; | ||
107 | 108 | ||
108 | MODULE_PARM_DESC(no_wb, "Disable AGP writeback for scratch registers"); | 109 | MODULE_PARM_DESC(no_wb, "Disable AGP writeback for scratch registers"); |
109 | module_param_named(no_wb, radeon_no_wb, int, 0444); | 110 | module_param_named(no_wb, radeon_no_wb, int, 0444); |
@@ -147,6 +148,9 @@ module_param_named(disp_priority, radeon_disp_priority, int, 0444); | |||
147 | MODULE_PARM_DESC(hw_i2c, "hw i2c engine enable (0 = disable)"); | 148 | MODULE_PARM_DESC(hw_i2c, "hw i2c engine enable (0 = disable)"); |
148 | module_param_named(hw_i2c, radeon_hw_i2c, int, 0444); | 149 | module_param_named(hw_i2c, radeon_hw_i2c, int, 0444); |
149 | 150 | ||
151 | MODULE_PARM_DESC(pcie_gen2, "PCIE Gen2 mode (1 = enable)"); | ||
152 | module_param_named(pcie_gen2, radeon_pcie_gen2, int, 0444); | ||
153 | |||
150 | static int radeon_suspend(struct drm_device *dev, pm_message_t state) | 154 | static int radeon_suspend(struct drm_device *dev, pm_message_t state) |
151 | { | 155 | { |
152 | drm_radeon_private_t *dev_priv = dev->dev_private; | 156 | drm_radeon_private_t *dev_priv = dev->dev_private; |
diff --git a/drivers/gpu/drm/radeon/rv770.c b/drivers/gpu/drm/radeon/rv770.c index 3a264aa3a79a..bd9ee90421e4 100644 --- a/drivers/gpu/drm/radeon/rv770.c +++ b/drivers/gpu/drm/radeon/rv770.c | |||
@@ -1372,6 +1372,9 @@ static void rv770_pcie_gen2_enable(struct radeon_device *rdev) | |||
1372 | u32 link_width_cntl, lanes, speed_cntl, tmp; | 1372 | u32 link_width_cntl, lanes, speed_cntl, tmp; |
1373 | u16 link_cntl2; | 1373 | u16 link_cntl2; |
1374 | 1374 | ||
1375 | if (radeon_pcie_gen2 == 0) | ||
1376 | return; | ||
1377 | |||
1375 | if (rdev->flags & RADEON_IS_IGP) | 1378 | if (rdev->flags & RADEON_IS_IGP) |
1376 | return; | 1379 | return; |
1377 | 1380 | ||