static ssize_t driver_name_show(struct device_driver *drv, char *buf) { struct omap_dss_driver *dssdrv = to_dss_driver(drv); return snprintf(buf, PAGE_SIZE, "%s\n", dssdrv->driver.name ? dssdrv->driver.name : ""); }
/* 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; }
static int dss_driver_remove(struct device *dev) { struct omap_dss_driver *dssdrv = to_dss_driver(dev->driver); struct omap_dss_device *dssdev = to_dss_device(dev); DSSDBG("driver_remove: dev %s/%s\n", dev_name(dev), dssdev->driver_name); dssdrv->remove(dssdev); dss_uninit_device(core.pdev, dssdev); dssdev->driver = NULL; return 0; }