18c2ecf20Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0-or-later */
28c2ecf20Sopenharmony_ci/*
38c2ecf20Sopenharmony_ci *  Driver for the Conexant CX25821 PCIe bridge
48c2ecf20Sopenharmony_ci *
58c2ecf20Sopenharmony_ci *  Copyright (C) 2009 Conexant Systems Inc.
68c2ecf20Sopenharmony_ci *  Authors  <shu.lin@conexant.com>, <hiep.huynh@conexant.com>
78c2ecf20Sopenharmony_ci *  Based on Steven Toth <stoth@linuxtv.org> cx23885 driver
88c2ecf20Sopenharmony_ci */
98c2ecf20Sopenharmony_ci
108c2ecf20Sopenharmony_ci#ifndef CX25821_VIDEO_H_
118c2ecf20Sopenharmony_ci#define CX25821_VIDEO_H_
128c2ecf20Sopenharmony_ci
138c2ecf20Sopenharmony_ci#include <linux/init.h>
148c2ecf20Sopenharmony_ci#include <linux/list.h>
158c2ecf20Sopenharmony_ci#include <linux/module.h>
168c2ecf20Sopenharmony_ci#include <linux/moduleparam.h>
178c2ecf20Sopenharmony_ci#include <linux/kmod.h>
188c2ecf20Sopenharmony_ci#include <linux/kernel.h>
198c2ecf20Sopenharmony_ci#include <linux/slab.h>
208c2ecf20Sopenharmony_ci#include <linux/interrupt.h>
218c2ecf20Sopenharmony_ci#include <linux/delay.h>
228c2ecf20Sopenharmony_ci#include <linux/kthread.h>
238c2ecf20Sopenharmony_ci#include <asm/div64.h>
248c2ecf20Sopenharmony_ci
258c2ecf20Sopenharmony_ci#include "cx25821.h"
268c2ecf20Sopenharmony_ci#include <media/v4l2-common.h>
278c2ecf20Sopenharmony_ci#include <media/v4l2-ioctl.h>
288c2ecf20Sopenharmony_ci#include <media/v4l2-event.h>
298c2ecf20Sopenharmony_ci
308c2ecf20Sopenharmony_ci#define VIDEO_DEBUG 0
318c2ecf20Sopenharmony_ci
328c2ecf20Sopenharmony_ci#define dprintk(level, fmt, arg...)					\
338c2ecf20Sopenharmony_cido {									\
348c2ecf20Sopenharmony_ci	if (VIDEO_DEBUG >= level)					\
358c2ecf20Sopenharmony_ci		printk(KERN_DEBUG "%s/0: " fmt, dev->name, ##arg);	\
368c2ecf20Sopenharmony_ci} while (0)
378c2ecf20Sopenharmony_ci
388c2ecf20Sopenharmony_ci#define FORMAT_FLAGS_PACKED       0x01
398c2ecf20Sopenharmony_ciextern void cx25821_video_wakeup(struct cx25821_dev *dev,
408c2ecf20Sopenharmony_ci				 struct cx25821_dmaqueue *q, u32 count);
418c2ecf20Sopenharmony_ci
428c2ecf20Sopenharmony_ciextern int cx25821_start_video_dma(struct cx25821_dev *dev,
438c2ecf20Sopenharmony_ci				   struct cx25821_dmaqueue *q,
448c2ecf20Sopenharmony_ci				   struct cx25821_buffer *buf,
458c2ecf20Sopenharmony_ci				   const struct sram_channel *channel);
468c2ecf20Sopenharmony_ci
478c2ecf20Sopenharmony_ciextern int cx25821_video_irq(struct cx25821_dev *dev, int chan_num, u32 status);
488c2ecf20Sopenharmony_ciextern void cx25821_video_unregister(struct cx25821_dev *dev, int chan_num);
498c2ecf20Sopenharmony_ciextern int cx25821_video_register(struct cx25821_dev *dev);
508c2ecf20Sopenharmony_ci
518c2ecf20Sopenharmony_ci#endif
52