#
3627e77d |
| 02-Apr-2007 |
Ariff Abdullah <ariff@FreeBSD.org> |
No need to track every closing instance, and put busy counter to rest in its single bit coffin.
|
Revision tags: release/6.2.0_cvs, release/6.2.0 |
|
#
a580b31a |
| 26-Nov-2006 |
Ariff Abdullah <ariff@FreeBSD.org> |
Welcome to Once-a-year Sound Mega-Commit. Enjoy numerous updates and fixes in every sense.
General -------
- Multichannel safe, endian safe, format safe * Large part of critical pcm filters such
Welcome to Once-a-year Sound Mega-Commit. Enjoy numerous updates and fixes in every sense.
General -------
- Multichannel safe, endian safe, format safe * Large part of critical pcm filters such as vchan.c, feeder_rate.c, feeder_volume.c, feeder_fmt.c and feeder.c has been rewritten so that using them does not cause the pcm data to be converted to 16bit little endian. * Macrosses for accessing pcm data safely are defined within sound.h in the form of PCM_READ_* / PCM_WRITE_* * Currently, most of them are probably limited for mono/stereo handling, but the future addition of true multichannel will be much easier.
- Low latency operation * Well, this require lot more works to do not just within sound driver, but we're heading towards right direction. Buffer/block sizing within channel.c is rewritten to calculate precise allocation for various combination of sample/data/rate size. As a result, applying correct SNDCTL_DSP_POLICY value will achive expected latency behaviour simmilar to what commercial 4front driver do. * Signal handling fix. ctrl+c of "cat /dev/zero > /dev/dsp" does not result long delay. * Eliminate sound truncation if the sound data is too small. DIY: 1) Download / extract http://people.freebsd.org/~ariff/lowlatency/shortfiles.tar.gz 2) Do a comparison between "cat state*.au > /dev/dsp" and "for x in state*.au ; do cat $x > /dev/dsp ; done" - there should be no "perceivable" differences. Double close for PR kern/31445.
CAVEAT: Low latency come with (unbearable) price especially for poorly written applications. Applications that trying to act smarter by requesting (wrong) blocksize/blockcount will suffer the most. Fixup samples/patches can be found at: http://people.freebsd.org/~ariff/ports/
- Switch minimum/maximum sampling rate limit to "1" and "2016000" (48k * 42) due to closer compatibility with 4front driver. Discussed with: marcus@ (long time ago?)
- All driver specific sysctls in the form of "hw.snd.pcm%d.*" have been moved to their own dev sysctl nodes, notably: hw.snd.pcm%d.vchans -> dev.pcm.%d.vchans Bump __FreeBSD_version.
Driver specific ---------------
- Ditto for sysctls.
- snd_atiixp, snd_es137x, snd_via8233, snd_hda * Numerous cleanups and fixes. * _EXPERIMENTAL_ polling mode support using simple callout_* mechanisme. This was intended for pure debugging and latency measurement, but proven good enough in few unexpected and rare cases (such as problematic shared IRQ with GIANT devices - USB). Polling can be enabled/disabled through dev.pcm.0.polling. Disabled by default.
- snd_ich * Fix possible overflow during speed calibration. Delay final initialization (pcm_setstatus) after calibration finished. PR: kern/100169 Tested by: Kevin Overman <oberman@es.net> * Inverted EAPD for few Nec VersaPro. PR: kern/104715 Submitted by: KAWATA Masahiko <kawata@mta.biglobe.ne.jp>
Thanks to various people, notably Joel Dahl, Yuriy Tsibizov, Kevin Oberman, those at #freebsd-azalia @ freenode and others for testing.
Joel Dahl will do the manpage update.
show more ...
|
#
4bc4dc4c |
| 26-Nov-2006 |
Alexander Leidinger <netchild@FreeBSD.org> |
MFP4 (109713): Add OSS_GETVERSION ioctl for compatibility.
Some ports expect this and fail to compile on -current ATM.
Submitted by: ryanb
|
#
8ddbd405 |
| 30-Sep-2006 |
Ariff Abdullah <ariff@FreeBSD.org> |
The addition of few more 32bit integer into struct snd_mixer causing an accidental MIXER_SIZE overflow. Use 8bit integer instead of 32bit to reduce the kludge size.
Noticed by: tegge
|
#
18f45365 |
| 29-Sep-2006 |
Ariff Abdullah <ariff@FreeBSD.org> |
Fix pointer dereference before NULL pointer checking.
Noticed by: netchild CID: 243889 Found by: Coverity Prevent (TM)
|
#
7699548f |
| 28-Sep-2006 |
Ariff Abdullah <ariff@FreeBSD.org> |
Various fixups, especially for the upcomming High Definition Audio commit.
1) sys/dev/sound/pcm/sound.h sys/dev/sound/pcm/channel.c * Be more specific: SD_F_SOFTVOL -> SD_F_SOFTPCMVOL 2) sys/d
Various fixups, especially for the upcomming High Definition Audio commit.
1) sys/dev/sound/pcm/sound.h sys/dev/sound/pcm/channel.c * Be more specific: SD_F_SOFTVOL -> SD_F_SOFTPCMVOL 2) sys/dev/sound/pcm/mixer.[ch] * Implement mix_setparentchild() mix_setrealdev() mix_getparent() mix_getchild() The purpose of these functions is implement relative volume adjustment, such as to tie two or more mixer device into a single logical device. Usefull for the upcoming HDA driver and few AC97 codec (such as AD1981B) where the master volume "vol" need to be implemented using this logical manner. 3) sys/dev/sound/pcm/ac97_patch.[ch] * Patch for AD1981B codec to enable (automuting) headphone jack sense. 4) sys/dev/sound/pcm/ac97.c * Implement proper logical master volume for AD9181B codec through various mix_set{parentchild,realdev}(). Tie both "ogain" (headphone volume) and "phone" (speaker/lineout) to a logical "vol". 5) sys/dev/sound/pcm/usb/uaudio_pcm.c * ditto, for "vol" -> { "pcm" }.
MFC after: 1 month
show more ...
|
#
18c15b59 |
| 24-Sep-2006 |
Alexander Leidinger <netchild@FreeBSD.org> |
Fix uninitialized variable warning.
Submitted by: dhw Reviewed by: ryanb
|
#
b611c801 |
| 23-Sep-2006 |
Alexander Leidinger <netchild@FreeBSD.org> |
MFp4 the sound Google Summer of Code project:
The goal was to sync with the OSSv4 API 4Front Technologies uses in their proprietary OSS driver. This was successful as far as possible. The part of th
MFp4 the sound Google Summer of Code project:
The goal was to sync with the OSSv4 API 4Front Technologies uses in their proprietary OSS driver. This was successful as far as possible. The part of the API which is stable is implemented, for the rest there are some stubs already.
New system ioctls: - SNDCTL_SYSINFO - obtain audio system info (version, # of audio/midi/ mixer devices, etc.) - SNDCTL_AUDIOINFO - fetch details about a specific audio device - SNDCTL_MIXERINFO - fetch details about a specific mixer device
New audio ioctls: - Sync groups (SNDCTL_DSP_SYNCGROUP/SNDCTL_DSP_SYNCSTART) which allow triggered playback/recording on multiple devices (even across processes simultaneously). - Peak meters (SNDCTL_DSP_GETIPEAKS/SNDCTL_DSP_GETOPEAKS) - can query audio drivers for peak levels (needs driver support, disabled for now). - Per channel playback/recording levels - SNDCTL_DSP_{GET,SET}{PLAY,REC}VOL. Note that these are still in name only, just wrapping around the AC97-style mixer at the moment. The next step is to push them down to the drivers.
Audio ioctls still under development by 4Front (for which stubs may exist in this commit): - SNDCTL_GETNAME, SNDCTL_{GET,SET}{SONG,LABEL} - SNDCTL_DSP_{GET,SET}_CHNORDER - SNDCTL_MIX_ENUMINFO, SNDCTL_MIX_EXTINFO - (might be documented enough in the OSS releases to work on this. These ioctls cover the cool "twiddle any knob on your card" features.)
Missing: - SNDCTL_DSP_COOKEDMODE -- this ioctl is used to give applications direct access to a card's buffers, bypassing the feeder architecture. It's a toughy -- "someone" needs to decide : (a) if this is desireable, and (b) if it's reasonably feasible.
Updates for driver writers: So far, only two routines to the channel class (in channel_if.m) are added. One is for fetching a list of discrete supported playback/recording rates of a channel, and the other is for fetching peak level info (useful for drawing peak meters). Interested parties may want to help pushing down SNDCTL_DSP_{GET,SET}{PLAY,REC}VOL into the drivers.
To use the new stuff you need to rebuild the sound drivers or your kernel (depending on if you use modules or not) and to install soundcard.h (a buildworld/installworld handles this).
Sponsored by: Google SoC 2006 Submitted by: ryanb Many thanks to: 4Front Technologies for their cooperation, explanations and the nice license of their soundcard.h.
show more ...
|
Revision tags: release/5.5.0_cvs, release/5.5.0, release/6.1.0_cvs, release/6.1.0 |
|
#
3fdb3676 |
| 21-Mar-2006 |
Ariff Abdullah <ariff@FreeBSD.org> |
Apply more thorough fixes while dealing with device opening and closing:
- Determine open direction using 'flags', not 'mode'. This bug exist since past 4 years. - Don't allow opening the same dev
Apply more thorough fixes while dealing with device opening and closing:
- Determine open direction using 'flags', not 'mode'. This bug exist since past 4 years. - Don't allow opening the same device twice, be it in a same or different direction. - O_RDWR is allowed, provided that it is done by a single open (for example by mixer(8)) and the underlying hardware support true full-duplex operation. - Do various paranoid checking in case other process/thread trying to hijack the same device twice (or more).
MFC after: 5 days
show more ...
|
#
80138937 |
| 14-Nov-2005 |
Ariff Abdullah <ariff@FreeBSD.org> |
ac97.c: - Added new codec id for CX20468-21 and VIA1617A. Submitted by: Chen Lihong <lihong.chen@gmail.com> - Re-enable SOUND_MIXER_IGAIN, but set the default level as 0 (mute) Suggested by:
ac97.c: - Added new codec id for CX20468-21 and VIA1617A. Submitted by: Chen Lihong <lihong.chen@gmail.com> - Re-enable SOUND_MIXER_IGAIN, but set the default level as 0 (mute) Suggested by: luigi
mixer.c: - Set default value for SOUND_MIXER_IGAIN as 0 (mute) to avoid feedback problems on some laptops (was disabled by jhb during ac97.c revision 1.42).
Approved by: netchild (mentor)
show more ...
|
#
8be20fbe |
| 03-Nov-2005 |
Ariff Abdullah <ariff@FreeBSD.org> |
Appropriate NULL pointer checking to avoid mysterious panic during device cloning.
Approved by: netchild (mentor)
|
Revision tags: release/6.0.0_cvs, release/6.0.0 |
|
#
cb44f623 |
| 02-Oct-2005 |
Alexander Leidinger <netchild@FreeBSD.org> |
sys/dev/sound/pcm/ac97.c: * Added codec id for CMI9761. * feeder_volume *whitelist* through ac97_fix_volume()
sys/dev/sound/pcm/ac97.h: * Added AC97_F_SOFTVOL definition.
sys/dev/sound/pcm
sys/dev/sound/pcm/ac97.c: * Added codec id for CMI9761. * feeder_volume *whitelist* through ac97_fix_volume()
sys/dev/sound/pcm/ac97.h: * Added AC97_F_SOFTVOL definition.
sys/dev/sound/pcm/channel.c: * Slight changes for chn_setvolume() to conform with OSS. * FEEDER_VOLUME is now part of feeder building process.
sys/dev/sound/pcm/mixer.c: * General spl* cleanup. It doesn't serve any purpose anymore. * Main hook for feeder_volume.
Submitted by: Ariff Abdullah <skywizard@MyBSD.org.my> Tested by: multimedia@
show more ...
|
#
6a113b3d |
| 08-Aug-2005 |
Robert Watson <rwatson@FreeBSD.org> |
Merge the dev_clone and dev_clone_cred event handlers into a single event handler, dev_clone, which accepts a credential argument. Implementors of the event can ignore it if they're not interested, a
Merge the dev_clone and dev_clone_cred event handlers into a single event handler, dev_clone, which accepts a credential argument. Implementors of the event can ignore it if they're not interested, and most do. This avoids having multiple event handler types and fall-back/precedence logic in devfs.
This changes the kernel API for /dev cloning, and may affect third party packages containg cloning kernel modules.
Requested by: phk MFC after: 3 days
show more ...
|
#
7233abab |
| 31-Jul-2005 |
Alexander Leidinger <netchild@FreeBSD.org> |
* Fix panic during driver unload on second attempt after failure on first (device busy). * Fix module unloading for sound.ko itself.
Submitted by: Ariff Abdullah <skywizard@MyBSD.org.my> Tested by
* Fix panic during driver unload on second attempt after failure on first (device busy). * Fix module unloading for sound.ko itself.
Submitted by: Ariff Abdullah <skywizard@MyBSD.org.my> Tested by: multimedia@
show more ...
|
Revision tags: release/5.4.0_cvs, release/5.4.0 |
|
#
f4f6abcb |
| 31-Mar-2005 |
Poul-Henning Kamp <phk@FreeBSD.org> |
Explicitly hold a reference to the cdev we have just cloned. This closes the race where the cdev was reclaimed before it ever made it back to devfs lookup.
|
#
e70377df |
| 27-Feb-2005 |
Poul-Henning Kamp <phk@FreeBSD.org> |
Use dynamic major number allocation.
|
Revision tags: release/4.11.0_cvs, release/4.11.0 |
|
#
098ca2bd |
| 06-Jan-2005 |
Warner Losh <imp@FreeBSD.org> |
Start each of the license/copyright comments with /*-, minor shuffle of lines
|
Revision tags: release/5.3.0_cvs, release/5.3.0 |
|
#
ae6d3a22 |
| 25-Jun-2004 |
Josef El-Rayes <josef@FreeBSD.org> |
Fix uninitialized variable, that breaks the build.
Approved by: hmp Reviewed by: chris Pointy hat to: josef (for ignoring warning)
|
#
8ba7f5cf |
| 24-Jun-2004 |
Josef El-Rayes <josef@FreeBSD.org> |
Change the possibility to configure pcm(4) via boot/loader.conf to use boot/device.hints now
As discussed on cvs-src@
Reviewed by: Hiten Pandya <hmp@backplane.com>
|
#
9d12118e |
| 20-Jun-2004 |
Josef El-Rayes <josef@FreeBSD.org> |
Enable pcm to read kenv variables to set default values for mixer channels.
e.g.: pcm0.line=0
to muten input line per default.
Approved by: cg Reviewed by: le, stefanf Requested by: Eugene
Enable pcm to read kenv variables to set default values for mixer channels.
e.g.: pcm0.line=0
to muten input line per default.
Approved by: cg Reviewed by: le, stefanf Requested by: Eugene Grosbein <eugen@grosbein.pp.ru> (implicitly) PR: kern/63771
show more ...
|
#
f3732fd1 |
| 17-Jun-2004 |
Poul-Henning Kamp <phk@FreeBSD.org> |
Second half of the dev_t cleanup.
The big lines are: NODEV -> NULL NOUDEV -> NODEV udev_t -> dev_t udev2dev() -> findcdev()
Various minor adjustments including handling of userland access to ke
Second half of the dev_t cleanup.
The big lines are: NODEV -> NULL NOUDEV -> NODEV udev_t -> dev_t udev2dev() -> findcdev()
Various minor adjustments including handling of userland access to kernel space struct cdev etc.
show more ...
|
#
89c9c53d |
| 16-Jun-2004 |
Poul-Henning Kamp <phk@FreeBSD.org> |
Do the dreaded s/dev_t/struct cdev */ Bump __FreeBSD_version accordingly.
|
Revision tags: release/4.10.0_cvs, release/4.10.0, release/5.2.1_cvs, release/5.2.1 |
|
#
dc08ffec |
| 21-Feb-2004 |
Poul-Henning Kamp <phk@FreeBSD.org> |
Device megapatch 4/6:
Introduce d_version field in struct cdevsw, this must always be initialized to D_VERSION.
Flip sense of D_NOGIANT flag to D_NEEDGIANT, this involves removing four D_NOGIANT fl
Device megapatch 4/6:
Introduce d_version field in struct cdevsw, this must always be initialized to D_VERSION.
Flip sense of D_NOGIANT flag to D_NEEDGIANT, this involves removing four D_NOGIANT flags and adding 145 D_NEEDGIANT flags.
show more ...
|
#
45550658 |
| 17-Jan-2004 |
Poul-Henning Kamp <phk@FreeBSD.org> |
As previously announced: discontinue use of makedev() call in soundcode.
This takes us a lot closer to refcounting dev_t.
This patch originally by cg@ with a few minor changes by me.
It is largel
As previously announced: discontinue use of makedev() call in soundcode.
This takes us a lot closer to refcounting dev_t.
This patch originally by cg@ with a few minor changes by me.
It is largely untested, but has been HEADSUP'ed twice, so presumably people have not found any issues with it.
Submitted by: cg@
show more ...
|
Revision tags: release/5.2.0_cvs, release/5.2.0 |
|
#
42c3555c |
| 11-Nov-2003 |
Scott Long <scottl@FreeBSD.org> |
Fix sound LOR problems:
dsp_open: rearrange to only hold one lock at a time
dsp_close: ditto
mixer_hwvol_init: delete locking, the only consumer seems to be the ess driver and it only call it a cr
Fix sound LOR problems:
dsp_open: rearrange to only hold one lock at a time
dsp_close: ditto
mixer_hwvol_init: delete locking, the only consumer seems to be the ess driver and it only call it a creation time, I think the device will be stable across the sleepable malloc.
cmi interrupt routine: Release locks while caller chn_intr, either this or do what emu10k1 does which is have no locks at in the interrupt handler.
Submitted by: mat@cnd.mcgill.ca
show more ...
|