Commit 1772fcc6 authored by Ben Skeggs's avatar Ben Skeggs

drm/nv50/disp: fix evo for create/init + destroy/fini split

Signed-off-by: default avatarBen Skeggs <bskeggs@redhat.com>
parent cf41d53b
...@@ -347,7 +347,7 @@ nv50_display_create(struct drm_device *dev) ...@@ -347,7 +347,7 @@ nv50_display_create(struct drm_device *dev)
struct dcb_table *dcb = &dev_priv->vbios.dcb; struct dcb_table *dcb = &dev_priv->vbios.dcb;
struct drm_connector *connector, *ct; struct drm_connector *connector, *ct;
struct nv50_display *priv; struct nv50_display *priv;
int i; int ret, i;
NV_DEBUG_KMS(dev, "\n"); NV_DEBUG_KMS(dev, "\n");
...@@ -400,6 +400,13 @@ nv50_display_create(struct drm_device *dev) ...@@ -400,6 +400,13 @@ nv50_display_create(struct drm_device *dev)
tasklet_init(&priv->tasklet, nv50_display_bh, (unsigned long)dev); tasklet_init(&priv->tasklet, nv50_display_bh, (unsigned long)dev);
nouveau_irq_register(dev, 26, nv50_display_isr); nouveau_irq_register(dev, 26, nv50_display_isr);
ret = nv50_evo_create(dev);
if (ret) {
nv50_display_destroy(dev);
return ret;
}
return 0; return 0;
} }
...@@ -410,6 +417,7 @@ nv50_display_destroy(struct drm_device *dev) ...@@ -410,6 +417,7 @@ nv50_display_destroy(struct drm_device *dev)
NV_DEBUG_KMS(dev, "\n"); NV_DEBUG_KMS(dev, "\n");
nv50_evo_destroy(dev);
nouveau_irq_unregister(dev, 26); nouveau_irq_unregister(dev, 26);
kfree(disp); kfree(disp);
} }
......
...@@ -79,6 +79,8 @@ int nv50_display_flip_next(struct drm_crtc *, struct drm_framebuffer *, ...@@ -79,6 +79,8 @@ int nv50_display_flip_next(struct drm_crtc *, struct drm_framebuffer *,
struct nouveau_channel *chan); struct nouveau_channel *chan);
void nv50_display_flip_stop(struct drm_crtc *); void nv50_display_flip_stop(struct drm_crtc *);
int nv50_evo_create(struct drm_device *dev);
void nv50_evo_destroy(struct drm_device *dev);
int nv50_evo_init(struct drm_device *dev); int nv50_evo_init(struct drm_device *dev);
void nv50_evo_fini(struct drm_device *dev); void nv50_evo_fini(struct drm_device *dev);
void nv50_evo_dmaobj_init(struct nouveau_gpuobj *, u32 memtype, u64 base, void nv50_evo_dmaobj_init(struct nouveau_gpuobj *, u32 memtype, u64 base,
......
...@@ -218,7 +218,7 @@ nv50_evo_channel_fini(struct nouveau_channel *evo) ...@@ -218,7 +218,7 @@ nv50_evo_channel_fini(struct nouveau_channel *evo)
} }
} }
static void void
nv50_evo_destroy(struct drm_device *dev) nv50_evo_destroy(struct drm_device *dev)
{ {
struct nv50_display *disp = nv50_display(dev); struct nv50_display *disp = nv50_display(dev);
...@@ -235,7 +235,7 @@ nv50_evo_destroy(struct drm_device *dev) ...@@ -235,7 +235,7 @@ nv50_evo_destroy(struct drm_device *dev)
nv50_evo_channel_del(&disp->master); nv50_evo_channel_del(&disp->master);
} }
static int int
nv50_evo_create(struct drm_device *dev) nv50_evo_create(struct drm_device *dev)
{ {
struct drm_nouveau_private *dev_priv = dev->dev_private; struct drm_nouveau_private *dev_priv = dev->dev_private;
...@@ -388,12 +388,6 @@ nv50_evo_init(struct drm_device *dev) ...@@ -388,12 +388,6 @@ nv50_evo_init(struct drm_device *dev)
struct nv50_display *disp = nv50_display(dev); struct nv50_display *disp = nv50_display(dev);
int ret, i; int ret, i;
if (!disp->master) {
ret = nv50_evo_create(dev);
if (ret)
return ret;
}
ret = nv50_evo_channel_init(disp->master); ret = nv50_evo_channel_init(disp->master);
if (ret) if (ret)
return ret; return ret;
...@@ -420,6 +414,4 @@ nv50_evo_fini(struct drm_device *dev) ...@@ -420,6 +414,4 @@ nv50_evo_fini(struct drm_device *dev)
if (disp->master) if (disp->master)
nv50_evo_channel_fini(disp->master); nv50_evo_channel_fini(disp->master);
nv50_evo_destroy(dev);
} }
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment