OSS Audio L/R Channel Interchanges fix
PATCH 1/1 OSS Audio L/R Channel Interchanges fix
ARM: OMAP: OSS L/R Channel Interchange fix as proposed by
Ajaya Babu Anne <anneajaya_at_gmail.com>
Signed-off-by Dirk Behme <dirk.behme_at_de.bosch.com>
sound/oss/omap-audio-dma-intfc.c renamed from sound/oss/omap-audio-dma-intfc.c_orig +4 -0
@@ -28,6 +28,8 @@* 2004-11-01 Nishanth Menon - 16xx platform code base modified to support multi channel chaining. * * 2004-12-15 Nishanth Menon - Improved 16xx platform channel logic introduced - tasklets, queue handling updated +* +* 2005-12-10 Dirk Behme - Added L/R Channel Interchange fix as proposed by Ajaya Babu */ #include <linux/config.h>
@@ -730,8 +732,10 @@ static int audio_start_dma_chain(audio_sint channel = s->lch[s->dma_q_head];FN_IN ;if (!s->started) { + s->hw_stop ();/* stops McBSP Interface */ omap_start_dma (channel); s->started =1 ; + s->hw_start ();/* start McBSP interface */ }/* else the dma itself will progress forward with out our help */ FN_OUT (0 );
sound/oss/omap-audio-aic23.c renamed from sound/oss/omap-audio-aic23.c_orig +21 -2
@@ -111,16 +111,35 @@#define NUMBER_SAMPLE_RATES_SUPPORTED 9 +/* +* HW interface start and stop helper functions +*/ +static int audio_ifc_start (void ) +{ +omap_mcbsp_start (AUDIO_MCBSP ); +return 0 ; +} + +static int audio_ifc_stop (void ) +{ +omap_mcbsp_stop (AUDIO_MCBSP ); +return 0 ; +} +static audio_stream_t output_stream = { .id ="AIC23 out" , .dma_dev =OMAP_DMA_MCBSP1_TX , - .input_or_output =FMODE_WRITE + .input_or_output =FMODE_WRITE , + .hw_start = audio_ifc_start, + .hw_stop = audio_ifc_stop };static audio_stream_t input_stream = { .id ="AIC23 in" , .dma_dev =OMAP_DMA_MCBSP1_RX , - .input_or_output =FMODE_READ + .input_or_output =FMODE_READ , + .hw_start = audio_ifc_start, + .hw_stop = audio_ifc_stop };static struct clk *aic23_mclk =0 ;
sound/oss/omap-audio.h renamed from sound/oss/omap-audio.h_orig +4 -0
@@ -20,6 +20,8 @@* 2004/08/12 Nishanth Menon - Modified to integrate Audio requirements on 1610,1710 platforms * * 2004/04/04 Nishanth menon - Added hooks for power management +* +* 2005/12/10 Dirk Behme - Added L/R Channel Interchange fix as proposed by Ajaya Babu */ #ifndef __OMAP_AUDIO_H
@@ -75,6 +77,8 @@ typedef struct { unsigned stopped:1; /* might be active but stopped */ unsigned spin_idle:1; /* have DMA spin on zeros when idle */ unsigned linked:1; /* dma channels linked */ +int (*hw_start)(void );/* interface to start HW interface, e.g. McBSP */ +int (*hw_stop)(void );/* interface to stop HW interface, e.g. McBSP */ } audio_stream_t;/*