sb16 duplex patch

Andrea Arcangeli (arcangeli@mbox.queen.it)
Mon, 29 Dec 1997 18:55:58 +0100 (CET)


I developed an alpha patch against [2.1.76] that allow sb16/32/64 to work
in full duplex mode.

The patch should break the sound driver at runtime if you don' t use a sb
card older than sb16 (work in progress...).

Since sb cards haven' t two dma16 channels, when you playback data at 16
bit the driver will convert data to 8bit and will play it with the dma8,
allowing you to use the dma16 for recording at the same time. The patch
isn' t smart because it hardlock dma8 for playback of 16 bit data and
dma16 for playback of 8 bit data, so with this patch applyed, the sb
driver will convert all 16bit data to 8 bit even if dma16 isn' t used for
recording.

Comments and any kind of reports are welcome.

Here an example of program that works now:

---
#include <fcntl.h>

#define BUFSIZE 1024 void main(void) { char buf[BUFSIZE]; int fds[2]; int dsp = open("/dev/dsp",O_RDWR); pipe(fds); if(fork()) for (;;) { read(dsp,buf,BUFSIZE); write(fds[1],buf,BUFSIZE); } else for (;;) { read(fds[0],buf,BUFSIZE); write(dsp,buf,BUFSIZE); } }

---

I will never post unstable patches to linux-kernel about sb duplex, so if there is people on that list interested about this topic, I suggest them to subscribe linux-sound@vger.rutgers.edu and linux-awe@nsdev.org.

Andrea[s] Arcangeli

begin 644 sb16_duplex-972912-2.1.76.diff.gz M'XL("(;=IS0"`W-B,39?9'5P;&5X+3DW,CDQ,BTR+C$N-S8N9&EF9@#M&VES MXD;V,_R*M\YF"@9A)'&88^P--GA"UH"+8XY*4BH9A%&-D!A)^-AD_ON^U]TZ M`'%X,K6;K8UK!J0^7K^KW]7-U)S-(._V5E!8>6[!<R<%R[173X6I:SX8KE?P MG)4]+73U3\;,M`S8UYG.Y_/'@4F-YBMH&1-0RZ"4ZTJI+LN@U&IGZ5PNMW>- M5->Q^<P:*&=UI5(O5_C,'WZ`O%(L26>0XU\__)`&PYZ:LS2DP9P9GR'S]\Q5 MOW?=>:N-FX-125:RTG,VG;_YH/4O?QI"[AQ6NNMC^ZF3SG636L&P/",-L!/> M(DN]B7,)0;58E109<N*;4+2<1\MX,*Q"\'#JU-.0FDS#G@8LD'JD(L]X@?W` M'B:ZBR\P-1XT7[^S#'QF[9KW:/J3.;[JJZGIT)"%?K>:4;_Q>678$\.EYV=/ M\\T%?V;S@K<$E&!A3DW->[;]N7@1`-G$F>DN'G77(+[]^7$$W]5MS])]PA=2 MUA0W`.3%N&#\5R#^"P(#_O?U-/R2S@=`CF;Y"R=LT.\N`LJ>%QZUI.%^Y9$$ M\4L3?*!'@B@>'QQ+/#WJ#P32G'BJPM1\>IQ%X=R;P)Z^P_9$#(R,@@ID$:IU MI;;?G&Q-Y-:D7)=K,6NB2A4T)FJP4^$US!P7%HYK@&G/G%-J*B"_<H77Z1SV M7O7>:>.JYCO:6*EH-VW0[2EK'+)7ZAA6&7RX>X:F/74-'9KN1+?O#<LD$(5T M+@W?F?;$6DT->,-1GSCVS+P_G5^0:,+.$RZTH/.$H5RL$,HE6:HRC#U?]\T) M(NMS!;&<B6[1%&*%Z=@_=YL?M.:XU>EKK?:[7QML@2D:6MM@>'?'VDWS?4I^ MDOF?DL[%N^.T1H/4]4%QVJ-!)5HJAIYG^!HR=Z'[&7K%;2>Q]MG"1XOZ&R.N M7&*VLR)+2H61E\(_'`#GT+SNCA"=1JKP&D9STP/\IUN/^K,'WFJY=%S?F#)9 MI5)?Z(/)7RSX,R[V*\+@;?CBL9;\Q31_06C=F;Z780@1,@W<;BEN`R"S!2:+ MJ&+_1/<,CE.<^CIUI;9DP);__7R+66REU!WJR*?&.M`XWX\`&A^^"91Q@\]> MYP;2BNJ`_?D4\WGY5,HU_)5KP]9HIC;[>K]PWR<KY)Q5I2BT,\TDS'GXZ)J^ M$8G>\]W5!*6/'I]V&KRF)PF00,^'R5QWX37:-JXB$]P'7$GR*?8NP5("2P(< MH7GFOPPB=&5[YKV-2A`;0>WT&HT#]FZX+CWR9="Z:SB`:.0.O,B(*%4D10V5 M4-"^9/K7<[B)\);ZQ#B%`>_[#IP9Z).)L215O'OV#4\H9#!;+,M8GK)0!!,F M(7,&F63QOMI2F2Q7!IH+!5#9?)(>'`(25Q&APP+,:P'F"P]]P@XN=(X=7(0\ MS#**:$3$5<:W2@FEGE.K:$VK`=\\W\QD&<VIT"5IC#69E:4_:E,/Q90)1<<% MD@4A$I1@-F+8!/+G)%)\7%+<1=)],?L$Y1Q62+H`N,&*K^*I@%S8@%Q8AQP? M&Q\G=BQ^$-FM;I-XO'`>#-P^2P=5UW"YH6*,8;N7^3%919.IH"N32U5Z$.PG M`K:,GK,T;(2)#N85]&_;/>W]H#-J9P,]=]Q[W4:ID@!F2#-?#R6RU)R5+_%A MJ7U@S\\YW$&[V<IFF<`.8?*W\Q@J\/OO;$["(C-+O_<0;^2,UAK?WK0_P*M7 M?/!A.CD^?/1^0DU;$L->1&CN,*'Q*40G32&_?2RIP7@XFMS<4=3F.+6)F.PF M&%Y&L-"Q%*V*]D,LSL',7/U^8=@^LRBB$YD0;VT(72^I4HU4_4S&[YBFHY6% M-R!GURPV?M%.^9/IX)]24P*V<>YK+&`3_%_7%M#=>XR5](DOK-`ZMP\&]=[= MZ7RC0*!B1%_:']&S61OA?+%>EF/A_!EY(/P4%C`*=5O#6^VJV]*&M__L]U(8 MI+:4Y,[K:]9;3.<W>Y&[8JJ<W"FFEJ+@..C]L7DSHB%:5<S?&G'5[\5'),!H M?^C$1S3WK*)4V)#R'B!B2"W.HTZWWVIKO7ZOC7V;S?WQZ'8\2J5NK[I:N]>\ MO`F:N.^O45)25"65A^W!W%Y_T&W>:-U.JQ,'2;44WJA0;A7'<GB)WA0QY`A> MRLF]C`=7B9W-*]RS,KQY`\5L0G^S1?W*SOYA.%U-G-X)9B=V7W>N^QIJ"8>@ M[!Z"NL+!T)B$4=U^KQ\@4D[$<]0>M/L!,HE#QKUAYVVOW1)@2HE@^`@!IL20 M$:DN]4.'(@YWM?19)K?R@%(ED<8&P!B@SG#4'+6Y;#`%5'9VHV"Q7TWN[]Z. M2[)"`UCVB)A02MXR'LR)`62Q+._8ZH-WI^TK0$3=QY@K;6<90I4/&2UM1R6B MM%[7E%DE0@Y,%Y+]C@><H$+FIQ4R"L<JV5,8&@;X<P-.KOJW'SN]MR<LAX*I MB1F5>;>BW`-SUSF.P0S9<V8^E81VEC8B>7MW2N7G0E$M5$J_PFQE6?GI:FD9 M3T%Z_0>K&IQ*9B?4H':[5NNXTQ;FD^%2G6.MF1IR44-4V:*!\0H#/@MF:^3A MUJL,I#Q9AD.I)*&GR96)X3QX`'1;GH^,T9@GS;!/'MU0%W-L^?;E>/BQP>I_ ME(V0\T;@D_P%.D7<*!@\Y!5TN[#1&+Y6LZSL1REL"EAFP:L[S!EC?QR:!"=# MZH1+2_=P`Z*NT<8[X<$K^70&ACTEHQ[UKF$O9G]AJ%!A@"]*.*#:G#,N-5BF MG\@/QK\*RXMS+-LC_OV&XY'Q!$D4*3&EII>D>@NV\VALNXO'%NP!SD6)-'D4 MIB'KPR(F(XE?+9R4*+=9CF=L2H0%]P=P7D-CU^@(]S@R/(K:$(8<UE6J187I M;%4M2TKM#W"=&$,6G(B7B6;*0]<;&>2H[3RLO&$,"FM-/*_F82-'G7>S46SW M\*.4S>Z@DA?D[D<GJ!31!G4Y@A6FW!NUN'J0\S#=WRK2-38FC:L)$[8K:E]X MK2RJ@T5$,4'QW5$M52@YJ9;*)+%OO3^V-/^X;11G_YKPX!]K6Z*^H<+1/DH2 M/.?^\6K.&7_T)J)=D6.UD*AB\K(]]9+5JGRQ:!NB,[V_-UQ-**W<B`0O\T2T M6N8G?=6*^C\OZ_R?1-KP'Y1U+G6DL`,K7*VQK5T[$YZ/B=I;:A-GL=#M*6/> M9C4S"QG!5&]I8-O%!52S:-?DI]F,5U".`Q*'$9N-0D^>OT\-Y*<[DK_\-*GP M\EPR"`$#$;!M%`O!4=ELC'GKY"ER89@!AQ94^!1>)'LYQFNY'T):SQ2S\'L\ M0XN_83H8?PV2+SB(QR;5&XE7'`?*U0B%XRC@&5=\?I"GO40=)AC2OER):!93 MP#"8JU44BLAKE:I4Y"8L%8:,G=Z[YHUP;3D19C\XYI1E"KC4\EE;>88;Q=F\ M>L\*YN'1#7MS9C-/"@I2\1,>FA\.I1<VDD\T;/3XOPDQD0T]8$ESPH1E`@1R MX=HY`G:1V6-17/V1"J,\#N`:G=L7?5(1E1V&"+NX=!'G3YE_M@<]K3T8L'0F MSJ0Z'9;0^0^F8$7(?&\]2=]/LQ)_`GS\Q3YA'!)>`XFP[[.P38I$C$D8>9BV MM4F(;?8H^IAEY2H16,WP5(1(RD42AC='8+&;7[O8I7!^O<'_QW/I:QB41*LX MOSKD'&EB=+X5#S83M%$26I\+%3ZN=DSQ&R+J68<;CTF_&NX7RM3%;A9GL((U MK&Y!FUM;:SBG$T\T5*=/[#13A#A1GBV)^L69RBYFX8/([E-,IGS@TC66.B64 MCDL\7_*#I&BMN6[YVM/,<*FY-[ZYD1!Q7)>?OGU&W&GQ?+R+*<O,=19,8U@) M(K6N12&LV'<,)^'T!?Y*B5\L4\YJ875"9`G=U@VSU'66R[1:EQFAOB?O3<LB MN\6+99QAJ*/!H9>X/,#*\^>L/-\<C_I43^4IQ>Y^<EIA-5\<D+`#=VVA>Y_H MV#^F?KP_$!>\BM'(&_D`<26`4UNN\O-"I58,SPN9]>1*OGBFK8+`>$YLHLG6 M+8L#G;H/&7&C9-!YUQYH^'_8Z?>"HT%2.%M?&/%WCD=PJ,8O4*%Y<6:9!!W, MQH^C]@Z+%HBQ,MX<8]H:.N0?@Q.^M0)"?.EX169CLJ@:9(/SIM]XL2C!K-5A M9=/M,O`=$&P4]\I(41HO*&>2<W?LW?7,H/^H@F8P./4>PP.J2F*$1B7)4ETY M.UC1#"=O7:XJEO_O2IJEFH0!<4XIEX+3CU14-Q3715!Q*=X#,RRGLXLAO`87 MN1;L=C5]XB.[>4%*%#M$K_M9XV7,V/TD%#$&@IG-&CS:CZVZ>W0B"!O=O.S. M3P##$B4S??'#G[H(]\6M!&[&">6@4$8QH!(6'X6YR6]!Z_2V@9GV%BSNCL7, M3?KJ@ICM^A&?O)TNGL?(C]?]A(L\2!2?'=Z0.80ZQ'D`"3SHC.J[Z2-?\TT( MQ.3HOT0A'>_MHI#K6YVVUXR0I7.@:7#1FB9F!71V*#`UM7#?,`QH\>_XO>\C MK6=T:)!L/6/]AZUG;#`[Q/Y)MP$40()DF=]R/Y-W6L_XY`WK6:N78U=398F, MBE1DY5XT:!"[TSNI1R_<F<!4]W7A[3R@J(BE4^1T/ADN)K+\KAJSBG"%`1+& M/G,?,E=9;@,3+2`?S2Y;+EWGWM47=.ERYJ*U#HQP`YZ=%0J83OXC<PVF3Q=C M"\PXHXB>.21L11805FCK4:`+CV[,T<O;WAC>&K;AZA;<KNXLC$UOS(EAH][H MN#BU>'-VJ8Y#HCG7A,=0X`'7Q%T,:AV[`0;Z"ESE(70V8A4!4@+'Y6!T^QF( MA^'8T]UDQYV1:3-X<PQ_\4'WB;)'"@7O#&([>AJ)`\'A\+XS^A$-*#1['^%] M<S!H]D8?&\R?X58$X\'@P,S%TC+)T>DNBM9_1J0YC&Y[</4C3FI>=FXZHX^( M/%QW1KWV<`C7_0$TX;8Y&'6NQC?-`=R.![?]8?L4`I?*0>QA;^A`IX:OFY87 MX\!'E*R'2%I3F.L/!DIX8J`J3]&748A]6':"R91_Q?RWX&F#3)OM^!*PBZ&D MJ5M2Y0`BT4K0L2>G$E3.RM#5/0^:#RC-*WUQYYK3>WSL-D%6E6)-@O&P>1IX M\>CT\(WN+0HKNJ/I>>3$L8]5-';D6!L%C:3*16ATUZZ?!E,T2]0PH@8HG/.K M@(]SBG$R40_:G0M^`(,PPU71CK"")+;=&SZON,0ZPZ0OEQ4YZY<$JM8RTF]' M5;AV2,\N<O:ASEV/>*%;D&I(R8O-^_R`T9V_Q+S/_XAYW[RJI!;KZMF6>5?5 M!/,^_\N\_V7>_S+O1YMWXPEE;,.WL.2I/3:OL6NEK[*N^U=*L%+"AXFWZ!=L M\S"%5TOB4I)<W$SA=T^.6ZDJFJCPAU7\]SAGE,/3E_B%U'<I<6V+GY+S'P:% M/_JIRI3OWIB^CZZ-(G2T'#B&9;O;,R^CF8K,9EZ:]_NG=6_;;\-)*I]$;9!1 M18F77TTS9S@+-(TJ,>T;3<.F-3A)/UDJR?+FL*2?/U79L/!GI^*.VB6[51W< 2DON\,ES3P-WV;^MCX'E].P`` ` end