#ifndef __SOLO6X10_H
#define __SOLO6X10_H
#include <linux/pci.h>
#include <linux/i2c.h>
#include <linux/mutex.h>
#include <linux/list.h>
#include <linux/wait.h>
#include <linux/stringify.h>
#include <linux/io.h>
#include <linux/atomic.h>
#include <linux/slab.h>
#include <linux/videodev2.h>
#include <linux/gpio/driver.h>
#include <media/v4l2-dev.h>
#include <media/v4l2-device.h>
#include <media/v4l2-ctrls.h>
#include <media/videobuf2-v4l2.h>
#include "solo6x10-regs.h"
#ifndef PCI_VENDOR_ID_SOFTLOGIC
#define PCI_VENDOR_ID_SOFTLOGIC …
#define PCI_DEVICE_ID_SOLO6010 …
#define PCI_DEVICE_ID_SOLO6110 …
#endif
#ifndef PCI_VENDOR_ID_BLUECHERRY
#define PCI_VENDOR_ID_BLUECHERRY …
#define PCI_DEVICE_ID_NEUSOLO_4 …
#define PCI_DEVICE_ID_NEUSOLO_9 …
#define PCI_DEVICE_ID_NEUSOLO_16 …
#define PCI_DEVICE_ID_BC_SOLO_4 …
#define PCI_DEVICE_ID_BC_SOLO_9 …
#define PCI_DEVICE_ID_BC_SOLO_16 …
#define PCI_DEVICE_ID_BC_6110_4 …
#define PCI_DEVICE_ID_BC_6110_8 …
#define PCI_DEVICE_ID_BC_6110_16 …
#endif
#define SOLO_DEV_6010 …
#define SOLO_DEV_6110 …
#define SOLO6X10_NAME …
#define SOLO_MAX_CHANNELS …
#define SOLO6X10_VERSION …
#define SOLO_I2C_ADAPTERS …
#define SOLO_I2C_TW …
#define SOLO_I2C_SAA …
#define SOLO_NR_P2M …
#define SOLO_NR_P2M_DESC …
#define SOLO_P2M_DESC_SIZE …
#define SOLO_ENC_MODE_CIF …
#define SOLO_ENC_MODE_HD1 …
#define SOLO_ENC_MODE_D1 …
#define SOLO_DEFAULT_QP …
#define SOLO_CID_CUSTOM_BASE …
#define V4L2_CID_MOTION_TRACE …
#define V4L2_CID_OSD_TEXT …
#define SOLO_MOTION_SZ …
enum SOLO_I2C_STATE { … };
struct solo_p2m_desc { … };
struct solo_p2m_dev { … };
#define OSD_TEXT_MAX …
struct solo_vb2_buf { … };
enum solo_enc_types { … };
struct solo_enc_dev { … };
struct solo_dev { … };
static inline u32 solo_reg_read(struct solo_dev *solo_dev, int reg)
{ … }
static inline void solo_reg_write(struct solo_dev *solo_dev, int reg,
u32 data)
{ … }
static inline void solo_irq_on(struct solo_dev *dev, u32 mask)
{ … }
static inline void solo_irq_off(struct solo_dev *dev, u32 mask)
{ … }
int solo_disp_init(struct solo_dev *solo_dev);
void solo_disp_exit(struct solo_dev *solo_dev);
int solo_gpio_init(struct solo_dev *solo_dev);
void solo_gpio_exit(struct solo_dev *solo_dev);
int solo_i2c_init(struct solo_dev *solo_dev);
void solo_i2c_exit(struct solo_dev *solo_dev);
int solo_p2m_init(struct solo_dev *solo_dev);
void solo_p2m_exit(struct solo_dev *solo_dev);
int solo_v4l2_init(struct solo_dev *solo_dev, unsigned nr);
void solo_v4l2_exit(struct solo_dev *solo_dev);
int solo_enc_init(struct solo_dev *solo_dev);
void solo_enc_exit(struct solo_dev *solo_dev);
int solo_enc_v4l2_init(struct solo_dev *solo_dev, unsigned nr);
void solo_enc_v4l2_exit(struct solo_dev *solo_dev);
int solo_g723_init(struct solo_dev *solo_dev);
void solo_g723_exit(struct solo_dev *solo_dev);
int solo_i2c_isr(struct solo_dev *solo_dev);
void solo_p2m_isr(struct solo_dev *solo_dev, int id);
void solo_p2m_error_isr(struct solo_dev *solo_dev);
void solo_enc_v4l2_isr(struct solo_dev *solo_dev);
void solo_g723_isr(struct solo_dev *solo_dev);
void solo_motion_isr(struct solo_dev *solo_dev);
void solo_video_in_isr(struct solo_dev *solo_dev);
u8 solo_i2c_readbyte(struct solo_dev *solo_dev, int id, u8 addr, u8 off);
void solo_i2c_writebyte(struct solo_dev *solo_dev, int id, u8 addr, u8 off,
u8 data);
int solo_p2m_dma_t(struct solo_dev *solo_dev, int wr,
dma_addr_t dma_addr, u32 ext_addr, u32 size,
int repeat, u32 ext_size);
int solo_p2m_dma(struct solo_dev *solo_dev, int wr,
void *sys_addr, u32 ext_addr, u32 size,
int repeat, u32 ext_size);
void solo_p2m_fill_desc(struct solo_p2m_desc *desc, int wr,
dma_addr_t dma_addr, u32 ext_addr, u32 size,
int repeat, u32 ext_size);
int solo_p2m_dma_desc(struct solo_dev *solo_dev,
struct solo_p2m_desc *desc, dma_addr_t desc_dma,
int desc_cnt);
int solo_set_video_type(struct solo_dev *solo_dev, bool is_50hz);
void solo_update_mode(struct solo_enc_dev *solo_enc);
int solo_set_motion_threshold(struct solo_dev *solo_dev, u8 ch, u16 val);
int solo_set_motion_block(struct solo_dev *solo_dev, u8 ch,
const u16 *thresholds);
#define SOLO_DEF_MOT_THRESH …
int solo_osd_print(struct solo_enc_dev *solo_enc);
unsigned int solo_eeprom_ewen(struct solo_dev *solo_dev, int w_en);
__be16 solo_eeprom_read(struct solo_dev *solo_dev, int loc);
int solo_eeprom_write(struct solo_dev *solo_dev, int loc,
__be16 data);
void solo_s_jpeg_qp(struct solo_dev *solo_dev, unsigned int ch,
unsigned int qp);
int solo_g_jpeg_qp(struct solo_dev *solo_dev, unsigned int ch);
#define CHK_FLAGS(v, flags) …
#endif