video: driver: Add new hfi buffer flags
New hfi buffer flags to send memory region information to firmware. Change-Id: I3a320622d0ed01a5e583dbeceb2648a57f618a66 Signed-off-by: Chinmay Sawarkar <quic_chinmays@quicinc.com>
This commit is contained in:
@@ -51,11 +51,6 @@ enum hfi_packet_host_flags {
|
||||
HFI_HOST_FLAGS_RESPONSE_REQUIRED = 0x00000002,
|
||||
HFI_HOST_FLAGS_NON_DISCARDABLE = 0x00000004,
|
||||
HFI_HOST_FLAGS_GET_PROPERTY = 0x00000008,
|
||||
HFI_HOST_FLAGS_CB_NON_SECURE = 0x00000010,
|
||||
HFI_HOST_FLAGS_CB_SECURE_PIXEL = 0x00000020,
|
||||
HFI_HOST_FLAGS_CB_SECURE_BITSTREAM = 0x00000040,
|
||||
HFI_HOST_FLAGS_CB_SECURE_NON_PIXEL = 0x00000080,
|
||||
HFI_HOST_FLAGS_CB_NON_SECURE_PIXEL = 0x00000100,
|
||||
};
|
||||
|
||||
enum hfi_packet_firmware_flags {
|
||||
@@ -110,6 +105,11 @@ enum hfi_buffer_host_flags {
|
||||
HFI_BUF_HOST_FLAG_RELEASE = 0x00000001,
|
||||
HFI_BUF_HOST_FLAG_READONLY = 0x00000010,
|
||||
HFI_BUF_HOST_FLAG_CODEC_CONFIG = 0x00000100,
|
||||
HFI_BUF_HOST_FLAGS_CB_NON_SECURE = 0x00000200,
|
||||
HFI_BUF_HOST_FLAGS_CB_SECURE_PIXEL = 0x00000400,
|
||||
HFI_BUF_HOST_FLAGS_CB_SECURE_BITSTREAM = 0x00000800,
|
||||
HFI_BUF_HOST_FLAGS_CB_SECURE_NON_PIXEL = 0x00001000,
|
||||
HFI_BUF_HOST_FLAGS_CB_NON_SECURE_PIXEL = 0x00002000,
|
||||
};
|
||||
|
||||
enum hfi_buffer_firmware_flags {
|
||||
|
||||
@@ -891,6 +891,7 @@ struct msm_vidc_buffer {
|
||||
struct list_head list;
|
||||
struct msm_vidc_inst *inst;
|
||||
enum msm_vidc_buffer_type type;
|
||||
enum msm_vidc_buffer_region region;
|
||||
u32 index;
|
||||
int fd;
|
||||
u32 buffer_size;
|
||||
|
||||
@@ -288,6 +288,27 @@ u32 get_hfi_colorformat(struct msm_vidc_inst *inst,
|
||||
return hfi_colorformat;
|
||||
}
|
||||
|
||||
static u32 get_hfi_region_flag(enum msm_vidc_buffer_region region)
|
||||
{
|
||||
|
||||
switch (region) {
|
||||
case MSM_VIDC_NON_SECURE:
|
||||
return HFI_BUF_HOST_FLAGS_CB_NON_SECURE;
|
||||
case MSM_VIDC_NON_SECURE_PIXEL:
|
||||
return HFI_BUF_HOST_FLAGS_CB_NON_SECURE_PIXEL;
|
||||
case MSM_VIDC_SECURE_PIXEL:
|
||||
return HFI_BUF_HOST_FLAGS_CB_SECURE_PIXEL;
|
||||
case MSM_VIDC_SECURE_NONPIXEL:
|
||||
return HFI_BUF_HOST_FLAGS_CB_SECURE_NON_PIXEL;
|
||||
case MSM_VIDC_SECURE_BITSTREAM:
|
||||
return HFI_BUF_HOST_FLAGS_CB_SECURE_BITSTREAM;
|
||||
case MSM_VIDC_REGION_MAX:
|
||||
case MSM_VIDC_REGION_NONE:
|
||||
default:
|
||||
return HFI_BUF_HOST_FLAG_NONE;
|
||||
}
|
||||
}
|
||||
|
||||
int get_hfi_buffer(struct msm_vidc_inst *inst,
|
||||
struct msm_vidc_buffer *buffer, struct hfi_buffer *buf)
|
||||
{
|
||||
@@ -310,6 +331,7 @@ int get_hfi_buffer(struct msm_vidc_inst *inst,
|
||||
buf->flags |= HFI_BUF_HOST_FLAG_RELEASE;
|
||||
if (buffer->flags & MSM_VIDC_BUF_FLAG_CODECCONFIG)
|
||||
buf->flags |= HFI_BUF_HOST_FLAG_CODEC_CONFIG;
|
||||
buf->flags |= get_hfi_region_flag(buffer->region);
|
||||
buf->timestamp = buffer->timestamp;
|
||||
|
||||
return 0;
|
||||
|
||||
@@ -2524,6 +2524,7 @@ int msm_vidc_allocate_buffers(struct msm_vidc_inst *inst,
|
||||
list_add_tail(&buf->list, &buffers->list);
|
||||
buf->type = buf_type;
|
||||
buf->index = idx;
|
||||
buf->region = call_mem_op(core, buffer_region, inst, buf_type);
|
||||
}
|
||||
i_vpr_h(inst, "%s: allocated %d buffers for type %s\n",
|
||||
__func__, num_buffers, buf_name(buf_type));
|
||||
@@ -3295,6 +3296,7 @@ int msm_vidc_create_internal_buffer(struct msm_vidc_inst *inst,
|
||||
|
||||
buffer->dmabuf = mem->dmabuf;
|
||||
buffer->device_addr = mem->device_addr;
|
||||
buffer->region = mem->region;
|
||||
i_vpr_h(inst, "%s: create: type: %8s, size: %9u, device_addr %#llx\n", __func__,
|
||||
buf_name(buffer_type), buffers->size, buffer->device_addr);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user