]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
Merge remote-tracking branches 'asoc/topic/mc13783', 'asoc/topic/multicodec', 'asoc...
authorMark Brown <broonie@linaro.org>
Tue, 27 May 2014 19:55:36 +0000 (20:55 +0100)
committerMark Brown <broonie@linaro.org>
Tue, 27 May 2014 19:55:36 +0000 (20:55 +0100)
1  2  3  4  5  6  7 
arch/arm/mach-shmobile/board-lager.c
arch/arm/mach-shmobile/clock-r8a7778.c
sound/soc/codecs/mc13783.c
sound/soc/omap/ams-delta.c
sound/soc/pxa/pxa-ssp.c
sound/soc/sh/rcar/core.c
sound/soc/sh/rcar/src.c
sound/soc/sh/rcar/ssi.c
sound/soc/soc-core.c
sound/soc/soc-pcm.c

Simple merge
Simple merge
index 669f84d9b76e7a02b4cf9e8308a4f822d5e951cb,56a5219c0a00587fc412caf76927adf4d11799a5,56a5219c0a00587fc412caf76927adf4d11799a5,56a5219c0a00587fc412caf76927adf4d11799a5,b0f8dbc1f635a7d5d7c93407b098c29ba969abcd,56a5219c0a00587fc412caf76927adf4d11799a5,56a5219c0a00587fc412caf76927adf4d11799a5..bb243c663e6bbe788dcedde60fa16c4eb1bca76a
@@@@@@@@ -518,8 -520,29 -520,29 -520,29 -518,10 -520,29 -520,29 +518,8 @@@@@@@@ static int ams_delta_cx20442_init(struc
                return 0;
        }
       
 --- -- /* Add board specific DAPM widgets and routes */
 --- -- ret = snd_soc_dapm_new_controls(dapm, ams_delta_dapm_widgets,
 --- --                                 ARRAY_SIZE(ams_delta_dapm_widgets));
 --- -- if (ret) {
 --- --         dev_warn(card->dev,
 --- --                         "Failed to register DAPM controls, "
 --- --                         "will continue without any.\n");
 --- --         return 0;
 --- -- }
 --- --
 --- -- ret = snd_soc_dapm_add_routes(dapm, ams_delta_audio_map,
 --- --                                 ARRAY_SIZE(ams_delta_audio_map));
 --- -- if (ret) {
 --- --         dev_warn(card->dev,
 --- --                         "Failed to set up DAPM routes, "
 --- --                         "will continue with codec default map.\n");
 --- --         return 0;
 --- -- }
 --- --
        /* Set up initial pin constellation */
        snd_soc_dapm_disable_pin(dapm, "Mouthpiece");
 ------ snd_soc_dapm_enable_pin(dapm, "Earpiece");
 ------ snd_soc_dapm_enable_pin(dapm, "Microphone");
        snd_soc_dapm_disable_pin(dapm, "Speaker");
        snd_soc_dapm_disable_pin(dapm, "AGCIN");
        snd_soc_dapm_disable_pin(dapm, "AGCOUT");
Simple merge
Simple merge
Simple merge
Simple merge
index a53698266d57e0f7394c8dd8b7d2eb92ee3cb504,051c006281f5c2c003583f7104c9ec02dc886dfc,54a1d91f1d9661aab8c9758380825e6d2db02329,051c006281f5c2c003583f7104c9ec02dc886dfc,448a60748523220e86a69027cde3e9dda3ab541b,051c006281f5c2c003583f7104c9ec02dc886dfc,051c006281f5c2c003583f7104c9ec02dc886dfc..6e460529fc89818ec25adaeec47285d419fa35ea
@@@@@@@@ -1003,23 -995,6 -1010,24 -995,6 -995,6 -995,6 -995,6 +1003,23 @@@@@@@@ static void soc_remove_codec(struct snd
        module_put(codec->dev->driver->owner);
       }
       
  -             list_del(&codec_dai->card_list);
 + ++++static void soc_remove_codec_dai(struct snd_soc_dai *codec_dai, int order)
 + ++++{
 + ++++ int err;
 + ++++
 + ++++ if (codec_dai && codec_dai->probed &&
 + ++++                 codec_dai->driver->remove_order == order) {
 + ++++         if (codec_dai->driver->remove) {
 + ++++                 err = codec_dai->driver->remove(codec_dai);
 + ++++                 if (err < 0)
 + ++++                         dev_err(codec_dai->dev,
 + ++++                                 "ASoC: failed to remove %s: %d\n",
 + ++++                                 codec_dai->name, err);
 + ++++         }
 + ++++         codec_dai->probed = 0;
 + ++++ }
 + ++++}
 + ++++
       static void soc_remove_link_dais(struct snd_soc_card *card, int num, int order)
       {
        struct snd_soc_pcm_runtime *rtd = &card->rtd[num];
@@@@@@@@ -1386,66 -1366,6 -1426,67 -1366,6 -1368,6 -1366,6 -1366,6 +1424,66 @@@@@@@@ static int soc_probe_link_components(st
        return 0;
       }
       
  -             list_add(&codec_dai->card_list, &card->dai_dev_list);
 + ++++static int soc_probe_codec_dai(struct snd_soc_card *card,
 + ++++                        struct snd_soc_dai *codec_dai,
 + ++++                        int order)
 + ++++{
 + ++++ int ret;
 + ++++
 + ++++ if (!codec_dai->probed && codec_dai->driver->probe_order == order) {
 + ++++         if (codec_dai->driver->probe) {
 + ++++                 ret = codec_dai->driver->probe(codec_dai);
 + ++++                 if (ret < 0) {
 + ++++                         dev_err(codec_dai->dev,
 + ++++                                 "ASoC: failed to probe CODEC DAI %s: %d\n",
 + ++++                                 codec_dai->name, ret);
 + ++++                         return ret;
 + ++++                 }
 + ++++         }
 + ++++
 + ++++         /* mark codec_dai as probed and add to card dai list */
 + ++++         codec_dai->probed = 1;
 + ++++ }
 + ++++
 + ++++ return 0;
 + ++++}
 + ++++
 + ++++static int soc_link_dai_widgets(struct snd_soc_card *card,
 + ++++                         struct snd_soc_dai_link *dai_link,
 + ++++                         struct snd_soc_dai *cpu_dai,
 + ++++                         struct snd_soc_dai *codec_dai)
 + ++++{
 + ++++ struct snd_soc_dapm_widget *play_w, *capture_w;
 + ++++ int ret;
 + ++++
 + ++++ /* link the DAI widgets */
 + ++++ play_w = codec_dai->playback_widget;
 + ++++ capture_w = cpu_dai->capture_widget;
 + ++++ if (play_w && capture_w) {
 + ++++         ret = snd_soc_dapm_new_pcm(card, dai_link->params,
 + ++++                                    capture_w, play_w);
 + ++++         if (ret != 0) {
 + ++++                 dev_err(card->dev, "ASoC: Can't link %s to %s: %d\n",
 + ++++                         play_w->name, capture_w->name, ret);
 + ++++                 return ret;
 + ++++         }
 + ++++ }
 + ++++
 + ++++ play_w = cpu_dai->playback_widget;
 + ++++ capture_w = codec_dai->capture_widget;
 + ++++ if (play_w && capture_w) {
 + ++++         ret = snd_soc_dapm_new_pcm(card, dai_link->params,
 + ++++                                    capture_w, play_w);
 + ++++         if (ret != 0) {
 + ++++                 dev_err(card->dev, "ASoC: Can't link %s to %s: %d\n",
 + ++++                         play_w->name, capture_w->name, ret);
 + ++++                 return ret;
 + ++++         }
 + ++++ }
 + ++++
 + ++++ return 0;
 + ++++}
 + ++++
       static int soc_probe_link_dais(struct snd_soc_card *card, int num, int order)
       {
        struct snd_soc_dai_link *dai_link = &card->dai_link[num];
@@@@@@@@ -1591,44 -1539,21 -1634,26 -1539,21 -1541,38 -1539,21 -1539,21 +1629,44 @@@@@@@@ static void soc_unregister_ac97_codec(s
                codec->ac97_registered = 0;
        }
       }
 + ++++
 + ++++static void soc_unregister_ac97_dai_link(struct snd_soc_pcm_runtime *rtd)
 + ++++{
 + ++++ soc_unregister_ac97_codec(rtd->codec);
 + ++++}
       #endif
       
 --- --static int soc_check_aux_dev(struct snd_soc_card *card, int num)
    -  struct snd_soc_codec *soc_find_matching_codec(struct snd_soc_card *card, int num)
 ++++++static struct snd_soc_codec *soc_find_matching_codec(struct snd_soc_card *card,
 ++++++ int num)
       {
        struct snd_soc_aux_dev *aux_dev = &card->aux_dev[num];
        struct snd_soc_codec *codec;
       
 --- -- /* find CODEC from registered CODECs*/
 +++ ++ /* find CODEC from registered CODECs */
        list_for_each_entry(codec, &codec_list, list) {
 --- --         if (!strcmp(codec->name, aux_dev->codec_name))
 --- --                 return 0;
 +++ ++         if (aux_dev->codec_of_node &&
 +++ ++            (codec->dev->of_node != aux_dev->codec_of_node))
 +++ ++                 continue;
 +++ ++         if (aux_dev->codec_name && strcmp(codec->name, aux_dev->codec_name))
 +++ ++                 continue;
 +++ ++         return codec;
        }
       
 --- -- dev_err(card->dev, "ASoC: %s not registered\n", aux_dev->codec_name);
 +++ ++ return NULL;
 +++ ++}
  +    
 +++ ++static int soc_check_aux_dev(struct snd_soc_card *card, int num)
 +++ ++{
 +++ ++ struct snd_soc_aux_dev *aux_dev = &card->aux_dev[num];
 +++ ++ const char *codecname = aux_dev->codec_name;
 +++ ++ struct snd_soc_codec *codec = soc_find_matching_codec(card, num);
 + + ++
 +++ ++ if (codec)
 +++ ++         return 0;
 +++ ++ if (aux_dev->codec_of_node)
 +++ ++         codecname = of_node_full_name(aux_dev->codec_of_node);
 +++ ++
 +++ ++ dev_err(card->dev, "ASoC: %s not registered\n", codecname);
        return -EPROBE_DEFER;
       }
       
@@@@@@@@ -2546,22 -2667,14 -2767,14 -2667,14 -2683,14 -2667,14 -2667,14 +2584,22 @@@@@@@@ static int snd_soc_read_signed(struct s
        int ret;
        unsigned int val;
       
 ------ val = (snd_soc_read(codec, reg) >> shift) & mask;
 ++++++ ret = snd_soc_component_read(component, reg, &val);
 ++++++ if (ret < 0)
 ++++++         return ret;
  + +  
 - - -- if (!sign_bit)
 - - --         return val;
 ++++++ val = (val >> shift) & mask;
 + + ++
  - -   if (!sign_bit)
  - -           return val;
 ++++++ if (!sign_bit) {
 ++++++         *signed_val = val;
 ++++++         return 0;
 ++++++ }
       
        /* non-negative number */
 ------ if (!(val & BIT(sign_bit)))
 ------         return val;
 ++++++ if (!(val & BIT(sign_bit))) {
 ++++++         *signed_val = val;
 ++++++         return 0;
 ++++++ }
       
        ret = val;
       
index 903d737c352ff2a71a2df204b93068ca7af5658c,2cedf09f6d9613c7b34bb22888806fde598052c6,88230ea330d8a4117b2bc9afe275972363711eb6,2cedf09f6d9613c7b34bb22888806fde598052c6,2cedf09f6d9613c7b34bb22888806fde598052c6,2cedf09f6d9613c7b34bb22888806fde598052c6,2cedf09f6d9613c7b34bb22888806fde598052c6..54d18f22a33e4716b05292f252b53e553d85f8ba
@@@@@@@@ -1018,21 -1012,21 -1012,12 -1012,21 -1012,21 -1012,21 -1012,21 +1018,12 @@@@@@@@ static struct snd_soc_pcm_runtime *dpcm
       }
       
       static inline struct snd_soc_dapm_widget *
-- ---- rtd_get_cpu_widget(struct snd_soc_pcm_runtime *rtd, int stream)
 - ----{
 - ---- if (stream == SNDRV_PCM_STREAM_PLAYBACK)
 - ----         return rtd->cpu_dai->playback_widget;
 - ---- else
 - ----         return rtd->cpu_dai->capture_widget;
 - ----}
 - ----
 - ----static inline struct snd_soc_dapm_widget *
 - ---- rtd_get_codec_widget(struct snd_soc_pcm_runtime *rtd, int stream)
++ ++++ dai_get_widget(struct snd_soc_dai *dai, int stream)
       {
        if (stream == SNDRV_PCM_STREAM_PLAYBACK)
-               return rtd->cpu_dai->playback_widget;
 - ----         return rtd->codec_dai->playback_widget;
++ ++++         return dai->playback_widget;
        else
-               return rtd->cpu_dai->capture_widget;
-      }
-      
-      static inline struct snd_soc_dapm_widget *
-       rtd_get_codec_widget(struct snd_soc_pcm_runtime *rtd, int stream)
-      {
-       if (stream == SNDRV_PCM_STREAM_PLAYBACK)
-               return rtd->codec_dai->playback_widget;
-       else
-- ----         return rtd->codec_dai->capture_widget;
++ ++++         return dai->capture_widget;
       }
       
       static int widget_in_list(struct snd_soc_dapm_widget_list *list,