[alsa-devel] [PATCH] ALSA au88x0: Fix IRQ fifo error and channels swap of 4 channels playback

Manuel Jander manuel.jander at gmail.com
Sun Jan 8 18:45:18 CET 2012


Hi,

I can't remember why "pause fifo" is being called instead of "stop
fifo". If using the latter fixes channel swap, then I would guess that
the "stop" operation ensures that the DMA starts at an appropriate
aligned address, thus avoiding shifted data when the interleaved
channel get multiplexed to the AC97 codec. But that is just a wild
guess.

Best Regards, and thanks a lot, all of you.
Manuel


On Sun, Jan 8, 2012 at 2:40 PM, Takashi Iwai <tiwai at suse.de> wrote:
> At Sat, 7 Jan 2012 15:05:37 +0800,
> Raymond Yau wrote:
>>
>> 2012/1/6, Manuel Jander <manuel.jander at gmail.com>:
>> > Hi,
>> >
>> > thanks a lot. I tried your attached patch to 2.6.39 and in compiles
>> > and works OK as far as I can tell. I have not tested with 4 channel
>> > items though.
>> >
>> > Best Regards,
>> > Manuel
>> >
>> > On Fri, Jan 6, 2012 at 3:22 AM, Raymond Yau <superquad.vortex2 at gmail.com>
>> > wrote:
>> >> [PATCH ] ALSA au88x0 - Fix IRQ fifo error and channels swap of 4
>> >> channels playback
>> >>
>> >> - Fix IRQ fifo error when playing stereo by set stereo flag of fifo
>> >> control
>> >>  This also fix the swap of front and rear channels on au8830
>> >>
>> >>
>> >> https://bugtrack.alsa-project.org/alsa-bug/view.php?id=1840
>> >>
>> >> https://bugtrack.alsa-project.org/alsa-bug/view.php?id=1726
>> >
>>
>> The patch only fix "IRQ fifo error"
>>
>> Still need the following patch to fix the channel swaping of 4 channels playback
>>
>> Is there any reason to use vortex_adbdma_pausefifo() instead of
>> vortex_adbdma_stopfifo() for SNDRV_PCM_TRIGGER_STOP event ?
>>
>> Refer to page 28 of 6167465
>>
>> Stereo flag 505(i) may be set or reset appropriately, depending on the
>> type of DMA channel
>> ...
>> 505(c) The channel valid flag indicates that the particular has been
>> activated and the appropriate sub-buffer table 380, FIFO control
>> register 505 and FIFO 306 are active
>>
>>
>>  [PATCH ALSA] Au88x0 - Fix channels swapping of 4 channels playback
>>
>> - Fix channels swapping of 4 channels playback by
>>   using vortex_adbdma_stopfifo instead of vortex_adbdma_pausefifo
>>   for SNDRV_PCM_TRIGGER_STOP event
>
> OK, now applied both patches.
> Let me know if anything gets wrong.
>
>
> thanks,
>
> Takashi


More information about the Alsa-devel mailing list