|
@@ -2328,12 +2328,12 @@ static void sde_crtc_frame_event_cb(void *data, u32 event, ktime_t ts)
|
|
|
SDE_DEBUG("crtc%d\n", crtc->base.id);
|
|
|
SDE_EVT32_VERBOSE(DRMID(crtc), event);
|
|
|
|
|
|
- spin_lock_irqsave(&sde_crtc->spin_lock, flags);
|
|
|
+ spin_lock_irqsave(&sde_crtc->fevent_spin_lock, flags);
|
|
|
fevent = list_first_entry_or_null(&sde_crtc->frame_event_list,
|
|
|
struct sde_crtc_frame_event, list);
|
|
|
if (fevent)
|
|
|
list_del_init(&fevent->list);
|
|
|
- spin_unlock_irqrestore(&sde_crtc->spin_lock, flags);
|
|
|
+ spin_unlock_irqrestore(&sde_crtc->fevent_spin_lock, flags);
|
|
|
|
|
|
if (!fevent) {
|
|
|
SDE_ERROR("crtc%d event %d overflow\n",
|
|
@@ -2633,9 +2633,9 @@ static void sde_crtc_frame_event_work(struct kthread_work *work)
|
|
|
SDE_ERROR("crtc%d ts:%lld received panel dead event\n",
|
|
|
crtc->base.id, ktime_to_ns(fevent->ts));
|
|
|
|
|
|
- spin_lock_irqsave(&sde_crtc->spin_lock, flags);
|
|
|
+ spin_lock_irqsave(&sde_crtc->fevent_spin_lock, flags);
|
|
|
list_add_tail(&fevent->list, &sde_crtc->frame_event_list);
|
|
|
- spin_unlock_irqrestore(&sde_crtc->spin_lock, flags);
|
|
|
+ spin_unlock_irqrestore(&sde_crtc->fevent_spin_lock, flags);
|
|
|
SDE_ATRACE_END("crtc_frame_event");
|
|
|
}
|
|
|
|
|
@@ -6947,6 +6947,7 @@ struct drm_crtc *sde_crtc_init(struct drm_device *dev, struct drm_plane *plane)
|
|
|
|
|
|
mutex_init(&sde_crtc->crtc_lock);
|
|
|
spin_lock_init(&sde_crtc->spin_lock);
|
|
|
+ spin_lock_init(&sde_crtc->fevent_spin_lock);
|
|
|
atomic_set(&sde_crtc->frame_pending, 0);
|
|
|
|
|
|
sde_crtc->enabled = false;
|