aboutsummaryrefslogtreecommitdiffstats
path: root/sound/soc/soc-dapm.c
diff options
context:
space:
mode:
authorMark Brown <broonie@opensource.wolfsonmicro.com>2008-05-13 08:52:19 -0400
committerJaroslav Kysela <perex@perex.cz>2008-05-19 07:19:18 -0400
commit105f1c28442301237d20b05a3d52d9987614016f (patch)
treed91e8de8092eeb5de8db676ffa8dd7cbb6f6d338 /sound/soc/soc-dapm.c
parent4ba1327ab8ce179c40862f3dedb4ebaaa491d737 (diff)
[ALSA] soc - DAPM - Bulk route registration
ASoC codecs and machine drivers that use DAPM routes all cut'n'paste a loop iterating over a null terminated array of routes. Factor out this into a bulk registration function, improving the error reporting for most users, and deprecate the old API to help out of tree users pick up the changes. Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com> Cc: Graeme Gregory <graeme@openmoko.org> Cc: Frank Mandarino <fmandarino@endrelia.com> Cc: Jarkko Nikula <jarkko.nikula@nokia.com> Cc: Richard Purdie <rpurdie@rpsys.net> Signed-off-by: Takashi Iwai <tiwai@suse.de> Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Diffstat (limited to 'sound/soc/soc-dapm.c')
-rw-r--r--sound/soc/soc-dapm.c72
1 files changed, 57 insertions, 15 deletions
diff --git a/sound/soc/soc-dapm.c b/sound/soc/soc-dapm.c
index 811d65271012..1ef6d94b8357 100644
--- a/sound/soc/soc-dapm.c
+++ b/sound/soc/soc-dapm.c
@@ -841,21 +841,8 @@ int snd_soc_dapm_sync_endpoints(struct snd_soc_codec *codec)
841} 841}
842EXPORT_SYMBOL_GPL(snd_soc_dapm_sync_endpoints); 842EXPORT_SYMBOL_GPL(snd_soc_dapm_sync_endpoints);
843 843
844/** 844static int snd_soc_dapm_add_route(struct snd_soc_codec *codec,
845 * snd_soc_dapm_connect_input - connect dapm widgets 845 const char *sink, const char *control, const char *source)
846 * @codec: audio codec
847 * @sink: name of target widget
848 * @control: mixer control name
849 * @source: name of source name
850 *
851 * Connects 2 dapm widgets together via a named audio path. The sink is
852 * the widget receiving the audio signal, whilst the source is the sender
853 * of the audio signal.
854 *
855 * Returns 0 for success else error.
856 */
857int snd_soc_dapm_connect_input(struct snd_soc_codec *codec, const char *sink,
858 const char * control, const char *source)
859{ 846{
860 struct snd_soc_dapm_path *path; 847 struct snd_soc_dapm_path *path;
861 struct snd_soc_dapm_widget *wsource = NULL, *wsink = NULL, *w; 848 struct snd_soc_dapm_widget *wsource = NULL, *wsink = NULL, *w;
@@ -957,9 +944,64 @@ err:
957 kfree(path); 944 kfree(path);
958 return ret; 945 return ret;
959} 946}
947
948/**
949 * snd_soc_dapm_connect_input - connect dapm widgets
950 * @codec: audio codec
951 * @sink: name of target widget
952 * @control: mixer control name
953 * @source: name of source name
954 *
955 * Connects 2 dapm widgets together via a named audio path. The sink is
956 * the widget receiving the audio signal, whilst the source is the sender
957 * of the audio signal.
958 *
959 * This function has been deprecated in favour of snd_soc_dapm_add_routes().
960 *
961 * Returns 0 for success else error.
962 */
963int snd_soc_dapm_connect_input(struct snd_soc_codec *codec, const char *sink,
964 const char *control, const char *source)
965{
966 return snd_soc_dapm_add_route(codec, sink, control, source);
967}
960EXPORT_SYMBOL_GPL(snd_soc_dapm_connect_input); 968EXPORT_SYMBOL_GPL(snd_soc_dapm_connect_input);
961 969
962/** 970/**
971 * snd_soc_dapm_add_routes - Add routes between DAPM widgets
972 * @codec: codec
973 * @route: audio routes
974 * @num: number of routes
975 *
976 * Connects 2 dapm widgets together via a named audio path. The sink is
977 * the widget receiving the audio signal, whilst the source is the sender
978 * of the audio signal.
979 *
980 * Returns 0 for success else error. On error all resources can be freed
981 * with a call to snd_soc_card_free().
982 */
983int snd_soc_dapm_add_routes(struct snd_soc_codec *codec,
984 const struct snd_soc_dapm_route *route, int num)
985{
986 int i, ret;
987
988 for (i = 0; i < num; i++) {
989 ret = snd_soc_dapm_add_route(codec, route->sink,
990 route->control, route->source);
991 if (ret < 0) {
992 printk(KERN_ERR "Failed to add route %s->%s\n",
993 route->source,
994 route->sink);
995 return ret;
996 }
997 route++;
998 }
999
1000 return 0;
1001}
1002EXPORT_SYMBOL_GPL(snd_soc_dapm_add_routes);
1003
1004/**
963 * snd_soc_dapm_new_widgets - add new dapm widgets 1005 * snd_soc_dapm_new_widgets - add new dapm widgets
964 * @codec: audio codec 1006 * @codec: audio codec
965 * 1007 *