Home | History | Annotate | Download | only in isa
History log of /src/sys/dev/isa/ym.c
RevisionDateAuthorComments
 1.50  07-Aug-2021  thorpej Merge thorpej-cfargs2.
 1.49  26-Apr-2021  thorpej branches: 1.49.6;
Be explicit about using the "ym" interface attribute when attaching
the "opl" and "mpu" instances.
 1.48  24-Apr-2021  thorpej branches: 1.48.2;
Merge thorpej-cfargs branch:

Simplify and make extensible the config_search() / config_found() /
config_attach() interfaces: rather than having different variants for
which arguments you want pass along, just have a single call that
takes a variadic list of tag-value arguments.

Adjust all call sites:
- Simplify wherever possible; don't pass along arguments that aren't
actually needed.
- Don't be explicit about what interface attribute is attaching if
the device only has one. (More simplification.)
- Add a config_probe() function to be used in indirect configuiration
situations, making is visibly easier to see when indirect config is
in play, and allowing for future change in semantics. (As of now,
this is just a wrapper around config_match(), but that is an
implementation detail.)

Remove unnecessary or redundant interface attributes where they're not
needed.

There are currently 5 "cfargs" defined:
- CFARG_SUBMATCH (submatch function for direct config)
- CFARG_SEARCH (search function for indirect config)
- CFARG_IATTR (interface attribte)
- CFARG_LOCATORS (locators array)
- CFARG_DEVHANDLE (devhandle_t - wraps OFW, ACPI, etc. handles)

...and a sentinel value CFARG_EOL.

Add some extra sanity checking to ensure that interface attributes
aren't ambiguous.

Use CFARG_DEVHANDLE in MI FDT, OFW, and ACPI code, and macppc and shark
ports to associate those device handles with device_t instance. This
will trickle trough to more places over time (need back-end for pre-OFW
Sun OBP; any others?).
 1.47  29-Feb-2020  isaki branches: 1.47.8;
Remove rounding by 4 bytes on round_blocksize().
For drivers which supports only 16bit * 2channels sampling,
rounding by 4 bytes no longer meaningful.
 1.46  08-May-2019  isaki branches: 1.46.4;
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.45  16-Mar-2019  isaki branches: 1.45.2;
Use C99 style struct initializer to audio_hw_if.
 1.44  08-Nov-2013  christos branches: 1.44.30;
fix unused variable warnings
 1.43  24-Nov-2011  mrg branches: 1.43.8; 1.43.12;
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.42  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.41  02-Jun-2011  tsutsui branches: 1.41.2; 1.41.4;
Split device_t/softc of all ad1848 variants properly. Compile test only.

Please check all attribute users in all files.* on device_t/softc split.

XXX: not sure if gus(4) needs device_t in ad1848_isa_softc
 1.40  02-Jun-2011  nonaka fix compile failure.
 1.39  24-Feb-2010  dyoung branches: 1.39.2; 1.39.4; 1.39.8;
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.38  08-Jan-2010  dyoung branches: 1.38.2;
Expand PMF_FN_* macros.
 1.37  02-Jan-2010  christos make rhis compile.
 1.36  02-Jan-2010  christos convert to pmf
 1.35  28-Apr-2008  martin branches: 1.35.12;
Remove clause 3 and 4 from TNF licenses
 1.34  08-Apr-2008  cegger branches: 1.34.2; 1.34.4;
use aprint_*_dev and device_xname
 1.33  01-Apr-2008  xtraeme Fix fallout from device_t/softc split to mpu(4):
always pass the mpu_softc to mpu_intr(). Found by Takeshi Nakayama.
 1.32  19-Oct-2007  ad branches: 1.32.16;
machine/{bus,cpu,intr}.h -> sys/{bus,cpu,intr}.h
 1.31  09-Jul-2007  ad branches: 1.31.6; 1.31.8; 1.31.12;
Merge some of the less invasive changes from the vmlocking branch:

- kthread, callout, devsw API changes
- select()/poll() improvements
- miscellaneous MT safety improvements
 1.30  16-Feb-2007  ad branches: 1.30.4; 1.30.6; 1.30.8;
Fix spllowersoftclock() fallout.
 1.29  24-Sep-2006  jmcneill Add "name" parameter to powerhook_establish, to aid debugging. No objections
on tech-kern@
 1.28  03-Sep-2006  christos branches: 1.28.2; 1.28.4;
add missing initializer.
 1.27  24-Dec-2005  perry branches: 1.27.4; 1.27.8;
Remove leading __ from __(const|inline|signed|volatile) -- it is obsolete.
 1.26  11-Dec-2005  christos merge ktrace-lwp.
 1.25  30-May-2005  christos branches: 1.25.2;
- add const
- avoid variable shadowing.
 1.24  14-Jan-2005  kent ansify and KNF
 1.23  29-Oct-2004  yamt constify audio_hw_if, midi_hw_if, and radio_hw_if.
 1.22  22-Apr-2004  itojun sprintf -> snprintf
 1.21  10-Mar-2002  itohy branches: 1.21.12;
Add explicit support of OPL3-SA2 (YMF711).
Not well tested....
 1.20  26-Feb-2002  itohy 1. Change equalizer (treble, bass) to be ``flat'' if the values set at
the center position (128), so as to be compatible with other drivers.
The equalizer is enhancement only, and the values < 128 don't take
any effect.

Yeah, this causes spec change....
For equalization.treble and equalization.bass, the relation between
old and new value is

new_value = (old_value / 2) + 128.

(Note this does not apply to equalization.surround.)

2. Support ++ and -- of mixerctl(1) for stepping volume variables.

3. Fix problem where the chip is not powered up
when the mic input is unmuted.
 1.19  13-Nov-2001  lukem add RCSID
 1.18  03-Oct-2001  augustss 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.17  26-Nov-2000  takemura branches: 1.17.2; 1.17.4; 1.17.6;
Add new powerhook argument values, PWR_SOFTSUSPEND, PWR_SOFTSTANDBY and
PWR_SOFTRESUME. Apm calls powerhook with the values in normal interrupt
priority level while others are protected with splhigh().
 1.16  04-Sep-2000  itohy Move ym_mixer_set_port() (if used) during attach AFTER initialization of
power ctl stuff, or it makes unwanted changes to the CODEC settings.
 1.15  04-Jul-2000  augustss MAke sure bass&treble start in their mid position.
 1.14  23-Mar-2000  thorpej branches: 1.14.4;
New callout mechanism with two major improvements over the old
timeout()/untimeout() API:
- Clients supply callout handle storage, thus eliminating problems of
resource allocation.
- Insertion and removal of callouts is constant time, important as
this facility is used quite a lot in the kernel.

The old timeout()/untimeout() API has been removed from the kernel.
 1.13  27-Dec-1999  itohy - Unmuting an external input source (CD playback, line input, and speaker)
now prevents power down/save the device.
The external input sources are muted by default at initialization.
- Change "power.power.*" to "power.save.*". Sorry, spec change....
- Shorten tsleep(9) ident string for "ps l".
 1.12  07-Oct-1999  itohy branches: 1.12.2;
Oops! Make it compile again.
 1.11  07-Oct-1999  itohy Fix power-related init code.
Change the default mixer setting to make wave and OPL3 volume even.
Mute the chip during attach not to make noise.
 1.10  05-Oct-1999  itohy branches: 1.10.2;
New ym driver.
1. Add power control to reduce power consumption.
The behavior can be controlled by mixerctl(1).
2. Add suspend/resume hook to keep the parameters.
Currently this includes CODEC and control registers but
does not include the DMA state. FIXME.
3. Support "opl at ym" and "mpu at ym" attachment.
Actually, this is required for power control.
4. Add support for the on-chip 3D enhancement hardware.
This includes bass/treble enhancement, wide stereo, and
the equalization mode. This can be controlled by mixerctl(1).
5. Make "audioctl -w play.gain=xxx" work like as
"mixerctl -w inputs.dac=xxx" and now it changes
the wave output volume correctly.
6. Support hardware master volume switches.
7. Change formula of calculating gain so that all the levels
should be used equally.
8. Change "audioctl name" to "OPL3-SA3" and "audioctl version"
to the version of the chip.
 1.9  18-Feb-1999  mycroft Add separate halt_input and halt_output methods in ad1848_isa, which disable
the DMA channel.
 1.8  17-Feb-1999  mycroft Use the trigger interface, and clean up a pile of cruft.
 1.7  17-Feb-1999  mycroft Pass the direction to the allocm and round_buffersize methods.
Some drivers need this to properly allocate DMAable memory.
 1.6  11-Oct-1998  augustss Call correct ad1848 attach routine. Fixes PR 6269.
 1.5  25-Aug-1998  pk Split the AD1848 driver into MI (dev/ic/ad1848.c) and ISA parts.
 1.4  17-Aug-1998  augustss * Redo the way the way the MIDI driver attaches to audio devices.
* Improve the midisyn layer a little.
* Add a driver for the Yamaha OPL[23] FM synths.
The opl driver is not finished yet; it sounds pretty awful.

For some strange reason I cannot get any FM sound from my SB64 cards,
but a regular SB16 works fine.
 1.3  17-Jun-1998  augustss Remove a bunch of totally unnecessary #include <machine/pio.h>
left over from the olden days.
 1.2  21-May-1998  augustss Add a newline.
KNF.
 1.1  20-May-1998  augustss Add a Yamaha OPL3-SA3 driver and clean up all AD1848 drivers.
Submitted by Constantine Sapuntzakis <csapuntz@reeducation-labor.lcs.mit.edu>
and originally written for OpenBSD.
 1.10.2.1  27-Dec-1999  wrstuden Pull up to last week's -current.
 1.12.2.2  08-Dec-2000  bouyer Sync with HEAD.
 1.12.2.1  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.14.4.4  27-Mar-2002  he Pull up revisions 1.19-1.21 (via patch, requested by itohy):
Several changes to wss-compatible audio devices:
o Fix ADPCM playback/recording
o Add explicit support for OPL3-SA2 (YMF711), fixes PR#14819
o Add AD1845 support
o other minor bugfixes and cleanups
 1.14.4.3  06-May-2001  he Pull up revision 1.17 (requested by he):
Add new powerhook argument values, PWR_SOFTSUSPEND, PWR_SOFTSTANDBY and
PWR_SOFTRESUME. Apm calls powerhook with the values in normal interrupt
priority level while others are protected with splhigh().
 1.14.4.2  04-Sep-2000  itohy Pull up revision 1.16 (requested by itohy, approved by jhawk):
Move ym_mixer_set_port() (if used) during attach AFTER initialization of
power ctl stuff, or it makes unwanted changes to the CODEC settings.
Split YM_VOL_EQUAL macro into YM_ENHANCE_TREBLE and YM_ENHANCE_BASS.
 1.14.4.1  07-Aug-2000  augustss Pull up 1.14-1.15. Start tone controls in middle position.
Approved by thorpej.
 1.17.6.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.17.4.2  16-Mar-2002  jdolecek Catch up with -current.
 1.17.4.1  10-Jan-2002  thorpej Sync kqueue branch with -current.
 1.17.2.6  10-Jul-2002  nathanw Don't need curlwp here.
 1.17.2.5  24-Jun-2002  nathanw Curproc->curlwp renaming.

Change uses of "curproc->l_proc" back to "curproc", which is more like the
original use. Bare uses of "curproc" are now "curlwp".

"curproc" is now #defined in proc.h as ((curlwp) ? (curlwp)->l_proc) : NULL)
so that it is always safe to reference curproc (*de*referencing curproc
is another story, but that's always been true).
 1.17.2.4  01-Apr-2002  nathanw Catch up to -current.
(CVS: It's not just a program. It's an adventure!)
 1.17.2.3  28-Feb-2002  nathanw Catch up to -current.
 1.17.2.2  14-Nov-2001  nathanw Catch up to -current.
 1.17.2.1  08-Oct-2001  nathanw Catch up to -current.
 1.21.12.6  10-Nov-2005  skrll Sync with HEAD. Here we go again...
 1.21.12.5  17-Jan-2005  skrll Sync with HEAD.
 1.21.12.4  02-Nov-2004  skrll Sync with HEAD.
 1.21.12.3  21-Sep-2004  skrll Fix the sync with head I botched.
 1.21.12.2  18-Sep-2004  skrll Sync with HEAD.
 1.21.12.1  03-Aug-2004  skrll Sync with HEAD
 1.25.2.5  27-Oct-2007  yamt sync with head.
 1.25.2.4  03-Sep-2007  yamt sync with head.
 1.25.2.3  26-Feb-2007  yamt sync with head.
 1.25.2.2  30-Dec-2006  yamt sync with head.
 1.25.2.1  21-Jun-2006  yamt sync with head.
 1.27.8.1  14-Sep-2006  yamt sync with head.
 1.27.4.1  09-Sep-2006  rpaulo sync with head
 1.28.4.1  22-Oct-2006  yamt sync with head
 1.28.2.1  18-Nov-2006  ad Sync with head.
 1.30.8.1  11-Jul-2007  mjf Sync with head.
 1.30.6.2  23-Oct-2007  ad Sync with head.
 1.30.6.1  01-Jul-2007  ad Adapt to callout API change.
 1.30.4.1  27-Feb-2007  ad Add MP locking for audio drivers.
 1.31.12.1  25-Oct-2007  bouyer Sync with HEAD.
 1.31.8.1  06-Nov-2007  matt sync with HEAD
 1.31.6.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.32.16.2  02-Jun-2008  mjf Sync with HEAD.
 1.32.16.1  03-Apr-2008  mjf Sync with HEAD.
 1.34.4.2  11-Mar-2010  yamt sync with head
 1.34.4.1  16-May-2008  yamt sync with head.
 1.34.2.1  18-May-2008  yamt sync with head.
 1.35.12.2  12-Dec-2008  ad Checkpoint work in progress.
 1.35.12.1  11-Dec-2008  ad Checkpoint work in progress.
 1.38.2.1  30-Apr-2010  uebayasi Sync with HEAD.
 1.39.8.1  23-Jun-2011  cherry Catchup with rmind-uvmplock merge.
 1.39.4.1  06-Jun-2011  jruoho Sync with HEAD.
 1.39.2.1  12-Jun-2011  rmind sync with head
 1.41.4.2  22-Nov-2011  jmcneill get rid of unused 'powerstate' callback in audio_hw_if
 1.41.4.1  19-Nov-2011  jmcneill port ad-audiomp2 branch changes to 5.99.56
todo:
- port ad-audiomp2 pcppi changes
- these drivers need to be fixed:
- emuxki
- gcscaudio
- hdafg
- uaudio
- umidi
- MD audio drivers
 1.41.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.41.2.1  17-Apr-2012  yamt sync with head
 1.43.12.1  18-May-2014  rmind sync with head
 1.43.8.1  20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.44.30.2  08-Apr-2020  martin Merge changes from current as of 20200406
 1.44.30.1  10-Jun-2019  christos Sync with HEAD
 1.45.2.3  04-May-2019  isaki Move dev/audio_if.h -> dev/audio/audio_if.h
 1.45.2.2  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.45.2.1  21-Apr-2019  isaki Adapt ad1848/cs4231 families to audio2.
 1.46.4.1  29-Feb-2020  ad Sync with head.
 1.47.8.1  21-Mar-2021  thorpej Give config_found() the same variadic arguments treatment as
config_search(). This commit only adds the CFARG_EOL sentinel
to the existing config_found() calls. Conversion of config_found_sm_loc()
and config_found_ia() call sites will be in subsequent commits.
 1.48.2.1  13-May-2021  thorpej Sync with HEAD.
 1.49.6.1  04-Aug-2021  thorpej Adapt to CFARGS().

RSS XML Feed