linux/drivers/staging/media/sunxi/cedrus/cedrus_h264.c

// SPDX-License-Identifier: GPL-2.0-or-later
/*
 * Cedrus VPU driver
 *
 * Copyright (c) 2013 Jens Kuske <[email protected]>
 * Copyright (c) 2018 Bootlin
 */

#include <linux/delay.h>
#include <linux/types.h>

#include <media/videobuf2-dma-contig.h>

#include "cedrus.h"
#include "cedrus_hw.h"
#include "cedrus_regs.h"

enum cedrus_h264_sram_off {};

struct cedrus_h264_sram_ref_pic {} __packed;

#define CEDRUS_H264_FRAME_NUM

#define CEDRUS_NEIGHBOR_INFO_BUF_SIZE
#define CEDRUS_MIN_PIC_INFO_BUF_SIZE

static void cedrus_h264_write_sram(struct cedrus_dev *dev,
				   enum cedrus_h264_sram_off off,
				   const void *data, size_t len)
{}

static dma_addr_t cedrus_h264_mv_col_buf_addr(struct cedrus_buffer *buf,
					      unsigned int field)
{}

static void cedrus_fill_ref_pic(struct cedrus_ctx *ctx,
				struct cedrus_buffer *buf,
				unsigned int top_field_order_cnt,
				unsigned int bottom_field_order_cnt,
				struct cedrus_h264_sram_ref_pic *pic)
{}

static int cedrus_write_frame_list(struct cedrus_ctx *ctx,
				   struct cedrus_run *run)
{}

#define CEDRUS_MAX_REF_IDX

static void _cedrus_write_ref_list(struct cedrus_ctx *ctx,
				   struct cedrus_run *run,
				   const struct v4l2_h264_reference *ref_list,
				   u8 num_ref, enum cedrus_h264_sram_off sram)
{}

static void cedrus_write_ref_list0(struct cedrus_ctx *ctx,
				   struct cedrus_run *run)
{}

static void cedrus_write_ref_list1(struct cedrus_ctx *ctx,
				   struct cedrus_run *run)
{}

static void cedrus_write_scaling_lists(struct cedrus_ctx *ctx,
				       struct cedrus_run *run)
{}

static void cedrus_write_pred_weight_table(struct cedrus_ctx *ctx,
					   struct cedrus_run *run)
{}

/*
 * It turns out that using VE_H264_VLD_OFFSET to skip bits is not reliable. In
 * rare cases frame is not decoded correctly. However, setting offset to 0 and
 * skipping appropriate amount of bits with flush bits trigger always works.
 */
static void cedrus_skip_bits(struct cedrus_dev *dev, int num)
{}

static void cedrus_set_params(struct cedrus_ctx *ctx,
			      struct cedrus_run *run)
{}

static enum cedrus_irq_status
cedrus_h264_irq_status(struct cedrus_ctx *ctx)
{}

static void cedrus_h264_irq_clear(struct cedrus_ctx *ctx)
{}

static void cedrus_h264_irq_disable(struct cedrus_ctx *ctx)
{}

static int cedrus_h264_setup(struct cedrus_ctx *ctx, struct cedrus_run *run)
{}

static int cedrus_h264_start(struct cedrus_ctx *ctx)
{}

static void cedrus_h264_stop(struct cedrus_ctx *ctx)
{}

static void cedrus_h264_trigger(struct cedrus_ctx *ctx)
{}

struct cedrus_dec_ops cedrus_dec_ops_h264 =;