mirror of
https://github.com/armbian/linux.git
synced 2026-01-06 10:13:00 -08:00
video: rockchip: vpu: auto select opp-table by leakage
Change-Id: I3937d7bd896cca9aedb80bac2a8eb8737c79e7fb Signed-off-by: Liang Chen <cl@rock-chips.com>
This commit is contained in:
@@ -54,6 +54,7 @@
|
||||
#include <linux/dma-buf.h>
|
||||
#include <linux/rockchip-iovmm.h>
|
||||
#include <video/rk_vpu_service.h>
|
||||
#include <soc/rockchip/rockchip_opp_select.h>
|
||||
|
||||
#include "vcodec_hw_info.h"
|
||||
#include "vcodec_hw_vpu.h"
|
||||
@@ -3271,6 +3272,9 @@ static int vcodec_probe(struct platform_device *pdev)
|
||||
struct vpu_service_info *pservice = NULL;
|
||||
struct vcodec_device_info *driver_data;
|
||||
struct vpu_session *session = NULL;
|
||||
#define MAX_PROP_NAME_LEN 3
|
||||
char name[MAX_PROP_NAME_LEN];
|
||||
int lkg_volt_sel;
|
||||
|
||||
pservice = devm_kzalloc(dev, sizeof(struct vpu_service_info),
|
||||
GFP_KERNEL);
|
||||
@@ -3327,6 +3331,15 @@ static int vcodec_probe(struct platform_device *pdev)
|
||||
goto err;
|
||||
|
||||
if (!IS_ERR(pservice->vdd_vcodec)) {
|
||||
lkg_volt_sel = rockchip_of_get_lkg_volt_sel(dev,
|
||||
"rkvdec_leakage");
|
||||
if (lkg_volt_sel >= 0) {
|
||||
snprintf(name, MAX_PROP_NAME_LEN, "L%d", lkg_volt_sel);
|
||||
ret = dev_pm_opp_set_prop_name(dev, name);
|
||||
if (ret)
|
||||
dev_err(dev, "Failed to set prop name\n");
|
||||
}
|
||||
|
||||
if (dev_pm_opp_of_add_table(dev)) {
|
||||
dev_err(dev, "Invalid operating-points\n");
|
||||
return -EINVAL;
|
||||
|
||||
Reference in New Issue
Block a user