#
331722 |
|
29-Mar-2018 |
eadler |
Revert r330897:
This was intended to be a non-functional change. It wasn't. The commit message was thus wrong. In addition it broke arm, and merged crypto related code.
Revert with prejudice.
This revert skips files touched in r316370 since that commit was since MFCed. This revert also skips files that require $FreeBSD$ property changes.
Thank you to those who helped me get out of this mess including but not limited to gonzo, kevans, rgrimes.
Requested by: gjb (re)
|
#
330897 |
|
14-Mar-2018 |
eadler |
Partial merge of the SPDX changes
These changes are incomplete but are making it difficult to determine what other changes can/should be merged.
No objections from: pfg
|
#
317010 |
|
16-Apr-2017 |
mmel |
MFC r309532,r310674:
r309532: Add IDs for HDA codecs found on Nvidia Tegra SoCs. r310674: Limit number of stripes supported by HDA codec to maximum number announced by HDA controller. Incorrectly implermented HDA codec may report support for more stripes that HDA controller already have. Due to this, always limit number of enabled stripes by global controller maximum.
|
#
302408 |
|
07-Jul-2016 |
gjb |
Copy head@r302406 to stable/11 as part of the 11.0-RELEASE cycle. Prune svn:mergeinfo from the new branch, as nothing has been merged here.
Additional commits post-branch will follow.
Approved by: re (implicit) Sponsored by: The FreeBSD Foundation |
#
299504 |
|
12-May-2016 |
cem |
snd_hda(4): Don't pass bogus sizeof()s to unused sysctl arg2 parameter (again)
More of the same sort of issue as r299503, just missed some sysctls added in a different place than the others.
Reported by: Coverity CIDs: 1007692, 1009677, 1009678 Sponsored by: EMC / Isilon Storage Division
|
#
299503 |
|
12-May-2016 |
cem |
snd_hda(4): Don't pass bogus sizeof()s to unused sysctl arg2 parameter
None of the sysctl handlers in hdaa use the arg2 parameter, so just pass zero instead. Additionally, the sizes being passed in were suspect (size of the pointer rather than the value).
Reported by: Coverity CIDs: 1007694, 1009679 Sponsored by: EMC / Isilon Storage Division
|
#
297793 |
|
10-Apr-2016 |
pfg |
Cleanup unnecessary semicolons from the kernel.
Found with devel/coccinelle.
|
#
283291 |
|
22-May-2015 |
jkim |
CALLOUT_MPSAFE has lost its meaning since r141428, i.e., for more than ten years for head. However, it is continuously misused as the mpsafe argument for callout_init(9). Deprecate the flag and clean up callout_init() calls to make them more consistent.
Differential Revision: https://reviews.freebsd.org/D2613 Reviewed by: jhb MFC after: 2 weeks
|
#
283064 |
|
18-May-2015 |
hselasky |
Fix an off-by-one error by adding proper range checks when parsing the HDA association descriptors. This fixes a crash during device probe for some HDA PCI devices.
Reported by: David Wolfskill <david@catwhisker.org> Reviewed by: mav @ MFC after: 1 week
|
#
273377 |
|
21-Oct-2014 |
hselasky |
Fix multiple incorrect SYSCTL arguments in the kernel:
- Wrong integer type was specified.
- Wrong or missing "access" specifier. The "access" specifier sometimes included the SYSCTL type, which it should not, except for procedural SYSCTL nodes.
- Logical OR where binary OR was expected.
- Properly assert the "access" argument passed to all SYSCTL macros, using the CTASSERT macro. This applies to both static- and dynamically created SYSCTLs.
- Properly assert the the data type for both static and dynamic SYSCTLs. In the case of static SYSCTLs we only assert that the data pointed to by the SYSCTL data pointer has the correct size, hence there is no easy way to assert types in the C language outside a C-function.
- Rewrote some code which doesn't pass a constant "access" specifier when creating dynamic SYSCTL nodes, which is now a requirement.
- Updated "EXAMPLES" section in SYSCTL manual page.
MFC after: 3 days Sponsored by: Mellanox Technologies
|
#
264832 |
|
23-Apr-2014 |
marius |
- Sprinkle const and static as appropriate. - Convert the remainder of snd_hda(4) to take advantage of nitems(). - Use DEVMETHOD_END. - Use NULL instead of 0 for pointers.
MFC after: 3 days
|
#
246983 |
|
19-Feb-2013 |
uqs |
Fix typo
Submitted by: Matt Burke <mattblists@icritical.com>
|
#
243535 |
|
26-Nov-2012 |
mav |
Fix uninitialized variable reported by gcc, but not clang.
|
#
243533 |
|
25-Nov-2012 |
mav |
Remove extra sbuf_trim() copy/pasted into r243530.
|
#
243530 |
|
25-Nov-2012 |
mav |
On multiple requests, compact HDA driver verbose output by hiding CODEC's detailed information under the sound debug. To make it easier accessible, export that information through the set of sysctls like dev.hdaa.X.nidY. Also tune some output to make it both more compact and informative.
|
#
243181 |
|
17-Nov-2012 |
mav |
Summarize information about connected analog pins and EDID-like data received from HDMI/DisplayPort devices in form of general connection status and sound(4)-style channel matrix. Now that information is only reported in readable form to verbose logs, but potentially could be used by sound(4) to correctly choose default devices and configure vchans.
Fix rear and side channels swap on analog 7.1 outputs. As soon as there is a huge mess in industry about naming and using of these channels, duplicate rear channels of 4 and 5.1 streams to both read and side speakers.
|
#
242357 |
|
30-Oct-2012 |
mav |
Set all pins initial connection status to unknown (2) and then update it with the real value in regular way if sensing is supported. This fixes minor inconsistency when playback redirection appeared in undefined state on boot if headphones were not connected.
|
#
242352 |
|
30-Oct-2012 |
mav |
Print card and subsystem IDs in verbose logs to help to identify system. Hide some less iseful messages under debug.
|
#
241844 |
|
22-Oct-2012 |
eadler |
remove duplicate semicolons where possible.
Approved by: cperciva MFC after: 1 week
|
#
240884 |
|
24-Sep-2012 |
mav |
Fix panic caused by wrong pointer dereference, left after pin sense rewrite at r230551.
Also while there, make sense polling use reported for each node separately instead of reporting accumulated total status.
Submitted by: Barbara <barbara.freebsd@gmail.com> (1) MFC after: 3 days
|
#
239326 |
|
16-Aug-2012 |
mav |
Fix "speaker" volume control, broken at r230451.
Reported and tested by: Slawa Olhovchenkov <slw@zxy.spb.ru> MFC after: 1 month
|
#
239254 |
|
14-Aug-2012 |
mav |
Fix multichannel input signals tracing on some CODECs like ALC260.
Reported and tested by: Slawa Olhovchenkov <slw@zxy.spb.ru> MFC after: 1 month
|
#
238022 |
|
02-Jul-2012 |
mav |
Remove 14 not very useful characters " HDA CODEC PCM" from HDA pcm device names to shorten them. PulseAudio reported to have problems with names longer then 63 chars and at least in XMMS long names are inconvinient.
Reported by: hselasky MFC after: 3 days
|
#
233692 |
|
30-Mar-2012 |
mav |
Reenable unsolicited responses on CODEC if hdaa_sense_init() called again. This fixes jack connection events handling after suspend/resume.
PR: kern/166382 MFC after: 1 week
|
#
230641 |
|
28-Jan-2012 |
mav |
Fix HBR enabling condition. cchs is from 0 to 7, not from 1 to 8.
|
#
230585 |
|
26-Jan-2012 |
mav |
Press some more info into the PCM device name: - add "+HP" in case of headphones redirection; - add device type for analog devices, if all pins have the same.
As result now it may look like "Analog 5.1+HP/2.0" or "Front Analog Mic". I hope it will be more useful than long and confusing.
MFC after: 2 months Sponsored by: iXsystems, Inc.
|
#
230554 |
|
25-Jan-2012 |
mav |
Oops, fix the loader tunable name added in r230551.
|
#
230551 |
|
25-Jan-2012 |
mav |
Rewrite jack presence detection and implement automatic recording source selection in snd_hda(4) driver.
Now driver tracks jack presence detection status for every CODEC pin. For playback associations, when configured, that information, same as before, can be used to automatically redirect audio to headphones. Also same as before, these events are used to track digital display connection status and fetch ELD. Now in addition to that driver uses that information to automatically switch recording source of the mixer to the connected input.
When there are devices with no jack detection and with one both connected, last ones will have the precedence. As result, on most laptops after boot internal microphone should be automatically selected. But if external one (for example, headset) connected, it will be selected automatically. When external mic disconnected, internal one will be selected again.
Automatic recording source selection is enabled by default now to make recording work out of the box without touching mixer. But it can be disabled or limited only to attach time using hint.pcm.X.rec.autosrc loader tunables or dev.pcm.X.rec.autosrc sysctls.
MFC after: 2 months Sponsored by: iXsystems, Inc.
|
#
230513 |
|
24-Jan-2012 |
mav |
In addition to r230511, allow 8 channel AC3 formats.
|
#
230511 |
|
24-Jan-2012 |
mav |
Enable High Bit Rate (HBR) Encoded Packet Type (EPT), if supported (HDMI and HBR bits set) and needed (AC3 format used with 8 channels). This should allow DTS-HD/TrueHD pass-through with rates above 6.144Mbps.
MFC after: 2 months Sponsored by: iXsystems, Inc.
|
#
230507 |
|
24-Jan-2012 |
mav |
HDMI and DisplayPort support can coexist in HDA CODEC. Report "HDMI/DP" in PCM device name if both supported.
MFC after: 2 months Sponsored by: iXsystems, Inc.
|
#
230488 |
|
23-Jan-2012 |
mav |
Realtek CODECs declare support for 32bit samples on S/PDIF input/output widgets. I am not sure if S/PDIF supports 32bit samples, but my Marantz SR4001 doesn't, producing only single clicks on playback start/stop. Because HDA controller requires 32bit alignment for all samples above 16bit, we can't handle this situation in regular way and have to set 32bit format in sound(4) for anything above 16bit. To workaround the problem, prefer to setup hardware to use 24/20bit samples when 32bit format requested. Add dev.pcm.X.play.32bit and dev.pcm.X.rec.32bit sysctls to control what format really use for 32bit samples.
MFC after: 2 months Sponsored by: iXsystems, Inc.
|
#
230465 |
|
22-Jan-2012 |
mav |
Increase snd_hda(4) default maximal buffer size from 16K to 64K and maximal from 64K to 256K.
We usually don't need 750 sound interrupts per second (1.3ms latency) when playing 192K/24/8 stream. 187 should be better. On usual 48K/16/2 it is just enough for hw.snd.latency=9 at hw.snd.latency_profile=1 with 23 and 6 interrupts per second.
MFC after: 2 weeks Sponsored by: iXsystems, Inc.
|
#
230451 |
|
22-Jan-2012 |
mav |
Complete rewrite of the snd_hda(4) volume control.
Previous code was relatively dumb. During CODEC probe it was tracing signals and statically binding amplifier controls to the OSS mixer controls. To set volume it just set all bound amplifier controls proportionally to mixer level, not looking on their hierarchy and amplification levels/offsets.
New code is much smarter. It also traces signals during probe, but mostly to find out possible amplification control rages in dB for each specific signal. To set volume it retraces each affected signal again and sets amplifiers controls recursively to reach desired amplification level in dB. It would be nice to export values in dB to user, but unluckily our OSS mixer API is too simple for that.
As result of this change: - cascaded amplifiers will work together to reach maximal precision. If some input has 0/+40dB preamplifier with 10dB step and -10/+10dB mixer with 1dB step after it, new code will use both to provide 0/+40dB control with 1dB step! We could even get -10/+50dB range there, but that is intentionally blocked for now. - different channels of multichannel associations on non-uniform CODECs such as VIA VT1708S will have the same volume, not looking that control ranges are different. It was not good when fronts were 12dB louder. - for multiplexed recording, when we can record from only one source at a time, we can now use recording amplifier controls to set different volume levels for different inputs if they have no own controls of they are less precise. If recording source change, amplifiers will be reconfigured.
To improve out-of-the-box behavior, ignore default volume levels set by sound(4) and use own, more reasonable: +20dB for mics, -10dB for analog output volume and 0dB for the rest of controls. sound(4) defaults of 75% mean absolutely random things for different controls of different CODECs because of very different control ranges. Together with further planned automatic recording source selection this should allow users to get fine playback and recording without touching mixer first. Note that existing users should delete /var/db/mixer*-state and reboot or trigger CODEC reconfiguration to get new default values.
MFC after: 2 months Sponsored by: iXsystems, Inc.
|
#
230326 |
|
19-Jan-2012 |
mav |
Two 192/24/8 playback streams overflow single mandatory output line (SDO) of HDA bus. Handle that from two directions: - Add support for "striping" (using several SDO lines), if supported. - Account HDA bus utilization and return error on new stream allocation attempt if remaining bandwidth is unsifficient.
Most of HDA controllers have one SDO line with 46Mbps output bandwidth. NVIDIA GF210 has 2 lines - 92Mbps. NVIDIA GF520 has 4 lines - 184Mbps!
MFC after: 2 months Sponsored by: iXsystems, Inc.
|
#
230312 |
|
18-Jan-2012 |
mav |
Improve HDMI/DisplayPort audio support in snd_hda(4):
- Enable and handle unsolicited responses from digital display pins, reporting connection and EDID-Like Data (ELD) validity status changes. - Fetch ELD data, describing connected digital display device audio capabilities. These data not really used at the moment (user is not denied to use audio formats not supported by the device), only printed to verbose logs. But they are useful for debugging. The fact that ELD was received tells that HDMI link was established and video driver enabled HDMI audio passthrough. Some old chips may not return ELD, so lack of it is not necessary a problem. - Add some more points to CODEC configuration sequence: - For converter widgets, supporting more then two channels (HDMI/DP converter widgets support 8), set number of channels to handle. - For digital display pins (HDMI/DP) fill audio infoframe, reporting connected device about number of channels and speakers allocation. - For digital display pins (HDMI/DP) set mapping between channels seen by software and channels transferred via HDMI/DisplayPort. - Allow more audio formats, not used for analog connections because of stereo pairs orientation, but easily applicable to HDMI/DisplayPort: 2.1, 3.0, 3.1, 4.1, 5.0, 6.0, 6.1, 7.0. That list may be filtered later using info from ELD. - Disable MSI interrupts for NVIDIA HDA controllers before GT520.
At this point I can successfully play audio over HDMI from NVIDIA GT210 and GT520 cards with nvidia-driver-290.10 driver to Marantz SR4001 receiver in 2.0, 2.1, 3.0, 4.0, 4.1, 5.0 and 5.1 PCM formats at 44, 48, 88 and 96KHz at 16 and 24 bits, same as do AC3/DTS passthrough. 6.0, 6.1, 7.0 and 7.1 PCM formats are not working for me, but I think it is because of receiver age.
MFC after: 2 months Sponsored by: iXsystems, Inc.
|
#
230181 |
|
15-Jan-2012 |
mav |
Add check to avoid assertion panic on duplicate stop.
Reported by: Yuri Pankov <yuri.pankov@gmail.com> MFC after: 2 months
|
#
230130 |
|
15-Jan-2012 |
mav |
Major snd_hda driver rewrite: - Huge old hdac driver was split into three independent pieces: HDA controller driver (hdac), HDA CODEC driver (hdacc) and HDA sudio function driver (hdaa). - Support for multichannel recording was added. Now, as specification defines, driver checks input associations for pins with sequence numbers 14 and 15, and if found (usually) -- works as before, mixing signals together. If it doesn't, it configures input association as multichannel. - Signal tracer was improved to look for cases where several DACs/ADCs in CODEC can work with the same audio signal. If such case found, driver registers additional playback/record stream (channel) for the pcm device. - New controller streams reservation mechanism was implemented. That allows to have more pcm devices then streams supported by the controller (usually 4 in each direction). Now it limits only number of simultaneously transferred audio streams, that is rarely reachable and properly reported if happens. - Codec pins and GPIO signals configuration was exported via set of writable sysctls. Another sysctl dev.hdaa.X.reconfig allows to trigger driver reconfiguration in run-time. - Driver now decodes pins location and connector type names. In some cases it allows to hint user where on the system case connectors, related to the pcm device, are located. Number of channels supported by pcm device, reported now (if it is not 2), should also make search easier. - Added workaround for digital mic on some Asus laptops/netbooks.
MFC after: 2 months Sponsored by: iXsystems, Inc.
|