mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-08-03 15:55:38 +00:00
drm/radeon: Add ability to get and change dpm state when radeon PX card is turned off
This fixing commit 4f2f203976
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
This commit is contained in:
parent
6bce8d9772
commit
b07a657e3a
1 changed files with 6 additions and 10 deletions
|
@ -460,10 +460,6 @@ static ssize_t radeon_get_dpm_state(struct device *dev,
|
||||||
struct radeon_device *rdev = ddev->dev_private;
|
struct radeon_device *rdev = ddev->dev_private;
|
||||||
enum radeon_pm_state_type pm = rdev->pm.dpm.user_state;
|
enum radeon_pm_state_type pm = rdev->pm.dpm.user_state;
|
||||||
|
|
||||||
if ((rdev->flags & RADEON_IS_PX) &&
|
|
||||||
(ddev->switch_power_state != DRM_SWITCH_POWER_ON))
|
|
||||||
return snprintf(buf, PAGE_SIZE, "off\n");
|
|
||||||
|
|
||||||
return snprintf(buf, PAGE_SIZE, "%s\n",
|
return snprintf(buf, PAGE_SIZE, "%s\n",
|
||||||
(pm == POWER_STATE_TYPE_BATTERY) ? "battery" :
|
(pm == POWER_STATE_TYPE_BATTERY) ? "battery" :
|
||||||
(pm == POWER_STATE_TYPE_BALANCED) ? "balanced" : "performance");
|
(pm == POWER_STATE_TYPE_BALANCED) ? "balanced" : "performance");
|
||||||
|
@ -477,11 +473,6 @@ static ssize_t radeon_set_dpm_state(struct device *dev,
|
||||||
struct drm_device *ddev = dev_get_drvdata(dev);
|
struct drm_device *ddev = dev_get_drvdata(dev);
|
||||||
struct radeon_device *rdev = ddev->dev_private;
|
struct radeon_device *rdev = ddev->dev_private;
|
||||||
|
|
||||||
/* Can't set dpm state when the card is off */
|
|
||||||
if ((rdev->flags & RADEON_IS_PX) &&
|
|
||||||
(ddev->switch_power_state != DRM_SWITCH_POWER_ON))
|
|
||||||
return -EINVAL;
|
|
||||||
|
|
||||||
mutex_lock(&rdev->pm.mutex);
|
mutex_lock(&rdev->pm.mutex);
|
||||||
if (strncmp("battery", buf, strlen("battery")) == 0)
|
if (strncmp("battery", buf, strlen("battery")) == 0)
|
||||||
rdev->pm.dpm.user_state = POWER_STATE_TYPE_BATTERY;
|
rdev->pm.dpm.user_state = POWER_STATE_TYPE_BATTERY;
|
||||||
|
@ -495,7 +486,12 @@ static ssize_t radeon_set_dpm_state(struct device *dev,
|
||||||
goto fail;
|
goto fail;
|
||||||
}
|
}
|
||||||
mutex_unlock(&rdev->pm.mutex);
|
mutex_unlock(&rdev->pm.mutex);
|
||||||
radeon_pm_compute_clocks(rdev);
|
|
||||||
|
/* Can't set dpm state when the card is off */
|
||||||
|
if (!(rdev->flags & RADEON_IS_PX) ||
|
||||||
|
(ddev->switch_power_state == DRM_SWITCH_POWER_ON))
|
||||||
|
radeon_pm_compute_clocks(rdev);
|
||||||
|
|
||||||
fail:
|
fail:
|
||||||
return count;
|
return count;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue