int __init sdi_init_port(struct platform_device *pdev, struct device_node *port) { struct device_node *ep; u32 datapairs; int r; ep = omapdss_of_get_next_endpoint(port, NULL); if (!ep) return 0; r = of_property_read_u32(ep, "datapairs", &datapairs); if (r) { DSSERR("failed to parse datapairs\n"); goto err_datapairs; } sdi.datapairs = datapairs; of_node_put(ep); sdi.pdev = pdev; sdi_init_output(pdev); sdi.port_initialized = true; return 0; err_datapairs: of_node_put(ep); return r; }
static int omap_sdi_probe(struct platform_device *pdev) { sdi.pdev = pdev; sdi_init_output(pdev); return 0; }
static int sdi_bind(struct device *dev, struct device *master, void *data) { struct platform_device *pdev = to_platform_device(dev); sdi.pdev = pdev; sdi_init_output(pdev); return 0; }
int sdi_init_port(struct dss_device *dss, struct platform_device *pdev, struct device_node *port) { struct sdi_device *sdi; struct device_node *ep; u32 datapairs; int r; sdi = kzalloc(sizeof(*sdi), GFP_KERNEL); if (!sdi) return -ENOMEM; ep = of_get_next_child(port, NULL); if (!ep) { r = 0; goto err_free; } r = of_property_read_u32(ep, "datapairs", &datapairs); if (r) { DSSERR("failed to parse datapairs\n"); goto err_datapairs; } sdi->datapairs = datapairs; sdi->dss = dss; of_node_put(ep); sdi->pdev = pdev; port->data = sdi; sdi_init_output(sdi); return 0; err_datapairs: of_node_put(ep); err_free: kfree(sdi); return r; }