|
|
@@ -0,0 +1,48 @@
|
|
|
+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
|
|
|
+--- linux-7.1.6.orig/drivers/gpu/drm/ingenic/ingenic-drm-drv.c 2026-08-03 11:26:04.000000000 +0200
|
|
|
++++ linux-7.1.6/drivers/gpu/drm/ingenic/ingenic-drm-drv.c 2026-08-08 18:30:45.954826030 +0200
|
|
|
+@@ -122,7 +122,7 @@
|
|
|
+
|
|
|
+ struct ingenic_drm_bridge {
|
|
|
+ struct drm_encoder encoder;
|
|
|
+- struct drm_bridge bridge, *next_bridge;
|
|
|
++ struct drm_bridge *bridge, *next_bridge;
|
|
|
+
|
|
|
+ struct drm_bus_cfg bus_cfg;
|
|
|
+ };
|
|
|
+@@ -802,7 +802,7 @@
|
|
|
+ struct ingenic_drm_bridge *ib = to_ingenic_drm_bridge(encoder);
|
|
|
+
|
|
|
+ return drm_bridge_attach(encoder, ib->next_bridge,
|
|
|
+- &ib->bridge, flags);
|
|
|
++ bridge, flags);
|
|
|
+ }
|
|
|
+
|
|
|
+ static int ingenic_drm_bridge_atomic_check(struct drm_bridge *bridge,
|
|
|
+@@ -1314,10 +1314,24 @@
|
|
|
+
|
|
|
+ drm_encoder_helper_add(encoder, &ingenic_drm_encoder_helper_funcs);
|
|
|
+
|
|
|
+- ib->bridge.funcs = &ingenic_drm_bridge_funcs;
|
|
|
++ ib->bridge = devm_drm_bridge_alloc(priv->dev, struct drm_bridge,
|
|
|
++ base, &ingenic_drm_bridge_funcs);
|
|
|
++ if (IS_ERR(ib->bridge)) {
|
|
|
++ ret = PTR_ERR(ib->bridge);
|
|
|
++ goto err_drvdata;
|
|
|
++ }
|
|
|
++ ib->bridge->of_node = priv->dev->of_node;
|
|
|
++
|
|
|
+ ib->next_bridge = bridge;
|
|
|
+
|
|
|
+- ret = drm_bridge_attach(encoder, &ib->bridge, NULL,
|
|
|
++ ib->bridge->ops = DRM_BRIDGE_OP_EDID | DRM_BRIDGE_OP_DETECT;
|
|
|
++ ib->bridge->interlace_allowed = true;
|
|
|
++ ret = devm_drm_bridge_add(priv->dev, ib->bridge);
|
|
|
++ if (ret) {
|
|
|
++ dev_err(dev, "Failed to register DRM bridge: %d\n", ret);
|
|
|
++ goto err_drvdata;
|
|
|
++ }
|
|
|
++ ret = drm_bridge_attach(encoder, ib->bridge, NULL,
|
|
|
+ DRM_BRIDGE_ATTACH_NO_CONNECTOR);
|
|
|
+ if (ret) {
|
|
|
+ dev_err(dev, "Unable to attach bridge\n");
|