• S
    ASoC: davinci: let platform data define edma queue numbers · 48519f0a
    Sekhar Nori 提交于
    Currently the EDMA queue to be used by for servicing ASP through
    internal RAM is fixed to EDMAQ_0 and that to service internal RAM
    from external RAM is fixed to EDMAQ_1.
    
    This may not be the desirable configuration on all platforms. For
    example, on DM365, queue 0 has large fifo size and is more suitable
    for video transfers. Having audio and video transfers on the same
    queue may lead to starvation on audio side.
    
    platform data as defined currently passes a queue number to the driver
    but that remains unused inside the driver.
    
    Fix this by defining one queue each for ASP and RAM transfers in the
    platform data and using it inside the driver.
    
    Since EDMAQ_0 maps to 0, thats the queue that will be used if
    the asp queue number is not initialized. None of the platforms
    currently utilize ping-pong transfers through internal RAM so that
    functionality remains unchanged too.
    
    This patch has been tested on DM644x and OMAP-L138 EVMs.
    Signed-off-by: NSekhar Nori <nsekhar@ti.com>
    Acked-by: NLiam Girdwood <lrg@slimlogic.co.uk>
    Signed-off-by: NMark Brown <broonie@opensource.wolfsonmicro.com>
    48519f0a
davinci-pcm.h 976 字节
/*
 * ALSA PCM interface for the TI DAVINCI processor
 *
 * Author:      Vladimir Barinov, <vbarinov@embeddedalley.com>
 * Copyright:   (C) 2007 MontaVista Software, Inc., <source@mvista.com>
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 2 as
 * published by the Free Software Foundation.
 */

#ifndef _DAVINCI_PCM_H
#define _DAVINCI_PCM_H

#include <mach/edma.h>
#include <mach/asp.h>


struct davinci_pcm_dma_params {
	int channel;			/* sync dma channel ID */
	unsigned short acnt;
	dma_addr_t dma_addr;		/* device physical address for DMA */
	unsigned sram_size;
	enum dma_event_q asp_chan_q;	/* event queue number for ASP channel */
	enum dma_event_q ram_chan_q;	/* event queue number for RAM channel */
	unsigned char data_type;	/* xfer data type */
	unsigned char convert_mono_stereo;
	unsigned int fifo_level;
};


extern struct snd_soc_platform davinci_soc_platform;

#endif