Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit eee3003a authored by Praneeth Paladugu's avatar Praneeth Paladugu
Browse files

msm: vidc: Allow venus to power collapse in batch mode



In batch mode Venus will be IDLE after sending EBD's and FBD's
to host. Power collapsing Venus at this time can save power.

CRs-Fixed: 1049499
Change-Id: I795d14fd4bc3b5f31897a70009546238117b0825
Signed-off-by: default avatarPraneeth Paladugu <ppaladug@codeaurora.org>
parent 059df41e
Loading
Loading
Loading
Loading
+16 −0
Original line number Diff line number Diff line
@@ -1718,6 +1718,19 @@ static struct vb2_buffer *get_vb_from_device_addr(struct buf_queue *bufq,
	return vb;
}

static void msm_vidc_try_suspend(struct msm_vidc_inst *inst)
{
	bool batch_mode;

	batch_mode = msm_comm_g_ctrl_for_id(inst, V4L2_CID_VIDC_QBUF_MODE)
		== V4L2_VIDC_QBUF_BATCHED;
	if (batch_mode) {
		dprintk(VIDC_DBG,
			"Trying to suspend Venus after finishing Batch\n");
		msm_comm_suspend(inst->core->id);
	}
}

static void handle_ebd(enum hal_command_response cmd, void *data)
{
	struct msm_vidc_cb_data_done *response = data;
@@ -1789,6 +1802,8 @@ static void handle_ebd(enum hal_command_response cmd, void *data)
		msm_vidc_debugfs_update(inst, MSM_VIDC_DEBUGFS_EVENT_EBD);
	}

	msm_vidc_try_suspend(inst);

	put_inst(inst);
}

@@ -2088,6 +2103,7 @@ static void handle_fbd(enum hal_command_response cmd, void *data)
		msm_vidc_debugfs_update(inst, MSM_VIDC_DEBUGFS_EVENT_FBD);
	}

	msm_vidc_try_suspend(inst);
err_handle_fbd:
	put_inst(inst);
}
+2 −10
Original line number Diff line number Diff line
@@ -1297,17 +1297,9 @@ static int venus_hfi_suspend(void *dev)
		return -ENOTSUPP;
	}

	mutex_lock(&device->lock);
	dprintk(VIDC_DBG, "Suspending Venus\n");
	rc = flush_delayed_work(&venus_hfi_pm_work);

	if (device->power_enabled) {
		dprintk(VIDC_DBG, "Venus is busy\n");
		rc = -EBUSY;
	} else {
		dprintk(VIDC_DBG, "Venus is power suspended\n");
		rc = 0;
	}

	mutex_unlock(&device->lock);
	return rc;
}