#
3b91d73b |
|
16-Dec-2022 |
X512 <danger_mail@list.ru> |
bus & drivers: drop PCI_x86 Change-Id: I494deaf24a4793a5e0fe9fa46ecdce32f65e616a Reviewed-on: https://review.haiku-os.org/c/haiku/+/6226 Reviewed-by: waddlesplash <waddlesplash@gmail.com> Reviewed-by: Fredrik Holmqvist <fredrik.holmqvist@gmail.com>
|
#
69958ca2 |
|
24-Oct-2021 |
Jessica Hamilton <jessica.l.hamilton@gmail.com> |
hda: subsystem is from the codec, not the PCI bus. * Refactors so that we look for a codec subsystem ID, then the Audio Function Group subsystem ID if not found. * Moves the order around a bit so that the quirks are set early enough. * Also adds a quirk for MacBookAir 6,2, allows speakers to work. Change-Id: I4c64f96936a82a5d7187d86d8558f28516fd4ecb Reviewed-on: https://review.haiku-os.org/c/haiku/+/4654 Reviewed-by: Adrien Destugues <pulkomandy@gmail.com> Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>
|
#
bfb040f0 |
|
22-Jul-2020 |
Michael Lotz <mmlr@mlotz.ch> |
hda: Use B_32_BIT_CONTIGUOUS when controller is not 64 bit. This ensures that the allocated physical memory uses 32 bit addresses. Also avoid writing to the 64 bit address registers when the controller is not 64 bit. Change-Id: I58008d68bcd9579903534f824db2660f73e39160 Reviewed-on: https://review.haiku-os.org/c/haiku/+/3065 Reviewed-by: waddlesplash <waddlesplash@gmail.com>
|
#
5caa9c86 |
|
15-Jun-2019 |
Murai Takashi <tmurai01@gmail.com> |
drivers/audio/hda: Fix -Wformat= Change-Id: Ifbc08eefc53cac2e23fc3ac4b003bf4d897265d7 Reviewed-on: https://review.haiku-os.org/c/1522 Reviewed-by: waddlesplash <waddlesplash@gmail.com>
|
#
8aea77d0 |
|
09-Sep-2018 |
Humdinger <humdingerb@gmail.com> |
HDA driver: use optional settings file Patch by Pete Goodeve, ticket #9134. (Removed play_sample_rate and record_sample_rate as suggested in patch review, adjusted hda.settings accordingly.) Tune buffer size and buffer count with an optional settings file /boot/home/config/settings/kernel/drivers/hda.settings. Same as it's done for the auich driver. Pete: > I [...] request 4 buffers of 1024 frames, I get a nice 13-14ms latency. Change-Id: I3c1c64375d22b525afb970d5e8379b22b8514438 Reviewed-on: https://review.haiku-os.org/521 Reviewed-by: Jérôme Duval <jerome.duval@gmail.com>
|
#
21c87a5d |
|
09-Sep-2018 |
Jérôme Duval <jerome.duval@gmail.com> |
drivers: remove some non-haiku support code. Change-Id: Ic55bb4832adabeb807f763c87ad938e74fb3a97d Reviewed-on: https://review.haiku-os.org/520 Reviewed-by: Axel Dörfler <axeld@pinc-software.de> Reviewed-by: waddlesplash <waddlesplash@gmail.com>
|
#
85b0c320 |
|
26-Jun-2017 |
Jessica Hamilton <jessica.l.hamilton@gmail.com> |
hda: increase max association count. * On MacBook Air 6,2, HDA driver has an association count of 19. Prior to this fix, this would corrupt the hda_multi pointer.
|
#
46098852 |
|
12-Oct-2015 |
Dario Casalinuovo <b.vitruvio@gmail.com> |
Revert code which got mixed in 782ebbdf93e1a6fa13230efa01cbed373b41eebc * Sorry about that.
|
#
782ebbdf |
|
11-Oct-2015 |
Dario Casalinuovo <b.vitruvio@gmail.com> |
Cortex: Check retrieved timesource, fixes #11391
|
#
ec8fc5ee |
|
02-Sep-2014 |
Julian Harnath <julian.harnath@rwth-aachen.de> |
Use uncached memory areas if snooping is not possible * Some chipsets do not support bus-snooping for the HDA data transfers. So, when trying to enable snooping, verify that the setting was accepted. * When snooping is not possible, set memory areas for audio buffers, buffer descriptor lists and command ring-buffers as uncached to ensure memory coherency with the HDA controller. * This fixes KDLs during booting on some systems where snooping is not supported (seen on two systems with AMD chipsets, maybe applies to others as well). After setting up the buffer descriptor list for a stream, it was a gamble whether these writes would be visible to the HDA controller when subsequently enabling the stream. On some boots it was unlucky and then the HDA controller's DMA engine would go haywire and start overwriting random kernel memory with audio input data. The scheduler was usually the first victim and caused page fault KDLs due to corrupted data structures.
|
#
84dfba29 |
|
01-Sep-2014 |
Julian Harnath <julian.harnath@rwth-aachen.de> |
Preserve reserved bits in registers * Do read-modify-write cycle to preserve bits marked as RsvdP in the following registers: WAKEEN, CORBWP, CORBCTL, CORBSIZE, RIRBWP, RINTCNT, RIRBCTL, RIRBSIZE.
|
#
73ad2473 |
|
05-Nov-2013 |
Pawel Dziepak <pdziepak@quarnos.org> |
Remove remaining unnecessary 'volatile' qualifiers
|
#
51b735b3 |
|
01-Sep-2013 |
Jérôme Duval <jerome.duval@gmail.com> |
hdaudio: enable MSI support * disabled for nVidia and Creative Technology devices.
|
#
45732903 |
|
20-Sep-2012 |
Axel Dörfler <axeld@pinc-software.de> |
Implemented MSI support. * Does not seem to change anything, though (I'm also a victim of bug #8949) * Minor cleanup.
|
#
c95f35ce |
|
09-Aug-2012 |
Axel Dörfler <axeld@pinc-software.de> |
Fixed 64 bit issue for the buffer descriptor base.
|
#
b14ae02b |
|
12-Jun-2010 |
Jérôme Duval <korli@users.berlios.de> |
some verbs use a 16 bits payload git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37114 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
9a0a4979 |
|
12-Jun-2010 |
Jérôme Duval <korli@users.berlios.de> |
* add some helper functions to read/write verbs. * try at support realtek alc888. alsa uses this init sequence. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37113 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
64d79eff |
|
27-May-2010 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
* Changed physical_entry::{address,size} to phys_{addr,size}_t and changed map_physical_memory()'s physicalAddress parameter type from void* to phys_addr_t. This breaks source compatibility, but -- as long as phys_{addr,size}_t remain 32 bit wide -- keeps binary compatibility with BeOS. * Adjusted all code using the affected interfaces (Oh what fun!). Added a few TODOs in places where the wrong types (e.g. void* for physical addresses are used). Looks like quite a few drivers aren't 64 bit safe and others will break with PAE. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@36960 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
e25dcf1a |
|
15-Jan-2010 |
Jérôme Duval <korli@users.berlios.de> |
* We now mute internal speakers when using headphones. We don't distinguish between headphones and mic jacks though. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35088 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
dfb72c78 |
|
21-Dec-2009 |
Jérôme Duval <korli@users.berlios.de> |
* warn_count is unused. * the last valid index should be written in HDAC_STREAM_LAST_VALID instead of the fragment count. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34730 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
e4e70475 |
|
20-Dec-2009 |
Jérôme Duval <korli@users.berlios.de> |
* style cleanup * added location to pin widget control name git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34729 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
f887c705 |
|
16-Dec-2009 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Try to detect whether the stream's DMA position is broken and switch to using the LPIB, if it is. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34684 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
e0a187dd |
|
15-Dec-2009 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
* stream_handle_interrupt(): - Round the DMA position for the buffer cycle computation. Apparently some chipsets trigger the interrupt before the position has been updated. - Don't just assume that stream->buffer_length frames have been processed at that time. Use the exact stream position at that time. This makes the performance time computation more precise and immune to the interrupt being delayed. * Init hda_stream::frames_count. Audio skips on I/O seem to be gone for me, now. Not obviously motivated skips still happen. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34671 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
4aafe92a |
|
29-Nov-2009 |
Jérôme Duval <korli@users.berlios.de> |
* cleanup * use gpio count for gpio quirks git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34355 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
144c4c62 |
|
29-Nov-2009 |
Jérôme Duval <korli@users.berlios.de> |
* added vref and unsol responses definitions * untested unsolicited response support * added quirk support for vref and gpio * vref are now enabled for all inputs, and gpio for some Apple Macs * replaced dprintf with TRACE and ERROR macros git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34352 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
ba4d7ed2 |
|
13-Sep-2009 |
Jérôme Duval <korli@users.berlios.de> |
* added input selector controls * increased responses count * only unmute active inputs on mixer widgets git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33120 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
1f5d96af |
|
21-Aug-2009 |
Jérôme Duval <korli@users.berlios.de> |
we now print a warning message in the log when the interrupt comes in the second half of a buffer: this should mean the interrupt comes earlier than expected. Please report such warnings, they can help to investigate timing issues with some hda codecs. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@32589 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
d936f5e3 |
|
28-Jul-2009 |
Jérôme Duval <korli@users.berlios.de> |
* now uses only one buffer_ready semaphore, this way the buffer exchange is done asap, useful when rates/formats are different between playback and record. * checked what offsets my hardware my hardware really had: it affected only playback, and was 192 for 16 bits and 256 for 20/24 bits. With these values, playback and record are crystal clear. As I can't find any references for such offset values anywhere, sorry it's not supposed to work out of the box on all hardware. Maybe we could adjust the offset at runtime. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31875 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
0bd93b7d |
|
07-Mar-2009 |
Stephan Aßmus <superstippi@gmx.de> |
* Use a default buffer frame count that is adapted to the sample rate of the audio group. This is supposed to keep the latency about the same regardless of sample rate and lessen the requirements on the system performance when using higher sample rates. Currently the multi-audio addon uses the highest available rate. * Added TODO about the highest sample rate seemingly being forgotten in one place. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29421 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
c71a6614 |
|
01-Jan-2009 |
Jérôme Duval <korli@users.berlios.de> |
* try to enable EAPD on capable pin widgets * added a pin capabilities attribute instead of input and output pin attributes * added ATI and nVidia vendor ids definitions * uses "mic in" and "line in" when pin colors are undefined git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28839 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
34bda3ae |
|
19-Nov-2008 |
Jérôme Duval <korli@users.berlios.de> |
introduced a widget inside the audio function group to extract widget node attributes and reuse functions. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28697 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
3fa33c82 |
|
17-Nov-2008 |
Jérôme Duval <korli@users.berlios.de> |
* store vendor, revision, stepping, revision, minor, major in the codec struct * check specific node ids for nodes declared as inputs which are really beepers * when unmuting/setting amp on the input amplifier, iterate on each input instead of only the first one * also unmute/set amp on the output and input amplifiers for the input and output paths, respectively git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28683 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
8c3da8dd |
|
16-Nov-2008 |
Jérôme Duval <korli@users.berlios.de> |
added a mixer interface git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28677 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
6d3c6e76 |
|
09-Jul-2008 |
Jérôme Duval <korli@users.berlios.de> |
reduced buffer size: with 4096, no buffer is received by the multiaudio addon git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26349 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
3787196a |
|
08-Jul-2008 |
Jérôme Duval <korli@users.berlios.de> |
* some methods to access stream registers were defined with wrong types * use HDAC_BIDIR_STREAM_OFFSET and HDAC_OUTPUT_STREAM_OFFSET when applicable * use a PAGE_ALIGN macro git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26330 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
359f758b |
|
08-May-2008 |
Axel Dörfler <axeld@pinc-software.de> |
* Added PCI_hd_audio sub-type in the PCI_multimedia base class. * Fixed some minor typos. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25393 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
a9410600 |
|
07-May-2008 |
Axel Dörfler <axeld@pinc-software.de> |
* Rewrote controller reset - it now performs a full reset, and does no longer assume the driver to be in reset when started. * Major cleanup of the register access: now hda_controller and hda_stream both have member functions for this, the OREGx() and REGx() macros are gone. * Made the register names and definitions more descriptive - the short names of the specs are still mentioned in the comments. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25352 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
30f55bc9 |
|
12-Mar-2008 |
Axel Dörfler <axeld@pinc-software.de> |
* Rewrote widget output path discovery, it's now very similar to what the FreeBSD driver is doing. * hda_codec_new_audio_group() did not free the audio group's widgets on failure. * No longer create the input stream for now. * Reworked multiaudio-support to work regardless if there is only a playback or record stream. * With these changes, I hear nothing on my laptop anymore (before there was noise), but on another system, I can finally hear something that sounds very much like the sinus wave the multi_audio_test application produces; the sound quality is pretty bad though (lots of periodical noise and glitches). * Made B_MULTI_GET_DESCRIPTION safe to be called from userland. * Minor other cleanup. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24383 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
17959555 |
|
11-Mar-2008 |
Axel Dörfler <axeld@pinc-software.de> |
* Separated widget parsing and debug output a bit better. * More generic supported parameter support, respect the AUDIO_CAP_AMPLIFIER_OVERRIDE, and AUDIO_CAP_FORMAT_OVERRIDE bits. * More cleanups. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24360 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
0e8c0240 |
|
03-Mar-2008 |
Axel Dörfler <axeld@pinc-software.de> |
* Also print the codec's revision. * Only print [Output] if it's an output. * Further cleanup. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24215 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
340dd4fe |
|
29-Feb-2008 |
Axel Dörfler <axeld@pinc-software.de> |
Renamed .c to .cpp, and fixed all warnings. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24178 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
105152d1 |
|
29-Feb-2008 |
Axel Dörfler <axeld@pinc-software.de> |
* Rewrote CORB/RIRB handling: the previous code did not use it as a ring buffer and would thus overwrite foreign memory after a while resp. reading invalid responses. * Further cleanup. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24177 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
7ef3822c |
|
26-Feb-2008 |
Axel Dörfler <axeld@pinc-software.de> |
* No longer enable interrupts for all possible streams - they are now enabled on a per-stream basis in hda_stream_start(). * Also, don't turn on interrupt generation in the stream before starting the stream. * Create space for the DMA position update and set it in the controller, not yet tested. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24144 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
629ab634 |
|
25-Feb-2008 |
Axel Dörfler <axeld@pinc-software.de> |
* Playback can now be restarted after B_MULTI_BUFFER_FORCE_STOP again; the hda_stream::buffer_ready_sem was deleted but not recreated again. Moved its maintenance to hda_stream_{start|stop}(). * Replaced snooze(10) with spin(10) because that's probably what's wanted here. * Added hda_stream::type field. * Minor cleanup. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24122 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
4919a4dc |
|
25-Feb-2008 |
Axel Dörfler <axeld@pinc-software.de> |
Coding style cleanup, also fixed some minor bugs I found during that work: * hda_widget_get_stream_support() did reference an out-of-bounds response for the stream support parameter. * Bit 18 in the PCM support parameter is 20bit sample support, not 18bit support. * Enabled reporting B_FMT_FLOAT capability (not tested at all yet). * Fixed B_FMT_FLOAT size (float is only 4 bytes, not 8). * No longer clobbers the request_* parameters in B_MULTI_GET_BUFFERS. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24117 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
44f16897 |
|
05-Feb-2008 |
Axel Dörfler <axeld@pinc-software.de> |
* Removed B_CAN_INTERRUPT from acquire_sem_etc() call in hda_send_verbs(); that doesn't look right to me (and since there is a 50 ms timeout anyway...). * Minor coding style cleanup. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@23872 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
e7d7efa1 |
|
11-Jan-2008 |
Ithamar R. Adema <ithamar.adema@team-embedded.nl> |
Some minor fixes; lots of debugging output still in there; not perfect yet git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@23404 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
afc104a0 |
|
09-Jan-2008 |
Ithamar R. Adema <ithamar.adema@team-embedded.nl> |
[HDA] When controller has multiple codecs, make sure we try to use the one with audio features. This should improve laptop support. More to come ;) git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@23295 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
2caa4397 |
|
06-Oct-2007 |
Jérôme Duval <korli@users.berlios.de> |
switch from COMPILE_FOR_R5 to HAIKU_TARGET_PLATFORM_HAIKU git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22460 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
641541a4 |
|
19-May-2007 |
Ithamar R. Adema <ithamar.adema@team-embedded.nl> |
* Fix some bad error handling * Plug some leaks * Initial code for input/output bus discovery git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21174 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
fa48b9d8 |
|
17-May-2007 |
Ithamar R. Adema <ithamar.adema@team-embedded.nl> |
Fixed the problem of not being able to work from Haiku. The main problem was that although the multi_audio API on BeOS hands the driver the settings as made in the Media prefs, the Haiku one just gives maximum values and assumes the driver will scale the values down. I didn't do that. If you run Haiku on HDA hardware, you should have sound now too! :) git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21161 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
abc35492 |
|
17-May-2007 |
Ithamar R. Adema <ithamar.adema@team-embedded.nl> |
* Made code more Coding Guidelines compliant * Fixed several sem/area leaks when restarting media services. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21160 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
9432d609 |
|
16-May-2007 |
Ithamar R. Adema <ithamar.adema@team-embedded.nl> |
Fixed: * Prepare code for exposing multi_audio interface on Audio Function Group level * Some minor cleanups. Todo: * Publish devfs entries based on available Function Groups instead of HDA cards. * Publish all mixer controls / output busses through multi_audio interface. * Make recording work :) * Check why we need 4096 samples to play ok. * Figure out problems with driver on Haiku... currently only successfully tested on R5. As you can see, plenty of things left to do, but progressing nicely. At least people can have sound on R5 now! git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21159 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
7c8482e9 |
|
16-May-2007 |
Ithamar R. Adema <ithamar.adema@team-embedded.nl> |
* Count samples, not bytes, stupid :P * Don't try to bypass semaphore counting, it should just work(tm) * Minor cleanups. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21158 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
b0d9cd6f |
|
13-May-2007 |
Ithamar R. Adema <ithamar.adema@team-embedded.nl> |
* Delete all local copies of multi_audio from source tree. * Change name of header for Haiku specific multi_audio to hmulti_audio (in line with the rename of the media addon itself) git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21136 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
2a3d3b7a |
|
13-May-2007 |
Ithamar R. Adema <ithamar.adema@team-embedded.nl> |
* More buffer (cycle) handling * Locking of stream info. * Add compile-time support for Haiku/BeOS multi_audio API. TODO: Need to check out why we have multiple (different) multi_audio.h files floating around in the source tree.... git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21135 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
89db0a5b |
|
13-May-2007 |
Ithamar R. Adema <ithamar.adema@team-embedded.nl> |
*** WARNING: UNSTABLE CODE AHEAD :P *** This is the first (sort-of) working incarnation of the High Definition Audio driver. This driver still has quite some way to go before coming to a point that we could call it stable and useful, so please use with care. It has been developed on R5, so it might even become useful for people still stuck on R5. This driver was inspired by both the BSD work on HDA support, as well as our own dr_evil's work on the ich_ac97 driver. Before you start bugging me about completing the driver, or adding features, please capture the serial debug output and mail it to ithamar AT unet DOT nl, including hardware details, and success/failure descriptions. As a last note, DasJott, if you're reading this, the first music it played was... 'Prodigy: Smack Your Bitch Up' :) git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21127 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
ec8fc5ee39bac3272d3223f8bc66ff5bb48bfd92 |
|
02-Sep-2014 |
Julian Harnath <julian.harnath@rwth-aachen.de> |
Use uncached memory areas if snooping is not possible * Some chipsets do not support bus-snooping for the HDA data transfers. So, when trying to enable snooping, verify that the setting was accepted. * When snooping is not possible, set memory areas for audio buffers, buffer descriptor lists and command ring-buffers as uncached to ensure memory coherency with the HDA controller. * This fixes KDLs during booting on some systems where snooping is not supported (seen on two systems with AMD chipsets, maybe applies to others as well). After setting up the buffer descriptor list for a stream, it was a gamble whether these writes would be visible to the HDA controller when subsequently enabling the stream. On some boots it was unlucky and then the HDA controller's DMA engine would go haywire and start overwriting random kernel memory with audio input data. The scheduler was usually the first victim and caused page fault KDLs due to corrupted data structures.
|
#
84dfba29725224ef05391486cd983eaa8d5466da |
|
01-Sep-2014 |
Julian Harnath <julian.harnath@rwth-aachen.de> |
Preserve reserved bits in registers * Do read-modify-write cycle to preserve bits marked as RsvdP in the following registers: WAKEEN, CORBWP, CORBCTL, CORBSIZE, RIRBWP, RINTCNT, RIRBCTL, RIRBSIZE.
|
#
73ad2473e7874b3702cf5b0fdf4c81b747812ed9 |
|
05-Nov-2013 |
Pawel Dziepak <pdziepak@quarnos.org> |
Remove remaining unnecessary 'volatile' qualifiers
|
#
51b735b342238e43cac59bb01f1654f57d6681fc |
|
01-Sep-2013 |
Jérôme Duval <jerome.duval@gmail.com> |
hdaudio: enable MSI support * disabled for nVidia and Creative Technology devices.
|
#
45732903d07ccec4eec384d839327f47b1321912 |
|
20-Sep-2012 |
Axel Dörfler <axeld@pinc-software.de> |
Implemented MSI support. * Does not seem to change anything, though (I'm also a victim of bug #8949) * Minor cleanup.
|
#
c95f35ce9de5f9e8ed86142b19beca3ce6cc3eea |
|
09-Aug-2012 |
Axel Dörfler <axeld@pinc-software.de> |
Fixed 64 bit issue for the buffer descriptor base.
|
#
b14ae02b959b3dd6f1d681515c445e71df725042 |
|
12-Jun-2010 |
Jérôme Duval <korli@users.berlios.de> |
some verbs use a 16 bits payload git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37114 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
9a0a4979d5dad3a3689e2f8420abec40fdbd2a91 |
|
12-Jun-2010 |
Jérôme Duval <korli@users.berlios.de> |
* add some helper functions to read/write verbs. * try at support realtek alc888. alsa uses this init sequence. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37113 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
64d79eff7290437d24b1a420537c3ed5c144ab96 |
|
27-May-2010 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
* Changed physical_entry::{address,size} to phys_{addr,size}_t and changed map_physical_memory()'s physicalAddress parameter type from void* to phys_addr_t. This breaks source compatibility, but -- as long as phys_{addr,size}_t remain 32 bit wide -- keeps binary compatibility with BeOS. * Adjusted all code using the affected interfaces (Oh what fun!). Added a few TODOs in places where the wrong types (e.g. void* for physical addresses are used). Looks like quite a few drivers aren't 64 bit safe and others will break with PAE. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@36960 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
e25dcf1a96e0fcadf6ce67afae010f6d5e601acf |
|
15-Jan-2010 |
Jérôme Duval <korli@users.berlios.de> |
* We now mute internal speakers when using headphones. We don't distinguish between headphones and mic jacks though. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35088 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
dfb72c7888dc9f25d5868e7698c67706c5705fcb |
|
21-Dec-2009 |
Jérôme Duval <korli@users.berlios.de> |
* warn_count is unused. * the last valid index should be written in HDAC_STREAM_LAST_VALID instead of the fragment count. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34730 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
e4e70475db3a28ceae499db7beed0848c1defbaf |
|
20-Dec-2009 |
Jérôme Duval <korli@users.berlios.de> |
* style cleanup * added location to pin widget control name git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34729 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
f887c7059e3604ec8d9bfe77e29f97f0d31fdffe |
|
16-Dec-2009 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Try to detect whether the stream's DMA position is broken and switch to using the LPIB, if it is. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34684 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
e0a187dd5931a6bf829ea306f80d28c2a4e3cff9 |
|
15-Dec-2009 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
* stream_handle_interrupt(): - Round the DMA position for the buffer cycle computation. Apparently some chipsets trigger the interrupt before the position has been updated. - Don't just assume that stream->buffer_length frames have been processed at that time. Use the exact stream position at that time. This makes the performance time computation more precise and immune to the interrupt being delayed. * Init hda_stream::frames_count. Audio skips on I/O seem to be gone for me, now. Not obviously motivated skips still happen. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34671 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
4aafe92a0e65a2d8ae667548be97a1af72c17abb |
|
29-Nov-2009 |
Jérôme Duval <korli@users.berlios.de> |
* cleanup * use gpio count for gpio quirks git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34355 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
144c4c6240d02385fc69fe159ecdd253641da0a1 |
|
29-Nov-2009 |
Jérôme Duval <korli@users.berlios.de> |
* added vref and unsol responses definitions * untested unsolicited response support * added quirk support for vref and gpio * vref are now enabled for all inputs, and gpio for some Apple Macs * replaced dprintf with TRACE and ERROR macros git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34352 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
ba4d7ed20dbd4cf97ca7e8a869e958ffd659b725 |
|
13-Sep-2009 |
Jérôme Duval <korli@users.berlios.de> |
* added input selector controls * increased responses count * only unmute active inputs on mixer widgets git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33120 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
1f5d96afb85daf74cabf5eb517d56ff408ddc266 |
|
21-Aug-2009 |
Jérôme Duval <korli@users.berlios.de> |
we now print a warning message in the log when the interrupt comes in the second half of a buffer: this should mean the interrupt comes earlier than expected. Please report such warnings, they can help to investigate timing issues with some hda codecs. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@32589 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
d936f5e31fa2e40a9da45dd4e129153a82b75d0b |
|
28-Jul-2009 |
Jérôme Duval <korli@users.berlios.de> |
* now uses only one buffer_ready semaphore, this way the buffer exchange is done asap, useful when rates/formats are different between playback and record. * checked what offsets my hardware my hardware really had: it affected only playback, and was 192 for 16 bits and 256 for 20/24 bits. With these values, playback and record are crystal clear. As I can't find any references for such offset values anywhere, sorry it's not supposed to work out of the box on all hardware. Maybe we could adjust the offset at runtime. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31875 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
0bd93b7def8c10073f2cec8dad5caeb844acdb78 |
|
07-Mar-2009 |
Stephan Aßmus <superstippi@gmx.de> |
* Use a default buffer frame count that is adapted to the sample rate of the audio group. This is supposed to keep the latency about the same regardless of sample rate and lessen the requirements on the system performance when using higher sample rates. Currently the multi-audio addon uses the highest available rate. * Added TODO about the highest sample rate seemingly being forgotten in one place. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29421 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
c71a6614e2c46e35d1796191c8fb04d9fb1071b0 |
|
01-Jan-2009 |
Jérôme Duval <korli@users.berlios.de> |
* try to enable EAPD on capable pin widgets * added a pin capabilities attribute instead of input and output pin attributes * added ATI and nVidia vendor ids definitions * uses "mic in" and "line in" when pin colors are undefined git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28839 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
34bda3ae2d8cd0d57cf719b67d19f008964bb2ae |
|
19-Nov-2008 |
Jérôme Duval <korli@users.berlios.de> |
introduced a widget inside the audio function group to extract widget node attributes and reuse functions. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28697 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
3fa33c82a4e24a5395896a477931720ecbb8d45d |
|
17-Nov-2008 |
Jérôme Duval <korli@users.berlios.de> |
* store vendor, revision, stepping, revision, minor, major in the codec struct * check specific node ids for nodes declared as inputs which are really beepers * when unmuting/setting amp on the input amplifier, iterate on each input instead of only the first one * also unmute/set amp on the output and input amplifiers for the input and output paths, respectively git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28683 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
8c3da8dd2ca2427d7efa609ef8708bdf7d07da92 |
|
16-Nov-2008 |
Jérôme Duval <korli@users.berlios.de> |
added a mixer interface git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28677 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
6d3c6e761ab2fcf3c4fe80b7e629b61abf03e877 |
|
09-Jul-2008 |
Jérôme Duval <korli@users.berlios.de> |
reduced buffer size: with 4096, no buffer is received by the multiaudio addon git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26349 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
3787196a5a32fc32657a90a062c7d5dc56d2fbd0 |
|
08-Jul-2008 |
Jérôme Duval <korli@users.berlios.de> |
* some methods to access stream registers were defined with wrong types * use HDAC_BIDIR_STREAM_OFFSET and HDAC_OUTPUT_STREAM_OFFSET when applicable * use a PAGE_ALIGN macro git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26330 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
359f758bc40ae970625212ce6bf1a4173163e2ff |
|
08-May-2008 |
Axel Dörfler <axeld@pinc-software.de> |
* Added PCI_hd_audio sub-type in the PCI_multimedia base class. * Fixed some minor typos. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25393 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
a9410600271a751844bc99f643977479d591c07d |
|
07-May-2008 |
Axel Dörfler <axeld@pinc-software.de> |
* Rewrote controller reset - it now performs a full reset, and does no longer assume the driver to be in reset when started. * Major cleanup of the register access: now hda_controller and hda_stream both have member functions for this, the OREGx() and REGx() macros are gone. * Made the register names and definitions more descriptive - the short names of the specs are still mentioned in the comments. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25352 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
30f55bc9908b08803b0fdd7f9f10e3a9f132a63f |
|
12-Mar-2008 |
Axel Dörfler <axeld@pinc-software.de> |
* Rewrote widget output path discovery, it's now very similar to what the FreeBSD driver is doing. * hda_codec_new_audio_group() did not free the audio group's widgets on failure. * No longer create the input stream for now. * Reworked multiaudio-support to work regardless if there is only a playback or record stream. * With these changes, I hear nothing on my laptop anymore (before there was noise), but on another system, I can finally hear something that sounds very much like the sinus wave the multi_audio_test application produces; the sound quality is pretty bad though (lots of periodical noise and glitches). * Made B_MULTI_GET_DESCRIPTION safe to be called from userland. * Minor other cleanup. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24383 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
17959555c2332cf547a3d880b6c7ab99c5c856f1 |
|
11-Mar-2008 |
Axel Dörfler <axeld@pinc-software.de> |
* Separated widget parsing and debug output a bit better. * More generic supported parameter support, respect the AUDIO_CAP_AMPLIFIER_OVERRIDE, and AUDIO_CAP_FORMAT_OVERRIDE bits. * More cleanups. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24360 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
0e8c024030a7e2687f35cc2ef8a3778b862076fd |
|
03-Mar-2008 |
Axel Dörfler <axeld@pinc-software.de> |
* Also print the codec's revision. * Only print [Output] if it's an output. * Further cleanup. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24215 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
340dd4fe3db4608f82f8cd3599d1fe0117233afa |
|
29-Feb-2008 |
Axel Dörfler <axeld@pinc-software.de> |
Renamed .c to .cpp, and fixed all warnings. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24178 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
105152d1f565933dbd8236f1eaf5da5d4ae12f1e |
|
29-Feb-2008 |
Axel Dörfler <axeld@pinc-software.de> |
* Rewrote CORB/RIRB handling: the previous code did not use it as a ring buffer and would thus overwrite foreign memory after a while resp. reading invalid responses. * Further cleanup. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24177 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
7ef3822c001e6db5b9964f376e437258bec69934 |
|
26-Feb-2008 |
Axel Dörfler <axeld@pinc-software.de> |
* No longer enable interrupts for all possible streams - they are now enabled on a per-stream basis in hda_stream_start(). * Also, don't turn on interrupt generation in the stream before starting the stream. * Create space for the DMA position update and set it in the controller, not yet tested. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24144 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
629ab634f57a2322639b423f0b21dde156fae3b8 |
|
25-Feb-2008 |
Axel Dörfler <axeld@pinc-software.de> |
* Playback can now be restarted after B_MULTI_BUFFER_FORCE_STOP again; the hda_stream::buffer_ready_sem was deleted but not recreated again. Moved its maintenance to hda_stream_{start|stop}(). * Replaced snooze(10) with spin(10) because that's probably what's wanted here. * Added hda_stream::type field. * Minor cleanup. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24122 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
4919a4dc6fd129fc81720250a1f7ac199786b34d |
|
25-Feb-2008 |
Axel Dörfler <axeld@pinc-software.de> |
Coding style cleanup, also fixed some minor bugs I found during that work: * hda_widget_get_stream_support() did reference an out-of-bounds response for the stream support parameter. * Bit 18 in the PCM support parameter is 20bit sample support, not 18bit support. * Enabled reporting B_FMT_FLOAT capability (not tested at all yet). * Fixed B_FMT_FLOAT size (float is only 4 bytes, not 8). * No longer clobbers the request_* parameters in B_MULTI_GET_BUFFERS. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24117 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
44f16897021638e8e307f36d2b204524c48023c3 |
|
05-Feb-2008 |
Axel Dörfler <axeld@pinc-software.de> |
* Removed B_CAN_INTERRUPT from acquire_sem_etc() call in hda_send_verbs(); that doesn't look right to me (and since there is a 50 ms timeout anyway...). * Minor coding style cleanup. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@23872 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
e7d7efa1c72bd671bd5aa5758443440279975cf0 |
|
11-Jan-2008 |
Ithamar R. Adema <ithamar.adema@team-embedded.nl> |
Some minor fixes; lots of debugging output still in there; not perfect yet git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@23404 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
afc104a0832826bf9400ce23970656586d5eec75 |
|
09-Jan-2008 |
Ithamar R. Adema <ithamar.adema@team-embedded.nl> |
[HDA] When controller has multiple codecs, make sure we try to use the one with audio features. This should improve laptop support. More to come ;) git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@23295 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
2caa43976d2bd32d1fc21ae0c8cddc6b540baa57 |
|
06-Oct-2007 |
Jérôme Duval <korli@users.berlios.de> |
switch from COMPILE_FOR_R5 to HAIKU_TARGET_PLATFORM_HAIKU git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22460 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
641541a4f34cbfcedbe0f4b18d6f4ed2ef15c5f1 |
|
19-May-2007 |
Ithamar R. Adema <ithamar.adema@team-embedded.nl> |
* Fix some bad error handling * Plug some leaks * Initial code for input/output bus discovery git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21174 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
fa48b9d88548b5c63330f811aa57d07a9bf020ec |
|
17-May-2007 |
Ithamar R. Adema <ithamar.adema@team-embedded.nl> |
Fixed the problem of not being able to work from Haiku. The main problem was that although the multi_audio API on BeOS hands the driver the settings as made in the Media prefs, the Haiku one just gives maximum values and assumes the driver will scale the values down. I didn't do that. If you run Haiku on HDA hardware, you should have sound now too! :) git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21161 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
abc35492427ddf6dd932ab3992f750c990d37889 |
|
17-May-2007 |
Ithamar R. Adema <ithamar.adema@team-embedded.nl> |
* Made code more Coding Guidelines compliant * Fixed several sem/area leaks when restarting media services. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21160 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
9432d6099199523dc896b9ad690e8f32d1bfcd4e |
|
16-May-2007 |
Ithamar R. Adema <ithamar.adema@team-embedded.nl> |
Fixed: * Prepare code for exposing multi_audio interface on Audio Function Group level * Some minor cleanups. Todo: * Publish devfs entries based on available Function Groups instead of HDA cards. * Publish all mixer controls / output busses through multi_audio interface. * Make recording work :) * Check why we need 4096 samples to play ok. * Figure out problems with driver on Haiku... currently only successfully tested on R5. As you can see, plenty of things left to do, but progressing nicely. At least people can have sound on R5 now! git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21159 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
7c8482e991585675146d52f5df3b1e98147f591d |
|
16-May-2007 |
Ithamar R. Adema <ithamar.adema@team-embedded.nl> |
* Count samples, not bytes, stupid :P * Don't try to bypass semaphore counting, it should just work(tm) * Minor cleanups. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21158 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
b0d9cd6f665066ef752801665f1b935187119362 |
|
13-May-2007 |
Ithamar R. Adema <ithamar.adema@team-embedded.nl> |
* Delete all local copies of multi_audio from source tree. * Change name of header for Haiku specific multi_audio to hmulti_audio (in line with the rename of the media addon itself) git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21136 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
2a3d3b7ad6380159f02b6ee5af3101e0d12ec67b |
|
13-May-2007 |
Ithamar R. Adema <ithamar.adema@team-embedded.nl> |
* More buffer (cycle) handling * Locking of stream info. * Add compile-time support for Haiku/BeOS multi_audio API. TODO: Need to check out why we have multiple (different) multi_audio.h files floating around in the source tree.... git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21135 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
89db0a5bf7261730fcf8d988412b660ccbe1ffc8 |
|
13-May-2007 |
Ithamar R. Adema <ithamar.adema@team-embedded.nl> |
*** WARNING: UNSTABLE CODE AHEAD :P *** This is the first (sort-of) working incarnation of the High Definition Audio driver. This driver still has quite some way to go before coming to a point that we could call it stable and useful, so please use with care. It has been developed on R5, so it might even become useful for people still stuck on R5. This driver was inspired by both the BSD work on HDA support, as well as our own dr_evil's work on the ich_ac97 driver. Before you start bugging me about completing the driver, or adding features, please capture the serial debug output and mail it to ithamar AT unet DOT nl, including hardware details, and success/failure descriptions. As a last note, DasJott, if you're reading this, the first music it played was... 'Prodigy: Smack Your Bitch Up' :) git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21127 a95241bf-73f2-0310-859d-f6bbb57e9c96
|