/* Old dts had the components as child nodes */
node = of_get_next_child(dev->of_node, NULL); if (node) {
of_node_put(node);
parent = dev->of_node;
dev_warn(dev, "device tree is out of date\n");
} else {
parent = dev->of_node->parent;
}
/* Iterate over sibling MDP function blocks */
for_each_child_of_node(parent, node) { conststruct of_device_id *of_id; enum mtk_mdp_comp_type comp_type;
of_id = of_match_node(mtk_mdp_comp_dt_ids, node); if (!of_id) continue;
comp = devm_kzalloc(dev, sizeof(*comp), GFP_KERNEL); if (!comp) {
ret = -ENOMEM;
of_node_put(node); goto err_comp;
}
ret = mtk_mdp_comp_init(dev, node, comp, comp_type); if (ret) {
of_node_put(node); goto err_comp;
}
mtk_mdp_register_component(mdp, comp);
}
mdp->job_wq = create_singlethread_workqueue(MTK_MDP_MODULE_NAME); if (!mdp->job_wq) {
dev_err(&pdev->dev, "unable to alloc job workqueue\n");
ret = -ENOMEM; goto err_alloc_job_wq;
}
mdp->wdt_wq = create_singlethread_workqueue("mdp_wdt_wq"); if (!mdp->wdt_wq) {
dev_err(&pdev->dev, "unable to alloc wdt workqueue\n");
ret = -ENOMEM; goto err_alloc_wdt_wq;
}
INIT_WORK(&mdp->wdt_work, mtk_mdp_wdt_worker);
ret = v4l2_device_register(dev, &mdp->v4l2_dev); if (ret) {
dev_err(&pdev->dev, "Failed to register v4l2 device\n");
ret = -EINVAL; goto err_dev_register;
}
ret = mtk_mdp_register_m2m_device(mdp); if (ret) {
v4l2_err(&mdp->v4l2_dev, "Failed to init mem2mem device\n"); goto err_m2m_register;
}
mdp->vpu_dev = vpu_get_plat_device(pdev);
ret = vpu_wdt_reg_handler(mdp->vpu_dev, mtk_mdp_reset_handler, mdp,
VPU_RST_MDP); if (ret) {
dev_err(&pdev->dev, "Failed to register reset handler\n"); goto err_m2m_register;
}
platform_set_drvdata(pdev, mdp);
ret = vb2_dma_contig_set_max_seg_size(&pdev->dev, DMA_BIT_MASK(32)); if (ret) {
dev_err(&pdev->dev, "Failed to set vb2 dma mag seg size\n"); goto err_m2m_register;
}
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.