static int mipi_himax_lcd_probe(struct platform_device *pdev)
{
#if defined CONFIG_FB_MSM_SELF_REFRESH
	int ret;
#endif
	if (pdev->id == 0) {
		mipi_himax_pdata = pdev->dev.platform_data;
		mutex_init(&cmdlock);
#if defined CONFIG_FB_MSM_SELF_REFRESH
		ret = setup_vsync(pdev, 1);
		if (ret) {
			dev_err(&pdev->dev, "mipi_himax_setup_vsync failed\n");
			return ret;
		}
		wake_lock_init(&himax_idle_wake_lock, WAKE_LOCK_IDLE, "himax_idle_lock");
#ifdef CONFIG_PERFLOCK
		perf_lock_init(&himax_perf_lock, PERF_LOCK_HIGHEST, "himax");
#endif
#endif
		return 0;
	}

	msm_fb_add_device(pdev);

	return 0;
}
Ejemplo n.º 2
0
static int mddi_samsung_remove(struct platform_device *pdev)
{
    struct panel_info *panel = platform_get_drvdata(pdev);

    setup_vsync(panel, 0);
    kfree(panel);
    return 0;
}
Ejemplo n.º 3
0
static int mddi_samsung_probe(struct platform_device *pdev)
{
    int ret, err = -EINVAL;
    struct panel_info *panel;
    struct msm_mddi_client_data *client_data = pdev->dev.platform_data;
    struct msm_mddi_bridge_platform_data *bridge_data =
            client_data->private_client_data;

    B(KERN_DEBUG "%s: enter\n", __func__);

    panel = kzalloc(sizeof(struct panel_info), GFP_KERNEL);
    if (!panel) {
        err = -ENOMEM;
        goto err_out;
    }

    platform_set_drvdata(pdev, panel);
    ret = setup_vsync(panel, 1);
    if (ret) {
        dev_err(&pdev->dev, "mddi_samsung_setup_vsync failed\n");
        err = -EIO;
        goto err_panel;
    }

    panel->client_data = client_data;
    panel->panel_data.suspend = samsung_suspend;
    panel->panel_data.resume = samsung_resume;
    panel->panel_data.request_vsync = samsung_request_vsync;
    panel->panel_data.blank = samsung_blank;
    panel->panel_data.unblank = samsung_unblank;
    panel->panel_data.dump_vsync = samsung_dump_vsync;
    panel->panel_data.fb_data = &bridge_data->fb_data;
    panel->panel_data.caps = ~MSMFB_CAP_PARTIAL_UPDATES;
    atomic_set(&panel->depth, 0);
    panel->pdev.name = "msm_panel";
    panel->pdev.id = pdev->id;
    panel->pdev.resource = client_data->fb_resource;
    panel->pdev.num_resources = 1;
    panel->pdev.dev.platform_data = &panel->panel_data;
    platform_device_register(&panel->pdev);
    wake_lock_init(&panel->idle_lock, WAKE_LOCK_IDLE, "eid_idle_lock");
    /*for debugging vsync issue*/
    ebi1_clk = clk_get(NULL, "ebi1_clk");

    kthread_run(samsung_wait_vsync, panel, "ksamsung");
    return 0;

err_panel:
    kfree(panel);
err_out:
    return err;
}
static int mipi_himax_lcd_probe(struct platform_device *pdev)
{
#if defined CONFIG_FB_MSM_SELF_REFRESH
	int ret;
#endif
	if (pdev->id == 0) {
		mipi_himax_pdata = pdev->dev.platform_data;
		mutex_init(&cmdlock);
#if defined CONFIG_FB_MSM_SELF_REFRESH
		ret = setup_vsync(pdev, 1);
		if (ret) {
			dev_err(&pdev->dev, "mipi_himax_setup_vsync failed\n");
			return ret;
		}
#endif
		return 0;
	}

	msm_fb_add_device(pdev);

	return 0;
}