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:
Chinmay Sawarkar
2023-02-17 16:01:16 -08:00
parent e613fa6855
commit ed46ad9aec
4 changed files with 30 additions and 5 deletions

View File

@@ -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 {

View File

@@ -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;

View File

@@ -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;

View File

@@ -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);