/* set crtc port so that * drm_of_find_possible_crtcs call works
*/
port = of_get_child_by_name(dev->dev->of_node, "port"); if (!port) {
DRM_ERROR("no port node found in %pOF\n", dev->dev->of_node); return -EINVAL;
}
of_node_put(port);
crtc->port = port;
ret = drm_crtc_init_with_planes(dev, crtc, plane, NULL,
driver_data->crtc_funcs, NULL); if (ret) {
DRM_ERROR("failed to init crtc.\n"); return ret;
}
kirin_priv = devm_kzalloc(dev->dev, sizeof(*kirin_priv), GFP_KERNEL); if (!kirin_priv) {
DRM_ERROR("failed to alloc kirin_drm_private\n"); return -ENOMEM;
}
ctx = driver_data->alloc_hw_ctx(pdev, &kirin_priv->crtc.base); if (IS_ERR(ctx)) {
DRM_ERROR("failed to initialize kirin_priv hw ctx\n"); return -EINVAL;
}
kirin_priv->hw_ctx = ctx;
/* * plane init * TODO: Now only support primary plane, overlay planes * need to do.
*/ for (ch = 0; ch < driver_data->num_planes; ch++) { if (ch == driver_data->prim_plane)
type = DRM_PLANE_TYPE_PRIMARY; else
type = DRM_PLANE_TYPE_OVERLAY;
ret = kirin_drm_plane_init(dev, &kirin_priv->planes[ch].base,
type, driver_data); if (ret) return ret;
kirin_priv->planes[ch].ch = ch;
kirin_priv->planes[ch].hw_ctx = ctx;
}
/* display controller init */
ret = kirin_drm_private_init(dev, driver_data); if (ret) goto err_mode_config_cleanup;
/* bind and init sub drivers */
ret = component_bind_all(dev->dev, dev); if (ret) {
DRM_ERROR("failed to bind all component.\n"); goto err_private_cleanup;
}
/* vblank init */
ret = drm_vblank_init(dev, dev->mode_config.num_crtc); if (ret) {
DRM_ERROR("failed to initialize vblank.\n"); goto err_unbind_all;
}
/* reset all the states of crtc/plane/encoder/connector */
drm_mode_config_reset(dev);
/* init kms poll for handling hpd */
drm_kms_helper_poll_init(dev);
MODULE_AUTHOR("Xinliang Liu ");
MODULE_AUTHOR("Xinliang Liu ");
MODULE_AUTHOR("Xinwei Kong ");
MODULE_DESCRIPTION("hisilicon Kirin SoCs' DRM master driver");
MODULE_LICENSE("GPL v2");
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.