static int writeback_probe(struct platform_device *pdev)
{
	struct msm_fb_data_type *mfd;
	struct platform_device *mdp_dev = NULL;
	struct msm_fb_panel_data *pdata = NULL;
	int rc = 0;

	WRITEBACK_MSG_ERR("Inside writeback_probe\n");
	mfd = platform_get_drvdata(pdev);
	if (!mfd)
		return -ENODEV;
	if (mfd->key != MFD_KEY)
		return -EINVAL;

	mdp_dev = platform_device_alloc("mdp", pdev->id);
	if (!mdp_dev)
		return -ENOMEM;
	/*
	 * link to the latest pdev
	 */
	mfd->pdev = mdp_dev;
	mfd->dest = DISPLAY_LCD;

	if (platform_device_add_data
			(mdp_dev, pdev->dev.platform_data,
			 sizeof(struct msm_fb_panel_data))) {
		pr_err("writeback_probe: "
			"platform_device_add_data failed!\n");
		platform_device_put(mdp_dev);
		return -ENOMEM;
	}
	pdata = (struct msm_fb_panel_data *)mdp_dev->dev.platform_data;
	pdata->on = writeback_on;
	pdata->off = writeback_off;
	pdata->next = pdev;

	/*
	 * get/set panel specific fb info
	 */
	mfd->panel_info = pdata->panel_info;

	mfd->fb_imgType = MDP_RGB_565;

	platform_set_drvdata(mdp_dev, mfd);

	mfd->writeback_sdev.name = "wfd";
	rc = switch_dev_register(&mfd->writeback_sdev);
	if (rc) {
		pr_err("Failed to setup switch dev for writeback panel");
		return rc;
	}

	rc = platform_device_add(mdp_dev);
	if (rc) {
		WRITEBACK_MSG_ERR("failed to add device");
		platform_device_put(mdp_dev);
		return rc;
	}
	return rc;
}
static int __init writeback_panel_init(void)
{
	int rc = 0;
	rc = platform_driver_register(&writeback_panel_driver);
	if (rc) {
		WRITEBACK_MSG_ERR("Failed to register platform driver\n");
		goto fail_driver_registration;
	}
	rc = platform_device_register(&writeback_panel_device);
	if (rc) {
		WRITEBACK_MSG_ERR("Failed to register "
				"writeback_panel_device\n");
		goto fail_device_registration;
	}

	writeback_suspend.level = 0;
	writeback_suspend.suspend = mdp4_overlay_writeback_early_suspend;
	writeback_suspend.resume = mdp4_overlay_writeback_early_resume;
	register_early_suspend(&writeback_suspend);
	return rc;
fail_device_registration:
	platform_driver_unregister(&writeback_panel_driver);
fail_driver_registration:
	return rc;
}
示例#3
0
static int __init writeback_driver_init(void)
{
	int rc = 0;
	WRITEBACK_MSG_ERR("Inside writeback_driver_init\n");
	rc = platform_driver_register(&writeback_driver);
	return rc;
}
static int __init writeback_panel_init(void)
{
	int rc = 0;
	rc = platform_driver_register(&writeback_panel_driver);
	if (rc) {
		WRITEBACK_MSG_ERR("Failed to register platform driver\n");
		goto fail_driver_registration;
	}
	rc = platform_device_register(&writeback_panel_device);
	if (rc) {
		WRITEBACK_MSG_ERR("Failed to register "
				"writeback_panel_device\n");
		goto fail_device_registration;
	}
	return rc;
fail_device_registration:
	platform_driver_unregister(&writeback_panel_driver);
fail_driver_registration:
	return rc;
}
static int __devinit writeback_panel_probe(struct platform_device *pdev)
{
	int rc = 0;
	if (pdev->id == 0)
		return 0;

	if (!msm_fb_add_device(pdev)) {
		WRITEBACK_MSG_ERR("Failed to add fd device\n");
		rc = -ENOMEM;
	}
	return rc;
}