Home | History | Annotate | Download | only in dev
History log of /src/sys/arch/macppc/dev/awacs.c
RevisionDateAuthorComments
 1.52  30-Aug-2023  macallan don't abuse the interrupt lock for waits in the event thread
 1.51  05-Mar-2021  rin Convert to intr_establish_xname().
 1.50  06-Feb-2021  isaki Calling halt_{input,output} is done by the MI audio layer if necessary.
 1.49  26-Jan-2021  thorpej There is not much point in of_compatible() returning -1 for "no match"
and >= 0 for "match". Just make it return 0 for "no match" and >0 for
"match" so it can be treated like a boolean expression.

As such of_match_compatible() (a wrapper around of_compatible()) is now
obsolete, and will be removed once all call sites are converted to an
appropriate replacement.
 1.48  08-Jun-2019  isaki branches: 1.48.10;
Clean get_props().
- Make get_props() return AUDIO_PROP_{PLAYBACK,CAPTURE} properly.
This eliminates need for audio.c to take care of such (old)
drivers which don't return both of PLAYBACK and CAPTURE.
- All get_props() doesn't need to return AUDIO_PROP_MMAP.
It is handled in the audio layer now.
 1.47  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.46  16-Mar-2019  isaki branches: 1.46.2;
Use C99 style struct initializer to audio_hw_if.
 1.45  24-Aug-2016  macallan branches: 1.45.16;
don't grab the interrupt lock around mixer operations
 1.44  15-Jul-2016  macallan adjust to dbdma changes
 1.43  02-Nov-2012  phx branches: 1.43.14; 1.43.18;
My PowerMac3,1 is using gpio4 to detect a connected headphone, and I would bet
that the same is true for PowerMac3,2.
 1.42  24-Nov-2011  mrg branches: 1.42.4; 1.42.8;
put back IPL_AUDIO and splaudio(), at the request of rmind. they are
aliases and now we can easily revert audio to IPL_VM if necessary,
without having to revert the whole branch.
 1.41  23-Nov-2011  jmcneill 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.40  20-Feb-2011  macallan branches: 1.40.4; 1.40.6;
bus_spacify, while there explicitly un-mute the headphone output when using
the beige G3's external mixer
 1.39  22-Dec-2010  macallan branches: 1.39.2; 1.39.4;
we need uvm_extern.h now
 1.38  20-Dec-2010  matt Move counting of faults, traps, intrs, soft[intr]s, syscalls, and nswtch
from uvmexp to per-cpu cpu_data and move them to 64bits. Remove unneeded
includes of <uvm/uvm_extern.h> and/or <uvm/uvm.h>.
 1.37  07-Sep-2010  macallan make this work with PMF hotkey events
Now the volume control buttons work on my Pismo
 1.36  05-Nov-2009  dyoung branches: 1.36.2; 1.36.4;
In awacs(4) and snapper(4), use deviter(9) instead of accessing
alldevs directly.

In pbms(4), delete some unused debugging macros, expand USB
compatibility macros, and add a child-detachment routine. Simplify
pbms(4) deactivation and detachment.

These changes are compile-tested, only.
 1.35  27-Aug-2008  jmcneill branches: 1.35.4;
PR#39414: No audio from awacs on PowerBook G3 (Firewire/Pismo)

Don't enable parallel output on PowerBook3,1 models.
 1.34  16-May-2008  macallan branches: 1.34.4;
struct device * -> device_t
 1.33  04-Nov-2007  macallan branches: 1.33.16; 1.33.18; 1.33.20; 1.33.22;
add a mixer control for the loopthrough channel that some awacs have - it
controls the volume of input data looped through to the output ( for
listening to what you record, it has no influence on recording level )
- defaults to zero.
 1.32  18-Oct-2007  macallan - make match() return 100 for awacs and only 1 for i2s
- correct gpio wiring for PowerMac3,3 / Gigabit G4
 1.31  17-Oct-2007  garbled 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.30  14-Aug-2007  macallan branches: 1.30.2; 1.30.4; 1.30.6;
fix a logic botch in the headphone wiring setup - what was thought to be
'screamer' specific is actually beige G3 specific.
 1.29  09-Jul-2007  ad branches: 1.29.4; 1.29.8;
Merge some of the less invasive changes from the vmlocking branch:

- kthread, callout, devsw API changes
- select()/poll() improvements
- miscellaneous MT safety improvements
 1.28  25-Mar-2007  macallan branches: 1.28.4;
automatically switch between speaker and headphone output, simplify mixer
controls to match snapper
XXX - the gpios to monitor audio jacks are wired differently on different
Macs, this is known to work right on beige G3, PowerBook 3400 and Performa
63xx, it should do The Right Thing on others as well but needs more testing
 1.27  25-Mar-2007  jmcneill Handle the input change interrupt, and automatically switch between
headphone and speaker as appropriate.
 1.26  28-Feb-2007  thorpej branches: 1.26.2; 1.26.4; 1.26.6;
TRUE -> true, FALSE -> false
 1.25  17-Jan-2007  macallan branches: 1.25.2;
use sgsmix if present and appropriate
 1.24  11-Dec-2005  christos branches: 1.24.20;
merge ktrace-lwp.
 1.23  15-Jan-2005  kent branches: 1.23.10;
ansify and KNF
 1.22  10-Jan-2005  kent merge kent-audio1 branch, which introduces audio filter pipeline to the MI
audio framework


Summary of changes:

* struct audio_params
- remove sw_code, factor, factor_denom, hw_sample_rate,
hw_encoding ,hw_precision, and hw_channels. Conversion information
is conveyed by stream_filter_list_t.
- change the type of sample_rate: u_long -> u_int
- add `validbits,' which represents the valid data size in
precision bits. It is required in order to distinguish 24/32bit
from 24/24bit or 32/32bit.

* audio_hw_if
- add two parameters to set_params()
stream_filter_list_t *pfil, stream_filter_list *rfil
A HW driver should set filter recipes for requested formats
- constify audio_params parameters of trigger_output() and
trigger_input(). They represent audio formats for the hardware.
- make open() and close() optional
- add int (AUMODE_PLAY or AUMODE_RECORD) and audio_params_t parameters
to round_blocksize()

* sw_code is replaced with stream_filter_t.
stream_filer_t converts audio data in an input buffer and writes
into another output buffer unlike sw_code, which converts data in
single buffer.
converters in dev/auconv.c, dev/mulaw.c, dev/aurateconv.c,
dev/tc/bba.c, dev/ic/msm6258.c, and arch/arm/iomd/vidcaudio.c are
reimplemented as stream_filter_t

* MI audio
- audiosetinfo() builds filter pipelines from stream_filter_list_t
filled by audio_hw_if::set_params()
- audiosetinfo() returns with EINVAL if mmapped and set_params()
requests filters
- audio_write(), audio_pint(), and audio_rint() invoke a filter
pipeline.
- ioctl() for FIONREAD, AUDIO_WSEEK, AUDIO_GETIOFFS,
AUDIO_GETOOFFS, and audio_prinfo::{seek,samples} for
AUDIO_GETINFO handle values for a buffer nearest to userland.

* add `struct device *' parameter to ac97_attach()

* all of audio HW drivers follow audio_hw_if and ac97 changes
 1.21  29-Oct-2004  yamt branches: 1.21.2;
constify audio_hw_if, midi_hw_if, and radio_hw_if.
 1.20  02-Nov-2003  thorpej Squish some recent compiler warnings.
 1.19  15-Jul-2003  lukem __KERNEL_RCSID()
 1.18  03-May-2003  wiz branches: 1.18.2;
DMA, not dma nor Dma.
 1.17  02-Apr-2003  thorpej Use PAGE_SIZE rather than NBPG.
 1.16  04-Mar-2003  soren Attach on recent TiBooks.
XXX The mixer doesn't work yet.
 1.15  13-Oct-2002  wiz Support 48kHz by using aurateconv.
Based on a patch by TAMURA Kent -- thanks!
 1.14  02-Oct-2002  thorpej Use CFATTACH_DECL().
 1.13  27-Sep-2002  thorpej Declare all cfattach structures const.
 1.12  03-Oct-2001  augustss branches: 1.12.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.11  19-Jun-2001  simonb branches: 1.11.2; 1.11.4;
Add/change prototypes so that macpcc builds with -Wstrict-prototypes.
 1.10  08-Jun-2001  matt Make macppc compile by default with -Wall -Wmissing-prototype in addition
to its currently enabled warnings. For the lack of a better place, most
global function prototype wound up in <machine/autoconf.h> unless there
was a better place for them. ofb_* structs renamed to offb_* to avoid
conflict with ofb_softc in <dev/ofw/openfirm.h>
 1.9  05-Apr-2001  tsubai Support uni-north based models. (XXX not complete)
 1.8  05-Apr-2001  tsubai Correct input volume settings.
 1.7  15-Mar-2001  tsubai Accept 8000Hz (XXX).
 1.6  15-Mar-2001  tsubai Add ulinear16 support.
Return EINVAL if specified rate is not available.
 1.5  12-Mar-2001  tsubai Round up block size to at least NBPG bytes.
 1.4  26-Feb-2001  wiz branches: 1.4.2;
add handling for the input channel selection/volume (no recording yet,
just the mixer interface)
 1.3  25-Jan-2001  wiz branches: 1.3.2;
Make output selection work -- you can use lineout now instead of the
internal loudspeakers.
 1.2  03-Nov-2000  tsubai branches: 1.2.2;
Don't match if nintr > 12 (more than 3 cells).
 1.1  25-Aug-2000  tsubai Add (experimental) awacs audio driver. Output (play) only.
 1.2.2.7  21-Apr-2001  bouyer Sync with HEAD
 1.2.2.6  27-Mar-2001  bouyer Sync with HEAD.
 1.2.2.5  12-Mar-2001  bouyer Sync with HEAD.
 1.2.2.4  11-Feb-2001  bouyer Sync with HEAD.
 1.2.2.3  22-Nov-2000  bouyer Sync with HEAD.
 1.2.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.2.2.1  03-Nov-2000  bouyer file awacs.c was added on branch thorpej_scsipi on 2000-11-20 20:12:56 +0000
 1.3.2.4  22-Mar-2001  he Pull up revisions 1.5-1.7 (requested by tsubai):
Round up block size to at least NBPG bytes.
Return EINVAL if specified sample rate is not available.
Fix 16bit ulinear bug, and enable ulinear.
 1.3.2.3  26-Feb-2001  he Apply patch (requested by wrstuden):
Make this compile on this release branch.
 1.3.2.2  04-Feb-2001  he Pull up revision 1.1 (new, requested by mycroft):
Add new driver for Apple sound chip.
 1.3.2.1  25-Jan-2001  he file awacs.c was added on branch netbsd-1-5 on 2001-02-04 20:22:48 +0000
 1.4.2.2  21-Jun-2001  nathanw Catch up to -current.
 1.4.2.1  09-Apr-2001  nathanw Catch up with -current.
 1.11.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.11.2.2  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.11.2.1  10-Jan-2002  thorpej Sync kqueue branch with -current.
 1.12.4.2  18-Oct-2002  nathanw Catch up to -current.
 1.12.4.1  03-Oct-2001  nathanw file awacs.c was added on branch nathanw_sa on 2002-10-18 02:38:34 +0000
 1.18.2.5  17-Jan-2005  skrll Sync with HEAD.
 1.18.2.4  02-Nov-2004  skrll Sync with HEAD.
 1.18.2.3  21-Sep-2004  skrll Fix the sync with head I botched.
 1.18.2.2  18-Sep-2004  skrll Sync with HEAD.
 1.18.2.1  03-Aug-2004  skrll Sync with HEAD
 1.21.2.2  09-Jan-2005  kent audio_hw_if change
* make open() and close() optional
* add int (AUMODE_PLAY or AUMODE_RECORD) and audio_params_t parameters
to round_blocksize()
 1.21.2.1  03-Jan-2005  kent adopt the filter pipeline framework
 1.23.10.4  15-Nov-2007  yamt sync with head.
 1.23.10.3  27-Oct-2007  yamt sync with head.
 1.23.10.2  03-Sep-2007  yamt sync with head.
 1.23.10.1  26-Feb-2007  yamt sync with head.
 1.24.20.1  01-Feb-2007  ad Sync with head.
 1.25.2.2  15-Apr-2007  yamt sync with head.
 1.25.2.1  12-Mar-2007  rmind Sync with HEAD.
 1.26.6.1  29-Mar-2007  reinoud Pullup to -current
 1.26.4.1  11-Jul-2007  mjf Sync with head.
 1.26.2.6  03-Dec-2007  ad Sync with HEAD.
 1.26.2.5  03-Dec-2007  ad Sync with HEAD.
 1.26.2.4  23-Oct-2007  ad Sync with head.
 1.26.2.3  20-Aug-2007  ad Sync with HEAD.
 1.26.2.2  15-Jul-2007  ad Sync with head.
 1.26.2.1  10-Apr-2007  ad Sync with head.
 1.28.4.5  03-Oct-2007  garbled Sync with HEAD
 1.28.4.4  14-Aug-2007  macallan sync with HEAD
 1.28.4.3  02-Aug-2007  macallan sync with HEAD
 1.28.4.2  14-Jun-2007  macallan fix some bus_spacification fallout
 1.28.4.1  11-May-2007  macallan request the correct interrupt type in a couple drivers - necessary since
these days we actually do something with the type argument
 1.29.8.3  04-Nov-2007  jmcneill Sync with HEAD.
 1.29.8.2  26-Oct-2007  joerg Sync with HEAD.

Follow the merge of pmap.c on i386 and amd64 and move
pmap_init_tmp_pgtbl into arch/x86/x86/pmap.c. Modify the ACPI wakeup
code to restore CR4 before jumping back into kernel space as the large
page option might cover that.
 1.29.8.1  16-Aug-2007  jmcneill Sync with HEAD.
 1.29.4.1  15-Aug-2007  skrll Sync with HEAD.
 1.30.6.2  13-Nov-2007  bouyer Sync with HEAD
 1.30.6.1  25-Oct-2007  bouyer Sync with HEAD.
 1.30.4.1  18-Oct-2007  yamt sync with head.
 1.30.2.1  06-Nov-2007  matt sync with HEAD
 1.33.22.2  18-Sep-2008  wrstuden Sync with wrstuden-revivesa-base-2.
 1.33.22.1  23-Jun-2008  wrstuden Sync w/ -current. 34 merge conflicts to follow.
 1.33.20.3  09-Oct-2010  yamt sync with head
 1.33.20.2  11-Mar-2010  yamt sync with head
 1.33.20.1  04-May-2009  yamt sync with head.
 1.33.18.1  18-May-2008  yamt sync with head.
 1.33.16.2  28-Sep-2008  mjf Sync with HEAD.
 1.33.16.1  02-Jun-2008  mjf Sync with HEAD.
 1.34.4.1  19-Oct-2008  haad Sync with HEAD.
 1.35.4.1  06-Nov-2012  riz Pull up following revision(s) (requested by phx in ticket #1816):
sys/arch/macppc/dev/awacs.c: revision 1.43
My PowerMac3,1 is using gpio4 to detect a connected headphone, and I would bet
that the same is true for PowerMac3,2.
 1.36.4.1  05-Mar-2011  rmind sync with head
 1.36.2.1  22-Oct-2010  uebayasi Sync with HEAD (-D20101022).
 1.39.4.1  05-Mar-2011  bouyer Sync with HEAD
 1.39.2.1  06-Jun-2011  jruoho Sync with HEAD.
 1.40.6.2  22-Nov-2011  jmcneill get rid of unused 'powerstate' callback in audio_hw_if
 1.40.6.1  22-Nov-2011  macallan adapt to jmcneill-audiomp3
from mrg@, minor fixes and testing by me
 1.40.4.2  16-Jan-2013  yamt sync with (a bit old) head
 1.40.4.1  17-Apr-2012  yamt sync with head
 1.42.8.2  03-Dec-2017  jdolecek update from HEAD
 1.42.8.1  20-Nov-2012  tls Resync to 2012-11-19 00:00:00 UTC
 1.42.4.1  19-Nov-2012  riz Pull up following revision(s) (requested by phx in ticket #666):
sys/arch/macppc/dev/awacs.c: revision 1.43
My PowerMac3,1 is using gpio4 to detect a connected headphone, and I would bet
that the same is true for PowerMac3,2.
 1.43.18.1  26-Jul-2016  pgoyette Sync with HEAD
 1.43.14.1  05-Oct-2016  skrll Sync with HEAD
 1.45.16.1  10-Jun-2019  christos Sync with HEAD
 1.46.2.3  04-May-2019  isaki Move dev/audio_if.h -> dev/audio/audio_if.h
 1.46.2.2  24-Apr-2019  isaki Adapt to audio2.
- Some models don't have SLINEAR_LE but only SLINEAR_BE is enough.
 1.46.2.1  21-Apr-2019  isaki Use C99 style struct initializer to audio_format.
 1.48.10.1  03-Apr-2021  thorpej Sync with HEAD.

RSS XML Feed