Commit e1c1174f authored by Laurent Pinchart's avatar Laurent Pinchart Committed by Tomi Valkeinen

drm: omapdrm: Make fbdev emulation optional

Don't compile the fbdev emulation code when fbdev emulation support is
disabled.
Signed-off-by: default avatarLaurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: default avatarTomi Valkeinen <tomi.valkeinen@ti.com>
parent f8ef29ee
...@@ -12,10 +12,11 @@ omapdrm-y := omap_drv.o \ ...@@ -12,10 +12,11 @@ omapdrm-y := omap_drv.o \
omap_encoder.o \ omap_encoder.o \
omap_connector.o \ omap_connector.o \
omap_fb.o \ omap_fb.o \
omap_fbdev.o \
omap_gem.o \ omap_gem.o \
omap_gem_dmabuf.o \ omap_gem_dmabuf.o \
omap_dmm_tiler.o \ omap_dmm_tiler.o \
tcm-sita.o tcm-sita.o
omapdrm-$(CONFIG_DRM_FBDEV_EMULATION) += omap_fbdev.o
obj-$(CONFIG_DRM_OMAP) += omapdrm.o obj-$(CONFIG_DRM_OMAP) += omapdrm.o
...@@ -51,6 +51,7 @@ static int mm_show(struct seq_file *m, void *arg) ...@@ -51,6 +51,7 @@ static int mm_show(struct seq_file *m, void *arg)
return drm_mm_dump_table(m, &dev->vma_offset_manager->vm_addr_space_mm); return drm_mm_dump_table(m, &dev->vma_offset_manager->vm_addr_space_mm);
} }
#ifdef CONFIG_DRM_FBDEV_EMULATION
static int fb_show(struct seq_file *m, void *arg) static int fb_show(struct seq_file *m, void *arg)
{ {
struct drm_info_node *node = (struct drm_info_node *) m->private; struct drm_info_node *node = (struct drm_info_node *) m->private;
...@@ -73,12 +74,15 @@ static int fb_show(struct seq_file *m, void *arg) ...@@ -73,12 +74,15 @@ static int fb_show(struct seq_file *m, void *arg)
return 0; return 0;
} }
#endif
/* list of debufs files that are applicable to all devices */ /* list of debufs files that are applicable to all devices */
static struct drm_info_list omap_debugfs_list[] = { static struct drm_info_list omap_debugfs_list[] = {
{"gem", gem_show, 0}, {"gem", gem_show, 0},
{"mm", mm_show, 0}, {"mm", mm_show, 0},
#ifdef CONFIG_DRM_FBDEV_EMULATION
{"fb", fb_show, 0}, {"fb", fb_show, 0},
#endif
}; };
/* list of debugfs files that are specific to devices with dmm/tiler */ /* list of debugfs files that are specific to devices with dmm/tiler */
......
...@@ -692,10 +692,6 @@ static int dev_load(struct drm_device *dev, unsigned long flags) ...@@ -692,10 +692,6 @@ static int dev_load(struct drm_device *dev, unsigned long flags)
drm_crtc_vblank_off(priv->crtcs[i]); drm_crtc_vblank_off(priv->crtcs[i]);
priv->fbdev = omap_fbdev_init(dev); priv->fbdev = omap_fbdev_init(dev);
if (!priv->fbdev) {
dev_warn(dev->dev, "omap_fbdev_init failed\n");
/* well, limp along without an fbdev.. maybe X11 will work? */
}
/* store off drm_device for use in pm ops */ /* store off drm_device for use in pm ops */
dev_set_drvdata(dev->dev, dev); dev_set_drvdata(dev->dev, dev);
......
...@@ -138,8 +138,18 @@ void omap_irq_unregister(struct drm_device *dev, struct omap_drm_irq *irq); ...@@ -138,8 +138,18 @@ void omap_irq_unregister(struct drm_device *dev, struct omap_drm_irq *irq);
void omap_drm_irq_uninstall(struct drm_device *dev); void omap_drm_irq_uninstall(struct drm_device *dev);
int omap_drm_irq_install(struct drm_device *dev); int omap_drm_irq_install(struct drm_device *dev);
#ifdef CONFIG_DRM_FBDEV_EMULATION
struct drm_fb_helper *omap_fbdev_init(struct drm_device *dev); struct drm_fb_helper *omap_fbdev_init(struct drm_device *dev);
void omap_fbdev_free(struct drm_device *dev); void omap_fbdev_free(struct drm_device *dev);
#else
static inline struct drm_fb_helper *omap_fbdev_init(struct drm_device *dev)
{
return NULL;
}
static inline void omap_fbdev_free(struct drm_device *dev)
{
}
#endif
struct omap_video_timings *omap_crtc_timings(struct drm_crtc *crtc); struct omap_video_timings *omap_crtc_timings(struct drm_crtc *crtc);
enum omap_channel omap_crtc_channel(struct drm_crtc *crtc); enum omap_channel omap_crtc_channel(struct drm_crtc *crtc);
......
...@@ -295,6 +295,10 @@ struct drm_fb_helper *omap_fbdev_init(struct drm_device *dev) ...@@ -295,6 +295,10 @@ struct drm_fb_helper *omap_fbdev_init(struct drm_device *dev)
drm_fb_helper_fini(helper); drm_fb_helper_fini(helper);
fail: fail:
kfree(fbdev); kfree(fbdev);
dev_warn(dev->dev, "omap_fbdev_init failed\n");
/* well, limp along without an fbdev.. maybe X11 will work? */
return NULL; return NULL;
} }
......
...@@ -653,6 +653,7 @@ int omap_gem_dumb_map_offset(struct drm_file *file, struct drm_device *dev, ...@@ -653,6 +653,7 @@ int omap_gem_dumb_map_offset(struct drm_file *file, struct drm_device *dev,
return ret; return ret;
} }
#ifdef CONFIG_DRM_FBDEV_EMULATION
/* Set scrolling position. This allows us to implement fast scrolling /* Set scrolling position. This allows us to implement fast scrolling
* for console. * for console.
* *
...@@ -689,6 +690,7 @@ int omap_gem_roll(struct drm_gem_object *obj, uint32_t roll) ...@@ -689,6 +690,7 @@ int omap_gem_roll(struct drm_gem_object *obj, uint32_t roll)
return ret; return ret;
} }
#endif
/* Sync the buffer for CPU access.. note pages should already be /* Sync the buffer for CPU access.. note pages should already be
* attached, ie. omap_gem_get_pages() * attached, ie. omap_gem_get_pages()
...@@ -924,6 +926,7 @@ int omap_gem_put_pages(struct drm_gem_object *obj) ...@@ -924,6 +926,7 @@ int omap_gem_put_pages(struct drm_gem_object *obj)
return 0; return 0;
} }
#ifdef CONFIG_DRM_FBDEV_EMULATION
/* Get kernel virtual address for CPU access.. this more or less only /* Get kernel virtual address for CPU access.. this more or less only
* exists for omap_fbdev. This should be called with struct_mutex * exists for omap_fbdev. This should be called with struct_mutex
* held. * held.
...@@ -942,6 +945,7 @@ void *omap_gem_vaddr(struct drm_gem_object *obj) ...@@ -942,6 +945,7 @@ void *omap_gem_vaddr(struct drm_gem_object *obj)
} }
return omap_obj->vaddr; return omap_obj->vaddr;
} }
#endif
#ifdef CONFIG_PM #ifdef CONFIG_PM
/* re-pin objects in DMM in resume path: */ /* re-pin objects in DMM in resume path: */
......
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