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

Commit 9487de23 authored by Alan Kwong's avatar Alan Kwong Committed by Narendra Muppalla
Browse files

msm: sde: Add mdss 3.0.0 support to sde v4l2 rotator driver



Add mdss 3.0.0 regdma support to sde v4l2 rotator driver.
Regdma enables hardware queueing of multiple concurrent rotation
requests. This reduces software overhead between submission
and improves overall performance.

CRs-Fixed: 972831

Change-Id: I5bb308e552d7ed6edd314a4574181e1ee3498960
Signed-off-by: default avatarAlan Kwong <akwong@codeaurora.org>
parent 3428f67a
Loading
Loading
Loading
Loading
+5 −1
Original line number Diff line number Diff line
@@ -15,9 +15,13 @@ obj-y += \
		sde_rotator_r1_ctl.o \
		sde_rotator_r1.o

obj-y += \
		sde_rotator_r3.o

obj-$(CONFIG_SYNC) += \
		sde_rotator_sync.o

obj-$(CONFIG_DEBUG_FS) += \
		sde_rotator_debug.o \
		sde_rotator_r1_debug.o
 No newline at end of file
		sde_rotator_r1_debug.o \
		sde_rotator_r3_debug.o
+3 −0
Original line number Diff line number Diff line
@@ -33,6 +33,7 @@
#include "sde_rotator_io_util.h"
#include "sde_rotator_smmu.h"
#include "sde_rotator_r1.h"
#include "sde_rotator_r3.h"
#include "sde_rotator_trace.h"

/* waiting for hw time out, 3 vsync for 30fps*/
@@ -2278,6 +2279,8 @@ int sde_rotator_core_init(struct sde_rot_mgr **pmgr,

	if ((mdata->mdss_version & 0xFFFF0000) == 0x10070000) {
		mgr->ops_hw_init = sde_rotator_r1_init;
	} else if ((mdata->mdss_version & 0xFFFF0000) == 0x30000000) {
		mgr->ops_hw_init = sde_rotator_r3_init;
	} else {
		SDEROT_ERR("unsupported sde version %x\n",
				mdata->mdss_version);
+1873 −0

File added.

Preview size limit exceeded, changes collapsed.

+20 −0
Original line number Diff line number Diff line
/* Copyright (c) 2015-2016, 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
 * only version 2 as published by the Free Software Foundation.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 */

#ifndef __SDE_ROTATOR_R3_H__
#define __SDE_ROTATOR_R3_H__

#include "sde_rotator_core.h"

int sde_rotator_r3_init(struct sde_rot_mgr *mgr);

#endif /* __SDE_ROTATOR_R3_H__ */
+48 −0
Original line number Diff line number Diff line
/* Copyright (c) 2015-2016, 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
 * only version 2 as published by the Free Software Foundation.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 */

#define pr_fmt(fmt)	"%s: " fmt, __func__

#include <linux/types.h>
#include <linux/kernel.h>
#include <linux/slab.h>
#include <linux/uaccess.h>
#include <linux/debugfs.h>

#include "sde_rotator_r3_debug.h"
#include "sde_rotator_core.h"
#include "sde_rotator_r3.h"
#include "sde_rotator_r3_internal.h"

/*
 * sde_rotator_r3_create_debugfs - Setup rotator r3 debugfs directory structure.
 * @rot_dev: Pointer to rotator device
 */
int sde_rotator_r3_create_debugfs(struct sde_rot_mgr *mgr,
		struct dentry *debugfs_root)
{
	struct sde_hw_rotator *hw_data;

	if (!mgr || !debugfs_root || !mgr->hw_data)
		return -EINVAL;

	hw_data = mgr->hw_data;

	if (!debugfs_create_bool("dbgmem", 0644,
			debugfs_root, &hw_data->dbgmem)) {
		SDEROT_ERR("fail create dbgmem\n");
		return -EINVAL;
	}

	return 0;
}
Loading