Audio Back End: Difference between revisions - Pyra Wiki

No edit summary
 
(2 intermediate revisions by the same user not shown)
Line 21: Line 21:
* [[Tesla]] DSP subsystem (including EDMA) via private dedicated link
* [[Tesla]] DSP subsystem (including EDMA) via private dedicated link


The private links from mpuss and dspss are intended for use in low-power scenarios, to avoid waking up the entire L3 interconnect. Note that the audio transfer controller (atc) cannot reach outside ABE. DMA to/from memory is handled by the system dma controller (sdma) via the L3 interconnect.
The private links from mpuss and dspss are intended for use in low-power scenarios, to avoid waking up the entire L3 interconnect. Note that the audio transfer controller (atc) cannot reach outside ABE. DMA between ABE and ddr3 memory is handled by the system dma controller (sdma) via the L3 interconnect.


== Audio Engine Subsystem ==
== Audio Engine Subsystem ==
Line 46: Line 46:


* [http://www.ti.com/lit/ug/swpu245h/swpu245h.pdf ABE HAL documentation]
* [http://www.ti.com/lit/ug/swpu245h/swpu245h.pdf ABE HAL documentation]
* The [http://omappedia.org/wiki/Audio_Drive_Arch Audio Drive Arch] page on omappedia describes the ABE firmware and kernel driver.
* [https://git.ti.com/glsdk/abefw-omap4plus ABE firmware] repo, [https://github.com/mvduin/abefw-omap4plus my mirror] with a bit a tidying. Besides the firmware this repo also includes headers with offsets into AE's memories and abstraction code, or something. Haven't examined it in detail yet.
* [https://git.ti.com/glsdk/abefw-omap4plus ABE firmware] repo, [https://github.com/mvduin/abefw-omap4plus my mirror] with a bit a tidying. Besides the firmware this repo also includes headers with offsets into AE's memories and abstraction code, or something. Haven't examined it in detail yet.
* [https://git.ti.com/ti-linux-kernel/ti-linux-kernel/commits/ti-linux-3.8.y TI Linux 3.8] ([https://github.com/RobertCNelson/ti-linux-kernel/commits/ti-linux-3.8.y/ mirror]) seems to be the last version that still included support for ABE, as well as the OMAP5-sEVM. See [https://github.com/RobertCNelson/ti-linux-kernel/tree/ti-linux-3.8.y/sound/soc/omap/aess sound/soc/omap/aess] in particular.
* [https://git.ti.com/ti-linux-kernel/ti-linux-kernel/commits/ti-linux-3.8.y TI Linux 3.8] ([https://github.com/RobertCNelson/ti-linux-kernel/commits/ti-linux-3.8.y/ mirror]) seems to be the last version that still included support for ABE, as well as the OMAP5-sEVM. See [https://github.com/RobertCNelson/ti-linux-kernel/tree/ti-linux-3.8.y/sound/soc/omap/aess sound/soc/omap/aess] in particular.
* Actually, omap-audio has a [https://github.com/omap-audio/linux-audio/tree/next-bnw/ti-audio-next_3.15 3.15 branch]. Does it work on OMAP 5 though?
* '''Update:''' [https://pyra-handheld.com/pipermail/kernel/2017-September/002060.html Peter Ujfalusi recommends] trying to forward-port the 3.15 branch rather than the 3.8 branch.

Latest revision as of 16:52, 19 September 2017

This article is a stub and needs expanding.

Overview

ABE is part of omap4 (all variants) and omap5, and does not appear to have changed in any major way since its introduction.

ABE components (targets on ABE interconnect):

  • external interfaces:
    • custom interface (mcpdm) to TWL6040/TWL6041 audio IC
    • digital microphone controller (dmic)
    • digital audio interfaces (mcbsp1-3, mcasp)
    • mipi slimbus interface (slimbus1), defeatured on omap5
  • four timers (gptimer5-8) with external trigger input / pwm output.
  • watchdog (wdt3)
  • audio engine subsystem (aess)

Initiators to the ABE interconnect:

  • audio engine subsystem (local initiator) embeds dedicated dma controller (audio transfer controller) for local transfers between ABE components
  • L3 interconnect
  • Cortex-A15 subsystem (mpuss) via private dedicated link
  • Tesla DSP subsystem (including EDMA) via private dedicated link

The private links from mpuss and dspss are intended for use in low-power scenarios, to avoid waking up the entire L3 interconnect. Note that the audio transfer controller (atc) cannot reach outside ABE. DMA between ABE and ddr3 memory is handled by the system dma controller (sdma) via the L3 interconnect.

Audio Engine Subsystem

The AE is the core of the ABE subsystem. It performs the real-time audio processing within the ABE: mixing, muxing, volume control, smooth muting, sampling rate conversion, and side-tone equalization.

Custom dedicated DSP (unrelated to the Tesla DSP) for audio processing.

Embeds local memories:

  • DMEM: 64 KB data memory
  • CMEM: 6 KB coefficient memory
  • SMEM: 18 KB sample memory
  • PMEM: 8 KB program memory

Audio traffic controller (ATC)

  • performs local DMA (within ABE)
  • generates interrupt requests to cortex-a15 and tesla DSP
  • generates requests to sDMA (system dma controller) and EDMA (Tesla subsystem DMA controller)

AE is considered to be fixed-function by TI, only supports a one-time firmware upload after cold boot. Unknown 32-bit instruction set. Helpfully, three slightly different versions of the firmware are provided, which made it easy identify branch-like instructions. Histogram of instructions across all three firmwares.

Documentation / Resources

Back
Top