Lines Matching refs:dsim
65 static int exynos_mipi_regulator_enable(struct mipi_dsim_device *dsim) in exynos_mipi_regulator_enable() argument
69 mutex_lock(&dsim->lock); in exynos_mipi_regulator_enable()
71 mutex_unlock(&dsim->lock); in exynos_mipi_regulator_enable()
76 static int exynos_mipi_regulator_disable(struct mipi_dsim_device *dsim) in exynos_mipi_regulator_disable() argument
80 mutex_lock(&dsim->lock); in exynos_mipi_regulator_disable()
82 mutex_unlock(&dsim->lock); in exynos_mipi_regulator_disable()
88 static void exynos_mipi_update_cfg(struct mipi_dsim_device *dsim) in exynos_mipi_update_cfg() argument
95 exynos_mipi_dsi_stand_by(dsim, 0); in exynos_mipi_update_cfg()
97 exynos_mipi_dsi_init_dsim(dsim); in exynos_mipi_update_cfg()
98 exynos_mipi_dsi_init_link(dsim); in exynos_mipi_update_cfg()
100 exynos_mipi_dsi_set_hs_enable(dsim); in exynos_mipi_update_cfg()
103 exynos_mipi_dsi_set_display_mode(dsim, dsim->dsim_config); in exynos_mipi_update_cfg()
105 exynos_mipi_dsi_init_interrupt(dsim); in exynos_mipi_update_cfg()
111 exynos_mipi_dsi_stand_by(dsim, 1); in exynos_mipi_update_cfg()
114 static int exynos_mipi_dsi_early_blank_mode(struct mipi_dsim_device *dsim, in exynos_mipi_dsi_early_blank_mode() argument
117 struct mipi_dsim_lcd_driver *client_drv = dsim->dsim_lcd_drv; in exynos_mipi_dsi_early_blank_mode()
118 struct mipi_dsim_lcd_device *client_dev = dsim->dsim_lcd_dev; in exynos_mipi_dsi_early_blank_mode()
122 if (dsim->suspended) in exynos_mipi_dsi_early_blank_mode()
128 clk_disable(dsim->clock); in exynos_mipi_dsi_early_blank_mode()
130 exynos_mipi_regulator_disable(dsim); in exynos_mipi_dsi_early_blank_mode()
132 dsim->suspended = true; in exynos_mipi_dsi_early_blank_mode()
142 static int exynos_mipi_dsi_blank_mode(struct mipi_dsim_device *dsim, int power) in exynos_mipi_dsi_blank_mode() argument
144 struct mipi_dsim_lcd_driver *client_drv = dsim->dsim_lcd_drv; in exynos_mipi_dsi_blank_mode()
145 struct mipi_dsim_lcd_device *client_dev = dsim->dsim_lcd_dev; in exynos_mipi_dsi_blank_mode()
149 if (!dsim->suspended) in exynos_mipi_dsi_blank_mode()
156 exynos_mipi_regulator_enable(dsim); in exynos_mipi_dsi_blank_mode()
159 phy_power_on(dsim->phy); in exynos_mipi_dsi_blank_mode()
161 clk_enable(dsim->clock); in exynos_mipi_dsi_blank_mode()
163 exynos_mipi_update_cfg(dsim); in exynos_mipi_dsi_blank_mode()
169 dsim->suspended = false; in exynos_mipi_dsi_blank_mode()
268 struct mipi_dsim_device *dsim, in exynos_mipi_dsi_bind_lcd_ddi() argument
276 mutex_lock(&dsim->lock); in exynos_mipi_dsi_bind_lcd_ddi()
282 (dsim->id != dsim_ddi->bus_id)) in exynos_mipi_dsi_bind_lcd_ddi()
285 dev_dbg(dsim->dev, "lcd_drv->id = %d, lcd_dev->id = %d\n", in exynos_mipi_dsi_bind_lcd_ddi()
287 dev_dbg(dsim->dev, "lcd_dev->bus_id = %d, dsim->id = %d\n", in exynos_mipi_dsi_bind_lcd_ddi()
288 lcd_dev->bus_id, dsim->id); in exynos_mipi_dsi_bind_lcd_ddi()
291 lcd_dev->master = dsim; in exynos_mipi_dsi_bind_lcd_ddi()
293 lcd_dev->dev.parent = dsim->dev; in exynos_mipi_dsi_bind_lcd_ddi()
298 dev_err(dsim->dev, in exynos_mipi_dsi_bind_lcd_ddi()
301 mutex_unlock(&dsim->lock); in exynos_mipi_dsi_bind_lcd_ddi()
306 dsim->dsim_lcd_dev = lcd_dev; in exynos_mipi_dsi_bind_lcd_ddi()
307 dsim->dsim_lcd_drv = lcd_drv; in exynos_mipi_dsi_bind_lcd_ddi()
309 mutex_unlock(&dsim->lock); in exynos_mipi_dsi_bind_lcd_ddi()
315 mutex_unlock(&dsim->lock); in exynos_mipi_dsi_bind_lcd_ddi()
333 struct mipi_dsim_device *dsim; in exynos_mipi_dsi_probe() local
339 dsim = devm_kzalloc(&pdev->dev, sizeof(struct mipi_dsim_device), in exynos_mipi_dsi_probe()
341 if (!dsim) { in exynos_mipi_dsi_probe()
346 dsim->pd = to_dsim_plat(pdev); in exynos_mipi_dsi_probe()
347 dsim->dev = &pdev->dev; in exynos_mipi_dsi_probe()
348 dsim->id = pdev->id; in exynos_mipi_dsi_probe()
351 dsim_pd = (struct mipi_dsim_platform_data *)dsim->pd; in exynos_mipi_dsi_probe()
363 dsim->dsim_config = dsim_config; in exynos_mipi_dsi_probe()
364 dsim->master_ops = &master_ops; in exynos_mipi_dsi_probe()
366 mutex_init(&dsim->lock); in exynos_mipi_dsi_probe()
375 dsim->phy = devm_phy_get(&pdev->dev, "dsim"); in exynos_mipi_dsi_probe()
376 if (IS_ERR(dsim->phy)) in exynos_mipi_dsi_probe()
377 return PTR_ERR(dsim->phy); in exynos_mipi_dsi_probe()
379 dsim->clock = devm_clk_get(&pdev->dev, "dsim0"); in exynos_mipi_dsi_probe()
380 if (IS_ERR(dsim->clock)) { in exynos_mipi_dsi_probe()
385 clk_enable(dsim->clock); in exynos_mipi_dsi_probe()
389 dsim->reg_base = devm_ioremap_resource(&pdev->dev, res); in exynos_mipi_dsi_probe()
390 if (IS_ERR(dsim->reg_base)) { in exynos_mipi_dsi_probe()
391 ret = PTR_ERR(dsim->reg_base); in exynos_mipi_dsi_probe()
395 mutex_init(&dsim->lock); in exynos_mipi_dsi_probe()
398 dsim_ddi = exynos_mipi_dsi_bind_lcd_ddi(dsim, dsim_pd->lcd_panel_name); in exynos_mipi_dsi_probe()
405 dsim->irq = platform_get_irq(pdev, 0); in exynos_mipi_dsi_probe()
406 if (IS_ERR_VALUE(dsim->irq)) { in exynos_mipi_dsi_probe()
414 platform_set_drvdata(pdev, dsim); in exynos_mipi_dsi_probe()
416 ret = devm_request_irq(&pdev->dev, dsim->irq, in exynos_mipi_dsi_probe()
418 IRQF_SHARED, dev_name(&pdev->dev), dsim); in exynos_mipi_dsi_probe()
426 exynos_mipi_dsi_init_interrupt(dsim); in exynos_mipi_dsi_probe()
434 exynos_mipi_regulator_enable(dsim); in exynos_mipi_dsi_probe()
442 exynos_mipi_regulator_enable(dsim); in exynos_mipi_dsi_probe()
445 phy_power_on(dsim->phy); in exynos_mipi_dsi_probe()
447 exynos_mipi_update_cfg(dsim); in exynos_mipi_dsi_probe()
453 dsim->suspended = false; in exynos_mipi_dsi_probe()
456 platform_set_drvdata(pdev, dsim); in exynos_mipi_dsi_probe()
464 clk_disable(dsim->clock); in exynos_mipi_dsi_probe()
470 struct mipi_dsim_device *dsim = platform_get_drvdata(pdev); in exynos_mipi_dsi_remove() local
474 clk_disable(dsim->clock); in exynos_mipi_dsi_remove()
478 if (dsim->id != dsim_ddi->bus_id) in exynos_mipi_dsi_remove()
497 struct mipi_dsim_device *dsim = platform_get_drvdata(pdev); in exynos_mipi_dsi_suspend() local
498 struct mipi_dsim_lcd_driver *client_drv = dsim->dsim_lcd_drv; in exynos_mipi_dsi_suspend()
499 struct mipi_dsim_lcd_device *client_dev = dsim->dsim_lcd_dev; in exynos_mipi_dsi_suspend()
501 disable_irq(dsim->irq); in exynos_mipi_dsi_suspend()
503 if (dsim->suspended) in exynos_mipi_dsi_suspend()
510 phy_power_off(dsim->phy); in exynos_mipi_dsi_suspend()
512 clk_disable(dsim->clock); in exynos_mipi_dsi_suspend()
514 exynos_mipi_regulator_disable(dsim); in exynos_mipi_dsi_suspend()
516 dsim->suspended = true; in exynos_mipi_dsi_suspend()
524 struct mipi_dsim_device *dsim = platform_get_drvdata(pdev); in exynos_mipi_dsi_resume() local
525 struct mipi_dsim_lcd_driver *client_drv = dsim->dsim_lcd_drv; in exynos_mipi_dsi_resume()
526 struct mipi_dsim_lcd_device *client_dev = dsim->dsim_lcd_dev; in exynos_mipi_dsi_resume()
528 enable_irq(dsim->irq); in exynos_mipi_dsi_resume()
530 if (!dsim->suspended) in exynos_mipi_dsi_resume()
537 exynos_mipi_regulator_enable(dsim); in exynos_mipi_dsi_resume()
540 phy_power_on(dsim->phy); in exynos_mipi_dsi_resume()
542 clk_enable(dsim->clock); in exynos_mipi_dsi_resume()
544 exynos_mipi_update_cfg(dsim); in exynos_mipi_dsi_resume()
550 dsim->suspended = false; in exynos_mipi_dsi_resume()