forked from Qortal/Brooklyn
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
71 lines
2.0 KiB
71 lines
2.0 KiB
/* SPDX-License-Identifier: GPL-2.0-only */ |
|
/* |
|
* Copyright (c) 2020, The Linux Foundation. All rights reserved. |
|
*/ |
|
|
|
#ifndef __HFI_PLATFORM_H__ |
|
#define __HFI_PLATFORM_H__ |
|
|
|
#include <linux/types.h> |
|
#include <linux/videodev2.h> |
|
|
|
#include "hfi.h" |
|
#include "hfi_plat_bufs.h" |
|
#include "hfi_helper.h" |
|
|
|
#define MAX_PLANES 4 |
|
#define MAX_FMT_ENTRIES 32 |
|
#define MAX_CAP_ENTRIES 32 |
|
#define MAX_ALLOC_MODE_ENTRIES 16 |
|
#define MAX_CODEC_NUM 32 |
|
#define MAX_SESSIONS 16 |
|
|
|
struct raw_formats { |
|
u32 buftype; |
|
u32 fmt; |
|
}; |
|
|
|
struct hfi_plat_caps { |
|
u32 codec; |
|
u32 domain; |
|
bool cap_bufs_mode_dynamic; |
|
unsigned int num_caps; |
|
struct hfi_capability caps[MAX_CAP_ENTRIES]; |
|
unsigned int num_pl; |
|
struct hfi_profile_level pl[HFI_MAX_PROFILE_COUNT]; |
|
unsigned int num_fmts; |
|
struct raw_formats fmts[MAX_FMT_ENTRIES]; |
|
bool valid; /* used only for Venus v1xx */ |
|
}; |
|
|
|
struct hfi_platform_codec_freq_data { |
|
u32 pixfmt; |
|
u32 session_type; |
|
unsigned long vpp_freq; |
|
unsigned long vsp_freq; |
|
unsigned long low_power_freq; |
|
}; |
|
|
|
struct hfi_platform { |
|
unsigned long (*codec_vpp_freq)(u32 session_type, u32 codec); |
|
unsigned long (*codec_vsp_freq)(u32 session_type, u32 codec); |
|
unsigned long (*codec_lp_freq)(u32 session_type, u32 codec); |
|
void (*codecs)(u32 *enc_codecs, u32 *dec_codecs, u32 *count); |
|
const struct hfi_plat_caps *(*capabilities)(unsigned int *entries); |
|
u8 (*num_vpp_pipes)(void); |
|
int (*bufreq)(struct hfi_plat_buffers_params *params, u32 session_type, |
|
u32 buftype, struct hfi_buffer_requirements *bufreq); |
|
}; |
|
|
|
extern const struct hfi_platform hfi_plat_v4; |
|
extern const struct hfi_platform hfi_plat_v6; |
|
|
|
const struct hfi_platform *hfi_platform_get(enum hfi_version version); |
|
unsigned long hfi_platform_get_codec_vpp_freq(enum hfi_version version, u32 codec, |
|
u32 session_type); |
|
unsigned long hfi_platform_get_codec_vsp_freq(enum hfi_version version, u32 codec, |
|
u32 session_type); |
|
unsigned long hfi_platform_get_codec_lp_freq(enum hfi_version version, u32 codec, |
|
u32 session_type); |
|
u8 hfi_platform_num_vpp_pipes(enum hfi_version version); |
|
#endif
|
|
|