History log of /fuchsia/zircon/system/dev/audio/intel-hda/dsp/intel-audio-dsp.cpp
Revision Date Author Comments
# 989ee4e8 13-Jun-2018 David Moore <davemoore@google.com>

[syscalls] Change vmar_... calls

- Create zx_vm_option_t type
- Change ZX_VM_FLAG_... to ZX_VM_... and make them new type.
- Change int32_t flags parameters to zx_vm_option_t options
- Make the options parameter be second.

- Modify vmar_..._old functions to keep other repos working.
Once they've all been updated these functions will go away.

ZX-2264
Test:CQ

Change-Id: I1faf4cc4e1e4dabf3d8ef680e398d83a545b0f09


# 0f9088d6 16-Jul-2018 John Grossman <johngro@google.com>

[vmo-utils] Move PinnedVmo from IntelHDA utils into libfzl

Promote the PinnedVmo class out of the IntelHDA driver and up to
libfzl so that it can be used by other drivers.

ZX-2462 #comment PinnedVmo class promoted into libfzl from HDA driver

Test: Build and manual test with existing HDA driver.
Change-Id: I60b2501c906e5ef3a58e9d6f1dc4ded6cfa3a191


# beed9a1c 10-Aug-2018 Yvonne Yip <yky@google.com>

[dev][audio][intel-hda][dsp] shutdown the dsp in suspend()

If the DSP is active while the system is powered off, it will
cause the device to hang during shutdown because it is unable
to go into S5. Powering off the DSP during shutdown resolves
this issue.

ZX-2185 #comment part of the fix

TEST=manual testing using "dm poweroff"

Change-Id: Ic2eea78fc04063d38f8978d7cdb2694a93847006


# b33437b1 26-Jul-2018 Nick Maniscalco <maniscalco@google.com>

[zircon][kernel] Use proper time types and overflow-safe arithmetic

This change is preparation for converting zx_time_t and zx_duration_t
from unsigned to signed types (ZX-2100).

1. Fix several places where the wrong time type was used (e.g.
zx_time_t instead of zx_duration_t). Because these are simple typedefs
it's easy to use the wrong one. While it generally doesn't cause a
problem, using the wrong type can be misleading and lead to bugs like
passing a relative time when an absolute time is expected.

2. Update kernel/ and some other parts of zircon to use the new
overflow-safe arithmetic functions from zircon/time.h.

Performance: Ran "/pkgfs/packages/zircon_benchmarks/0/bin/app -p" on
NUC before and after this change. Differences were withing the noise,
some slightly faster, some slightly slower.

Test: CQ

ZX-2100 #comment cleanup before conversion

Change-Id: I75d074e5850ade5385decd9bbf330497bf7610e9


# ff356b8b 09-Aug-2018 John Grossman <johngro@google.com>

[vmo-utils][fzl] Move contents of vmo-utils into fzl

Move copies of the vmo-centric helper classes which existed in
vmo-utils into fzl. This is step one of merging vmo-utils and libfzl.
Once higher level code has been migrated over to use the new library,
vmo-utils and its tests can be removed.

Also, merge the libfzl and fzl unit tests. I'm not sure how they got
divided in the first place, but now they are unified under just
libfzl.

ZX-2462 #comment Classes have been duplicated and added to libfzl
Test: Build and unit-test

Change-Id: Ie3bc07a9f78b6383032fcc974f28dd6af50caf21


# 24b85afe 20-Jun-2018 Yvonne Yip <yky@google.com>

[dev][intel-hda][dsp] check FW_STATUS first during FW init

After starting DMA for DSP firmware load, poll the FW_STATUS field
to equal ADSP_FW_STATUS_STATE_ENTER_BASE_FW before waiting for the
FW Ready IPC. Both conditions must be true when the DSP is
operational.

It seems like reading FW_STATUS has some effect. Previously the
driver waited for the FW Ready IPC first, and sometimes the wait
times out with a bad FW_STATUS. If we then poll FW_STATUS, it
transitions to ADSP_FW_STATUS_STATE_ENTER_BASE_FW.

Also stop the DMA after polling FW_STATUS and before waiting
for IPC. This doesn't seem to have an effect.

Test: booted a pixelbook that previously failed at least 1
out of 10 boots, now booted successfully 30 times.
booted a second pixelbook 10 times successfully

ZX-1538 #comment another potential fix

Change-Id: I86989291e7e376f871beea3a0224e8d95323750e


# ff28108c 07-Jun-2018 Yvonne Yip <yky@google.com>

[dev][intel-hda][dsp] adjust log levels

Change-Id: I1543e7a3175f5b736945649637c357e5fb5ff909


# 219c5763 14-Jun-2018 Yvonne Yip <yky@google.com>

[dev][intel-hda][dsp] print FW_STATUS on fw load failure

Change-Id: I781d97e09c0fe95235fecd406655dad331f58cce


# 2eba1fc6 14-Jun-2018 Yvonne Yip <yky@google.com>

[dev][intel-hda][dsp] keep FW pinned until it is loaded

The FW VMO was getting unpinned while the code loader DMA
was in progress, because the PinnedVmo object was destroyed
on function return from IntelDspCodeLoader::TransferFirmware()
which is not responsible for DMA completion wait.

Move the PinnedVmo object to the function that waits for
firmware load success (implies DMA completion), so the memory
stays pinned.

Change-Id: I207a7ca6a68a448011eea6829251c2040d29d986


# 66dda880 05-Jun-2018 Yvonne Yip <yky@google.com>

[dev][intel-hda][dsp] set cldma size to stripped fw size

Change-Id: I5421ca32740ab04b3b415c2c20daaae15c5abd36


# 21cadd74 05-Jun-2018 Yvonne Yip <yky@google.com>

[dev][intel-hda][dsp] poll the CPA bit for power up/down

The driver sets the SPA bit to power up/down the DSP cores
and polls the CPA bit to match the SPA value. When the
values match the power transition has been achieved.

Previously it was polling the wrong bit so the DSP may
be in the wrong state for subsequent operations.

Change-Id: I6ce9a3fa7bfcf9978b443da732e03da33e0201f2


# 8f4fe9b3 04-Jun-2018 Yvonne Yip <yky@google.com>

[dev][intel-hda][dsp] use FW_READY ipc notification

Wait for both the FW_READY IPC notification and fw_status
when waiting for the DSP to load firmware.

Change-Id: I35edb74f31ab20e3756bce529f4b7f1b52dd782b


# b0826017 22-May-2018 Yvonne Yip <yky@google.com>

[dev][intel-hda][dsp] pass dsp pipeline param to stream

Change-Id: I52605820c06dddc0b41a2e75e9ed8e878b32146f


# 35fa2ff3 22-May-2018 Yvonne Yip <yky@google.com>

[dev][intel-hda][dsp] introduce ipc workqueue

Change-Id: Ia1aeefd92fae121341a0974b005b0167d91da154


# a57932fa 18-May-2018 Yvonne Yip <yky@google.com>

[dev][intel-hda][dsp] get I2S config blob from NHLT

Change-Id: I2afd4bc5d7a256636d64cd2d70a1531bad1cd897


# e43b2d17 25-May-2018 Yvonne Yip <yky@google.com>

[dev][intel-hda][dsp] correct shutdown sequence

Must disable IRQs, then stall/reset the cores before powering down.

ZX-2185 #done

Change-Id: I8783af42d5dd312765ef9f19b4d817e3a845cdf4


# fb8930da 14-May-2018 Yvonne Yip <yky@google.com>

[dev][intel-hda][dsp] add dsp modules for capture

Change-Id: I99badae28a3c510201cf19f099dc8a094098f9c0


# 51f9947a 10-May-2018 Yvonne Yip <yky@google.com>

[dev][intel-hda][dsp] implement audio api

Derive IntelAudioDsp from IntelHDACodecDriverBase and
derive IntelDspStream from IntelHDAStreamBase to
reuse HDA stream management code.

The DSP streams maintains additional channels to
intercept ring-buffer channel requests, so the DSP
can coordinate starting and stopping pipelines with
the ring-buffer.

Change-Id: If935cbe4e97d0a940bf3c39b8ba6cfeb4c707438


# ef61bf75 04-Apr-2018 Yvonne Yip <yky@google.com>

[dev][intel-audio-dsp] initialize basic DSP pipeline

Initialize a single pipeline for speaker playback.

Change-Id: I7eea457e4a53a804942924b90c1bbf35b833a5f1


# 7d35c383 14-Feb-2018 Yvonne Yip <yky@google.com>

[dev][intel-hda] intel-audio-dsp driver

Currently just boots the DSP and loads the firmware.
The DSP driver is independent from the HDA driver, however
the source is checked in under system/dev/audio/intel-hda/
to be consistent with HDA codecs.

Change-Id: Ic2d9bca68ae7ee6c9011f53d0f894b7a68e43b86