3 Yd @sXddlmZddlTddlZddlmZddlZddlZej j Z Gdddej Z dS))base)*N)commandsc@sjeZdZdZddZddZeddZdd Zd d Z d d Z e dddddZ e ddddZdS) VideoPlugina `video`:: Sets various powersave levels on video cards. Currently, only the Radeon cards are supported. The powersave level can be specified by using the [option]`radeon_powersave` option. Supported values are: + -- * `default` * `auto` * `low` * `mid` * `high` * `dynpm` * `dpm-battery` * `dpm-balanced` * `dpm-perfomance` -- + For additional detail, see link:https://www.x.org/wiki/RadeonFeature/#kmspowermanagementoptions[KMS Power Management Options]. + NOTE: This plug-in is experimental and the option might change in future releases. + .To set the powersave level for the Radeon video card to high ==== ---- [video] radeon_powersave=high ---- ==== cCsTd|_t|_t|_x0|jjdjdjddD]}|jj|j q2Wt |_ dS)NTdrmzcard*ZDEVTYPEZ drm_minor) Z_devices_supportedsetZ _free_devicesZ_assigned_devices_hardware_inventoryZ get_devicesZmatch_sys_nameZmatch_propertyaddZsys_namer_cmd)selfdevicer"/usr/lib/python3.6/plugin_video.py _init_devices,s  zVideoPlugin._init_devicescsfdd|DS)Ncsg|]}jjd|qS)r)r Z get_device).0x)r rr 8sz3VideoPlugin._get_device_objects..r)r Zdevicesr)r r_get_device_objects7szVideoPlugin._get_device_objectscCsddiS)Nradeon_powersaver)r rrr_get_config_options:szVideoPlugin._get_config_optionscCsd|_d|_dS)NFT)Z_has_dynamic_tuningZ_has_static_tuning)r instancerrr_instance_init@szVideoPlugin._instance_initcCsdS)Nr)r rrrr_instance_cleanupDszVideoPlugin._instance_cleanupcCsd|d|d|dS)Nz%/sys/class/drm/%s/device/power_methodz&/sys/class/drm/%s/device/power_profilez(/sys/class/drm/%s/device/power_dpm_state)methodprofile dpm_stater)r r rrr_radeon_powersave_filesGsz#VideoPlugin._radeon_powersave_filesrT)Z per_devicecCs|j|}ttjdd|j}tjj|dsF|sFtj d|dSx|D]}|dkr|s|j j |dd r|j j |d |r|SqL|d kr|s|j j |dd rd SqL|dkr|s |t dd}|j j |ddr |j j |d|r |SqL|stj ddSqLWdS)Nz#(\s*:\s*)|(\s+)|(\s*;\s*)|(\s*,\s*) rz)radeon_powersave is not supported on '%s'defaultautolowmidhighrdynpm dpm-battery dpm-balanceddpm-performancezdpm-dpmrz$Invalid option for radeon_powersave.)rr r!r"r#)r%r&r') rstrresubsplitospathexistslogwarnr Z write_to_filelen)r valuer Zsim sys_filesZvavstaterrr_set_radeon_powersaveNs4    z!VideoPlugin._set_radeon_powersaveFcCsr|j|}|jj|d|dj}|dkr>|jj|djS|dkrJ|S|dkrjd|jj|djSdSdS)Nr)Zno_errorrr$r(zdpm-r)rr Z read_filestrip)r r Zignore_missingr4rrrr_get_radeon_powersavems z!VideoPlugin._get_radeon_powersaveN)F)__name__ __module__ __qualname____doc__rr classmethodrrrrZ command_setr7Z command_getr9rrrrr s   r)rZ decoratorsZ tuned.logsZtunedZtuned.utils.commandsrr-r*Zlogsgetr0ZPluginrrrrrs