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

Commit 6d9ab2ca authored by Gilad Broner's avatar Gilad Broner
Browse files

media: mpq: sdmx: use 64 bits for physical address



Trustzone now supports 64 bit physical addressing, and sdmx
application API has changed to reflect this.
Update the kernel side API to use 64 bit physical adressing.
Expected SDMX major version number updated to 8.

Change-Id: I553e66ae316892772e067eb749a67fbb0e7587f6
Signed-off-by: default avatarGilad Broner <gbroner@codeaurora.org>
parent eea23b7c
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -19,7 +19,7 @@
#include "mpq_dmx_plugin_common.h"
#include "mpq_sdmx.h"

#define SDMX_MAJOR_VERSION_MATCH	(7)
#define SDMX_MAJOR_VERSION_MATCH	(8)

/* Length of mandatory fields that must exist in header of video PES */
#define PES_MANDATORY_FIELDS_LEN			9
+12 −36
Original line number Diff line number Diff line
@@ -46,27 +46,11 @@ enum sdmx_cmd_id {

#pragma pack(push, sdmx, 1)

struct __sdmx_buff_descr {
	/* 32bit Physical address where buffer starts */
	u32 base_addr;

	/* Size of buffer */
	u32 size;
};

struct __sdmx_data_buff_descr {
	/* 32bit Physical chunks of the buffer */
	struct __sdmx_buff_descr buff_chunks[SDMX_MAX_PHYSICAL_CHUNKS];

	/* Length of buffer */
	u32 length;
};

struct sdmx_proc_req {
	enum sdmx_cmd_id cmd_id;
	u32 session_handle;
	u8 flags;
	struct __sdmx_buff_descr in_buf_descr;
	struct sdmx_buff_descr in_buf_descr;
	u32 inp_fill_cnt;
	u32 in_rd_offset;
	u32 num_filters;
@@ -129,12 +113,12 @@ struct sdmx_add_filt_req {
	u32 session_handle;
	u32 pid;
	enum sdmx_filter filter_type;
	struct __sdmx_buff_descr meta_data_buf;
	struct sdmx_buff_descr meta_data_buf;
	enum sdmx_buf_mode buffer_mode;
	enum sdmx_raw_out_format ts_out_format;
	u32 flags;
	u32 num_data_bufs;
	struct __sdmx_data_buff_descr data_bufs[];
	struct sdmx_data_buff_descr data_bufs[];
};

struct sdmx_add_filt_rsp {
@@ -517,7 +501,7 @@ int sdmx_add_filter(int session_handle,
	enum sdmx_raw_out_format ts_out_format,
	u32 flags)
{
	int res, cmd_len, rsp_len, i, j;
	int res, cmd_len, rsp_len;
	struct sdmx_add_filt_req *cmd;
	struct sdmx_add_filt_rsp *rsp;
	enum sdmx_status ret;
@@ -527,7 +511,7 @@ int sdmx_add_filter(int session_handle,
		return SDMX_STATUS_INVALID_INPUT_PARAMS;

	cmd_len = sizeof(struct sdmx_add_filt_req)
		+ num_data_bufs * sizeof(struct __sdmx_data_buff_descr);
		+ num_data_bufs * sizeof(struct sdmx_data_buff_descr);
	rsp_len = sizeof(struct sdmx_add_filt_rsp);

	/* Will be later overridden by SDMX response */
@@ -549,24 +533,16 @@ int sdmx_add_filter(int session_handle,
	cmd->filter_type = filterype;
	cmd->ts_out_format = ts_out_format;
	cmd->flags = flags;
	if (meta_data_buf != NULL) {
		cmd->meta_data_buf.base_addr = (u32)meta_data_buf->base_addr;
		cmd->meta_data_buf.size = meta_data_buf->size;
	} else {
	if (meta_data_buf != NULL)
		memcpy(&(cmd->meta_data_buf), meta_data_buf,
				sizeof(struct sdmx_buff_descr));
	else
		memset(&(cmd->meta_data_buf), 0, sizeof(cmd->meta_data_buf));
	}

	cmd->buffer_mode = d_buf_mode;
	cmd->num_data_bufs = num_data_bufs;
	for (i = 0; i < num_data_bufs; i++) {
		for (j = 0; j < SDMX_MAX_PHYSICAL_CHUNKS; j++) {
			cmd->data_bufs[i].buff_chunks[j].base_addr =
				(u32)data_bufs[i].buff_chunks[j].base_addr;
			cmd->data_bufs[i].buff_chunks[j].size =
				data_bufs[i].buff_chunks[j].size;
		}
		cmd->data_bufs[i].length = data_bufs[i].length;
	}
	memcpy(cmd->data_bufs, data_bufs,
			num_data_bufs * sizeof(struct sdmx_data_buff_descr));

	/* Issue QSEECom command */
	res = qseecom_send_command(sdmx_qseecom_handles[session_handle],
@@ -857,7 +833,7 @@ int sdmx_process(int session_handle, u8 flags,
	cmd->cmd_id = SDMX_PROCESS_CMD;
	cmd->session_handle = session_handle;
	cmd->flags = flags;
	cmd->in_buf_descr.base_addr = (u32)input_buf_desc->base_addr;
	cmd->in_buf_descr.base_addr = input_buf_desc->base_addr;
	cmd->in_buf_descr.size = input_buf_desc->size;
	cmd->inp_fill_cnt = *input_fill_count;
	cmd->in_rd_offset = *input_read_offset;