Re: hw_params function and OSS emulation

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Takashi Iwai wrote:

>> 3) Can I assume that .hw_params() is never called after .prepare() is called?
> 
> The call is allowed.

Ugh, so in other words, .hw_params() and .prepare() can be called any number 
of times in any order?  That makes it impossible to optimize the creation of 
the DMA buffer.  Currently, I have this code at the top of my .hwparams() 
function:

	if (substream->dma_buffer.addr) {
		dma_free_coherent(substream->pcm->dev,
			runtime_data->ld_buf_size, runtime_data->link,
			runtime_data->ld_buf_phys);
		snd_dma_free_pages(&substream->dma_buffer);
	}


When I look at the AT91 ASOC driver as an example, I see it allocates a DMA 
buffer of the maximum allowed size (currently hard-coded to 32KB) in the .new 
function.  To me, this is cheating, but it appears to be the only way to avoid 
doing what I'm currently doing.  Is this the recommend approach?

-- 
Timur Tabi
Linux Kernel Developer @ Freescale
_______________________________________________
Alsa-devel mailing list
Alsa-devel@xxxxxxxxxxxxxxxx
http://mailman.alsa-project.org/mailman/listinfo/alsa-devel

[Index of Archives]     [ALSA User]     [Linux Audio Users]     [Kernel Archive]     [Asterisk PBX]     [Photo Sharing]     [Linux Sound]     [Video 4 Linux]     [Gimp]     [Yosemite News]

  Powered by Linux