em28xx.h (0d4a42f6bd298e826620585e766a154ab460617a) em28xx.h (4159d01bea38ee82f6e49383b7e73e328c118755)
1/*
2 em28xx.h - driver for Empia EM2800/EM2820/2840 USB video capture devices
3
4 Copyright (C) 2005 Markus Rechberger <mrechberger@gmail.com>
5 Ludovico Cavedon <cavedon@sssup.it>
6 Mauro Carvalho Chehab <mchehab@infradead.org>
7 Copyright (C) 2012 Frank Schäfer <fschaefer.oss@googlemail.com>
8

--- 28 unchanged lines hidden (view full) ---

37#include <media/v4l2-fh.h>
38#include <media/ir-kbd-i2c.h>
39#include <media/rc-core.h>
40#include "tuner-xc2028.h"
41#include "xc5000.h"
42#include "em28xx-reg.h"
43
44/* Boards supported by driver */
1/*
2 em28xx.h - driver for Empia EM2800/EM2820/2840 USB video capture devices
3
4 Copyright (C) 2005 Markus Rechberger <mrechberger@gmail.com>
5 Ludovico Cavedon <cavedon@sssup.it>
6 Mauro Carvalho Chehab <mchehab@infradead.org>
7 Copyright (C) 2012 Frank Schäfer <fschaefer.oss@googlemail.com>
8

--- 28 unchanged lines hidden (view full) ---

37#include <media/v4l2-fh.h>
38#include <media/ir-kbd-i2c.h>
39#include <media/rc-core.h>
40#include "tuner-xc2028.h"
41#include "xc5000.h"
42#include "em28xx-reg.h"
43
44/* Boards supported by driver */
45#define EM2800_BOARD_UNKNOWN 0
46#define EM2820_BOARD_UNKNOWN 1
47#define EM2820_BOARD_TERRATEC_CINERGY_250 2
48#define EM2820_BOARD_PINNACLE_USB_2 3
49#define EM2820_BOARD_HAUPPAUGE_WINTV_USB_2 4
50#define EM2820_BOARD_MSI_VOX_USB_2 5
51#define EM2800_BOARD_TERRATEC_CINERGY_200 6
52#define EM2800_BOARD_LEADTEK_WINFAST_USBII 7
53#define EM2800_BOARD_KWORLD_USB2800 8
54#define EM2820_BOARD_PINNACLE_DVC_90 9
55#define EM2880_BOARD_HAUPPAUGE_WINTV_HVR_900 10
56#define EM2880_BOARD_TERRATEC_HYBRID_XS 11
57#define EM2820_BOARD_KWORLD_PVRTV2800RF 12
58#define EM2880_BOARD_TERRATEC_PRODIGY_XS 13
59#define EM2820_BOARD_PROLINK_PLAYTV_USB2 14
60#define EM2800_BOARD_VGEAR_POCKETTV 15
61#define EM2883_BOARD_HAUPPAUGE_WINTV_HVR_950 16
62#define EM2880_BOARD_PINNACLE_PCTV_HD_PRO 17
63#define EM2880_BOARD_HAUPPAUGE_WINTV_HVR_900_R2 18
64#define EM2860_BOARD_SAA711X_REFERENCE_DESIGN 19
65#define EM2880_BOARD_AMD_ATI_TV_WONDER_HD_600 20
66#define EM2800_BOARD_GRABBEEX_USB2800 21
45#define EM2800_BOARD_UNKNOWN 0
46#define EM2820_BOARD_UNKNOWN 1
47#define EM2820_BOARD_TERRATEC_CINERGY_250 2
48#define EM2820_BOARD_PINNACLE_USB_2 3
49#define EM2820_BOARD_HAUPPAUGE_WINTV_USB_2 4
50#define EM2820_BOARD_MSI_VOX_USB_2 5
51#define EM2800_BOARD_TERRATEC_CINERGY_200 6
52#define EM2800_BOARD_LEADTEK_WINFAST_USBII 7
53#define EM2800_BOARD_KWORLD_USB2800 8
54#define EM2820_BOARD_PINNACLE_DVC_90 9
55#define EM2880_BOARD_HAUPPAUGE_WINTV_HVR_900 10
56#define EM2880_BOARD_TERRATEC_HYBRID_XS 11
57#define EM2820_BOARD_KWORLD_PVRTV2800RF 12
58#define EM2880_BOARD_TERRATEC_PRODIGY_XS 13
59#define EM2820_BOARD_PROLINK_PLAYTV_USB2 14
60#define EM2800_BOARD_VGEAR_POCKETTV 15
61#define EM2883_BOARD_HAUPPAUGE_WINTV_HVR_950 16
62#define EM2880_BOARD_PINNACLE_PCTV_HD_PRO 17
63#define EM2880_BOARD_HAUPPAUGE_WINTV_HVR_900_R2 18
64#define EM2860_BOARD_SAA711X_REFERENCE_DESIGN 19
65#define EM2880_BOARD_AMD_ATI_TV_WONDER_HD_600 20
66#define EM2800_BOARD_GRABBEEX_USB2800 21
67#define EM2750_BOARD_UNKNOWN 22
68#define EM2750_BOARD_DLCW_130 23
69#define EM2820_BOARD_DLINK_USB_TV 24
70#define EM2820_BOARD_GADMEI_UTV310 25
71#define EM2820_BOARD_HERCULES_SMART_TV_USB2 26
72#define EM2820_BOARD_PINNACLE_USB_2_FM1216ME 27
73#define EM2820_BOARD_LEADTEK_WINFAST_USBII_DELUXE 28
74#define EM2860_BOARD_TVP5150_REFERENCE_DESIGN 29

--- 19 unchanged lines hidden (view full) ---

94#define EM2880_BOARD_MSI_DIGIVOX_AD 49
95#define EM2880_BOARD_MSI_DIGIVOX_AD_II 50
96#define EM2880_BOARD_TERRATEC_HYBRID_XS_FR 51
97#define EM2881_BOARD_DNT_DA2_HYBRID 52
98#define EM2881_BOARD_PINNACLE_HYBRID_PRO 53
99#define EM2882_BOARD_KWORLD_VS_DVBT 54
100#define EM2882_BOARD_TERRATEC_HYBRID_XS 55
101#define EM2882_BOARD_PINNACLE_HYBRID_PRO_330E 56
67#define EM2750_BOARD_UNKNOWN 22
68#define EM2750_BOARD_DLCW_130 23
69#define EM2820_BOARD_DLINK_USB_TV 24
70#define EM2820_BOARD_GADMEI_UTV310 25
71#define EM2820_BOARD_HERCULES_SMART_TV_USB2 26
72#define EM2820_BOARD_PINNACLE_USB_2_FM1216ME 27
73#define EM2820_BOARD_LEADTEK_WINFAST_USBII_DELUXE 28
74#define EM2860_BOARD_TVP5150_REFERENCE_DESIGN 29

--- 19 unchanged lines hidden (view full) ---

94#define EM2880_BOARD_MSI_DIGIVOX_AD 49
95#define EM2880_BOARD_MSI_DIGIVOX_AD_II 50
96#define EM2880_BOARD_TERRATEC_HYBRID_XS_FR 51
97#define EM2881_BOARD_DNT_DA2_HYBRID 52
98#define EM2881_BOARD_PINNACLE_HYBRID_PRO 53
99#define EM2882_BOARD_KWORLD_VS_DVBT 54
100#define EM2882_BOARD_TERRATEC_HYBRID_XS 55
101#define EM2882_BOARD_PINNACLE_HYBRID_PRO_330E 56
102#define EM2883_BOARD_KWORLD_HYBRID_330U 57
102#define EM2883_BOARD_KWORLD_HYBRID_330U 57
103#define EM2820_BOARD_COMPRO_VIDEOMATE_FORYOU 58
104#define EM2883_BOARD_HAUPPAUGE_WINTV_HVR_850 60
105#define EM2820_BOARD_PROLINK_PLAYTV_BOX4_USB2 61
106#define EM2820_BOARD_GADMEI_TVR200 62
103#define EM2820_BOARD_COMPRO_VIDEOMATE_FORYOU 58
104#define EM2883_BOARD_HAUPPAUGE_WINTV_HVR_850 60
105#define EM2820_BOARD_PROLINK_PLAYTV_BOX4_USB2 61
106#define EM2820_BOARD_GADMEI_TVR200 62
107#define EM2860_BOARD_KAIOMY_TVNPC_U2 63
108#define EM2860_BOARD_EASYCAP 64
107#define EM2860_BOARD_KAIOMY_TVNPC_U2 63
108#define EM2860_BOARD_EASYCAP 64
109#define EM2820_BOARD_IODATA_GVMVP_SZ 65
110#define EM2880_BOARD_EMPIRE_DUAL_TV 66
111#define EM2860_BOARD_TERRATEC_GRABBY 67
112#define EM2860_BOARD_TERRATEC_AV350 68
113#define EM2882_BOARD_KWORLD_ATSC_315U 69
114#define EM2882_BOARD_EVGA_INDTUBE 70
109#define EM2820_BOARD_IODATA_GVMVP_SZ 65
110#define EM2880_BOARD_EMPIRE_DUAL_TV 66
111#define EM2860_BOARD_TERRATEC_GRABBY 67
112#define EM2860_BOARD_TERRATEC_AV350 68
113#define EM2882_BOARD_KWORLD_ATSC_315U 69
114#define EM2882_BOARD_EVGA_INDTUBE 70
115#define EM2820_BOARD_SILVERCREST_WEBCAM 71
116#define EM2861_BOARD_GADMEI_UTV330PLUS 72
117#define EM2870_BOARD_REDDO_DVB_C_USB_BOX 73
115#define EM2820_BOARD_SILVERCREST_WEBCAM 71
116#define EM2861_BOARD_GADMEI_UTV330PLUS 72
117#define EM2870_BOARD_REDDO_DVB_C_USB_BOX 73
118#define EM2800_BOARD_VC211A 74
119#define EM2882_BOARD_DIKOM_DK300 75
120#define EM2870_BOARD_KWORLD_A340 76
121#define EM2874_BOARD_LEADERSHIP_ISDBT 77
118#define EM2800_BOARD_VC211A 74
119#define EM2882_BOARD_DIKOM_DK300 75
120#define EM2870_BOARD_KWORLD_A340 76
121#define EM2874_BOARD_LEADERSHIP_ISDBT 77
122#define EM28174_BOARD_PCTV_290E 78
122#define EM28174_BOARD_PCTV_290E 78
123#define EM2884_BOARD_TERRATEC_H5 79
123#define EM2884_BOARD_TERRATEC_H5 79
124#define EM28174_BOARD_PCTV_460E 80
124#define EM28174_BOARD_PCTV_460E 80
125#define EM2884_BOARD_HAUPPAUGE_WINTV_HVR_930C 81
126#define EM2884_BOARD_CINERGY_HTC_STICK 82
125#define EM2884_BOARD_HAUPPAUGE_WINTV_HVR_930C 81
126#define EM2884_BOARD_CINERGY_HTC_STICK 82
127#define EM2860_BOARD_HT_VIDBOX_NW03 83
128#define EM2874_BOARD_MAXMEDIA_UB425_TC 84
129#define EM2884_BOARD_PCTV_510E 85
130#define EM2884_BOARD_PCTV_520E 86
127#define EM2860_BOARD_HT_VIDBOX_NW03 83
128#define EM2874_BOARD_MAXMEDIA_UB425_TC 84
129#define EM2884_BOARD_PCTV_510E 85
130#define EM2884_BOARD_PCTV_520E 86
131#define EM2884_BOARD_TERRATEC_HTC_USB_XS 87
131#define EM2884_BOARD_TERRATEC_HTC_USB_XS 87
132#define EM2884_BOARD_C3TECH_DIGITAL_DUO 88
132
133/* Limits minimum and default number of buffers */
134#define EM28XX_MIN_BUF 4
135#define EM28XX_DEF_BUF 8
136
137/*Limits the max URB message size */
138#define URB_MAX_CTRL_SIZE 80
139

--- 12 unchanged lines hidden (view full) ---

152#define EM28XX_NUM_FRAMES 5
153/* number of frames that get used for v4l2_read() */
154#define EM28XX_NUM_READ_FRAMES 2
155
156/* number of buffers for isoc transfers */
157#define EM28XX_NUM_BUFS 5
158#define EM28XX_DVB_NUM_BUFS 5
159
133
134/* Limits minimum and default number of buffers */
135#define EM28XX_MIN_BUF 4
136#define EM28XX_DEF_BUF 8
137
138/*Limits the max URB message size */
139#define URB_MAX_CTRL_SIZE 80
140

--- 12 unchanged lines hidden (view full) ---

153#define EM28XX_NUM_FRAMES 5
154/* number of frames that get used for v4l2_read() */
155#define EM28XX_NUM_READ_FRAMES 2
156
157/* number of buffers for isoc transfers */
158#define EM28XX_NUM_BUFS 5
159#define EM28XX_DVB_NUM_BUFS 5
160
161/* max number of I2C buses on em28xx devices */
162#define NUM_I2C_BUSES 2
163
160/* isoc transfers: number of packets for each buffer
161 windows requests only 64 packets .. so we better do the same
162 this is what I found out for all alternate numbers there!
163 */
164#define EM28XX_NUM_ISOC_PACKETS 64
165#define EM28XX_DVB_NUM_ISOC_PACKETS 64
166
167/* bulk transfers: transfer buffer size = packet size * packet multiplier
168 USB 2.0 spec says bulk packet size is always 512 bytes
169 */
170#define EM28XX_BULK_PACKET_MULTIPLIER 384
171#define EM28XX_DVB_BULK_PACKET_MULTIPLIER 384
172
173#define EM28XX_INTERLACED_DEFAULT 1
174
164/* isoc transfers: number of packets for each buffer
165 windows requests only 64 packets .. so we better do the same
166 this is what I found out for all alternate numbers there!
167 */
168#define EM28XX_NUM_ISOC_PACKETS 64
169#define EM28XX_DVB_NUM_ISOC_PACKETS 64
170
171/* bulk transfers: transfer buffer size = packet size * packet multiplier
172 USB 2.0 spec says bulk packet size is always 512 bytes
173 */
174#define EM28XX_BULK_PACKET_MULTIPLIER 384
175#define EM28XX_DVB_BULK_PACKET_MULTIPLIER 384
176
177#define EM28XX_INTERLACED_DEFAULT 1
178
175/*
176#define (use usbview if you want to get the other alternate number infos)
177#define
178#define alternate number 2
179#define Endpoint Address: 82
180 Direction: in
181 Attribute: 1
182 Type: Isoc
183 Max Packet Size: 1448
184 Interval: 125us
185
186 alternate number 7
187
188 Endpoint Address: 82
189 Direction: in
190 Attribute: 1
191 Type: Isoc
192 Max Packet Size: 3072
193 Interval: 125us
194*/
195
196/* time in msecs to wait for i2c writes to finish */
197#define EM2800_I2C_XFER_TIMEOUT 20
198
199enum em28xx_mode {
200 EM28XX_SUSPEND,
201 EM28XX_ANALOG_MODE,
202 EM28XX_DIGITAL_MODE,
203};

--- 184 unchanged lines hidden (view full) ---

388 EM28XX_TVAUDIO,
389};
390
391struct em28xx_board {
392 char *name;
393 int vchannels;
394 int tuner_type;
395 int tuner_addr;
179/* time in msecs to wait for i2c writes to finish */
180#define EM2800_I2C_XFER_TIMEOUT 20
181
182enum em28xx_mode {
183 EM28XX_SUSPEND,
184 EM28XX_ANALOG_MODE,
185 EM28XX_DIGITAL_MODE,
186};

--- 184 unchanged lines hidden (view full) ---

371 EM28XX_TVAUDIO,
372};
373
374struct em28xx_board {
375 char *name;
376 int vchannels;
377 int tuner_type;
378 int tuner_addr;
379 unsigned def_i2c_bus; /* Default I2C bus */
396
397 /* i2c flags */
398 unsigned int tda9887_conf;
399
400 /* GPIO sequences */
401 struct em28xx_reg_seq *dvb_gpio;
402 struct em28xx_reg_seq *suspend_gpio;
403 struct em28xx_reg_seq *tuner_gpio;

--- 17 unchanged lines hidden (view full) ---

421 enum em28xx_adecoder adecoder;
422
423 struct em28xx_input input[MAX_EM28XX_INPUT];
424 struct em28xx_input radio;
425 char *ir_codes;
426};
427
428struct em28xx_eeprom {
380
381 /* i2c flags */
382 unsigned int tda9887_conf;
383
384 /* GPIO sequences */
385 struct em28xx_reg_seq *dvb_gpio;
386 struct em28xx_reg_seq *suspend_gpio;
387 struct em28xx_reg_seq *tuner_gpio;

--- 17 unchanged lines hidden (view full) ---

405 enum em28xx_adecoder adecoder;
406
407 struct em28xx_input input[MAX_EM28XX_INPUT];
408 struct em28xx_input radio;
409 char *ir_codes;
410};
411
412struct em28xx_eeprom {
429 u32 id; /* 0x9567eb1a */
430 u16 vendor_ID;
431 u16 product_ID;
413 u8 id[4]; /* 1a eb 67 95 */
414 __le16 vendor_ID;
415 __le16 product_ID;
432
416
433 u16 chip_conf;
417 __le16 chip_conf;
434
418
435 u16 board_conf;
419 __le16 board_conf;
436
420
437 u16 string1, string2, string3;
421 __le16 string1, string2, string3;
438
439 u8 string_idx_table;
440};
441
442#define EM28XX_AUDIO_BUFS 5
443#define EM28XX_NUM_AUDIO_PACKETS 64
444#define EM28XX_AUDIO_MAX_PACKET_SIZE 196 /* static value */
445#define EM28XX_CAPTURE_STREAM_EN 1

--- 26 unchanged lines hidden (view full) ---

472
473struct em28xx_fh {
474 struct v4l2_fh fh;
475 struct em28xx *dev;
476
477 enum v4l2_buf_type type;
478};
479
422
423 u8 string_idx_table;
424};
425
426#define EM28XX_AUDIO_BUFS 5
427#define EM28XX_NUM_AUDIO_PACKETS 64
428#define EM28XX_AUDIO_MAX_PACKET_SIZE 196 /* static value */
429#define EM28XX_CAPTURE_STREAM_EN 1

--- 26 unchanged lines hidden (view full) ---

456
457struct em28xx_fh {
458 struct v4l2_fh fh;
459 struct em28xx *dev;
460
461 enum v4l2_buf_type type;
462};
463
464struct em28xx_i2c_bus {
465 struct em28xx *dev;
466
467 unsigned bus;
468};
469
470
480/* main device struct */
481struct em28xx {
482 /* generic device properties */
483 char name[30]; /* name (including minor) of the device */
484 int model; /* index in the device_data struct */
485 int devno; /* marks the number of this device */
486 enum em28xx_chip_id chip_id;
487
488 unsigned char disconnected:1; /* device has been diconnected */
489
490 int audio_ifnum;
491
492 struct v4l2_device v4l2_dev;
493 struct v4l2_ctrl_handler ctrl_handler;
471/* main device struct */
472struct em28xx {
473 /* generic device properties */
474 char name[30]; /* name (including minor) of the device */
475 int model; /* index in the device_data struct */
476 int devno; /* marks the number of this device */
477 enum em28xx_chip_id chip_id;
478
479 unsigned char disconnected:1; /* device has been diconnected */
480
481 int audio_ifnum;
482
483 struct v4l2_device v4l2_dev;
484 struct v4l2_ctrl_handler ctrl_handler;
494 /* provides ac97 mute and volume overrides */
495 struct v4l2_ctrl_handler ac97_ctrl_handler;
496 struct em28xx_board board;
497
498 /* Webcam specific fields */
499 enum em28xx_sensor em28xx_sensor;
500 int sensor_xres, sensor_yres;
501 int sensor_xtal;
502
503 /* Progressive (non-interlaced) mode */
504 int progressive;
505
506 /* Vinmode/Vinctl used at the driver */
507 int vinmode, vinctl;
508
509 unsigned int has_audio_class:1;
510 unsigned int has_alsa_audio:1;
511 unsigned int is_audio_only:1;
512
513 /* Controls audio streaming */
485 struct em28xx_board board;
486
487 /* Webcam specific fields */
488 enum em28xx_sensor em28xx_sensor;
489 int sensor_xres, sensor_yres;
490 int sensor_xtal;
491
492 /* Progressive (non-interlaced) mode */
493 int progressive;
494
495 /* Vinmode/Vinctl used at the driver */
496 int vinmode, vinctl;
497
498 unsigned int has_audio_class:1;
499 unsigned int has_alsa_audio:1;
500 unsigned int is_audio_only:1;
501
502 /* Controls audio streaming */
514 struct work_struct wq_trigger; /* Trigger to start/stop audio for alsa module */
515 atomic_t stream_started; /* stream should be running if true */
503 struct work_struct wq_trigger; /* Trigger to start/stop audio for alsa module */
504 atomic_t stream_started; /* stream should be running if true */
516
517 struct em28xx_fmt *format;
518
519 struct em28xx_IR *ir;
520
521 /* Some older em28xx chips needs a waiting time after writing */
522 unsigned int wait_after_write;
523
524 struct list_head devlist;
525
526 u32 i2s_speed; /* I2S speed for audio digital stream */
527
528 struct em28xx_audio_mode audio_mode;
529
530 int tuner_type; /* type of the tuner */
531 int tuner_addr; /* tuner address */
532 int tda9887_conf;
505
506 struct em28xx_fmt *format;
507
508 struct em28xx_IR *ir;
509
510 /* Some older em28xx chips needs a waiting time after writing */
511 unsigned int wait_after_write;
512
513 struct list_head devlist;
514
515 u32 i2s_speed; /* I2S speed for audio digital stream */
516
517 struct em28xx_audio_mode audio_mode;
518
519 int tuner_type; /* type of the tuner */
520 int tuner_addr; /* tuner address */
521 int tda9887_conf;
522
533 /* i2c i/o */
523 /* i2c i/o */
534 struct i2c_adapter i2c_adap;
535 struct i2c_client i2c_client;
524 struct i2c_adapter i2c_adap[NUM_I2C_BUSES];
525 struct i2c_client i2c_client[NUM_I2C_BUSES];
526 struct em28xx_i2c_bus i2c_bus[NUM_I2C_BUSES];
527
528 unsigned char eeprom_addrwidth_16bit:1;
529 unsigned def_i2c_bus; /* Default I2C bus */
530 unsigned cur_i2c_bus; /* Current I2C bus */
531 struct rt_mutex i2c_bus_lock;
532
536 /* video for linux */
537 int users; /* user count for exclusive use */
538 int streaming_users; /* Number of actively streaming users */
539 struct video_device *vdev; /* video for linux device struct */
540 v4l2_std_id norm; /* selected tv norm */
541 int ctl_freq; /* selected frequency */
542 unsigned int ctl_input; /* selected input */
543 unsigned int ctl_ainput;/* selected audio input */

--- 35 unchanged lines hidden (view full) ---

579 struct vb2_queue vb_vidq;
580 struct vb2_queue vb_vbiq;
581 struct mutex vb_queue_lock;
582 struct mutex vb_vbi_queue_lock;
583
584 /* resources in use */
585 unsigned int resources;
586
533 /* video for linux */
534 int users; /* user count for exclusive use */
535 int streaming_users; /* Number of actively streaming users */
536 struct video_device *vdev; /* video for linux device struct */
537 v4l2_std_id norm; /* selected tv norm */
538 int ctl_freq; /* selected frequency */
539 unsigned int ctl_input; /* selected input */
540 unsigned int ctl_ainput;/* selected audio input */

--- 35 unchanged lines hidden (view full) ---

576 struct vb2_queue vb_vidq;
577 struct vb2_queue vb_vbiq;
578 struct mutex vb_queue_lock;
579 struct mutex vb_vbi_queue_lock;
580
581 /* resources in use */
582 unsigned int resources;
583
587 unsigned char eedata[256];
584 /* eeprom content */
585 u8 *eedata;
586 u16 eedata_len;
588
589 /* Isoc control struct */
590 struct em28xx_dmaqueue vidq;
591 struct em28xx_dmaqueue vbiq;
592 struct em28xx_usb_ctl usb_ctl;
593 spinlock_t slock;
594
595 unsigned int field_count;
596 unsigned int vbi_field_count;
597
598 /* usb transfer */
599 struct usb_device *udev; /* the usb device */
600 u8 analog_ep_isoc; /* address of isoc endpoint for analog */
601 u8 analog_ep_bulk; /* address of bulk endpoint for analog */
602 u8 dvb_ep_isoc; /* address of isoc endpoint for DVB */
587
588 /* Isoc control struct */
589 struct em28xx_dmaqueue vidq;
590 struct em28xx_dmaqueue vbiq;
591 struct em28xx_usb_ctl usb_ctl;
592 spinlock_t slock;
593
594 unsigned int field_count;
595 unsigned int vbi_field_count;
596
597 /* usb transfer */
598 struct usb_device *udev; /* the usb device */
599 u8 analog_ep_isoc; /* address of isoc endpoint for analog */
600 u8 analog_ep_bulk; /* address of bulk endpoint for analog */
601 u8 dvb_ep_isoc; /* address of isoc endpoint for DVB */
603 u8 dvb_ep_bulk; /* address of bulk endpoint for DVC */
602 u8 dvb_ep_bulk; /* address of bulk endpoint for DVB */
604 int alt; /* alternate setting */
605 int max_pkt_size; /* max packet size of the selected ep at alt */
606 int packet_multiplier; /* multiplier for wMaxPacketSize, used for
607 URB buffer size definition */
608 int num_alt; /* number of alternative settings */
609 unsigned int *alt_max_pkt_size_isoc; /* array of isoc wMaxPacketSize */
610 unsigned int analog_xfer_bulk:1; /* use bulk instead of isoc
611 transfers for analog */

--- 34 unchanged lines hidden (view full) ---

646 struct list_head next;
647 char *name;
648 int id;
649 int (*init)(struct em28xx *);
650 int (*fini)(struct em28xx *);
651};
652
653/* Provided by em28xx-i2c.c */
603 int alt; /* alternate setting */
604 int max_pkt_size; /* max packet size of the selected ep at alt */
605 int packet_multiplier; /* multiplier for wMaxPacketSize, used for
606 URB buffer size definition */
607 int num_alt; /* number of alternative settings */
608 unsigned int *alt_max_pkt_size_isoc; /* array of isoc wMaxPacketSize */
609 unsigned int analog_xfer_bulk:1; /* use bulk instead of isoc
610 transfers for analog */

--- 34 unchanged lines hidden (view full) ---

645 struct list_head next;
646 char *name;
647 int id;
648 int (*init)(struct em28xx *);
649 int (*fini)(struct em28xx *);
650};
651
652/* Provided by em28xx-i2c.c */
654void em28xx_do_i2c_scan(struct em28xx *dev);
655int em28xx_i2c_register(struct em28xx *dev);
656int em28xx_i2c_unregister(struct em28xx *dev);
653void em28xx_do_i2c_scan(struct em28xx *dev, unsigned bus);
654int em28xx_i2c_register(struct em28xx *dev, unsigned bus);
655int em28xx_i2c_unregister(struct em28xx *dev, unsigned bus);
657
658/* Provided by em28xx-core.c */
656
657/* Provided by em28xx-core.c */
659
660u32 em28xx_request_buffers(struct em28xx *dev, u32 count);
661void em28xx_queue_unusedframes(struct em28xx *dev);
662void em28xx_release_buffers(struct em28xx *dev);
663
664int em28xx_read_reg_req_len(struct em28xx *dev, u8 req, u16 reg,
665 char *buf, int len);
666int em28xx_read_reg_req(struct em28xx *dev, u8 req, u16 reg);
667int em28xx_read_reg(struct em28xx *dev, u16 reg);
668int em28xx_write_regs_req(struct em28xx *dev, u8 req, u16 reg, char *buf,
669 int len);
670int em28xx_write_regs(struct em28xx *dev, u16 reg, char *buf, int len);
671int em28xx_write_reg(struct em28xx *dev, u16 reg, u8 val);

--- 16 unchanged lines hidden (view full) ---

688 int num_bufs, int max_pkt_size, int packet_multiplier);
689int em28xx_init_usb_xfer(struct em28xx *dev, enum em28xx_mode mode,
690 int xfer_bulk,
691 int num_bufs, int max_pkt_size, int packet_multiplier,
692 int (*urb_data_copy)
693 (struct em28xx *dev, struct urb *urb));
694void em28xx_uninit_usb_xfer(struct em28xx *dev, enum em28xx_mode mode);
695void em28xx_stop_urbs(struct em28xx *dev);
658int em28xx_read_reg_req_len(struct em28xx *dev, u8 req, u16 reg,
659 char *buf, int len);
660int em28xx_read_reg_req(struct em28xx *dev, u8 req, u16 reg);
661int em28xx_read_reg(struct em28xx *dev, u16 reg);
662int em28xx_write_regs_req(struct em28xx *dev, u8 req, u16 reg, char *buf,
663 int len);
664int em28xx_write_regs(struct em28xx *dev, u16 reg, char *buf, int len);
665int em28xx_write_reg(struct em28xx *dev, u16 reg, u8 val);

--- 16 unchanged lines hidden (view full) ---

682 int num_bufs, int max_pkt_size, int packet_multiplier);
683int em28xx_init_usb_xfer(struct em28xx *dev, enum em28xx_mode mode,
684 int xfer_bulk,
685 int num_bufs, int max_pkt_size, int packet_multiplier,
686 int (*urb_data_copy)
687 (struct em28xx *dev, struct urb *urb));
688void em28xx_uninit_usb_xfer(struct em28xx *dev, enum em28xx_mode mode);
689void em28xx_stop_urbs(struct em28xx *dev);
696int em28xx_isoc_dvb_max_packetsize(struct em28xx *dev);
697int em28xx_set_mode(struct em28xx *dev, enum em28xx_mode set_mode);
698int em28xx_gpio_set(struct em28xx *dev, struct em28xx_reg_seq *gpio);
699void em28xx_wake_i2c(struct em28xx *dev);
700int em28xx_register_extension(struct em28xx_ops *dev);
701void em28xx_unregister_extension(struct em28xx_ops *dev);
702void em28xx_init_extension(struct em28xx *dev);
703void em28xx_close_extension(struct em28xx *dev);
704
705/* Provided by em28xx-video.c */
706int em28xx_vb2_setup(struct em28xx *dev);
707int em28xx_register_analog_devices(struct em28xx *dev);
708void em28xx_release_analog_resources(struct em28xx *dev);
709void em28xx_ctrl_notify(struct v4l2_ctrl *ctrl, void *priv);
710int em28xx_start_analog_streaming(struct vb2_queue *vq, unsigned int count);
711int em28xx_stop_vbi_streaming(struct vb2_queue *vq);
712extern const struct v4l2_ctrl_ops em28xx_ctrl_ops;
713
714/* Provided by em28xx-cards.c */
690int em28xx_set_mode(struct em28xx *dev, enum em28xx_mode set_mode);
691int em28xx_gpio_set(struct em28xx *dev, struct em28xx_reg_seq *gpio);
692void em28xx_wake_i2c(struct em28xx *dev);
693int em28xx_register_extension(struct em28xx_ops *dev);
694void em28xx_unregister_extension(struct em28xx_ops *dev);
695void em28xx_init_extension(struct em28xx *dev);
696void em28xx_close_extension(struct em28xx *dev);
697
698/* Provided by em28xx-video.c */
699int em28xx_vb2_setup(struct em28xx *dev);
700int em28xx_register_analog_devices(struct em28xx *dev);
701void em28xx_release_analog_resources(struct em28xx *dev);
702void em28xx_ctrl_notify(struct v4l2_ctrl *ctrl, void *priv);
703int em28xx_start_analog_streaming(struct vb2_queue *vq, unsigned int count);
704int em28xx_stop_vbi_streaming(struct vb2_queue *vq);
705extern const struct v4l2_ctrl_ops em28xx_ctrl_ops;
706
707/* Provided by em28xx-cards.c */
715extern int em2800_variant_detect(struct usb_device *udev, int model);
716extern struct em28xx_board em28xx_boards[];
717extern struct usb_device_id em28xx_id_table[];
708extern struct em28xx_board em28xx_boards[];
709extern struct usb_device_id em28xx_id_table[];
718extern const unsigned int em28xx_bcount;
719int em28xx_tuner_callback(void *ptr, int component, int command, int arg);
720void em28xx_release_resources(struct em28xx *dev);
721
722/* Provided by em28xx-vbi.c */
723extern struct vb2_ops em28xx_vbi_qops;
724
725/* printk macros */
726

--- 12 unchanged lines hidden (view full) ---

739 dev->name , ##arg); } while (0)
740
741static inline int em28xx_compression_disable(struct em28xx *dev)
742{
743 /* side effect of disabling scaler and mixer */
744 return em28xx_write_reg(dev, EM28XX_R26_COMPR, 0x00);
745}
746
710int em28xx_tuner_callback(void *ptr, int component, int command, int arg);
711void em28xx_release_resources(struct em28xx *dev);
712
713/* Provided by em28xx-vbi.c */
714extern struct vb2_ops em28xx_vbi_qops;
715
716/* printk macros */
717

--- 12 unchanged lines hidden (view full) ---

730 dev->name , ##arg); } while (0)
731
732static inline int em28xx_compression_disable(struct em28xx *dev)
733{
734 /* side effect of disabling scaler and mixer */
735 return em28xx_write_reg(dev, EM28XX_R26_COMPR, 0x00);
736}
737
747static inline int em28xx_contrast_get(struct em28xx *dev)
748{
749 return em28xx_read_reg(dev, EM28XX_R20_YGAIN) & 0x1f;
750}
751
752static inline int em28xx_brightness_get(struct em28xx *dev)
753{
754 return em28xx_read_reg(dev, EM28XX_R21_YOFFSET);
755}
756
757static inline int em28xx_saturation_get(struct em28xx *dev)
758{
759 return em28xx_read_reg(dev, EM28XX_R22_UVGAIN) & 0x1f;
760}
761
762static inline int em28xx_u_balance_get(struct em28xx *dev)
763{
764 return em28xx_read_reg(dev, EM28XX_R23_UOFFSET);
765}
766
767static inline int em28xx_v_balance_get(struct em28xx *dev)
768{
769 return em28xx_read_reg(dev, EM28XX_R24_VOFFSET);
770}
771
772static inline int em28xx_gamma_get(struct em28xx *dev)
773{
774 return em28xx_read_reg(dev, EM28XX_R14_GAMMA) & 0x3f;
775}
776
777static inline int em28xx_contrast_set(struct em28xx *dev, s32 val)
778{
779 u8 tmp = (u8) val;
780 return em28xx_write_regs(dev, EM28XX_R20_YGAIN, &tmp, 1);
781}
782
783static inline int em28xx_brightness_set(struct em28xx *dev, s32 val)
784{
785 u8 tmp = (u8) val;
786 return em28xx_write_regs(dev, EM28XX_R21_YOFFSET, &tmp, 1);
787}
788
789static inline int em28xx_saturation_set(struct em28xx *dev, s32 val)
790{
791 u8 tmp = (u8) val;
792 return em28xx_write_regs(dev, EM28XX_R22_UVGAIN, &tmp, 1);
793}
794
795static inline int em28xx_u_balance_set(struct em28xx *dev, s32 val)
796{
797 u8 tmp = (u8) val;
798 return em28xx_write_regs(dev, EM28XX_R23_UOFFSET, &tmp, 1);
799}
800
801static inline int em28xx_v_balance_set(struct em28xx *dev, s32 val)
802{
803 u8 tmp = (u8) val;
804 return em28xx_write_regs(dev, EM28XX_R24_VOFFSET, &tmp, 1);
805}
806
807static inline int em28xx_gamma_set(struct em28xx *dev, s32 val)
808{
809 u8 tmp = (u8) val;
810 return em28xx_write_regs(dev, EM28XX_R14_GAMMA, &tmp, 1);
811}
812
813/*FIXME: maxw should be dependent of alt mode */
814static inline unsigned int norm_maxw(struct em28xx *dev)
815{
816 if (dev->board.is_webcam)
817 return dev->sensor_xres;
818
819 if (dev->board.max_range_640_480)
820 return 640;

--- 15 unchanged lines hidden ---
738/*FIXME: maxw should be dependent of alt mode */
739static inline unsigned int norm_maxw(struct em28xx *dev)
740{
741 if (dev->board.is_webcam)
742 return dev->sensor_xres;
743
744 if (dev->board.max_range_640_480)
745 return 640;

--- 15 unchanged lines hidden ---