#ifndef CX18_DRIVER_H
#define CX18_DRIVER_H
#include <linux/module.h>
#include <linux/moduleparam.h>
#include <linux/init.h>
#include <linux/delay.h>
#include <linux/sched/signal.h>
#include <linux/fs.h>
#include <linux/pci.h>
#include <linux/interrupt.h>
#include <linux/spinlock.h>
#include <linux/i2c.h>
#include <linux/i2c-algo-bit.h>
#include <linux/list.h>
#include <linux/unistd.h>
#include <linux/pagemap.h>
#include <linux/workqueue.h>
#include <linux/mutex.h>
#include <linux/slab.h>
#include <asm/byteorder.h>
#include <media/v4l2-common.h>
#include <media/v4l2-ioctl.h>
#include <media/v4l2-device.h>
#include <media/v4l2-fh.h>
#include <media/tuner.h>
#include <media/i2c/ir-kbd-i2c.h>
#include "cx18-mailbox.h"
#include "cx18-av-core.h"
#include "cx23418.h"
#include <media/demux.h>
#include <media/dmxdev.h>
#include <media/dvb_demux.h>
#include <media/dvb_frontend.h>
#include <media/dvb_net.h>
#include <media/dvbdev.h>
#include <media/videobuf2-vmalloc.h>
#ifndef CONFIG_PCI
# error "This driver requires kernel PCI support."
#endif
#define CX18_MEM_OFFSET …
#define CX18_MEM_SIZE …
#define CX18_REG_OFFSET …
#define CX18_MAX_CARDS …
#define CX18_CARD_HVR_1600_ESMT …
#define CX18_CARD_HVR_1600_SAMSUNG …
#define CX18_CARD_COMPRO_H900 …
#define CX18_CARD_YUAN_MPC718 …
#define CX18_CARD_CNXT_RAPTOR_PAL …
#define CX18_CARD_TOSHIBA_QOSMIO_DVBT …
#define CX18_CARD_LEADTEK_PVR2100 …
#define CX18_CARD_LEADTEK_DVR3100H …
#define CX18_CARD_GOTVIEW_PCI_DVD3 …
#define CX18_CARD_HVR_1600_S5H1411 …
#define CX18_CARD_LAST …
#define CX18_ENC_STREAM_TYPE_MPG …
#define CX18_ENC_STREAM_TYPE_TS …
#define CX18_ENC_STREAM_TYPE_YUV …
#define CX18_ENC_STREAM_TYPE_VBI …
#define CX18_ENC_STREAM_TYPE_PCM …
#define CX18_ENC_STREAM_TYPE_IDX …
#define CX18_ENC_STREAM_TYPE_RAD …
#define CX18_MAX_STREAMS …
#define PCI_VENDOR_ID_CX …
#define PCI_DEVICE_ID_CX23418 …
#define CX18_PCI_ID_HAUPPAUGE …
#define CX18_PCI_ID_COMPRO …
#define CX18_PCI_ID_YUAN …
#define CX18_PCI_ID_CONEXANT …
#define CX18_PCI_ID_TOSHIBA …
#define CX18_PCI_ID_LEADTEK …
#define CX18_PCI_ID_GOTVIEW …
#define CX18_DEFAULT_ENC_TS_BUFFERS …
#define CX18_DEFAULT_ENC_MPG_BUFFERS …
#define CX18_DEFAULT_ENC_IDX_BUFFERS …
#define CX18_DEFAULT_ENC_YUV_BUFFERS …
#define CX18_DEFAULT_ENC_VBI_BUFFERS …
#define CX18_DEFAULT_ENC_PCM_BUFFERS …
#define CX18_MAX_FW_MDLS_PER_STREAM …
#define CX18_UNIT_ENC_YUV_BUFSIZE …
#define CX18_625_LINE_ENC_YUV_BUFSIZE …
#define CX18_525_LINE_ENC_YUV_BUFSIZE …
struct cx18_enc_idx_entry { … } __attribute__ ((packed));
#define CX18_UNIT_ENC_IDX_BUFSIZE …
#define CX18_DEFAULT_ENC_TS_BUFSIZE …
#define CX18_DEFAULT_ENC_MPG_BUFSIZE …
#define CX18_DEFAULT_ENC_IDX_BUFSIZE …
#define CX18_DEFAULT_ENC_YUV_BUFSIZE …
#define CX18_DEFAULT_ENC_PCM_BUFSIZE …
#define I2C_CLIENTS_MAX …
#define CX18_DBGFLG_WARN …
#define CX18_DBGFLG_INFO …
#define CX18_DBGFLG_API …
#define CX18_DBGFLG_DMA …
#define CX18_DBGFLG_IOCTL …
#define CX18_DBGFLG_FILE …
#define CX18_DBGFLG_I2C …
#define CX18_DBGFLG_IRQ …
#define CX18_DBGFLG_HIGHVOL …
#define CX18_DEBUG(x, type, fmt, args...) …
#define CX18_DEBUG_WARN(fmt, args...) …
#define CX18_DEBUG_INFO(fmt, args...) …
#define CX18_DEBUG_API(fmt, args...) …
#define CX18_DEBUG_DMA(fmt, args...) …
#define CX18_DEBUG_IOCTL(fmt, args...) …
#define CX18_DEBUG_FILE(fmt, args...) …
#define CX18_DEBUG_I2C(fmt, args...) …
#define CX18_DEBUG_IRQ(fmt, args...) …
#define CX18_DEBUG_HIGH_VOL(x, type, fmt, args...) …
#define CX18_DEBUG_HI_WARN(fmt, args...) …
#define CX18_DEBUG_HI_INFO(fmt, args...) …
#define CX18_DEBUG_HI_API(fmt, args...) …
#define CX18_DEBUG_HI_DMA(fmt, args...) …
#define CX18_DEBUG_HI_IOCTL(fmt, args...) …
#define CX18_DEBUG_HI_FILE(fmt, args...) …
#define CX18_DEBUG_HI_I2C(fmt, args...) …
#define CX18_DEBUG_HI_IRQ(fmt, args...) …
#define CX18_ERR(fmt, args...) …
#define CX18_WARN(fmt, args...) …
#define CX18_INFO(fmt, args...) …
#define CX18_DEBUG_DEV(x, dev, type, fmt, args...) …
#define CX18_DEBUG_WARN_DEV(dev, fmt, args...) …
#define CX18_DEBUG_INFO_DEV(dev, fmt, args...) …
#define CX18_DEBUG_API_DEV(dev, fmt, args...) …
#define CX18_DEBUG_DMA_DEV(dev, fmt, args...) …
#define CX18_DEBUG_IOCTL_DEV(dev, fmt, args...) …
#define CX18_DEBUG_FILE_DEV(dev, fmt, args...) …
#define CX18_DEBUG_I2C_DEV(dev, fmt, args...) …
#define CX18_DEBUG_IRQ_DEV(dev, fmt, args...) …
#define CX18_DEBUG_HIGH_VOL_DEV(x, dev, type, fmt, args...) …
#define CX18_DEBUG_HI_WARN_DEV(dev, fmt, args...) …
#define CX18_DEBUG_HI_INFO_DEV(dev, fmt, args...) …
#define CX18_DEBUG_HI_API_DEV(dev, fmt, args...) …
#define CX18_DEBUG_HI_DMA_DEV(dev, fmt, args...) …
#define CX18_DEBUG_HI_IOCTL_DEV(dev, fmt, args...) …
#define CX18_DEBUG_HI_FILE_DEV(dev, fmt, args...) …
#define CX18_DEBUG_HI_I2C_DEV(dev, fmt, args...) …
#define CX18_DEBUG_HI_IRQ_DEV(dev, fmt, args...) …
#define CX18_ERR_DEV(dev, fmt, args...) …
#define CX18_WARN_DEV(dev, fmt, args...) …
#define CX18_INFO_DEV(dev, fmt, args...) …
extern int cx18_debug;
struct cx18_options { … };
#define CX18_F_M_NEED_SWAP …
#define CX18_F_S_CLAIMED …
#define CX18_F_S_STREAMING …
#define CX18_F_S_INTERNAL_USE …
#define CX18_F_S_STREAMOFF …
#define CX18_F_S_APPL_IO …
#define CX18_F_S_STOPPING …
#define CX18_F_I_LOADED_FW …
#define CX18_F_I_EOS …
#define CX18_F_I_RADIO_USER …
#define CX18_F_I_ENC_PAUSED …
#define CX18_F_I_INITED …
#define CX18_F_I_FAILED …
#define CX18_SLICED_TYPE_TELETEXT_B …
#define CX18_SLICED_TYPE_CAPTION_525 …
#define CX18_SLICED_TYPE_WSS_625 …
#define CX18_SLICED_TYPE_VPS …
#define list_entry_is_past_end(pos, head, member) …
struct cx18_vb2_buffer { … };
struct cx18_buffer { … };
struct cx18_mdl { … };
struct cx18_queue { … };
struct cx18_stream;
struct cx18_dvb { … };
struct cx18;
struct cx18_scb;
#define CX18_MAX_MDL_ACKS …
#define CX18_MAX_IN_WORK_ORDERS …
#define CX18_F_EWO_MB_STALE_UPON_RECEIPT …
#define CX18_F_EWO_MB_STALE_WHILE_PROC …
#define CX18_F_EWO_MB_STALE …
struct cx18_in_work_order { … };
#define CX18_INVALID_TASK_HANDLE …
struct cx18_stream { … };
struct cx18_open_id { … };
static inline struct cx18_open_id *fh2id(struct v4l2_fh *fh)
{ … }
static inline struct cx18_open_id *file2id(struct file *file)
{ … }
struct cx18_card;
#define VBI_ACTIVE_SAMPLES …
#define VBI_HBLANK_SAMPLES_60HZ …
#define VBI_HBLANK_SAMPLES_50HZ …
#define CX18_VBI_FRAMES …
struct vbi_info { … };
struct cx18_i2c_algo_callback_data { … };
#define CX18_MAX_MMIO_WR_RETRIES …
struct cx18 { … };
static inline struct cx18 *to_cx18(struct v4l2_device *v4l2_dev)
{ … }
extern int (*cx18_ext_init)(struct cx18 *);
extern int cx18_first_minor;
int cx18_msleep_timeout(unsigned int msecs, int intr);
struct tveeprom;
void cx18_read_eeprom(struct cx18 *cx, struct tveeprom *tv);
int cx18_init_on_first_open(struct cx18 *cx);
static inline int cx18_raw_vbi(const struct cx18 *cx)
{ … }
#define cx18_call_hw(cx, hw, o, f, args...) …
#define cx18_call_all(cx, o, f, args...) …
#define cx18_call_hw_err(cx, hw, o, f, args...) …
#define cx18_call_all_err(cx, o, f, args...) …
#endif