diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2019-02-22 13:35:06 -0500 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2019-02-22 13:35:06 -0500 |
| commit | 6ee2846cb4e7c6e8acdcb265299ad1c6de42b437 (patch) | |
| tree | 2dbeffd231782f58c186b1cdeee738143e204cfa | |
| parent | 168bd29830e8ebbffcd70d2af50249dca088e1a8 (diff) | |
| parent | 019276ed65f364de27b929da4e083bb86ce7d1ef (diff) | |
Merge tag 'drm-fixes-2019-02-22' of git://anongit.freedesktop.org/drm/drm
Pull drm fixes from Dave Airlie:
"This contains a single i915 tiled display fix, and a set of
amdgpu/radeon fixes.
i915:
- tiled display fix
amdgpu/radeon:
- runtime PM fix
- bulk moves disable (fix is too large for 5.0)
- a set of display fixes that are all cc'ed stable so we didn't want
to leave them until -next"
* tag 'drm-fixes-2019-02-22' of git://anongit.freedesktop.org/drm/drm:
drm/amdgpu: disable bulk moves for now
drm/amd/display: set clocks to 0 on suspend on dce80
drm/amd/display: fix optimize_bandwidth func pointer for dce80
drm/amd/display: Fix negative cursor pos programming
drm/i915/fbdev: Actually configure untiled displays
drm/amd/display: Raise dispclk value for dce11
drm/amd/display: Fix MST reboot/poweroff sequence
drm/amdgpu: Update sdma golden setting for vega20
drm/amdgpu: Set DPM_FLAG_NEVER_SKIP when enabling PM-runtime
gpu: drm: radeon: Set DPM_FLAG_NEVER_SKIP when enabling PM-runtime
| -rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c | 1 | ||||
| -rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c | 2 | ||||
| -rw-r--r-- | drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c | 4 | ||||
| -rw-r--r-- | drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 5 | ||||
| -rw-r--r-- | drivers/gpu/drm/amd/display/dc/dce/dce_clk_mgr.c | 11 | ||||
| -rw-r--r-- | drivers/gpu/drm/amd/display/dc/dce100/dce100_hw_sequencer.h | 4 | ||||
| -rw-r--r-- | drivers/gpu/drm/amd/display/dc/dce80/dce80_hw_sequencer.c | 2 | ||||
| -rw-r--r-- | drivers/gpu/drm/amd/display/dc/dce80/dce80_resource.c | 19 | ||||
| -rw-r--r-- | drivers/gpu/drm/amd/display/dc/dcn10/dcn10_hw_sequencer.c | 4 | ||||
| -rw-r--r-- | drivers/gpu/drm/i915/intel_fbdev.c | 12 | ||||
| -rw-r--r-- | drivers/gpu/drm/radeon/radeon_kms.c | 1 |
11 files changed, 47 insertions, 18 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c index bc62bf41b7e9..5dc349173e4f 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c | |||
| @@ -212,6 +212,7 @@ int amdgpu_driver_load_kms(struct drm_device *dev, unsigned long flags) | |||
| 212 | } | 212 | } |
| 213 | 213 | ||
| 214 | if (amdgpu_device_is_px(dev)) { | 214 | if (amdgpu_device_is_px(dev)) { |
| 215 | dev_pm_set_driver_flags(dev->dev, DPM_FLAG_NEVER_SKIP); | ||
| 215 | pm_runtime_use_autosuspend(dev->dev); | 216 | pm_runtime_use_autosuspend(dev->dev); |
| 216 | pm_runtime_set_autosuspend_delay(dev->dev, 5000); | 217 | pm_runtime_set_autosuspend_delay(dev->dev, 5000); |
| 217 | pm_runtime_set_active(dev->dev); | 218 | pm_runtime_set_active(dev->dev); |
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c index 7c108e687683..698bcb8ce61d 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c | |||
| @@ -638,12 +638,14 @@ void amdgpu_vm_move_to_lru_tail(struct amdgpu_device *adev, | |||
| 638 | struct ttm_bo_global *glob = adev->mman.bdev.glob; | 638 | struct ttm_bo_global *glob = adev->mman.bdev.glob; |
| 639 | struct amdgpu_vm_bo_base *bo_base; | 639 | struct amdgpu_vm_bo_base *bo_base; |
| 640 | 640 | ||
| 641 | #if 0 | ||
| 641 | if (vm->bulk_moveable) { | 642 | if (vm->bulk_moveable) { |
| 642 | spin_lock(&glob->lru_lock); | 643 | spin_lock(&glob->lru_lock); |
| 643 | ttm_bo_bulk_move_lru_tail(&vm->lru_bulk_move); | 644 | ttm_bo_bulk_move_lru_tail(&vm->lru_bulk_move); |
| 644 | spin_unlock(&glob->lru_lock); | 645 | spin_unlock(&glob->lru_lock); |
| 645 | return; | 646 | return; |
| 646 | } | 647 | } |
| 648 | #endif | ||
| 647 | 649 | ||
| 648 | memset(&vm->lru_bulk_move, 0, sizeof(vm->lru_bulk_move)); | 650 | memset(&vm->lru_bulk_move, 0, sizeof(vm->lru_bulk_move)); |
| 649 | 651 | ||
diff --git a/drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c b/drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c index 6811a5d05b27..aa2f71cc1eba 100644 --- a/drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c +++ b/drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c | |||
| @@ -128,7 +128,7 @@ static const struct soc15_reg_golden golden_settings_sdma0_4_2_init[] = { | |||
| 128 | 128 | ||
| 129 | static const struct soc15_reg_golden golden_settings_sdma0_4_2[] = | 129 | static const struct soc15_reg_golden golden_settings_sdma0_4_2[] = |
| 130 | { | 130 | { |
| 131 | SOC15_REG_GOLDEN_VALUE(SDMA0, 0, mmSDMA0_CHICKEN_BITS, 0xfe931f07, 0x02831d07), | 131 | SOC15_REG_GOLDEN_VALUE(SDMA0, 0, mmSDMA0_CHICKEN_BITS, 0xfe931f07, 0x02831f07), |
| 132 | SOC15_REG_GOLDEN_VALUE(SDMA0, 0, mmSDMA0_CLK_CTRL, 0xffffffff, 0x3f000100), | 132 | SOC15_REG_GOLDEN_VALUE(SDMA0, 0, mmSDMA0_CLK_CTRL, 0xffffffff, 0x3f000100), |
| 133 | SOC15_REG_GOLDEN_VALUE(SDMA0, 0, mmSDMA0_GB_ADDR_CONFIG, 0x0000773f, 0x00004002), | 133 | SOC15_REG_GOLDEN_VALUE(SDMA0, 0, mmSDMA0_GB_ADDR_CONFIG, 0x0000773f, 0x00004002), |
| 134 | SOC15_REG_GOLDEN_VALUE(SDMA0, 0, mmSDMA0_GB_ADDR_CONFIG_READ, 0x0000773f, 0x00004002), | 134 | SOC15_REG_GOLDEN_VALUE(SDMA0, 0, mmSDMA0_GB_ADDR_CONFIG_READ, 0x0000773f, 0x00004002), |
| @@ -158,7 +158,7 @@ static const struct soc15_reg_golden golden_settings_sdma0_4_2[] = | |||
| 158 | }; | 158 | }; |
| 159 | 159 | ||
| 160 | static const struct soc15_reg_golden golden_settings_sdma1_4_2[] = { | 160 | static const struct soc15_reg_golden golden_settings_sdma1_4_2[] = { |
| 161 | SOC15_REG_GOLDEN_VALUE(SDMA1, 0, mmSDMA1_CHICKEN_BITS, 0xfe931f07, 0x02831d07), | 161 | SOC15_REG_GOLDEN_VALUE(SDMA1, 0, mmSDMA1_CHICKEN_BITS, 0xfe931f07, 0x02831f07), |
| 162 | SOC15_REG_GOLDEN_VALUE(SDMA1, 0, mmSDMA1_CLK_CTRL, 0xffffffff, 0x3f000100), | 162 | SOC15_REG_GOLDEN_VALUE(SDMA1, 0, mmSDMA1_CLK_CTRL, 0xffffffff, 0x3f000100), |
| 163 | SOC15_REG_GOLDEN_VALUE(SDMA1, 0, mmSDMA1_GB_ADDR_CONFIG, 0x0000773f, 0x00004002), | 163 | SOC15_REG_GOLDEN_VALUE(SDMA1, 0, mmSDMA1_GB_ADDR_CONFIG, 0x0000773f, 0x00004002), |
| 164 | SOC15_REG_GOLDEN_VALUE(SDMA1, 0, mmSDMA1_GB_ADDR_CONFIG_READ, 0x0000773f, 0x00004002), | 164 | SOC15_REG_GOLDEN_VALUE(SDMA1, 0, mmSDMA1_GB_ADDR_CONFIG_READ, 0x0000773f, 0x00004002), |
diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c index 0b392bfca284..5296b8f3e0ab 100644 --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | |||
| @@ -786,12 +786,13 @@ static int dm_suspend(void *handle) | |||
| 786 | struct amdgpu_display_manager *dm = &adev->dm; | 786 | struct amdgpu_display_manager *dm = &adev->dm; |
| 787 | int ret = 0; | 787 | int ret = 0; |
| 788 | 788 | ||
| 789 | WARN_ON(adev->dm.cached_state); | ||
| 790 | adev->dm.cached_state = drm_atomic_helper_suspend(adev->ddev); | ||
| 791 | |||
| 789 | s3_handle_mst(adev->ddev, true); | 792 | s3_handle_mst(adev->ddev, true); |
| 790 | 793 | ||
| 791 | amdgpu_dm_irq_suspend(adev); | 794 | amdgpu_dm_irq_suspend(adev); |
| 792 | 795 | ||
| 793 | WARN_ON(adev->dm.cached_state); | ||
| 794 | adev->dm.cached_state = drm_atomic_helper_suspend(adev->ddev); | ||
| 795 | 796 | ||
| 796 | dc_set_power_state(dm->dc, DC_ACPI_CM_POWER_STATE_D3); | 797 | dc_set_power_state(dm->dc, DC_ACPI_CM_POWER_STATE_D3); |
| 797 | 798 | ||
diff --git a/drivers/gpu/drm/amd/display/dc/dce/dce_clk_mgr.c b/drivers/gpu/drm/amd/display/dc/dce/dce_clk_mgr.c index 19801bdba0d2..7a72ee46f14b 100644 --- a/drivers/gpu/drm/amd/display/dc/dce/dce_clk_mgr.c +++ b/drivers/gpu/drm/amd/display/dc/dce/dce_clk_mgr.c | |||
| @@ -662,6 +662,11 @@ static void dce11_update_clocks(struct clk_mgr *clk_mgr, | |||
| 662 | { | 662 | { |
| 663 | struct dce_clk_mgr *clk_mgr_dce = TO_DCE_CLK_MGR(clk_mgr); | 663 | struct dce_clk_mgr *clk_mgr_dce = TO_DCE_CLK_MGR(clk_mgr); |
| 664 | struct dm_pp_power_level_change_request level_change_req; | 664 | struct dm_pp_power_level_change_request level_change_req; |
| 665 | int patched_disp_clk = context->bw.dce.dispclk_khz; | ||
| 666 | |||
| 667 | /*TODO: W/A for dal3 linux, investigate why this works */ | ||
| 668 | if (!clk_mgr_dce->dfs_bypass_active) | ||
| 669 | patched_disp_clk = patched_disp_clk * 115 / 100; | ||
| 665 | 670 | ||
| 666 | level_change_req.power_level = dce_get_required_clocks_state(clk_mgr, context); | 671 | level_change_req.power_level = dce_get_required_clocks_state(clk_mgr, context); |
| 667 | /* get max clock state from PPLIB */ | 672 | /* get max clock state from PPLIB */ |
| @@ -671,9 +676,9 @@ static void dce11_update_clocks(struct clk_mgr *clk_mgr, | |||
| 671 | clk_mgr_dce->cur_min_clks_state = level_change_req.power_level; | 676 | clk_mgr_dce->cur_min_clks_state = level_change_req.power_level; |
| 672 | } | 677 | } |
| 673 | 678 | ||
| 674 | if (should_set_clock(safe_to_lower, context->bw.dce.dispclk_khz, clk_mgr->clks.dispclk_khz)) { | 679 | if (should_set_clock(safe_to_lower, patched_disp_clk, clk_mgr->clks.dispclk_khz)) { |
| 675 | context->bw.dce.dispclk_khz = dce_set_clock(clk_mgr, context->bw.dce.dispclk_khz); | 680 | context->bw.dce.dispclk_khz = dce_set_clock(clk_mgr, patched_disp_clk); |
| 676 | clk_mgr->clks.dispclk_khz = context->bw.dce.dispclk_khz; | 681 | clk_mgr->clks.dispclk_khz = patched_disp_clk; |
| 677 | } | 682 | } |
| 678 | dce11_pplib_apply_display_requirements(clk_mgr->ctx->dc, context); | 683 | dce11_pplib_apply_display_requirements(clk_mgr->ctx->dc, context); |
| 679 | } | 684 | } |
diff --git a/drivers/gpu/drm/amd/display/dc/dce100/dce100_hw_sequencer.h b/drivers/gpu/drm/amd/display/dc/dce100/dce100_hw_sequencer.h index acd418515346..a6b80fdaa666 100644 --- a/drivers/gpu/drm/amd/display/dc/dce100/dce100_hw_sequencer.h +++ b/drivers/gpu/drm/amd/display/dc/dce100/dce100_hw_sequencer.h | |||
| @@ -37,6 +37,10 @@ void dce100_prepare_bandwidth( | |||
| 37 | struct dc *dc, | 37 | struct dc *dc, |
| 38 | struct dc_state *context); | 38 | struct dc_state *context); |
| 39 | 39 | ||
| 40 | void dce100_optimize_bandwidth( | ||
| 41 | struct dc *dc, | ||
| 42 | struct dc_state *context); | ||
| 43 | |||
| 40 | bool dce100_enable_display_power_gating(struct dc *dc, uint8_t controller_id, | 44 | bool dce100_enable_display_power_gating(struct dc *dc, uint8_t controller_id, |
| 41 | struct dc_bios *dcb, | 45 | struct dc_bios *dcb, |
| 42 | enum pipe_gating_control power_gating); | 46 | enum pipe_gating_control power_gating); |
diff --git a/drivers/gpu/drm/amd/display/dc/dce80/dce80_hw_sequencer.c b/drivers/gpu/drm/amd/display/dc/dce80/dce80_hw_sequencer.c index a60a90e68d91..c4543178ba20 100644 --- a/drivers/gpu/drm/amd/display/dc/dce80/dce80_hw_sequencer.c +++ b/drivers/gpu/drm/amd/display/dc/dce80/dce80_hw_sequencer.c | |||
| @@ -77,6 +77,6 @@ void dce80_hw_sequencer_construct(struct dc *dc) | |||
| 77 | dc->hwss.enable_display_power_gating = dce100_enable_display_power_gating; | 77 | dc->hwss.enable_display_power_gating = dce100_enable_display_power_gating; |
| 78 | dc->hwss.pipe_control_lock = dce_pipe_control_lock; | 78 | dc->hwss.pipe_control_lock = dce_pipe_control_lock; |
| 79 | dc->hwss.prepare_bandwidth = dce100_prepare_bandwidth; | 79 | dc->hwss.prepare_bandwidth = dce100_prepare_bandwidth; |
| 80 | dc->hwss.optimize_bandwidth = dce100_prepare_bandwidth; | 80 | dc->hwss.optimize_bandwidth = dce100_optimize_bandwidth; |
| 81 | } | 81 | } |
| 82 | 82 | ||
diff --git a/drivers/gpu/drm/amd/display/dc/dce80/dce80_resource.c b/drivers/gpu/drm/amd/display/dc/dce80/dce80_resource.c index cdd1d6b7b9f2..4e9ea50141bd 100644 --- a/drivers/gpu/drm/amd/display/dc/dce80/dce80_resource.c +++ b/drivers/gpu/drm/amd/display/dc/dce80/dce80_resource.c | |||
| @@ -790,9 +790,22 @@ bool dce80_validate_bandwidth( | |||
| 790 | struct dc *dc, | 790 | struct dc *dc, |
| 791 | struct dc_state *context) | 791 | struct dc_state *context) |
| 792 | { | 792 | { |
| 793 | /* TODO implement when needed but for now hardcode max value*/ | 793 | int i; |
| 794 | context->bw.dce.dispclk_khz = 681000; | 794 | bool at_least_one_pipe = false; |
| 795 | context->bw.dce.yclk_khz = 250000 * MEMORY_TYPE_MULTIPLIER_CZ; | 795 | |
| 796 | for (i = 0; i < dc->res_pool->pipe_count; i++) { | ||
| 797 | if (context->res_ctx.pipe_ctx[i].stream) | ||
| 798 | at_least_one_pipe = true; | ||
| 799 | } | ||
| 800 | |||
| 801 | if (at_least_one_pipe) { | ||
| 802 | /* TODO implement when needed but for now hardcode max value*/ | ||
| 803 | context->bw.dce.dispclk_khz = 681000; | ||
| 804 | context->bw.dce.yclk_khz = 250000 * MEMORY_TYPE_MULTIPLIER_CZ; | ||
| 805 | } else { | ||
| 806 | context->bw.dce.dispclk_khz = 0; | ||
| 807 | context->bw.dce.yclk_khz = 0; | ||
| 808 | } | ||
| 796 | 809 | ||
| 797 | return true; | 810 | return true; |
| 798 | } | 811 | } |
diff --git a/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_hw_sequencer.c b/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_hw_sequencer.c index 58a12ddf12f3..41883c981789 100644 --- a/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_hw_sequencer.c +++ b/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_hw_sequencer.c | |||
| @@ -2658,8 +2658,8 @@ static void dcn10_set_cursor_position(struct pipe_ctx *pipe_ctx) | |||
| 2658 | .mirror = pipe_ctx->plane_state->horizontal_mirror | 2658 | .mirror = pipe_ctx->plane_state->horizontal_mirror |
| 2659 | }; | 2659 | }; |
| 2660 | 2660 | ||
| 2661 | pos_cpy.x -= pipe_ctx->plane_state->dst_rect.x; | 2661 | pos_cpy.x_hotspot += pipe_ctx->plane_state->dst_rect.x; |
| 2662 | pos_cpy.y -= pipe_ctx->plane_state->dst_rect.y; | 2662 | pos_cpy.y_hotspot += pipe_ctx->plane_state->dst_rect.y; |
| 2663 | 2663 | ||
| 2664 | if (pipe_ctx->plane_state->address.type | 2664 | if (pipe_ctx->plane_state->address.type |
| 2665 | == PLN_ADDR_TYPE_VIDEO_PROGRESSIVE) | 2665 | == PLN_ADDR_TYPE_VIDEO_PROGRESSIVE) |
diff --git a/drivers/gpu/drm/i915/intel_fbdev.c b/drivers/gpu/drm/i915/intel_fbdev.c index 7f365ac0b549..4ee16b264dbe 100644 --- a/drivers/gpu/drm/i915/intel_fbdev.c +++ b/drivers/gpu/drm/i915/intel_fbdev.c | |||
| @@ -336,8 +336,8 @@ static bool intel_fb_initial_config(struct drm_fb_helper *fb_helper, | |||
| 336 | bool *enabled, int width, int height) | 336 | bool *enabled, int width, int height) |
| 337 | { | 337 | { |
| 338 | struct drm_i915_private *dev_priv = to_i915(fb_helper->dev); | 338 | struct drm_i915_private *dev_priv = to_i915(fb_helper->dev); |
| 339 | unsigned long conn_configured, conn_seq, mask; | ||
| 340 | unsigned int count = min(fb_helper->connector_count, BITS_PER_LONG); | 339 | unsigned int count = min(fb_helper->connector_count, BITS_PER_LONG); |
| 340 | unsigned long conn_configured, conn_seq; | ||
| 341 | int i, j; | 341 | int i, j; |
| 342 | bool *save_enabled; | 342 | bool *save_enabled; |
| 343 | bool fallback = true, ret = true; | 343 | bool fallback = true, ret = true; |
| @@ -355,10 +355,9 @@ static bool intel_fb_initial_config(struct drm_fb_helper *fb_helper, | |||
| 355 | drm_modeset_backoff(&ctx); | 355 | drm_modeset_backoff(&ctx); |
| 356 | 356 | ||
| 357 | memcpy(save_enabled, enabled, count); | 357 | memcpy(save_enabled, enabled, count); |
| 358 | mask = GENMASK(count - 1, 0); | 358 | conn_seq = GENMASK(count - 1, 0); |
| 359 | conn_configured = 0; | 359 | conn_configured = 0; |
| 360 | retry: | 360 | retry: |
| 361 | conn_seq = conn_configured; | ||
| 362 | for (i = 0; i < count; i++) { | 361 | for (i = 0; i < count; i++) { |
| 363 | struct drm_fb_helper_connector *fb_conn; | 362 | struct drm_fb_helper_connector *fb_conn; |
| 364 | struct drm_connector *connector; | 363 | struct drm_connector *connector; |
| @@ -371,7 +370,8 @@ retry: | |||
| 371 | if (conn_configured & BIT(i)) | 370 | if (conn_configured & BIT(i)) |
| 372 | continue; | 371 | continue; |
| 373 | 372 | ||
| 374 | if (conn_seq == 0 && !connector->has_tile) | 373 | /* First pass, only consider tiled connectors */ |
| 374 | if (conn_seq == GENMASK(count - 1, 0) && !connector->has_tile) | ||
| 375 | continue; | 375 | continue; |
| 376 | 376 | ||
| 377 | if (connector->status == connector_status_connected) | 377 | if (connector->status == connector_status_connected) |
| @@ -475,8 +475,10 @@ retry: | |||
| 475 | conn_configured |= BIT(i); | 475 | conn_configured |= BIT(i); |
| 476 | } | 476 | } |
| 477 | 477 | ||
| 478 | if ((conn_configured & mask) != mask && conn_configured != conn_seq) | 478 | if (conn_configured != conn_seq) { /* repeat until no more are found */ |
| 479 | conn_seq = conn_configured; | ||
| 479 | goto retry; | 480 | goto retry; |
| 481 | } | ||
| 480 | 482 | ||
| 481 | /* | 483 | /* |
| 482 | * If the BIOS didn't enable everything it could, fall back to have the | 484 | * If the BIOS didn't enable everything it could, fall back to have the |
diff --git a/drivers/gpu/drm/radeon/radeon_kms.c b/drivers/gpu/drm/radeon/radeon_kms.c index dec1e081f529..6a8fb6fd183c 100644 --- a/drivers/gpu/drm/radeon/radeon_kms.c +++ b/drivers/gpu/drm/radeon/radeon_kms.c | |||
| @@ -172,6 +172,7 @@ int radeon_driver_load_kms(struct drm_device *dev, unsigned long flags) | |||
| 172 | } | 172 | } |
| 173 | 173 | ||
| 174 | if (radeon_is_px(dev)) { | 174 | if (radeon_is_px(dev)) { |
| 175 | dev_pm_set_driver_flags(dev->dev, DPM_FLAG_NEVER_SKIP); | ||
| 175 | pm_runtime_use_autosuspend(dev->dev); | 176 | pm_runtime_use_autosuspend(dev->dev); |
| 176 | pm_runtime_set_autosuspend_delay(dev->dev, 5000); | 177 | pm_runtime_set_autosuspend_delay(dev->dev, 5000); |
| 177 | pm_runtime_set_active(dev->dev); | 178 | pm_runtime_set_active(dev->dev); |
