Allwinner DRM driver fixes for 4.7, take 2 A new set of fixes for the sun4i driver, mostly related to vblank handling, and a minor fix to release a reference on the device tree nodes we're parsing in the probe logic. * tag 'sunxi-drm-fixes-for-4.7-2' of https://git.kernel.org/pub/scm/linux/kernel/git/mripard/linux: gpu: drm: sun4i_drv: add missing of_node_put after calling of_parse_phandle drm/sun4i: Send vblank event when the CRTC is disabled drm/sun4i: Report proper vblank
Unified · Split
| @@ -65,6 +65,14 @@ static void sun4i_crtc_disable(struct drm_crtc *crtc) · 64 unmodified lines | ||
| 65 | 65 | DRM_DEBUG_DRIVER("Disabling the CRTC\n"); |
| 66 | 66 | |
| 67 | 67 | sun4i_tcon_disable(drv->tcon); |
| 68 | + | |
| 69 | + if (crtc->state->event && !crtc->state->active) { | |
| 70 | + spin_lock_irq(&crtc->dev->event_lock); | |
| 71 | + drm_crtc_send_vblank_event(crtc, crtc->state->event); | |
| 72 | + spin_unlock_irq(&crtc->dev->event_lock); | |
| 73 | + | |
| 74 | + crtc->state->event = NULL; | |
| 75 | + } | |
| 68 | 76 | } |
| 69 | 77 | |
| 70 | 78 | static void sun4i_crtc_enable(struct drm_crtc *crtc) |
| @@ -92,7 +92,7 @@ static struct drm_driver sun4i_drv_driver = { · 91 unmodified lines | ||
| 92 | 92 | /* Frame Buffer Operations */ |
| 93 | 93 | |
| 94 | 94 | /* VBlank Operations */ |
| 95 | − .get_vblank_counter = drm_vblank_count, | |
| 95 | + .get_vblank_counter = drm_vblank_no_hw_counter, | |
| 96 | 96 | .enable_vblank = sun4i_drv_enable_vblank, |
| 97 | 97 | .disable_vblank = sun4i_drv_disable_vblank, |
| 98 | 98 | }; |
| @@ -310,6 +310,7 @@ static int sun4i_drv_probe(struct platform_device *pdev) · 211 unmodified lines | ||
| 310 | 310 | |
| 311 | 311 | count += sun4i_drv_add_endpoints(&pdev->dev, &match, |
| 312 | 312 | pipeline); |
| 313 | + of_node_put(pipeline); | |
| 313 | 314 | |
| 314 | 315 | DRM_DEBUG_DRIVER("Queued %d outputs on pipeline %d\n", |
| 315 | 316 | count, i); |