linux/drivers/media/platform/qcom/camss/camss-vfe-gen1.c

// SPDX-License-Identifier: GPL-2.0
/*
 * camss-vfe-gen1.c
 *
 * Qualcomm MSM Camera Subsystem - VFE Common functionality for Gen 1 versions of hw (4.1, 4.7..)
 *
 * Copyright (C) 2020 Linaro Ltd.
 */

#include "camss.h"
#include "camss-vfe.h"
#include "camss-vfe-gen1.h"

/* Max number of frame drop updates per frame */
#define VFE_FRAME_DROP_UPDATES
#define VFE_NEXT_SOF_MS

int vfe_gen1_halt(struct vfe_device *vfe)
{}

static int vfe_disable_output(struct vfe_line *line)
{}

/*
 * vfe_gen1_disable - Disable streaming on VFE line
 * @line: VFE line
 *
 * Return 0 on success or a negative error code otherwise
 */
int vfe_gen1_disable(struct vfe_line *line)
{}

static void vfe_output_init_addrs(struct vfe_device *vfe,
				  struct vfe_output *output, u8 sync,
				  struct vfe_line *line)
{}

static void vfe_output_frame_drop(struct vfe_device *vfe,
				  struct vfe_output *output,
				  u32 drop_pattern)
{}

static int vfe_enable_output(struct vfe_line *line)
{}

static int vfe_get_output(struct vfe_line *line)
{}

int vfe_gen1_enable(struct vfe_line *line)
{}

static void vfe_output_update_ping_addr(struct vfe_device *vfe,
					struct vfe_output *output, u8 sync,
					struct vfe_line *line)
{}

static void vfe_output_update_pong_addr(struct vfe_device *vfe,
					struct vfe_output *output, u8 sync,
					struct vfe_line *line)
{}

static void vfe_buf_update_wm_on_next(struct vfe_device *vfe,
				      struct vfe_output *output)
{}

static void vfe_buf_update_wm_on_last(struct vfe_device *vfe,
				      struct vfe_output *output)
{}

static void vfe_buf_update_wm_on_new(struct vfe_device *vfe,
				     struct vfe_output *output,
				     struct camss_buffer *new_buf,
				     struct vfe_line *line)
{}

/*
 * vfe_isr_halt_ack - Process halt ack
 * @vfe: VFE Device
 */
static void vfe_isr_halt_ack(struct vfe_device *vfe)
{}

/*
 * vfe_isr_sof - Process start of frame interrupt
 * @vfe: VFE Device
 * @line_id: VFE line
 */
static void vfe_isr_sof(struct vfe_device *vfe, enum vfe_line_id line_id)
{}

/*
 * vfe_isr_reg_update - Process reg update interrupt
 * @vfe: VFE Device
 * @line_id: VFE line
 */
static void vfe_isr_reg_update(struct vfe_device *vfe, enum vfe_line_id line_id)
{}

/*
 * vfe_isr_wm_done - Process write master done interrupt
 * @vfe: VFE Device
 * @wm: Write master id
 */
static void vfe_isr_wm_done(struct vfe_device *vfe, u8 wm)
{}

/*
 * vfe_queue_buffer - Add empty buffer
 * @vid: Video device structure
 * @buf: Buffer to be enqueued
 *
 * Add an empty buffer - depending on the current number of buffers it will be
 * put in pending buffer queue or directly given to the hardware to be filled.
 *
 * Return 0 on success or a negative error code otherwise
 */
static int vfe_queue_buffer(struct camss_video *vid, struct camss_buffer *buf)
{}

#define CALC_WORD(width, M, N)

int vfe_word_per_line(u32 format, u32 width)
{}

const struct vfe_isr_ops vfe_isr_ops_gen1 =;

const struct camss_video_ops vfe_video_ops_gen1 =;