All of lore.kernel.org
 help / color / mirror / Atom feed
From: Hartmut Hackmann <hartmut.hackmann@t-online.de>
To: timf <timf@iinet.net.au>
Cc: linux-dvb@linuxtv.org
Subject: Re: [linux-dvb] Kworld DVB-T 210 - dvb tuning problem
Date: Sun, 13 Apr 2008 22:23:23 +0200	[thread overview]
Message-ID: <48026BBB.5030201@t-online.de> (raw)
In-Reply-To: <48025E28.8020704@iinet.net.au>

Hi, Tim

timf schrieb:
> 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@linuxtv.org
>>>>>> 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@linuxtv.org
>>>>> 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@linuxtv.org
>>>> 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.
> 
Ok , the antenna_switch is clear. But the
.gpio_config makes no sense. The card either uses either GPIO22 or
the tda10046 for mode switching but not both.
What happens if you use the "bad" gpio_config?
Please switch to tzap for testing. This command line program clearly
reports the status of the channel decoder, including signal level.

Hartmut

_______________________________________________
linux-dvb mailing list
linux-dvb@linuxtv.org
http://www.linuxtv.org/cgi-bin/mailman/listinfo/linux-dvb

  reply	other threads:[~2008-04-13 20:23 UTC|newest]

Thread overview: 32+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-04-10 16:22 [linux-dvb] Kworld DVB-T 210 - dvb tuning problem timf
2008-04-10 22:08 ` Hartmut Hackmann
2008-04-10 23:30   ` hermann pitton
2008-04-11 17:54     ` timf
2008-04-11 22:14       ` Hartmut Hackmann
2008-04-13  6:00         ` timf
2008-04-13  7:59           ` timf
2008-04-13 15:54             ` timf
2008-04-13 17:08               ` timf
2008-04-13 18:56                 ` Hartmut Hackmann
2008-04-13 19:25                   ` timf
2008-04-13 20:23                     ` Hartmut Hackmann [this message]
2008-04-13 21:08                       ` timf
2008-04-13 21:41                         ` Hartmut Hackmann
2008-04-13 22:11                           ` timf
2008-04-13 22:35                             ` timf
2008-04-13 22:53                             ` Hartmut Hackmann
2008-04-14 14:10                               ` timf
2008-04-15  0:42                                 ` hermann pitton
2008-04-11 21:23     ` Hartmut Hackmann
2008-04-12 11:30       ` hermann pitton
2008-04-12 12:00         ` timf
  -- strict thread matches above, loose matches on Subject: below --
2008-03-14 12:52 Steve Moreau
     [not found] <1204893775.10536.4.camel@ubuntu>
     [not found] ` <47D1A65B.3080900@t-online.de>
2008-03-14  7:41   ` timf
2008-03-17 21:22     ` Hartmut Hackmann
2008-03-18 14:40       ` timf
2008-03-18 22:56         ` Hartmut Hackmann
2008-03-19  4:03           ` timf
2008-03-19 23:18             ` Hartmut Hackmann
     [not found]         ` <1213744559.11684.4.camel@asus.lounge>
2008-06-18  2:12           ` timf
2008-06-18  2:51             ` timf
2008-03-07 12:51 timf

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=48026BBB.5030201@t-online.de \
    --to=hartmut.hackmann@t-online.de \
    --cc=linux-dvb@linuxtv.org \
    --cc=timf@iinet.net.au \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.