output->bus_fmt = atmel_hlcdc_of_bus_fmt(ep);
of_node_put(ep); if (output->bus_fmt < 0) {
dev_err(dev->dev, "endpoint %d: invalid bus width\n", endpoint); return -EINVAL;
}
ret = drm_simple_encoder_init(dev, &output->encoder,
DRM_MODE_ENCODER_NONE); if (ret) return ret;
output->encoder.possible_crtcs = 0x1;
if (panel) {
bridge = drm_panel_bridge_add_typed(panel,
DRM_MODE_CONNECTOR_Unknown); if (IS_ERR(bridge)) return PTR_ERR(bridge);
}
if (bridge) {
ret = drm_bridge_attach(&output->encoder, bridge, NULL, 0); if (!ret) return 0;
if (panel)
drm_panel_bridge_remove(bridge);
}
drm_encoder_cleanup(&output->encoder);
return ret;
}
int atmel_hlcdc_create_outputs(struct drm_device *dev)
{ int endpoint, ret = 0; int attached = 0;
/* * Always scan the first few endpoints even if we get -ENODEV, * but keep going after that as long as we keep getting hits.
*/ for (endpoint = 0; !ret || endpoint < 4; endpoint++) {
ret = atmel_hlcdc_attach_endpoint(dev, endpoint); if (ret == -ENODEV) continue; if (ret) break;
attached++;
}
/* At least one device was successfully attached.*/ if (ret == -ENODEV && attached) return 0;
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.