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

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

Merge "drm: msm: add support for ltm off event"

parents d8e9978b 097da1a6
Loading
Loading
Loading
Loading
+22 −0
Original line number Diff line number Diff line
@@ -2899,6 +2899,7 @@ static void _sde_cp_crtc_enable_ltm_hist(struct sde_crtc *sde_crtc,
			sde_crtc->ltm_hist_en = true;
		hw_dspp->ops.setup_ltm_hist_ctrl(hw_dspp, hw_cfg,
			true, addr);
		SDE_EVT32(SDE_EVTLOG_FUNC_ENTRY);
	}
	spin_unlock_irqrestore(&sde_crtc->ltm_lock, irq_flags);
}
@@ -2909,15 +2910,30 @@ static void _sde_cp_crtc_disable_ltm_hist(struct sde_crtc *sde_crtc,
{
	unsigned long irq_flags;
	u32 i = 0;
	bool notify = false;
	u8 hist_off = 1;
	struct drm_event event;

	spin_lock_irqsave(&sde_crtc->ltm_lock, irq_flags);
	notify = sde_crtc->ltm_hist_en;
	sde_crtc->ltm_hist_en = false;
	INIT_LIST_HEAD(&sde_crtc->ltm_buf_free);
	INIT_LIST_HEAD(&sde_crtc->ltm_buf_busy);
	for (i = 0; i < sde_crtc->ltm_buffer_cnt; i++)
		list_add(&sde_crtc->ltm_buffers[i]->node,
			&sde_crtc->ltm_buf_free);
	hw_dspp->ops.setup_ltm_hist_ctrl(hw_dspp, NULL,
			false, 0);
	spin_unlock_irqrestore(&sde_crtc->ltm_lock, irq_flags);
	event.type = DRM_EVENT_LTM_OFF;
	event.length = sizeof(hist_off);
	if (notify) {
		SDE_EVT32(SDE_EVTLOG_FUNC_ENTRY);
		msm_mode_object_event_notify(&sde_crtc->base.base,
				sde_crtc->base.dev, &event,
				(u8 *)&hist_off);
	}

}

static void sde_cp_ltm_hist_interrupt_cb(void *arg, int irq_idx)
@@ -3318,3 +3334,9 @@ static void _sde_cp_crtc_update_ltm_roi(struct sde_crtc *sde_crtc,

	sde_crtc->ltm_cfg = *cfg_param;
}

int sde_cp_ltm_off_event_handler(struct drm_crtc *crtc_drm, bool en,
	struct sde_irq_callback *hist_irq)
{
	return 0;
}
+8 −0
Original line number Diff line number Diff line
@@ -182,4 +182,12 @@ int sde_cp_ltm_hist_interrupt(struct drm_crtc *crtc_drm, bool en,
int sde_cp_ltm_wb_pb_interrupt(struct drm_crtc *crtc_drm, bool en,
	struct sde_irq_callback *hist_irq);

/**
 * sde_cp_ltm_off_event_handler: API to enable/disable LTM off notification
 * @crtc: Pointer to crtc.
 * @en: Variable to enable/disable notification.
 * @irq: Pointer to irq callback
 */
int sde_cp_ltm_off_event_handler(struct drm_crtc *crtc_drm, bool en,
	struct sde_irq_callback *hist_irq);
#endif /*_SDE_COLOR_PROCESSING_H */
+1 −0
Original line number Diff line number Diff line
@@ -66,6 +66,7 @@ static struct sde_crtc_custom_events custom_events[] = {
	{DRM_EVENT_SDE_POWER, sde_crtc_pm_event_handler},
	{DRM_EVENT_LTM_HIST, sde_cp_ltm_hist_interrupt},
	{DRM_EVENT_LTM_WB_PB, sde_cp_ltm_wb_pb_interrupt},
	{DRM_EVENT_LTM_OFF, sde_cp_ltm_off_event_handler},
};

/* default input fence timeout, in ms */