hc
2023-12-11 d2ccde1c8e90d38cee87a1b0309ad2827f3fd30d
kernel/drivers/gpu/drm/exynos/exynos_drm_dpi.c
....@@ -1,22 +1,20 @@
1
+// SPDX-License-Identifier: GPL-2.0-only
12 /*
23 * Exynos DRM Parallel output support.
34 *
45 * Copyright (c) 2014 Samsung Electronics Co., Ltd
56 *
67 * 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.
118 */
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>
179
1810 #include <linux/of_graph.h>
1911 #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>
2018
2119 #include <video/of_videomode.h>
2220 #include <video/videomode.h>
....@@ -44,11 +42,6 @@
4442 static enum drm_connector_status
4543 exynos_dpi_detect(struct drm_connector *connector, bool force)
4644 {
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
-
5245 return connector_status_connected;
5346 }
5447
....@@ -77,7 +70,8 @@
7770
7871 mode = drm_mode_create(connector->dev);
7972 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");
8175 return 0;
8276 }
8377 drm_display_mode_from_videomode(ctx->vm, mode);
....@@ -87,7 +81,7 @@
8781 }
8882
8983 if (ctx->panel)
90
- return ctx->panel->funcs->get_modes(ctx->panel);
84
+ return drm_panel_get_modes(ctx->panel, connector);
9185
9286 return 0;
9387 }
....@@ -108,7 +102,8 @@
108102 &exynos_dpi_connector_funcs,
109103 DRM_MODE_CONNECTOR_VGA);
110104 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");
112107 return ret;
113108 }
114109
....@@ -148,10 +143,6 @@
148143 .mode_set = exynos_dpi_mode_set,
149144 .enable = exynos_dpi_enable,
150145 .disable = exynos_dpi_disable,
151
-};
152
-
153
-static const struct drm_encoder_funcs exynos_dpi_encoder_funcs = {
154
- .destroy = drm_encoder_cleanup,
155146 };
156147
157148 enum {
....@@ -202,8 +193,7 @@
202193 {
203194 int ret;
204195
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);
207197
208198 drm_encoder_helper_add(encoder, &exynos_dpi_encoder_helper_funcs);
209199
....@@ -213,7 +203,8 @@
213203
214204 ret = exynos_dpi_create_connector(encoder);
215205 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);
217208 drm_encoder_cleanup(encoder);
218209 return ret;
219210 }
....@@ -252,9 +243,6 @@
252243 struct exynos_dpi *ctx = encoder_to_dpi(encoder);
253244
254245 exynos_dpi_disable(&ctx->encoder);
255
-
256
- if (ctx->panel)
257
- drm_panel_detach(ctx->panel);
258246
259247 return 0;
260248 }