brintos

brintos / linux-shallow public Read only

0
0
Text · 1.7 KiB · 643e5aa Raw
91 lines · c
1// SPDX-License-Identifier: GPL-2.0-only2/*3 * Copyright (c) 2020, The Linux Foundation. All rights reserved.4 */5#include <linux/of.h>6#include "hfi_platform.h"7#include "core.h"8 9const struct hfi_platform *hfi_platform_get(enum hfi_version version)10{11	switch (version) {12	case HFI_VERSION_4XX:13		return &hfi_plat_v4;14	case HFI_VERSION_6XX:15		return &hfi_plat_v6;16	default:17		break;18	}19 20	return NULL;21}22 23unsigned long24hfi_platform_get_codec_vpp_freq(enum hfi_version version, u32 codec, u32 session_type)25{26	const struct hfi_platform *plat;27	unsigned long freq = 0;28 29	plat = hfi_platform_get(version);30	if (!plat)31		return 0;32 33	if (plat->codec_vpp_freq)34		freq = plat->codec_vpp_freq(session_type, codec);35 36	return freq;37}38 39unsigned long40hfi_platform_get_codec_vsp_freq(enum hfi_version version, u32 codec, u32 session_type)41{42	const struct hfi_platform *plat;43	unsigned long freq = 0;44 45	plat = hfi_platform_get(version);46	if (!plat)47		return 0;48 49	if (plat->codec_vpp_freq)50		freq = plat->codec_vsp_freq(session_type, codec);51 52	return freq;53}54 55unsigned long56hfi_platform_get_codec_lp_freq(enum hfi_version version, u32 codec, u32 session_type)57{58	const struct hfi_platform *plat;59	unsigned long freq = 0;60 61	plat = hfi_platform_get(version);62	if (!plat)63		return 0;64 65	if (plat->codec_lp_freq)66		freq = plat->codec_lp_freq(session_type, codec);67 68	return freq;69}70 71int72hfi_platform_get_codecs(struct venus_core *core, u32 *enc_codecs, u32 *dec_codecs, u32 *count)73{74	const struct hfi_platform *plat;75 76	plat = hfi_platform_get(core->res->hfi_version);77	if (!plat)78		return -EINVAL;79 80	if (plat->codecs)81		plat->codecs(enc_codecs, dec_codecs, count);82 83	if (IS_IRIS2_1(core)) {84		*enc_codecs &= ~HFI_VIDEO_CODEC_VP8;85		*dec_codecs &= ~HFI_VIDEO_CODEC_VP8;86	}87 88	return 0;89}90 91