From f1801279d7f8480cb8643bf23b8306d2ea07219d Mon Sep 17 00:00:00 2001 From: Vijay Mali Date: Tue, 20 Apr 2010 14:20:58 +0530 Subject: [tegra ALSA] Updating sndfx header file In order to keep sndfx file in sync with audiofx header file updating tegra_sndfx.h with structures and definitions, made the corresponding changes in code. Verified both playback and record are working fine. For bug 676616 synopsis: ALSA is Broken Change-Id: Ic3eca9e88c861169bcbcc829a621adc40ea2bea7 Reviewed-on: http://git-master/r/1158 Reviewed-by: Vijay Mali Tested-by: Vijay Mali Reviewed-by: Manjula Gupta Tested-by: Manjula Gupta Reviewed-by: Gary King --- sound/soc/tegra/tegra_sndfx.h | 51 ++++++++++-------- sound/soc/tegra/tegra_transport.c | 105 -------------------------------------- 2 files changed, 30 insertions(+), 126 deletions(-) diff --git a/sound/soc/tegra/tegra_sndfx.h b/sound/soc/tegra/tegra_sndfx.h index 6a6f720d859d..d5295a4a0c90 100644 --- a/sound/soc/tegra/tegra_sndfx.h +++ b/sound/soc/tegra/tegra_sndfx.h @@ -92,27 +92,27 @@ typedef NvS32 NvObjectId; #define NvAudioFxSrcId (0x1100000a) #define NvAudioFxSwitchId (0x1100000b) #define NvAudioFxVolumeId (0x1100000c) -#define NvAudioFxStreamId (0x11100001) -#define NvAudioFxI2sId (0x11100002) -#define NvAudioFxI2s2Id (0x11100002) -#define NvAudioFxSpdifId (0x11100003) -#define NvAudioFxSilenceId (0x11100004) -#define NvAudioFxDefaultPlaybackMixId (0x11300001) -#define NvAudioFxDefaultPlaybackSplitId (0x11300002) -#define NvAudioFxDefaultRecordMixId (0x11300003) -#define NvAudioFxDefaultRecordSplitId (0x11300004) -#define NvAudioFxI2sPlaybackMixId (0x11300005) -#define NvAudioFxI2sRecordSplitId (0x11300006) -#define NvAudioFxI2sLoopbackSplitId (0x11300007) -#define NvAudioFxI2s2PlaybackMixId (0x11300008) -#define NvAudioFxI2s2RecordSplitId (0x11300009) -#define NvAudioFxI2s2LoopbackSplitId (0x1130000a) -#define NvAudioFxSpdifPlaybackMixId (0x1130000b) -#define NvAudioFxSpdifRecordSplitId (0x1130000c) -#define NvAudioFxSpdifLoopbackSplitId (0x1130000d) -#define NvAudioFxMusicMixId (0x1130000e) -#define NvAudioFxMusicSplitId (0x1130000f) -#define NvAudioFxRingtoneMixId (0x11300010) +#define NvAudioFxStreamId (0x11100000) +#define NvAudioFxSpdifId (0x11100001) +#define NvAudioFxSilenceId (0x11100002) +#define NvAudioFxI2s1Id (0x11110000) +#define NvAudioFxI2s2Id (0x11110001) +#define NvAudioFxPlaybackMixId (0x11300000) +#define NvAudioFxPlaybackSplitId (0x11300001) +#define NvAudioFxRecordMixId (0x11300002) +#define NvAudioFxRecordSplitId (0x11300003) +#define NvAudioFxSpdifPlaybackMixId (0x11300004) +#define NvAudioFxSpdifRecordSplitId (0x11300005) +#define NvAudioFxSpdifLoopbackSplitId (0x11300006) +#define NvAudioFxMusicMixId (0x11300007) +#define NvAudioFxMusicSplitId (0x11300008) +#define NvAudioFxRingtoneMixId (0x11300009) +#define NvAudioFxI2s1PlaybackMixId (0x11310000) +#define NvAudioFxI2s1RecordSplitId (0x11310001) +#define NvAudioFxI2s1LoopbackSplitId (0x11310002) +#define NvAudioFxI2s2PlaybackMixId (0x11311000) +#define NvAudioFxI2s2RecordSplitId (0x11311001) +#define NvAudioFxI2s2LoopbackSplitId (0x11311002) // // Mixer @@ -150,6 +150,7 @@ typedef NvS32 NvAudioFxProperty; #define NvAudioFxDrcProperty_Drc (0x3000) #define NvAudioFxEqProperty_Eq (0x4000) #define NvAudioFxI2sProperty_InputSelect (0x4a00) +#define NvAudioFxI2sProperty_AllocChannel (0x4a01) #define NvAudioFxIoProperty_AddEvent (0x5000) #define NvAudioFxIoProperty_Position (0x5010) #define NvAudioFxIoProperty_RemoveEvent (0x5020) @@ -266,6 +267,14 @@ typedef NvS32 NvAudioFxI2sInputSelect; #define NvAudioFxI2sInputSelect_Phone (0x5) #define NvAudioFxI2sInputSelect_Radio (0x6) +// Description of the NvAudioFxI2sProperty_AllocChannel property. + +typedef struct NvAudioFxI2sChannelDescriptorRec +{ + NvAudioFxPin Pin; + NvU32 Id; +} NvAudioFxI2sChannelDescriptor; + // Parameteric EQ Filter types. typedef enum diff --git a/sound/soc/tegra/tegra_transport.c b/sound/soc/tegra/tegra_transport.c index e9a630785050..15a348edcc6a 100644 --- a/sound/soc/tegra/tegra_transport.c +++ b/sound/soc/tegra/tegra_transport.c @@ -537,111 +537,6 @@ EXIT: return; } -GlobalFxList* tegra_audiofx_create_topology(NvAudioFxMixerHandle hMixer) -{ - NvError e = NvSuccess; - NvAudioFxConnectionDescriptor connection; - GlobalFxList* pFxList = 0; - - memset(&connection, 0, sizeof(NvAudioFxConnectionDescriptor)); - pFxList = (GlobalFxList*)kzalloc(sizeof(GlobalFxList), GFP_KERNEL); - if (!pFxList) { - snd_printk(KERN_ERR "kzalloc failed!\n"); - goto EXIT_WITH_ERROR; - } - memset(pFxList, 0, sizeof(GlobalFxList)); - -#define audiofx_create_path(list_index, FxId) \ - pFxList->hFx[list_index] = tegra_transport_mixer_create_object(hMixer,FxId); \ - if(!pFxList->hFx[list_index]) { \ - snd_printk(KERN_ERR "audiofx_create_path failed!\n"); \ - goto EXIT_WITH_ERROR; \ - } - -#define audiofx_connect(src_index, sink_index) \ - connection.SourcePin = NvAudioFxSourcePin; \ - connection.SinkPin = NvAudioFxSinkPin; \ - connection.hSink = (NvAudioFxHandle)pFxList->hFx[sink_index]; \ - e = tegra_transport_set_property(pFxList->hFx[src_index], \ - NvAudioFxProperty_Attach, \ - sizeof(NvAudioFxConnectionDescriptor), \ - &connection); \ - if(e != NvSuccess) { \ - snd_printk(KERN_ERR "audiofx_connect failed!\n"); \ - } - - /* Default Playback Path */ - audiofx_create_path(GlobalFx_DefaultPlaybackMix, - NvAudioFxDefaultPlaybackMixId); - - audiofx_create_path(GlobalFx_DefaultPlaybackSplit, - NvAudioFxDefaultPlaybackSplitId); - - /* I2S Playback Path */ - audiofx_create_path(GlobalFx_I2sPlaybackMix, NvAudioFxI2sPlaybackMixId); - audiofx_create_path(GlobalFx_I2sPlaybackVolume, NvAudioFxVolumeId); - audiofx_create_path(GlobalFx_I2s, NvAudioFxI2sId); - - /* Default Record Path */ - audiofx_create_path(GlobalFx_DefaultRecordMix, - NvAudioFxDefaultRecordMixId); - - audiofx_create_path(GlobalFx_DefaultRecordSplit, - NvAudioFxDefaultRecordSplitId); - - /* I2S Record Path */ - audiofx_create_path(GlobalFx_I2sRecordVolume, NvAudioFxVolumeId); - audiofx_create_path(GlobalFx_I2sRecordSplit, NvAudioFxI2sRecordSplitId); - -#if (0) - /* Simple Playback */ - audiofx_connect(GlobalFx_DefaultPlaybackMix, GlobalFx_I2s); -#else - /* Playback */ - audiofx_connect(GlobalFx_DefaultPlaybackMix, GlobalFx_DefaultPlaybackSplit); - audiofx_connect(GlobalFx_DefaultPlaybackSplit, GlobalFx_I2sPlaybackMix); - - /* Wire SPDIF on HDMI connection and unwire it when not connected. */ - audiofx_connect(GlobalFx_I2sPlaybackMix, GlobalFx_I2sPlaybackVolume); - audiofx_connect(GlobalFx_I2sPlaybackVolume, GlobalFx_I2s); -#endif - - /*Record*/ - audiofx_connect(GlobalFx_I2s, GlobalFx_I2sRecordVolume); - audiofx_connect(GlobalFx_I2sRecordVolume, GlobalFx_I2sRecordSplit); - - audiofx_connect(GlobalFx_I2sRecordSplit, GlobalFx_DefaultRecordMix); - audiofx_connect(GlobalFx_DefaultRecordMix, GlobalFx_DefaultRecordSplit); - - goto EXIT; - -EXIT_WITH_ERROR: - /* tegra_audiofx_destroy_topology(pFxList); */ - pFxList = 0; - -EXIT: - return pFxList; -} - -void tegra_audiofx_destroy_topology(GlobalFxList* pFxList) -{ - NvS32 i; - - if (pFxList) { - for (i = 0; i < GlobalFx_Num; i++) { - if (pFxList->hFx[i]) { - /* - TODO - NvddkAudioFxMixerDestroyObject(pFxList->hFx[i]); - Add code to destory - */ - } - } - - kfree(pFxList); - } -} - NvError tegra_audiofx_createfx(struct tegra_audio_data *audio_context) { NvAudioFxMixerHandle m_hMixer = -- cgit v1.2.3