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

Commit 63f50a7a authored by Pawan Kumar's avatar Pawan Kumar
Browse files

msm: mdss: Detach mdss iommu on static screen



Detach mdss iommu on static screen and re-attach
on next commit to allow full power collapse of MDSS.
IOMMU driver keeps its vote for bus bandwidth for as
long as the MDP driver is attached to the IOMMU.
When MDP detaches from the IOMMU, IOMMU driver will
remove its vote for bus bandwidth.

Change-Id: I1e5c5c50bc157c3ebfc63e198e4608dad820a288
Signed-off-by: default avatarPawan Kumar <pavaku@codeaurora.org>
parent 61eeadff
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -637,6 +637,7 @@ void mdss_bus_bandwidth_ctrl(int enable)
		if (!enable) {
			msm_bus_scale_client_update_request(
				mdata->bus_hdl, 0);
			mdss_iommu_dettach(mdata);
			pm_runtime_put(&mdata->pdev->dev);
		} else {
			pm_runtime_get_sync(&mdata->pdev->dev);
+1 −0
Original line number Diff line number Diff line
@@ -487,6 +487,7 @@ static inline u32 mdss_mdp_pingpong_read(struct mdss_mdp_mixer *mixer, u32 reg)

irqreturn_t mdss_mdp_isr(int irq, void *ptr);
int mdss_iommu_attach(struct mdss_data_type *mdata);
int mdss_iommu_dettach(struct mdss_data_type *mdata);
void mdss_mdp_irq_clear(struct mdss_data_type *mdata,
		u32 intr_type, u32 intf_num);
int mdss_mdp_irq_enable(u32 intr_type, u32 intf_num);
+6 −0
Original line number Diff line number Diff line
@@ -836,6 +836,9 @@ 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)
			mdss_iommu_attach(mdp5_data->mdata);
		return 0;
	}

@@ -947,6 +950,9 @@ 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);