FreeBSD 8.1 a multiportova seriova karta

Dan Lukes dan at obluda.cz
Sun Jan 2 20:38:03 CET 2011


On 01/02/11 17:40, David Pasek:
> potrebuji vice seriovych portu

To jsme pred par lety resil taky a nakonec jsem s uspechem koupil a 
dodnes spokojene pouzivam:

http://www.koutech.com/proddetail.asp?linenumber=59

> poridil tuto ctyr portovou kartu
> http://www.sunix.com.tw/product/ser4056a.html
>
> Karta funguje, ale detekuji se pouze dva ze ctyrech RS-232 portu


> Vygooglil jsem podobny problem na FreeBSD 7 a nekdo tam vytvoril
> patch, ktery pomohl.
> http://www.mail-archive.com/freebsd-stable@freebsd.org/msg96080.html
> Nicmene jsem se koukal do zdrojaku 8.1 do souboru
> /usr/src/sys/dev/puc/pucdata.c
> a pripada mi, ze uz to je opravene presne podle toho patche.


Ten patch resi trivialni chybu, kdy se zapomelo, ze RID na techto 
kartach ma krok 4 a nikoli 1

Neopraveny kod predpklada pro porty 0,1 RID 0x10 a pro porty 2,3 RID 
0x11, zatimco sktuecnost je takova, ze to jsou RID 0x10 a 0x14.

Pridej k tomu pciconf -lv jeste option -b a mel bys to videt sam - kata 
ma definovane bar[10] a bar[14] (mozna jeste i nejake dalsi, nas ale 
zajimaji tyhle - jsou oba typu I/O port) ale bar[11] tam zadny neni.

Ale prestanme se zabyvat timhle - to je chyba, ktera byla odstranena, je 
odstranena a podle meho nejlepsiho presvedceni se tveho problemu netyka. 
Tvuj problem je podl eme jinde - ne proto, z ebych si byl az tak jisty 
kde, jako spis, ze jsem si takrka jisty, ze tady byt nemuze.

Nez se pustim do slozitejsich uvah zkusime ranu naslepo (ono to neni 
uplne naslepo, ale abych vysvetlil proc to navrhuju, musel bych 
vysvetlit prilis moc docela netrivialnich veci) - proved jednoduchou 
upravu. Ve stejne funkci, co se provadela minula oprava (tedy 
puc_config_timedia) je kod:

         case PUC_CFG_GET_OFS:
                 *res = (port == 1 || port == 3) ? 8 : 0;

Tak tu osmicku nahrad sestnactkou.

> Vypis z dmesg:
> ============
> puc0:<Timedia technology 4 Port Serial>  port
> 0xe000-0xe01f,0xe020-0xe02f irq 10 at device 17.0 on pci0
> puc0: [FILTER]
> uart2:<16550 or compatible>  on puc0
> uart3:<16550 or compatible>  on puc0

Tvoje karta je organizovana jako dva dvojporty - to je klasicke 
usporadani zachovavane kvuli snadne kompatibilite mezi systemy (takhle 
to ocekaval DOS v legaci seriakach). Nicmene, z tohoto vypisu nepozname, 
ktere dva ze ctyrech portu byly nalezeny.

Potrebujeme jeste vypis devinfo -rv , respektive, z nej ten podstrom, 
ktery popisuje informace o puc0 zarizeni.

Pokud budes mit prvni porty z obou paru, pak problem asi je tam co 
predpokladam, a pokud's zkusil shora navrzenou opravu, tak je mozna uz i 
napraveny. Pokud nemas prvni dva porty z paru a mas druhe dva porty, 
pripadne jeden par kompletni a z druheho nic, pak je teorie patrne 
chybna a zkusit doporucovanou zmenu to sice rozhodne muzes, ale hodne by 
me prekvapilo, kdyby to pomohlo.

Pokdu se nahodou nepodari problem vyresit touto "prvni ranou naslepo" 
tak relevantni casti vypisu pciconf -vlb, devinfo -rv a dmesg z verbose 
bootu by mohla pomoct pri vytvateni dalsich teorii.

Jeste jednou rikam, ze tu tvoji kartu neznam - takze varim skutecne jen 
z teoretickych uvah. Rozhodne pocitej, ze to nemusi pomoct - a ze se 
muze stat dokoce i to, ze upraveny modul ti system shodi. Nemel by, ale 
znas to ...


Dan


More information about the Users-l mailing list