Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit dbd4beca authored by qctecmdr Service's avatar qctecmdr Service Committed by Gerrit - the friendly Code Review server
Browse files

Merge "ASoC: pcm: Add support for compat mode"

parents be8e3143 d735ab91
Loading
Loading
Loading
Loading
+24 −0
Original line number Diff line number Diff line
@@ -2569,6 +2569,28 @@ static int dpcm_fe_dai_prepare(struct snd_pcm_substream *substream)
	return ret;
}

static int soc_pcm_compat_ioctl(struct snd_pcm_substream *substream,
		     unsigned int cmd, void *arg)
{
	struct snd_soc_pcm_runtime *rtd = substream->private_data;
	struct snd_soc_component *component;
	struct snd_soc_rtdcom_list *rtdcom;

	for_each_rtdcom(rtd, rtdcom) {
		component = rtdcom->component;

		if (!component->driver->ops ||
			!component->driver->ops->compat_ioctl)
			continue;

		/* FIXME: use 1st ioctl */
		return component->driver->ops->compat_ioctl(
				substream, cmd, arg);
	}

	return snd_pcm_lib_ioctl(substream, cmd, arg);
}

static int soc_pcm_ioctl(struct snd_pcm_substream *substream,
		     unsigned int cmd, void *arg)
{
@@ -3193,6 +3215,7 @@ int soc_new_pcm(struct snd_soc_pcm_runtime *rtd, int num)
		rtd->ops.close		= dpcm_fe_dai_close;
		rtd->ops.pointer	= soc_pcm_pointer;
		rtd->ops.ioctl		= soc_pcm_ioctl;
		rtd->ops.compat_ioctl   = soc_pcm_compat_ioctl;
	} else {
		rtd->ops.open		= soc_pcm_open;
		rtd->ops.hw_params	= soc_pcm_hw_params;
@@ -3202,6 +3225,7 @@ int soc_new_pcm(struct snd_soc_pcm_runtime *rtd, int num)
		rtd->ops.close		= soc_pcm_close;
		rtd->ops.pointer	= soc_pcm_pointer;
		rtd->ops.ioctl		= soc_pcm_ioctl;
		rtd->ops.compat_ioctl   = soc_pcm_compat_ioctl;
	}

	for_each_rtdcom(rtd, rtdcom) {