Re: patch(bttv-0.7.102): Radio fixes #2 for msp34xxD

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]



On Sun, Jan 26, 2003 at 11:51:24PM +0100, Gunther Mayer wrote:
> Gerd Knorr wrote:
> > On Mon, Jan 20, 2003 at 12:33:02AM +0100, Gunther Mayer wrote:
> > 
> >>Hi,
> >>this patch includes the latest "make CARDLIST" and Cards patch, plus
> >>- new card: Pace TV & Radio Card
> >>- fix radio for some MSP34xx cards, e.g. Voodoo200, Pace Tv & Radio
> >>  It didn't work here for both "simple" settings:
> >>   - simple=0: Volume was disabled in msp_wake_thread, but 3400c_thread 
> >>   failed to enable
> > 
> > 
> > But the fix is wrong:  It is the job of the thread to enable the volume
> > when it is done with the tv audio carrier scan (because we want to do
> > the carrier scan muted, otherwise channel switches will cause crazy
> > sounds).  Patch below.
> 
> OK, works fine for simple=0.

In the version of bttv of today, it works without specifying simple=0,
but I am not able to tune a station adequate, I mostly get the sound of
2 stations at the same time (and possibly not at the right frequencies).

> 
> > 
> > 
> >>   - simple=1: Besides correcting routing via scart towards decoding 
> >>   ourselves,
> >>                this needed "omit reset" and "set mode et al." for 
> >>                3410_thread, too.
> > 
> > 
> > Same issue.  If the thread doesn't manage to setup the radio it should
> > be fixed there and not workarounded somewhere else.
> 
> New patch below fixes radio for 34xxD chips in the simple=1 case.
> We falsely used Demodulator Short Programming for FM radio,
> which does only exist in 34xxG.
> 
> -
> Gunther
> 
> 
> 
> 

> --- bttv-0.7.102/driver/msp3400.c	Fri Jan  3 18:23:12 2003
> +++ bttv07102/driver/msp3400.c	Sun Jan 26 23:42:08 2003
> @@ -154,6 +154,7 @@
>  		{ client->addr, 0,        3, write },
>  		{ client->addr, I2C_M_RD, 2, read  },
>  	};
> +	dprintk("msp3400c_reset\n");
>  	
>  	if ( (1 != i2c_transfer(client->adapter,&reset[0],1)) ||
>  	     (1 != i2c_transfer(client->adapter,&reset[1],1)) ||
> @@ -781,8 +782,12 @@
>  			goto done;
>  
>  		if (VIDEO_MODE_RADIO == msp->norm ||
> -		    MSP_MODE_EXTERN  == msp->mode)
> -			continue;  /* nothing to do */
> +		    MSP_MODE_EXTERN  == msp->mode) {
> +			/* no carrier scan, just unmute */
> +			msp3400c_setvolume(client, msp->muted,
> +					   msp->left, msp->right);
> +			continue;
> +		}
>  	
>  		msp->active = 1;
>  
> @@ -1071,7 +1076,7 @@
>  			break;
>  		case VIDEO_MODE_NTSC:  /* BTSC */
>  			mode = 0x2003;
> -			std  = 0x0020;
> +			std  = 0x0020;  // only for msp34xxG
>  			break;
>  		case VIDEO_MODE_SECAM: 
>  			mode = 0x0003;
> @@ -1079,14 +1084,14 @@
>  			break;
>  		case VIDEO_MODE_RADIO: 
>  			mode = 0x0003;
> -			std  = 0x0040;
> +			std  = 0x0040; // only for msp34xxG
>  			break;
>  		default:
>  			mode = 0x0003;
>  			std  = 1;
>  			break;
>  		}
> -		msp3400c_write(client, I2C_MSP3400C_DEM, 0x30, mode);
> +		msp3400c_write(client, I2C_MSP3400C_DEM, 0x30, mode); // msp34xxG only
>  		msp3400c_write(client, I2C_MSP3400C_DEM, 0x20, std);
>  
>  		if (debug) {
> @@ -1175,10 +1180,33 @@
>  			msp->nicam_on = 0;
>  			msp->watch_stereo = 0;
>  			/* scart routing */
> -			msp3400c_set_scart(client,SCART_IN2,0);
> -			msp3400c_write(client,I2C_MSP3400C_DFP, 0x08, 0x0220);
> -			msp3400c_write(client,I2C_MSP3400C_DFP, 0x09, 0x0220);
> -			msp3400c_write(client,I2C_MSP3400C_DFP, 0x0b, 0x0220);
> +			msp3400c_set_scart(client,SCART_IN2,0); // e.g. Hauppauge 37284 
> +
> +			/* Radio Sound Route has different wiring options:
> +			   (a) 0x0020: Radio decoded by MSP chip  (Radio IF from Tuner connected to ANA_IN1)
> +                           (b) 0x0220: Radio routed through MSP   (Radio AF from Tuner connected to SCART_IN2)
> +                           (c) other : Radio routed through other (Radio AF from Tuner connected to hef4052 mux)
> +			   
> +                           Note: There is another code path for "simple=0" which needs the same consideration !
> +                           Note: For WinTV option (c) is default (gpio=1 for radio), you need gpio=0 for msp route.
> +                           Cards:
> +                                Pace TV & Radio card: (a) // has no hef4052
> +                                Voodoo 200 / Voodoo TV/FM: (a)  // mt2032 has no Radio AF decoder, no 4052
> +                                WinTV 37284 Theater: (a,b,c)
> +                                WinTV 61334 Rev.B: (a,b,c)
> +                                Pinnacle PCTV Pro MT2032: ??
> +                                Pinnacle PCTV Pro Temic tuner: ??
> +                                miro PCTV pro (with msp+radio daughterboard): ??  
> +			   Conclusion: Option (a)/(c) works best for all boards*/
> +			msp3400c_write(client,I2C_MSP3400C_DFP, 0x08, 0x0020);
> +			msp3400c_write(client,I2C_MSP3400C_DFP, 0x09, 0x0020);
> +			msp3400c_write(client,I2C_MSP3400C_DFP, 0x0b, 0x0020);
> +
> +			// for 34xxD chips we must set radio manually (34xxG short programming see above)
> +			// (hopefully this doesn't harm msp34xxG)
> +			msp3400c_setmode(client,MSP_MODE_FM_RADIO);
> +                        msp3400c_setcarrier(client, MSP_CARRIER(10.7),MSP_CARRIER(10.7));
> +
>  			break;
>  		case 0x0003:
>  			msp->mode   = MSP_MODE_FM_TERRA;

Attachment: pgpBQj7tJlpf8.pgp
Description: PGP signature


[Index of Archives]     [Linux DVB]     [Video Disk Recorder]     [Asterisk]     [Photo]     [DCCP]     [Netdev]     [Xorg]     [Util Linux NG]     [Xfree86]     [Free Photo Albums]     [Fedora Users]     [Fedora Women]     [ALSA Users]     [ALSA Devel]     [Linux USB]

Powered by Linux