Home | History | Annotate | Download | only in mace
History log of /src/sys/arch/sgimips/mace/mavb.c
RevisionDateAuthorComments
 1.14  07-Jun-2019  isaki mavb supports only playback for now, so drop FULLDUPLEX and INDEPENDENT
property. These properies are valid only for bidirectional device.
 1.13  08-May-2019  isaki 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.12  16-Mar-2019  isaki branches: 1.12.2;
Use C99 style struct initializer to audio_hw_if.
 1.11  03-Sep-2018  riastradh Rename min/max -> uimin/uimax for better honesty.

These functions are defined on unsigned int. The generic name
min/max should not silently truncate to 32 bits on 64-bit systems.
This is purely a name change -- no functional change intended.

HOWEVER! Some subsystems have

#define min(a, b) ((a) < (b) ? (a) : (b))
#define max(a, b) ((a) > (b) ? (a) : (b))

even though our standard name for that is MIN/MAX. Although these
may invite multiple evaluation bugs, these do _not_ cause integer
truncation.

To avoid `fixing' these cases, I first changed the name in libkern,
and then compile-tested every file where min/max occurred in order to
confirm that it failed -- and thus confirm that nothing shadowed
min/max -- before changing it.

I have left a handful of bootloaders that are too annoying to
compile-test, and some dead code:

cobalt ews4800mips hp300 hppa ia64 luna68k vax
acorn32/if_ie.c (not included in any kernels)
macppc/if_gm.c (superseded by gem(4))

It should be easy to fix the fallout once identified -- this way of
doing things fails safe, and the goal here, after all, is to _avoid_
silent integer truncations, not introduce them.

Maybe one day we can reintroduce min/max as type-generic things that
never silently truncate. But we should avoid doing that for a while,
so that existing code has a chance to be detected by the compiler for
conversion to uimin/uimax without changing the semantics until we can
properly audit it all. (Who knows, maybe in some cases integer
truncation is actually intended!)
 1.10  17-Feb-2015  macallan branches: 1.10.16; 1.10.18;
move DAC1 output channel to master so things like OSS and kmix work
as expected
 1.9  27-Oct-2012  chs branches: 1.9.14;
split device_t/softc for all remaining drivers.
replace "struct device *" with "device_t".
use device_xname(), device_unit(), etc.
 1.8  23-Nov-2011  jmcneill branches: 1.8.8;
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.7  01-Jul-2011  dyoung branches: 1.7.2; 1.7.4;
#include <sys/bus.h> instead of <machine/bus.h>.
 1.6  23-Aug-2008  tsutsui KNF and misc cosmetics.
 1.5  26-Jan-2008  jmcneill branches: 1.5.6; 1.5.10; 1.5.12; 1.5.16;
Use auconv to create our encoding list for us.
 1.4  17-Oct-2007  garbled branches: 1.4.2;
Merge the ppcoea-renovation branch to HEAD.

This branch was a major cleanup and rototill of many of the various OEA
cpu based PPC ports that focused on sharing as much code as possible
between the various ports to eliminate near-identical copies of files in
every tree. Additionally there is a new PIC system that unifies the
interface to interrupt code for all different OEA ppc arches. The work
for this branch was done by a variety of people, too long to list here.

TODO:
bebox still needs work to complete the transition to -renovation.
ofppc still needs a bunch of work, which I will be looking at.
ev64260 still needs to be renovated
amigappc was not attempted.

NOTES:
pmppc was removed as an arch, and moved to a evbppc target.
 1.3  09-Jul-2007  ad branches: 1.3.2; 1.3.12; 1.3.14;
Merge some of the less invasive changes from the vmlocking branch:

- kthread, callout, devsw API changes
- select()/poll() improvements
- miscellaneous MT safety improvements
 1.2  13-Apr-2007  jmcneill branches: 1.2.2; 1.2.4; 1.2.6;
GC a few commented out lines of code, no functional change.
 1.1  13-Apr-2007  jmcneill Add SGI O2 MACE audio driver, from OpenBSD.
 1.2.6.3  15-Jul-2007  ad Sync with head.
 1.2.6.2  09-Jun-2007  ad Sync with head.
 1.2.6.1  13-Apr-2007  ad file mavb.c was added on branch vmlocking on 2007-06-09 21:37:02 +0000
 1.2.4.1  03-Oct-2007  garbled Sync with HEAD
 1.2.2.2  15-Apr-2007  yamt sync with head.
 1.2.2.1  13-Apr-2007  yamt file mavb.c was added on branch yamt-idlelwp on 2007-04-15 16:02:55 +0000
 1.3.14.3  04-Feb-2008  yamt sync with head.
 1.3.14.2  03-Sep-2007  yamt sync with head.
 1.3.14.1  09-Jul-2007  yamt file mavb.c was added on branch yamt-lazymbuf on 2007-09-03 14:29:20 +0000
 1.3.12.2  23-Mar-2008  matt sync with HEAD
 1.3.12.1  06-Nov-2007  matt sync with HEAD
 1.3.2.2  11-Jul-2007  mjf Sync with head.
 1.3.2.1  09-Jul-2007  mjf file mavb.c was added on branch mjf-ufs-trans on 2007-07-11 20:01:45 +0000
 1.4.2.1  18-Feb-2008  mjf Sync with HEAD.
 1.5.16.1  19-Oct-2008  haad Sync with HEAD.
 1.5.12.1  18-Sep-2008  wrstuden Sync with wrstuden-revivesa-base-2.
 1.5.10.1  04-May-2009  yamt sync with head.
 1.5.6.1  28-Sep-2008  mjf Sync with HEAD.
 1.7.4.4  22-Nov-2011  jmcneill get rid of unused 'powerstate' callback in audio_hw_if
 1.7.4.3  20-Nov-2011  jmcneill no need to enter intr_lock from trigger_output, it's already held
 1.7.4.2  20-Nov-2011  jmcneill fix size passed to kmem_free in stream filter dtor
 1.7.4.1  20-Nov-2011  jmcneill adapt to audiomp api changes
 1.7.2.2  30-Oct-2012  yamt sync with head
 1.7.2.1  17-Apr-2012  yamt sync with head
 1.8.8.2  03-Dec-2017  jdolecek update from HEAD
 1.8.8.1  20-Nov-2012  tls Resync to 2012-11-19 00:00:00 UTC
 1.9.14.1  06-Apr-2015  skrll Sync with HEAD
 1.10.18.1  10-Jun-2019  christos Sync with HEAD
 1.10.16.1  06-Sep-2018  pgoyette Sync with HEAD

Resolve a couple of conflicts (result of the uimin/uimax changes)
 1.12.2.4  04-May-2019  isaki Correct precision.
Tested by naru@. Thanks.
 1.12.2.3  04-May-2019  isaki Move dev/audio_if.h -> dev/audio/audio_if.h
 1.12.2.2  21-Apr-2019  isaki Adapt to audio2.
- The driver does not support recording so drop CAPTURE property.
 1.12.2.1  21-Apr-2019  isaki Use C99 style struct initializer to audio_format.

RSS XML Feed