Lines Matching +full:display +full:- +full:backend
1 // SPDX-License-Identifier: GPL-2.0-or-later
6 * Maxime Ripard <maxime.ripard@free-electrons.com>
37 args->pitch = ALIGN(DIV_ROUND_UP(args->width * args->bpp, 8), 2); in drm_sun4i_gem_dumb_create()
49 .name = "sun4i-drm",
50 .desc = "Allwinner sun4i Display Engine",
71 ret = -ENOMEM; in sun4i_drv_bind()
76 drm->dev_private = drv; in sun4i_drv_bind()
77 INIT_LIST_HEAD(&drv->frontend_list); in sun4i_drv_bind()
78 INIT_LIST_HEAD(&drv->engine_list); in sun4i_drv_bind()
79 INIT_LIST_HEAD(&drv->tcon_list); in sun4i_drv_bind()
82 if (ret && ret != -ENODEV) { in sun4i_drv_bind()
83 dev_err(drm->dev, "Couldn't claim our memory region\n"); in sun4i_drv_bind()
89 ret = component_bind_all(drm->dev, drm); in sun4i_drv_bind()
91 dev_err(drm->dev, "Couldn't bind all pipelines components\n"); in sun4i_drv_bind()
96 ret = drm_vblank_init(drm, drm->mode_config.num_crtc); in sun4i_drv_bind()
150 return of_device_is_compatible(node, "hdmi-connector"); in sun4i_drv_node_is_connector()
155 return of_device_is_compatible(node, "allwinner,sun4i-a10-display-frontend") || in sun4i_drv_node_is_frontend()
156 of_device_is_compatible(node, "allwinner,sun5i-a13-display-frontend") || in sun4i_drv_node_is_frontend()
157 of_device_is_compatible(node, "allwinner,sun6i-a31-display-frontend") || in sun4i_drv_node_is_frontend()
158 of_device_is_compatible(node, "allwinner,sun7i-a20-display-frontend") || in sun4i_drv_node_is_frontend()
159 of_device_is_compatible(node, "allwinner,sun8i-a23-display-frontend") || in sun4i_drv_node_is_frontend()
160 of_device_is_compatible(node, "allwinner,sun8i-a33-display-frontend") || in sun4i_drv_node_is_frontend()
161 of_device_is_compatible(node, "allwinner,sun9i-a80-display-frontend"); in sun4i_drv_node_is_frontend()
166 return of_device_is_compatible(node, "allwinner,sun9i-a80-deu"); in sun4i_drv_node_is_deu()
190 quirks = (struct sun4i_tcon_quirks *)match->data; in sun4i_drv_node_is_tcon_with_ch0()
192 return quirks->has_channel_0; in sun4i_drv_node_is_tcon_with_ch0()
207 dev->of_node, in compare_of()
210 return dev->of_node == data; in compare_of()
222 * Also, in a dual display pipeline setup, both frontends can feed
223 * either backend, and both backends can feed either TCON, we want
292 kfifo_put(&list->fifo, remote); in sun4i_drv_traverse_endpoints()
372 struct device_node *np = pdev->dev.of_node, *endpoint; in sun4i_drv_probe()
390 ret = sun4i_drv_add_endpoints(&pdev->dev, &list, &match, in sun4i_drv_probe()
401 return component_master_add_with_match(&pdev->dev, in sun4i_drv_probe()
410 component_master_del(&pdev->dev, &sun4i_drv_master_ops); in sun4i_drv_remove()
416 { .compatible = "allwinner,sun4i-a10-display-engine" },
417 { .compatible = "allwinner,sun5i-a10s-display-engine" },
418 { .compatible = "allwinner,sun5i-a13-display-engine" },
419 { .compatible = "allwinner,sun6i-a31-display-engine" },
420 { .compatible = "allwinner,sun6i-a31s-display-engine" },
421 { .compatible = "allwinner,sun7i-a20-display-engine" },
422 { .compatible = "allwinner,sun8i-a23-display-engine" },
423 { .compatible = "allwinner,sun8i-a33-display-engine" },
424 { .compatible = "allwinner,sun8i-a83t-display-engine" },
425 { .compatible = "allwinner,sun8i-h3-display-engine" },
426 { .compatible = "allwinner,sun8i-r40-display-engine" },
427 { .compatible = "allwinner,sun8i-v3s-display-engine" },
428 { .compatible = "allwinner,sun9i-a80-display-engine" },
429 { .compatible = "allwinner,sun50i-a64-display-engine" },
430 { .compatible = "allwinner,sun50i-h6-display-engine" },
439 .name = "sun4i-drm",
446 MODULE_AUTHOR("Boris Brezillon <boris.brezillon@free-electrons.com>");
447 MODULE_AUTHOR("Maxime Ripard <maxime.ripard@free-electrons.com>");
448 MODULE_DESCRIPTION("Allwinner A10 Display Engine DRM/KMS Driver");