]> git.kernelconcepts.de Git - karo-tx-linux.git/commitdiff
ALSA: pcm: localize snd_pcm_hw_params_choose()
authorTakashi Sakamoto <o-takashi@sakamocchi.jp>
Fri, 9 Jun 2017 12:46:48 +0000 (21:46 +0900)
committerTakashi Iwai <tiwai@suse.de>
Fri, 9 Jun 2017 14:27:21 +0000 (16:27 +0200)
As of v4.12, snd_pcm_hw_params_choose() is just called in a process
context of ioctl(2) with SNDRV_PCM_IOCTL_HW_PARAMS. The function locates
in a different file, which has no tracepoints.

This commit moves the function to a file with the tracepoints for later
commit.

Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
sound/core/pcm_lib.c
sound/core/pcm_local.h
sound/core/pcm_native.c

index 95b8ef15029f0f004531e6d19c8c72122608bc46..9dc7bbfe8853d2738389f2ab55d9cfebdfbfbf22 100644 (file)
@@ -1700,46 +1700,6 @@ int snd_pcm_hw_param_last(struct snd_pcm_substream *pcm,
 
 EXPORT_SYMBOL(snd_pcm_hw_param_last);
 
-/**
- * snd_pcm_hw_param_choose - choose a configuration defined by @params
- * @pcm: PCM instance
- * @params: the hw_params instance
- *
- * Choose one configuration from configuration space defined by @params.
- * The configuration chosen is that obtained fixing in this order:
- * first access, first format, first subformat, min channels,
- * min rate, min period time, max buffer size, min tick time
- *
- * Return: Zero if successful, or a negative error code on failure.
- */
-int snd_pcm_hw_params_choose(struct snd_pcm_substream *pcm,
-                            struct snd_pcm_hw_params *params)
-{
-       static const int vars[] = {
-               SNDRV_PCM_HW_PARAM_ACCESS,
-               SNDRV_PCM_HW_PARAM_FORMAT,
-               SNDRV_PCM_HW_PARAM_SUBFORMAT,
-               SNDRV_PCM_HW_PARAM_CHANNELS,
-               SNDRV_PCM_HW_PARAM_RATE,
-               SNDRV_PCM_HW_PARAM_PERIOD_TIME,
-               SNDRV_PCM_HW_PARAM_BUFFER_SIZE,
-               SNDRV_PCM_HW_PARAM_TICK_TIME,
-               -1
-       };
-       const int *v;
-       int err;
-
-       for (v = vars; *v != -1; v++) {
-               if (*v != SNDRV_PCM_HW_PARAM_BUFFER_SIZE)
-                       err = snd_pcm_hw_param_first(pcm, params, *v, NULL);
-               else
-                       err = snd_pcm_hw_param_last(pcm, params, *v, NULL);
-               if (snd_BUG_ON(err < 0))
-                       return err;
-       }
-       return 0;
-}
-
 static int snd_pcm_lib_ioctl_reset(struct snd_pcm_substream *substream,
                                   void *arg)
 {
index 34c66decaaf24386473fd8a198515fd68eda2c00..e4bf2af62b02991de452d0c19a341a621c840eda 100644 (file)
@@ -24,9 +24,6 @@ void snd_interval_mulkdiv(const struct snd_interval *a, unsigned int k,
 int snd_pcm_hw_constraints_init(struct snd_pcm_substream *substream);
 int snd_pcm_hw_constraints_complete(struct snd_pcm_substream *substream);
 
-int snd_pcm_hw_params_choose(struct snd_pcm_substream *substream,
-                            struct snd_pcm_hw_params *params);
-
 int snd_pcm_hw_constraint_mask(struct snd_pcm_runtime *runtime,
                               snd_pcm_hw_param_t var, u_int32_t mask);
 
index 3293db0172db5e66cad03ab0e68fab632a564ce2..8d9d181b1c030c2cfaa76115b32d13f873bae771 100644 (file)
@@ -571,6 +571,46 @@ static inline void snd_pcm_timer_notify(struct snd_pcm_substream *substream,
 #endif
 }
 
+/**
+ * snd_pcm_hw_param_choose - choose a configuration defined by @params
+ * @pcm: PCM instance
+ * @params: the hw_params instance
+ *
+ * Choose one configuration from configuration space defined by @params.
+ * The configuration chosen is that obtained fixing in this order:
+ * first access, first format, first subformat, min channels,
+ * min rate, min period time, max buffer size, min tick time
+ *
+ * Return: Zero if successful, or a negative error code on failure.
+ */
+static int snd_pcm_hw_params_choose(struct snd_pcm_substream *pcm,
+                                   struct snd_pcm_hw_params *params)
+{
+       static const int vars[] = {
+               SNDRV_PCM_HW_PARAM_ACCESS,
+               SNDRV_PCM_HW_PARAM_FORMAT,
+               SNDRV_PCM_HW_PARAM_SUBFORMAT,
+               SNDRV_PCM_HW_PARAM_CHANNELS,
+               SNDRV_PCM_HW_PARAM_RATE,
+               SNDRV_PCM_HW_PARAM_PERIOD_TIME,
+               SNDRV_PCM_HW_PARAM_BUFFER_SIZE,
+               SNDRV_PCM_HW_PARAM_TICK_TIME,
+               -1
+       };
+       const int *v;
+       int err;
+
+       for (v = vars; *v != -1; v++) {
+               if (*v != SNDRV_PCM_HW_PARAM_BUFFER_SIZE)
+                       err = snd_pcm_hw_param_first(pcm, params, *v, NULL);
+               else
+                       err = snd_pcm_hw_param_last(pcm, params, *v, NULL);
+               if (snd_BUG_ON(err < 0))
+                       return err;
+       }
+       return 0;
+}
+
 static int snd_pcm_hw_params(struct snd_pcm_substream *substream,
                             struct snd_pcm_hw_params *params)
 {