Lines Matching +full:mipi +full:- +full:dsi

1 // SPDX-License-Identifier: GPL-2.0-only
3 * Samsung MIPI DSIM glue for Exynos SoCs.
14 #include <drm/bridge/samsung-dsim.h>
27 struct exynos_dsi *dsi = dsim->priv; in exynos_dsi_te_irq_handler() local
28 struct drm_encoder *encoder = &dsi->encoder; in exynos_dsi_te_irq_handler()
30 if (dsim->state & DSIM_STATE_VIDOUT_AVAILABLE) in exynos_dsi_te_irq_handler()
31 exynos_drm_crtc_te_handler(encoder->crtc); in exynos_dsi_te_irq_handler()
39 struct exynos_dsi *dsi = dsim->priv; in exynos_dsi_host_attach() local
40 struct drm_encoder *encoder = &dsi->encoder; in exynos_dsi_host_attach()
41 struct drm_device *drm = encoder->dev; in exynos_dsi_host_attach()
43 drm_bridge_attach(encoder, &dsim->bridge, in exynos_dsi_host_attach()
44 list_first_entry_or_null(&encoder->bridge_chain, in exynos_dsi_host_attach()
48 mutex_lock(&drm->mode_config.mutex); in exynos_dsi_host_attach()
50 dsim->lanes = device->lanes; in exynos_dsi_host_attach()
51 dsim->format = device->format; in exynos_dsi_host_attach()
52 dsim->mode_flags = device->mode_flags; in exynos_dsi_host_attach()
53 exynos_drm_crtc_get_by_type(drm, EXYNOS_DISPLAY_TYPE_LCD)->i80_mode = in exynos_dsi_host_attach()
54 !(dsim->mode_flags & MIPI_DSI_MODE_VIDEO); in exynos_dsi_host_attach()
56 mutex_unlock(&drm->mode_config.mutex); in exynos_dsi_host_attach()
58 if (drm->mode_config.poll_enabled) in exynos_dsi_host_attach()
67 struct exynos_dsi *dsi = dsim->priv; in exynos_dsi_host_detach() local
68 struct drm_device *drm = dsi->encoder.dev; in exynos_dsi_host_detach()
70 if (drm->mode_config.poll_enabled) in exynos_dsi_host_detach()
77 struct exynos_dsi *dsi = dsim->priv; in exynos_dsi_bind() local
78 struct drm_encoder *encoder = &dsi->encoder; in exynos_dsi_bind()
88 return mipi_dsi_host_register(&dsim->dsi_host); in exynos_dsi_bind()
95 dsim->bridge.funcs->atomic_disable(&dsim->bridge, NULL); in exynos_dsi_unbind()
97 mipi_dsi_host_unregister(&dsim->dsi_host); in exynos_dsi_unbind()
107 struct exynos_dsi *dsi; in exynos_dsi_register_host() local
109 dsi = devm_kzalloc(dsim->dev, sizeof(*dsi), GFP_KERNEL); in exynos_dsi_register_host()
110 if (!dsi) in exynos_dsi_register_host()
111 return -ENOMEM; in exynos_dsi_register_host()
113 dsim->priv = dsi; in exynos_dsi_register_host()
114 dsim->bridge.pre_enable_prev_first = true; in exynos_dsi_register_host()
116 return component_add(dsim->dev, &exynos_dsi_component_ops); in exynos_dsi_register_host()
121 component_del(dsim->dev, &exynos_dsi_component_ops); in exynos_dsi_unregister_host()
159 .compatible = "samsung,exynos3250-mipi-dsi",
163 .compatible = "samsung,exynos4210-mipi-dsi",
167 .compatible = "samsung,exynos5410-mipi-dsi",
171 .compatible = "samsung,exynos5422-mipi-dsi",
175 .compatible = "samsung,exynos5433-mipi-dsi",
186 .name = "exynos-dsi",
194 MODULE_DESCRIPTION("Samsung SoC MIPI DSI Master");