Subject: Re: Preliminary AC'97 modem support in auich(4)
To: Jared D. McNeill <jmcneill@invisible.ca>
From: Nicolas Joly <njoly@pasteur.fr>
List: current-users
Date: 04/08/2005 14:25:17
--HcAYCG3uE/tztfnV
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline

On Thu, Apr 07, 2005 at 09:04:28PM -0300, Jared D. McNeill wrote:
> Ok, I have some preliminary (read: untested) code checked in that should
> support Intel ICH4 AC'97 modems as an audio device. The goal here is to
> port slmodemd to NetBSD and use these "winmodems" (so I can stop
> carrying around a 14.4 PCMCIA fax modem).
> 
> The catch: I don't have access to a POTS line at home, so I can't really
> test this stuff. I've also written a patch to slmodemd to support
> NetBSD, but again, I don't know if it actually works since (as I
> mentioned before) I have no way of testing it.
[...]
> At boot, you should (hopefully) see the following attachment at boot:
>   auich1 at pci0 dev 31 function 6: i82801DB (ICH4) AC-97 Modem
>   auich1: interrupting at irq 11
>   auich1: ac97: Conexant D480 MDC V.92 Modem codec; no 3D stereo
>   auich1: ac97: ext mid 4001<LINE1>, secondary codec
>   audio1 at auich1: full duplex, mmap, independent
> You may need to add some more PCI IDs to auich.c if you don't have an
> ICH4.
> 
> Hopefully if this goes well, /dev/sound1 should point to your AC'97
> modem.
> 
> There are some modem mixer controls, but they don't appear to be working
> for me yet. If they work for you, please let me know:
>   > mixerctl -d /dev/mixer1 -a
>   modem.adc=0
>   modem.adc.mute=on
>   modem.dac=0
>   modem.dac.mute=on
> 
> There's also a sysctl that should take the modem off-hook, but again I
> have no way of testing this:
>   > sudo sysctl -w hw.auich1.line1=1
>   hw.auich1.line1: 0 -> 1
> 
> Anyway, if you get this far, feel free to also poke around with
> slmodemd. I have some patches to make slmodem-2.9.9b build on NetBSD and
> speak to a NetBSD audio device here:
>   http://www.invisible.ca/~jmcneill/netbsd/slmodem-2.9.9b-netbsd.patch
> If you can't find the original slmodem-2.9.9b source, you can grab it
> from me as well:
>   http://www.invisible.ca/~jmcneill/netbsd/slmodem-2.9.9b.tar.gz
> 
> Any help on this would be greatly appreciated -- testing, patches, etc
> are more than welcome! I hope we can finally get these soft modems
> working in the near future.

Great ! I made some patches (attached) to enable it on my Dell
Inspiron 2600 with an Intel ICH3 AC'97 modem :

auich1 at pci0 dev 31 function 6: i82801CA (ICH3) AC-97 Modem
auich1: interrupting at irq 10
auich1: ac97: Conexant HSD11246 codec; no 3D stereo
auich1: ac97: ext mid 4009<CID1,LINE1>, secondary codec
[...]
audio1 at auich1: full duplex, mmap, independent

With your patched `slmodemd', i'm able to talk to the modem ...

root@calamity [~]# /usr/sbin/slmodemd /dev/sound1 
SmartLink Soft Modem: version 2.9.9 Apr  8 2005 12:53:44
symbolic link `/dev/ttySL1' -> `/dev/ttyp4' created.
modem `sound1' created. TTY is `/dev/ttyp4'
Use `/dev/ttySL1' as modem device, Ctrl+C for termination.

root@calamity [~]# cu -p modem
Connected.
at
OK
ati1
SmartLink Soft Modem, 2.9.9
Smart Link Ltd.
OK
ati3
/dev/sound1
modemap driver
OK
atdt3300
NO CARRIER
ERROR

But no luck yet, while trying to dial to some ISP !
Will try again a little later ...

Thanks for all this work.

-- 
Nicolas Joly

Biological Software and Databanks.
Institut Pasteur, Paris.

--HcAYCG3uE/tztfnV
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment; filename="netbsd-ac97modem.diff"

Index: sys/dev/ic/ac97.c
===================================================================
RCS file: /cvsroot/src/sys/dev/ic/ac97.c,v
retrieving revision 1.69
diff -u -r1.69 ac97.c
--- sys/dev/ic/ac97.c	7 Apr 2005 23:24:05 -0000	1.69
+++ sys/dev/ic/ac97.c	8 Apr 2005 11:50:33 -0000
@@ -726,6 +726,8 @@
 	{ 0x83847600, AC97_VENDOR_ID_MASK, "SigmaTel unknown",	},
 
 	/* Conexant AC'97 modems -- good luck finding datasheets! */
+	{ AC97_CODEC_ID('C', 'X', 'T', 33),
+	  0xffffffff,                   "Conexant HSD11246", },
 	{ AC97_CODEC_ID('C', 'X', 'T', 34),
 	  0xffffffff,			"Conexant D480 MDC V.92 Modem", },
 	{ AC97_CODEC_ID('C', 'X', 'T', 0),
Index: sys/dev/pci/auich.c
===================================================================
RCS file: /cvsroot/src/sys/dev/pci/auich.c,v
retrieving revision 1.92
diff -u -r1.92 auich.c
--- sys/dev/pci/auich.c	7 Apr 2005 23:21:10 -0000	1.92
+++ sys/dev/pci/auich.c	8 Apr 2005 11:50:34 -0000
@@ -360,6 +360,7 @@
 #define PCIID_AMD768		PCI_ID_CODE0(AMD, PBC768_AC)
 #define PCIID_AMD8111		PCI_ID_CODE0(AMD, PBC8111_AC)
 
+#define PCIID_ICH3MODEM		PCI_ID_CODE0(INTEL, 82801CA_MOD)
 #define PCIID_ICH4MODEM		PCI_ID_CODE0(INTEL, 82801DB_MOD)
 
 struct auich_devtype {
@@ -391,6 +392,7 @@
 
 static const struct auich_devtype auich_modem_devices[] = {
 #ifdef AUICH_ATTACH_MODEM
+	{ PCIID_ICH3MODEM, "i82801CA (ICH3) AC-97 Modem", "ICH3MODEM" },
 	{ PCIID_ICH4MODEM, "i82801DB (ICH4) AC-97 Modem", "ICH4MODEM" },
 #endif
 	{ 0,		NULL,				NULL },

--HcAYCG3uE/tztfnV--