46233e91fa
mtk-vcodec supports two kinds of firmware, VPU and SCP. Both were
supported from the same source files, but this is clearly unclean and
makes it more difficult to disable support for one or the other.
Move these implementations into their own file, after adding the
necessary private interfaces.
[hverkuil: smatch fix: mtk_vcodec_fw_vpu_init() error: uninitialized symbol 'rst_id'.]
Signed-off-by: Alexandre Courbot <acourbot@chromium.org>
Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
Fixes: bf1d556ad4
("media: mtk-vcodec: abstract firmware interface")
Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
44 lines
1.2 KiB
C
44 lines
1.2 KiB
C
/* SPDX-License-Identifier: GPL-2.0 */
|
|
|
|
#ifndef _MTK_VCODEC_FW_H_
|
|
#define _MTK_VCODEC_FW_H_
|
|
|
|
#include <linux/remoteproc.h>
|
|
#include <linux/remoteproc/mtk_scp.h>
|
|
|
|
#include "../mtk-vpu/mtk_vpu.h"
|
|
|
|
struct mtk_vcodec_dev;
|
|
|
|
enum mtk_vcodec_fw_type {
|
|
VPU,
|
|
SCP,
|
|
};
|
|
|
|
enum mtk_vcodec_fw_use {
|
|
DECODER,
|
|
ENCODER,
|
|
};
|
|
|
|
struct mtk_vcodec_fw;
|
|
|
|
typedef void (*mtk_vcodec_ipi_handler) (void *data,
|
|
unsigned int len, void *priv);
|
|
|
|
struct mtk_vcodec_fw *mtk_vcodec_fw_select(struct mtk_vcodec_dev *dev,
|
|
enum mtk_vcodec_fw_type type,
|
|
enum mtk_vcodec_fw_use fw_use);
|
|
void mtk_vcodec_fw_release(struct mtk_vcodec_fw *fw);
|
|
|
|
int mtk_vcodec_fw_load_firmware(struct mtk_vcodec_fw *fw);
|
|
unsigned int mtk_vcodec_fw_get_vdec_capa(struct mtk_vcodec_fw *fw);
|
|
unsigned int mtk_vcodec_fw_get_venc_capa(struct mtk_vcodec_fw *fw);
|
|
void *mtk_vcodec_fw_map_dm_addr(struct mtk_vcodec_fw *fw, u32 mem_addr);
|
|
int mtk_vcodec_fw_ipi_register(struct mtk_vcodec_fw *fw, int id,
|
|
mtk_vcodec_ipi_handler handler,
|
|
const char *name, void *priv);
|
|
int mtk_vcodec_fw_ipi_send(struct mtk_vcodec_fw *fw, int id,
|
|
void *buf, unsigned int len, unsigned int wait);
|
|
|
|
#endif /* _MTK_VCODEC_FW_H_ */
|