Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

drm/radeon: Add ability to get and change dpm state when radeon PX card is turned off

This fixing commit 4f2f203976964e267dc477de6648bdb3acd2b74b

bug:
https://bugzilla.kernel.org/show_bug.cgi?id=76321

Signed-off-by: Pali Rohár <pali.rohar@gmail.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Cc: stable@vger.kernel.org

authored by

Pali Rohár and committed by
Alex Deucher
b07a657e 6bce8d97

+6 -10
+6 -10
drivers/gpu/drm/radeon/radeon_pm.c
··· 460 460 struct radeon_device *rdev = ddev->dev_private; 461 461 enum radeon_pm_state_type pm = rdev->pm.dpm.user_state; 462 462 463 - if ((rdev->flags & RADEON_IS_PX) && 464 - (ddev->switch_power_state != DRM_SWITCH_POWER_ON)) 465 - return snprintf(buf, PAGE_SIZE, "off\n"); 466 - 467 463 return snprintf(buf, PAGE_SIZE, "%s\n", 468 464 (pm == POWER_STATE_TYPE_BATTERY) ? "battery" : 469 465 (pm == POWER_STATE_TYPE_BALANCED) ? "balanced" : "performance"); ··· 472 476 { 473 477 struct drm_device *ddev = dev_get_drvdata(dev); 474 478 struct radeon_device *rdev = ddev->dev_private; 475 - 476 - /* Can't set dpm state when the card is off */ 477 - if ((rdev->flags & RADEON_IS_PX) && 478 - (ddev->switch_power_state != DRM_SWITCH_POWER_ON)) 479 - return -EINVAL; 480 479 481 480 mutex_lock(&rdev->pm.mutex); 482 481 if (strncmp("battery", buf, strlen("battery")) == 0) ··· 486 495 goto fail; 487 496 } 488 497 mutex_unlock(&rdev->pm.mutex); 489 - radeon_pm_compute_clocks(rdev); 498 + 499 + /* Can't set dpm state when the card is off */ 500 + if (!(rdev->flags & RADEON_IS_PX) || 501 + (ddev->switch_power_state == DRM_SWITCH_POWER_ON)) 502 + radeon_pm_compute_clocks(rdev); 503 + 490 504 fail: 491 505 return count; 492 506 }