From: timf <timf@iinet.net.au>
To: Hartmut Hackmann <hartmut.hackmann@t-online.de>
Cc: linux-dvb@linuxtv.org
Subject: Re: [linux-dvb] Kworld DVB-T 210 - dvb tuning problem
Date: Mon, 14 Apr 2008 03:25:28 +0800 [thread overview]
Message-ID: <48025E28.8020704@iinet.net.au> (raw)
In-Reply-To: <4802576F.1070106@t-online.de>
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.
Regards,
Tim
_______________________________________________
linux-dvb mailing list
linux-dvb@linuxtv.org
http://www.linuxtv.org/cgi-bin/mailman/listinfo/linux-dvb
next prev parent reply other threads:[~2008-04-13 19:25 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 [this message]
2008-04-13 20:23 ` Hartmut Hackmann
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=48025E28.8020704@iinet.net.au \
--to=timf@iinet.net.au \
--cc=hartmut.hackmann@t-online.de \
--cc=linux-dvb@linuxtv.org \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox