static void omap_crtc_destroy(struct drm_crtc *crtc) { struct omap_crtc *omap_crtc = to_omap_crtc(crtc); DBG("%s", omap_crtc->ovl->name); drm_crtc_cleanup(crtc); kfree(omap_crtc); }
static void omap_crtc_destroy(struct drm_crtc *crtc) { struct omap_crtc *omap_crtc = to_omap_crtc(crtc); omap_crtc->plane->funcs->destroy(omap_crtc->plane); drm_crtc_cleanup(crtc); kfree(omap_crtc); }
static void qxl_crtc_destroy(struct drm_crtc *crtc) { struct qxl_crtc *qxl_crtc = to_qxl_crtc(crtc); drm_crtc_cleanup(crtc); kfree(qxl_crtc); }
/* Simple cleanup function */ static void cirrus_crtc_destroy(struct drm_crtc *crtc) { struct cirrus_crtc *cirrus_crtc = to_cirrus_crtc(crtc); drm_crtc_cleanup(crtc); kfree(cirrus_crtc); }
static void dce_virtual_crtc_destroy(struct drm_crtc *crtc) { struct amdgpu_crtc *amdgpu_crtc = to_amdgpu_crtc(crtc); drm_crtc_cleanup(crtc); kfree(amdgpu_crtc); }
static void exynos_drm_crtc_destroy(struct drm_crtc *crtc) { struct exynos_drm_crtc *exynos_crtc = to_exynos_crtc(crtc); drm_crtc_cleanup(crtc); kfree(exynos_crtc); }
static void vboxvideo_crtc_destroy(struct drm_crtc *crtc) { struct vboxvideo_crtc *vboxvideo_crtc = to_vboxvideo_crtc(crtc); drm_crtc_cleanup(crtc); kfree(vboxvideo_crtc); }
static void ade_drm_cleanup(struct drm_device *dev) { struct platform_device *pdev = dev->platformdev; struct ade_data *ade = platform_get_drvdata(pdev); struct drm_crtc *crtc = &ade->acrtc.base; drm_crtc_cleanup(crtc); }
static void hdlcd_crtc_cleanup(struct drm_crtc *crtc) { struct hdlcd_drm_private *hdlcd = crtc_to_hdlcd_priv(crtc); /* stop the controller on cleanup */ hdlcd_write(hdlcd, HDLCD_REG_COMMAND, 0); drm_crtc_cleanup(crtc); }
void pl111_crtc_destroy(struct drm_crtc *crtc) { struct pl111_drm_crtc *pl111_crtc = to_pl111_crtc(crtc); DRM_DEBUG_KMS("DRM %s on crtc=%p\n", __func__, crtc); drm_crtc_cleanup(crtc); kfree(pl111_crtc); }
void vmw_display_unit_cleanup(struct vmw_display_unit *du) { if (du->cursor_surface) vmw_surface_unreference(&du->cursor_surface); if (du->cursor_dmabuf) vmw_dmabuf_unreference(&du->cursor_dmabuf); drm_crtc_cleanup(&du->crtc); drm_encoder_cleanup(&du->encoder); drm_connector_cleanup(&du->connector); }
static void mdp4_crtc_destroy(struct drm_crtc *crtc) { struct mdp4_crtc *mdp4_crtc = to_mdp4_crtc(crtc); drm_crtc_cleanup(crtc); drm_flip_work_cleanup(&mdp4_crtc->unref_fb_work); drm_flip_work_cleanup(&mdp4_crtc->unref_cursor_work); kfree(mdp4_crtc); }
static void xylon_drm_crtc_destroy(struct drm_crtc *base_crtc) { struct xylon_drm_crtc *crtc = to_xylon_crtc(base_crtc); xylon_drm_crtc_dpms(base_crtc, DRM_MODE_DPMS_OFF); drm_crtc_cleanup(base_crtc); clk_disable_unprepare(crtc->pixel_clock); }
static void vigs_crtc_destroy(struct drm_crtc *crtc) { struct vigs_crtc *vigs_crtc = crtc_to_vigs_crtc(crtc); DRM_DEBUG_KMS("enter"); drm_crtc_cleanup(crtc); kfree(vigs_crtc); }
static void omap_crtc_destroy(struct drm_crtc *crtc) { struct omap_crtc *omap_crtc = to_omap_crtc(crtc); DBG("%s", omap_crtc->name); WARN_ON(omap_crtc->vblank_irq.registered); omap_irq_unregister(crtc->dev, &omap_crtc->error_irq); drm_crtc_cleanup(crtc); kfree(omap_crtc); }
/* destroy crtc */ void xilinx_drm_crtc_destroy(struct drm_crtc *base_crtc) { struct xilinx_drm_crtc *crtc = to_xilinx_crtc(base_crtc); /* make sure crtc is off */ xilinx_drm_crtc_dpms(base_crtc, DRM_MODE_DPMS_OFF); drm_crtc_cleanup(base_crtc); clk_disable_unprepare(crtc->pixel_clock); xilinx_drm_plane_destroy_planes(crtc->plane_manager); xilinx_drm_plane_destroy_private(crtc->plane_manager, crtc->priv_plane); xilinx_drm_plane_remove_manager(crtc->plane_manager); }
static int hdlcd_load(struct drm_device *drm, unsigned long flags) { struct hdlcd_drm_private *hdlcd = drm->dev_private; struct platform_device *pdev = to_platform_device(drm->dev); struct resource *res; u32 version; int ret; hdlcd->clk = devm_clk_get(drm->dev, "pxlclk"); if (IS_ERR(hdlcd->clk)) return PTR_ERR(hdlcd->clk); #ifdef CONFIG_DEBUG_FS atomic_set(&hdlcd->buffer_underrun_count, 0); atomic_set(&hdlcd->bus_error_count, 0); atomic_set(&hdlcd->vsync_count, 0); atomic_set(&hdlcd->dma_end_count, 0); #endif res = platform_get_resource(pdev, IORESOURCE_MEM, 0); hdlcd->mmio = devm_ioremap_resource(drm->dev, res); if (IS_ERR(hdlcd->mmio)) { DRM_ERROR("failed to map control registers area\n"); ret = PTR_ERR(hdlcd->mmio); hdlcd->mmio = NULL; return ret; } version = hdlcd_read(hdlcd, HDLCD_REG_VERSION); if ((version & HDLCD_PRODUCT_MASK) != HDLCD_PRODUCT_ID) { DRM_ERROR("unknown product id: 0x%x\n", version); return -EINVAL; } DRM_INFO("found ARM HDLCD version r%dp%d\n", (version & HDLCD_VERSION_MAJOR_MASK) >> 8, version & HDLCD_VERSION_MINOR_MASK); /* Get the optional framebuffer memory resource */ ret = of_reserved_mem_device_init(drm->dev); if (ret && ret != -ENODEV) return ret; ret = dma_set_mask_and_coherent(drm->dev, DMA_BIT_MASK(32)); if (ret) goto setup_fail; ret = hdlcd_setup_crtc(drm); if (ret < 0) { DRM_ERROR("failed to create crtc\n"); goto setup_fail; } ret = drm_irq_install(drm, platform_get_irq(pdev, 0)); if (ret < 0) { DRM_ERROR("failed to install IRQ handler\n"); goto irq_fail; } return 0; irq_fail: drm_crtc_cleanup(&hdlcd->crtc); setup_fail: of_reserved_mem_device_release(drm->dev); return ret; }
static void vbox_crtc_destroy(struct drm_crtc *crtc) { drm_crtc_cleanup(crtc); kfree(crtc); }
int vkms_output_init(struct vkms_device *vkmsdev) { struct vkms_output *output = &vkmsdev->output; struct drm_device *dev = &vkmsdev->drm; struct drm_connector *connector = &output->connector; struct drm_encoder *encoder = &output->encoder; struct drm_crtc *crtc = &output->crtc; struct drm_plane *primary, *cursor = NULL; int ret; primary = vkms_plane_init(vkmsdev, DRM_PLANE_TYPE_PRIMARY); if (IS_ERR(primary)) return PTR_ERR(primary); if (enable_cursor) { cursor = vkms_plane_init(vkmsdev, DRM_PLANE_TYPE_CURSOR); if (IS_ERR(cursor)) { ret = PTR_ERR(cursor); goto err_cursor; } } ret = vkms_crtc_init(dev, crtc, primary, cursor); if (ret) goto err_crtc; ret = drm_connector_init(dev, connector, &vkms_connector_funcs, DRM_MODE_CONNECTOR_VIRTUAL); if (ret) { DRM_ERROR("Failed to init connector\n"); goto err_connector; } drm_connector_helper_add(connector, &vkms_conn_helper_funcs); ret = drm_connector_register(connector); if (ret) { DRM_ERROR("Failed to register connector\n"); goto err_connector_register; } ret = drm_encoder_init(dev, encoder, &vkms_encoder_funcs, DRM_MODE_ENCODER_VIRTUAL, NULL); if (ret) { DRM_ERROR("Failed to init encoder\n"); goto err_encoder; } encoder->possible_crtcs = 1; ret = drm_connector_attach_encoder(connector, encoder); if (ret) { DRM_ERROR("Failed to attach connector to encoder\n"); goto err_attach; } drm_mode_config_reset(dev); return 0; err_attach: drm_encoder_cleanup(encoder); err_encoder: drm_connector_unregister(connector); err_connector_register: drm_connector_cleanup(connector); err_connector: drm_crtc_cleanup(crtc); err_crtc: if (enable_cursor) drm_plane_cleanup(cursor); err_cursor: drm_plane_cleanup(primary); return ret; }