Skip to contentSkip to conversation

V4L(907) Em28xx cleanups and fixes

PATCH New [email protected] 1 participant 1 message Nov 7, 2005 Media (V4L/DVB)

lore
Share & tools
lore
#0 lore raw

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.

-----------------

 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		0x00002
 
 struct v4l2_audioout
 {

_______________________________________________________
Yahoo! Acesso Gr�tis: Internet r�pida e gr�tis.
Instale o discador agora!
http://br.acesso.yahoo.com/