Subject: Preliminary AC'97 modem support in auich(4)
To: None <current-users@netbsd.org>
From: Jared D. McNeill <jmcneill@invisible.ca>
List: current-users
Date: 04/07/2005 21:04:28
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.

If anyone wants to play with it, make sure you have the following files:
  $NetBSD: ac97.c,v 1.69 2005/04/07 23:24:05 jmcneill Exp $
  $NetBSD: ac97reg.h,v 1.11 2005/04/04 18:52:30 jmcneill Exp $
  $NetBSD: ac97var.h,v 1.15 2005/04/04 02:08:58 jmcneill Exp $
  $NetBSD: auich.c,v 1.92 2005/04/07 23:21:10 jmcneill Exp $
  $NetBSD: audioio.h,v 1.28 2005/04/05 16:06:49 jmcneill Exp $

Then in your kernel:
  auich*  at pci? dev ? function ?
  options AUICH_ATTACH_MODEM
(Modem attachments are currently disabled by default because the AC'97
powerup code for the modem codec is a bit slow right now)

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.

Cheers,
Jared