bridge = devm_drm_of_get_bridge(dev, dc_crtc->de->tc->dev->of_node,
0, 0); if (IS_ERR(bridge)) {
ret = PTR_ERR(bridge); if (ret == -ENODEV) return 0;
return dev_err_probe(dev, ret, "failed to find bridge for CRTC%u\n",
crtc->index);
}
encoder = &dc_drm->encoder[crtc_index];
ret = drm_simple_encoder_init(drm, encoder, DRM_MODE_ENCODER_NONE); if (ret) {
dev_err(dev, "failed to initialize encoder for CRTC%u: %d\n",
crtc->index, ret); return ret;
}
encoder->possible_crtcs = drm_crtc_mask(crtc);
ret = drm_bridge_attach(encoder, bridge, NULL,
DRM_BRIDGE_ATTACH_NO_CONNECTOR); if (ret) {
dev_err(dev, "failed to attach bridge to encoder for CRTC%u: %d\n",
crtc->index, ret); return ret;
}
connector = drm_bridge_connector_init(drm, encoder); if (IS_ERR(connector)) {
ret = PTR_ERR(connector);
dev_err(dev, "failed to init bridge connector for CRTC%u: %d\n",
crtc->index, ret); return ret;
}
ret = drm_connector_attach_encoder(connector, encoder); if (ret)
dev_err(dev, "failed to attach encoder to connector for CRTC%u: %d\n",
crtc->index, ret);
return ret;
}
int dc_kms_init(struct dc_drm_device *dc_drm)
{ struct drm_device *drm = &dc_drm->base; int ret, i;
ret = drmm_mode_config_init(drm); if (ret) return ret;
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.