Lines Matching +full:sun4i +full:- +full:a10 +full:- +full:can

1 // SPDX-License-Identifier: GPL-2.0-or-later
6 * Maxime Ripard <maxime.ripard@free-electrons.com>
11 #include <linux/dma-mapping.h>
39 args->pitch = ALIGN(DIV_ROUND_UP(args->width * args->bpp, 8), 2); in drm_sun4i_gem_dumb_create()
51 .name = "sun4i-drm",
52 .desc = "Allwinner sun4i Display Engine",
74 ret = -ENOMEM; in sun4i_drv_bind()
78 drm->dev_private = drv; in sun4i_drv_bind()
79 INIT_LIST_HEAD(&drv->frontend_list); in sun4i_drv_bind()
80 INIT_LIST_HEAD(&drv->engine_list); in sun4i_drv_bind()
81 INIT_LIST_HEAD(&drv->tcon_list); in sun4i_drv_bind()
84 if (ret && ret != -ENODEV) { in sun4i_drv_bind()
85 dev_err(drm->dev, "Couldn't claim our memory region\n"); in sun4i_drv_bind()
91 ret = component_bind_all(drm->dev, drm); in sun4i_drv_bind()
93 dev_err(drm->dev, "Couldn't bind all pipelines components\n"); in sun4i_drv_bind()
97 /* drm_vblank_init calls kcalloc, which can fail */ in sun4i_drv_bind()
98 ret = drm_vblank_init(drm, drm->mode_config.num_crtc); in sun4i_drv_bind()
157 return of_device_is_compatible(node, "hdmi-connector"); in sun4i_drv_node_is_connector()
162 return of_device_is_compatible(node, "allwinner,sun4i-a10-display-frontend") || in sun4i_drv_node_is_frontend()
163 of_device_is_compatible(node, "allwinner,sun5i-a13-display-frontend") || in sun4i_drv_node_is_frontend()
164 of_device_is_compatible(node, "allwinner,sun6i-a31-display-frontend") || in sun4i_drv_node_is_frontend()
165 of_device_is_compatible(node, "allwinner,sun7i-a20-display-frontend") || in sun4i_drv_node_is_frontend()
166 of_device_is_compatible(node, "allwinner,sun8i-a23-display-frontend") || in sun4i_drv_node_is_frontend()
167 of_device_is_compatible(node, "allwinner,sun8i-a33-display-frontend") || in sun4i_drv_node_is_frontend()
168 of_device_is_compatible(node, "allwinner,sun9i-a80-display-frontend"); in sun4i_drv_node_is_frontend()
173 return of_device_is_compatible(node, "allwinner,sun9i-a80-deu"); in sun4i_drv_node_is_deu()
197 quirks = (struct sun4i_tcon_quirks *)match->data; in sun4i_drv_node_is_tcon_with_ch0()
199 return quirks->has_channel_0; in sun4i_drv_node_is_tcon_with_ch0()
220 * Also, in a dual display pipeline setup, both frontends can feed
221 * either backend, and both backends can feed either TCON, we want
228 * Hence we can use a breadth first search traversal order to add
290 kfifo_put(&list->fifo, remote); in sun4i_drv_traverse_endpoints()
314 * can just bail out. in sun4i_drv_add_endpoints()
370 struct device_node *np = pdev->dev.of_node, *endpoint; in sun4i_drv_probe()
377 * DE2 and DE3 cores actually supports 40-bit addresses, but in sun4i_drv_probe()
380 dma_set_mask_and_coherent(&pdev->dev, DMA_BIT_MASK(32)); in sun4i_drv_probe()
381 dma_set_max_seg_size(&pdev->dev, UINT_MAX); in sun4i_drv_probe()
395 ret = sun4i_drv_add_endpoints(&pdev->dev, &list, &match, in sun4i_drv_probe()
398 /* sun4i_drv_add_endpoints can fail to allocate memory */ in sun4i_drv_probe()
406 return component_master_add_with_match(&pdev->dev, in sun4i_drv_probe()
415 component_master_del(&pdev->dev, &sun4i_drv_master_ops); in sun4i_drv_remove()
424 { .compatible = "allwinner,sun4i-a10-display-engine" },
425 { .compatible = "allwinner,sun5i-a10s-display-engine" },
426 { .compatible = "allwinner,sun5i-a13-display-engine" },
427 { .compatible = "allwinner,sun6i-a31-display-engine" },
428 { .compatible = "allwinner,sun6i-a31s-display-engine" },
429 { .compatible = "allwinner,sun7i-a20-display-engine" },
430 { .compatible = "allwinner,sun8i-a23-display-engine" },
431 { .compatible = "allwinner,sun8i-a33-display-engine" },
432 { .compatible = "allwinner,sun8i-a83t-display-engine" },
433 { .compatible = "allwinner,sun8i-h3-display-engine" },
434 { .compatible = "allwinner,sun8i-r40-display-engine" },
435 { .compatible = "allwinner,sun8i-v3s-display-engine" },
436 { .compatible = "allwinner,sun9i-a80-display-engine" },
437 { .compatible = "allwinner,sun20i-d1-display-engine" },
438 { .compatible = "allwinner,sun50i-a64-display-engine" },
439 { .compatible = "allwinner,sun50i-h6-display-engine" },
449 .name = "sun4i-drm",
456 MODULE_AUTHOR("Boris Brezillon <boris.brezillon@free-electrons.com>");
457 MODULE_AUTHOR("Maxime Ripard <maxime.ripard@free-electrons.com>");
458 MODULE_DESCRIPTION("Allwinner A10 Display Engine DRM/KMS Driver");