[1/5] tm6000: add mts parameter

Message ID 1301948324-27186-1-git-send-email-stefan.ringel@arcor.de (mailing list archive)
State Superseded, archived
Headers

Commit Message

Stefan Ringel April 4, 2011, 8:18 p.m. UTC
  From: Stefan Ringel <stefan.ringel@arcor.de>

add mts parameter


Signed-off-by: Stefan Ringel <stefan.ringel@arcor.de>
---
 drivers/staging/tm6000/tm6000-cards.c |    7 +++++++
 1 files changed, 7 insertions(+), 0 deletions(-)
  

Comments

Mauro Carvalho Chehab April 19, 2011, 9:21 p.m. UTC | #1
Em 04-04-2011 17:18, stefan.ringel@arcor.de escreveu:
> From: Stefan Ringel <stefan.ringel@arcor.de>
> 
> add mts parameter

Stefan,

The MTS config depends on the specific board design (generally present on
mono NTSC cards). So, it should be inside the cards struct, and not 
provided as an userspace parameter.

Mauro.
> 
> 
> Signed-off-by: Stefan Ringel <stefan.ringel@arcor.de>
> ---
>  drivers/staging/tm6000/tm6000-cards.c |    7 +++++++
>  1 files changed, 7 insertions(+), 0 deletions(-)
> 
> diff --git a/drivers/staging/tm6000/tm6000-cards.c b/drivers/staging/tm6000/tm6000-cards.c
> index 146c7e8..eef58da 100644
> --- a/drivers/staging/tm6000/tm6000-cards.c
> +++ b/drivers/staging/tm6000/tm6000-cards.c
> @@ -61,6 +61,10 @@ module_param_array(card,  int, NULL, 0444);
>  
>  static unsigned long tm6000_devused;
>  
> +static unsigned int xc2028_mts;
> +module_param(xc2028_mts, int, 0644);
> +MODULE_PARM_DESC(xc2028_mts, "enable mts firmware (xc2028/3028 only)");
> +
>  
>  struct tm6000_board {
>  	char            *name;
> @@ -685,6 +689,9 @@ static void tm6000_config_tuner(struct tm6000_core *dev)
>  		ctl.demod = XC3028_FE_ZARLINK456;
>  		ctl.vhfbw7 = 1;
>  		ctl.uhfbw8 = 1;
> +		if (xc2028_mts)
> +			ctl.mts = 1;
> +
>  		xc2028_cfg.tuner = TUNER_XC2028;
>  		xc2028_cfg.priv  = &ctl;
>  

--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
  
Stefan Ringel April 20, 2011, 8:14 a.m. UTC | #2
Am 19.04.2011 23:21, schrieb Mauro Carvalho Chehab:
> Em 04-04-2011 17:18, stefan.ringel@arcor.de escreveu:
>> From: Stefan Ringel<stefan.ringel@arcor.de>
>>
>> add mts parameter
> Stefan,
>
> The MTS config depends on the specific board design (generally present on
> mono NTSC cards). So, it should be inside the cards struct, and not
> provided as an userspace parameter.
>
> Mauro.
No. It wrong. I think edge board must work under all region and TV 
standards and if I set MTS, it doesn't work in Germany (PAL_BG and 
DVB-T). The best is to set outside region specific params.
>> .
>>
>> Signed-off-by: Stefan Ringel<stefan.ringel@arcor.de>
>> ---
>>   drivers/staging/tm6000/tm6000-cards.c |    7 +++++++
>>   1 files changed, 7 insertions(+), 0 deletions(-)
>>
>> diff --git a/drivers/staging/tm6000/tm6000-cards.c b/drivers/staging/tm6000/tm6000-cards.c
>> index 146c7e8..eef58da 100644
>> --- a/drivers/staging/tm6000/tm6000-cards.c
>> +++ b/drivers/staging/tm6000/tm6000-cards.c
>> @@ -61,6 +61,10 @@ module_param_array(card,  int, NULL, 0444);
>>
>>   static unsigned long tm6000_devused;
>>
>> +static unsigned int xc2028_mts;
>> +module_param(xc2028_mts, int, 0644);
>> +MODULE_PARM_DESC(xc2028_mts, "enable mts firmware (xc2028/3028 only)");
>> +
>>
>>   struct tm6000_board {
>>   	char            *name;
>> @@ -685,6 +689,9 @@ static void tm6000_config_tuner(struct tm6000_core *dev)
>>   		ctl.demod = XC3028_FE_ZARLINK456;
>>   		ctl.vhfbw7 = 1;
>>   		ctl.uhfbw8 = 1;
>> +		if (xc2028_mts)
>> +			ctl.mts = 1;
>> +
>>   		xc2028_cfg.tuner = TUNER_XC2028;
>>   		xc2028_cfg.priv  =&ctl;
>>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-media" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html

--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
  
Mauro Carvalho Chehab April 20, 2011, 12:37 p.m. UTC | #3
Em 20-04-2011 05:14, Stefan Ringel escreveu:
> Am 19.04.2011 23:21, schrieb Mauro Carvalho Chehab:
>> Em 04-04-2011 17:18, stefan.ringel@arcor.de escreveu:
>>> From: Stefan Ringel<stefan.ringel@arcor.de>
>>>
>>> add mts parameter
>> Stefan,
>>
>> The MTS config depends on the specific board design (generally present on
>> mono NTSC cards). So, it should be inside the cards struct, and not
>> provided as an userspace parameter.
>>
>> Mauro.
> No. It wrong. I think edge board must work under all region and TV standards and if I set MTS, it doesn't work in Germany (PAL_BG and DVB-T). The best is to set outside region specific params.

Stefan,

Not all boards have MTS wired. Also, MTS works only for BTSC and EIAJ,
e. g. STD M/N. The SIF output works for all standards, depending of the audio
decoder capabilities, and if the SIF is properly wired. AFAIK, tm5600/6000/tm6010 
is a worldwide decoder, so if SIF is wired, it should be capable of also decoding
BTSC, EIAJ and the other sound standards found elsewhere.

In other words, boards shipped outside NTSC or PAL-M Countries use SIF and supports
worldwide standards. however, most boards shipped in US with xc3028 have only
MTS wired and won't work outside NTSC/PAL-M/PAL-N area (America, Japan and a few
other places).

>>> .
>>>
>>> Signed-off-by: Stefan Ringel<stefan.ringel@arcor.de>
>>> ---
>>>   drivers/staging/tm6000/tm6000-cards.c |    7 +++++++
>>>   1 files changed, 7 insertions(+), 0 deletions(-)
>>>
>>> diff --git a/drivers/staging/tm6000/tm6000-cards.c b/drivers/staging/tm6000/tm6000-cards.c
>>> index 146c7e8..eef58da 100644
>>> --- a/drivers/staging/tm6000/tm6000-cards.c
>>> +++ b/drivers/staging/tm6000/tm6000-cards.c
>>> @@ -61,6 +61,10 @@ module_param_array(card,  int, NULL, 0444);
>>>
>>>   static unsigned long tm6000_devused;
>>>
>>> +static unsigned int xc2028_mts;
>>> +module_param(xc2028_mts, int, 0644);
>>> +MODULE_PARM_DESC(xc2028_mts, "enable mts firmware (xc2028/3028 only)");
>>> +
>>>
>>>   struct tm6000_board {
>>>       char            *name;
>>> @@ -685,6 +689,9 @@ static void tm6000_config_tuner(struct tm6000_core *dev)
>>>           ctl.demod = XC3028_FE_ZARLINK456;
>>>           ctl.vhfbw7 = 1;
>>>           ctl.uhfbw8 = 1;
>>> +        if (xc2028_mts)
>>> +            ctl.mts = 1;
>>> +
>>>           xc2028_cfg.tuner = TUNER_XC2028;
>>>           xc2028_cfg.priv  =&ctl;
>>>
>> -- 
>> To unsubscribe from this list: send the line "unsubscribe linux-media" in
>> the body of a message to majordomo@vger.kernel.org
>> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> 

--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
  
Stefan Ringel April 20, 2011, 2:19 p.m. UTC | #4
Am 20.04.2011 14:37, schrieb Mauro Carvalho Chehab:
> Em 20-04-2011 05:14, Stefan Ringel escreveu:
>> Am 19.04.2011 23:21, schrieb Mauro Carvalho Chehab:
>>> Em 04-04-2011 17:18, stefan.ringel@arcor.de escreveu:
>>>> From: Stefan Ringel<stefan.ringel@arcor.de>
>>>>
>>>> add mts parameter
>>> Stefan,
>>>
>>> The MTS config depends on the specific board design (generally present on
>>> mono NTSC cards). So, it should be inside the cards struct, and not
>>> provided as an userspace parameter.
>>>
>>> Mauro.
>> No. It wrong. I think edge board must work under all region and TV standards and if I set MTS, it doesn't work in Germany (PAL_BG and DVB-T). The best is to set outside region specific params.
> Stefan,
>
> Not all boards have MTS wired.
standard option that param is not auto.
MTS = 0 or not set means load firmware without MTS.
MTS = 1 means load firmware with MTS.
That means, if you MTS then add a param MTS=1.
Have you other method to detect norm BTSC and EIAJ and set it? I have 
not that.
> Also, MTS works only for BTSC and EIAJ,
> e. g. STD M/N. The SIF output works for all standards, depending of the audio
> decoder capabilities, and if the SIF is properly wired. AFAIK, tm5600/6000/tm6010
> is a worldwide decoder, so if SIF is wired, it should be capable of also decoding
> BTSC, EIAJ and the other sound standards found elsewhere.
>
> In other words, boards shipped outside NTSC or PAL-M Countries use SIF and supports
> worldwide standards. however, most boards shipped in US with xc3028 have only
> MTS wired and won't work outside NTSC/PAL-M/PAL-N area (America, Japan and a few
> other places).
>
Which board is only MTS?

Which board is only no MTS?

Which board will both?
>>>> .
>>>>
>>>> Signed-off-by: Stefan Ringel<stefan.ringel@arcor.de>
>>>> ---
>>>>    drivers/staging/tm6000/tm6000-cards.c |    7 +++++++
>>>>    1 files changed, 7 insertions(+), 0 deletions(-)
>>>>
>>>> diff --git a/drivers/staging/tm6000/tm6000-cards.c b/drivers/staging/tm6000/tm6000-cards.c
>>>> index 146c7e8..eef58da 100644
>>>> --- a/drivers/staging/tm6000/tm6000-cards.c
>>>> +++ b/drivers/staging/tm6000/tm6000-cards.c
>>>> @@ -61,6 +61,10 @@ module_param_array(card,  int, NULL, 0444);
>>>>
>>>>    static unsigned long tm6000_devused;
>>>>
>>>> +static unsigned int xc2028_mts;
>>>> +module_param(xc2028_mts, int, 0644);
>>>> +MODULE_PARM_DESC(xc2028_mts, "enable mts firmware (xc2028/3028 only)");
>>>> +
>>>>
>>>>    struct tm6000_board {
>>>>        char            *name;
>>>> @@ -685,6 +689,9 @@ static void tm6000_config_tuner(struct tm6000_core *dev)
>>>>            ctl.demod = XC3028_FE_ZARLINK456;
>>>>            ctl.vhfbw7 = 1;
>>>>            ctl.uhfbw8 = 1;
>>>> +        if (xc2028_mts)
>>>> +            ctl.mts = 1;
>>>> +
>>>>            xc2028_cfg.tuner = TUNER_XC2028;
>>>>            xc2028_cfg.priv  =&ctl;
>>>>
>>> -- 
>>> To unsubscribe from this list: send the line "unsubscribe linux-media" in
>>> the body of a message to majordomo@vger.kernel.org
>>> More majordomo info at  http://vger.kernel.org/majordomo-info.html

--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
  
Mauro Carvalho Chehab April 20, 2011, 3:17 p.m. UTC | #5
Em 20-04-2011 11:19, Stefan Ringel escreveu:
> Am 20.04.2011 14:37, schrieb Mauro Carvalho Chehab:
>> Em 20-04-2011 05:14, Stefan Ringel escreveu:
>>> Am 19.04.2011 23:21, schrieb Mauro Carvalho Chehab:
>>>> Em 04-04-2011 17:18, stefan.ringel@arcor.de escreveu:
>>>>> From: Stefan Ringel<stefan.ringel@arcor.de>
>>>>>
>>>>> add mts parameter
>>>> Stefan,
>>>>
>>>> The MTS config depends on the specific board design (generally present on
>>>> mono NTSC cards). So, it should be inside the cards struct, and not
>>>> provided as an userspace parameter.
>>>>
>>>> Mauro.
>>> No. It wrong. I think edge board must work under all region and TV standards and if I set MTS, it doesn't work in Germany (PAL_BG and DVB-T). The best is to set outside region specific params.
>> Stefan,
>>
>> Not all boards have MTS wired.
> standard option that param is not auto.
> MTS = 0 or not set means load firmware without MTS.
> MTS = 1 means load firmware with MTS.
> That means, if you MTS then add a param MTS=1.
> Have you other method to detect norm BTSC and EIAJ and set it? I have not that.

Yes. Audio standard is related to video standard. So, it is easy to map on what
standards you have BTSC or EIAJ.

You could find that info listed on some places, like:
	http://www.videouniversity.com/articles/world-wide-tv-standards
	http://en.wikipedia.org/wiki/BTSC
and on good analog TV books.

Basically, BTSC/EIAJ applies only to PAL/M, PAL/N and NTSC/M. So, if the standard is
not PAL/MN, mts should always be equal to 0. We may have a patch at tuner-xc2028 for that.

If standard is V4L_STD_MN, we have:

For NTSC standards:
	if standard == V4L2_STD_NTSC_M_KR, audio is A2 (Korea) and mts should be 0.
	if standard == V4L2_STD_NTSC_M_JP, audio is EIAJ (Japan).
	All the rest use BTSC (or are mono, but the BTSC decoder is designed to be
backward compatible with NTSC mono FM transmission).

For PAL:
	V4L2_STD_PAL_M - always BTSC
	V4L2_STD_PAL_Nc (only Argentina) - always BTSC
	V4L2_STD_PAL_N  (Paraguay/Uruguay) - they also use FM for audio. I think it is also BTSC.

So, basically, assuming that some device could potentiallt have both SIF and MTS baseband 
wired and that the audio decoder is not capable of decoding EIAJ/BTSC, it makes sense to 
add something like this at tuner-xc2028:

/* MTS is only valid for M/N standars, except in Korea */
if (!(std & V4L2_STD_MN) || (std == V4L2_STD_NTSC_M_KR))
	mts = 0;

and, for such device, specify xc2028 with mts = 1.

For devices that support only mts, it makes sense to change the supported standards to
just V4L2_STD_MN.

However, we cannot assume that (std & V4L2_STD_MN) && (std != V4L2_STD_NTSC_M_KR) is always
mts, as it will depend on how xc2028/xc3028 is wired to the bridge/audio demod.

>> Also, MTS works only for BTSC and EIAJ,
>> e. g. STD M/N. The SIF output works for all standards, depending of the audio
>> decoder capabilities, and if the SIF is properly wired. AFAIK, tm5600/6000/tm6010
>> is a worldwide decoder, so if SIF is wired, it should be capable of also decoding
>> BTSC, EIAJ and the other sound standards found elsewhere.
>>
>> In other words, boards shipped outside NTSC or PAL-M Countries use SIF and supports
>> worldwide standards. however, most boards shipped in US with xc3028 have only
>> MTS wired and won't work outside NTSC/PAL-M/PAL-N area (America, Japan and a few
>> other places).
>>
> Which board is only MTS?

Developers need to test, but, based on my experience with other xc3028/2028 devices, 
in general, the ones sold in US are only MTS.

> Which board is only no MTS?
> Which board will both?

Except if the tm5600/tm6000 SIF decoder for BTSC/EIAJ is broken, we don't
need to map the differences between only SIF and SIF + MTS.

All boards sold in Europe should support SIF, so mts should be 0 for them.

Mauro.
--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
  
Stefan Ringel April 20, 2011, 3:27 p.m. UTC | #6
Am 20.04.2011 17:17, schrieb Mauro Carvalho Chehab:
> Em 20-04-2011 11:19, Stefan Ringel escreveu:
>> Am 20.04.2011 14:37, schrieb Mauro Carvalho Chehab:
>>> Em 20-04-2011 05:14, Stefan Ringel escreveu:
>>>> Am 19.04.2011 23:21, schrieb Mauro Carvalho Chehab:
>>>>> Em 04-04-2011 17:18, stefan.ringel@arcor.de escreveu:
>>>>>> From: Stefan Ringel<stefan.ringel@arcor.de>
>>>>>>
>>>>>> add mts parameter
>>>>> Stefan,
>>>>>
>>>>> The MTS config depends on the specific board design (generally present on
>>>>> mono NTSC cards). So, it should be inside the cards struct, and not
>>>>> provided as an userspace parameter.
>>>>>
>>>>> Mauro.
>>>> No. It wrong. I think edge board must work under all region and TV standards and if I set MTS, it doesn't work in Germany (PAL_BG and DVB-T). The best is to set outside region specific params.
>>> Stefan,
>>>
>>> Not all boards have MTS wired.
>> standard option that param is not auto.
>> MTS = 0 or not set means load firmware without MTS.
>> MTS = 1 means load firmware with MTS.
>> That means, if you MTS then add a param MTS=1.
>> Have you other method to detect norm BTSC and EIAJ and set it? I have not that.
> Yes. Audio standard is related to video standard. So, it is easy to map on what
> standards you have BTSC or EIAJ.
>
> You could find that info listed on some places, like:
> 	http://www.videouniversity.com/articles/world-wide-tv-standards
> 	http://en.wikipedia.org/wiki/BTSC
> and on good analog TV books.
>
> Basically, BTSC/EIAJ applies only to PAL/M, PAL/N and NTSC/M. So, if the standard is
> not PAL/MN, mts should always be equal to 0. We may have a patch at tuner-xc2028 for that.
>
> If standard is V4L_STD_MN, we have:
>
> For NTSC standards:
> 	if standard == V4L2_STD_NTSC_M_KR, audio is A2 (Korea) and mts should be 0.
> 	if standard == V4L2_STD_NTSC_M_JP, audio is EIAJ (Japan).
> 	All the rest use BTSC (or are mono, but the BTSC decoder is designed to be
> backward compatible with NTSC mono FM transmission).
>
> For PAL:
> 	V4L2_STD_PAL_M - always BTSC
> 	V4L2_STD_PAL_Nc (only Argentina) - always BTSC
> 	V4L2_STD_PAL_N  (Paraguay/Uruguay) - they also use FM for audio. I think it is also BTSC.
>
> So, basically, assuming that some device could potentiallt have both SIF and MTS baseband
> wired and that the audio decoder is not capable of decoding EIAJ/BTSC, it makes sense to
> add something like this at tuner-xc2028:
>
> /* MTS is only valid for M/N standars, except in Korea */
> if (!(std&  V4L2_STD_MN) || (std == V4L2_STD_NTSC_M_KR))
> 	mts = 0;
>
> and, for such device, specify xc2028 with mts = 1.
>
> For devices that support only mts, it makes sense to change the supported standards to
> just V4L2_STD_MN.
>
> However, we cannot assume that (std&  V4L2_STD_MN)&&  (std != V4L2_STD_NTSC_M_KR) is always
> mts, as it will depend on how xc2028/xc3028 is wired to the bridge/audio demod.
>
Is that better to use no mts parameter and always mts = 0?
>>> Also, MTS works only for BTSC and EIAJ,
>>> e. g. STD M/N. The SIF output works for all standards, depending of the audio
>>> decoder capabilities, and if the SIF is properly wired. AFAIK, tm5600/6000/tm6010
>>> is a worldwide decoder, so if SIF is wired, it should be capable of also decoding
>>> BTSC, EIAJ and the other sound standards found elsewhere.
>>>
>>> In other words, boards shipped outside NTSC or PAL-M Countries use SIF and supports
>>> worldwide standards. however, most boards shipped in US with xc3028 have only
>>> MTS wired and won't work outside NTSC/PAL-M/PAL-N area (America, Japan and a few
>>> other places).
>>>
>> Which board is only MTS?
> Developers need to test, but, based on my experience with other xc3028/2028 devices,
> in general, the ones sold in US are only MTS.
>
>> Which board is only no MTS?
>> Which board will both?
> Except if the tm5600/tm6000 SIF decoder for BTSC/EIAJ is broken, we don't
> need to map the differences between only SIF and SIF + MTS.
>
> All boards sold in Europe should support SIF, so mts should be 0 for them.
>
> Mauro.
> --
> To unsubscribe from this list: send the line "unsubscribe linux-media" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html

--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
  
Mauro Carvalho Chehab April 20, 2011, 4:16 p.m. UTC | #7
Em 20-04-2011 12:27, Stefan Ringel escreveu:
> Am 20.04.2011 17:17, schrieb Mauro Carvalho Chehab:
>> Em 20-04-2011 11:19, Stefan Ringel escreveu:
>>> Am 20.04.2011 14:37, schrieb Mauro Carvalho Chehab:
>>>> Em 20-04-2011 05:14, Stefan Ringel escreveu:
>>>>> Am 19.04.2011 23:21, schrieb Mauro Carvalho Chehab:
>>>>>> Em 04-04-2011 17:18, stefan.ringel@arcor.de escreveu:
>>>>>>> From: Stefan Ringel<stefan.ringel@arcor.de>
>>>>>>>
>>>>>>> add mts parameter
>>>>>> Stefan,
>>>>>>
>>>>>> The MTS config depends on the specific board design (generally present on
>>>>>> mono NTSC cards). So, it should be inside the cards struct, and not
>>>>>> provided as an userspace parameter.
>>>>>>
>>>>>> Mauro.
>>>>> No. It wrong. I think edge board must work under all region and TV standards and if I set MTS, it doesn't work in Germany (PAL_BG and DVB-T). The best is to set outside region specific params.
>>>> Stefan,
>>>>
>>>> Not all boards have MTS wired.
>>> standard option that param is not auto.
>>> MTS = 0 or not set means load firmware without MTS.
>>> MTS = 1 means load firmware with MTS.
>>> That means, if you MTS then add a param MTS=1.
>>> Have you other method to detect norm BTSC and EIAJ and set it? I have not that.
>> Yes. Audio standard is related to video standard. So, it is easy to map on what
>> standards you have BTSC or EIAJ.
>>
>> You could find that info listed on some places, like:
>>     http://www.videouniversity.com/articles/world-wide-tv-standards
>>     http://en.wikipedia.org/wiki/BTSC
>> and on good analog TV books.
>>
>> Basically, BTSC/EIAJ applies only to PAL/M, PAL/N and NTSC/M. So, if the standard is
>> not PAL/MN, mts should always be equal to 0. We may have a patch at tuner-xc2028 for that.
>>
>> If standard is V4L_STD_MN, we have:
>>
>> For NTSC standards:
>>     if standard == V4L2_STD_NTSC_M_KR, audio is A2 (Korea) and mts should be 0.
>>     if standard == V4L2_STD_NTSC_M_JP, audio is EIAJ (Japan).
>>     All the rest use BTSC (or are mono, but the BTSC decoder is designed to be
>> backward compatible with NTSC mono FM transmission).
>>
>> For PAL:
>>     V4L2_STD_PAL_M - always BTSC
>>     V4L2_STD_PAL_Nc (only Argentina) - always BTSC
>>     V4L2_STD_PAL_N  (Paraguay/Uruguay) - they also use FM for audio. I think it is also BTSC.
>>
>> So, basically, assuming that some device could potentiallt have both SIF and MTS baseband
>> wired and that the audio decoder is not capable of decoding EIAJ/BTSC, it makes sense to
>> add something like this at tuner-xc2028:
>>
>> /* MTS is only valid for M/N standars, except in Korea */
>> if (!(std&  V4L2_STD_MN) || (std == V4L2_STD_NTSC_M_KR))
>>     mts = 0;
>>
>> and, for such device, specify xc2028 with mts = 1.
>>
>> For devices that support only mts, it makes sense to change the supported standards to
>> just V4L2_STD_MN.
>>
>> However, we cannot assume that (std&  V4L2_STD_MN)&&  (std != V4L2_STD_NTSC_M_KR) is always
>> mts, as it will depend on how xc2028/xc3028 is wired to the bridge/audio demod.
>>
> Is that better to use no mts parameter and always mts = 0?

No. The better is to use a per-board mts parameter, as we have on all other drivers
that use xc2028/xc3028.

Mauro.
--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
  

Patch

diff --git a/drivers/staging/tm6000/tm6000-cards.c b/drivers/staging/tm6000/tm6000-cards.c
index 146c7e8..eef58da 100644
--- a/drivers/staging/tm6000/tm6000-cards.c
+++ b/drivers/staging/tm6000/tm6000-cards.c
@@ -61,6 +61,10 @@  module_param_array(card,  int, NULL, 0444);
 
 static unsigned long tm6000_devused;
 
+static unsigned int xc2028_mts;
+module_param(xc2028_mts, int, 0644);
+MODULE_PARM_DESC(xc2028_mts, "enable mts firmware (xc2028/3028 only)");
+
 
 struct tm6000_board {
 	char            *name;
@@ -685,6 +689,9 @@  static void tm6000_config_tuner(struct tm6000_core *dev)
 		ctl.demod = XC3028_FE_ZARLINK456;
 		ctl.vhfbw7 = 1;
 		ctl.uhfbw8 = 1;
+		if (xc2028_mts)
+			ctl.mts = 1;
+
 		xc2028_cfg.tuner = TUNER_XC2028;
 		xc2028_cfg.priv  = &ctl;