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