forked from ~ljy/RK356X_SDK_RELEASE

hc
2024-10-09 244b2c5ca8b14627e4a17755e5922221e121c771
kernel/drivers/gpu/drm/rockchip/rk628/rk628_gvi.c
....@@ -12,10 +12,10 @@
1212 #include <linux/regmap.h>
1313 #include <linux/reset.h>
1414 #include <linux/mfd/rk628.h>
15
-#include <drm/drmP.h>
15
+
1616 #include <drm/drm_of.h>
1717 #include <drm/drm_atomic.h>
18
-#include <drm/drm_crtc_helper.h>
18
+#include <drm/drm_probe_helper.h>
1919 #include <drm/drm_atomic_helper.h>
2020 #include <drm/drm_panel.h>
2121 #include <video/of_display_timing.h>
....@@ -273,7 +273,7 @@
273273 struct drm_display_info *info = &connector->display_info;
274274 int num_modes;
275275
276
- num_modes = drm_panel_get_modes(gvi->panel);
276
+ num_modes = drm_panel_get_modes(gvi->panel, connector);
277277
278278 if (info->num_bus_formats)
279279 gvi->bus_format = info->bus_formats[0];
....@@ -334,9 +334,6 @@
334334
335335 static void rk628_gvi_connector_destroy(struct drm_connector *connector)
336336 {
337
- struct rk628_gvi *gvi = connector_to_gvi(connector);
338
-
339
- drm_panel_detach(gvi->panel);
340337 drm_connector_cleanup(connector);
341338 }
342339
....@@ -463,7 +460,7 @@
463460 SW_OUTPUT_MODE(OUTPUT_MODE_GVI));
464461 phy_set_bus_width(gvi->phy, rate);
465462 rk628_combtxphy_set_gvi_division_mode(gvi->phy, gvi->division_mode);
466
- ret = phy_set_mode(gvi->phy, PHY_MODE_GVI);
463
+ ret = phy_set_mode(gvi->phy, 0);
467464 if (ret) {
468465 dev_err(gvi->dev, "failed to set phy mode: %d\n", ret);
469466 return;
....@@ -500,12 +497,16 @@
500497 phy_power_off(gvi->phy);
501498 }
502499
503
-static int rk628_gvi_bridge_attach(struct drm_bridge *bridge)
500
+static int rk628_gvi_bridge_attach(struct drm_bridge *bridge,
501
+ enum drm_bridge_attach_flags flags)
504502 {
505503 struct rk628_gvi *gvi = bridge_to_gvi(bridge);
506504 struct drm_connector *connector = &gvi->connector;
507505 struct drm_device *drm = bridge->dev;
508506 int ret;
507
+
508
+ if (flags & DRM_BRIDGE_ATTACH_NO_CONNECTOR)
509
+ return 0;
509510
510511 ret = drm_connector_init(drm, connector, &rk628_gvi_connector_funcs,
511512 DRM_MODE_CONNECTOR_LVDS);
....@@ -517,18 +518,12 @@
517518 drm_connector_helper_add(connector, &rk628_gvi_connector_helper_funcs);
518519 drm_connector_attach_encoder(connector, bridge->encoder);
519520
520
- ret = drm_panel_attach(gvi->panel, connector);
521
- if (ret) {
522
- dev_err(gvi->dev, "Failed to attach panel\n");
523
- return ret;
524
- }
525
-
526521 return 0;
527522 }
528523
529524 static void rk628_gvi_bridge_mode_set(struct drm_bridge *bridge,
530
- struct drm_display_mode *mode,
531
- struct drm_display_mode *adj)
525
+ const struct drm_display_mode *mode,
526
+ const struct drm_display_mode *adj)
532527 {
533528 struct rk628_gvi *gvi = bridge_to_gvi(bridge);
534529