Skip to content

Commit

Permalink
drm/apple: Disable fake vblank IRQ machinery
Browse files Browse the repository at this point in the history
The hardware does not have a vblank IRQ and drm already knows how to
deal with that appropriately, so don't pretend it does.

Fixes Xorg.

Signed-off-by: Asahi Lina <lina@asahilina.net>
  • Loading branch information
asahilina committed Nov 27, 2022
1 parent f9c7334 commit f0fdea8
Show file tree
Hide file tree
Showing 2 changed files with 0 additions and 29 deletions.
23 changes: 0 additions & 23 deletions drivers/gpu/drm/apple/apple_drv.c
Expand Up @@ -165,18 +165,6 @@ static struct drm_plane *apple_plane_init(struct drm_device *dev,
return plane;
}

static int apple_enable_vblank(struct drm_crtc *crtc)
{
to_apple_crtc(crtc)->vsync_disabled = false;

return 0;
}

static void apple_disable_vblank(struct drm_crtc *crtc)
{
to_apple_crtc(crtc)->vsync_disabled = true;
}

static enum drm_connector_status
apple_connector_detect(struct drm_connector *connector, bool force)
{
Expand All @@ -198,7 +186,6 @@ static void apple_crtc_atomic_enable(struct drm_crtc *crtc,
dcp_poweron(apple_crtc->dcp);
dev_dbg(&apple_crtc->dcp->dev, "%s finished", __func__);
}
drm_crtc_vblank_on(crtc);
}

static void apple_crtc_atomic_disable(struct drm_crtc *crtc,
Expand All @@ -207,8 +194,6 @@ static void apple_crtc_atomic_disable(struct drm_crtc *crtc,
struct drm_crtc_state *crtc_state;
crtc_state = drm_atomic_get_new_crtc_state(state, crtc);

drm_crtc_vblank_off(crtc);

if (crtc_state->active_changed && !crtc_state->active) {
struct apple_crtc *apple_crtc = to_apple_crtc(crtc);
dev_dbg(&apple_crtc->dcp->dev, "%s", __func__);
Expand All @@ -232,8 +217,6 @@ static void apple_crtc_atomic_begin(struct drm_crtc *crtc,
unsigned long flags;

if (crtc->state->event) {
WARN_ON(drm_crtc_vblank_get(crtc) != 0);

spin_lock_irqsave(&crtc->dev->event_lock, flags);
apple_crtc->event = crtc->state->event;
spin_unlock_irqrestore(&crtc->dev->event_lock, flags);
Expand Down Expand Up @@ -269,8 +252,6 @@ static const struct drm_crtc_funcs apple_crtc_funcs = {
.page_flip = drm_atomic_helper_page_flip,
.reset = drm_atomic_helper_crtc_reset,
.set_config = drm_atomic_helper_set_config,
.enable_vblank = apple_enable_vblank,
.disable_vblank = apple_disable_vblank,
};

static const struct drm_mode_config_funcs apple_mode_config_funcs = {
Expand Down Expand Up @@ -404,10 +385,6 @@ static int apple_platform_probe(struct platform_device *pdev)

dev_set_drvdata(dev, apple);

ret = drm_vblank_init(&apple->drm, nr_dcp);
if (ret)
return ret;

ret = drmm_mode_config_init(&apple->drm);
if (ret)
goto err_unload;
Expand Down
6 changes: 0 additions & 6 deletions drivers/gpu/drm/apple/dcp.c
Expand Up @@ -36,15 +36,9 @@ void dcp_drm_crtc_vblank(struct apple_crtc *crtc)
{
unsigned long flags;

if (crtc->vsync_disabled)
return;

drm_crtc_handle_vblank(&crtc->base);

spin_lock_irqsave(&crtc->base.dev->event_lock, flags);
if (crtc->event) {
drm_crtc_send_vblank_event(&crtc->base, crtc->event);
drm_crtc_vblank_put(&crtc->base);
crtc->event = NULL;
}
spin_unlock_irqrestore(&crtc->base.dev->event_lock, flags);
Expand Down

0 comments on commit f0fdea8

Please sign in to comment.