Home | History | Annotate | Download | only in ebus
History log of /src/sys/dev/ebus/cs4231_ebus.c
RevisionDateAuthorComments
 1.39  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.38  16-Mar-2019  isaki branches: 1.38.2;
Use C99 style struct initializer to audio_hw_if.
 1.37  02-May-2017  martin branches: 1.37.10;
Make it compilable with AUDIODEBUG
 1.36  24-Jan-2017  martin branches: 1.36.4;
cs4231_ebus_round_blocksize: never return 0 as blocksize
 1.35  23-Nov-2011  jmcneill branches: 1.35.8; 1.35.26; 1.35.30; 1.35.34;
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.34  02-Jun-2011  christos branches: 1.34.2; 1.34.4;
split audiocs
 1.33  12-May-2009  cegger branches: 1.33.4; 1.33.6; 1.33.10;
struct device * -> device_t, no functional changes intended.
 1.32  12-May-2009  cegger struct cfdata * -> cfdata_t, no functional changes intended.
 1.31  31-Jan-2009  martin branches: 1.31.2;
Make it attach on JavaStation KRUPS again
 1.30  06-Jan-2009  mrg use the prom addresses except on MSIIEP.

this probably works on SB2000 now.
 1.29  17-Dec-2008  cegger make this compile
 1.28  16-Dec-2008  christos replace bitmask_snprintf(9) with snprintb(3)
 1.27  11-Dec-2008  mrg also attach if the "compatible" property matches, as seen on sb2000.
 1.26  29-Apr-2008  ad branches: 1.26.6; 1.26.8;
Replicate sbus fixes for PR kern/37540.
 1.25  08-Apr-2008  cegger branches: 1.25.2; 1.25.4;
use aprint_*_dev and device_xname
 1.24  03-Dec-2007  ad branches: 1.24.14;
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.23  19-Oct-2007  ad branches: 1.23.2;
machine/{bus,cpu,intr}.h -> sys/{bus,cpu,intr}.h
 1.22  15-Oct-2006  martin branches: 1.22.6; 1.22.8; 1.22.22; 1.22.24; 1.22.28;
Add missing initializer
 1.21  14-May-2006  elad branches: 1.21.8; 1.21.10;
integrate kauth.
 1.20  29-Mar-2006  thorpej Use device_private().
 1.19  11-Dec-2005  christos branches: 1.19.4; 1.19.6; 1.19.8; 1.19.10; 1.19.12;
merge ktrace-lwp.
 1.18  27-Feb-2005  perry branches: 1.18.4;
nuke trailing whitespace
 1.17  11-Jan-2005  kent branches: 1.17.2; 1.17.4;
ansify and KNF
 1.16  11-Jan-2005  kent fix compilation errors
 1.15  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.14  29-Oct-2004  yamt branches: 1.14.2;
constify audio_hw_if, midi_hw_if, and radio_hw_if.
 1.13  10-Sep-2003  uwe Use EBDMA_BURST_SIZE_16. Introduce EBus specific round_blocksize to
make block size multiple of 16 words. No point in using
round_buffersize that returns the argument unchanged, so just NULL it
in audio_hw_if.
 1.12  14-Jul-2003  lukem add missing __KERNEL_RCSID()
 1.11  03-May-2003  wiz branches: 1.11.2;
DMA, not dma nor Dma.
 1.10  10-Dec-2002  pk Remove the `flags' argument from bus_intr_establish().
 1.9  02-Oct-2002  thorpej Add trailing ; to CFATTACH_DECL.
 1.8  30-Sep-2002  thorpej Use CFATTACH_DECL().
 1.7  27-Sep-2002  thorpej Declare all cfattach structures const.
 1.6  04-Apr-2002  uwe branches: 1.6.6;
Prettify error message.
 1.5  22-Mar-2002  martin branches: 1.5.2;
Fix some handle/tag confusion. This makes it compile on sparc64 again.

Since sparc ignores tag's (/brick sparc) this slipped through when testing
on sparc.
 1.4  21-Mar-2002  eeh Do not even bother trying to use the mappings provided by the PROM.
 1.3  21-Mar-2002  uwe Drop BUS_SPACE_MAP_LINEAR and properly bus_space_*-ify this so that it
uses accessors. Requested by eeh.
 1.2  12-Mar-2002  uwe Fix whitespace nits (oops).
 1.1  12-Mar-2002  uwe Rework the driver to add EBus DMA support and improve APC DMA support.
Audio-related stuff is left almost intact.

* support audiocs at ebus playback and capture
tested on krups and u5 (thanks, martin)
* make first attempt at supporting audiocs at sbus capture
* nb: full-duplex is not tested
* while here, fix CSAUDIO_MONITOR_MUTE to be of CSAUDIO_MONITOR_CLASS
i.e. outputs.monitor.mute -> monitor.monitor.mute

Ok by pk, eeh.
 1.5.2.5  11-Dec-2002  thorpej Sync with HEAD.
 1.5.2.4  18-Oct-2002  nathanw Catch up to -current.
 1.5.2.3  17-Apr-2002  nathanw Catch up to -current.
 1.5.2.2  01-Apr-2002  nathanw Catch up to -current.
(CVS: It's not just a program. It's an adventure!)
 1.5.2.1  22-Mar-2002  nathanw file cs4231_ebus.c was added on branch nathanw_sa on 2002-04-01 07:45:12 +0000
 1.6.6.3  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.2  23-Jun-2002  jdolecek catch up with -current on kqueue branch
 1.6.6.1  04-Apr-2002  jdolecek file cs4231_ebus.c was added on branch kqueue on 2002-06-23 17:46:00 +0000
 1.11.2.6  04-Mar-2005  skrll Sync with HEAD.

Hi Perry!
 1.11.2.5  17-Jan-2005  skrll Sync with HEAD.
 1.11.2.4  02-Nov-2004  skrll Sync with HEAD.
 1.11.2.3  21-Sep-2004  skrll Fix the sync with head I botched.
 1.11.2.2  18-Sep-2004  skrll Sync with HEAD.
 1.11.2.1  03-Aug-2004  skrll Sync with HEAD
 1.14.2.1  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.17.4.1  19-Mar-2005  yamt sync with head. xen and whitespace. xen part is not finished.
 1.17.2.1  29-Apr-2005  kent sync with -current
 1.18.4.4  07-Dec-2007  yamt sync with head
 1.18.4.3  27-Oct-2007  yamt sync with head.
 1.18.4.2  30-Dec-2006  yamt sync with head.
 1.18.4.1  21-Jun-2006  yamt sync with head.
 1.19.12.1  31-Mar-2006  tron Merge 2006-03-31 NetBSD-current into the "peter-altq" branch.
 1.19.10.1  19-Apr-2006  elad sync with head.
 1.19.8.1  01-Apr-2006  yamt sync with head.
 1.19.6.1  22-Apr-2006  simonb Sync with head.
 1.19.4.1  09-Sep-2006  rpaulo sync with head
 1.21.10.1  22-Oct-2006  yamt sync with head
 1.21.8.1  18-Nov-2006  ad Sync with head.
 1.22.28.1  25-Oct-2007  bouyer Sync with HEAD.
 1.22.24.2  09-Jan-2008  matt sync with HEAD
 1.22.24.1  06-Nov-2007  matt sync with HEAD
 1.22.22.2  09-Dec-2007  jmcneill Sync with HEAD.
 1.22.22.1  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.22.8.1  23-Oct-2007  ad Sync with head.
 1.22.6.1  27-Feb-2007  ad Add MP locking for audio drivers.
 1.23.2.1  08-Dec-2007  mjf Sync with HEAD.
 1.24.14.2  17-Jan-2009  mjf Sync with HEAD.
 1.24.14.1  02-Jun-2008  mjf Sync with HEAD.
 1.25.4.3  16-May-2009  yamt sync with head
 1.25.4.2  04-May-2009  yamt sync with head.
 1.25.4.1  16-May-2008  yamt sync with head.
 1.25.2.1  18-May-2008  yamt sync with head.
 1.26.8.2  03-Mar-2009  skrll Sync with HEAD.
 1.26.8.1  19-Jan-2009  skrll Sync with HEAD.
 1.26.6.1  13-Dec-2008  haad Update haad-dm branch to haad-dm-base2.
 1.31.2.1  13-May-2009  jym Sync with HEAD.

Commit is split, to avoid a "too many arguments" protocol error.
 1.33.10.1  23-Jun-2011  cherry Catchup with rmind-uvmplock merge.
 1.33.6.1  06-Jun-2011  jruoho Sync with HEAD.
 1.33.4.1  12-Jun-2011  rmind sync with head
 1.34.4.4  23-Nov-2011  macallan initialize locks
now this works on my U60
 1.34.4.3  22-Nov-2011  jmcneill get rid of unused 'powerstate' callback in audio_hw_if
 1.34.4.2  20-Nov-2011  mrg complete the port to audiomp: don't forget to take sc_intr_lock in the
hardware interrupt routines.
 1.34.4.1  20-Nov-2011  mrg make audiocs(4) compile. i don't have anything handy to actually test
this easily, but this was just updating the alloc/free to kmem and
hooking into ad1848_get_locks().
 1.34.2.1  17-Apr-2012  yamt sync with head
 1.35.34.1  21-Apr-2017  bouyer Sync with HEAD
 1.35.30.1  20-Mar-2017  pgoyette Sync with HEAD
 1.35.26.2  28-Aug-2017  skrll Sync with HEAD
 1.35.26.1  05-Feb-2017  skrll Sync with HEAD
 1.35.8.1  03-Dec-2017  jdolecek update from HEAD
 1.36.4.1  11-May-2017  pgoyette Sync with HEAD
 1.37.10.1  10-Jun-2019  christos Sync with HEAD
 1.38.2.2  04-May-2019  isaki Move dev/audio_if.h -> dev/audio/audio_if.h
 1.38.2.1  21-Apr-2019  isaki Adapt ad1848/cs4231 families to audio2.

RSS XML Feed