VPU: pmu idle request before cru operation.

pmu idle request before cru operation to ensure the hardware
don't be reset during runing. without this hardware maybe hang
up for bus access failure.

Signed-off-by: Alpha Lin <alpha.lin@rock-chips.com>
This commit is contained in:
Alpha Lin
2015-07-15 14:49:51 +08:00
parent 13b95ebabe
commit 2a9e6a67a2

View File

@@ -779,6 +779,11 @@ static void vpu_put_clk(struct vpu_service_info *pservice)
static void vpu_reset(struct vpu_subdev_data *data)
{
struct vpu_service_info *pservice = data->pservice;
enum pmu_idle_req type = IDLE_REQ_VIDEO;
if (pservice->dev_id == VCODEC_DEVICE_ID_HEVC)
type = IDLE_REQ_HEVC;
pr_info("%s: resetting...", dev_name(pservice->dev));
#if defined(CONFIG_ARCH_RK29)
@@ -817,6 +822,9 @@ static void vpu_reset(struct vpu_subdev_data *data)
pr_info("for 3288/3368...");
#ifdef CONFIG_RESET_CONTROLLER
if (pservice->rst_a && pservice->rst_h) {
if (rockchip_pmu_ops.set_idle_request)
rockchip_pmu_ops.set_idle_request(type, true);
pr_info("reset in\n");
if (pservice->rst_v)
reset_control_assert(pservice->rst_v);
reset_control_assert(pservice->rst_a);
@@ -826,6 +834,8 @@ static void vpu_reset(struct vpu_subdev_data *data)
reset_control_deassert(pservice->rst_a);
if (pservice->rst_v)
reset_control_deassert(pservice->rst_v);
if (rockchip_pmu_ops.set_idle_request)
rockchip_pmu_ops.set_idle_request(type, false);
}
#endif