/* Send a 12-byte CE message and DMA data to the primary partition VSP object  */
static int dma_and_signal_ce_msg(char *ce_msg, struct ce_msg_comp_data *completion, void *dma_data, unsigned dma_data_length, unsigned remote_address)
/* Send a 12-byte CE message and DMA data to the primary partition VSP object  */
static int dma_and_signal_ce_msg(char *ce_msg, struct ce_msg_comp_data *completion, void *dma_data, unsigned dma_data_length, unsigned remote_address)
{
	struct pending_event *ev = new_pending_event();
	if (ev == NULL)
		return -ENOMEM;
	ev->event.hp_lp_event.xSubtype = 0;
	ev->event.hp_lp_event.x.xSubtypeData =
		subtype_data('M', 'F', 'C', 'E');
	memcpy(ev->event.data.ce_msg.ce_msg, ce_msg, 12);
	ev->event.data.ce_msg.completion = completion;
	memcpy(ev->dma_data, dma_data, dma_data_length);
	ev->dma_data_length = dma_data_length;
	ev->remote_address = remote_address;
	return signal_event(ev);
}