[linux-dvb] Philips TUV1236D/U was Re: Support for Kworld ATSC 110 tuner

CityK CityK at rogers.com
Fri Dec 2 18:46:56 CET 2005


hermann pitton wrote:
> Am Donnerstag, den 01.12.2005, 13:33 -0500 schrieb CityK:
>   
>> Dwaine Garden wrote:
>>     
>>> I have wondering if this card is supported.   I tried kernel 2.6.13 
>>> and a no go.
>>>
>>> 0000:00:0b.0 Multimedia controller: Philips Semiconductors SAA7133 
>>> Audio+video broadcast decoder (rev f0)
>>>
>>> Here is the kernel output...
>>>
>>> saa7130/34: v4l2 driver version 0.2.14 loaded
>>> Nov 30 23:53:44 mythtv kernel: ACPI: PCI Interrupt 0000:00:09.0[A] -> 
>>> Link [LNKB] -> GSI 11 (level, low) -> IR$
>>> Nov 30 23:53:44 mythtv kernel: saa7133[0]: found at 0000:00:09.0, rev: 
>>> 240, irq: 11, latency: 32, mmio: 0xdfff$
>>> Nov 30 23:53:44 mythtv kernel: saa7133[0]: subsystem: 17de:7350, 
>>> board: UNKNOWN/GENERIC [card=0,autodetected]
>>> Nov 30 23:53:44 mythtv kernel: saa7133[0]: board init: gpio is 100
>>> Nov 30 23:53:44 mythtv kernel: saa7133[0]: dsp access wait timeout 
>>> [bit=WRR]
>>> Nov 30 23:53:44 mythtv last message repeated 2 times
>>> Nov 30 23:53:44 mythtv kernel: saa7133[0]: i2c eeprom 00: de 17 50 73 
>>> ff ff ff ff ff ff ff ff ff ff ff ff
>>> Nov 30 23:53:44 mythtv kernel: saa7133[0]: i2c eeprom 10: ff ff ff ff 
>>> ff ff ff ff ff ff ff ff ff ff ff ff
>>> Nov 30 23:53:44 mythtv kernel: saa7133[0]: i2c eeprom 20: ff ff ff ff 
>>> ff ff ff ff ff ff ff ff ff ff ff ff
>>> Nov 30 23:53:44 mythtv kernel: saa7133[0]: i2c eeprom 30: ff ff ff ff 
>>> ff ff ff ff ff ff ff ff ff ff ff ff
>>> Nov 30 23:53:44 mythtv kernel: saa7133[0]: registered device video0 
>>> [v4l2]
>>> Nov 30 23:53:44 mythtv kernel: saa7133[0]: registered device vbi0
>>> bttv: driver version 0.9.16 loaded
>>> Nov 30 23:53:44 mythtv kernel: bttv: using 8 buffers with 2080k (520 
>>> pages) each for capture
>>> Nov 30 23:53:44 mythtv kernel: bt878: AUDIO driver version 0.0.0 loaded
>>> Nov 30 23:53:44 mythtv kernel: saa7146: register extension 'dvb'.
>>> Nov 30 23:53:44 mythtv kernel: saa7146: register extension 'budget dvb'.
>>> Nov 30 23:53:44 mythtv kernel: saa7146: register extension 'budget_ci 
>>> dvb'.
>>> Nov 30 23:53:44 mythtv kernel: saa7146: register extension 'budget_av'.
>>>
>>> Does not look like the frontend loaded.    I'm very happy to help out 
>>> and get dvb supporting this card.
>>>
>>>       
>> Dwaine, I'm pretty confident that the frontend for the card is the 
>> Philips TUV1236D/U NIM, which just recently got support (it would be in 
>> the 2.6.15 kernel stuff).  That particular NIM utilizes the Nxt2004 
>> demodulator.  As the backend bridge on your card is the SAA7133, the 
>> link between the frontend to the backend on your card should be 
>> identical to the Avermedia A180 card.  So, your card should be good to 
>> go in theory, but I'm not certain if it will work "out of the box" 
>> without some minor definition changes in the drivers.....someone 
>> knowledgeable on the driver side would be able to answer that.
>>     
>
> Hi,
>
> yes, should be TUNER_PHILIPS_TUV1236D according to the philips driver.
> There are also all amux and vmux settings, means we have all for the
> card's analog entry.
>
> Kirk has quite some code in use for this tuner on cx88 ATI_HDTVWONDER
> not yet available for the saa7134 driver. It starts with initialization
> code currently in cx88-cards.c.
>
>
>   
>> 	case CX88_BOARD_ATI_HDTVWONDER:
>> 		if (0 == core->i2c_rc) {
>> 			/* enable tuner */
>> 			int i;
>> 			u8 buffer [] = { 0x10,0x12,0x13,0x04,0x16,0x00,0x14,0x04,0x017,0x00 };
>> 			core->i2c_client.addr = 0x0a;
>>
>> 			for (i = 0; i < 5; i++)
>> 				if (2 != i2c_master_send(&core->i2c_client,&buffer[i*2],2))
>> 					printk(KERN_WARNING "%s: Unable to enable tuner(%i).\n",
>> 						core->name, i);
>> 		}
>> 		break;
>>     
>
> Then there is analog/digital switching code in tuner-simple.c.
>
>   
>> 	case TUNER_PHILIPS_TUV1236D:
>> 		/* 0x40 -> ATSC antenna input 1 */
>> 		/* 0x48 -> ATSC antenna input 2 */
>> 		/* 0x00 -> NTSC antenna input 1 */
>> 		/* 0x08 -> NTSC antenna input 2 */
>> 		buffer[0] = 0x14;
>> 		buffer[1] = 0x00;
>> 		buffer[2] = 0x17;
>> 		buffer[3] = 0x00;
>> 		config &= ~0x40;
>> 		if (t->std & V4L2_STD_ATSC) {
>> 			config |= 0x40;
>> 			buffer[1] = 0x04;
>> 		}
>> 		/* set to the correct mode (analog or digital) */
>> 		tuneraddr = c->addr;
>> 		c->addr = 0x0a;
>> 		if (2 != (rc = i2c_master_send(c,&buffer[0],2)))
>> 			tuner_warn("i2c i/o error: rc == %d (should be 2)\n",rc);
>> 		if (2 != (rc = i2c_master_send(c,&buffer[2],2)))
>> 			tuner_warn("i2c i/o error: rc == %d (should be 2)\n",rc);
>> 		c->addr = tuneraddr;
>> 		/* FIXME: input */
>> 		break;
>>     
>
> In cx88-dvb also some cx88 specific TS interface code.
>
>   
>> #ifdef HAVE_NXT200X
>> static int nxt200x_set_ts_param(struct dvb_frontend* fe,
>> 				int is_punctured)
>> {
>> 	struct cx8802_dev *dev= fe->dvb->priv;
>> 	dev->ts_gen_cntrl = is_punctured ? 0x04 : 0x00;
>> 	return 0;
>> }
>>
>> static int nxt200x_set_pll_input(u8* buf, int input)
>> {
>> 	if (input)
>> 		buf[3] |= 0x08;
>> 	else
>> 		buf[3] &= ~0x08;
>> 	return 0;
>> }
>>
>> static struct nxt200x_config ati_hdtvwonder = {
>> 	.demod_address    = 0x0a,
>> 	.pll_address      = 0x61,
>> 	.pll_desc         = &dvb_pll_tuv1236d,
>> 	.set_pll_input    = nxt200x_set_pll_input,
>> 	.set_ts_params    = nxt200x_set_ts_param,
>> };
>> #endif
>>     
>
>   
>> #ifdef HAVE_NXT200X
>> 	case CX88_BOARD_ATI_HDTVWONDER:
>> 		dev->dvb.frontend = nxt200x_attach(&ati_hdtvwonder,
>> 						 &dev->core->i2c_adap);
>> 		break;
>> #endif
>>     
>
> Michael has for the Avermedia 180A without analog support already the hook
> for dvb-pll with a different Alps tuner and the nxt200x frontend is introduced,
> but for the TUV1236D some more seems to be necessary.
>
> Maybe Michael or Hartmut (with a datasheet from tuner and frontend?) can 
> comment, if there is more to expect for this tuner and saa7133/35/31e adaption,
> but looks like Kirk and Michael have provided enough to be close to a start.
>
> Attached are the hopefully relevant parts of the inf file for analog.
>
> Cheers,
> Hermann
>
>
> %Hybrid.DeviceDescSilicon%  =3xHybridO,PCI\VEN_1131&DEV_7133&SUBSYS_735017DE
>
>                                                       | 0x18 tuner=24
>   
>> [3xHybridO.AddReg]                                  | 0x86 not tda9885/6/7 ???   <---------
>> HKR, "I2C Devices", "Device 0, Data1",0x00010001,0x18,0x00,0x00,0x00               ; Tuner ID
>> HKR, "I2C Devices", "Device 0, Data2",0x00010001,0xC2,0x00,0x00,0x00               ; Tuner slave addr.
>> HKR, "I2C Devices", "Device 0, Data3",0x00010001,0x86,0x00,0x00,0x00               ; Tuner IF PLL slave addr.
>> HKR, "I2C Devices", "Device 0, Data4",0x00010001,0x00,0x00,0x00,0x00               ; Tuner IF PLL slave addr.
>> HKR, "I2C Devices", "Device 0, Data5",0x00010001,0xFF,0x00,0x00,0x00               ; Tuner IF PLL slave addr.
>> HKR, "I2C Devices", "Device 0, Data6",0x00010001,0x55,0x00,0x00,0x00               ; Tuner IF PLL slave addr.
>> HKR, "I2C Devices", "Device 0, Data7",0x00010001,0x55,0x00,0x00,0x00               ; Tuner IF PLL slave addr.
>> HKR, "I2C Devices", "Device 0, Data8",0x00010001,0x55,0x00,0x00,0x00               ; FM radio mode.
>>
>> [Common.AddReg]
>> HKR, "AudioDecoder", "Tuner Channel",0x00010001,1                 <--- tv amux TV
>> HKR, "AudioDecoder", "CVBS Channel",0x00010001,3                  <--- Composite1 LINE2
>> HKR, "AudioDecoder", "SVHS Channel",0x00010001,3                  <--- svideo     LINE2
>> HKR, "AudioDecoder", "FM Radio Channel",0x00010001,1
>>
>> ; maps user setting to hardware video input
>> HKR, "VideoDecoder", "Tuner Channel",0x00010001,1                 <--- tv vmux 1
>> HKR, "VideoDecoder", "CVBS Channel",0x00010001,3                  <--- Composite1 vmux 3
>> HKR, "VideoDecoder", "SVHS Channel",0x00010001,8                  <--- svideo vmux 8
>> HKR, "VideoDecoder", "FM Radio Channel",0x00010001,1
>>     

Two points to add:

a) Buoyed by Mauro's recent discovery of the ever popular tda9887 
existing in the Thomson DTT761x analog frontends (see 
http://www.spinics.net/lists/vfl/msg22196.html), I revisited my interest 
in identifying the TUV1236D/U's componentry (see 
http://www.linuxtv.org/pipermail/linux-dvb/2005-November/005818.html   
and  http://www.linuxtv.org/pipermail/linux-dvb/2005-November/005820.htm).

Although the shape of the analog demodulator visible in that high res. 
Anandtech photo 
(http://www.anandtech.com/video/showimage.html?u=http://images.anandtech.com/reviews/video/ATI/hdtvwonder/tuner.jpg) 
doesn't exactly conform to the drawings of the tda9887 in its datasheet, 
it does, however, have the requisite 24 pin count.  That, and given the 
popularity of this IC, I'm fairly confident in my suspicions that it is 
indeed the last piece of this puzzle .... (but I'm a self confessed 
monkey too, so what do I know :P).

Anyways, in summary, it looks to be the case that the TUV1236D/U 
consists of the Infineon TUA6034T tuner/pll + Philips TDA9887T analog 
demodulator/pll + Ati/Nxt2004 (digital) demodulator.

b) In addition to interfacing with the cx88 and saa713x, provision 
should also be made for the BT878A and the TL880 (when the time comes 
for it) given this frontend's use on the cards mentioned here: 
http://www.linuxtv.org/pipermail/linux-dvb/2005-October/005643.html

PS. obviously I was wrong about the BT878A and the Kworld, but it does 
indeed apply to the case for the Fujiplus (see: 
http://www.newegg.com/Product/ShowImage.asp?image=15-163-001-01.jpg,15-163-001-02.jpg,15-163-001-03.jpg,15-163-001-04.jpg,15-163-001-05.jpg&CurImage=15-163-001-02.jpg&Description=Fujiplus%20FD-3250%20PCI%20Interface%20Digital%20HDTV%20%20%20%20Card%20-%20Retail).  


-- Cheers, CK







More information about the linux-dvb mailing list