hc
2023-11-06 e3e12f52b214121840b44c91de5b3e5af5d3eb84
kernel/drivers/video/rockchip/mpp/mpp_rkvdec.c
....@@ -944,11 +944,11 @@
944944 task = to_rkvdec_task(mpp_task);
945945
946946 /*
947
- * HW defeat workaround: VP9 power save optimization cause decoding
947
+ * HW defeat workaround: VP9 and H.265 power save optimization cause decoding
948948 * corruption, disable optimization here.
949949 */
950950 fmt = RKVDEC_GET_FORMAT(task->reg[RKVDEC_REG_SYS_CTRL_INDEX]);
951
- if (fmt == RKVDEC_FMT_VP9D) {
951
+ if (fmt == RKVDEC_FMT_VP9D || fmt == RKVDEC_FMT_H265D) {
952952 cfg = task->reg[RKVDEC_POWER_CTL_INDEX] | 0xFFFF;
953953 task->reg[RKVDEC_POWER_CTL_INDEX] = cfg & (~(1 << 12));
954954 mpp_write_relaxed(mpp, RKVDEC_POWER_CTL_BASE,
....@@ -1171,6 +1171,10 @@
11711171 dec->procfs = NULL;
11721172 return -EIO;
11731173 }
1174
+
1175
+ /* for common mpp_dev options */
1176
+ mpp_procfs_create_common(dec->procfs, mpp);
1177
+
11741178 mpp_procfs_create_u32("aclk", 0644,
11751179 dec->procfs, &dec->aclk_info.debug_rate_hz);
11761180 mpp_procfs_create_u32("clk_core", 0644,
....@@ -1629,7 +1633,7 @@
16291633
16301634 mpp_debug_enter();
16311635 if (dec->rst_a && dec->rst_h) {
1632
- rockchip_pmu_idle_request(mpp->dev, true);
1636
+ mpp_pmu_idle_request(mpp, true);
16331637 mpp_safe_reset(dec->rst_niu_a);
16341638 mpp_safe_reset(dec->rst_niu_h);
16351639 mpp_safe_reset(dec->rst_a);
....@@ -1645,7 +1649,7 @@
16451649 mpp_safe_unreset(dec->rst_core);
16461650 mpp_safe_unreset(dec->rst_cabac);
16471651 mpp_safe_unreset(dec->rst_hevc_cabac);
1648
- rockchip_pmu_idle_request(mpp->dev, false);
1652
+ mpp_pmu_idle_request(mpp, false);
16491653 }
16501654 mpp_debug_leave();
16511655