<?xml version="1.0" encoding="UTF-8" ?>

<bugzilla version="5.2"
          urlbase="https://bugzilla.altlinux.org/"
          
          maintainer="jenya@basealt.ru"
>

    <bug>
          <bug_id>12259</bug_id>
          
          <creation_ts>2007-07-07 20:32:13 +0400</creation_ts>
          <short_desc>Неустойчивая идентификация звука на TV-тюнерах (tvaudio), основанных на чипах bt878</short_desc>
          <delta_ts>2008-01-30 09:47:03 +0300</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>4</classification_id>
          <classification>Development</classification>
          <product>Sisyphus</product>
          <component>kernel-image-std-smp</component>
          <version>unstable</version>
          <rep_platform>all</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>CLOSED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Roman Savochenko">rom_as</reporter>
          <assigned_to name="Sergey Vlasov">vsu</assigned_to>
          
          
          <qa_contact>qa-sisyphus</qa_contact>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>52513</commentid>
    <comment_count>0</comment_count>
    <who name="Roman Savochenko">rom_as</who>
    <bug_when>2007-07-07 20:32:13 +0400</bug_when>
    <thetext>Имеется TV-тюнер основанный на чипе Bt878:
//----------------------------------------------------------------//
04:08.0 Multimedia video controller: Brooktree Corporation Bt878 Video Capture 
(rev 11)
04:08.1 Multimedia controller: Brooktree Corporation Bt878 Audio Capture (rev 
11)
//----------------------------------------------------------------//
Традиционно этот тюнер обслуживался драйвером bttv с параметрами 
инициализации:
install bttv /sbin/modprobe tvaudio; /sbin/modprobe -i bttv
options bttv radio=1 card=10 tuner=5
options tvaudio  pic16c54=1
И всё работало в: ASP7.2, 7.3, 9.0, ALT2.4, ALT3.0.
Но в ALT4.0 радио (опция radio=1) перестало инициироваться, фактически 
файл /dev/radio не создаётся:
//-------------------- dmesg ---------------------------------//
[root@roman etc]# dmesg | grep bttv
bttv: driver version 0.9.16 loaded
bttv: using 8 buffers with 2080k (520 pages) each for capture
bttv: Bt8xx card found (0).
bttv0: Bt878 (rev 17) at 0000:04:08.0, irq: 50, latency: 32, mmio: 0xfdaff000
bttv0: using: Hauppauge (bt878) [card=10,insmod option]
bttv0: gpio: en=00000000, out=00000000 in=00ffffff [init]
bttv0: Hauppauge/Voodoo msp34xx: reset line init [5]
bttv0: Hauppauge eeprom indicates model#0
bttv0: using tuner=5
bttv0: i2c: checking for MSP34xx @ 0x80... not found
bttv0: i2c: checking for TDA9875 @ 0xb0... not found
bttv0: i2c: checking for TDA7432 @ 0x8a... not found
bttv0: i2c: checking for TDA9887 @ 0x86... not found
bttv0: registered device video0
bttv0: registered device vbi0
bttv0: PLL: 28636363 =&gt; 35468950 .. ok
//-----------------------------------------------------//
В сети находил информацию, что это версию bttv 0.9.16 сломали.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>52516</commentid>
    <comment_count>1</comment_count>
    <who name="Sergey Vlasov">vsu</who>
    <bug_when>2007-07-07 22:35:07 +0400</bug_when>
    <thetext>(In reply to comment #0)

&gt; 04:08.0 Multimedia video controller: Brooktree Corporation Bt878 Video Capture 
&gt; (rev 11)
Покажите вывод lspci -vvnn -s 04:08.0, а также точную модель карты (название на
коробке или на самой карте).

&gt; [root@roman etc]# dmesg | grep bttv
grep bttv мало - нужны ещё сообщения, выдаваемые другими модулями (в частности,
модулем tveeprom). Покажите кусок dmesg, начиная со строки &quot;bttv: driver version
0.9.16 loaded&quot;, полностью.

&gt; bttv0: using: Hauppauge (bt878) [card=10,insmod option]
Если на самом деле карта не от Hauppauge, вероятно, этот тип указывать не стоит,
поскольку карты Hauppauge имеют EEPROM с данными специфического формата, которые
разбираются модулем tveeprom и в некоторых случаях перекрывают информацию,
заданную другими параметрами модуля bttv.

&gt; В сети находил информацию, что это версию bttv 0.9.16 сломали.
После просмотра кода модуля tveeprom у меня создалось впечатление, что его как
раз починили - в версии из 2.6.12 возвращаемая структура предварительно не
очищалась, поэтому, если данные в EEPROM были неполными (или просто не
соответствовали формату, использующемуся в картах Hauppauge), возвращался мусор;
вероятно, в этом мусоре флаг наличия радио был установлен. В текущей версии
очистка производится правильно, поэтому при отсутствии в EEPROM информации о
наличии радио соответствующее устройство не инициализируется.

Можно попробовать вместо card=10 указать card=26 svhs=2 pll=28 - такие настройки
почти совпадают с card=10, за исключением того, что для этого типа не
используется EEPROM и отличается gpiomask (7 вместо 0x0f).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>52557</commentid>
    <comment_count>2</comment_count>
    <who name="Roman Savochenko">rom_as</who>
    <bug_when>2007-07-08 17:25:33 +0400</bug_when>
    <thetext>(In reply to comment #1)
&gt; (In reply to comment #0)
&gt; 
&gt; &gt; 04:08.0 Multimedia video controller: Brooktree Corporation Bt878 Video 
Capture 
&gt; &gt; (rev 11)
&gt; Покажите вывод lspci -vvnn -s 04:08.0, а также точную модель карты (название 
на
&gt; коробке или на самой карте).
04:08.0 Multimedia video controller [0400]: Brooktree Corporation Bt878 Video 
Capture [109e:036e] (rev 11)
        Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- 
Stepping- SERR- FastB2B-
        Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium &gt;TAbort- 
&lt;TAbort- &lt;MAbort- &gt;SERR- &lt;PERR-
        Latency: 32 (4000ns min, 10000ns max)
        Interrupt: pin A routed to IRQ 50
        Region 0: Memory at fdaff000 (32-bit, prefetchable) [size=4K]
        Capabilities: [44] Vital Product Data
        Capabilities: [4c] Power Management version 2
                Flags: PMEClk- DSI+ D1- D2- AuxCurrent=0mA 
PME(D0-,D1-,D2-,D3hot-,D3cold-)
                Status: D0 PME-Enable- DSel=0 DScale=0 PME-

Коробки уже нет, на карте и в мануале ничего вменяемого не написано, какая-то 
безымянная поделка. Написано просто TV/FM capture cardTF.

&gt; &gt; [root@roman etc]# dmesg | grep bttv
&gt; grep bttv мало - нужны ещё сообщения, выдаваемые другими модулями (в 
частности,
&gt; модулем tveeprom). Покажите кусок dmesg, начиная со строки &quot;bttv: driver 
version
&gt; 0.9.16 loaded&quot;, полностью.
bttv: driver version 0.9.16 loaded
bttv: using 8 buffers with 2080k (520 pages) each for capture
bttv: Bt8xx card found (0).
ACPI: PCI Interrupt Link [APC1] enabled at IRQ 16
ACPI: PCI Interrupt 0000:04:08.0[A] -&gt; Link [APC1] -&gt; GSI 16 (level, low) -&gt; 
IRQ 50
bttv0: Bt878 (rev 17) at 0000:04:08.0, irq: 50, latency: 32, mmio: 0xfdaff000
bttv0: using: Askey CPH05X/06X (bt878) [many vendors] [card=24,insmod option]
bttv0: gpio: en=00000000, out=00000000 in=00ffffff [init]
tvaudio 2-004b: pic16c54 (PV951) found @ 0x96 (bt878 #0 [sw])
bttv0: using tuner=5
bttv0: i2c: checking for MSP34xx @ 0x80... not found
bttv0: i2c: checking for TDA9875 @ 0xb0... not found
bttv0: i2c: checking for TDA7432 @ 0x8a... not found
bttv0: i2c: checking for TDA9887 @ 0x86... not found
tuner 2-0060: All bytes are equal. It is not a TEA5767
tuner 2-0060: chip found @ 0xc0 (bt878 #0 [sw])
tuner 2-0060: type set to 5 (Philips PAL_BG (FI1216 and compatibles))
bttv0: registered device video0
bttv0: registered device vbi0
bttv0: registered device radio0
bttv0: PLL: 28636363 =&gt; 35468950 .. ok
input: bttv IR (card=24) as /class/input/input2
bttv-input: bttv IR (card=24) detected at pci-0000:04:08.0/ir0
bt878: AUDIO driver version 0.0.0 loaded
bt878: Bt878 AUDIO function found (0).
ACPI: PCI Interrupt 0000:04:08.1[A] -&gt; Link [APC1] -&gt; GSI 16 (level, low) -&gt; 
IRQ 50
bt878_probe: card id=[0x0],[ &lt;NULL&gt; ] has DVB functions.
bt878(0): Bt878 (rev 17) at 04:08.1, irq: 50, latency: 32, memory: 0xfdafe000

&gt; &gt; bttv0: using: Hauppauge (bt878) [card=10,insmod option]
&gt; Если на самом деле карта не от Hauppauge, вероятно, этот тип указывать не 
стоит,
&gt; поскольку карты Hauppauge имеют EEPROM с данными специфического формата, 
которые
&gt; разбираются модулем tveeprom и в некоторых случаях перекрывают информацию,
&gt; заданную другими параметрами модуля bttv.
&gt; 
&gt; &gt; В сети находил информацию, что это версию bttv 0.9.16 сломали.
&gt; После просмотра кода модуля tveeprom у меня создалось впечатление, что его 
как
&gt; раз починили - в версии из 2.6.12 возвращаемая структура предварительно не
&gt; очищалась, поэтому, если данные в EEPROM были неполными (или просто не
&gt; соответствовали формату, использующемуся в картах Hauppauge), возвращался 
мусор;
&gt; вероятно, в этом мусоре флаг наличия радио был установлен. В текущей версии
&gt; очистка производится правильно, поэтому при отсутствии в EEPROM информации о
&gt; наличии радио соответствующее устройство не инициализируется.
&gt; 
&gt; Можно попробовать вместо card=10 указать card=26 svhs=2 pll=28 - такие 
настройки
&gt; почти совпадают с card=10, за исключением того, что для этого типа не
&gt; используется EEPROM и отличается gpiomask (7 вместо 0x0f).

В указанной Вами карте звук не работает, а радио увидело. Поставил card=24, 
как минимум радио уже работает. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>52694</commentid>
    <comment_count>3</comment_count>
    <who name="Roman Savochenko">rom_as</who>
    <bug_when>2007-07-11 15:58:33 +0400</bug_when>
    <thetext>Оказывается там инициализация не устойчивая. И звук на 26 не заработал именно 
по этой причине. Похоже он иногда ошибается в идентификации типа звуковой 
микросхемы. И в место tvaudio грузит tda9887:
i2c_adapter i2c-2: sendbytes: error - bailout.
tda9887 2-004b: i2c i/o error: rc == -14 (should be 4)
i2c_adapter i2c-2: sendbytes: error - bailout.
tda9887 2-004b: i2c i/o error: rc == -14 (should be 4)
i2c_adapter i2c-2: sendbytes: error - bailout.
tda9887 2-004b: i2c i/o error: rc == -14 (should be 4)

Причём предварительная загрузка tvaudio не гарантирует его использования.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>53963</commentid>
    <comment_count>4</comment_count>
    <who name="Roman Savochenko">rom_as</who>
    <bug_when>2007-08-13 08:40:40 +0400</bug_when>
    <thetext>На ALT4.0 Desktop RC 1, где ядро 2.6.18-std-smp-alt7 по умолчанию.
Модуль tvaudio не грузится вообще, без сообщений об ошибке.
Рядом лежащее 2.6.18-wks-smp-alt2 грузит этот модуль нормально.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>54231</commentid>
    <comment_count>5</comment_count>
    <who name="Roman Savochenko">rom_as</who>
    <bug_when>2007-08-16 23:47:43 +0400</bug_when>
    <thetext>Оказывается на 2.6.18-std-smp-alt7 звук, всёже иногда появляется.
Но неустойчивая идентификация аудио на bttv тюнерах очевидна!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>54277</commentid>
    <comment_count>6</comment_count>
    <who name="Roman Savochenko">rom_as</who>
    <bug_when>2007-08-18 10:29:48 +0400</bug_when>
    <thetext>Кроме того, bttv валит систему, если попытаться его выгрузить/перегрузить.
По команде: rmmod tvaudio bt878 bttv, начинают генерироваться событие нажатия 
клавиши &quot;Enter&quot;, или блокируется её код отжатия после вызова rmmod. Через 
какое-то время система может вообще зависнуть, возможно с предсмертным 
появлением звука.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>62066</commentid>
    <comment_count>7</comment_count>
    <who name="Roman Savochenko">rom_as</who>
    <bug_when>2008-01-27 18:45:11 +0300</bug_when>
    <thetext>(In reply to comment #6)
&gt; Кроме того, bttv валит систему, если попытаться его выгрузить/перегрузить.
&gt; По команде: rmmod tvaudio bt878 bttv, начинают генерироваться событие нажатия 
&gt; клавиши &quot;Enter&quot;, или блокируется её код отжатия после вызова rmmod. Через 
&gt; какое-то время система может вообще зависнуть, возможно с предсмертным 
&gt; появлением звука.
Подвисать система, на последних ядрах из branch, перестала. При этом перегрузка 
bttv помогает, но далеко не всегда. Так-же замечено такое интересное 
обстоятельство: Если загрузчик lilo праздничный, то tvaudio поднимается 
нормально и звук есть, если-же нет, то чаще всего tvaudio не поднимается, т.е. 
сткладывается впечатление, что тюнер у меня работает только по праздникам. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>62282</commentid>
    <comment_count>8</comment_count>
    <who name="Roman Savochenko">rom_as</who>
    <bug_when>2008-01-30 09:47:03 +0300</bug_when>
    <thetext>В одном форуме народ с таким-же TV-тюнером нашёл решение этой проблеме. Как я 
и подозревал где-то не хватало таймаута на детект интерфейс звука, что и 
приводило к неуверенной идентификации. Вобщем опция bttv i2c_udelay=128 
исправляет проблему. Уже раз пять включал и включаемость TV-тюнера составила 
100%.
Ставил следующие опции к bttv, для своей карты:
options bttv card=65 tuner=5 radio=1 i2c_udelay=128
options bttv card=42 tuner=2 radio=1 i2c_udelay=128

Обе конфигурации работают нормально и устойчиво.
В связи с чем багу закрываю.</thetext>
  </long_desc>
      
      

    </bug>

</bugzilla>