Exemple #1
0
static int qsd_pcm_playback_copy(struct snd_pcm_substream *substream, int a,
				 snd_pcm_uframes_t hwoff, void __user *buf,
				 snd_pcm_uframes_t frames)
{
	int fbytes = 0;
	size_t xfer;
	int rc;

	struct snd_pcm_runtime *runtime = substream->runtime;
	struct qsd_audio *prtd = runtime->private_data;

	fbytes = frames_to_bytes(runtime, frames);
	prtd->cbs.buffer = (void *)buf;
	prtd->cbs.phys_addr = 0;
	prtd->cbs.max_size = fbytes;
	prtd->cbs.actual_size = fbytes;

	prtd->pcm_buf_pos += fbytes;
	mutex_lock(&the_locks.lock);
	xfer = cad_write(prtd->cad_w_handle, &prtd->cbs);
	mutex_unlock(&the_locks.lock);

	mutex_lock(&the_locks.mixer_lock);
	if (qsd_glb_ctl.update) {
		rc = qsd_audio_volume_update(prtd);
		qsd_glb_ctl.update = 0;
	}
	mutex_unlock(&the_locks.mixer_lock);

	return 0;
}
Exemple #2
0
static ssize_t msm8k_mp3_write(struct file *f, const char __user *buf,
		size_t cnt, loff_t *pos)
{
	struct cad_buf_struct_type cbs;
	struct mp3 *mp3 = f->private_data;

	D("%s\n", __func__);

	memset(&cbs, 0, sizeof(struct cad_buf_struct_type));
	cbs.buffer = (void *)buf;
	cbs.phys_addr = 0;
	cbs.max_size = cnt;

	cad_write(mp3->cad_w_handle, &cbs);

	return cnt;
}
static ssize_t msm8k_aac_write(struct file *f, const char __user *buf,
		size_t cnt, loff_t *pos)
{
	struct cad_buf_struct_type cbs;
	struct aac *aac = f->private_data;

	D("%s\n", __func__);

	memset(&cbs, 0, sizeof(struct cad_buf_struct_type));
	cbs.buffer = (void *)buf;
	cbs.phys_addr = 0;
	cbs.max_size = cnt;

	mutex_lock(&aac->write_lock);
	cad_write(aac->cad_w_handle, &cbs);
	mutex_unlock(&aac->write_lock);

	return cnt;
}