static void hfi_process_event_notify(
		msm_vidc_callback callback, u32 device_id,
		struct hfi_msg_event_notify_packet *pkt)
{
	dprintk(VIDC_DBG, "RECVD:EVENT_NOTIFY");

	if (!callback || !pkt ||
		pkt->size < sizeof(struct hfi_msg_event_notify_packet)) {
		dprintk(VIDC_ERR, "Invalid Params");
		return;
	}

	switch (pkt->event_id) {
	case HFI_EVENT_SYS_ERROR:
		dprintk(VIDC_ERR, "HFI_EVENT_SYS_ERROR: %d, 0x%x\n",
			pkt->event_data1, pkt->event_data2);
		hfi_process_sys_error(callback, device_id);
		break;
	case HFI_EVENT_SESSION_ERROR:
		dprintk(VIDC_ERR, "HFI_EVENT_SESSION_ERROR");
		hfi_process_session_error(callback, device_id, pkt);
		break;
	case HFI_EVENT_SESSION_SEQUENCE_CHANGED:
		dprintk(VIDC_INFO, "HFI_EVENT_SESSION_SEQUENCE_CHANGED");
		hfi_process_sess_evt_seq_changed(callback, device_id, pkt);
		break;
	case HFI_EVENT_SESSION_PROPERTY_CHANGED:
		dprintk(VIDC_INFO, "HFI_EVENT_SESSION_PROPERTY_CHANGED");
		break;
	default:
		dprintk(VIDC_WARN, "hal_process_event_notify:unkown_event_id");
		break;
	}
}
static void hfi_process_event_notify(msm_vidc_callback callback, u32 device_id,
		struct hal_session *session,
		struct hfi_msg_event_notify_packet *pkt)
{
	dprintk(VIDC_DBG, "Received: EVENT_NOTIFY\n");

	if (!callback || !pkt ||
		pkt->size < sizeof(struct hfi_msg_event_notify_packet)) {
		dprintk(VIDC_ERR, "Invalid Params\n");
		return;
	}

	switch (pkt->event_id) {
	case HFI_EVENT_SYS_ERROR:
		dprintk(VIDC_ERR, "HFI_EVENT_SYS_ERROR: %d, 0x%x\n",
			pkt->event_data1, pkt->event_data2);
		hfi_process_sys_error(callback, device_id);
		break;
	case HFI_EVENT_SESSION_PROPERTY_CHANGED:
		dprintk(VIDC_INFO, "HFI_EVENT_SESSION_PROPERTY_CHANGED[%p]\n",
			session);
		break;
	}

	if (!session) {
		dprintk(VIDC_ERR, "%s Got invalid session id\n", __func__);
		return;
	}

	switch (pkt->event_id) {
	case HFI_EVENT_SESSION_ERROR:
		dprintk(VIDC_INFO, "HFI_EVENT_SESSION_ERROR[%p]\n", session);
		hfi_process_session_error(callback, device_id, session, pkt);
		break;
	case HFI_EVENT_SESSION_SEQUENCE_CHANGED:
		dprintk(VIDC_INFO, "HFI_EVENT_SESSION_SEQUENCE_CHANGED[%p]\n",
			session);
		hfi_process_sess_evt_seq_changed(callback, device_id,
				session, pkt);
		break;
	case HFI_EVENT_RELEASE_BUFFER_REFERENCE:
		dprintk(VIDC_INFO, "HFI_EVENT_RELEASE_BUFFER_REFERENCE[%p]\n",
			session);
		hfi_process_evt_release_buffer_ref(callback, device_id,
				session, pkt);
		break;
	default:
		dprintk(VIDC_WARN,
				"hal_process_event_notify: unknown_event_id[%p]\n",
				session);
		break;
	}
}
static void hfi_process_event_notify(
		msm_vidc_callback callback, u32 device_id,
		struct hfi_msg_event_notify_packet *pkt,
		struct list_head *sessions, struct mutex *session_lock)
{
	struct hal_session *sess = NULL;
	dprintk(VIDC_DBG, "RECVD:EVENT_NOTIFY");

	if (!callback || !pkt ||
		pkt->size < sizeof(struct hfi_msg_event_notify_packet)) {
		dprintk(VIDC_ERR, "Invalid Params");
		return;
	}
	sess = (struct hal_session *)pkt->session_id;

	switch (pkt->event_id) {
	case HFI_EVENT_SYS_ERROR:
		dprintk(VIDC_ERR, "HFI_EVENT_SYS_ERROR: %d, 0x%x\n",
			pkt->event_data1, pkt->event_data2);
		hfi_process_sys_error(callback, device_id);
		break;
	case HFI_EVENT_SESSION_ERROR:
		dprintk(VIDC_INFO,
			"HFI_EVENT_SESSION_ERROR[%u]\n", pkt->session_id);
		if (!validate_session_pkt(sessions, sess, session_lock))
			hfi_process_session_error(callback, device_id, pkt);
		break;
	case HFI_EVENT_SESSION_SEQUENCE_CHANGED:
		dprintk(VIDC_INFO, "HFI_EVENT_SESSION_SEQUENCE_CHANGED[%u]\n",
			pkt->session_id);
		if (!validate_session_pkt(sessions, sess, session_lock))
			hfi_process_sess_evt_seq_changed(callback,
				device_id, pkt);
		break;
	case HFI_EVENT_SESSION_PROPERTY_CHANGED:
		dprintk(VIDC_INFO, "HFI_EVENT_SESSION_PROPERTY_CHANGED[%u]\n",
			pkt->session_id);
		break;
	case HFI_EVENT_RELEASE_BUFFER_REFERENCE:
		dprintk(VIDC_INFO, "HFI_EVENT_RELEASE_BUFFER_REFERENCE[%u]\n",
			pkt->session_id);
		if (!validate_session_pkt(sessions, sess, session_lock))
			hfi_process_evt_release_buffer_ref(callback,
				device_id, pkt);
		break;
	default:
		dprintk(VIDC_WARN,
			"hal_process_event_notify: unknown_event_id[%u]\n",
			pkt->session_id);
		break;
	}
}