Loading drivers/media/platform/msm/vidc/hfi_packetization.c +75 −67 Original line number Diff line number Diff line Loading @@ -10,11 +10,12 @@ * GNU General Public License for more details. * */ #include "hfi_packetization.h" #include "msm_vidc_debug.h" #include <linux/errno.h> #include <linux/log2.h> #include <linux/hash.h> #include <soc/qcom/ocmem.h> #include "hfi_packetization.h" #include "msm_vidc_debug.h" /* Set up look-up tables to convert HAL_* to HFI_*. * Loading Loading @@ -283,7 +284,7 @@ int create_pkt_set_cmd_sys_resource( pkt->resource_type = HFI_RESOURCE_OCMEM; pkt->size += sizeof(struct hfi_resource_ocmem) - sizeof(u32); hfioc_mem->size = (u32)ocmem->len; hfioc_mem->mem = (u8 *) ocmem->addr; hfioc_mem->mem = (u32)ocmem->addr; break; } default: Loading Loading @@ -325,7 +326,8 @@ int create_pkt_cmd_sys_ping(struct hfi_cmd_sys_ping_packet *pkt) inline int create_pkt_cmd_sys_session_init( struct hfi_cmd_sys_session_init_packet *pkt, u32 session_id, u32 session_domain, u32 session_codec) struct hal_session *session, u32 session_domain, u32 session_codec) { int rc = 0; if (!pkt) Loading @@ -333,7 +335,7 @@ inline int create_pkt_cmd_sys_session_init( pkt->size = sizeof(struct hfi_cmd_sys_session_init_packet); pkt->packet_type = HFI_CMD_SYS_SESSION_INIT; pkt->session_id = session_id; pkt->session_id = hash32_ptr(session); pkt->session_domain = session_domain; pkt->session_codec = get_hfi_codec(session_codec); if (!pkt->session_codec) Loading @@ -343,7 +345,7 @@ inline int create_pkt_cmd_sys_session_init( } int create_pkt_cmd_session_cmd(struct vidc_hal_session_cmd_pkt *pkt, int pkt_type, u32 session_id) int pkt_type, struct hal_session *session) { int rc = 0; if (!pkt) Loading @@ -351,7 +353,7 @@ int create_pkt_cmd_session_cmd(struct vidc_hal_session_cmd_pkt *pkt, pkt->size = sizeof(struct vidc_hal_session_cmd_pkt); pkt->packet_type = pkt_type; pkt->session_id = session_id; pkt->session_id = hash32_ptr(session); return rc; } Loading Loading @@ -554,16 +556,16 @@ static u32 get_hfi_ltr_mode(enum ltr_mode ltr_mode_type) int create_pkt_cmd_session_set_buffers( struct hfi_cmd_session_set_buffers_packet *pkt, u32 session_id, struct hal_session *session, struct vidc_buffer_addr_info *buffer_info) { int rc = 0; int i = 0; if (!pkt || !session_id) if (!pkt || !session) return -EINVAL; pkt->packet_type = HFI_CMD_SESSION_SET_BUFFERS; pkt->session_id = session_id; pkt->session_id = hash32_ptr(session); pkt->buffer_size = buffer_info->buffer_size; pkt->min_buffer_size = buffer_info->buffer_size; pkt->num_buffers = buffer_info->num_buffers; Loading @@ -577,15 +579,19 @@ int create_pkt_cmd_session_set_buffers( sizeof(struct hfi_buffer_info)); buff = (struct hfi_buffer_info *) pkt->rg_buffer_info; for (i = 0; i < pkt->num_buffers; i++) { buff->buffer_addr = buffer_info->align_device_addr; buff->extra_data_addr = buffer_info->extradata_addr; buff->buffer_addr = (u32)buffer_info->align_device_addr; buff->extra_data_addr = (u32)buffer_info->extradata_addr; } } else { pkt->extra_data_size = 0; pkt->size = sizeof(struct hfi_cmd_session_set_buffers_packet) + ((buffer_info->num_buffers - 1) * sizeof(u32)); for (i = 0; i < pkt->num_buffers; i++) pkt->rg_buffer_info[i] = buffer_info->align_device_addr; for (i = 0; i < pkt->num_buffers; i++) { pkt->rg_buffer_info[i] = (u32)buffer_info->align_device_addr; } } pkt->buffer_type = get_hfi_buffer(buffer_info->buffer_type); Loading @@ -597,15 +603,16 @@ int create_pkt_cmd_session_set_buffers( int create_pkt_cmd_session_release_buffers( struct hfi_cmd_session_release_buffer_packet *pkt, u32 session_id, struct vidc_buffer_addr_info *buffer_info) struct hal_session *session, struct vidc_buffer_addr_info *buffer_info) { int rc = 0; int i = 0; if (!pkt || !session_id) if (!pkt || !session) return -EINVAL; pkt->packet_type = HFI_CMD_SESSION_RELEASE_BUFFERS; pkt->session_id = session_id; pkt->session_id = hash32_ptr(session); pkt->buffer_size = buffer_info->buffer_size; pkt->num_buffers = buffer_info->num_buffers; Loading @@ -614,15 +621,19 @@ int create_pkt_cmd_session_release_buffers( struct hfi_buffer_info *buff; buff = (struct hfi_buffer_info *) pkt->rg_buffer_info; for (i = 0; i < pkt->num_buffers; i++) { buff->buffer_addr = buffer_info->align_device_addr; buff->extra_data_addr = buffer_info->extradata_addr; buff->buffer_addr = (u32)buffer_info->align_device_addr; buff->extra_data_addr = (u32)buffer_info->extradata_addr; } pkt->size = sizeof(struct hfi_cmd_session_set_buffers_packet) - sizeof(u32) + (buffer_info->num_buffers * sizeof(struct hfi_buffer_info)); } else { for (i = 0; i < pkt->num_buffers; i++) pkt->rg_buffer_info[i] = buffer_info->align_device_addr; for (i = 0; i < pkt->num_buffers; i++) { pkt->rg_buffer_info[i] = (u32)buffer_info->align_device_addr; } pkt->extra_data_size = 0; pkt->size = sizeof(struct hfi_cmd_session_set_buffers_packet) + ((buffer_info->num_buffers - 1) * sizeof(u32)); Loading @@ -636,16 +647,16 @@ int create_pkt_cmd_session_release_buffers( int create_pkt_cmd_session_etb_decoder( struct hfi_cmd_session_empty_buffer_compressed_packet *pkt, u32 session_id, struct vidc_frame_data *input_frame) struct hal_session *session, struct vidc_frame_data *input_frame) { int rc = 0; if (!pkt || !session_id) if (!pkt || !session) return -EINVAL; pkt->size = sizeof(struct hfi_cmd_session_empty_buffer_compressed_packet); pkt->packet_type = HFI_CMD_SESSION_EMPTY_BUFFER; pkt->session_id = session_id; pkt->session_id = hash32_ptr(session); pkt->time_stamp_hi = (int) (((u64)input_frame->timestamp) >> 32); pkt->time_stamp_lo = (int) input_frame->timestamp; pkt->flags = input_frame->flags; Loading @@ -655,25 +666,24 @@ int create_pkt_cmd_session_etb_decoder( pkt->alloc_len = input_frame->alloc_len; pkt->filled_len = input_frame->filled_len; pkt->input_tag = input_frame->clnt_data; pkt->packet_buffer = (u8 *) input_frame->device_addr; pkt->packet_buffer = (u32)input_frame->device_addr; if (!pkt->packet_buffer) return -EINVAL; rc = -EINVAL; return rc; } int create_pkt_cmd_session_etb_encoder( struct hfi_cmd_session_empty_buffer_uncompressed_plane0_packet *pkt, u32 session_id, struct vidc_frame_data *input_frame) struct hal_session *session, struct vidc_frame_data *input_frame) { int rc = 0; if (!pkt || !session_id) if (!pkt || !session) return -EINVAL; pkt->size = sizeof(struct hfi_cmd_session_empty_buffer_uncompressed_plane0_packet); pkt->packet_type = HFI_CMD_SESSION_EMPTY_BUFFER; pkt->session_id = session_id; pkt->session_id = hash32_ptr(session); pkt->view_id = 0; pkt->time_stamp_hi = (u32)(((u64)input_frame->timestamp) >> 32); pkt->time_stamp_lo = (u32)input_frame->timestamp; Loading @@ -684,24 +694,24 @@ int create_pkt_cmd_session_etb_encoder( pkt->alloc_len = input_frame->alloc_len; pkt->filled_len = input_frame->filled_len; pkt->input_tag = input_frame->clnt_data; pkt->packet_buffer = (u8 *) input_frame->device_addr; pkt->extra_data_buffer = (u8 *) input_frame->extradata_addr; pkt->packet_buffer = (u32)input_frame->device_addr; pkt->extra_data_buffer = (u32)input_frame->extradata_addr; if (!pkt->packet_buffer) return -EINVAL; rc = -EINVAL; return rc; } int create_pkt_cmd_session_ftb(struct hfi_cmd_session_fill_buffer_packet *pkt, u32 session_id, struct vidc_frame_data *output_frame) struct hal_session *session, struct vidc_frame_data *output_frame) { int rc = 0; if (!pkt || !session_id || !output_frame) if (!pkt || !session || !output_frame) return -EINVAL; pkt->size = sizeof(struct hfi_cmd_session_fill_buffer_packet); pkt->packet_type = HFI_CMD_SESSION_FILL_BUFFER; pkt->session_id = session_id; pkt->session_id = hash32_ptr(session); if (output_frame->buffer_type == HAL_BUFFER_OUTPUT) pkt->stream_id = 0; Loading @@ -711,9 +721,8 @@ int create_pkt_cmd_session_ftb(struct hfi_cmd_session_fill_buffer_packet *pkt, if (!output_frame->device_addr) return -EINVAL; pkt->packet_buffer = (u8 *) output_frame->device_addr; pkt->extra_data_buffer = (u8 *) output_frame->extradata_addr; pkt->packet_buffer = (u32)output_frame->device_addr; pkt->extra_data_buffer = (u32)output_frame->extradata_addr; pkt->alloc_len = output_frame->alloc_len; pkt->filled_len = output_frame->filled_len; pkt->offset = output_frame->offset; Loading @@ -726,55 +735,53 @@ int create_pkt_cmd_session_ftb(struct hfi_cmd_session_fill_buffer_packet *pkt, int create_pkt_cmd_session_parse_seq_header( struct hfi_cmd_session_parse_sequence_header_packet *pkt, u32 session_id, struct vidc_seq_hdr *seq_hdr) struct hal_session *session, struct vidc_seq_hdr *seq_hdr) { int rc = 0; if (!pkt || !session_id || !seq_hdr) if (!pkt || !session || !seq_hdr) return -EINVAL; pkt->size = sizeof(struct hfi_cmd_session_parse_sequence_header_packet); pkt->packet_type = HFI_CMD_SESSION_PARSE_SEQUENCE_HEADER; pkt->session_id = session_id; pkt->session_id = hash32_ptr(session); pkt->header_len = seq_hdr->seq_hdr_len; if (!seq_hdr->seq_hdr) return -EINVAL; pkt->packet_buffer = seq_hdr->seq_hdr; pkt->packet_buffer = (u32)seq_hdr->seq_hdr; return rc; } int create_pkt_cmd_session_get_seq_hdr( struct hfi_cmd_session_get_sequence_header_packet *pkt, u32 session_id, struct vidc_seq_hdr *seq_hdr) struct hal_session *session, struct vidc_seq_hdr *seq_hdr) { int rc = 0; if (!pkt || !session_id || !seq_hdr) if (!pkt || !session || !seq_hdr) return -EINVAL; pkt->size = sizeof(struct hfi_cmd_session_get_sequence_header_packet); pkt->packet_type = HFI_CMD_SESSION_GET_SEQUENCE_HEADER; pkt->session_id = session_id; pkt->session_id = hash32_ptr(session); pkt->buffer_len = seq_hdr->seq_hdr_len; if (!seq_hdr->seq_hdr) return -EINVAL; pkt->packet_buffer = seq_hdr->seq_hdr; pkt->packet_buffer = (u32)seq_hdr->seq_hdr; return rc; } int create_pkt_cmd_session_get_buf_req( struct hfi_cmd_session_get_property_packet *pkt, u32 session_id) struct hal_session *session) { int rc = 0; if (!pkt || !session_id) if (!pkt || !session) return -EINVAL; pkt->size = sizeof(struct hfi_cmd_session_get_property_packet); pkt->packet_type = HFI_CMD_SESSION_GET_PROPERTY; pkt->session_id = session_id; pkt->session_id = hash32_ptr(session); pkt->num_properties = 1; pkt->rg_property_data[0] = HFI_PROPERTY_CONFIG_BUFFER_REQUIREMENTS; Loading @@ -782,15 +789,15 @@ int create_pkt_cmd_session_get_buf_req( } int create_pkt_cmd_session_flush(struct hfi_cmd_session_flush_packet *pkt, u32 session_id, enum hal_flush flush_mode) struct hal_session *session, enum hal_flush flush_mode) { int rc = 0; if (!pkt || !session_id) if (!pkt || !session) return -EINVAL; pkt->size = sizeof(struct hfi_cmd_session_flush_packet); pkt->packet_type = HFI_CMD_SESSION_FLUSH; pkt->session_id = session_id; pkt->session_id = hash32_ptr(session); switch (flush_mode) { case HAL_FLUSH_INPUT: pkt->flush_type = HFI_FLUSH_INPUT; Loading @@ -813,16 +820,16 @@ int create_pkt_cmd_session_flush(struct hfi_cmd_session_flush_packet *pkt, int create_pkt_cmd_session_get_property( struct hfi_cmd_session_get_property_packet *pkt, u32 session_id, enum hal_property ptype) struct hal_session *session, enum hal_property ptype) { int rc = 0; if (!pkt || !session_id) { if (!pkt || !session) { dprintk(VIDC_ERR, "%s Invalid parameters\n", __func__); return -EINVAL; } pkt->size = sizeof(struct hfi_cmd_session_get_property_packet); pkt->packet_type = HFI_CMD_SESSION_GET_PROPERTY; pkt->session_id = session_id; pkt->session_id = hash32_ptr(session); pkt->num_properties = 1; switch (ptype) { case HAL_PARAM_PROFILE_LEVEL_CURRENT: Loading @@ -840,15 +847,16 @@ int create_pkt_cmd_session_get_property( int create_pkt_cmd_session_set_property( struct hfi_cmd_session_set_property_packet *pkt, u32 session_id, enum hal_property ptype, void *pdata) struct hal_session *session, enum hal_property ptype, void *pdata) { int rc = 0; if (!pkt || !session_id) if (!pkt || !session) return -EINVAL; pkt->size = sizeof(struct hfi_cmd_session_set_property_packet); pkt->packet_type = HFI_CMD_SESSION_SET_PROPERTY; pkt->session_id = session_id; pkt->session_id = hash32_ptr(session); pkt->num_properties = 1; switch (ptype) { Loading Loading @@ -1160,7 +1168,7 @@ int create_pkt_cmd_session_set_property( HFI_PROPERTY_PARAM_PROFILE_LEVEL_CURRENT; hfi = (struct hfi_profile_level *) &pkt->rg_property_data[1]; hfi->level = (u32)prop->level; hfi->level = prop->level; hfi->profile = hal_to_hfi_type(HAL_PARAM_PROFILE_LEVEL_CURRENT, prop->profile); if (hfi->profile <= 0) { Loading Loading @@ -1224,8 +1232,8 @@ int create_pkt_cmd_session_set_property( break; default: dprintk(VIDC_ERR, "Invalid Rate control setting: 0x%x\n", (int)pdata); "Invalid Rate control setting: 0x%p\n", pdata); break; } pkt->size += sizeof(u32) * 2; Loading @@ -1251,7 +1259,7 @@ int create_pkt_cmd_session_set_property( HFI_PROPERTY_PARAM_VENC_MPEG4_HEADER_EXTENSION; hfi = (struct hfi_mpeg4_header_extension *) &pkt->rg_property_data[1]; hfi->header_extension = (u32) pdata; hfi->header_extension = (u32)(unsigned long) pdata; pkt->size += sizeof(u32) * 2; break; } Loading drivers/media/platform/msm/vidc/hfi_packetization.h +23 −17 Original line number Diff line number Diff line Loading @@ -50,53 +50,59 @@ int create_pkt_cmd_sys_ping(struct hfi_cmd_sys_ping_packet *pkt); int create_pkt_cmd_sys_session_init( struct hfi_cmd_sys_session_init_packet *pkt, u32 session_id, u32 session_domain, u32 session_codec); struct hal_session *session, u32 session_domain, u32 session_codec); int create_pkt_cmd_session_cmd(struct vidc_hal_session_cmd_pkt *pkt, int pkt_type, u32 session_id); int pkt_type, struct hal_session *session); int create_pkt_cmd_session_set_buffers( struct hfi_cmd_session_set_buffers_packet *pkt, u32 session_id, struct hal_session *session, struct vidc_buffer_addr_info *buffer_info); int create_pkt_cmd_session_release_buffers( struct hfi_cmd_session_release_buffer_packet *pkt, u32 session_id, struct vidc_buffer_addr_info *buffer_info); struct hal_session *session, struct vidc_buffer_addr_info *buffer_info); int create_pkt_cmd_session_etb_decoder( struct hfi_cmd_session_empty_buffer_compressed_packet *pkt, u32 session_id, struct vidc_frame_data *input_frame); struct hal_session *session, struct vidc_frame_data *input_frame); int create_pkt_cmd_session_etb_encoder( struct hfi_cmd_session_empty_buffer_uncompressed_plane0_packet *pkt, u32 session_id, struct vidc_frame_data *input_frame); struct hfi_cmd_session_empty_buffer_uncompressed_plane0_packet *pkt, struct hal_session *session, struct vidc_frame_data *input_frame); int create_pkt_cmd_session_ftb(struct hfi_cmd_session_fill_buffer_packet *pkt, u32 session_id, struct vidc_frame_data *output_frame); struct hal_session *session, struct vidc_frame_data *output_frame); int create_pkt_cmd_session_parse_seq_header( struct hfi_cmd_session_parse_sequence_header_packet *pkt, u32 session_id, struct vidc_seq_hdr *seq_hdr); struct hal_session *session, struct vidc_seq_hdr *seq_hdr); int create_pkt_cmd_session_get_seq_hdr( struct hfi_cmd_session_get_sequence_header_packet *pkt, u32 session_id, struct vidc_seq_hdr *seq_hdr); struct hal_session *session, struct vidc_seq_hdr *seq_hdr); int create_pkt_cmd_session_get_buf_req( struct hfi_cmd_session_get_property_packet *pkt, u32 session_id); struct hal_session *session); int create_pkt_cmd_session_flush(struct hfi_cmd_session_flush_packet *pkt, u32 session_id, enum hal_flush flush_mode); struct hal_session *session, enum hal_flush flush_mode); int create_pkt_cmd_session_set_property( struct hfi_cmd_session_set_property_packet *pkt, u32 session_id, enum hal_property ptype, void *pdata); struct hal_session *session, enum hal_property ptype, void *pdata); int create_pkt_cmd_session_get_property( struct hfi_cmd_session_get_property_packet *pkt, u32 session_id, enum hal_property ptype); struct hal_session *session, enum hal_property ptype); int create_pkt_ssr_cmd(enum hal_ssr_trigger_type type, struct hfi_cmd_sys_test_ssr_packet *pkt); Loading Loading
drivers/media/platform/msm/vidc/hfi_packetization.c +75 −67 Original line number Diff line number Diff line Loading @@ -10,11 +10,12 @@ * GNU General Public License for more details. * */ #include "hfi_packetization.h" #include "msm_vidc_debug.h" #include <linux/errno.h> #include <linux/log2.h> #include <linux/hash.h> #include <soc/qcom/ocmem.h> #include "hfi_packetization.h" #include "msm_vidc_debug.h" /* Set up look-up tables to convert HAL_* to HFI_*. * Loading Loading @@ -283,7 +284,7 @@ int create_pkt_set_cmd_sys_resource( pkt->resource_type = HFI_RESOURCE_OCMEM; pkt->size += sizeof(struct hfi_resource_ocmem) - sizeof(u32); hfioc_mem->size = (u32)ocmem->len; hfioc_mem->mem = (u8 *) ocmem->addr; hfioc_mem->mem = (u32)ocmem->addr; break; } default: Loading Loading @@ -325,7 +326,8 @@ int create_pkt_cmd_sys_ping(struct hfi_cmd_sys_ping_packet *pkt) inline int create_pkt_cmd_sys_session_init( struct hfi_cmd_sys_session_init_packet *pkt, u32 session_id, u32 session_domain, u32 session_codec) struct hal_session *session, u32 session_domain, u32 session_codec) { int rc = 0; if (!pkt) Loading @@ -333,7 +335,7 @@ inline int create_pkt_cmd_sys_session_init( pkt->size = sizeof(struct hfi_cmd_sys_session_init_packet); pkt->packet_type = HFI_CMD_SYS_SESSION_INIT; pkt->session_id = session_id; pkt->session_id = hash32_ptr(session); pkt->session_domain = session_domain; pkt->session_codec = get_hfi_codec(session_codec); if (!pkt->session_codec) Loading @@ -343,7 +345,7 @@ inline int create_pkt_cmd_sys_session_init( } int create_pkt_cmd_session_cmd(struct vidc_hal_session_cmd_pkt *pkt, int pkt_type, u32 session_id) int pkt_type, struct hal_session *session) { int rc = 0; if (!pkt) Loading @@ -351,7 +353,7 @@ int create_pkt_cmd_session_cmd(struct vidc_hal_session_cmd_pkt *pkt, pkt->size = sizeof(struct vidc_hal_session_cmd_pkt); pkt->packet_type = pkt_type; pkt->session_id = session_id; pkt->session_id = hash32_ptr(session); return rc; } Loading Loading @@ -554,16 +556,16 @@ static u32 get_hfi_ltr_mode(enum ltr_mode ltr_mode_type) int create_pkt_cmd_session_set_buffers( struct hfi_cmd_session_set_buffers_packet *pkt, u32 session_id, struct hal_session *session, struct vidc_buffer_addr_info *buffer_info) { int rc = 0; int i = 0; if (!pkt || !session_id) if (!pkt || !session) return -EINVAL; pkt->packet_type = HFI_CMD_SESSION_SET_BUFFERS; pkt->session_id = session_id; pkt->session_id = hash32_ptr(session); pkt->buffer_size = buffer_info->buffer_size; pkt->min_buffer_size = buffer_info->buffer_size; pkt->num_buffers = buffer_info->num_buffers; Loading @@ -577,15 +579,19 @@ int create_pkt_cmd_session_set_buffers( sizeof(struct hfi_buffer_info)); buff = (struct hfi_buffer_info *) pkt->rg_buffer_info; for (i = 0; i < pkt->num_buffers; i++) { buff->buffer_addr = buffer_info->align_device_addr; buff->extra_data_addr = buffer_info->extradata_addr; buff->buffer_addr = (u32)buffer_info->align_device_addr; buff->extra_data_addr = (u32)buffer_info->extradata_addr; } } else { pkt->extra_data_size = 0; pkt->size = sizeof(struct hfi_cmd_session_set_buffers_packet) + ((buffer_info->num_buffers - 1) * sizeof(u32)); for (i = 0; i < pkt->num_buffers; i++) pkt->rg_buffer_info[i] = buffer_info->align_device_addr; for (i = 0; i < pkt->num_buffers; i++) { pkt->rg_buffer_info[i] = (u32)buffer_info->align_device_addr; } } pkt->buffer_type = get_hfi_buffer(buffer_info->buffer_type); Loading @@ -597,15 +603,16 @@ int create_pkt_cmd_session_set_buffers( int create_pkt_cmd_session_release_buffers( struct hfi_cmd_session_release_buffer_packet *pkt, u32 session_id, struct vidc_buffer_addr_info *buffer_info) struct hal_session *session, struct vidc_buffer_addr_info *buffer_info) { int rc = 0; int i = 0; if (!pkt || !session_id) if (!pkt || !session) return -EINVAL; pkt->packet_type = HFI_CMD_SESSION_RELEASE_BUFFERS; pkt->session_id = session_id; pkt->session_id = hash32_ptr(session); pkt->buffer_size = buffer_info->buffer_size; pkt->num_buffers = buffer_info->num_buffers; Loading @@ -614,15 +621,19 @@ int create_pkt_cmd_session_release_buffers( struct hfi_buffer_info *buff; buff = (struct hfi_buffer_info *) pkt->rg_buffer_info; for (i = 0; i < pkt->num_buffers; i++) { buff->buffer_addr = buffer_info->align_device_addr; buff->extra_data_addr = buffer_info->extradata_addr; buff->buffer_addr = (u32)buffer_info->align_device_addr; buff->extra_data_addr = (u32)buffer_info->extradata_addr; } pkt->size = sizeof(struct hfi_cmd_session_set_buffers_packet) - sizeof(u32) + (buffer_info->num_buffers * sizeof(struct hfi_buffer_info)); } else { for (i = 0; i < pkt->num_buffers; i++) pkt->rg_buffer_info[i] = buffer_info->align_device_addr; for (i = 0; i < pkt->num_buffers; i++) { pkt->rg_buffer_info[i] = (u32)buffer_info->align_device_addr; } pkt->extra_data_size = 0; pkt->size = sizeof(struct hfi_cmd_session_set_buffers_packet) + ((buffer_info->num_buffers - 1) * sizeof(u32)); Loading @@ -636,16 +647,16 @@ int create_pkt_cmd_session_release_buffers( int create_pkt_cmd_session_etb_decoder( struct hfi_cmd_session_empty_buffer_compressed_packet *pkt, u32 session_id, struct vidc_frame_data *input_frame) struct hal_session *session, struct vidc_frame_data *input_frame) { int rc = 0; if (!pkt || !session_id) if (!pkt || !session) return -EINVAL; pkt->size = sizeof(struct hfi_cmd_session_empty_buffer_compressed_packet); pkt->packet_type = HFI_CMD_SESSION_EMPTY_BUFFER; pkt->session_id = session_id; pkt->session_id = hash32_ptr(session); pkt->time_stamp_hi = (int) (((u64)input_frame->timestamp) >> 32); pkt->time_stamp_lo = (int) input_frame->timestamp; pkt->flags = input_frame->flags; Loading @@ -655,25 +666,24 @@ int create_pkt_cmd_session_etb_decoder( pkt->alloc_len = input_frame->alloc_len; pkt->filled_len = input_frame->filled_len; pkt->input_tag = input_frame->clnt_data; pkt->packet_buffer = (u8 *) input_frame->device_addr; pkt->packet_buffer = (u32)input_frame->device_addr; if (!pkt->packet_buffer) return -EINVAL; rc = -EINVAL; return rc; } int create_pkt_cmd_session_etb_encoder( struct hfi_cmd_session_empty_buffer_uncompressed_plane0_packet *pkt, u32 session_id, struct vidc_frame_data *input_frame) struct hal_session *session, struct vidc_frame_data *input_frame) { int rc = 0; if (!pkt || !session_id) if (!pkt || !session) return -EINVAL; pkt->size = sizeof(struct hfi_cmd_session_empty_buffer_uncompressed_plane0_packet); pkt->packet_type = HFI_CMD_SESSION_EMPTY_BUFFER; pkt->session_id = session_id; pkt->session_id = hash32_ptr(session); pkt->view_id = 0; pkt->time_stamp_hi = (u32)(((u64)input_frame->timestamp) >> 32); pkt->time_stamp_lo = (u32)input_frame->timestamp; Loading @@ -684,24 +694,24 @@ int create_pkt_cmd_session_etb_encoder( pkt->alloc_len = input_frame->alloc_len; pkt->filled_len = input_frame->filled_len; pkt->input_tag = input_frame->clnt_data; pkt->packet_buffer = (u8 *) input_frame->device_addr; pkt->extra_data_buffer = (u8 *) input_frame->extradata_addr; pkt->packet_buffer = (u32)input_frame->device_addr; pkt->extra_data_buffer = (u32)input_frame->extradata_addr; if (!pkt->packet_buffer) return -EINVAL; rc = -EINVAL; return rc; } int create_pkt_cmd_session_ftb(struct hfi_cmd_session_fill_buffer_packet *pkt, u32 session_id, struct vidc_frame_data *output_frame) struct hal_session *session, struct vidc_frame_data *output_frame) { int rc = 0; if (!pkt || !session_id || !output_frame) if (!pkt || !session || !output_frame) return -EINVAL; pkt->size = sizeof(struct hfi_cmd_session_fill_buffer_packet); pkt->packet_type = HFI_CMD_SESSION_FILL_BUFFER; pkt->session_id = session_id; pkt->session_id = hash32_ptr(session); if (output_frame->buffer_type == HAL_BUFFER_OUTPUT) pkt->stream_id = 0; Loading @@ -711,9 +721,8 @@ int create_pkt_cmd_session_ftb(struct hfi_cmd_session_fill_buffer_packet *pkt, if (!output_frame->device_addr) return -EINVAL; pkt->packet_buffer = (u8 *) output_frame->device_addr; pkt->extra_data_buffer = (u8 *) output_frame->extradata_addr; pkt->packet_buffer = (u32)output_frame->device_addr; pkt->extra_data_buffer = (u32)output_frame->extradata_addr; pkt->alloc_len = output_frame->alloc_len; pkt->filled_len = output_frame->filled_len; pkt->offset = output_frame->offset; Loading @@ -726,55 +735,53 @@ int create_pkt_cmd_session_ftb(struct hfi_cmd_session_fill_buffer_packet *pkt, int create_pkt_cmd_session_parse_seq_header( struct hfi_cmd_session_parse_sequence_header_packet *pkt, u32 session_id, struct vidc_seq_hdr *seq_hdr) struct hal_session *session, struct vidc_seq_hdr *seq_hdr) { int rc = 0; if (!pkt || !session_id || !seq_hdr) if (!pkt || !session || !seq_hdr) return -EINVAL; pkt->size = sizeof(struct hfi_cmd_session_parse_sequence_header_packet); pkt->packet_type = HFI_CMD_SESSION_PARSE_SEQUENCE_HEADER; pkt->session_id = session_id; pkt->session_id = hash32_ptr(session); pkt->header_len = seq_hdr->seq_hdr_len; if (!seq_hdr->seq_hdr) return -EINVAL; pkt->packet_buffer = seq_hdr->seq_hdr; pkt->packet_buffer = (u32)seq_hdr->seq_hdr; return rc; } int create_pkt_cmd_session_get_seq_hdr( struct hfi_cmd_session_get_sequence_header_packet *pkt, u32 session_id, struct vidc_seq_hdr *seq_hdr) struct hal_session *session, struct vidc_seq_hdr *seq_hdr) { int rc = 0; if (!pkt || !session_id || !seq_hdr) if (!pkt || !session || !seq_hdr) return -EINVAL; pkt->size = sizeof(struct hfi_cmd_session_get_sequence_header_packet); pkt->packet_type = HFI_CMD_SESSION_GET_SEQUENCE_HEADER; pkt->session_id = session_id; pkt->session_id = hash32_ptr(session); pkt->buffer_len = seq_hdr->seq_hdr_len; if (!seq_hdr->seq_hdr) return -EINVAL; pkt->packet_buffer = seq_hdr->seq_hdr; pkt->packet_buffer = (u32)seq_hdr->seq_hdr; return rc; } int create_pkt_cmd_session_get_buf_req( struct hfi_cmd_session_get_property_packet *pkt, u32 session_id) struct hal_session *session) { int rc = 0; if (!pkt || !session_id) if (!pkt || !session) return -EINVAL; pkt->size = sizeof(struct hfi_cmd_session_get_property_packet); pkt->packet_type = HFI_CMD_SESSION_GET_PROPERTY; pkt->session_id = session_id; pkt->session_id = hash32_ptr(session); pkt->num_properties = 1; pkt->rg_property_data[0] = HFI_PROPERTY_CONFIG_BUFFER_REQUIREMENTS; Loading @@ -782,15 +789,15 @@ int create_pkt_cmd_session_get_buf_req( } int create_pkt_cmd_session_flush(struct hfi_cmd_session_flush_packet *pkt, u32 session_id, enum hal_flush flush_mode) struct hal_session *session, enum hal_flush flush_mode) { int rc = 0; if (!pkt || !session_id) if (!pkt || !session) return -EINVAL; pkt->size = sizeof(struct hfi_cmd_session_flush_packet); pkt->packet_type = HFI_CMD_SESSION_FLUSH; pkt->session_id = session_id; pkt->session_id = hash32_ptr(session); switch (flush_mode) { case HAL_FLUSH_INPUT: pkt->flush_type = HFI_FLUSH_INPUT; Loading @@ -813,16 +820,16 @@ int create_pkt_cmd_session_flush(struct hfi_cmd_session_flush_packet *pkt, int create_pkt_cmd_session_get_property( struct hfi_cmd_session_get_property_packet *pkt, u32 session_id, enum hal_property ptype) struct hal_session *session, enum hal_property ptype) { int rc = 0; if (!pkt || !session_id) { if (!pkt || !session) { dprintk(VIDC_ERR, "%s Invalid parameters\n", __func__); return -EINVAL; } pkt->size = sizeof(struct hfi_cmd_session_get_property_packet); pkt->packet_type = HFI_CMD_SESSION_GET_PROPERTY; pkt->session_id = session_id; pkt->session_id = hash32_ptr(session); pkt->num_properties = 1; switch (ptype) { case HAL_PARAM_PROFILE_LEVEL_CURRENT: Loading @@ -840,15 +847,16 @@ int create_pkt_cmd_session_get_property( int create_pkt_cmd_session_set_property( struct hfi_cmd_session_set_property_packet *pkt, u32 session_id, enum hal_property ptype, void *pdata) struct hal_session *session, enum hal_property ptype, void *pdata) { int rc = 0; if (!pkt || !session_id) if (!pkt || !session) return -EINVAL; pkt->size = sizeof(struct hfi_cmd_session_set_property_packet); pkt->packet_type = HFI_CMD_SESSION_SET_PROPERTY; pkt->session_id = session_id; pkt->session_id = hash32_ptr(session); pkt->num_properties = 1; switch (ptype) { Loading Loading @@ -1160,7 +1168,7 @@ int create_pkt_cmd_session_set_property( HFI_PROPERTY_PARAM_PROFILE_LEVEL_CURRENT; hfi = (struct hfi_profile_level *) &pkt->rg_property_data[1]; hfi->level = (u32)prop->level; hfi->level = prop->level; hfi->profile = hal_to_hfi_type(HAL_PARAM_PROFILE_LEVEL_CURRENT, prop->profile); if (hfi->profile <= 0) { Loading Loading @@ -1224,8 +1232,8 @@ int create_pkt_cmd_session_set_property( break; default: dprintk(VIDC_ERR, "Invalid Rate control setting: 0x%x\n", (int)pdata); "Invalid Rate control setting: 0x%p\n", pdata); break; } pkt->size += sizeof(u32) * 2; Loading @@ -1251,7 +1259,7 @@ int create_pkt_cmd_session_set_property( HFI_PROPERTY_PARAM_VENC_MPEG4_HEADER_EXTENSION; hfi = (struct hfi_mpeg4_header_extension *) &pkt->rg_property_data[1]; hfi->header_extension = (u32) pdata; hfi->header_extension = (u32)(unsigned long) pdata; pkt->size += sizeof(u32) * 2; break; } Loading
drivers/media/platform/msm/vidc/hfi_packetization.h +23 −17 Original line number Diff line number Diff line Loading @@ -50,53 +50,59 @@ int create_pkt_cmd_sys_ping(struct hfi_cmd_sys_ping_packet *pkt); int create_pkt_cmd_sys_session_init( struct hfi_cmd_sys_session_init_packet *pkt, u32 session_id, u32 session_domain, u32 session_codec); struct hal_session *session, u32 session_domain, u32 session_codec); int create_pkt_cmd_session_cmd(struct vidc_hal_session_cmd_pkt *pkt, int pkt_type, u32 session_id); int pkt_type, struct hal_session *session); int create_pkt_cmd_session_set_buffers( struct hfi_cmd_session_set_buffers_packet *pkt, u32 session_id, struct hal_session *session, struct vidc_buffer_addr_info *buffer_info); int create_pkt_cmd_session_release_buffers( struct hfi_cmd_session_release_buffer_packet *pkt, u32 session_id, struct vidc_buffer_addr_info *buffer_info); struct hal_session *session, struct vidc_buffer_addr_info *buffer_info); int create_pkt_cmd_session_etb_decoder( struct hfi_cmd_session_empty_buffer_compressed_packet *pkt, u32 session_id, struct vidc_frame_data *input_frame); struct hal_session *session, struct vidc_frame_data *input_frame); int create_pkt_cmd_session_etb_encoder( struct hfi_cmd_session_empty_buffer_uncompressed_plane0_packet *pkt, u32 session_id, struct vidc_frame_data *input_frame); struct hfi_cmd_session_empty_buffer_uncompressed_plane0_packet *pkt, struct hal_session *session, struct vidc_frame_data *input_frame); int create_pkt_cmd_session_ftb(struct hfi_cmd_session_fill_buffer_packet *pkt, u32 session_id, struct vidc_frame_data *output_frame); struct hal_session *session, struct vidc_frame_data *output_frame); int create_pkt_cmd_session_parse_seq_header( struct hfi_cmd_session_parse_sequence_header_packet *pkt, u32 session_id, struct vidc_seq_hdr *seq_hdr); struct hal_session *session, struct vidc_seq_hdr *seq_hdr); int create_pkt_cmd_session_get_seq_hdr( struct hfi_cmd_session_get_sequence_header_packet *pkt, u32 session_id, struct vidc_seq_hdr *seq_hdr); struct hal_session *session, struct vidc_seq_hdr *seq_hdr); int create_pkt_cmd_session_get_buf_req( struct hfi_cmd_session_get_property_packet *pkt, u32 session_id); struct hal_session *session); int create_pkt_cmd_session_flush(struct hfi_cmd_session_flush_packet *pkt, u32 session_id, enum hal_flush flush_mode); struct hal_session *session, enum hal_flush flush_mode); int create_pkt_cmd_session_set_property( struct hfi_cmd_session_set_property_packet *pkt, u32 session_id, enum hal_property ptype, void *pdata); struct hal_session *session, enum hal_property ptype, void *pdata); int create_pkt_cmd_session_get_property( struct hfi_cmd_session_get_property_packet *pkt, u32 session_id, enum hal_property ptype); struct hal_session *session, enum hal_property ptype); int create_pkt_ssr_cmd(enum hal_ssr_trigger_type type, struct hfi_cmd_sys_test_ssr_packet *pkt); Loading