Beispiel #1
0
static int __init omap_dss_init(void)
{
	int r;
	int i;

	r = platform_driver_probe(&omap_dss_driver, omap_dss_probe);
	if (r)
		return r;

	r = dss_init_platform_driver();
	if (r) {
		DSSERR("Failed to initialize DSS platform driver\n");
		goto err_dss;
	}

	r = dispc_init_platform_driver();
	if (r) {
		DSSERR("Failed to initialize dispc platform driver\n");
		goto err_dispc;
	}

	/*
	 * It's ok if the output-driver register fails. It happens, for example,
	 * when there is no output-device (e.g. SDI for OMAP4).
	 */
	for (i = 0; i < ARRAY_SIZE(dss_output_drv_reg_funcs); ++i) {
		r = dss_output_drv_reg_funcs[i]();
		if (r == 0)
			dss_output_drv_loaded[i] = true;
	}

	dss_initialized = true;

	return 0;

err_dispc:
	dss_uninit_platform_driver();
err_dss:
	platform_driver_unregister(&omap_dss_driver);

	return r;
}
Beispiel #2
0
/* PLATFORM DEVICE */
static int omap_dss_probe(struct platform_device *pdev)
{
	struct omap_dss_board_info *pdata = pdev->dev.platform_data;
	int r;
	int i;

	core.pdev = pdev;

	dss_features_init();

	dss_init_overlay_managers(pdev);
	dss_init_overlays(pdev);

	if (dss_has_feature(FEAT_OVL_WB))
		dss_init_writeback(pdev);

	r = dss_init_platform_driver();
	if (r) {
		DSSERR("Failed to initialize DSS platform driver\n");
		goto err_dss;
	}

	r = dispc_init_platform_driver();
	if (r) {
		DSSERR("Failed to initialize dispc platform driver\n");
		goto err_dispc;
	}

	r = rfbi_init_platform_driver();
	if (r) {
		DSSERR("Failed to initialize rfbi platform driver\n");
		goto err_rfbi;
	}

	r = venc_init_platform_driver();
	if (r) {
		DSSERR("Failed to initialize venc platform driver\n");
		goto err_venc;
	}

	r = dsi_init_platform_driver();
	if (r) {
		DSSERR("Failed to initialize DSI platform driver\n");
		goto err_dsi;
	}

	r = hdmi_init_platform_driver();
	if (r) {
		DSSERR("Failed to initialize hdmi\n");
		goto err_hdmi;
	}

	r = dss_initialize_debugfs();
	if (r)
		goto err_debugfs;

	for (i = 0; i < pdata->num_devices; ++i) {
		struct omap_dss_device *dssdev = pdata->devices[i];

		if (def_disp_name && strcmp(def_disp_name, dssdev->name) == 0)
			pdata->default_device = dssdev;

		r = omap_dss_register_device(dssdev);
		if (r) {
			DSSERR("device %d %s register failed %d\n", i,
				dssdev->name ?: "unnamed", r);

			while (--i >= 0)
				omap_dss_unregister_device(pdata->devices[i]);

			goto err_register;
		}
	}

	return 0;

err_register:
	dss_uninitialize_debugfs();
err_debugfs:
	hdmi_uninit_platform_driver();
err_hdmi:
	dsi_uninit_platform_driver();
err_dsi:
	venc_uninit_platform_driver();
err_venc:
	dispc_uninit_platform_driver();
err_dispc:
	rfbi_uninit_platform_driver();
err_rfbi:
	dss_uninit_platform_driver();
err_dss:

	return r;
}
Beispiel #3
0
/* PLATFORM DEVICE */
static int omap_dss_probe(struct platform_device *pdev)
{
	struct omap_dss_board_info *pdata = pdev->dev.platform_data;
	int r;
	int i;

	core.pdev = pdev;

	dss_features_init();

	dss_init_overlay_managers(pdev);
	dss_init_overlays(pdev);

	r = dss_init_platform_driver();
	if (r) {
		DSSERR("Failed to initialize DSS platform driver\n");
		goto err_dss;
	}

	/* keep clocks enabled to prevent context saves/restores during init */
	dss_clk_enable(DSS_CLK_ICK | DSS_CLK_FCK);

	r = rfbi_init_platform_driver();
	if (r) {
		DSSERR("Failed to initialize rfbi platform driver\n");
		goto err_rfbi;
	}

	r = dispc_init_platform_driver();
	if (r) {
		DSSERR("Failed to initialize dispc platform driver\n");
		goto err_dispc;
	}

	r = venc_init_platform_driver();
	if (r) {
		DSSERR("Failed to initialize venc platform driver\n");
		goto err_venc;
	}

	r = dsi_init_platform_driver();
	if (r) {
		DSSERR("Failed to initialize DSI platform driver\n");
		goto err_dsi;
	}

	r = hdmi_init_platform_driver();
	if (r) {
		DSSERR("Failed to initialize hdmi\n");
		goto err_hdmi;
	}

	r = dss_initialize_debugfs();
	if (r)
		goto err_debugfs;

	for (i = 0; i < pdata->num_devices; ++i) {
		struct omap_dss_device *dssdev = pdata->devices[i];

		r = omap_dss_register_device(dssdev);
		if (r) {
			DSSERR("device %d %s register failed %d\n", i,
				dssdev->name ?: "unnamed", r);

			while (--i >= 0)
				omap_dss_unregister_device(pdata->devices[i]);

			goto err_register;
		}

		if (def_disp_name && strcmp(def_disp_name, dssdev->name) == 0)
			pdata->default_device = dssdev;
	}

	dss_clk_disable(DSS_CLK_ICK | DSS_CLK_FCK);

	return 0;

err_register:
	dss_uninitialize_debugfs();
err_debugfs:
	hdmi_uninit_platform_driver();
err_hdmi:
	dsi_uninit_platform_driver();
err_dsi:
	venc_uninit_platform_driver();
err_venc:
	dispc_uninit_platform_driver();
err_dispc:
	rfbi_uninit_platform_driver();
err_rfbi:
	dss_uninit_platform_driver();
err_dss:

	return r;
}
Beispiel #4
0
/* PLATFORM DEVICE */
static int omap_dss_probe(struct platform_device *pdev)
{
	struct omap_dss_board_info *pdata = pdev->dev.platform_data;
	int r;
	int i;

#ifdef CONFIG_MACH_OMAP4_BOWSER_SUBTYPE_JEM
	static int first_boot = 1;
	struct clk *iclk;
#endif

	core.pdev = pdev;

	dss_features_init();

	dss_init_overlay_managers(pdev);
	dss_init_overlays(pdev);

	if (dss_has_feature(FEAT_OVL_WB))
		dss_init_writeback(pdev);

	r = dss_init_platform_driver();
	if (r) {
		DSSERR("Failed to initialize DSS platform driver\n");
		goto err_dss;
	}

	r = dispc_init_platform_driver();
	if (r) {
		DSSERR("Failed to initialize dispc platform driver\n");
		goto err_dispc;
	}

	r = rfbi_init_platform_driver();
	if (r) {
		DSSERR("Failed to initialize rfbi platform driver\n");
		goto err_rfbi;
	}

	r = venc_init_platform_driver();
	if (r) {
		DSSERR("Failed to initialize venc platform driver\n");
		goto err_venc;
	}

	r = dsi_init_platform_driver();
	if (r) {
		DSSERR("Failed to initialize DSI platform driver\n");
		goto err_dsi;
	}

	r = hdmi_init_platform_driver();
	if (r) {
		DSSERR("Failed to initialize hdmi\n");
		goto err_hdmi;
	}

	r = dss_initialize_debugfs();
	if (r)
		goto err_debugfs;

	for (i = 0; i < pdata->num_devices; ++i) {
		struct omap_dss_device *dssdev = pdata->devices[i];

		if (def_disp_name && strcmp(def_disp_name, dssdev->name) == 0)
			pdata->default_device = dssdev;

		r = omap_dss_register_device(dssdev);
		if (r) {
			DSSERR("device %d %s register failed %d\n", i,
				dssdev->name ?: "unnamed", r);

			while (--i >= 0)
				omap_dss_unregister_device(pdata->devices[i]);

			goto err_register;
		}
	}

#ifdef CONFIG_MACH_OMAP4_BOWSER_SUBTYPE_JEM
	if (unlikely(first_boot != 0)) {
		iclk = clk_get(NULL, "ick");
		if (!IS_ERR(iclk)) {
			clk_disable(iclk);
			clk_put(iclk);
		}
		first_boot = 0;
	}
#endif

	return 0;

err_register:
	dss_uninitialize_debugfs();
err_debugfs:
	hdmi_uninit_platform_driver();
err_hdmi:
	dsi_uninit_platform_driver();
err_dsi:
	venc_uninit_platform_driver();
err_venc:
	dispc_uninit_platform_driver();
err_dispc:
	rfbi_uninit_platform_driver();
err_rfbi:
	dss_uninit_platform_driver();
err_dss:

	return r;
}
Beispiel #5
0
static int __init omap_dss_register_drivers(void)
{
	int r;

	r = platform_driver_probe(&omap_dss_driver, omap_dss_probe);
	if (r)
		return r;

	r = dss_init_platform_driver();
	if (r) {
		DSSERR("Failed to initialize DSS platform driver\n");
		goto err_dss;
	}

	r = dispc_init_platform_driver();
	if (r) {
		DSSERR("Failed to initialize dispc platform driver\n");
		goto err_dispc;
	}

	r = dpi_init_platform_driver();
	if (r) {
		DSSERR("Failed to initialize dpi platform driver\n");
		goto err_dpi;
	}

	r = sdi_init_platform_driver();
	if (r) {
		DSSERR("Failed to initialize sdi platform driver\n");
		goto err_sdi;
	}

	r = rfbi_init_platform_driver();
	if (r) {
		DSSERR("Failed to initialize rfbi platform driver\n");
		goto err_rfbi;
	}

	r = venc_init_platform_driver();
	if (r) {
		DSSERR("Failed to initialize venc platform driver\n");
		goto err_venc;
	}

	r = dsi_init_platform_driver();
	if (r) {
		DSSERR("Failed to initialize DSI platform driver\n");
		goto err_dsi;
	}

	r = hdmi_init_platform_driver();
	if (r) {
		DSSERR("Failed to initialize hdmi\n");
		goto err_hdmi;
	}

	r = dss_initialize_debugfs();
	if (r)
		goto err_debugfs;

	return 0;

err_debugfs:
err_hdmi:
	dsi_uninit_platform_driver();
err_dsi:
	venc_uninit_platform_driver();
err_venc:
	rfbi_uninit_platform_driver();
err_rfbi:
	sdi_uninit_platform_driver();
err_sdi:
	dpi_uninit_platform_driver();
err_dpi:
	dispc_uninit_platform_driver();
err_dispc:
	dss_uninit_platform_driver();
err_dss:
	platform_driver_unregister(&omap_dss_driver);

	return r;
}