if (!phy_pdev) {
DRM_DEV_ERROR(&pdev->dev, "%s: phy driver is not ready\n", __func__); return -EPROBE_DEFER;
} if (!msm_dsi->phy) {
put_device(&phy_pdev->dev);
DRM_DEV_ERROR(&pdev->dev, "%s: phy driver is not ready\n", __func__); return -EPROBE_DEFER;
}
return 0;
}
staticvoid dsi_destroy(struct msm_dsi *msm_dsi)
{ if (!msm_dsi) return;
/* * Next bridge doesn't exist for the secondary DSI host in a bonded * pair.
*/ if (!msm_dsi_is_bonded_dsi(msm_dsi) ||
msm_dsi_is_master_dsi(msm_dsi)) { struct drm_bridge *ext_bridge;
ext_bridge = devm_drm_of_get_bridge(&msm_dsi->pdev->dev,
msm_dsi->pdev->dev.of_node, 1, 0); if (IS_ERR(ext_bridge)) return PTR_ERR(ext_bridge);
DBG("");
msm_dsi = dsi_init(pdev); if (IS_ERR(msm_dsi)) { /* Don't fail the bind if the dsi port is not connected */ if (PTR_ERR(msm_dsi) == -ENODEV) return 0; else return PTR_ERR(msm_dsi);
}
int msm_dsi_modeset_init(struct msm_dsi *msm_dsi, struct drm_device *dev, struct drm_encoder *encoder)
{ int ret;
msm_dsi->dev = dev;
ret = msm_dsi_host_modeset_init(msm_dsi->host, dev); if (ret) {
DRM_DEV_ERROR(dev->dev, "failed to modeset init host: %d\n", ret); return ret;
}
if (msm_dsi_is_bonded_dsi(msm_dsi) &&
!msm_dsi_is_master_dsi(msm_dsi)) { /* * Do not return an eror here, * Just skip creating encoder/connector for the slave-DSI.
*/ return 0;
}
ret = msm_dsi_manager_connector_init(msm_dsi, encoder); if (ret) {
DRM_DEV_ERROR(dev->dev, "failed to create dsi connector: %d\n", 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.