diff options
author | Alex Deucher <alexander.deucher@amd.com> | 2014-08-07 09:28:31 -0400 |
---|---|---|
committer | Alex Deucher <alexander.deucher@amd.com> | 2014-08-15 00:57:27 -0400 |
commit | 6e909f74db2aa9c5b5606b81efcbe18f2749b008 (patch) | |
tree | b3cc50522fee4433665ebc6fca88f832c778bcfe | |
parent | 251964845fbf539781dd2c6406cb2ba1bf9eddd0 (diff) |
drm/radeon: add bapm module parameter
Add a module paramter to enable bapm on APUs. It's disabled
by default on certain APUs due to stability issues. This
option makes it easier to test and to enable it on systems that
are stable.
bug:
https://bugzilla.kernel.org/show_bug.cgi?id=81021
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Cc: stable@vger.kernel.org
-rw-r--r-- | drivers/gpu/drm/radeon/kv_dpm.c | 5 | ||||
-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/trinity_dpm.c | 24 |
4 files changed, 24 insertions, 10 deletions
diff --git a/drivers/gpu/drm/radeon/kv_dpm.c b/drivers/gpu/drm/radeon/kv_dpm.c index 9ef8c38f2d66..c667d83bfa25 100644 --- a/drivers/gpu/drm/radeon/kv_dpm.c +++ b/drivers/gpu/drm/radeon/kv_dpm.c | |||
@@ -2726,7 +2726,10 @@ int kv_dpm_init(struct radeon_device *rdev) | |||
2726 | pi->caps_sclk_ds = true; | 2726 | pi->caps_sclk_ds = true; |
2727 | pi->enable_auto_thermal_throttling = true; | 2727 | pi->enable_auto_thermal_throttling = true; |
2728 | pi->disable_nb_ps3_in_battery = false; | 2728 | pi->disable_nb_ps3_in_battery = false; |
2729 | pi->bapm_enable = true; | 2729 | if (radeon_bapm == 0) |
2730 | pi->bapm_enable = false; | ||
2731 | else | ||
2732 | pi->bapm_enable = true; | ||
2730 | pi->voltage_drop_t = 0; | 2733 | pi->voltage_drop_t = 0; |
2731 | pi->caps_sclk_throttle_low_notification = false; | 2734 | pi->caps_sclk_throttle_low_notification = false; |
2732 | pi->caps_fps = false; /* true? */ | 2735 | pi->caps_fps = false; /* true? */ |
diff --git a/drivers/gpu/drm/radeon/radeon.h b/drivers/gpu/drm/radeon/radeon.h index 9e1732eb402c..e715e0c1f5d8 100644 --- a/drivers/gpu/drm/radeon/radeon.h +++ b/drivers/gpu/drm/radeon/radeon.h | |||
@@ -105,6 +105,7 @@ extern int radeon_vm_size; | |||
105 | extern int radeon_vm_block_size; | 105 | extern int radeon_vm_block_size; |
106 | extern int radeon_deep_color; | 106 | extern int radeon_deep_color; |
107 | extern int radeon_use_pflipirq; | 107 | extern int radeon_use_pflipirq; |
108 | extern int radeon_bapm; | ||
108 | 109 | ||
109 | /* | 110 | /* |
110 | * Copy from radeon_drv.h so we don't have to include both and have conflicting | 111 | * 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 092d067f93e1..8df888908833 100644 --- a/drivers/gpu/drm/radeon/radeon_drv.c +++ b/drivers/gpu/drm/radeon/radeon_drv.c | |||
@@ -180,6 +180,7 @@ int radeon_vm_size = 8; | |||
180 | int radeon_vm_block_size = -1; | 180 | int radeon_vm_block_size = -1; |
181 | int radeon_deep_color = 0; | 181 | int radeon_deep_color = 0; |
182 | int radeon_use_pflipirq = 2; | 182 | int radeon_use_pflipirq = 2; |
183 | int radeon_bapm = -1; | ||
183 | 184 | ||
184 | MODULE_PARM_DESC(no_wb, "Disable AGP writeback for scratch registers"); | 185 | MODULE_PARM_DESC(no_wb, "Disable AGP writeback for scratch registers"); |
185 | module_param_named(no_wb, radeon_no_wb, int, 0444); | 186 | module_param_named(no_wb, radeon_no_wb, int, 0444); |
@@ -259,6 +260,9 @@ module_param_named(deep_color, radeon_deep_color, int, 0444); | |||
259 | MODULE_PARM_DESC(use_pflipirq, "Pflip irqs for pageflip completion (0 = disable, 1 = as fallback, 2 = exclusive (default))"); | 260 | MODULE_PARM_DESC(use_pflipirq, "Pflip irqs for pageflip completion (0 = disable, 1 = as fallback, 2 = exclusive (default))"); |
260 | module_param_named(use_pflipirq, radeon_use_pflipirq, int, 0444); | 261 | module_param_named(use_pflipirq, radeon_use_pflipirq, int, 0444); |
261 | 262 | ||
263 | MODULE_PARM_DESC(bapm, "BAPM support (1 = enable, 0 = disable, -1 = auto)"); | ||
264 | module_param_named(bapm, radeon_bapm, int, 0444); | ||
265 | |||
262 | static struct pci_device_id pciidlist[] = { | 266 | static struct pci_device_id pciidlist[] = { |
263 | radeon_PCI_IDS | 267 | radeon_PCI_IDS |
264 | }; | 268 | }; |
diff --git a/drivers/gpu/drm/radeon/trinity_dpm.c b/drivers/gpu/drm/radeon/trinity_dpm.c index 32e50be9c4ac..57f780053b3e 100644 --- a/drivers/gpu/drm/radeon/trinity_dpm.c +++ b/drivers/gpu/drm/radeon/trinity_dpm.c | |||
@@ -1874,16 +1874,22 @@ int trinity_dpm_init(struct radeon_device *rdev) | |||
1874 | for (i = 0; i < SUMO_MAX_HARDWARE_POWERLEVELS; i++) | 1874 | for (i = 0; i < SUMO_MAX_HARDWARE_POWERLEVELS; i++) |
1875 | pi->at[i] = TRINITY_AT_DFLT; | 1875 | pi->at[i] = TRINITY_AT_DFLT; |
1876 | 1876 | ||
1877 | /* There are stability issues reported on with | 1877 | if (radeon_bapm == -1) { |
1878 | * bapm enabled when switching between AC and battery | 1878 | /* There are stability issues reported on with |
1879 | * power. At the same time, some MSI boards hang | 1879 | * bapm enabled when switching between AC and battery |
1880 | * if it's not enabled and dpm is enabled. Just enable | 1880 | * power. At the same time, some MSI boards hang |
1881 | * it for MSI boards right now. | 1881 | * if it's not enabled and dpm is enabled. Just enable |
1882 | */ | 1882 | * it for MSI boards right now. |
1883 | if (rdev->pdev->subsystem_vendor == 0x1462) | 1883 | */ |
1884 | pi->enable_bapm = true; | 1884 | if (rdev->pdev->subsystem_vendor == 0x1462) |
1885 | else | 1885 | pi->enable_bapm = true; |
1886 | else | ||
1887 | pi->enable_bapm = false; | ||
1888 | } else if (radeon_bapm == 0) { | ||
1886 | pi->enable_bapm = false; | 1889 | pi->enable_bapm = false; |
1890 | } else { | ||
1891 | pi->enable_bapm = true; | ||
1892 | } | ||
1887 | pi->enable_nbps_policy = true; | 1893 | pi->enable_nbps_policy = true; |
1888 | pi->enable_sclk_ds = true; | 1894 | pi->enable_sclk_ds = true; |
1889 | pi->enable_gfx_power_gating = true; | 1895 | pi->enable_gfx_power_gating = true; |