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

Commit ba29ca64 authored by Linux Build Service Account's avatar Linux Build Service Account Committed by Gerrit - the friendly Code Review server
Browse files

Merge "misc: qcom: qdsp6v2: SSR recovery support for NT mode session"

parents 3b0e2e68 68192ec2
Loading
Loading
Loading
Loading
+9 −7
Original line number Diff line number Diff line
@@ -1010,7 +1010,7 @@ static int audio_aio_ion_remove(struct q6audio_aio *audio,
	return rc;
}

static void audio_aio_async_write(struct q6audio_aio *audio,
static int audio_aio_async_write(struct q6audio_aio *audio,
				struct audio_aio_buffer_node *buf_node)
{
	int rc;
@@ -1020,7 +1020,7 @@ static void audio_aio_async_write(struct q6audio_aio *audio,
	if (!audio || !buf_node) {
		pr_err("%s NULL pointer audio=[0x%p], buf_node=[0x%p]\n",
			__func__, audio, buf_node);
		return;
		return -EINVAL;
	}
	pr_debug("%s[%p]: Send write buff %p phy %pa len %d meta_enable = %d\n",
		__func__, audio, buf_node, &buf_node->paddr,
@@ -1056,6 +1056,7 @@ static void audio_aio_async_write(struct q6audio_aio *audio,
	rc = q6asm_async_write(ac, &param);
	if (rc < 0)
		pr_err("%s[%p]:failed\n", __func__, audio);
	return rc;
}

void audio_aio_post_event(struct q6audio_aio *audio, int type,
@@ -1088,7 +1089,7 @@ void audio_aio_post_event(struct q6audio_aio *audio, int type,
	wake_up(&audio->event_wait);
}

static void audio_aio_async_read(struct q6audio_aio *audio,
static int audio_aio_async_read(struct q6audio_aio *audio,
				struct audio_aio_buffer_node *buf_node)
{
	struct audio_client *ac;
@@ -1110,13 +1111,14 @@ static void audio_aio_async_read(struct q6audio_aio *audio,
	rc = q6asm_async_read(ac, &param);
	if (rc < 0)
		pr_err("%s[%p]:failed\n", __func__, audio);
	return rc;
}

static int audio_aio_buf_add_shared(struct q6audio_aio *audio, u32 dir,
				struct audio_aio_buffer_node *buf_node)
{
	unsigned long flags;

	int ret = 0;
	pr_debug("%s[%p]:node %p dir %x buf_addr %p buf_len %d data_len %d\n",
		 __func__, audio, buf_node, dir, buf_node->buf.buf_addr,
		buf_node->buf.buf_len, buf_node->buf.data_len);
@@ -1135,7 +1137,7 @@ static int audio_aio_buf_add_shared(struct q6audio_aio *audio, u32 dir,
		/* Not a EOS buffer */
		if (!(buf_node->meta_info.meta_in.nflags & AUDIO_DEC_EOS_SET)) {
			spin_lock_irqsave(&audio->dsp_lock, flags);
			audio_aio_async_write(audio, buf_node);
			ret = audio_aio_async_write(audio, buf_node);
			/* EOS buffer handled in driver */
			list_add_tail(&buf_node->list, &audio->out_queue);
			spin_unlock_irqrestore(&audio->dsp_lock, flags);
@@ -1175,7 +1177,7 @@ static int audio_aio_buf_add_shared(struct q6audio_aio *audio, u32 dir,
		/* No EOS reached */
		if (!audio->eos_rsp) {
			spin_lock_irqsave(&audio->dsp_lock, flags);
			audio_aio_async_read(audio, buf_node);
			ret = audio_aio_async_read(audio, buf_node);
			/* EOS buffer handled in driver */
			list_add_tail(&buf_node->list, &audio->in_queue);
			spin_unlock_irqrestore(&audio->dsp_lock, flags);
@@ -1195,7 +1197,7 @@ static int audio_aio_buf_add_shared(struct q6audio_aio *audio, u32 dir,
			kfree(buf_node);
		}
	}
	return 0;
	return ret;
}
#ifdef CONFIG_COMPAT
static int audio_aio_buf_add_compat(struct q6audio_aio *audio, u32 dir,
+2 −1
Original line number Diff line number Diff line
/* Copyright (c) 2010-2014, The Linux Foundation. All rights reserved.
/* Copyright (c) 2010-2015, The Linux Foundation. All rights reserved.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 2 and
@@ -368,6 +368,7 @@ static int evrc_in_open(struct inode *inode, struct file *file)
	}

	audio->opened = 1;
	audio->reset_event = false;
	atomic_set(&audio->in_count, PCM_BUF_COUNT);
	atomic_set(&audio->out_count, 0x00);
	audio->enc_compat_ioctl = evrc_in_compat_ioctl;
+2 −1
Original line number Diff line number Diff line
/* Copyright (c) 2010-2014, The Linux Foundation. All rights reserved.
/* Copyright (c) 2010-2015, The Linux Foundation. All rights reserved.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 2 and
@@ -368,6 +368,7 @@ static int qcelp_in_open(struct inode *inode, struct file *file)
	}

	audio->opened = 1;
	audio->reset_event = false;
	atomic_set(&audio->in_count, PCM_BUF_COUNT);
	atomic_set(&audio->out_count, 0x00);
	audio->enc_compat_ioctl = qcelp_in_compat_ioctl;