Ultrasound Plug'n'Play mini-HOWTO
Autor: J-F MAMMET, mammet@diva.univ-mlv.fr
v0.01, 27 Marca 1996
WWeerrssjjaa ppoollsskkaa:: BBaarrttoosszz MMaarruusszzeewwsskkii BB..MMaarruusszzeewwsskkii@@jjttzz..oorrgg..ppll
v1.0, 7 Września 1997
Dokument ten został napisany w standardzie ISO-8859-2. Wersji orygi
nalnej nie ma na głównym serwerze (_s_u_n_s_i_t_e_._u_n_c_._e_d_u) _L_i_n_u_x _D_o_c_u_m_e_n_t_a_
_t_i_o_n _P_r_o_j_e_c_t, a na stronę WWW autora (diva.univ-mlv.fr
) nie można się dostać.
11.. WWpprroowwaaddzzeenniiee..
Jako długoletni fan kart dźwiękowych gravis-a, byłem naprawdę
szczęśliwy kiedy zobaczyłem prawdziwą nowość gravis-a. Od długiego
czasu planowałem kupić kartę _U_l_t_r_a_s_o_u_n_d i kupiłem ją z 1 MB RAM-u jak
tylko pojawiła się we Francji.
Zainstalowałem ją, i cieszyłem się kiedy została wykryta przez mój
Plug'n'Play BIOS, a nawet przez Windows 95 (przepraszam, ale nie
ponabijam się dzisiaj z ich marketingu). Więc pomyślałem, że karta
mogłaby działać wszędzie...
No to odpaliłem Linux-a, nie miałem problemów, karta została wykryta
jako _g_u_s _r_e_v _3_._4, co wydawało się być poprawne, ale nie było...
Jakiś czas później spróbowałem _Q_u_a_k_e_'_a i nie miałem dźwięku.
Przeczytałem więc podręcznik do gry, i zobaczyłem, że korzysta on z
pewnych mechanizmów DMA, których nie było w standardowym gus-ie.
Pomyslałem, że to wcale nie jest zabawne, mieć taką cholernie dobrą
kartę i nie mieć dźwięku w takiej fajnej grze. (wersja dos-owa
potrzebuje emulacji _s_o_u_n_d _b_l_a_s_t_e_r_-_a, a ja wolę nie mieć dźwięku niż
to)
No to co teraz? Powinienem czekać do maja na sterownik PnP dla gus-a?
Mam kupić _s_o_u_n_d _b_l_a_s_t_e_r_-_a (sic)? co będzie w następnym odcinku _"_A_k_t
_X_"?
22.. GGUUSS MMAAXX??
No i wróciłem do dos-a i pobawiłem się trochę programem _i_w_i_n_i_t.
Popatrzyłem na to co mi wyświetlał w trybie _v_e_r_b_o_s_e i zobaczyłem coś
takiego: CODEC adress 32c...
Co? _g_u_s PnP ma CS4231/CS1848 Codec tak jak _g_u_s _M_A_X???
Potem pogrzebałem po moich kopiach zapasowych i znalazłem ostatnie
sterowniki _g_r_a_v_i_s_-_a, wziąłem _u_l_t_r_i_n_i_t _2_._3_1 i wpisałem:
______________________________________________________________________
>set ultrasnd=220,6,5,5,5
>set ultra16=32c,0,0,1,0
>set ultradir=c:\ultrapnp
>ultrinit
______________________________________________________________________
i wiecie co? _U_l_t_r_a_s_o_u_n_d _M_A_X _d_e_t_e_c_t_e_d !!!
Wow. Super! Pomyslałem więc, że muszę tylko to wpisać zanim wystartuje
Linux-a i będę miał obsługę _g_u_s _M_a_x i w końcu ten p**** quake będzie
miał dźwięk !
To nie było takie proste 8(
33.. PPrrzzeerraabbiiaanniiee sstteerroowwnniikkaa..
Nie jestem dobrym programistą, ale znam C na tyle, żeby przejrzeć
sterownik i zobaczyć co się dzieje (szczególnie jeśli jest tam dużo
komentarzy).
Popatrzyłem do pliku gus_card.c, ale nie znalazłem nic ciekawego.
Potem popatrzyłem do gus_wave.c i zobaczyłem coś takiego:
* Value 255 means pre-3.7 which don't have mixer.
* Values 5 thru 9 mean v3.7 which has a ICS2101 mixer.
* 10 and above is GUS MAX which has the CS4231 codec/mixer.
Super! Po prostu muszę ustawić wartość 10 i będzie działać... Nie!
Zrobienie tego spowoduje, że jądro będzie myślało, że masz _g_u_s _M_a_x,
ale nie wykryje chip-a codec!
Więc musiałem także wymusić wykrycie tego chip-a!
Znalezienie co muszę zrobić nie było łatwe, ale w końcu mi się udało.
W pliku gus_wave.c była taka linia:
if (ad1848_detect (gus_base + 0x10c, NULL, hw_config->osp))
co znaczyło, że jądro próbuje samo wykryć chip AD1848. Pomyślałem, że
nie może go wykryć przez to _P_n_P i miałem rację! Zmieniłem tę linię na:
if (!(ad1848_detect (gus_base + 0x10c, NULL, hw_config->osp)))
skompilowałem jeszcze raz jądro i quake działa teraz na cacy!
Tak przy okazji: W pliku gus_card.c jest opcja _g_u_s___p_n_p___f_l_a_g, ale nie
widziałem żadnej różnicy między tym kiedy była włączona i wyłączona 8(
(może robiłem coś źle).
44.. WWiięęcc ccoo mmaammyy ddookkłłaaddnniiee zzrroobbiićć??
Nie zapomnij, że to nie będzie działać jeśli nie masz RAM-u na swojej
karcie...
Przede wszystkim nie używaj już _l_i_l_o, ponieważ musisz zainicjować _g_u_s_-
_a _P_n_P zanim wystartujesz Linux-a ([Od tłumacza] w tej chwili można już
inicjować karty (nie wszystkie) PnP pod Linux-em. Przeczytaj
podrozdział ``Karty PnP pod Linux-em.''). Napisz _f_d_i_s_k _/_m_b_r pod dos-
em, przeczytaj odpowiednie HOWTO na ten temat).
W swoim autoexec.bat wpisz:
set interwave=c:\ultrapnp\iw.ini
c:\ultrapnp\iwinit
set ultrasnd=220,6,5,5,5 (czy jakie tam są twoje wartości)
set ultra16=32c,0,0,1,0
set ultradir=c:\ultrapnp
c:\ultrapnp\ultrinit
_U_l_t_r_i_n_i_t znajdziesz w gus00045.zip na każdym ftp z _g_r_a_v_i_s_-_e_m.
Pod Linux-em, otwórz plik gus_wave.c w katalogu
/usr/src/linux/drivers/sound (czy gdziekolwiek indziej). Znajdź linię:
if (val == 255 || val < 5) (line 3049 in 3.5b7)
i w linii wcześniej napisz:
val=10;
Potem znajdź linię:
if (ad1848_detect (gus_base + 0x10c, NULL, hw_config->osp)) (line 3085)
i zmień ją na
if (!(ad1848_detect (gus_base + 0x10c, NULL, hw_config->osp)))
Skompiluj jądro z obsługą _g_u_s_-_a i _g_u_s _m_a_x. U mnie jest to:
BASE = 220
IRQ = 5
DMA1 = 6
DMA2 = 5
DMABUF = 65536
No i miłej zabawy z dźwiękiem!
44..11.. KKaarrttyy PPnnPP ppoodd LLiinnuuxx--eemm..
[Sekcja dodana przez tłumacza.]
Do inicjalizacji karty służy narzędzie o nazwie _s_a_p_n_p_t_o_o_l_s, które jest
do zdobycia np. pod adresem ftp.icm.edu.pl
. Dokładny
opis znajduje się razem z dystrybucją. Ogólnie wygląda to tak:
najpierw kompilujesz programy _i_s_a_p_n_p i _p_n_p_d_u_m_p. Potem tym drugim
generujesz sobie plik konfiguracyjny, który potem odpowiednio
modyfikujesz do własnych potrzeb. Następnie, żeby zainicjalizować
kartę (jeśli używasz modułu do dźwięku), piszesz _i_s_a_p_n_p
/etc/isapnp.conf i _i_n_s_m_o_d _s_o_u_n_d.
55.. CCrreeddiittss..
Używałem jądra w wersji 1.3.75, ale powinno być dobrze również z
jądrami nowszymi niż 1.3.70 (napisz do mnie jeśli tak nie jest).
To mini-HOWTO zostało napisane przez J-F MAMMETa.
e-mail: mammet@diva.univ-mlv.fr
www: http://diva.univ-mlv.fr/ mammet/
Najnowszą wersję tego dokumentu możesz pobrać z mojej strony WWW pod
adresem diva.univ-mlv.fr
(to w krótce).
Nie biorę żadnej odpowiedzialności za jakiekolwiek szkody, które mogą
ci się przytrafić (nawet padnięte win95).
Jeśli zobaczysz jakieś błędy w pisowni czy techniczne, to nie wahaj
się napisać do mnie. Jestem tylko biednym Francuzem zagubionym w
angielskim świecie, próbującym mówić zrozumiałym językiem.
27 Marca 1996.
55..11.. OOdd ttłłuummaacczzaa..
Tłumaczenie to jest chronione prawami autorskimi Š Bartosza
Maruszewskiego. Dozwolone jest rozprowadzanie i dystrybucja na
prawach takich samych jak dokument oryginalny.
Jeśli znalazłeś jakieś rażące błędy ortograficzne, gramatyczne,
składniowe, techniczne to pisz do mnie:
B.Maruszewski@jtz.org.pl
Oficjalną stroną tłumaczeń HOWTO jest http://www.jtz.org.pl/
Aktualne wersje przetłumaczonych dokumentów znajdują się na tejże
stronie. Dostępne są także poprzez anonimowe ftp pod adresem
ftp.jtz.org.pl w katalogu /HOWTO/.
Przetłumaczone przeze mnie dokumenty znajdują się także na mojej
stronie WWW. Są tam
też odwołania do Polskiej Strony Tłumaczeniowej.
Kontakt z naszą grupą, grupą tłumaczy możesz uzyskać poprzez listę
dyskusyjną jtz@ippt.gov.pl. Jeśli chcesz sie na nią zapisać, to wyślij
list o treści subscribe jtz Imię Nazwisko na adres
majordomo@ippt.gov.pl
Zmiany wprowadzone przez tłumacza:
Doadałem sekcję dotyczącą inicjalizacji kart PnP pod Linux-em.