drm/armada: remove obsolete fb unreferencing kfifo and workqueue
Remove the obsolete fb unreferencing system that is no longer used since we've transitioned to atomic modeset. Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
This commit is contained in:
Родитель
82c702cb0c
Коммит
aa595c00bc
|
@ -55,8 +55,6 @@ extern const struct armada_variant armada510_ops;
|
||||||
|
|
||||||
struct armada_private {
|
struct armada_private {
|
||||||
struct drm_device drm;
|
struct drm_device drm;
|
||||||
struct work_struct fb_unref_work;
|
|
||||||
DECLARE_KFIFO(fb_unref, struct drm_framebuffer *, 8);
|
|
||||||
struct drm_fb_helper *fbdev;
|
struct drm_fb_helper *fbdev;
|
||||||
struct armada_crtc *dcrtc[2];
|
struct armada_crtc *dcrtc[2];
|
||||||
struct drm_mm linear; /* protected by linear_lock */
|
struct drm_mm linear; /* protected by linear_lock */
|
||||||
|
@ -75,11 +73,6 @@ struct armada_private {
|
||||||
#endif
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
void __armada_drm_queue_unref_work(struct drm_device *,
|
|
||||||
struct drm_framebuffer *);
|
|
||||||
void armada_drm_queue_unref_work(struct drm_device *,
|
|
||||||
struct drm_framebuffer *);
|
|
||||||
|
|
||||||
int armada_fbdev_init(struct drm_device *);
|
int armada_fbdev_init(struct drm_device *);
|
||||||
void armada_fbdev_fini(struct drm_device *);
|
void armada_fbdev_fini(struct drm_device *);
|
||||||
|
|
||||||
|
|
|
@ -21,36 +21,6 @@
|
||||||
#include <drm/armada_drm.h>
|
#include <drm/armada_drm.h>
|
||||||
#include "armada_ioctlP.h"
|
#include "armada_ioctlP.h"
|
||||||
|
|
||||||
static void armada_drm_unref_work(struct work_struct *work)
|
|
||||||
{
|
|
||||||
struct armada_private *priv =
|
|
||||||
container_of(work, struct armada_private, fb_unref_work);
|
|
||||||
struct drm_framebuffer *fb;
|
|
||||||
|
|
||||||
while (kfifo_get(&priv->fb_unref, &fb))
|
|
||||||
drm_framebuffer_put(fb);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Must be called with dev->event_lock held */
|
|
||||||
void __armada_drm_queue_unref_work(struct drm_device *dev,
|
|
||||||
struct drm_framebuffer *fb)
|
|
||||||
{
|
|
||||||
struct armada_private *priv = dev->dev_private;
|
|
||||||
|
|
||||||
WARN_ON(!kfifo_put(&priv->fb_unref, fb));
|
|
||||||
schedule_work(&priv->fb_unref_work);
|
|
||||||
}
|
|
||||||
|
|
||||||
void armada_drm_queue_unref_work(struct drm_device *dev,
|
|
||||||
struct drm_framebuffer *fb)
|
|
||||||
{
|
|
||||||
unsigned long flags;
|
|
||||||
|
|
||||||
spin_lock_irqsave(&dev->event_lock, flags);
|
|
||||||
__armada_drm_queue_unref_work(dev, fb);
|
|
||||||
spin_unlock_irqrestore(&dev->event_lock, flags);
|
|
||||||
}
|
|
||||||
|
|
||||||
static struct drm_ioctl_desc armada_ioctls[] = {
|
static struct drm_ioctl_desc armada_ioctls[] = {
|
||||||
DRM_IOCTL_DEF_DRV(ARMADA_GEM_CREATE, armada_gem_create_ioctl,0),
|
DRM_IOCTL_DEF_DRV(ARMADA_GEM_CREATE, armada_gem_create_ioctl,0),
|
||||||
DRM_IOCTL_DEF_DRV(ARMADA_GEM_MMAP, armada_gem_mmap_ioctl, 0),
|
DRM_IOCTL_DEF_DRV(ARMADA_GEM_MMAP, armada_gem_mmap_ioctl, 0),
|
||||||
|
@ -134,9 +104,6 @@ static int armada_drm_bind(struct device *dev)
|
||||||
|
|
||||||
dev_set_drvdata(dev, &priv->drm);
|
dev_set_drvdata(dev, &priv->drm);
|
||||||
|
|
||||||
INIT_WORK(&priv->fb_unref_work, armada_drm_unref_work);
|
|
||||||
INIT_KFIFO(priv->fb_unref);
|
|
||||||
|
|
||||||
/* Mode setting support */
|
/* Mode setting support */
|
||||||
drm_mode_config_init(&priv->drm);
|
drm_mode_config_init(&priv->drm);
|
||||||
priv->drm.mode_config.min_width = 320;
|
priv->drm.mode_config.min_width = 320;
|
||||||
|
@ -190,7 +157,6 @@ static int armada_drm_bind(struct device *dev)
|
||||||
err_kms:
|
err_kms:
|
||||||
drm_mode_config_cleanup(&priv->drm);
|
drm_mode_config_cleanup(&priv->drm);
|
||||||
drm_mm_takedown(&priv->linear);
|
drm_mm_takedown(&priv->linear);
|
||||||
flush_work(&priv->fb_unref_work);
|
|
||||||
drm_dev_put(&priv->drm);
|
drm_dev_put(&priv->drm);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
@ -209,7 +175,6 @@ static void armada_drm_unbind(struct device *dev)
|
||||||
|
|
||||||
drm_mode_config_cleanup(&priv->drm);
|
drm_mode_config_cleanup(&priv->drm);
|
||||||
drm_mm_takedown(&priv->linear);
|
drm_mm_takedown(&priv->linear);
|
||||||
flush_work(&priv->fb_unref_work);
|
|
||||||
|
|
||||||
drm_dev_put(&priv->drm);
|
drm_dev_put(&priv->drm);
|
||||||
}
|
}
|
||||||
|
|
Загрузка…
Ссылка в новой задаче