⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 em8300.h

📁 linux TV 源码
💻 H
字号:
#ifndef LINUX_EM8300_H#define LINUX_EM8300_H#include "dvbdev.h"#include <linux/dvb/video.h>#include <linux/dvb/audio.h>#include <linux/dvb/demux.h>#include <linux/dvb/dmx.h>#include <linux/dvb/ca.h>#include <linux/dvb/osd.h>#include "dvb_filter.h"#include "dvb_demux.h"#include "dmxdev.h"typedef struct {	void *ucode;	int ucode_size;} em8300_microcode_t;typedef struct {	int reg;	int val;	int microcode_register;} em8300_register_t;typedef struct {	int brightness;	int contrast;	int saturation;} em8300_bcs_t;typedef struct {	int cal_mode;	int arg;	int arg2;	int result;	int result2;} em8300_overlay_calibrate_t;typedef struct {	int xpos, ypos;	int width, height;} em8300_overlay_window_t;typedef struct {	int xsize, ysize;} em8300_overlay_screen_t;typedef struct {	int attribute;	int value;} em8300_attribute_t;typedef struct {	int color;	int contrast;	int top;	int bottom;	int left;	int right;} em8300_button_t;#define MAX_UCODE_REGISTER 110#define EM8300_IOCTL_INIT       _IOW('C',0,em8300_microcode_t)#define EM8300_IOCTL_READREG    _IOWR('C',1,em8300_register_t)#define EM8300_IOCTL_WRITEREG   _IOW('C',2,em8300_register_t)#define EM8300_IOCTL_GETSTATUS  _IOR('C',3,char[1024])#define EM8300_IOCTL_SETBCS	_IOW('C',4,em8300_bcs_t)#define EM8300_IOCTL_GETBCS	_IOR('C',4,em8300_bcs_t)#define EM8300_IOCTL_SET_ASPECTRATIO _IOW('C',5,int)#define EM8300_IOCTL_GET_ASPECTRATIO _IOR('C',5,int)#define EM8300_IOCTL_SET_VIDEOMODE _IOW('C',6,int)#define EM8300_IOCTL_SET_PLAYMODE _IOW('C',7,int)#define EM8300_IOCTL_SET_AUDIOMODE _IOW('C',8,int)#define EM8300_IOCTL_GET_AUDIOMODE _IOR('C',8,int)#define EM8300_IOCTL_SET_SPUMODE _IOW('C',9,int)#define EM8300_IOCTL_OVERLAY_CALIBRATE _IOWR('C',10,em8300_overlay_calibrate_t)#define EM8300_IOCTL_OVERLAY_SETMODE _IOW('C',11,int)#define EM8300_IOCTL_OVERLAY_SETWINDOW _IOWR('C',12,em8300_overlay_window_t)#define EM8300_IOCTL_OVERLAY_SETSCREEN _IOWR('C',13,em8300_overlay_screen_t)#define EM8300_IOCTL_OVERLAY_GET_ATTRIBUTE _IOR('C',14,em8300_attribute_t)#define EM8300_IOCTL_OVERLAY_SET_ATTRIBUTE _IOW('C',14,em8300_attribute_t)#define EM8300_IOCTL_OVERLAY_SIGNALMODE _IOW('C',15,em8300_attribute_t)#define EM8300_IOCTL_SCR_GET _IOR('C',16,unsigned)#define EM8300_IOCTL_SCR_SET _IOW('C',16,unsigned)#define EM8300_IOCTL_SCR_GETSPEED _IOR('C',17,unsigned)#define EM8300_IOCTL_SCR_SETSPEED _IOW('C',17,unsigned) #define EM8300_OVERLAY_SIGNAL_ONLY 1#define EM8300_OVERLAY_SIGNAL_WITH_VGA 2#define EM8300_OVERLAY_VGA_ONLY 3#define EM8300_IOCTL_VIDEO_SETPTS 1#define EM8300_IOCTL_VIDEO_GETSCR _IOR('C',2,unsigned)#define EM8300_IOCTL_VIDEO_SETSCR _IOW('C',2,unsigned)#define EM8300_IOCTL_SPU_SETPTS 1#define EM8300_IOCTL_SPU_SETPALETTE 2#define EM8300_IOCTL_SPU_BUTTON 3#define EM8300_IOCTL_AUDIO_SETPTS _SIOWR('P', 30, int)#define EM8300_ASPECTRATIO_4_3 0#define EM8300_ASPECTRATIO_16_9 1#define EM8300_ASPECTRATIO_LAST 1#define EM8300_VIDEOMODE_PAL 0#define EM8300_VIDEOMODE_PAL60 1#define EM8300_VIDEOMODE_NTSC 2#define EM8300_VIDEOMODE_LAST 2#ifndef EM8300_VIDEOMODE_DEFAULT#define EM8300_VIDEOMODE_DEFAULT EM8300_VIDEOMODE_NTSC#endif#define EM8300_AUDIOMODE_ANALOG 0#define EM8300_AUDIOMODE_DIGITALPCM 1#define EM8300_AUDIOMODE_DIGITALAC3 2#ifndef EM8300_AUDIOMODE_DEFAULT#define EM8300_AUDIOMODE_DEFAULT EM8300_AUDIOMODE_ANALOG#endif#define EM8300_SPUMODE_OFF 0#define EM8300_SPUMODE_ON 1#define EM8300_PLAYMODE_STOPPED         0#define EM8300_PLAYMODE_PAUSED          1#define EM8300_PLAYMODE_SLOWFORWARDS    2#define EM8300_PLAYMODE_SLOWBACKWARDS   3#define EM8300_PLAYMODE_SINGLESTEP      4#define EM8300_PLAYMODE_PLAY            5#define EM8300_PLAYMODE_REVERSEPLAY     6#define EM8300_PLAYMODE_SCAN            7#define EM8300_PLAYMODE_FRAMEBUF	8#define EM8300_OVERLAY_MODE_OFF 0#define EM8300_OVERLAY_MODE_RECTANGLE 1#define EM8300_OVERLAY_MODE_OVERLAY 2#define EM8300_OVERLAY_CALMODE_XOFFSET 1#define EM8300_OVERLAY_CALMODE_YOFFSET 2#define EM8300_OVERLAY_CALMODE_XCORRECTION 3#define EM8300_OVERLAY_CALMODE_COLOR 4#define EM9010_ATTRIBUTE_XCORR 1#define EM9010_ATTRIBUTE_XOFFSET 2#define EM9010_ATTRIBUTE_YOFFSET 3#define EM9010_ATTRIBUTE_JITTER 4#define EM9010_ATTRIBUTE_STABILITY 5#define EM9010_ATTRIBUTE_KEYCOLOR_UPPER 6#define EM9010_ATTRIBUTE_KEYCOLOR_LOWER 7#define EM9010_ATTRIBUTE_MAX 7#define EM8300_SUBDEVICE_CONTROL 0#define EM8300_SUBDEVICE_VIDEO 1#define EM8300_SUBDEVICE_AUDIO 2#define EM8300_SUBDEVICE_SUBPICTURE 3#ifndef PCI_VENDOR_ID_SIGMADESIGNS#define PCI_VENDOR_ID_SIGMADESIGNS 0x1105#define PCI_DEVICE_ID_SIGMADESIGNS_EM8300 0x8300#endif#define CLOCKGEN_SAMPFREQ_MASK 0xc0#define CLOCKGEN_SAMPFREQ_66 0xc0#define CLOCKGEN_SAMPFREQ_48 0x40#define CLOCKGEN_SAMPFREQ_44 0x80#define CLOCKGEN_SAMPFREQ_32 0x00#define CLOCKGEN_OUTMASK 0x30#define CLOCKGEN_DIGITALOUT 0x10#define CLOCKGEN_ANALOGOUT 0x20#define CLOCKGEN_MODEMASK 0x0f#define CLOCKGEN_OVERLAYMODE_1 0x07#define CLOCKGEN_TVMODE_1 0x0b#define CLOCKGEN_OVERLAYMODE_2 0x04#define CLOCKGEN_TVMODE_2 0x02#define MVCOMMAND_STOP 0x0#define MVCOMMAND_DISPLAYBUFINFO 0x11#define MVCOMMAND_10 0x10#define MVCOMMAND_PAUSE 1#define MVCOMMAND_START 3#define MACOMMAND_STOP 0x0#define MACOMMAND_PAUSE 0x1#define MACOMMAND_PLAY 0x2#define IRQSTATUS_VIDEO_VBL 0x10#define IRQSTATUS_VIDEO_FIFO 0x2#define IRQSTATUS_AUDIO_FIFO 0x8#define ENCODER_UNKNOWN 0#define ENCODER_ADV7175 1 #define ENCODER_ADV7170 2#define ENCODER_BT865   3#ifdef __KERNEL__#define EM8300_MAX 4#define EM8300_MAJOR 121#define EM8300_LOGNAME "em8300"#define DICOM_MODE_PAL 1#define DICOM_MODE_NTSC 2#define DICOM_MODE_PAL60 3struct dicom_s {	int luma;	int chroma;	int frametop;	int framebottom;	int frameleft;	int frameright;	int visibletop;	int visiblebottom;	int visibleleft;	int visibleright;	int tvout;};struct displaybuffer_info_s {	int xsize;	int ysize;	int xsize2;	int flag1,flag2;	int buffer1;	int buffer2;	int unk_present;	int unknown1;	int unknown2;	int unknown3;};struct em8300_audio_s {	int channels;	int format;	int speed;	int slotsize;	int enable_bits;};#define VIDIOCSPANSCAN          _IOW('v',  BASE_VIDIOCPRIVATE+8, int)#define VID_NONE_PREF           0x00    /* No aspect ration processing preferred */#define VID_PAN_SCAN_PREF       0x01    /* Pan and Scan Display preferred */#define VID_VERT_COMP_PREF      0x02    /* Vertical compression display preferred */#define VID_VC_AND_PS_PREF      0x03    /* PanScan and vertical Compression if allowed */#define VID_CENTRE_CUT_PREF     0x05    /* PanScan with zero vector */struct em8300_s{	char name[40];		int chip_revision;	int pci_revision;		int inuse[4];	int ucodeloaded;		struct pci_dev *dev;	ulong adr;	volatile unsigned *mem;	ulong memsize;		int playmode;		/* Fifos */	struct fifo_s *mvfifo;	struct fifo_s *mafifo;	struct fifo_s *spfifo;	int mtrr_reg;		/* DICOM */	int dicom_vertoffset;	int dicom_horizoffset;	int dicom_brightness;	int dicom_contrast;	int dicom_saturation;	int dicom_tvout;	struct displaybuffer_info_s dbuf_info;		/* I2C */	int i2c_pin_reg;	int i2c_oe_reg;		/* different between revision 1 and revision 2 boards */	int mystery_divisor;		/* I2C bus 1*/	struct i2c_algo_bit_data i2c_data_1;	struct i2c_adapter i2c_ops_1;		/* I2C bus 2*/	struct i2c_algo_bit_data i2c_data_2;	struct i2c_adapter i2c_ops_2;		/* I2C clients */	int encoder_type;	struct i2c_client *encoder;	struct i2c_client *eeprom;		/* Microcode registers */	unsigned ucode_regs[MAX_UCODE_REGISTER];	int var_ucode_reg1; /* These are registers that differ */	int var_ucode_reg2; /* between versions 1 and 2 of the board */	int var_ucode_reg3; /* " */		/* Interrupt */	unsigned irqmask;		/* Clockgenerator */	int clockgen;	int clockgen_overlaymode;	int clockgen_tvmode;		/* Timing measurement */	struct timeval tv,last_status_time;	long irqtimediff;	int irqcount;	int frames;	int scr;		/* Audio */	struct em8300_audio_s audio;	int audio_mode;        int pcm_mode;	int dsp_num;/* remove these when audio sync goes away */	int audio_sync;	int audio_ptsvalid;	uint32_t audio_pts;	uint32_t audio_lastpts;	uint32_t audio_lag;	uint32_t last_calcbuf;  /* the following used to be static in em8300_audio_write() */	int rollover;	uint32_t basepts;	uint32_t rollover_pts;	uint32_t rollover_lastpts;	uint32_t rollover_startpts;	uint32_t lastpts_count;/* */	int dword_DB4;	unsigned char byte_D90[24];		/* Video */	int video_mode;	int video_playmode;	int aspect_ratio;	uint32_t video_pts;	uint32_t video_lastpts;	int video_ptsvalid,video_offset,video_count;	int video_ptsfifo_ptr;	wait_queue_head_t video_ptsfifo_wait;	int video_ptsfifo_waiting;	int video_first;	int var_video_value;		/* Sub Picture */	int sp_pts,sp_ptsvalid,sp_count;	int sp_ptsfifo_ptr;	wait_queue_head_t sp_ptsfifo_wait;	int sp_ptsfifo_waiting;	int sp_mode;		int linecounter;		/* EM9010 overlay processor */	int overlay_enabled;	int overlay_mode;	int overlay_gamma_enable;	int overlay_xres;	int overlay_yres;	int overlay_frame_xpos;	int overlay_frame_ypos;	int overlay_frame_width;	int overlay_frame_height;	int overlay_a[EM9010_ATTRIBUTE_MAX+1];	int overlay_double_y;	int overlay_xcorr_default;	int overlay_70;	int overlay_dword_24bb8;};#ifdef USE_DVB#define DVB_DEVS_MAX 16typedef struct dvb_devs_s {        int num;          int tab[DVB_DEVS_MAX];        int max_users[DVB_DEVS_MAX];        int max_writers[DVB_DEVS_MAX];} dvb_devs_t;struct dvb_stuff{        struct dvb_device       dvb_dev;	struct em8300_s         *em8300;        dvb_adapter_t       *dvb_adapter;        dvb_device_t        *video_dev;        dvb_device_t        *audio_dev;	        dvb_demux_t             demux;        dvb_devs_t *dvb_devs;        int users[DVB_DEVS_MAX];        int writers[DVB_DEVS_MAX];        uint16_t                lastaattr;        dmxdev_t                dmxdev;        boolean                 video_blank;        struct video_status      videostate;        struct audio_status      audiostate;        int                     dvb_registered;        char                    demux_id[16];        dmx_frontend_t          mem_frontend;        struct ipack_s          tsa,tsv;         struct ipack_s          pesa,pesv;         u8                      *kbuf[2];        int audio_id;        int audio_extid;};void dvb_unregister(struct dvb_stuff *card);int dvb_register(struct dvb_stuff *card);#endif#define TIMEDIFF(a,b) a.tv_usec - b.tv_usec + \	    1000000 * (a.tv_sec - b.tv_sec)/*  Prototypes*//* em8300_i2c.c */int em8300_i2c_init(struct em8300_s *em);void em8300_i2c_exit(struct em8300_s *em);void em8300_clockgen_write(struct em8300_s *em, int abyte);void em9010_write(struct em8300_s *em, int reg, int data);int em9010_read(struct em8300_s *em, int reg);int em9010_read16(struct em8300_s *em, int reg);void em9010_write16(struct em8300_s *em, int reg, int value);/* em8300_audio.c */int em8300_audio_ioctl(struct em8300_s *em,unsigned int cmd, unsigned long arg);int em8300_audio_open(struct em8300_s *em);int em8300_audio_release(struct em8300_s *em);int em8300_audio_setup(struct em8300_s *em);int em8300_audio_write(struct em8300_s *em, const char * buf,		       size_t count, loff_t *ppos);int mpegaudio_command(struct em8300_s *em, int cmd);/* em8300_ucode.c */int em8300_ucode_upload(struct em8300_s *em, void *ucode_user, int ucode_size);/* em8300_misc.c */int em8300_setregblock(struct em8300_s *em, int offset, int val, int len);int em8300_writeregblock(struct em8300_s *em, int offset, unsigned *buf, int len);int em8300_waitfor(struct em8300_s *em, int reg, int val, int mask);int em8300_waitfor_not(struct em8300_s *em, int reg, int val, int mask);/* em8300_dicom.c */void em8300_dicom_setBCS(struct em8300_s *em, int brightness, int contrast, int saturation);void em8300_dicom_enable(struct em8300_s *em);void em8300_dicom_disable(struct em8300_s *em);int em8300_dicom_update(struct em8300_s *em);void em8300_dicom_init(struct em8300_s *em);int em8300_dicom_get_dbufinfo(struct em8300_s *em);void em8300_dicom_fill_dispbuffers(struct em8300_s *em, int xpos, int ypos, int xsize,				  int ysize, unsigned int pat1, unsigned int pat2);/* em8300_video.c */void em8300_video_open(struct em8300_s *em);int em8300_video_setplaymode(struct em8300_s *em, int mode);int em8300_video_setup(struct em8300_s *em);int em8300_video_release(struct em8300_s *em);void em8300_video_setspeed(struct em8300_s *em, int speed);int em8300_video_write(struct em8300_s *em, const char * buf,		       size_t count, loff_t *ppos);int em8300_video_ioctl(struct em8300_s *em, unsigned int cmd, unsigned long arg);void em8300_video_check_ptsfifo(struct em8300_s *em);/* em8300_spu.c */int em8300_spu_write(struct em8300_s *em, const char * buf,		       size_t count, loff_t *ppos);int em8300_spu_open(struct em8300_s *em);int em8300_spu_ioctl(struct em8300_s *em, unsigned int cmd, unsigned long arg);int em8300_spu_init(struct em8300_s *em);void em8300_spu_check_ptsfifo(struct em8300_s *em);int em8300_ioctl_setspumode(struct em8300_s *em, int mode);/* em8300_ioctl.c */int em8300_control_ioctl(struct em8300_s *em, int cmd, unsigned long arg);int em8300_ioctl_setvideomode(struct em8300_s *em, int mode);int em8300_ioctl_setaspectratio(struct em8300_s *em, int ratio);void em8300_ioctl_getstatus(struct em8300_s *em, char *usermsg);int em8300_ioctl_init(struct em8300_s *em, em8300_microcode_t *useruc);void em8300_ioctl_enable_videoout(struct em8300_s *em, int mode);int em8300_ioctl_setplaymode(struct em8300_s *em, int mode);int em8300_ioctl_setaudiomode(struct em8300_s *em, int mode);int em8300_ioctl_getaudiomode(struct em8300_s *em, int mode);int em8300_ioctl_overlay_calibrate(struct em8300_s *em, em8300_overlay_calibrate_t *c);int em8300_ioctl_overlay_setwindow(struct em8300_s *em,em8300_overlay_window_t *w);int em8300_ioctl_overlay_setscreen(struct em8300_s *em,em8300_overlay_screen_t *s);int em8300_ioctl_overlay_setmode(struct em8300_s *em,int val);/* em9010.c */int em9010_cabledetect(struct em8300_s *em);int em9010_calibrate_xoffset(struct em8300_s *em);int em9010_calibrate_yoffset(struct em8300_s *em);int em9010_init(struct em8300_s *em);int em9010_overlay_set_signalmode(struct em8300_s *em, int val);int em9010_overlay_update(struct em8300_s *em);int em9010_overlay_set_res(struct em8300_s *em, int xres, int yres);void sub_4288c(struct em8300_s *em, int pa, int pb, int pc, int pd, int pe, int pf,	       int pg, int ph);int em9010_get_attribute(struct em8300_s *em, int attribute);int em9010_set_attribute(struct em8300_s *em, int attribute, int value);#endif /* __KERNEL__ */#endif /* LINUX_EM8300_H */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -