/* DRIVER */ static int dss_driver_probe(struct device *dev) { int r; struct omap_dss_driver *dssdrv = to_dss_driver(dev->driver); struct omap_dss_device *dssdev = to_dss_device(dev); struct omap_dss_board_info *pdata = core.pdev->dev.platform_data; bool force; DSSDBG("driver_probe: dev %s/%s, drv %s\n", dev_name(dev), dssdev->driver_name, dssdrv->driver.name); dss_init_device(core.pdev, dssdev); /* skip this if the device is behind a ctrl */ if (!dssdev->panel.ctrl) { force = pdata->default_device == dssdev; dss_recheck_connections(dssdev, force); } r = dssdrv->probe(dssdev); if (r) { DSSERR("driver probe failed: %d\n", r); return r; } DSSDBG("probe done for device %s\n", dev_name(dev)); dssdev->driver = dssdrv; return 0; }
/* DRIVER */ static int dss_driver_probe(struct device *dev) { int r; struct omap_dss_driver *dssdrv = to_dss_driver(dev->driver); struct omap_dss_device *dssdev = to_dss_device(dev); DSSDBG("driver_probe: dev %s/%s, drv %s\n", dev_name(dev), dssdev->driver_name, dssdrv->driver.name); r = dss_init_device(core.pdev, dssdev); if (r) return r; r = dssdrv->probe(dssdev); if (r) { DSSERR("driver probe failed: %d\n", r); dss_uninit_device(core.pdev, dssdev); return r; } DSSDBG("probe done for device %s\n", dev_name(dev)); dssdev->driver = dssdrv; return 0; }