static void __init dpi_probe_pdata(struct platform_device *dpidev) { struct omap_dss_device *plat_dssdev; struct omap_dss_device *dssdev; int r; plat_dssdev = dpi_find_dssdev(dpidev); if (!plat_dssdev) return; dssdev = dss_alloc_and_init_device(&dpidev->dev); if (!dssdev) return; dss_copy_device_pdata(dssdev, plat_dssdev); r = dpi_init_display(dssdev); if (r) { DSSERR("device %s init failed: %d\n", dssdev->name, r); dss_put_device(dssdev); return; } r = dss_add_device(dssdev); if (r) { DSSERR("device %s register failed: %d\n", dssdev->name, r); dss_put_device(dssdev); return; } }
static int dpi_probe_pdata(struct platform_device *dpidev) { struct omap_dss_device *plat_dssdev; struct omap_dss_device *dssdev; int r; plat_dssdev = dpi_find_dssdev(dpidev); if (!plat_dssdev) return 0; dssdev = dss_alloc_and_init_device(&dpidev->dev); if (!dssdev) return -ENOMEM; dss_copy_device_pdata(dssdev, plat_dssdev); r = dpi_init_display(dssdev); if (r) { DSSERR("device %s init failed: %d\n", dssdev->name, r); dss_put_device(dssdev); return r; } r = omapdss_output_set_device(&dpi.output, dssdev); if (r) { DSSERR("failed to connect output to new device: %s\n", dssdev->name); dss_put_device(dssdev); return r; } r = dss_add_device(dssdev); if (r) { DSSERR("device %s register failed: %d\n", dssdev->name, r); omapdss_output_unset_device(&dpi.output); dss_put_device(dssdev); return r; } return 0; }
static void __init dpi_probe_pdata(struct platform_device *pdev) { struct omap_dss_board_info *pdata = pdev->dev.platform_data; int i, r; for (i = 0; i < pdata->num_devices; ++i) { struct omap_dss_device *dssdev = pdata->devices[i]; if (dssdev->type != OMAP_DISPLAY_TYPE_DPI) continue; r = dpi_init_display(dssdev); if (r) { DSSERR("device %s init failed: %d\n", dssdev->name, r); continue; } r = omap_dss_register_device(dssdev, &pdev->dev, i); if (r) DSSERR("device %s register failed: %d\n", dssdev->name, r); } }
void dss_init_device(struct platform_device *pdev, struct omap_dss_device *dssdev) { struct device_attribute *attr; int i; int r; switch (dssdev->type) { case OMAP_DISPLAY_TYPE_DPI: #ifdef CONFIG_OMAP2_DSS_RFBI case OMAP_DISPLAY_TYPE_DBI: #endif #ifdef CONFIG_OMAP2_DSS_SDI case OMAP_DISPLAY_TYPE_SDI: #endif #ifdef CONFIG_OMAP2_DSS_DSI case OMAP_DISPLAY_TYPE_DSI: #endif #ifdef CONFIG_OMAP2_DSS_VENC case OMAP_DISPLAY_TYPE_VENC: #endif break; default: DSSERR("Support for display '%s' not compiled in.\n", dssdev->name); return; } dssdev->get_resolution = default_get_resolution; dssdev->get_size = default_get_size; dssdev->get_recommended_bpp = default_get_recommended_bpp; dssdev->wait_vsync = default_wait_vsync; switch (dssdev->type) { case OMAP_DISPLAY_TYPE_DPI: r = dpi_init_display(dssdev); break; #ifdef CONFIG_OMAP2_DSS_RFBI case OMAP_DISPLAY_TYPE_DBI: r = rfbi_init_display(dssdev); break; #endif #ifdef CONFIG_OMAP2_DSS_VENC case OMAP_DISPLAY_TYPE_VENC: r = venc_init_display(dssdev); break; #endif #ifdef CONFIG_OMAP2_DSS_SDI case OMAP_DISPLAY_TYPE_SDI: r = sdi_init_display(dssdev); break; #endif #ifdef CONFIG_OMAP2_DSS_DSI case OMAP_DISPLAY_TYPE_DSI: r = dsi_init_display(dssdev); break; #endif default: BUG(); } if (r) { DSSERR("failed to init display %s\n", dssdev->name); return; } /* create device sysfs files */ i = 0; while ((attr = display_sysfs_attrs[i++]) != NULL) { r = device_create_file(&dssdev->dev, attr); if (r) DSSERR("failed to create sysfs file\n"); } /* create display? sysfs links */ r = sysfs_create_link(&pdev->dev.kobj, &dssdev->dev.kobj, dev_name(&dssdev->dev)); if (r) DSSERR("failed to create sysfs display link\n"); }
void dss_init_device(struct platform_device *pdev, struct omap_dss_device *dssdev) { struct device_attribute *attr; int i; int r; switch (dssdev->type) { #ifdef CONFIG_OMAP2_DSS_DPI case OMAP_DISPLAY_TYPE_DPI: r = dpi_init_display(dssdev); break; #endif #ifdef CONFIG_OMAP2_DSS_RFBI case OMAP_DISPLAY_TYPE_DBI: r = rfbi_init_display(dssdev); break; #endif #ifdef CONFIG_OMAP2_DSS_VENC case OMAP_DISPLAY_TYPE_VENC: r = venc_init_display(dssdev); break; #endif #ifdef CONFIG_OMAP2_DSS_SDI case OMAP_DISPLAY_TYPE_SDI: r = sdi_init_display(dssdev); break; #endif #ifdef CONFIG_OMAP2_DSS_DSI case OMAP_DISPLAY_TYPE_DSI: r = dsi_init_display(dssdev); break; #endif case OMAP_DISPLAY_TYPE_HDMI: r = hdmi_init_display(dssdev); break; default: DSSERR("Support for display '%s' not compiled in.\n", dssdev->name); return; } if (r) { DSSERR("failed to init display %s\n", dssdev->name); return; } BLOCKING_INIT_NOTIFIER_HEAD(&dssdev->state_notifiers); /* create device sysfs files */ i = 0; while ((attr = display_sysfs_attrs[i++]) != NULL) { r = device_create_file(&dssdev->dev, attr); if (r) DSSERR("failed to create sysfs file\n"); } /* create display? sysfs links */ r = sysfs_create_link(&pdev->dev.kobj, &dssdev->dev.kobj, dev_name(&dssdev->dev)); if (r) DSSERR("failed to create sysfs display link\n"); }