1
0
Fork 0

Merge pull request #32 from olysonek/radeon

[WIP] Video plugin improvements
This commit is contained in:
Jaroslav Škarvada 2017-09-19 11:57:55 +02:00 committed by GitHub
commit dd6460be8d

View file

@ -29,6 +29,7 @@ class VideoPlugin(base.Plugin):
def _get_config_options(self):
return {
"radeon_powersave" : None,
"radeon_dpm_state" : None,
}
def _instance_init(self, instance):
@ -44,6 +45,9 @@ class VideoPlugin(base.Plugin):
"profile": "/sys/class/drm/%s/device/power_profile" % device,
}
def _radeon_dpm_state_file(self, device):
return "/sys/class/drm/%s/device/power_dpm_state" % device
@command_set("radeon_powersave", per_device=True)
def _set_radeon_powersave(self, value, device, sim):
sys_files = self._radeon_powersave_files(device)
@ -61,6 +65,12 @@ class VideoPlugin(base.Plugin):
if not sim:
self._cmd.write_to_file(sys_files["method"], "dynpm")
return "dynpm"
elif value == "dpm":
if not sim and self._get_radeon_powersave(device) != "dpm":
log.error("Cannot set dpm power method through the video plugin." \
+ "Use the bootloader plugin with the 'cmdline = radeon.dpm=1' option")
return None
return "dpm"
else:
if not sim:
log.warn("Invalid option for radeon_powersave.")
@ -73,7 +83,28 @@ class VideoPlugin(base.Plugin):
method = self._cmd.read_file(sys_files["method"], no_error=ignore_missing).strip()
if method == "profile":
return self._cmd.read_file(sys_files["profile"]).strip()
elif method == "dynpm":
return "dynpm"
elif method == "dynpm" or method == "dpm":
return method
else:
return None
@command_set("radeon_dpm_state", per_device=True, priority=10)
def _set_radeon_dpm_state(self, value, device, sim):
if self._get_radeon_powersave(device) != "dpm":
log.error("dpm power method is not enabled.")
return None
if not value in ["battery", "balanced", "performance"]:
if not sim:
log.warn("Invalid option for radeon_dpm_state.")
return None
path = self._radeon_dpm_state_file(device)
self._cmd.write_to_file(path, value)
return value
@command_get("radeon_dpm_state")
def _get_radeon_dpm_state(self, device):
if self._get_radeon_powersave(device) != "dpm":
log.error("dpm power method is not enabled.")
return None
path = self._radeon_dpm_state_file(device)
return self._cmd.read_file(path).strip()