staticvoid imx8qxp_pixel_link_enable_mst_en(struct imx8qxp_pixel_link *pl)
{ int ret;
ret = imx_sc_misc_set_control(pl->ipc_handle, pl->sink_rsc,
pl->mst_en_ctrl, true); if (ret)
DRM_DEV_ERROR(pl->dev, "failed to enable DC%u stream%u pixel link mst_en: %d\n",
pl->dc_id, pl->stream_id, ret);
}
staticvoid imx8qxp_pixel_link_enable_mst_vld(struct imx8qxp_pixel_link *pl)
{ int ret;
ret = imx_sc_misc_set_control(pl->ipc_handle, pl->sink_rsc,
pl->mst_vld_ctrl, true); if (ret)
DRM_DEV_ERROR(pl->dev, "failed to enable DC%u stream%u pixel link mst_vld: %d\n",
pl->dc_id, pl->stream_id, ret);
}
staticvoid imx8qxp_pixel_link_enable_sync(struct imx8qxp_pixel_link *pl)
{ int ret;
ret = imx_sc_misc_set_control(pl->ipc_handle, pl->sink_rsc,
pl->sync_ctrl, true); if (ret)
DRM_DEV_ERROR(pl->dev, "failed to enable DC%u stream%u pixel link sync: %d\n",
pl->dc_id, pl->stream_id, ret);
}
staticint imx8qxp_pixel_link_disable_mst_en(struct imx8qxp_pixel_link *pl)
{ int ret;
ret = imx_sc_misc_set_control(pl->ipc_handle, pl->sink_rsc,
pl->mst_en_ctrl, false); if (ret)
DRM_DEV_ERROR(pl->dev, "failed to disable DC%u stream%u pixel link mst_en: %d\n",
pl->dc_id, pl->stream_id, ret);
return ret;
}
staticint imx8qxp_pixel_link_disable_mst_vld(struct imx8qxp_pixel_link *pl)
{ int ret;
ret = imx_sc_misc_set_control(pl->ipc_handle, pl->sink_rsc,
pl->mst_vld_ctrl, false); if (ret)
DRM_DEV_ERROR(pl->dev, "failed to disable DC%u stream%u pixel link mst_vld: %d\n",
pl->dc_id, pl->stream_id, ret);
return ret;
}
staticint imx8qxp_pixel_link_disable_sync(struct imx8qxp_pixel_link *pl)
{ int ret;
ret = imx_sc_misc_set_control(pl->ipc_handle, pl->sink_rsc,
pl->sync_ctrl, false); if (ret)
DRM_DEV_ERROR(pl->dev, "failed to disable DC%u stream%u pixel link sync: %d\n",
pl->dc_id, pl->stream_id, ret);
return ret;
}
staticvoid imx8qxp_pixel_link_set_mst_addr(struct imx8qxp_pixel_link *pl)
{ int ret;
ret = imx_sc_misc_set_control(pl->ipc_handle,
pl->sink_rsc, pl->mst_addr_ctrl,
pl->mst_addr); if (ret)
DRM_DEV_ERROR(pl->dev, "failed to set DC%u stream%u pixel link mst addr(%u): %d\n",
pl->dc_id, pl->stream_id, pl->mst_addr, ret);
}
ret = imx_scu_get_handle(&pl->ipc_handle); if (ret) { if (ret != -EPROBE_DEFER)
DRM_DEV_ERROR(dev, "failed to get SCU ipc handle: %d\n",
ret); return ret;
}
ret = of_property_read_u8(np, "fsl,dc-id", &pl->dc_id); if (ret) {
DRM_DEV_ERROR(dev, "failed to get DC index: %d\n", ret); return ret;
}
ret = of_property_read_u8(np, "fsl,dc-stream-id", &pl->stream_id); if (ret) {
DRM_DEV_ERROR(dev, "failed to get DC stream index: %d\n", ret); return ret;
}
/* disable all controls to POR default */
ret = imx8qxp_pixel_link_disable_all_controls(pl); if (ret) return ret;
pl->next_bridge = imx8qxp_pixel_link_find_next_bridge(pl); if (IS_ERR(pl->next_bridge)) {
ret = PTR_ERR(pl->next_bridge); if (ret != -EPROBE_DEFER)
DRM_DEV_ERROR(dev, "failed to find next bridge: %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.