cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

hfi_platform.h (1991B)


      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		4
     17#define MAX_FMT_ENTRIES		32
     18#define MAX_CAP_ENTRIES		32
     19#define MAX_ALLOC_MODE_ENTRIES	16
     20#define MAX_CODEC_NUM		32
     21#define MAX_SESSIONS		16
     22
     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);
     69#endif