[Sound-open-firmware] [PATCH 2/3] dai: set dai dma msize according to slot number
Liam Girdwood
liam.r.girdwood at linux.intel.com
Sat Dec 16 18:55:38 CET 2017
On Sat, 2017-12-16 at 09:59 +0800, Keyon Jie wrote:
> We should set src_msize and dest_msize for dma peripheral dev
> copy, for dai/ssp, they should be set to valid slot number,
> otherwise, the dma may copy in wrong burst size and data will
> run with wrong speed.
>
> Signed-off-by: Keyon Jie <yang.jie at linux.intel.com>
> ---
> src/audio/dai.c | 18 ++++++++++++++++++
This is specific only for DW-MDA engine so should be in dw-dma.c and
not dai.c which is generic.
Liam
> 1 file changed, 18 insertions(+)
>
> diff --git a/src/audio/dai.c b/src/audio/dai.c
> index c50a274..e67e5cf 100644
> --- a/src/audio/dai.c
> +++ b/src/audio/dai.c
> @@ -599,8 +599,26 @@ static int dai_position(struct comp_dev *dev,
> struct sof_ipc_stream_posn *posn)
> return 0;
> }
>
> +/*
> + * use array to get msize for specific slot number setting.
> + * the relation between msize and slot_num should be
> + * 2 ^ msize = slot_num
> + */
> +static const uint32_t msize[] = {1, 2, 4, 8};
> static int dai_config(struct comp_dev *dev, struct
> sof_ipc_dai_config *config)
> {
> + struct dai_data *dd = comp_get_drvdata(dev);
> + int i;
> +
> + /* set dma msize according to slot number */
> + for (i = 0; i < ARRAY_SIZE(msize); i++) {
> + if (msize[i] == config->num_slots) {
> + dd->config.src_msize = i;
> + dd->config.dest_msize = i;
> + break;
> + }
> + }
> +
> /* calc frame bytes */
> switch (config->sample_valid_bits) {
> case 16:
More information about the Sound-open-firmware
mailing list