[Alsa-devel] [RFC 4/8] snd-aoa: add i2sbus

Takashi Iwai tiwai at suse.de
Wed Jun 7 00:00:40 EST 2006


At Tue, 06 Jun 2006 13:17:27 +0200,
Johannes Berg wrote:
> 
> On Fri, 2006-06-02 at 16:23 +0200, Takashi Iwai wrote:
> > > +	if (I2S_CLOCK_SPEED_18MHz % rate == 0) {
> > > +		if ((I2S_CLOCK_SPEED_18MHz / rate) % mclk == 0) {
> > 
> > Equivalent with "I2S_CLOCK_SPEED_18MHZ % (rate * mclk) == 0" ?
> 
> Yeah, I guess, never really thought about that, just wrote it down the
> way I thought to do it :) That said, I think it's more readable if
> written that way, do you want me to change it regardless?

I found a single if is more readable (and good for compiler).

> > > +	/* well, we really should support scatter/gather DMA */
> > > +	/* FIXME FIXME FIXME: If this fails, we BUG() when the alsa layer
> > > +	 * later tries to allocate memory. Apparently we should be setting
> > > +	 * some device pointer for that ...
> > > +	 */
> > > +	snd_pcm_lib_preallocate_pages_for_all(
> > > +		dev->pcm, SNDRV_DMA_TYPE_DEV,
> > > +		snd_dma_pci_data(macio_get_pci_dev(i2sdev->macio)),
> > > +		64 * 1024, 64 * 1024);
> > 
> > Is the comment true?  Yes, you have to set the device pointer via
> > snd_pcm_lib_preallocate*().  But it must be OK even if preallocate
> > fails.
> 
> Hah, I don't know actually, I didn't know you set the pointer using this
> function, when I wrote the comment I just had forgotten the preallocate
> call!
> Does that mean that _preallocate_pages_for_all() has the side effect of
> setting the pointer? If so, imho that's pretty bad.

No, the only requirement is that you have to call snd_pcm_lib_malloc()
with proper type and assigned device pointer if you use
snd_pcm_lib_malloc() function.  (If not called, you've got an error
when compiled with debug option.)


Takashi



More information about the Linuxppc-dev mailing list