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

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

Merge "msm: mdss: Fix mdss iommu detach-attach issue"

parents 30530fab 6692ca49
Loading
Loading
Loading
Loading
+4 −5
Original line number Diff line number Diff line
@@ -847,8 +847,7 @@ static int mdss_mdp_overlay_start(struct msm_fb_data_type *mfd)
	if (ctl->power_on) {
		if (!mdp5_data->mdata->batfet)
			mdss_mdp_batfet_ctrl(mdp5_data->mdata, true);
		if (!is_mdss_iommu_attached() &&
					!mfd->panel_info->cont_splash_enabled)
		if (!mfd->panel_info->cont_splash_enabled)
			mdss_iommu_attach(mdp5_data->mdata);
		return 0;
	}
@@ -961,9 +960,6 @@ int mdss_mdp_overlay_kickoff(struct msm_fb_data_type *mfd,
	int ret = 0;
	int sd_in_pipe = 0;

	if (!is_mdss_iommu_attached() && !mfd->panel_info->cont_splash_enabled)
		mdss_iommu_attach(mdp5_data->mdata);

	if (ctl->shared_lock)
		mutex_lock(ctl->shared_lock);

@@ -1270,6 +1266,9 @@ static int mdss_mdp_overlay_queue(struct msm_fb_data_type *mfd,

	flags = (pipe->flags & MDP_SECURE_OVERLAY_SESSION);

	if (!mfd->panel_info->cont_splash_enabled)
		mdss_iommu_attach(mdata);

	src_data = &pipe->back_buf;
	if (src_data->num_planes) {
		pr_warn("dropped buffer pnum=%d play=%d addr=0x%pa\n",
+4 −0
Original line number Diff line number Diff line
@@ -700,6 +700,7 @@ int mdss_mdp_rotator_play(struct msm_fb_data_type *mfd,
			    struct msmfb_overlay_data *req)
{
	struct mdss_mdp_rotator_session *rot;
	struct mdss_overlay_private *mdp5_data = mfd_to_mdp5_data(mfd);
	int ret;
	u32 flgs;

@@ -719,6 +720,9 @@ int mdss_mdp_rotator_play(struct msm_fb_data_type *mfd,
		goto dst_buf_fail;
	}

	if (!mfd->panel_info->cont_splash_enabled)
		mdss_iommu_attach(mdp5_data->mdata);

	mdss_mdp_overlay_free_buf(&rot->src_buf);
	ret = mdss_mdp_overlay_get_buf(mfd, &rot->src_buf, &req->data, 1, flgs);
	if (ret) {
+5 −1
Original line number Diff line number Diff line
/* Copyright (c) 2012-2013, The Linux Foundation. All rights reserved.
/* Copyright (c) 2012-2014, 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
@@ -478,6 +478,7 @@ static int mdss_mdp_wb_queue(struct msm_fb_data_type *mfd,
{
	struct mdss_mdp_wb *wb = mfd_to_wb(mfd);
	struct mdss_mdp_wb_data *node = NULL;
	struct mdss_overlay_private *mdp5_data = mfd_to_mdp5_data(mfd);
	int ret = 0;

	if (!wb) {
@@ -487,6 +488,9 @@ static int mdss_mdp_wb_queue(struct msm_fb_data_type *mfd,

	pr_debug("fb%d queue\n", wb->fb_ndx);

	if (!mfd->panel_info->cont_splash_enabled)
		mdss_iommu_attach(mdp5_data->mdata);

	mutex_lock(&wb->lock);
	if (local)
		node = get_local_node(wb, data);