#include <linux/init.h>
#include <linux/device.h>
#include <linux/ioctl.h>
#include <linux/list.h>
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/slab.h>
#include <linux/delay.h>
#include <linux/types.h>
#include "vpu.h"
#include "vpu_core.h"
#include "vpu_imx8q.h"
#include "vpu_rpc.h"
#define IMX8Q_CSR_CM0Px_ADDR_OFFSET …
#define IMX8Q_CSR_CM0Px_CPUWAIT …
#ifdef CONFIG_IMX_SCU
#include <linux/firmware/imx/ipc.h>
#include <linux/firmware/imx/svc/misc.h>
#define VPU_DISABLE_BITS …
#define VPU_IMX_DECODER_FUSE_OFFSET …
#define VPU_ENCODER_MASK …
#define VPU_DECODER_MASK …
#define VPU_DECODER_H264_MASK …
#define VPU_DECODER_HEVC_MASK …
static u32 imx8q_fuse;
struct vpu_sc_msg_misc { … } __packed;
#endif
int vpu_imx8q_setup_dec(struct vpu_dev *vpu)
{ … }
int vpu_imx8q_setup_enc(struct vpu_dev *vpu)
{ … }
int vpu_imx8q_setup(struct vpu_dev *vpu)
{ … }
static int vpu_imx8q_reset_enc(struct vpu_dev *vpu)
{ … }
static int vpu_imx8q_reset_dec(struct vpu_dev *vpu)
{ … }
int vpu_imx8q_reset(struct vpu_dev *vpu)
{ … }
int vpu_imx8q_set_system_cfg_common(struct vpu_rpc_system_config *config, u32 regs, u32 core_id)
{ … }
int vpu_imx8q_boot_core(struct vpu_core *core)
{ … }
int vpu_imx8q_get_power_state(struct vpu_core *core)
{ … }
int vpu_imx8q_on_firmware_loaded(struct vpu_core *core)
{ … }
int vpu_imx8q_check_memory_region(dma_addr_t base, dma_addr_t addr, u32 size)
{ … }
#ifdef CONFIG_IMX_SCU
static u32 vpu_imx8q_get_fuse(void)
{ … }
bool vpu_imx8q_check_codec(enum vpu_core_type type)
{ … }
bool vpu_imx8q_check_fmt(enum vpu_core_type type, u32 pixelfmt)
{ … }
#else
bool vpu_imx8q_check_codec(enum vpu_core_type type)
{
return true;
}
bool vpu_imx8q_check_fmt(enum vpu_core_type type, u32 pixelfmt)
{
return true;
}
#endif