7.1.9 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. diff -Nur linux-7.1.6.orig/drivers/gpu/drm/ingenic/ingenic-drm-drv.c linux-7.1.6/drivers/gpu/drm/ingenic/ingenic-drm-drv.c
  2. --- linux-7.1.6.orig/drivers/gpu/drm/ingenic/ingenic-drm-drv.c 2026-08-03 11:26:04.000000000 +0200
  3. +++ linux-7.1.6/drivers/gpu/drm/ingenic/ingenic-drm-drv.c 2026-08-08 18:30:45.954826030 +0200
  4. @@ -122,7 +122,7 @@
  5. struct ingenic_drm_bridge {
  6. struct drm_encoder encoder;
  7. - struct drm_bridge bridge, *next_bridge;
  8. + struct drm_bridge *bridge, *next_bridge;
  9. struct drm_bus_cfg bus_cfg;
  10. };
  11. @@ -802,7 +802,7 @@
  12. struct ingenic_drm_bridge *ib = to_ingenic_drm_bridge(encoder);
  13. return drm_bridge_attach(encoder, ib->next_bridge,
  14. - &ib->bridge, flags);
  15. + bridge, flags);
  16. }
  17. static int ingenic_drm_bridge_atomic_check(struct drm_bridge *bridge,
  18. @@ -1314,10 +1314,24 @@
  19. drm_encoder_helper_add(encoder, &ingenic_drm_encoder_helper_funcs);
  20. - ib->bridge.funcs = &ingenic_drm_bridge_funcs;
  21. + ib->bridge = devm_drm_bridge_alloc(priv->dev, struct drm_bridge,
  22. + base, &ingenic_drm_bridge_funcs);
  23. + if (IS_ERR(ib->bridge)) {
  24. + ret = PTR_ERR(ib->bridge);
  25. + goto err_drvdata;
  26. + }
  27. + ib->bridge->of_node = priv->dev->of_node;
  28. +
  29. ib->next_bridge = bridge;
  30. - ret = drm_bridge_attach(encoder, &ib->bridge, NULL,
  31. + ib->bridge->ops = DRM_BRIDGE_OP_EDID | DRM_BRIDGE_OP_DETECT;
  32. + ib->bridge->interlace_allowed = true;
  33. + ret = devm_drm_bridge_add(priv->dev, ib->bridge);
  34. + if (ret) {
  35. + dev_err(dev, "Failed to register DRM bridge: %d\n", ret);
  36. + goto err_drvdata;
  37. + }
  38. + ret = drm_bridge_attach(encoder, ib->bridge, NULL,
  39. DRM_BRIDGE_ATTACH_NO_CONNECTOR);
  40. if (ret) {
  41. dev_err(dev, "Unable to attach bridge\n");