Commit Graph

2245 Commits

Author SHA1 Message Date
Keyon Jie b9bd368186 volume: use rzalloc for component new
Replace rmalloc() with rzalloc() to make sure the new
allocated structs are clear to all 0s.

Signed-off-by: Keyon Jie <yang.jie@linux.intel.com>
2017-01-10 09:34:34 +00:00
Keyon Jie 75eee17e0c dai: rename frame_size in dai_config to sample_size
The element frame_size in dai_config struct is actually
sample size for each channel, e.g. 24 for S24_4LE, so
rename it to sample_size to avoid confusion.

Signed-off-by: Keyon Jie <yang.jie@linux.intel.com>
2017-01-03 11:37:32 +00:00
Keyon Jie 41305b3605 pipeline: change back to use normal static pipeline by default
As the normal static pipeline can work fine after the 1.33->1ms
buffer and 16->32 bits internal buffer transforming finished,
let's change back to use normal static pipeline by default.

Signed-off-by: Keyon Jie <yang.jie@linux.intel.com>
2017-01-03 11:37:27 +00:00
Keyon Jie 6e01ff627e mixer: use int64_t intermediate variable to avoid clamping
As we have changed internal buffer to 32 bits, to
avoid clamping, we need to change accumulator to
64 bits.

Signed-off-by: Keyon Jie <yang.jie@linux.intel.com>
2017-01-03 11:37:27 +00:00
Keyon Jie 6cc211498e volume: add 24bit<==>32bit scaler and mapping
As we are using 32 bits data in internal buffer, we need
24bit<==>32bit volume scaler for host<==>processing<==>dai
converting.

Signed-off-by: Keyon Jie <yang.jie@linux.intel.com>
2017-01-03 11:37:27 +00:00
Keyon Jie f24dd313ea host: fix the increment offset in the callback
When the host buffer is not 1ms aligned and splitting happens,
the increment is not period size, this wrong pointer will make
pcm data missed/clipped and sound noisy.

Changing to use the actual size last dma copy consumed,
local_elem->size, to fix the issue.

Signed-off-by: Keyon Jie <yang.jie@linux.intel.com>
2016-12-29 10:41:42 +00:00
Keyon Jie 6d608f76f5 dai: add stream_format to dai_data for codec stream
Adding stream_format to indicate the stream format that the
dai buffer is using, which will be used for volume copy
functions mapping.

Signed-off-by: Keyon Jie <yang.jie@linux.intel.com>
2016-12-29 10:41:42 +00:00
Liam Girdwood c87617fe7c ssp: use BCLK and MCLK directly for DAI clocking
It's better to express MCLK and BCLK as freqencies rather than as ratios.

Signed-off-by: Liam Girdwood <liam.r.girdwood@linux.intel.com>
2016-12-29 10:41:31 +00:00
Liam Girdwood 8eb6743a45 mixer: make mixer more optimal and easier to vectorise
Make the mixer compute two channels per loop iteration. This allows for
easier vectorisation. The loop is also more efficient if we update or
source/sink pointers after mixing has completed.

Signed-off-by: Liam Girdwood <liam.r.girdwood@linux.intel.com>
2016-12-29 10:41:31 +00:00
Liam Girdwood dcbff09253 volume: Fix R channel and select correct conversion.
The conversion should up/down convert only if source/sink is host or dai.
Volume should be 32 bit at all other times

Signed-off-by: Liam Girdwood <liam.r.girdwood@linux.intel.com>
2016-12-29 10:41:31 +00:00
Liam Girdwood b246c42d07 pipeline: set up static buffers using platform macros.
Use period frames instead of period size in bytes. This makes the pipeline
configuration less ambiguous and also allows for host, dai and internal frame
sizes to be defined.

Signed-off-by: Liam Girdwood <liam.r.girdwood@linux.intel.com>
2016-12-29 10:41:31 +00:00
Liam Girdwood 77bc065d6c version: improve git version for build and IPC
Improve the git version and include last commit for IPC version message.

Signed-off-by: Liam Girdwood <liam.r.girdwood@linux.intel.com>
2016-12-22 20:20:10 +00:00
Liam Girdwood cc9b2ffa21 pipeline: Add simple debug pipeline.
Add a simple static pipeline that can be used for debug

Signed-off-by: Liam Girdwood <liam.r.girdwood@linux.intel.com>
2016-12-22 20:20:02 +00:00
Liam Girdwood 8b7e372eb3 pipeline: use 1ms tick for low latency pipeline.
Change tick from 1.3ms to 1ms to improve latency.

Signed-off-by: Liam Girdwood <liam.r.girdwood@linux.intel.com>
2016-12-22 20:19:56 +00:00
Liam Girdwood ae0a203d31 dw-dma: Add parenthesis around if statement logic
Make it less ambiguous.

Signed-off-by: Liam Girdwood <liam.r.girdwood@linux.intel.com>
2016-12-22 20:19:49 +00:00
Liam Girdwood 53a996454e panic: disable all interrupts when we panic.
Make sure any interrupt handler can run after a panic.

Signed-off-by: Liam Girdwood <liam.r.girdwood@linux.intel.com>
2016-12-22 20:19:43 +00:00
Liam Girdwood e413380d43 host: Add support for non continuous host buffers
Host buffers are not guaranteed to be continuous physical pages or a factor
of the DSP period size. Add support for non continuous host buffers of any
size.

Signed-off-by: Liam Girdwood <liam.r.girdwood@linux.intel.com>
2016-12-22 20:19:38 +00:00
Liam Girdwood 0fb95a8ed3 host: use platform DMA timeout for host DMA timeout.
This will be different for each platform so use the platform tiemout.

Signed-off-by: Liam Girdwood <liam.r.girdwood@linux.intel.com>
2016-12-22 20:19:34 +00:00
Liam Girdwood bf407d2a7e component: host: Add support for passing host buffer size as param
The host buffer may not be a multiple of host PHY page size, so provide
so pass this value as part of our host buffer init.

Signed-off-by: Liam Girdwood <liam.r.girdwood@linux.intel.com>
2016-12-22 20:19:28 +00:00
Liam Girdwood 6d21349094 dma: Add support for callback DMA reload.
Add support to immediately reload the DMA during a DMA transfer completion
callback. This allows components to respond quickly to any physical
DMA copy updates i.e. period split over two non continuous physical host
pages.

Signed-off-by: Liam Girdwood <liam.r.girdwood@linux.intel.com>
2016-12-22 20:19:22 +00:00
Keyon Jie cff154ca87 ssp: switch dai format form PCM B mode to normal I2S mode
it is configured from host/codec side that using I2S mode, so
switch it.
2016-12-22 16:30:26 +00:00
Keyon Jie 71a85c764d volume: add 16bit<==>24bit volume copy function and mapping
add 16bit<==>24bit volume copy function and mapping, for
24 bits ssp output/input.

here also optimize all other volume copy functions.

Signed-off-by: Keyon Jie <yang.jie@linux.intel.com>
2016-12-22 16:18:47 +00:00
Keyon Jie 6ac88d96a4 platform: switch default ssp clock to 19.2M
switch default ssp clock from 25M to 19.2M, which may help
for 24 bit format.

Signed-off-by: Keyon Jie <yang.jie@linux.intel.com>
2016-12-22 16:18:42 +00:00
Keyon Jie d58b35c4e7 ssp: switch to use SCR for BCLK generation.
switch the BCLK generation from shim ssp clock divider to
using SSCR0.SCR, as the divider may lead to jitter.

clear and remove M/N divider part code.

Signed-off-by: Keyon Jie <yang.jie@linux.intel.com>
2016-12-22 16:18:36 +00:00
Keyon Jie 05af7a8a8a dw-dma: fix dsp local memory mapping issue
for DMA controller, we need mask dsp local memory before
setting it to DMAC registers, otherwise, DMAC will locate
to wrong memory address.

Signed-off-by: Keyon Jie <yang.jie@linux.intel.com>
2016-12-09 14:15:25 +00:00
Keyon Jie 5ffc92087a pipeline: clear buffer content to 0s on new
We need clear/reset buffer content to 0s each time
creating a pipeline buffer, to avoid random noise
when using it.

Signed-off-by: Keyon Jie <yang.jie@linux.intel.com>
2016-12-09 13:57:19 +00:00
Sebastien Guiriec ca23f51a30 core: Add dsp-core option for XTENSA compiler
In order to use native XTENSA compiler the core target needs to
be overwite with the good platform. This patch is adding an optional
option in order to be able to overwrite the core selection.

Example:
- Set Xtensa export PATH=$PATH:<PATH>/xtensa/XtDevTools/install/tools/RD-2012.5-linux/XtensaTools
./configure --with-arch=xtensa --with-platform=baytrail --with-dsp-core=CHT_audio_hifiep --with-root-dir=<PATH>/xtensa/XtDevTools/install/tools/RD-2012.5-linux/XtensaTools --host=xtensa CC=xt-xcc OBJCOPY=xt-objcopy OBJDUMP=xt-objdump
make
make bin

Signed-off-by: Sebastien Guiriec <sebastien.guiriec@intel.com>
2016-11-02 16:11:26 +00:00
Sebastien Guiriec d7e0013329 readme: Fix DSP compiler tool directy setting for platform build
In order to set the Root directory of the DSP compiler we should
use --with-root-dir instead of --with-tool-dir

Signed-off-by: Sebastien Guiriec <sebastien.guiriec@intel.com>
2016-10-31 23:31:05 +00:00
Keyon Jie 353b0d34ff platform: baytrail: use package string as the fw version
On the linux driver side, it need get version infomation
from fw, including:

type -- Reef
version -- major.minor
build number
last commit id -- gID

So here we use the package string, which come from git
version, which can provide all those fw version infos.

Signed-off-by: Keyon Jie <yang.jie@linux.intel.com>
2016-10-27 10:11:08 +01:00
Keyon Jie 997e14b7b0 ssp: return after draining finished
To prevent the consequent command arrive when we are
at substates.

Signed-off-by: Keyon Jie <yang.jie@linux.intel.com>
2016-10-24 10:53:22 +01:00
Keyon Jie 677fc76612 ssp: cleanup ssp status
We are using 6 states, 2 of them are substates:
init, idle, running, paused,
draining(sub state when transferring from running to idle)
pausing(substate when transferring from running to paused).

Don't response new command when in substates, only stay in
substates for limited timeout. e.g. 2ms for draing and 1ms
for pausing.

Signed-off-by: Keyon Jie <yang.jie@linux.intel.com>
2016-10-24 10:53:15 +01:00
Keyon Jie 991ea7b034 dai: cleanup dai component status
Only use 4 states for dai component:
init, prepare, runing, paused.

Signed-off-by: Keyon Jie <yang.jie@linux.intel.com>
2016-10-24 10:53:05 +01:00
Keyon Jie fec488d446 dai: add macros for dai tracing
Signed-off-by: Keyon Jie <yang.jie@linux.intel.com>
2016-10-24 10:52:51 +01:00
Liam Girdwood 446fe1af42 ipc: dma: Correct typo for DMA timeout time and units.
100 usecs not 1 msec

Signed-off-by: Liam Girdwood <liam.r.girdwood@linux.intel.com>
2016-10-20 16:05:12 +01:00
Liam Girdwood 5b33175b11 platform: cht: Add support for CHT DMACs and SSP ports
Make sure we initialise the extra SSPs and DMACs for CHT.

Signed-off-by: Liam Girdwood <liam.r.girdwood@linux.intel.com>
2016-10-20 15:51:22 +01:00
Liam Girdwood e00e51697a cht: Add M/N dividers for 19.2MHz
Add some M/N divider entries for 19.2M source clock.

Signed-off-by: Liam Girdwood <liam.r.girdwood@linux.intel.com>
2016-10-20 15:51:22 +01:00
Liam Girdwood eb042a4241 dma: Add DMAC2 for CHT
CHT has 3 DMACs compared to the 2 DMACs on BYT

Signed-off-by: Liam Girdwood <liam.r.girdwood@linux.intel.com>
2016-10-20 15:51:22 +01:00
Liam Girdwood 32ebf0f866 dai: add support for CHT SSP ports
CHT has 6 SSP ports compared to 3 on BYT

Signed-off-by: Liam Girdwood <liam.r.girdwood@linux.intel.com>
2016-10-20 15:10:12 +01:00
Liam Girdwood c55a11cdd6 clk: base frequencies for BYT and CHT are different.
Create a table for each platform with the correct frequencies.

Signed-off-by: Liam Girdwood <liam.r.girdwood@linux.intel.com>
2016-10-19 15:31:41 +01:00
Liam Girdwood 8855ce5b4a build: fix configure naming to use newlib header directory.
The tool-dir naming was a bit ambiguous so rename and fix build-all.sh
to use new name too.

Signed-off-by: Liam Girdwood <liam.r.girdwood@linux.intel.com>
2016-10-18 17:18:16 +01:00
Liam Girdwood 419b086240 configure: use the sof mailing list address
Replace the test email addres with sof mailing list in configure.ac

Signed-off-by: Liam Girdwood <liam.r.girdwood@linux.intel.com>
2016-10-17 16:10:42 +01:00
Liam Girdwood b45d98cee1 dma: set mask on local DSP memory regions.
The DMA controller needs to differentiate between host and DSP memory
regions. This can be done with a mask that is ORed with local DSP memory
locations.

Signed-off-by: Liam Girdwood <liam.r.girdwood@linux.intel.com>
2016-10-17 16:10:31 +01:00
Liam Girdwood 0fe9e33143 host: cleanup formatting.
Some lines > 80 chars.

Signed-off-by: Liam Girdwood <liam.r.girdwood@linux.intel.com>
2016-10-17 16:10:20 +01:00
Liam Girdwood 04a535d508 rimage: Initial import of rimage firmware tool.
rimage converts ELF binaries to the firmware image file format understood
by the kernel audio drivers.

Signed-off-by: Liam Girdwood <liam.r.girdwood@linux.intel.com>
2016-10-07 10:48:49 +01:00
Liam Girdwood c0dfb4e62a core: initial import of open source DSP firmware
This project provides an open source audio firmware infrastructure for audio
DSPs found on many modern devices. The intention is to allow developers to
create their own codecs, audio processing algorithms and pipelines using
the infrastructure and audio components provided by this project.

The project currently supports the Intel Baytrail and Cherrytrail audio DSP
platforms which use the Xtensa architecture.

The firmware source code is released under the BSD 3 clause licence.

Signed-off-by: Liam Girdwood <liam.r.girdwood@linux.intel.com>
2016-09-22 16:02:43 +01:00