Home | History | Annotate | Download | only in dev
History log of /src/sys/arch/sparc/dev/audioamd.c
RevisionDateAuthorComments
 1.30  12-Sep-2020  isaki Improve am7930 family drivers to share more code.
audioamd(4) on sparc, vsaudio(4) on vax, and bba(4) are.
- Remove complex and useless callbacks: onopen, onclose, and
indirect_{read,write}. This makes audioamd and vsaudio almost the same.
- Remove (already disabled) assembly fast interrupt path from audioamd(4).
cf. http://mail-index.netbsd.org/source-changes/2009/12/19/msg004585.html
- Use trigger_* method rather than start_* method. It's more suitable.
vsaudio(4) was tested by naru@, bba(4) was tested by tsutsui@.
 1.29  08-May-2019  isaki branches: 1.29.2;
Merge isaki-audio2 branch, the overhaul of audio subsystem.
- Interrupt-oriented system rather than thread-oriented.
- Improve stability, quality and performance.
- Split playback and record cleanly. Improve halfduplex support.
- Many bugs are fixed including deadlocks, resource leaks, abuses, etc.
- Simplify audio filter mechanism. The encoding/channels/frequency
conversions are completely handled in the upper layer. So the hard-
ware driver only converts its hardware encoding (if necessary).
- audio_hw_if changes:
- Obsoletes query_encoding and add query_format instead.
- Obsoletes set_params and add set_format instead.
- Remove drain, setfd, mappage.
- The call sequences are changed.
- ioctl AUDIO_GETFD/SETFD, AUDIO_GETCHAN/SETCHAN are obsoleted.
- ioctl AUDIO_{QUERY,GET,SET}FORMAT are introduced.
- cleanup config attributes: au*conv and mulaw.
- All hardware drivers should follow it (I've done as much as possible).

Some file paths are changed:
- dev/audio.c -> dev/audio/audio.c (rewritten)
- dev/audiovar.h -> dev/audio/audiovar.h
- dev/audio_dai.h -> dev/audio/audio_dai.h
- dev/audio_if.h -> dev/audio/audio_if.h
- dev/audiobell.c -> dev/audio/audiobell.c
- dev/audiobellvar.h -> dev/audio/audiobellvar.h
- dev/mulaw.[ch] -> dev/audio/mulaw.[ch] + dev/audio/alaw.c
 1.28  16-Mar-2019  isaki branches: 1.28.2;
Use C99 style struct initializer to audio_hw_if.
 1.27  23-Nov-2011  jmcneill branches: 1.27.50;
Merge jmcneill-audiomp3 branch, which is derived from ad-audiomp2. From
the original ad-audiomp branch notes:

Add MP locking to the audio drivers.

Making the audio drivers MP safe is necessary before efforts
can be made to make the VM system MP safe.

The are two locks per device instance, an ISR lock and
a character device lock. The ISR lock replaces calls to
splaudio()/splx(), and will be held across calls to device
methods which were called at splaudio() before (e.g.
trigger_output). The character device lock is held across
calls to nearly all of the methods, excluding some only
used for initialization, e.g. get_locks.

Welcome to 5.99.57.
 1.26  04-Jun-2011  tsutsui branches: 1.26.2; 1.26.4;
Split device_t/softc of am7930. No crash on TME and GXemul.
 1.25  19-Dec-2009  tsutsui branches: 1.25.4; 1.25.6; 1.25.10;
Disable "fast trap" handlers which invoke software interrupts
in sparc/amd7930intr.s and sparc/bsd_fdintr.s until they are
rewritten to adapt new MI softint(9) API.

No particular comments on PR port-sparc/42192, but
this fixes timeout problem on floppy access on my SPARCstation 1+.

XXX: floppy support on sun4m seems to have another problem (data overrun).
 1.24  17-Sep-2009  tsutsui Use device_t, cfdriver_t, device_private(), device_xname(),
and appropriate types and variables for device_t/softc.
 1.23  03-Dec-2007  ad branches: 1.23.18; 1.23.28; 1.23.36;
Interrupt handling changes, in discussion since February:

- Reduce available SPL levels for hardware devices to none, vm, sched, high.
- Acquire kernel_lock only for interrupts at IPL_VM.
- Implement threaded soft interrupts.
 1.22  27-Nov-2007  ad Use the softint API.
 1.21  11-Dec-2005  christos branches: 1.21.28; 1.21.30; 1.21.48; 1.21.50; 1.21.56;
merge ktrace-lwp.
 1.20  15-Jan-2005  kent branches: 1.20.10;
ansify and KNF
 1.19  29-Oct-2004  yamt constify audio_hw_if, midi_hw_if, and radio_hw_if.
 1.18  11-Jul-2004  mycroft Make this build again.
 1.17  15-Jul-2003  lukem __KERNEL_RCSID()
 1.16  10-Dec-2002  pk branches: 1.16.6;
Remove the `flags' argument from bus_intr_establish().
 1.15  10-Dec-2002  pk The `fast trap' handlers are now pssed as an optional argument to
bus_intr_establish(). Allow fall-back on a regular interrupt handler if
the interrupt level must be shared with another device.
 1.14  09-Dec-2002  pk Finish the switch to the softintr(9) framework.

To make this work, we now have to use separate handler lists for hardware
and software interrupts as the soft interrupt handlers do not return
an `interrupt handled' status.

Thanks to Matt Fredette for providing an initial set of patches on port-sparc.
 1.13  15-Oct-2002  jdc Add audioamd at obio attachment. Now we have working audio on 4/600's :

audioamd0 at obio0 slot 0 offset 0x500000 level 13 softpri 4
audio0 at audioamd0: full duplex
 1.12  02-Oct-2002  thorpej Add trailing ; to CFATTACH_DECL.
 1.11  01-Oct-2002  thorpej Use CFATTACH_DECL().
 1.10  27-Sep-2002  thorpej Declare all cfattach structures const.
 1.9  13-Jun-2002  gmcgarry Make this work with AUDIO_C_HANDLER.
 1.8  11-Mar-2002  pk branches: 1.8.4; 1.8.6;
* `bus_type_t' is gone.
* Use BUS_ADDR() where appropriate to encode I/O space and physical
address offset into a `bus_addr_t' value.
* Drop obio_bus_map() since it's now completely equivalent to bus_space_map()
* Use bus_space_map2() to map device space at a fixed virtual address.
* Remove the virtual address argument from sbus_sbus_addr()
 1.7  03-Oct-2001  augustss branches: 1.7.4;
Add a new optional method, dev_ioctl, to the audio hardware driver interface.
It is called when an unrecognized ioctl() is performed on a device,
thus allowing ioctl()s that frob the hardware driver (like loading
microcode).
 1.6  09-Jul-2000  pk branches: 1.6.2; 1.6.4; 1.6.6;
Add a `device class' interrupt level argument (from machine/intr.h)
to bus_interrupt_establish().

It's currently only used in sparc64/dev/psycho.c to assign a CPU interrupt
level to devices in PCI slots.
 1.5  06-Jun-2000  gmcgarry branches: 1.5.2;
- Clean up use of AUDIO_C_HANDLER.
- Copy bus_space handles into auio for fast handler.
 1.4  04-Jun-2000  cgd Implement the more flexiable `evcnt' interface as discussed (briefly) on
tech-kern and now documented in evcnt(9).
 1.3  08-May-2000  mycroft branches: 1.3.2;
Make the audioamd assembler code compile again.
 1.2  08-May-2000  mycroft Make the SPARC audioamd driver at least *compile*. Well, the C code, that is.
*sigh*
 1.1  02-May-2000  augustss Adapt to new am7930 driver. PR 10033 from Gregory McGarry.
 1.3.2.1  22-Jun-2000  minoura Sync w/ netbsd-1-5-base.
 1.5.2.1  19-Jul-2000  mrg pull up sparc/sparc64 bus_intr_establish() changes, necessary for sparc64
(originally done by pk, approved by thorpej):

>Add a `device class' interrupt level argument (from machine/intr.h)
>to bus_interrupt_establish().
>
>It's currently only used in sparc64/dev/psycho.c to assign a CPU interrupt
>level to devices in PCI slots.
 1.6.6.4  10-Oct-2002  jdolecek sync kqueue with -current; this includes merge of gehenna-devsw branch,
merge of i386 MP branch, and part of autoconf rototil work
 1.6.6.3  23-Jun-2002  jdolecek catch up with -current on kqueue branch
 1.6.6.2  16-Mar-2002  jdolecek Catch up with -current.
 1.6.6.1  10-Jan-2002  thorpej Sync kqueue branch with -current.
 1.6.4.1  11-Oct-2001  fvdl Catch up with -current. Fix some bogons in the sparc64 kbd/ms
attach code. cd18xx conversion provided by mrg.
 1.6.2.2  20-Nov-2000  bouyer Update thorpej_scsipi to -current as of a month ago
A i386 GENERIC kernel compiles without the siop, ahc and bha drivers
(will be updated later). i386 IDE/ATAPI and ncr work, as well as
sparc/esp_sbus. alpha should work as well (untested yet).
siop, ahc and bha will be updated once I've updated the branch to current
-current, as well as machine-dependant code.
 1.6.2.1  09-Jul-2000  bouyer file audioamd.c was added on branch thorpej_scsipi on 2000-11-20 20:25:30 +0000
 1.7.4.5  11-Dec-2002  thorpej Sync with HEAD.
 1.7.4.4  18-Oct-2002  nathanw Catch up to -current.
 1.7.4.3  20-Jun-2002  nathanw Catch up to -current.
 1.7.4.2  01-Apr-2002  nathanw Catch up to -current.
(CVS: It's not just a program. It's an adventure!)
 1.7.4.1  03-Oct-2001  nathanw file audioamd.c was added on branch nathanw_sa on 2002-04-01 07:42:38 +0000
 1.8.6.1  24-Jun-2002  lukem Pull up revision 1.9 (requested by pk in ticket #357):
Make this work with AUDIO_C_HANDLER.
 1.8.4.1  15-Jul-2002  gehenna catch up with -current.
 1.16.6.5  17-Jan-2005  skrll Sync with HEAD.
 1.16.6.4  02-Nov-2004  skrll Sync with HEAD.
 1.16.6.3  21-Sep-2004  skrll Fix the sync with head I botched.
 1.16.6.2  18-Sep-2004  skrll Sync with HEAD.
 1.16.6.1  03-Aug-2004  skrll Sync with HEAD
 1.20.10.1  07-Dec-2007  yamt sync with head
 1.21.56.1  08-Dec-2007  mjf Sync with HEAD.
 1.21.50.1  09-Jan-2008  matt sync with HEAD
 1.21.48.2  09-Dec-2007  jmcneill Sync with HEAD.
 1.21.48.1  03-Dec-2007  joerg Sync with HEAD.
 1.21.30.1  03-Dec-2007  ad Sync with HEAD.
 1.21.28.1  27-Feb-2007  ad Add MP locking for audio drivers.
 1.23.36.1  21-Apr-2010  matt sync to netbsd-5
 1.23.28.1  23-Jan-2010  bouyer Pull up following revision(s) (requested by tsutsui in ticket #1251):
sys/arch/sparc/sparc/auxreg.h: revision 1.13
distrib/sparc/ramdisk/dot.profile: revision 1.20
sys/arch/sparc/dev/audioamd.c: revision 1.25
sys/arch/sparc/dev/fd.c: revision 1.147
sys/arch/sparc/stand/common/promdev.c: revision 1.23
distrib/sparc/miniroot/Makefile.inc: revision 1.16
Build miniroot binaries for sparc with -Os to shrink instfs.tgz
for the second boot floppy which use miniroot objects.
This is workaround for PR install/42146, and ok'ed by mrg@.
Don't try to read disklabel to check FS_RAID on floppy boot since
reopening floppy could cause Data Access Exception later.
Fixes PR port-sparc/42186, ok'ed by mrg@.
Disable "fast trap" handlers which invoke software interrupts
in sparc/amd7930intr.s and sparc/bsd_fdintr.s until they are
rewritten to adapt new MI softint(9) API.
No particular comments on PR port-sparc/42192, but
this fixes timeout problem on floppy access on my SPARCstation 1+.
XXX: floppy support on sun4m seems to have another problem (data overrun).
Use /dev/fd0a rather than /dev/rfd0a to read instfs.tgz image from floppy.
It looks newer (appearred after 1.6) gzip tries to read less than DEV_BSIZE
(to check header?) so we can't use raw device directly.
(note sparc bootfs ramdisk doesn't have dd(1))
Workaround for PR port-sparc/42193, and would also fix PR install/28734.
Explicitly clear AUXIO4M_FTC bit in FTC_FLIP macro used on
pseudo-dma for floppy, as well as AUXIO4C_FTC bit for sun4c.
A comment in the macro says AUXIO4M_FTC bit is auto-clear,
but my two SS20s (including compatible) with 150MHz hyperSPARCs
get data_overrun without it, and no bad side effect on SS5
(works with and without this change).
Closes PR port-sparc/42516, which is the last one of a bunch of
floppy issue on NetBSD/sparc since NetBSD 2.0 days. See
http://mail-index.NetBSD.org/port-sparc/2009/12/20/msg000484.html
for details.
 1.23.18.1  11-Mar-2010  yamt sync with head
 1.25.10.1  23-Jun-2011  cherry Catchup with rmind-uvmplock merge.
 1.25.6.1  06-Jun-2011  jruoho Sync with HEAD.
 1.25.4.1  12-Jun-2011  rmind sync with head
 1.26.4.3  22-Nov-2011  jmcneill get rid of unused 'powerstate' callback in audio_hw_if
 1.26.4.2  20-Nov-2011  mrg use the sc_intr_lock when calling the rint/tint functions.
 1.26.4.1  20-Nov-2011  mrg port the am7930 drivers to audiomp. sparc and pmax GENERIC builds,
but i am unable to test these drivers.
 1.26.2.1  17-Apr-2012  yamt sync with head
 1.27.50.1  10-Jun-2019  christos Sync with HEAD
 1.28.2.2  04-May-2019  isaki Move dev/audio_if.h -> dev/audio/audio_if.h
 1.28.2.1  22-Apr-2019  isaki Adapt am7930 families to audio2.
- Remove {input/output}_conv stuff from am7930_glue.
Filter pipelines for user encoding are not necessary in audio2
so the driver only needs to handle its hardware encoding.
- audioamd/vsaudio use an ordinal linear-mulaw conversion filter
and bba requires special one. dev/audio/mulaw.c supports this
variant just for bba. It might not a good way for bba but it
keeps all other drivers simple.
- Tested on vsaudio(4) by naru@, bba(4) by tsutsui@ (a few months ago).
Thanks!
 1.29.2.1  31-Mar-2021  martin Apply patch, requested by tsutsui in ticket #1239:

sys/arch/sparc/dev/audioamd.c (apply patch)

Fix for PR 56078 (different solution applied to -current): fix wrong
lock usage.

RSS XML Feed