File Index
Files and directories
Sign in
FILE

hfi_parser.h

File preview with syntax highlighting.

linux-6.19.14/drivers/media/platform/qcom/venus/hfi_parser.h C
  1/* SPDX-License-Identifier: GPL-2.0 */
  2/* Copyright (C) 2018 Linaro Ltd. */
  3#ifndef __VENUS_HFI_PARSER_H__
  4#define __VENUS_HFI_PARSER_H__
  5
  6#include "core.h"
  7
  8u32 hfi_parser(struct venus_core *core, struct venus_inst *inst,
  9	       void *buf, u32 size);
 10
 11#define WHICH_CAP_MIN	0
 12#define WHICH_CAP_MAX	1
 13#define WHICH_CAP_STEP	2
 14
 15static inline u32 get_cap(struct venus_inst *inst, u32 type, u32 which)
 16{
 17	struct venus_core *core = inst->core;
 18	struct hfi_capability *cap = NULL;
 19	struct hfi_plat_caps *caps;
 20	unsigned int i;
 21
 22	caps = venus_caps_by_codec(core, inst->hfi_codec, inst->session_type);
 23	if (!caps)
 24		return 0;
 25
 26	for (i = 0; i < caps->num_caps; i++) {
 27		if (caps->caps[i].capability_type == type) {
 28			cap = &caps->caps[i];
 29			break;
 30		}
 31	}
 32
 33	if (!cap)
 34		return 0;
 35
 36	switch (which) {
 37	case WHICH_CAP_MIN:
 38		return cap->min;
 39	case WHICH_CAP_MAX:
 40		return cap->max;
 41	case WHICH_CAP_STEP:
 42		return cap->step_size;
 43	default:
 44		break;
 45	}
 46
 47	return 0;
 48}
 49
 50static inline u32 cap_min(struct venus_inst *inst, u32 type)
 51{
 52	return get_cap(inst, type, WHICH_CAP_MIN);
 53}
 54
 55static inline u32 cap_max(struct venus_inst *inst, u32 type)
 56{
 57	return get_cap(inst, type, WHICH_CAP_MAX);
 58}
 59
 60static inline u32 cap_step(struct venus_inst *inst, u32 type)
 61{
 62	return get_cap(inst, type, WHICH_CAP_STEP);
 63}
 64
 65static inline u32 frame_width_min(struct venus_inst *inst)
 66{
 67	return cap_min(inst, HFI_CAPABILITY_FRAME_WIDTH);
 68}
 69
 70static inline u32 frame_width_max(struct venus_inst *inst)
 71{
 72	return cap_max(inst, HFI_CAPABILITY_FRAME_WIDTH);
 73}
 74
 75static inline u32 frame_width_step(struct venus_inst *inst)
 76{
 77	return cap_step(inst, HFI_CAPABILITY_FRAME_WIDTH);
 78}
 79
 80static inline u32 frame_height_min(struct venus_inst *inst)
 81{
 82	return cap_min(inst, HFI_CAPABILITY_FRAME_HEIGHT);
 83}
 84
 85static inline u32 frame_height_max(struct venus_inst *inst)
 86{
 87	return cap_max(inst, HFI_CAPABILITY_FRAME_HEIGHT);
 88}
 89
 90static inline u32 frame_height_step(struct venus_inst *inst)
 91{
 92	return cap_step(inst, HFI_CAPABILITY_FRAME_HEIGHT);
 93}
 94
 95static inline u32 frate_min(struct venus_inst *inst)
 96{
 97	return cap_min(inst, HFI_CAPABILITY_FRAMERATE);
 98}
 99
100static inline u32 frate_max(struct venus_inst *inst)
101{
102	return cap_max(inst, HFI_CAPABILITY_FRAMERATE);
103}
104
105static inline u32 frate_step(struct venus_inst *inst)
106{
107	return cap_step(inst, HFI_CAPABILITY_FRAMERATE);
108}
109
110static inline u32 core_num_max(struct venus_inst *inst)
111{
112	return cap_max(inst, HFI_CAPABILITY_MAX_VIDEOCORES);
113}
114
115static inline u32 mbs_per_frame_max(struct venus_inst *inst)
116{
117	return cap_max(inst, HFI_CAPABILITY_MBS_PER_FRAME);
118}
119
120#endif
~/ Read-only file preview.