hc
2024-12-19 9370bb92b2d16684ee45cf24e879c93c509162da
kernel/drivers/gpu/drm/panel/panel-arm-versatile.c
....@@ -25,19 +25,21 @@
2525 * Epson QCIF display.
2626 *
2727 */
28
-#include <drm/drmP.h>
29
-#include <drm/drm_panel.h>
3028
3129 #include <linux/bitops.h>
3230 #include <linux/init.h>
3331 #include <linux/kernel.h>
3432 #include <linux/mfd/syscon.h>
33
+#include <linux/mod_devicetable.h>
3534 #include <linux/module.h>
3635 #include <linux/platform_device.h>
3736 #include <linux/regmap.h>
3837
3938 #include <video/of_videomode.h>
4039 #include <video/videomode.h>
40
+
41
+#include <drm/drm_modes.h>
42
+#include <drm/drm_panel.h>
4143
4244 /*
4345 * This configuration register in the Versatile and RealView
....@@ -141,7 +143,6 @@
141143 .vsync_start = 240 + 5,
142144 .vsync_end = 240 + 5 + 6,
143145 .vtotal = 240 + 5 + 6 + 5,
144
- .vrefresh = 116,
145146 .flags = DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC,
146147 },
147148 },
....@@ -165,7 +166,6 @@
165166 .vsync_start = 480 + 11,
166167 .vsync_end = 480 + 11 + 2,
167168 .vtotal = 480 + 11 + 2 + 32,
168
- .vrefresh = 60,
169169 .flags = DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC,
170170 },
171171 },
....@@ -188,10 +188,9 @@
188188 .vsync_start = 220 + 0,
189189 .vsync_end = 220 + 0 + 2,
190190 .vtotal = 220 + 0 + 2 + 1,
191
- .vrefresh = 390,
192191 .flags = DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC,
193192 },
194
- .bus_flags = DRM_BUS_FLAG_PIXDATA_NEGEDGE,
193
+ .bus_flags = DRM_BUS_FLAG_PIXDATA_DRIVE_NEGEDGE,
195194 },
196195 /*
197196 * Sanyo ALR252RGT 240x320 portrait display found on the
....@@ -212,10 +211,9 @@
212211 .vsync_start = 320 + 2,
213212 .vsync_end = 320 + 2 + 2,
214213 .vtotal = 320 + 2 + 2 + 2,
215
- .vrefresh = 116,
216214 .flags = DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC,
217215 },
218
- .bus_flags = DRM_BUS_FLAG_PIXDATA_NEGEDGE,
216
+ .bus_flags = DRM_BUS_FLAG_PIXDATA_DRIVE_NEGEDGE,
219217 .ib2 = true,
220218 },
221219 };
....@@ -258,19 +256,17 @@
258256 return 0;
259257 }
260258
261
-static int versatile_panel_get_modes(struct drm_panel *panel)
259
+static int versatile_panel_get_modes(struct drm_panel *panel,
260
+ struct drm_connector *connector)
262261 {
263
- struct drm_connector *connector = panel->connector;
264262 struct versatile_panel *vpanel = to_versatile_panel(panel);
265263 struct drm_display_mode *mode;
266264
267
- strncpy(connector->display_info.name, vpanel->panel_type->name,
268
- DRM_DISPLAY_INFO_LEN);
269265 connector->display_info.width_mm = vpanel->panel_type->width_mm;
270266 connector->display_info.height_mm = vpanel->panel_type->height_mm;
271267 connector->display_info.bus_flags = vpanel->panel_type->bus_flags;
272268
273
- mode = drm_mode_duplicate(panel->drm, &vpanel->panel_type->mode);
269
+ mode = drm_mode_duplicate(connector->dev, &vpanel->panel_type->mode);
274270 drm_mode_set_name(mode);
275271 mode->type = DRM_MODE_TYPE_DRIVER | DRM_MODE_TYPE_PREFERRED;
276272
....@@ -350,11 +346,12 @@
350346 dev_info(dev, "panel mounted on IB2 daughterboard\n");
351347 }
352348
353
- drm_panel_init(&vpanel->panel);
354
- vpanel->panel.dev = dev;
355
- vpanel->panel.funcs = &versatile_panel_drm_funcs;
349
+ drm_panel_init(&vpanel->panel, dev, &versatile_panel_drm_funcs,
350
+ DRM_MODE_CONNECTOR_DPI);
356351
357
- return drm_panel_add(&vpanel->panel);
352
+ drm_panel_add(&vpanel->panel);
353
+
354
+ return 0;
358355 }
359356
360357 static const struct of_device_id versatile_panel_match[] = {