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

Commit abe8606b authored by Meng Wang's avatar Meng Wang
Browse files

Revert "ALSA: PCM: volume API implementation"



This reverts commit a1682a64.
This change has been moved out of ASoC framework.

Change-Id: I9903cace676569d3d045760a77a864687e402bb9
Signed-off-by: default avatarMeng Wang <mengw@codeaurora.org>
parent 8e47f98c
Loading
Loading
Loading
Loading
+0 −30
Original line number Original line Diff line number Diff line
@@ -511,9 +511,6 @@ struct snd_pcm_str {
#endif
#endif
#endif
#endif
	struct snd_kcontrol *chmap_kctl; /* channel-mapping controls */
	struct snd_kcontrol *chmap_kctl; /* channel-mapping controls */
#ifdef CONFIG_AUDIO_QGKI
	struct snd_kcontrol *vol_kctl; /* volume controls */
#endif
	struct device dev;
	struct device dev;
};
};


@@ -1430,33 +1427,6 @@ static inline u64 pcm_format_to_bits(snd_pcm_format_t pcm_format)
	return 1ULL << (__force int) pcm_format;
	return 1ULL << (__force int) pcm_format;
}
}


#ifdef CONFIG_AUDIO_QGKI
#define SND_PCM_ADD_VOLUME_CTL 1
/*
 * PCM Volume control API
 */
/* array element of volume */
struct snd_pcm_volume_elem {
	int volume;
};

/* pp information; retrieved via snd_kcontrol_chip() */
struct snd_pcm_volume {
	struct snd_pcm *pcm;	/* assigned PCM instance */
	int stream;		/* PLAYBACK or CAPTURE */
	struct snd_kcontrol *kctl;
	const struct snd_pcm_volume_elem *volume;
	int max_length;
	void *private_data;	/* optional: private data pointer */
};

int snd_pcm_add_volume_ctls(struct snd_pcm *pcm, int stream,
			   const struct snd_pcm_volume_elem *volume,
			   int max_length,
			   unsigned long private_value,
			   struct snd_pcm_volume **info_ret);
#endif

/* printk helpers */
/* printk helpers */
#define pcm_err(pcm, fmt, args...) \
#define pcm_err(pcm, fmt, args...) \
	dev_err((pcm)->card->dev, fmt, ##args)
	dev_err((pcm)->card->dev, fmt, ##args)
+0 −6
Original line number Original line Diff line number Diff line
@@ -816,12 +816,6 @@ static void free_chmap(struct snd_pcm_str *pstr)
		snd_ctl_remove(pstr->pcm->card, pstr->chmap_kctl);
		snd_ctl_remove(pstr->pcm->card, pstr->chmap_kctl);
		pstr->chmap_kctl = NULL;
		pstr->chmap_kctl = NULL;
	}
	}
#ifdef CONFIG_AUDIO_QGKI
	if (pstr->vol_kctl) {
		snd_ctl_remove(pstr->pcm->card, pstr->vol_kctl);
		pstr->vol_kctl = NULL;
	}
#endif
}
}


static void snd_pcm_free_stream(struct snd_pcm_str * pstr)
static void snd_pcm_free_stream(struct snd_pcm_str * pstr)
+0 −97
Original line number Original line Diff line number Diff line
@@ -30,10 +30,6 @@
#define trace_applptr(substream, prev, curr)
#define trace_applptr(substream, prev, curr)
#endif
#endif


#ifdef CONFIG_AUDIO_QGKI
#define STRING_LENGTH_OF_INT 12
#endif

static int fill_silence_frames(struct snd_pcm_substream *substream,
static int fill_silence_frames(struct snd_pcm_substream *substream,
			       snd_pcm_uframes_t off, snd_pcm_uframes_t frames);
			       snd_pcm_uframes_t off, snd_pcm_uframes_t frames);


@@ -2411,26 +2407,6 @@ static void pcm_chmap_ctl_private_free(struct snd_kcontrol *kcontrol)
	kfree(info);
	kfree(info);
}
}


#ifdef CONFIG_AUDIO_QGKI
static int pcm_volume_ctl_info(struct snd_kcontrol *kcontrol,
				struct snd_ctl_elem_info *uinfo)
{
	uinfo->type = SNDRV_CTL_ELEM_TYPE_INTEGER;
	uinfo->count = 1;
	uinfo->value.integer.min = 0;
	uinfo->value.integer.max = 0x2000;
	return 0;
}

static void pcm_volume_ctl_private_free(struct snd_kcontrol *kcontrol)
{
	struct snd_pcm_volume *info = snd_kcontrol_chip(kcontrol);

	info->pcm->streams[info->stream].vol_kctl = NULL;
	kfree(info);
}
#endif

/**
/**
 * snd_pcm_add_chmap_ctls - create channel-mapping control elements
 * snd_pcm_add_chmap_ctls - create channel-mapping control elements
 * @pcm: the assigned PCM instance
 * @pcm: the assigned PCM instance
@@ -2492,76 +2468,3 @@ int snd_pcm_add_chmap_ctls(struct snd_pcm *pcm, int stream,
	return 0;
	return 0;
}
}
EXPORT_SYMBOL_GPL(snd_pcm_add_chmap_ctls);
EXPORT_SYMBOL_GPL(snd_pcm_add_chmap_ctls);

#ifdef CONFIG_AUDIO_QGKI
/**
 * snd_pcm_add_volume_ctls - create volume control elements
 * @pcm: the assigned PCM instance
 * @stream: stream direction
 * @max_length: the max length of the volume parameter of stream
 * @private_value: the value passed to each kcontrol's private_value field
 * @info_ret: store struct snd_pcm_volume instance if non-NULL
 *
 * Create volume control elements assigned to the given PCM stream(s).
 * Returns zero if succeed, or a negative error value.
 */
int snd_pcm_add_volume_ctls(struct snd_pcm *pcm, int stream,
			   const struct snd_pcm_volume_elem *volume,
			   int max_length,
			   unsigned long private_value,
			   struct snd_pcm_volume **info_ret)
{
	struct snd_pcm_volume *info;
	struct snd_kcontrol_new knew = {
		.iface = SNDRV_CTL_ELEM_IFACE_MIXER,
		.access = SNDRV_CTL_ELEM_ACCESS_TLV_READ |
			SNDRV_CTL_ELEM_ACCESS_READWRITE,
		.info = pcm_volume_ctl_info,
	};
	int err;
	int size;

	info = kzalloc(sizeof(*info), GFP_KERNEL);
	if (!info)
		return -ENOMEM;
	info->pcm = pcm;
	info->stream = stream;
	info->volume = volume;
	info->max_length = max_length;
	size = sizeof("Playback ") + sizeof(" Volume") +
		STRING_LENGTH_OF_INT*sizeof(char) + 1;
	knew.name = kzalloc(size, GFP_KERNEL);
	if (!knew.name) {
		kfree(info);
		return -ENOMEM;
	}
	if (stream == SNDRV_PCM_STREAM_PLAYBACK)
		snprintf((char *)knew.name, size, "%s %d %s",
			"Playback", pcm->device, "Volume");
	else
		snprintf((char *)knew.name, size, "%s %d %s",
			"Capture", pcm->device, "Volume");
	knew.device = pcm->device;
	knew.count = pcm->streams[stream].substream_count;
	knew.private_value = private_value;
	info->kctl = snd_ctl_new1(&knew, info);
	if (!info->kctl) {
		kfree(info);
		kfree(knew.name);
		return -ENOMEM;
	}
	info->kctl->private_free = pcm_volume_ctl_private_free;
	err = snd_ctl_add(pcm->card, info->kctl);
	if (err < 0) {
		kfree(info);
		kfree(knew.name);
		return -ENOMEM;
	}
	pcm->streams[stream].vol_kctl = info->kctl;
	if (info_ret)
		*info_ret = info;
	kfree(knew.name);
	return 0;
}
EXPORT_SYMBOL(snd_pcm_add_volume_ctls);
#endif