V4L(907) Em28xx cleanups and fixes
PATCH 7/20 V4L(907) Em28xx cleanups and fixes
From: Mauro Carvalho Chehab <[email protected]>
- Em28xx cleanups and fixes.
- Some cleanups and audio amux adjust.
- em28xx will allways try, by default, the biggest size alt.
- Fixes audio mux code.
- Fixes some logs.
- Adds support for digital output for WinTV USB2 board.
Signed-off-by Mauro Carvalho Chehab <[email protected]>
-----------------
drivers/media/video/em28xx/em28xx-cards.c | 15 ++- drivers/media/video/em28xx/em28xx-core.c | 17 --- drivers/media/video/em28xx/em28xx-video.c | 107 ++++++++++++---------- drivers/media/video/msp3400.c | 142 +++++++++++++++++++++++++++--- include/linux/videodev2.h | 1 5 files changed, 201 insertions(+), 81 deletions(-)
drivers/media/video/em28xx/em28xx-cards.c +10 -5
@@ -128,7 +128,7 @@ struct em28xx_board em28xx_boards[] = { .input = {{ .type = EM28XX_VMUX_TELEVISION, .vmux = 0, - .amux = 0, + .amux = 6, },{ .type = EM28XX_VMUX_SVIDEO, .vmux = 2,
@@ -261,9 +261,11 @@ void em28xx_card_setup(struct em28xx *de/* request some modules */ if (dev->model ==EM2820_BOARD_HAUPPAUGE_WINTV_USB_2 ) {struct tveeprom tv; +struct v4l2_audioout ao;#ifdef CONFIG_MODULES request_module ("tveeprom" );request_module ("ir-kbd-i2c" ); +request_module ("msp3400" );#endif /* Call first TVeeprom */
@@ -273,10 +275,13 @@ void em28xx_card_setup(struct em28xx *de dev->tuner_type= tv.tuner_type;if (tv.audio_processor ==AUDIO_CHIP_MSP34XX ) { dev->has_msp34xx=1 ; - }else dev->has_msp34xx=0 ; -em28xx_write_regs_req (dev,0x06 ,0x00 ,"\x40" ,1 );// Serial Bus Frequency Select Register -em28xx_write_regs_req (dev,0x0f ,0x00 ,"\x87" ,1 );// XCLK Frequency Select Register -em28xx_write_regs_req (dev,0x88 ,0x0d ,"\xd0" ,1 ); +memset (&ao,0 ,sizeof (ao)); + + ao.index=2 ; + ao.mode=V4L2_AUDMODE_32BITS ; +em28xx_i2c_call_clients (dev,VIDIOC_S_AUDOUT , &ao); + }else + dev->has_msp34xx=0 ; } }
drivers/media/video/em28xx/em28xx-core.c +3 -14
@@ -797,20 +797,9 @@ int em28xx_set_alternate(struct em28xx * dev->alt = alt;if (dev->alt ==0 ) {int i; -if (dev->is_em2800){/* always use the max packet size for em2800 based devices */ -for (i=0 ;i<EM28XX_MAX_ALT ; i++) -if (dev->alt_max_pkt_size[i]>dev->alt_max_pkt_size[dev->alt]) - dev->alt=i; - }else { -unsigned int min_pkt_size = dev->field_size /137 ;/* FIXME: empiric magic number */ -em28xx_coredbg ("minimum isoc packet size: %u" , min_pkt_size); - dev->alt =7 ; -for (i =1 ; i <EM28XX_MAX_ALT ; i +=2 )/* FIXME: skip even alternate: why do they not work? */ -if (dev->alt_max_pkt_size[i] >= min_pkt_size) { - dev->alt = i; -break ; - } - } +for (i=0 ;i<EM28XX_MAX_ALT ; i++) +if (dev->alt_max_pkt_size[i]>dev->alt_max_pkt_size[dev->alt]) + dev->alt=i; }if (dev->alt != prev_alt) {
drivers/media/video/em28xx/em28xx-video.c +58 -49
277 lines not on this page · raw message
drivers/media/video/msp3400.c +129 -13
222 lines not on this page · raw message
include/linux/videodev2.h +1 -0
@@ -885,6 +885,7 @@ struct v4l2_audio/* Flags for the 'mode' field */ #define V4L2_AUDMODE_AVL 0x00001 +#define V4L2_AUDMODE_32BITS 0x00002struct v4l2_audioout {
_______________________________________________________
Yahoo! Acesso Gr�tis: Internet r�pida e gr�tis.
Instale o discador agora!
http://br.acesso.yahoo.com/