.. | .. |
---|
| 1 | +// SPDX-License-Identifier: GPL-2.0-only |
---|
1 | 2 | /* |
---|
2 | 3 | * Exynos DRM Parallel output support. |
---|
3 | 4 | * |
---|
4 | 5 | * Copyright (c) 2014 Samsung Electronics Co., Ltd |
---|
5 | 6 | * |
---|
6 | 7 | * Contacts: Andrzej Hajda <a.hajda@samsung.com> |
---|
7 | | - * |
---|
8 | | - * This program is free software; you can redistribute it and/or modify |
---|
9 | | - * it under the terms of the GNU General Public License version 2 as |
---|
10 | | - * published by the Free Software Foundation. |
---|
11 | 8 | */ |
---|
12 | | - |
---|
13 | | -#include <drm/drmP.h> |
---|
14 | | -#include <drm/drm_crtc_helper.h> |
---|
15 | | -#include <drm/drm_panel.h> |
---|
16 | | -#include <drm/drm_atomic_helper.h> |
---|
17 | 9 | |
---|
18 | 10 | #include <linux/of_graph.h> |
---|
19 | 11 | #include <linux/regulator/consumer.h> |
---|
| 12 | + |
---|
| 13 | +#include <drm/drm_atomic_helper.h> |
---|
| 14 | +#include <drm/drm_panel.h> |
---|
| 15 | +#include <drm/drm_print.h> |
---|
| 16 | +#include <drm/drm_probe_helper.h> |
---|
| 17 | +#include <drm/drm_simple_kms_helper.h> |
---|
20 | 18 | |
---|
21 | 19 | #include <video/of_videomode.h> |
---|
22 | 20 | #include <video/videomode.h> |
---|
.. | .. |
---|
44 | 42 | static enum drm_connector_status |
---|
45 | 43 | exynos_dpi_detect(struct drm_connector *connector, bool force) |
---|
46 | 44 | { |
---|
47 | | - struct exynos_dpi *ctx = connector_to_dpi(connector); |
---|
48 | | - |
---|
49 | | - if (ctx->panel && !ctx->panel->connector) |
---|
50 | | - drm_panel_attach(ctx->panel, &ctx->connector); |
---|
51 | | - |
---|
52 | 45 | return connector_status_connected; |
---|
53 | 46 | } |
---|
54 | 47 | |
---|
.. | .. |
---|
77 | 70 | |
---|
78 | 71 | mode = drm_mode_create(connector->dev); |
---|
79 | 72 | if (!mode) { |
---|
80 | | - DRM_ERROR("failed to create a new display mode\n"); |
---|
| 73 | + DRM_DEV_ERROR(ctx->dev, |
---|
| 74 | + "failed to create a new display mode\n"); |
---|
81 | 75 | return 0; |
---|
82 | 76 | } |
---|
83 | 77 | drm_display_mode_from_videomode(ctx->vm, mode); |
---|
.. | .. |
---|
87 | 81 | } |
---|
88 | 82 | |
---|
89 | 83 | if (ctx->panel) |
---|
90 | | - return ctx->panel->funcs->get_modes(ctx->panel); |
---|
| 84 | + return drm_panel_get_modes(ctx->panel, connector); |
---|
91 | 85 | |
---|
92 | 86 | return 0; |
---|
93 | 87 | } |
---|
.. | .. |
---|
108 | 102 | &exynos_dpi_connector_funcs, |
---|
109 | 103 | DRM_MODE_CONNECTOR_VGA); |
---|
110 | 104 | if (ret) { |
---|
111 | | - DRM_ERROR("failed to initialize connector with drm\n"); |
---|
| 105 | + DRM_DEV_ERROR(ctx->dev, |
---|
| 106 | + "failed to initialize connector with drm\n"); |
---|
112 | 107 | return ret; |
---|
113 | 108 | } |
---|
114 | 109 | |
---|
.. | .. |
---|
148 | 143 | .mode_set = exynos_dpi_mode_set, |
---|
149 | 144 | .enable = exynos_dpi_enable, |
---|
150 | 145 | .disable = exynos_dpi_disable, |
---|
151 | | -}; |
---|
152 | | - |
---|
153 | | -static const struct drm_encoder_funcs exynos_dpi_encoder_funcs = { |
---|
154 | | - .destroy = drm_encoder_cleanup, |
---|
155 | 146 | }; |
---|
156 | 147 | |
---|
157 | 148 | enum { |
---|
.. | .. |
---|
202 | 193 | { |
---|
203 | 194 | int ret; |
---|
204 | 195 | |
---|
205 | | - drm_encoder_init(dev, encoder, &exynos_dpi_encoder_funcs, |
---|
206 | | - DRM_MODE_ENCODER_TMDS, NULL); |
---|
| 196 | + drm_simple_encoder_init(dev, encoder, DRM_MODE_ENCODER_TMDS); |
---|
207 | 197 | |
---|
208 | 198 | drm_encoder_helper_add(encoder, &exynos_dpi_encoder_helper_funcs); |
---|
209 | 199 | |
---|
.. | .. |
---|
213 | 203 | |
---|
214 | 204 | ret = exynos_dpi_create_connector(encoder); |
---|
215 | 205 | if (ret) { |
---|
216 | | - DRM_ERROR("failed to create connector ret = %d\n", ret); |
---|
| 206 | + DRM_DEV_ERROR(encoder_to_dpi(encoder)->dev, |
---|
| 207 | + "failed to create connector ret = %d\n", ret); |
---|
217 | 208 | drm_encoder_cleanup(encoder); |
---|
218 | 209 | return ret; |
---|
219 | 210 | } |
---|
.. | .. |
---|
252 | 243 | struct exynos_dpi *ctx = encoder_to_dpi(encoder); |
---|
253 | 244 | |
---|
254 | 245 | exynos_dpi_disable(&ctx->encoder); |
---|
255 | | - |
---|
256 | | - if (ctx->panel) |
---|
257 | | - drm_panel_detach(ctx->panel); |
---|
258 | 246 | |
---|
259 | 247 | return 0; |
---|
260 | 248 | } |
---|