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

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

Merge "asoc: Use dma_buf_get along with dma_buf_fd"

parents f57dd426 36a5eb40
Loading
Loading
Loading
Loading
+20 −5
Original line number Diff line number Diff line
@@ -445,6 +445,8 @@ static int msm_pcm_mmap_fd(struct snd_pcm_substream *substream,
	struct audio_port_data *apd;
	struct audio_buffer *ab;
	int dir = -1;
	struct dma_buf *buf = NULL;
	int rc = 0;

	if (!substream->runtime) {
		pr_err("%s substream runtime not found\n", __func__);
@@ -471,12 +473,25 @@ static int msm_pcm_mmap_fd(struct snd_pcm_substream *substream,
	 * used to call dma_buf_fd internally.
	 */
	mmap_fd->fd = dma_buf_fd(ab->dma_buf, O_CLOEXEC);
	if (mmap_fd->fd >= 0) {
	if (mmap_fd->fd < 0) {
		pr_err("%s: dma_buf_fd failed, fd:%d\n",
			__func__, mmap_fd->fd);
		rc = -EFAULT;
		goto buf_fd_fail;
	}
	mmap_fd->dir = dir;
	mmap_fd->actual_size = ab->actual_size;
	mmap_fd->size = ab->size;

	buf = dma_buf_get(mmap_fd->fd);
	if (IS_ERR_OR_NULL(buf)) {
		pr_err("%s: dma_buf_get failed, fd:%d\n",
			__func__, mmap_fd->fd);
		rc = -EINVAL;
	}
	return mmap_fd->fd < 0 ? -EFAULT : 0;

buf_fd_fail:
        return rc;
}

static int msm_pcm_ioctl(struct snd_pcm_substream *substream,