Home | History | Annotate | Download | only in pci
History log of /src/sys/dev/pci/gcscaudio.c
RevisionDateAuthorComments
 1.20  07-Feb-2024  msaitoh Remove ryo@'s mail addresses.
 1.19  29-Feb-2020  isaki round_blocksize must return a multiple of the framesize.
It's not divisible when blk=GCSCAUDI_PRD_SIZE_MAX and channels=4.
 1.18  08-Jun-2019  isaki branches: 1.18.2; 1.18.4;
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.17  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.16  09-Dec-2018  jdolecek branches: 1.16.2;
use pci_intr_establish_xname() everywhere
 1.15  01-Jun-2017  chs branches: 1.15.8; 1.15.10;
remove checks for failure after memory allocation calls that cannot fail:

kmem_alloc() with KM_SLEEP
kmem_zalloc() with KM_SLEEP
percpu_alloc()
pserialize_create()
psref_class_create()

all of these paths include an assertion that the allocation has not failed,
so callers should not assert that again.
 1.14  29-Mar-2014  christos branches: 1.14.6;
make pci_intr_string and eisa_intr_string take a buffer and a length
instead of relying in local static storage.
 1.13  31-Jan-2014  ryo fix a problem to set sample rate of AC97 codec.
 1.12  02-Mar-2012  nonaka branches: 1.12.2; 1.12.4;
convert to device_t.
 1.11  25-Nov-2011  jmcneill branches: 1.11.2;
remove an unnecessary call to vtbl->unlock
 1.10  25-Nov-2011  jmcneill need to hold thread lock when using AC97_IS_* macros
 1.9  24-Nov-2011  mrg 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.8  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.7  09-Jun-2011  joerg branches: 1.7.2; 1.7.4;
Use a format string when printing strings
 1.6  13-Nov-2010  uebayasi branches: 1.6.6;
Don't pull in the whole uvm(9) API to access only PAGE_SIZE and
some other constants. These are provided by sys/param.h now.
 1.5  24-Feb-2010  dyoung branches: 1.5.2; 1.5.4;
A pointer typedef entails trading too much flexibility to declare const
and non-const types, and the kernel uses both const and non-const
PMF qualifiers and device suspensors, so change the pmf_qual_t and
device_suspensor_t typedefs from "pointers to const" to non-pointer,
non-const types.
 1.4  08-Jan-2010  dyoung branches: 1.4.2;
Expand PMF_FN_* macros.
 1.3  26-Nov-2009  njoly Cleanup interrupt establish error messages. Do not mix
aprint_error/aprint_normal/printf calls for a single line.
 1.2  06-May-2009  cegger struct cfdata * -> cfdata_t, no functional changes intended.
 1.1  28-Dec-2008  jmcneill branches: 1.1.2; 1.1.4; 1.1.6; 1.1.8; 1.1.10;
PR# port-i386/40284: add AMD Geode CS5536 audio driver; written by
SHIMIZU Ryo <ryo@nerv.org>
 1.1.10.4  11-Mar-2010  yamt sync with head
 1.1.10.3  16-May-2009  yamt sync with head
 1.1.10.2  04-May-2009  yamt sync with head.
 1.1.10.1  28-Dec-2008  yamt file gcscaudio.c was added on branch yamt-nfs-mp on 2009-05-04 08:12:55 +0000
 1.1.8.2  01-May-2009  snj Pull up following revision(s) (requested by jmcneill in ticket #260):
sys/dev/pci/files.pci: revision 1.309
sys/dev/pci/gcscaudio.c: revision 1.1
sys/dev/pci/gcscaudioreg.h: revision 1.1
PR# port-i386/40284: add AMD Geode CS5536 audio driver; written by
SHIMIZU Ryo <ryo@nerv.org>
 1.1.8.1  28-Dec-2008  snj file gcscaudio.c was added on branch netbsd-5 on 2009-05-01 01:19:09 +0000
 1.1.6.1  13-May-2009  jym Sync with HEAD.

Commit is split, to avoid a "too many arguments" protocol error.
 1.1.4.2  19-Jan-2009  skrll Sync with HEAD.
 1.1.4.1  28-Dec-2008  skrll file gcscaudio.c was added on branch nick-hppapmap on 2009-01-19 13:18:25 +0000
 1.1.2.2  17-Jan-2009  mjf Sync with HEAD.
 1.1.2.1  28-Dec-2008  mjf file gcscaudio.c was added on branch mjf-devfs2 on 2009-01-17 13:28:59 +0000
 1.4.2.1  30-Apr-2010  uebayasi Sync with HEAD.
 1.5.4.2  21-Apr-2010  matt sync to netbsd-5
 1.5.4.1  24-Feb-2010  matt file gcscaudio.c was added on branch matt-nb5-mips64 on 2010-04-21 00:27:40 +0000
 1.5.2.2  12-Jun-2011  rmind sync with head
 1.5.2.1  05-Mar-2011  rmind sync with head
 1.6.6.1  23-Jun-2011  cherry Catchup with rmind-uvmplock merge.
 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 need to hold intr_lock when calling audio_pint/audio_rint
 1.7.4.2  19-Nov-2011  jmcneill add gcscaudio_get_locks()
 1.7.4.1  19-Nov-2011  jmcneill adapt to audiomp api changes
 1.7.2.2  22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.7.2.1  17-Apr-2012  yamt sync with head
 1.11.2.3  06-Mar-2012  mrg sync to -current
 1.11.2.2  06-Mar-2012  mrg sync to -current
 1.11.2.1  04-Mar-2012  mrg sync to latest -current.
 1.12.4.1  18-May-2014  rmind sync with head
 1.12.2.2  03-Dec-2017  jdolecek update from HEAD
 1.12.2.1  20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.14.6.1  28-Aug-2017  skrll Sync with HEAD
 1.15.10.2  08-Apr-2020  martin Merge changes from current as of 20200406
 1.15.10.1  10-Jun-2019  christos Sync with HEAD
 1.15.8.1  26-Dec-2018  pgoyette Sync with HEAD, resolve a few conflicts
 1.16.2.4  04-May-2019  isaki Move dev/audio_if.h -> dev/audio/audio_if.h
 1.16.2.3  04-May-2019  isaki Remove obsoleted methods in audio_hw_if.
- drain: is handled in audio upper layer now.
- mappage: is handled in audio upper layer now.
- setfd: no one uses and it's meaningless now.
 1.16.2.2  28-Apr-2019  isaki Adapt to audio2.
 1.16.2.1  21-Apr-2019  isaki Use C99 style struct initializer to audio_format.
 1.18.4.1  29-Feb-2020  ad Sync with head.
 1.18.2.1  21-Mar-2020  martin Pull up following revision(s) (requested by isaki in ticket #792):

sys/arch/amiga/dev/aucc.c: revision 1.48
sys/dev/pci/auixp.c: revision 1.49
sys/dev/pci/gcscaudio.c: revision 1.19
sys/dev/pci/auich.c: revision 1.159
sys/dev/sbus/dbri.c: revision 1.42
sys/dev/pci/auvia.c: revision 1.85
sys/dev/pci/auacer.c: revision 1.39

Drop 512 bytes limit on auvia_round_blocksize().

This fixes attach on 6 channels device.
PR kern/55017.

round_blocksize must return a multiple of the framesize.
aucc(4) supports 3 channels mode.

round_blocksize must return a multiple of the framesize
even if passed blocksize is greater than the upper limit.

round_blocksize must return a multiple of the framesize.

It's not divisible when blk=GCSCAUDI_PRD_SIZE_MAX and channels=4.
round_blocksize must return a multiple of the framesize
even if 6 channels mode.

I believe that keeping "good alignment" is just a wish, not constraint.

RSS XML Feed