Hartmut Hackmann wrote: > Hi, Tim > > timf schrieb: >> timf wrote: >>> timf wrote: >>> >>>> timf wrote: >>>> >>>>> Hartmut Hackmann wrote: >>>>> >>>>>> Hi, Tim >>>>>> >>>>>> timf schrieb: >>>>>> >>>>>>> hermann pitton wrote: >>>>>>> >>>>>>>> Am Freitag, den 11.04.2008, 00:08 +0200 schrieb Hartmut Hackmann: >>>>>>>> >>>>>>>> >>>>>>>>> HI, Tim >>>>>>>>> >>>>>>>>> timf schrieb: >>>>>>>>> >>>>>>>>>> Hi Hartmut, >>>>>>>>>> OK, found some more spare time, but very, very frustrated! >>>>>>>>>> >>>>>>>>>> 1) Tried ubuntu 7.04, 7.10, 8.04 >>>>>>>>>> Tried with just modules that exist in kernel (no v4l-dvb) >>>>>>>>>> Tried v4l-dvb from June 2007 and tried current v4l-dvb >>>>>>>>>> Tried with/without Hartmut patch - changeset 7376 >>>>>>>>>> 49ba58715fe0 >>>>>>>>>> Tried with .gpio_config = TDA10046_GP11_I, or >>>>>>>>>> .gpio_config = TDA10046_GP01_I, >>>>>>>>>> Tried using configs in saa7134-dvb.c matching tiger, >>>>>>>>>> tiger_s, pinnacle 310i, twinhan 3056 >>>>>>>>>> >>>>>>>>>> # Australia / Perth (Roleystone transmitter) >>>>>>>>>> # T freq bw fec_hi fec_lo mod transmission-mode >>>>>>>>>> guard-interval hierarchy >>>>>>>>>> # SBS >>>>>>>>>> T 704500000 7MHz 2/3 NONE QAM64 8k 1/8 NONE >>>>>>>>>> # ABC >>>>>>>>>> T 725500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE >>>>>>>>>> # Seven >>>>>>>>>> T 746500000 7MHz 2/3 NONE QAM64 8k 1/16 NONE >>>>>>>>>> # Nine >>>>>>>>>> T 767500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE >>>>>>>>>> # Ten >>>>>>>>>> T 788500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE >>>>>>>>>> >>>>>>>>>> 2) I have these saa7134 cards: >>>>>>>>>> - pinnacle 310i >>>>>>>>>> - kworld 210 >>>>>>>>>> >>>>>>>>>> This cx88 card: >>>>>>>>>> - dvico DVB-T Pro hybrid (analog tv not work) >>>>>>>>>> >>>>>>>>>> - problem only occurs with kworld 210 in linux (works fine >>>>>>>>>> in WinXP) >>>>>>>>>> >>>>>>>>>> 3) In WinXP, all channels, both analog tv and dvb-t found >>>>>>>>>> >>>>>>>>>> 4) In linux, if start dvb-t first, never scans SBS - dmesg1 >>>>>>>>>> >>>>>>>>>> 5) In linux, if start analog tv first, stop, then start >>>>>>>>>> dvb-t, scan finds SBS - dmesg2 >>>>>>>>>> >>>>>>>>>> >>>>>>>>> a) The pinnacle 310i finds everything? >>>>>>>>> It has the same chipset, but an almost perfectly handled >>>>>>>>> tuner chip... >>>>>>>>> This means that your initial config file is ok... >>>>>>>>> b) Does this mean that in case 4, all other channels are found? >>>>>>>>> c) Case 5: This finds everything? >>>>>>>>> d) What happens if you use the scan data of the pinnacle card? >>>>>>>>> Does it tune SBS? Does it just take more time to stabilize? >>>>>>>>> This can be understood. >>>>>>>>> e) Just to be sure: did you clarify the open point with >>>>>>>>> .antenna_switch >>>>>>>>> (i think so) >>>>>>>>> f) the kernel logs are as expected. >>>>>>>>> <snip> >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>>> 6) Herman mentioned something called a "mode-switch" in the >>>>>>>>>> archives, but not any description. >>>>>>>>>> >>>>>>>>> I guess he meant the switching between analog, radio and >>>>>>>>> dvb-t. This is the >>>>>>>>> GPIO handling and card depending. >>>>>>>>> >>>>>>>> Tim must have it from when I mentioned the special case of >>>>>>>> card=87 and >>>>>>>> 94. >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>>>> I tried to find some data sheets for tda8275 tda8290 but only >>>>>>>>>> found the publicity pdf file from Phillips, >>>>>>>>>> so at least I can see they go together, so I presume this >>>>>>>>>> "mode-switch" is coded into those modules. >>>>>>>>>> But those modules work for all other cards, so now I'm lost >>>>>>>>>> again. >>>>>>>>>> >>>>>>>>>> What else should I try? >>>>>>>>>> >>>>>>>>>> >>>>>>>>> If my assumptions above are wrong, there is one other chance: >>>>>>>>> Recently i saw another card that does the (unusual) mode >>>>>>>>> switching >>>>>>>>> like card 87. So to be sure, you might try to force this card >>>>>>>>> type (be >>>>>>>>> aware of the antenna inputs, if in doubt, try both. >>>>>>>>> >>>>>>>>> Best regards >>>>>>>>> Hartmut >>>>>>>>> >>>>>>>>> >>>>>>>> For the Medion8800 Quad and CTX948 also showing this issue, >>>>>>>> needs to >>>>>>>> tune analog first to have good recepton on DVB-T, they are a >>>>>>>> little >>>>>>>> weaker on analog than other cards, but after that on DVB-T, >>>>>>>> they are as >>>>>>>> good than known good others. >>>>>>>> >>>>>>>> Cheers, >>>>>>>> Hermann >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>> Hi Hartmut and Hermann, >>>>>>> >>>>>>> a) The pinnacle 310i finds everything? >>>>>>> It has the same chipset, but an almost perfectly handled >>>>>>> tuner chip... >>>>>>> This means that your initial config file is ok... >>>>>>> >>>>>>> Answer - Yes, the non-working remote (and constant unknown key >>>>>>> messages) is all that is >>>>>>> wrong with the pinnacle 310i. >>>>>>> I tested it for your new tda8290 tda8275 patches - didn't I send >>>>>>> you the results? >>>>>>> It works fine! >>>>>>> >>>>>>> b) Does this mean that in case 4, all other channels are found? >>>>>>> >>>>>>> Answer - In linux, if start dvb-t first, never scans SBS >>>>>>> - yes all other channels are viewable/scannable. >>>>>>> >>>>>>> c) Case 5: This finds everything? >>>>>>> >>>>>>> Answer - In linux, if start analog tv first, stop, then start >>>>>>> dvb-t, scan finds SBS >>>>>>> - yes all channels are viewable/scannable. >>>>>>> >>>>>>> d) What happens if you use the scan data of the pinnacle card? >>>>>>> Does it tune SBS? Does it just take more time to stabilize? >>>>>>> This can be understood. >>>>>>> >>>>>>> Answer - the same answer applies as for b) and c) >>>>>>> >>>>>>> e) Just to be sure: did you clarify the open point with >>>>>>> .antenna_switch >>>>>>> (i think so) >>>>>>> >>>>>>> Answer - yes that was me being over-enthusiastic - made no >>>>>>> difference >>>>>>> as you pointed out. >>>>>>> >>>>>>> >>>>>>> OK, this modification has achieved, I think success. I can now >>>>>>> view/scan all channels >>>>>>> in analog tv or dvb-t in either order. >>>>>>> That is, I now don't have to start analog tv first, before dvb-t >>>>>>> will start. >>>>>>> >>>>>>> In saa7134- cards.c - no change. >>>>>>> >>>>>>> In saa7134-dvb.c: >>>>>>> >>>>>>> Remove this: >>>>>>> ------------------------------------ >>>>>>> static struct tda1004x_config kworld_dvb_t_210_config = { >>>>>>> .demod_address = 0x08, >>>>>>> .invert = 1, >>>>>>> .invert_oclk = 0, >>>>>>> .xtal_freq = TDA10046_XTAL_16M, >>>>>>> .agc_config = TDA10046_AGC_TDA827X, >>>>>>> .gpio_config = TDA10046_GP11_I, >>>>>>> .if_freq = TDA10046_FREQ_045, >>>>>>> .i2c_gate = 0x4b, >>>>>>> .tuner_address = 0x61, >>>>>>> .antenna_switch= 1, >>>>>>> .request_firmware = philips_tda1004x_request_firmware >>>>>>> }; >>>>>>> ------------------------------ >>>>>>> >>>>>>> Add this: >>>>>>> >>>>>>> ------------------------------ >>>>>>> static int kw210_tuner_init(struct dvb_frontend *fe) >>>>>>> { >>>>>>> struct saa7134_dev *dev = fe->dvb->priv; >>>>>>> philips_tda827x_tuner_init(fe); >>>>>>> /* route TDA8275a AGC input to the channel decoder */ >>>>>>> saa7134_set_gpio(dev, 22, 1); >>>>>>> return 0; >>>>>>> } >>>>>>> >>>>>>> static int kw210_tuner_sleep(struct dvb_frontend *fe) >>>>>>> { >>>>>>> struct saa7134_dev *dev = fe->dvb->priv; >>>>>>> /* route TDA8275a AGC input to the analog IF chip*/ >>>>>>> saa7134_set_gpio(dev, 22, 0); >>>>>>> philips_tda827x_tuner_sleep(fe); >>>>>>> return 0; >>>>>>> } >>>>>>> >>>>>>> static struct tda827x_config kw210_cfg = { >>>>>>> .tuner_callback = saa7134_tuner_callback, >>>>>>> .init = kw210_tuner_init, >>>>>>> .sleep = kw210_tuner_sleep, >>>>>>> .config = 0 >>>>>>> }; >>>>>>> >>>>>>> static struct tda1004x_config kworld_dvb_t_210_config = { >>>>>>> .demod_address = 0x08, >>>>>>> .invert = 1, >>>>>>> .invert_oclk = 0, >>>>>>> .xtal_freq = TDA10046_XTAL_16M, >>>>>>> .agc_config = TDA10046_AGC_TDA827X, >>>>>>> .gpio_config = TDA10046_GP11_I, >>>>>>> .if_freq = TDA10046_FREQ_045, >>>>>>> .tuner_address = 0x61, >>>>>>> .request_firmware = philips_tda1004x_request_firmware >>>>>>> }; >>>>>>> ---------------------------- >>>>>>> >>>>>>> Change this: >>>>>>> >>>>>>> case SAA7134_BOARD_KWORLD_DVBT_210: >>>>>>> dev->dvb.frontend = dvb_attach(tda10046_attach, >>>>>>> &kworld_dvb_t_210_config, &dev->i2c_adap); >>>>>>> if (dev->dvb.frontend) { >>>>>>> if (dvb_attach(tda827x_attach,dev->dvb.frontend, >>>>>>> kworld_dvb_t_210_config.tuner_address, >>>>>>> &dev->i2c_adap, >>>>>>> &kw210_cfg) == NULL) { >>>>>>> wprintk("no tda827x tuner found at addr: %02x\n", >>>>>>> kworld_dvb_t_210_config.tuner_address); >>>>>>> } >>>>>>> } >>>>>>> break; >>>>>>> --------------------------------------------- >>>>>>> >>>>>>> However, I need you to explain something for me. >>>>>>> >>>>>>> There is no difference if I use this: >>>>>>> >>>>>>> saa7134_set_gpio(dev, 22, 1); >>>>>>> >>>>>>> or this: >>>>>>> >>>>>>> saa7134_set_gpio(dev, 21, 1); >>>>>>> >>>>>>> I await your guidance, meanwhile I shall apply my >>>>>>> modification to enable the remote and ensure it >>>>>>> doesn't have any effect. >>>>>>> >>>>>>> Many thanks to you both, >>>>>>> >>>>>>> Regards, >>>>>>> Tim >>>>>>> >>>>>>> >>>>>> Again progress, excellent! >>>>>> I think we will need one further interation. If i go through your >>>>>> changes and comments, i come to the opinion that we will get the >>>>>> same >>>>>> with less changes. But if i understand this right, its >>>>>> astonishing that your >>>>>> card worked a bit. But let me go through your last patch again >>>>>> tomorrow - >>>>>> i am too tired now. >>>>>> >>>>>> Best regards >>>>>> Hartmut >>>>>> >>>>>> >>>>> Hi Hartmut, >>>>> >>>>> I was wrong: >>>>> >>>>> ->There is no difference if I use this: >>>>> >>>>> -> saa7134_set_gpio(dev, 22, 1); >>>>> >>>>> ->or this: >>>>> >>>>> -> saa7134_set_gpio(dev, 21, 1); >>>>> >>>>> This is wrong. >>>>> It only works at all when it is this: saa7134_set_gpio(dev, 22, 1); >>>>> >>>>> With this: saa7134_set_gpio(dev, 21, 1); it does not scan >>>>> anything at all. >>>>> >>>>> I proved this out by modifying the source, rebuild v4l-dvb, >>>>> and then instead of rebooting, I power-cycled each time. >>>>> >>>>> >>>>> There are 2 problems here: >>>>> 1) With no modification, I must switch to analog tv before I can >>>>> switch to dvb-t. >>>>> If I am using Kaffeine, and then wish to use Me-tv, I must >>>>> view analog tv >>>>> in between. >>>>> >>>>> 2) With no modification, dvb-t will not scan SBS unless analog tv >>>>> viewed first. >>>>> >>>>> >>>>> With this modification, both problems vanish. >>>>> >>>>> I have not yet tested radio. >>>>> >>>>> Regards, >>>>> Tim >>>>> >>>>> _______________________________________________ >>>>> linux-dvb mailing list >>>>> linux-dvb@xxxxxxxxxxx >>>>> http://www.linuxtv.org/cgi-bin/mailman/listinfo/linux-dvb >>>>> >>>>> >>>> Hi Hartmut, >>>> >>>> OK, tried to test radio with gradio, can't get any frequency to lock. >>>> >>>> Now, switching to radio then causes analog tv to have a very weak >>>> signal - only 1 channel will scan with very noisy picture. >>>> >>>> Then need to power-cycle to revert to good system. >>>> >>>> From syslog: >>>> Apr 13 14:15:47 ubuntu kernel: [ 3863.073092] tda829x 0-004b: >>>> tda8290 not locked, no signal? >>>> Apr 13 14:15:47 ubuntu kernel: [ 3863.193072] tda829x 0-004b: >>>> tda8290 not locked, no signal? >>>> Apr 13 14:15:47 ubuntu kernel: [ 3863.297056] tda829x 0-004b: >>>> adjust gain, step 1. Agc: 0, ADC stat: 0, lock: 0 >>>> Apr 13 14:15:47 ubuntu kernel: [ 3863.441033] tda829x 0-004b: >>>> adjust gain, step 2. Agc: 204, lock: 0 >>>> Apr 13 14:15:47 ubuntu kernel: [ 3863.585010] tda829x 0-004b: >>>> adjust gain, step 3. Agc: 123 >>>> Apr 13 14:15:47 ubuntu kernel: [ 3863.721163] tuner' 0-004b: Cmd >>>> VIDIOC_G_TUNER accepted for radio >>>> Apr 13 14:15:48 ubuntu kernel: [ 3863.737067] tuner' 0-004b: Cmd >>>> VIDIOC_G_TUNER accepted for radio >>>> Apr 13 14:15:48 ubuntu kernel: [ 3863.752986] tuner' 0-004b: Cmd >>>> VIDIOC_S_TUNER accepted for radio >>>> Apr 13 14:15:48 ubuntu kernel: [ 3863.752990] tda829x 0-004b: >>>> setting tda829x to system B >>>> Apr 13 14:15:48 ubuntu kernel: [ 3863.856965] tda827x: setting >>>> tda827x to system B >>>> Apr 13 14:15:48 ubuntu kernel: [ 3863.912956] tda827x: AGC2 gain >>>> is: 10 >>>> Apr 13 14:15:48 ubuntu kernel: [ 3864.240905] tda829x 0-004b: >>>> tda8290 not locked, no signal? >>>> Apr 13 14:15:48 ubuntu kernel: [ 3864.360885] tda829x 0-004b: >>>> tda8290 not locked, no signal? >>>> Apr 13 14:15:48 ubuntu kernel: [ 3864.480865] tda829x 0-004b: >>>> tda8290 not locked, no signal? >>>> Apr 13 14:15:48 ubuntu kernel: [ 3864.584849] tda829x 0-004b: >>>> adjust gain, step 1. Agc: 0, ADC stat: 0, lock: 0 >>>> Apr 13 14:15:48 ubuntu kernel: [ 3864.728828] tda829x 0-004b: >>>> adjust gain, step 2. Agc: 209, lock: 0 >>>> Apr 13 14:15:49 ubuntu kernel: [ 3864.872802] tda829x 0-004b: >>>> adjust gain, step 3. Agc: 129 >>>> Apr 13 14:17:08 ubuntu kernel: [ 3944.108802] tuner' 0-004b: Cmd >>>> VIDIOC_G_TUNER accepted for radio >>>> Apr 13 14:17:08 ubuntu kernel: [ 3944.132069] tuner' 0-004b: Cmd >>>> VIDIOC_G_TUNER accepted for radio >>>> >>>> -> I know the local FM station is 107.3MHz and can tune it in with >>>> WinXP >>>> >>>> Apr 13 14:17:08 ubuntu kernel: [ 3944.148049] tuner' 0-004b: radio >>>> freq set to 107.30 >>>> Apr 13 14:17:08 ubuntu kernel: [ 3944.148054] tda829x 0-004b: >>>> setting tda829x to system B >>>> Apr 13 14:17:08 ubuntu kernel: [ 3944.256024] tda827x: setting >>>> tda827x to system B >>>> Apr 13 14:17:08 ubuntu kernel: [ 3944.324013] tda827x: AGC2 gain >>>> is: 10 >>>> Apr 13 14:17:08 ubuntu kernel: [ 3944.651961] tda829x 0-004b: >>>> tda8290 not locked, no signal? >>>> Apr 13 14:17:09 ubuntu kernel: [ 3944.771941] tda829x 0-004b: >>>> tda8290 not locked, no signal? >>>> Apr 13 14:17:09 ubuntu kernel: [ 3944.891922] tda829x 0-004b: >>>> tda8290 not locked, no signal? >>>> Apr 13 14:17:09 ubuntu kernel: [ 3944.995906] tda829x 0-004b: >>>> adjust gain, step 1. Agc: 0, ADC stat: 0, lock: 0 >>>> Apr 13 14:17:09 ubuntu kernel: [ 3945.143884] tda829x 0-004b: >>>> adjust gain, step 2. Agc: 229, lock: 0 >>>> Apr 13 14:17:09 ubuntu kernel: [ 3945.291857] tda829x 0-004b: >>>> adjust gain, step 3. Agc: 149 >>>> Apr 13 14:17:09 ubuntu kernel: [ 3945.432058] tuner' 0-004b: Cmd >>>> VIDIOC_G_TUNER accepted for radio >>>> Apr 13 14:17:09 ubuntu kernel: [ 3945.451896] tuner' 0-004b: Cmd >>>> VIDIOC_G_TUNER accepted for radio >>>> Apr 13 14:17:09 ubuntu kernel: [ 3945.467841] tuner' 0-004b: Cmd >>>> VIDIOC_S_TUNER accepted for radio >>>> Apr 13 14:17:09 ubuntu kernel: [ 3945.467845] tda829x 0-004b: >>>> setting tda829x to system B >>>> Apr 13 14:17:09 ubuntu kernel: [ 3945.575812] tda827x: setting >>>> tda827x to system B >>>> Apr 13 14:17:09 ubuntu kernel: [ 3945.643801] tda827x: AGC2 gain >>>> is: 10 >>>> Apr 13 14:17:10 ubuntu kernel: [ 3945.971749] tda829x 0-004b: >>>> tda8290 not locked, no signal? >>>> Apr 13 14:17:10 ubuntu kernel: [ 3946.091729] tda829x 0-004b: >>>> tda8290 not locked, no signal? >>>> Apr 13 14:17:10 ubuntu kernel: [ 3946.211710] tda829x 0-004b: >>>> tda8290 not locked, no signal? >>>> Apr 13 14:17:10 ubuntu kernel: [ 3946.315694] tda829x 0-004b: >>>> adjust gain, step 1. Agc: 0, ADC stat: 0, lock: 0 >>>> Apr 13 14:17:10 ubuntu kernel: [ 3946.463670] tda829x 0-004b: >>>> adjust gain, step 2. Agc: 231, lock: 0 >>>> Apr 13 14:17:10 ubuntu kernel: [ 3946.611645] tda829x 0-004b: >>>> adjust gain, step 3. Agc: 150 >>>> Apr 13 14:17:20 ubuntu kernel: [ 3956.031282] tuner' 0-004b: Cmd >>>> VIDIOC_G_TUNER accepted for radio >>>> Apr 13 14:17:20 ubuntu kernel: [ 3956.046878] tuner' 0-004b: Cmd >>>> VIDIOC_G_TUNER accepted for radio >>>> >>>> >>>> So, the radio config isn't correct. >>>> >>>> I'll keep digging. >>>> >>>> Regards, >>>> Tim >>>> >>>> _______________________________________________ >>>> linux-dvb mailing list >>>> linux-dvb@xxxxxxxxxxx >>>> http://www.linuxtv.org/cgi-bin/mailman/listinfo/linux-dvb >>>> >>>> >>> Hi Hartmut, >>> OK, I'll send you this info that I think I have worked out so far: >>> >>> .gpiomask = 1 << 21, is equivalent to: >>> GPIO 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 >>> gpiomask 0x00200000 = 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 >>> >>> from syslog: >>> >>> Apr 13 22:31:56 ubuntu kernel: [ 148.955428] tda1004x: setting up >>> plls for 48MHz sampling clock >>> Apr 13 22:31:56 ubuntu kernel: [ 149.239381] tda1004x: found >>> firmware revision 29 -- ok >>> Apr 13 22:31:57 ubuntu kernel: [ 149.431357] tda827x: tda827x_init: >>> Apr 13 22:31:57 ubuntu kernel: [ 149.431365] saa7133[0]/core: >>> setting GPIO22 to static 1 >>> Apr 13 22:32:00 ubuntu kernel: [ 153.155969] tda827x: >>> tda827xa_set_params: >>> Apr 13 22:32:01 ubuntu kernel: [ 153.387931] tda827x: tda8275a AGC2 >>> gain is: 7 >>> >>> >>> Apr 13 22:32:08 ubuntu kernel: [ 160.737003] saa7133[0]/core: >>> setting GPIO22 to static 0 >>> Apr 13 22:35:28 ubuntu ntpd[5532]: Listening on interface #6 eth0, >>> fe80::21b:fcff:feb3:8532#123 Enabled >>> Apr 13 22:35:28 ubuntu ntpd[5532]: Listening on interface #7 eth0, >>> 10.1.1.5#123 Enabled >>> Apr 13 22:47:11 ubuntu kernel: [ 1063.436570] tuner' 0-004b: Cmd >>> VIDIOC_S_STD accepted for analog TV >>> >>> Seems to be: >>> GPIO22 = 1 for DVB-T >>> GPIO22 = 0 for analog-tv >>> >>> What then for radio? Perhaps GPIO21 is radio? >>> Try this: >>> .gpiomask = 0 << 22 >>> GPIO 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 >>> gpiomask 0x00000000 = 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 >>> Should give start with analog-tv = on; radio =off >>> .gpio = 0x00200000, for radio on (GPIO21 = 1) >>> Result: >>> No radio, but dvb-t, analog-tv is ok. >>> >>> My guess is that GPIO22 = 1 (dvb-t); = 0 (analog-tv, default) >>> GPIO21 = 0 or 1 for radio >>> But you would have to switch antenna from TV to radio via demux first? >>> I can't see where/how to do that. >>> >>> It seems as if the gpiomask should be applied to GPIO22? Then how to >>> start radio? >>> >>> Regards, >>> Tim >>> >>> _______________________________________________ >>> linux-dvb mailing list >>> linux-dvb@xxxxxxxxxxx >>> http://www.linuxtv.org/cgi-bin/mailman/listinfo/linux-dvb >>> >>> > > I will try to reply to all your last mails with this > >> Something I don't understand. >> >> This card: KWORLD VS-DVBT210RF >> >> Chips: >> SAA7131E - video decoder >> TDA10046A - DVB-T decoder >> KS007 - remote controller >> HC4052 - analog demux >> 24C02BN - eeprom >> NXP 8275A - tuner >> > That's a common configuration. > >> Now, other cards have something such as mt352 as an IF demod >> I was under the impression that the 8275 went with an 8290 IF demod, >> but there is no demod chip on this card. >> >> How does that work? >> > mt352 is a dvb-t channel decoder. But you are right, the tda8275(a) > needs a tda8290 for analog tv. But this is integrated in the saa7131. > >> The tuner on the Pinnacle 310i is under a metal shield, so I can't >> actually see it. >> >> I'm just getting more confused - there has to be something for the IF >> stage! >> > Right! its in the saa7131. > > I think i know now how your card needs to be configured. > Something that seems not to be really clear for you is the configuration > of the so-called AGC (automatic gain control) of the tuner. This > needs to be switched according to the function the tuner is used for: > analog TV -> FM Radio -> DVB-T. > This is done with the 4052 analog mux and requires 2 control bits -> > the GPIOs. > GPIO 21 is used to switch between analog TV and FM radio. > Typically GPIO21=0 -> analog TV, GPIO21=1 -> FM Radio. > In your case, GPIO22 is used to switch between DVB-T and analog while > most cards > use GPIO1 of the tda10046 for this. > > You should need to make chages only in saa7134-dvb, dvb_init() > - remove the old > case SAA7134_BOARD_KWORLD_DVBT_210: (plus code) > -and add it to > case SAA7134_BOARD_FLYDVBT_HYBRID_CARDBUS: > > That should do it (though we should add a .antenna switch to the > configuration). > > Best regards > Hartmut > Hi Hartmut, OK, so instead of this: ... /* ------------------------------------------------------------------ * special case: this card uses saa713x GPIO22 for the mode switch */ static int ads_duo_tuner_init(struct dvb_frontend *fe) { struct saa7134_dev *dev = fe->dvb->priv; philips_tda827x_tuner_init(fe); /* route TDA8275a AGC input to the channel decoder */ saa7134_set_gpio(dev, 22, 1); return 0; } static int ads_duo_tuner_sleep(struct dvb_frontend *fe) { struct saa7134_dev *dev = fe->dvb->priv; /* route TDA8275a AGC input to the analog IF chip*/ saa7134_set_gpio(dev, 22, 0); philips_tda827x_tuner_sleep(fe); return 0; } static struct tda827x_config ads_duo_cfg = { .tuner_callback = saa7134_tuner_callback, .init = ads_duo_tuner_init, .sleep = ads_duo_tuner_sleep, .config = 0 }; static struct tda1004x_config ads_tech_duo_config = { .demod_address = 0x08, .invert = 1, .invert_oclk = 0, .xtal_freq = TDA10046_XTAL_16M, .agc_config = TDA10046_AGC_TDA827X, .gpio_config = TDA10046_GP00_I, .if_freq = TDA10046_FREQ_045, .tuner_address = 0x61, .request_firmware = philips_tda1004x_request_firmware }; static int kw210_tuner_init(struct dvb_frontend *fe) { struct saa7134_dev *dev = fe->dvb->priv; philips_tda827x_tuner_init(fe); /* route TDA8275a AGC input to the channel decoder */ saa7134_set_gpio(dev, 22, 1); return 0; } static int kw210_tuner_sleep(struct dvb_frontend *fe) { struct saa7134_dev *dev = fe->dvb->priv; /* route TDA8275a AGC input to the analog IF chip*/ saa7134_set_gpio(dev, 22, 0); philips_tda827x_tuner_sleep(fe); return 0; } static struct tda827x_config kw210_cfg = { .tuner_callback = saa7134_tuner_callback, .init = kw210_tuner_init, .sleep = kw210_tuner_sleep, .config = 0 }; static struct tda1004x_config kworld_dvb_t_210_config = { .demod_address = 0x08, .invert = 1, .invert_oclk = 0, .xtal_freq = TDA10046_XTAL_16M, .agc_config = TDA10046_AGC_TDA827X, .gpio_config = TDA10046_GP11_I, .if_freq = TDA10046_FREQ_045, .tuner_address = 0x61, .antenna_switch= 1, .request_firmware = philips_tda1004x_request_firmware }; ------------------- /* ================================================================== * Core code */ static int dvb_init(struct saa7134_dev *dev) { ... case SAA7134_BOARD_KWORLD_DVBT_210: dev->dvb.frontend = dvb_attach(tda10046_attach, &kworld_dvb_t_210_config, &dev->i2c_adap); if (dev->dvb.frontend) { if (dvb_attach(tda827x_attach,dev->dvb.frontend, kworld_dvb_t_210_config.tuner_address, &dev->i2c_adap, &kw210_cfg) == NULL) { wprintk("no tda827x tuner found at addr: %02x\n", kworld_dvb_t_210_config.tuner_address); } } break; ... case SAA7134_BOARD_ADS_DUO_CARDBUS_PTV331: case SAA7134_BOARD_FLYDVBT_HYBRID_CARDBUS: dev->dvb.frontend = dvb_attach(tda10046_attach, &ads_tech_duo_config, &dev->i2c_adap); if (dev->dvb.frontend) { if (dvb_attach(tda827x_attach,dev->dvb.frontend, ads_tech_duo_config.tuner_address, &dev->i2c_adap, &ads_duo_cfg) == NULL) { wprintk("no tda827x tuner found at addr: %02x\n", ads_tech_duo_config.tuner_address); } } break; ... You think this is better: /* ------------------------------------------------------------------ * special case: this card uses saa713x GPIO22 for the mode switch */ static int ads_duo_tuner_init(struct dvb_frontend *fe) { struct saa7134_dev *dev = fe->dvb->priv; philips_tda827x_tuner_init(fe); /* route TDA8275a AGC input to the channel decoder */ saa7134_set_gpio(dev, 22, 1); return 0; } static int ads_duo_tuner_sleep(struct dvb_frontend *fe) { struct saa7134_dev *dev = fe->dvb->priv; /* route TDA8275a AGC input to the analog IF chip*/ saa7134_set_gpio(dev, 22, 0); philips_tda827x_tuner_sleep(fe); return 0; } static struct tda827x_config ads_duo_cfg = { .tuner_callback = saa7134_tuner_callback, .init = ads_duo_tuner_init, .sleep = ads_duo_tuner_sleep, .config = 0 }; static struct tda1004x_config ads_tech_duo_config = { .demod_address = 0x08, .invert = 1, .invert_oclk = 0, .xtal_freq = TDA10046_XTAL_16M, .agc_config = TDA10046_AGC_TDA827X, .gpio_config = TDA10046_GP00_I, .if_freq = TDA10046_FREQ_045, .tuner_address = 0x61, .request_firmware = philips_tda1004x_request_firmware }; ------------------- /* ================================================================== * Core code */ static int dvb_init(struct saa7134_dev *dev) { ... case SAA7134_BOARD_ADS_DUO_CARDBUS_PTV331: case SAA7134_BOARD_FLYDVBT_HYBRID_CARDBUS: case SAA7134_BOARD_KWORLD_DVBT_210: dev->dvb.frontend = dvb_attach(tda10046_attach, &ads_tech_duo_config, &dev->i2c_adap); if (dev->dvb.frontend) { if (dvb_attach(tda827x_attach,dev->dvb.frontend, ads_tech_duo_config.tuner_address, &dev->i2c_adap, &ads_duo_cfg) == NULL) { wprintk("no tda827x tuner found at addr: %02x\n", ads_tech_duo_config.tuner_address); } } break; ... My problem is that this works: .gpio_config = TDA10046_GP11_I, but this doesn't: .gpio_config = TDA10046_GP00_I, And I was going to add this: .antenna_switch= 1, to my struct. Regards, Tim _______________________________________________ linux-dvb mailing list linux-dvb@xxxxxxxxxxx http://www.linuxtv.org/cgi-bin/mailman/listinfo/linux-dvb