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

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

Merge "disp: msm: sde: remove vblank cache logic"

parents 8205140d e6754ef4
Loading
Loading
Loading
Loading
+11 −42
Original line number Original line Diff line number Diff line
@@ -3620,7 +3620,6 @@ void sde_crtc_commit_kickoff(struct drm_crtc *crtc,
static int _sde_crtc_vblank_enable_no_lock(
static int _sde_crtc_vblank_enable_no_lock(
		struct sde_crtc *sde_crtc, bool enable)
		struct sde_crtc *sde_crtc, bool enable)
{
{
	struct drm_device *dev;
	struct drm_crtc *crtc;
	struct drm_crtc *crtc;
	struct drm_encoder *enc;
	struct drm_encoder *enc;


@@ -3630,7 +3629,6 @@ static int _sde_crtc_vblank_enable_no_lock(
	}
	}


	crtc = &sde_crtc->base;
	crtc = &sde_crtc->base;
	dev = crtc->dev;


	if (enable) {
	if (enable) {
		int ret;
		int ret;
@@ -3642,27 +3640,27 @@ static int _sde_crtc_vblank_enable_no_lock(
		if (ret < 0)
		if (ret < 0)
			return ret;
			return ret;


		list_for_each_entry(enc, &dev->mode_config.encoder_list, head) {
		drm_for_each_encoder_mask(enc, crtc->dev,
			crtc->state->encoder_mask) {
			if (enc->crtc != crtc)
			if (enc->crtc != crtc)
				continue;
				continue;


			SDE_EVT32(DRMID(&sde_crtc->base), DRMID(enc), enable,
			SDE_EVT32(DRMID(&sde_crtc->base), DRMID(enc), enable,
					sde_crtc->enabled,
					sde_crtc->enabled,
					sde_crtc->suspend,
					sde_crtc->suspend);
					sde_crtc->vblank_requested);


			sde_encoder_register_vblank_callback(enc,
			sde_encoder_register_vblank_callback(enc,
					sde_crtc_vblank_cb, (void *)crtc);
					sde_crtc_vblank_cb, (void *)crtc);
		}
		}
	} else {
	} else {
		list_for_each_entry(enc, &dev->mode_config.encoder_list, head) {
		drm_for_each_encoder_mask(enc, crtc->dev,
			crtc->state->encoder_mask) {
			if (enc->crtc != crtc)
			if (enc->crtc != crtc)
				continue;
				continue;


			SDE_EVT32(DRMID(&sde_crtc->base), DRMID(enc), enable,
			SDE_EVT32(DRMID(&sde_crtc->base), DRMID(enc), enable,
					sde_crtc->enabled,
					sde_crtc->enabled,
					sde_crtc->suspend,
					sde_crtc->suspend);
					sde_crtc->vblank_requested);


			sde_encoder_register_vblank_callback(enc, NULL, NULL);
			sde_encoder_register_vblank_callback(enc, NULL, NULL);
		}
		}
@@ -3686,7 +3684,6 @@ static void _sde_crtc_set_suspend(struct drm_crtc *crtc, bool enable)
	struct sde_crtc *sde_crtc;
	struct sde_crtc *sde_crtc;
	struct msm_drm_private *priv;
	struct msm_drm_private *priv;
	struct sde_kms *sde_kms;
	struct sde_kms *sde_kms;
	int ret = 0;


	if (!crtc || !crtc->dev || !crtc->dev->dev_private) {
	if (!crtc || !crtc->dev || !crtc->dev->dev_private) {
		SDE_ERROR("invalid crtc\n");
		SDE_ERROR("invalid crtc\n");
@@ -3711,16 +3708,10 @@ static void _sde_crtc_set_suspend(struct drm_crtc *crtc, bool enable)
	 * and take it back during resume (if it is still enabled).
	 * and take it back during resume (if it is still enabled).
	 */
	 */
	SDE_EVT32(DRMID(&sde_crtc->base), enable, sde_crtc->enabled,
	SDE_EVT32(DRMID(&sde_crtc->base), enable, sde_crtc->enabled,
			sde_crtc->suspend, sde_crtc->vblank_requested);
			sde_crtc->suspend);
	if (sde_crtc->suspend == enable)
	if (sde_crtc->suspend == enable)
		SDE_DEBUG("crtc%d suspend already set to %d, ignoring update\n",
		SDE_DEBUG("crtc%d suspend already set to %d, ignoring update\n",
				crtc->base.id, enable);
				crtc->base.id, enable);
	else if (sde_crtc->enabled && sde_crtc->vblank_requested) {
		ret = _sde_crtc_vblank_enable_no_lock(sde_crtc, !enable);
		if (ret)
			SDE_ERROR("%s vblank enable failed: %d\n",
					sde_crtc->name, ret);
	}


	sde_crtc->suspend = enable;
	sde_crtc->suspend = enable;
	mutex_unlock(&sde_crtc->crtc_lock);
	mutex_unlock(&sde_crtc->crtc_lock);
@@ -3780,15 +3771,12 @@ static void sde_crtc_reset(struct drm_crtc *crtc)
	}
	}


	/* revert suspend actions, if necessary */
	/* revert suspend actions, if necessary */
	if (sde_kms_is_suspend_state(crtc->dev)) {
	if (sde_kms_is_suspend_state(crtc->dev) &&
		_sde_crtc_set_suspend(crtc, false);
		 !sde_crtc_is_reset_required(crtc)) {

		if (!sde_crtc_is_reset_required(crtc)) {
			SDE_DEBUG("avoiding reset for crtc:%d\n",
			SDE_DEBUG("avoiding reset for crtc:%d\n",
					crtc->base.id);
					crtc->base.id);
			return;
			return;
	}
	}
	}


	/* remove previous state, if present */
	/* remove previous state, if present */
	if (crtc->state) {
	if (crtc->state) {
@@ -3996,15 +3984,7 @@ static void sde_crtc_disable(struct drm_crtc *crtc)
	_sde_crtc_flush_event_thread(crtc);
	_sde_crtc_flush_event_thread(crtc);


	SDE_EVT32(DRMID(crtc), sde_crtc->enabled, sde_crtc->suspend,
	SDE_EVT32(DRMID(crtc), sde_crtc->enabled, sde_crtc->suspend,
			sde_crtc->vblank_requested,
			crtc->state->active, crtc->state->enable);
			crtc->state->active, crtc->state->enable);
	if (sde_crtc->enabled && !sde_crtc->suspend &&
			sde_crtc->vblank_requested) {
		ret = _sde_crtc_vblank_enable_no_lock(sde_crtc, false);
		if (ret)
			SDE_ERROR("%s vblank enable failed: %d\n",
					sde_crtc->name, ret);
	}
	sde_crtc->enabled = false;
	sde_crtc->enabled = false;


	/* Try to disable uidle */
	/* Try to disable uidle */
@@ -4116,8 +4096,7 @@ static void sde_crtc_enable(struct drm_crtc *crtc,
	drm_crtc_vblank_on(crtc);
	drm_crtc_vblank_on(crtc);


	mutex_lock(&sde_crtc->crtc_lock);
	mutex_lock(&sde_crtc->crtc_lock);
	SDE_EVT32(DRMID(crtc), sde_crtc->enabled, sde_crtc->suspend,
	SDE_EVT32(DRMID(crtc), sde_crtc->enabled, sde_crtc->suspend);
			sde_crtc->vblank_requested);


	/*
	/*
	 * Try to enable uidle (if possible), we do this before the call
	 * Try to enable uidle (if possible), we do this before the call
@@ -4144,13 +4123,6 @@ static void sde_crtc_enable(struct drm_crtc *crtc,
				sde_crtc_frame_event_cb, crtc);
				sde_crtc_frame_event_cb, crtc);
	}
	}


	if (!sde_crtc->enabled && !sde_crtc->suspend &&
			sde_crtc->vblank_requested) {
		ret = _sde_crtc_vblank_enable_no_lock(sde_crtc, true);
		if (ret)
			SDE_ERROR("%s vblank enable failed: %d\n",
					sde_crtc->name, ret);
	}
	sde_crtc->enabled = true;
	sde_crtc->enabled = true;


	/* update color processing on resume */
	/* update color processing on resume */
@@ -4743,14 +4715,13 @@ int sde_crtc_vblank(struct drm_crtc *crtc, bool en)


	mutex_lock(&sde_crtc->crtc_lock);
	mutex_lock(&sde_crtc->crtc_lock);
	SDE_EVT32(DRMID(&sde_crtc->base), en, sde_crtc->enabled,
	SDE_EVT32(DRMID(&sde_crtc->base), en, sde_crtc->enabled,
			sde_crtc->suspend, sde_crtc->vblank_requested);
			sde_crtc->suspend);
	if (sde_crtc->enabled && !sde_crtc->suspend) {
	if (sde_crtc->enabled && !sde_crtc->suspend) {
		ret = _sde_crtc_vblank_enable_no_lock(sde_crtc, en);
		ret = _sde_crtc_vblank_enable_no_lock(sde_crtc, en);
		if (ret)
		if (ret)
			SDE_ERROR("%s vblank enable failed: %d\n",
			SDE_ERROR("%s vblank enable failed: %d\n",
					sde_crtc->name, ret);
					sde_crtc->name, ret);
	}
	}
	sde_crtc->vblank_requested = en;
	mutex_unlock(&sde_crtc->crtc_lock);
	mutex_unlock(&sde_crtc->crtc_lock);


	return 0;
	return 0;
@@ -5463,8 +5434,6 @@ static int _sde_debugfs_status_show(struct seq_file *s, void *data)
		sde_crtc->vblank_cb_time = ktime_set(0, 0);
		sde_crtc->vblank_cb_time = ktime_set(0, 0);
	}
	}


	seq_printf(s, "vblank_enable:%d\n", sde_crtc->vblank_requested);

	mutex_unlock(&sde_crtc->crtc_lock);
	mutex_unlock(&sde_crtc->crtc_lock);


	return 0;
	return 0;
+0 −2
Original line number Original line Diff line number Diff line
@@ -224,7 +224,6 @@ struct sde_crtc_misr_info {
 * @vblank_last_cb_time  : ktime at last vblank notification
 * @vblank_last_cb_time  : ktime at last vblank notification
 * @sysfs_dev  : sysfs device node for crtc
 * @sysfs_dev  : sysfs device node for crtc
 * @vsync_event_sf : vsync event notifier sysfs device
 * @vsync_event_sf : vsync event notifier sysfs device
 * @vblank_requested : whether the user has requested vblank events
 * @suspend         : whether or not a suspend operation is in progress
 * @suspend         : whether or not a suspend operation is in progress
 * @enabled       : whether the SDE CRTC is currently enabled. updated in the
 * @enabled       : whether the SDE CRTC is currently enabled. updated in the
 *                  commit-thread, not state-swap time which is earlier, so
 *                  commit-thread, not state-swap time which is earlier, so
@@ -294,7 +293,6 @@ struct sde_crtc {
	struct sde_crtc_fps_info fps_info;
	struct sde_crtc_fps_info fps_info;
	struct device *sysfs_dev;
	struct device *sysfs_dev;
	struct kernfs_node *vsync_event_sf;
	struct kernfs_node *vsync_event_sf;
	bool vblank_requested;
	bool suspend;
	bool suspend;
	bool enabled;
	bool enabled;