示例#1
0
文件: core.c 项目: 020gzh/linux
static int __init omap_dss_probe(struct platform_device *pdev)
{
	struct omap_dss_board_info *pdata = pdev->dev.platform_data;
	int r;

	core.pdev = pdev;

	dss_features_init(omapdss_get_version());

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

	if (def_disp_name)
		core.default_display_name = def_disp_name;
	else if (pdata->default_display_name)
		core.default_display_name = pdata->default_display_name;
	else if (pdata->default_device)
		core.default_display_name = pdata->default_device->name;

	register_pm_notifier(&omap_dss_pm_notif_block);

	return 0;

err_debugfs:

	return r;
}
示例#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_apply_init();

	dss_init_overlay_managers(pdev);
	dss_init_overlays(pdev);

	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;
	}

	return 0;

err_register:
	dss_uninitialize_debugfs();
err_debugfs:

	return r;
}
示例#3
0
文件: core.c 项目: richardxu/panda-a4
/* 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;
}
示例#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;
}
示例#5
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;
}