brintos

brintos / linux-shallow public Read only

0
0
Text · 2.0 KiB · ec89a90 Raw
72 lines · c
1/* SPDX-License-Identifier: GPL-2.0-only */2/*3 * Copyright (c) 2020, The Linux Foundation. All rights reserved.4 */5 6#ifndef __HFI_PLATFORM_H__7#define __HFI_PLATFORM_H__8 9#include <linux/types.h>10#include <linux/videodev2.h>11 12#include "hfi.h"13#include "hfi_plat_bufs.h"14#include "hfi_helper.h"15 16#define MAX_PLANES		417#define MAX_FMT_ENTRIES		3218#define MAX_CAP_ENTRIES		3219#define MAX_ALLOC_MODE_ENTRIES	1620#define MAX_CODEC_NUM		3221#define MAX_SESSIONS		1622 23struct raw_formats {24	u32 buftype;25	u32 fmt;26};27 28struct hfi_plat_caps {29	u32 codec;30	u32 domain;31	bool cap_bufs_mode_dynamic;32	unsigned int num_caps;33	struct hfi_capability caps[MAX_CAP_ENTRIES];34	unsigned int num_pl;35	struct hfi_profile_level pl[HFI_MAX_PROFILE_COUNT];36	unsigned int num_fmts;37	struct raw_formats fmts[MAX_FMT_ENTRIES];38	bool valid;	/* used only for Venus v1xx */39};40 41struct hfi_platform_codec_freq_data {42	u32 pixfmt;43	u32 session_type;44	unsigned long vpp_freq;45	unsigned long vsp_freq;46	unsigned long low_power_freq;47};48 49struct hfi_platform {50	unsigned long (*codec_vpp_freq)(u32 session_type, u32 codec);51	unsigned long (*codec_vsp_freq)(u32 session_type, u32 codec);52	unsigned long (*codec_lp_freq)(u32 session_type, u32 codec);53	void (*codecs)(u32 *enc_codecs, u32 *dec_codecs, u32 *count);54	const struct hfi_plat_caps *(*capabilities)(unsigned int *entries);55	int (*bufreq)(struct hfi_plat_buffers_params *params, u32 session_type,56		      u32 buftype, struct hfi_buffer_requirements *bufreq);57};58 59extern const struct hfi_platform hfi_plat_v4;60extern const struct hfi_platform hfi_plat_v6;61 62const struct hfi_platform *hfi_platform_get(enum hfi_version version);63unsigned long hfi_platform_get_codec_vpp_freq(enum hfi_version version, u32 codec,64					      u32 session_type);65unsigned long hfi_platform_get_codec_vsp_freq(enum hfi_version version, u32 codec,66					      u32 session_type);67unsigned long hfi_platform_get_codec_lp_freq(enum hfi_version version, u32 codec,68					     u32 session_type);69int hfi_platform_get_codecs(struct venus_core *core, u32 *enc_codecs, u32 *dec_codecs,70			    u32 *count);71#endif72