Home | History | Annotate | Download | only in hdaudio
History log of /src/sys/dev/hdaudio/hdafg.c
RevisionDateAuthorComments
 1.33  19-Oct-2025  nia hdaudio(4): Do not expose non-functional volume controls.

The old code supported "volume without mute", but not "mute
without volume", which are widely exposed by hdaudio devices.
This resulted in redundant volume controls with delta=256
(not allowing them to be set).

While here, classify PC speaker and phone out controls as
output controls.

"ship it" jmcneill@

PR kern/59712 hdaudio driver exposes nonexistent volume controls
 1.32  29-Jan-2024  riastradh hdaudio(4): KNF, no functional change intended
 1.31  29-Jan-2024  riastradh hdaudio(4): Tighten hdafg_freem.

The fix for PR kern/57890 in hdafg.c 1.29 included more conditionals
than needed, covering cases that can't happen: if allocm returns
null, audio(4) does not call freem; and if hdafg_allocm returns
nonnull, then what audio(4) passes to hdafg_freem had better be
either the playback or the capture buffer address.
 1.30  18-Jul-2023  riastradh hdafg(4): Do hotplug detection in kthread, not callout.

This can sometimes take a while (~1ms), and the logic to suspend the
callout on device suspend/resume was racy (PR kern/57322).

XXX pullup-8
XXX pullup-9
XXX pullup-10
 1.29  05-Jan-2023  kardel ignore NULL for hdaudio_audiodev in hdafg_freem
also guard against NULL in ad_{capture,playback}
observed during shutdown on Lenovo W510
 1.28  24-May-2022  andvar branches: 1.28.4;
fix various typos in comments, docs and log messages.
 1.27  21-Mar-2022  jmcneill hdaudio: Obsolete HDAUDIO_ENABLE_DISPLAYPORT and HDAUDIO_ENABLE_HDMI

Enable display port and HDMI devices by default rather than making this
a compile time option.
 1.26  07-Jan-2022  mlelstv Safe vendor/product for reporting. Avoids repeated loading/unloading
of hdaudioverbose module.
 1.25  17-Dec-2021  kre One build break fixed, another appears...

Use the correct pointer, not the one used in the other piece of
code that changed at the same time..
 1.24  17-Dec-2021  christos If the step is 0, use 1 instead of always incrementing step by one to avoid
zerodivide (from RVP)
 1.23  11-Jun-2020  thorpej Update for proplib(3) API changes.
 1.22  19-Apr-2020  isaki Make round_blocksize satisfy all of
- restrictions that existed before merging isaki-audio2 branch.
- better support for 6 channels hardware.
- audio layer's requirement.
This may help PR kern/54474.
 1.21  15-Feb-2020  isaki branches: 1.21.4;
Enumerating probably always starts from sc->sc_startnode.
 1.20  30-Jan-2020  jmcneill Only dump ELD info if HDAFG_HDMI_DEBUG is defined
 1.19  18-Jan-2020  jmcneill Make sure we have at least one of playback or capture streams setup before
attaching the audio layer.
 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  27-Sep-2018  manu branches: 1.16.2;
Fix hdaudio device configuration

When disabling unassociated devices, we have a special handling
for pins of type COP_AWCAP_TYPE_PIN_COMPLEX, but it came after code
that may disable any pins, including the ones that should be handled
as COP_AWCAP_TYPE_PIN_COMPLEX.

The result was that hdaudio could fail to detect some devices. We
fix the situation by making sure that COP_AWCAP_TYPE_PIN_COMPLEX
pins always get their specific handling.

The change makes the built-in speaker work on Dell OptiPlex 5060
 1.15  14-Feb-2018  maya branches: 1.15.2; 1.15.4;
Remove dead code.

From David Binderman in PR kern/53029
 1.14  04-Jan-2018  khorben Fix off-by-one when calling snprintf(9) in hdafg_getdev()

This is actually harmless, since:
- the offset is too short rather than too long (no overflow)
- the struct audio_device comes from userland (no information leak)

"looks good to me" nat@
 1.13  04-Aug-2017  mrg branches: 1.13.2;
put all the ELD debugging messages under #ifdef HDAFG_HDMI_DEBUG.
this silences a frequent and largely useless series of messages
in my dmesg. ok jmcneill.
 1.12  01-Jun-2017  chs branches: 1.12.2;
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.11  18-Apr-2017  maya remove redundant assignments
nchan is overwritten before it is used in all cases. so is i.

from clang static analyzer
ok riastradh
 1.10  25-Oct-2016  pgoyette branches: 1.10.2;
Replace numeric magic-number constant with something a bit more meaningful.
 1.9  15-Nov-2015  jmcneill branches: 1.9.2;
disable data island packet transmission on Tegra124 HDMI codec
 1.8  04-Nov-2015  christos mute the mixer with that has input children
 1.7  04-Nov-2015  christos Remove trailing and stray whitespace.
 1.6  04-Nov-2015  christos more complex version to determine what is an input.
 1.5  04-Nov-2015  christos be more selective and mute only mic's. Suggested by jmcneill
 1.4  04-Nov-2015  christos Startup with the mic muted to avoid feedback and spying.
 1.3  26-Jul-2015  jmcneill - Support multi-channel (> 2) output to HDMI sinks.
- Fix a bug in hdafg_set_params that could program converters using the
wrong audio_params_t if auconv is in use
- Force Tegra124 HDMI codec to a fixed rate 44.1kHz
 1.2  28-Mar-2015  jmcneill branches: 1.2.2;
replace hdaudio_config.h with defflags
 1.1  28-Mar-2015  jmcneill Split hdaudio and PCI attach glue. Even though the driver was written with
this separation in mind, all of the code lived in sys/dev/pci/hdaudio. Move
common parts to sys/dev/hdaudio and PCI attach glue to sys/dev/pci.
 1.2.2.6  28-Aug-2017  skrll Sync with HEAD
 1.2.2.5  05-Dec-2016  skrll Sync with HEAD
 1.2.2.4  27-Dec-2015  skrll Sync with HEAD (as of 26th Dec)
 1.2.2.3  22-Sep-2015  skrll Sync with HEAD
 1.2.2.2  06-Apr-2015  skrll Sync with HEAD
 1.2.2.1  28-Mar-2015  skrll file hdafg.c was added on branch nick-nhusb on 2015-04-06 15:18:08 +0000
 1.9.2.2  26-Apr-2017  pgoyette Sync with HEAD
 1.9.2.1  04-Nov-2016  pgoyette Sync with HEAD
 1.10.2.1  21-Apr-2017  bouyer Sync with HEAD
 1.12.2.3  03-Feb-2024  martin Pull up following revision(s) (requested by riastradh in ticket #1934):

sys/dev/hdaudio/hdafg.c: revision 1.29

ignore NULL for hdaudio_audiodev in hdafg_freem

also guard against NULL in ad_{capture,playback}
observed during shutdown on Lenovo W510
 1.12.2.2  09-Oct-2018  martin Pull up following revision(s) (requested by manu in ticket #1053):

sys/dev/hdaudio/hdafg.c: revision 1.16

Fix hdaudio device configuration

When disabling unassociated devices, we have a special handling
for pins of type COP_AWCAP_TYPE_PIN_COMPLEX, but it came after code
that may disable any pins, including the ones that should be handled
as COP_AWCAP_TYPE_PIN_COMPLEX.

The result was that hdaudio could fail to detect some devices. We
fix the situation by making sure that COP_AWCAP_TYPE_PIN_COMPLEX
pins always get their specific handling.

The change makes the built-in speaker work on Dell OptiPlex 5060
 1.12.2.1  20-Aug-2017  snj Pull up following revision(s) (requested by mrg in ticket #210):
sys/dev/hdaudio/hdafg.c: revision 1.13
sys/dev/hdaudio/hdafg_dd.c: revision 1.2
put all the ELD debugging messages under #ifdef HDAFG_HDMI_DEBUG.
this silences a frequent and largely useless series of messages
in my dmesg. ok jmcneill.
 1.13.2.2  03-Dec-2017  jdolecek update from HEAD
 1.13.2.1  04-Aug-2017  jdolecek file hdafg.c was added on branch tls-maxphys on 2017-12-03 11:37:01 +0000
 1.15.4.3  21-Apr-2020  martin Sync with HEAD
 1.15.4.2  08-Apr-2020  martin Merge changes from current as of 20200406
 1.15.4.1  10-Jun-2019  christos Sync with HEAD
 1.15.2.1  30-Sep-2018  pgoyette Ssync with HEAD
 1.16.2.3  04-May-2019  isaki Move dev/audio_if.h -> dev/audio/audio_if.h
 1.16.2.2  27-Apr-2019  isaki More adapt to audio2.
- Replace set_params with new set_format.
- Remove sc_encodings which is no longer used.
 1.16.2.1  21-Apr-2019  isaki Adapt to audio2.
- Fix wrong blocksize restrictions.
 1.18.4.2  29-Feb-2020  ad Sync with head.
 1.18.4.1  25-Jan-2020  ad Sync with head.
 1.18.2.3  23-Aug-2024  martin Pull up following revision(s) (requested by riastradh in ticket #1868):

sys/dev/hdaudio/hdafg.c: revision 1.30

hdafg(4): Do hotplug detection in kthread, not callout.

This can sometimes take a while (~1ms), and the logic to suspend the
callout on device suspend/resume was racy (PR kern/57322).
 1.18.2.2  03-Feb-2024  martin Pull up following revision(s) (requested by riastradh in ticket #1795):

sys/dev/hdaudio/hdafg.c: revision 1.29

ignore NULL for hdaudio_audiodev in hdafg_freem

also guard against NULL in ad_{capture,playback}
observed during shutdown on Lenovo W510
 1.18.2.1  25-Apr-2020  martin Pull up following revision(s) (requested by isaki in ticket #852):

sys/dev/hdaudio/hdafg.c: revision 1.22

Make round_blocksize satisfy all of
- restrictions that existed before merging isaki-audio2 branch.
- better support for 6 channels hardware.
- audio layer's requirement.

This may help PR kern/54474.
 1.21.4.1  20-Apr-2020  bouyer Sync with HEAD
 1.28.4.2  23-Aug-2024  martin Pull up following revision(s) (requested by riastradh in ticket #789):

sys/dev/hdaudio/hdafg.c: revision 1.30

hdafg(4): Do hotplug detection in kthread, not callout.

This can sometimes take a while (~1ms), and the logic to suspend the
callout on device suspend/resume was racy (PR kern/57322).
 1.28.4.1  03-Feb-2024  martin Pull up following revision(s) (requested by riastradh in ticket #576):

sys/dev/hdaudio/hdafg.c: revision 1.29

ignore NULL for hdaudio_audiodev in hdafg_freem

also guard against NULL in ad_{capture,playback}
observed during shutdown on Lenovo W510

RSS XML Feed