de = devm_kzalloc(dev, sizeof(*de), GFP_KERNEL); if (!de) return -ENOMEM;
base_top = devm_platform_get_and_ioremap_resource(pdev, 0, &res_top); if (IS_ERR(base_top)) return PTR_ERR(base_top);
de->reg_top = devm_regmap_init_mmio(dev, base_top,
&dc_de_top_regmap_config); if (IS_ERR(de->reg_top)) return PTR_ERR(de->reg_top);
de->irq_shdload = platform_get_irq_byname(pdev, "shdload"); if (de->irq_shdload < 0) return de->irq_shdload;
de->irq_framecomplete = platform_get_irq_byname(pdev, "framecomplete"); if (de->irq_framecomplete < 0) return de->irq_framecomplete;
de->irq_seqcomplete = platform_get_irq_byname(pdev, "seqcomplete"); if (de->irq_seqcomplete < 0) return de->irq_seqcomplete;
de->dev = dev;
dev_set_drvdata(dev, de);
ret = devm_pm_runtime_enable(dev); if (ret) return ret;
id = dc_subdev_get_id(dc_de_info, ARRAY_SIZE(dc_de_info), res_top); if (id < 0) {
dev_err(dev, "failed to get instance number: %d\n", id); return id;
}
dc_drm->de[id] = de;
return 0;
}
/* * It's possible to get the child device pointers from the child component * bind callbacks, but it depends on the component helper behavior to bind * the display engine component first. To avoid the dependency, post bind * to get the pointers from dc_drm in a safe manner.
*/ void dc_de_post_bind(struct dc_drm_device *dc_drm)
{ struct dc_de *de; int i;
for (i = 0; i < DC_DISPLAYS; i++) {
de = dc_drm->de[i];
de->fg = dc_drm->fg[i];
de->tc = dc_drm->tc[i];
}
}
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.