bcm27xx: update patches from RPi foundation
[openwrt/staging/luka.git] / target / linux / bcm27xx / patches-5.4 / 950-0577-drm-vc4-hdmi-Use-local-vc4_hdmi-directly.patch
diff --git a/target/linux/bcm27xx/patches-5.4/950-0577-drm-vc4-hdmi-Use-local-vc4_hdmi-directly.patch b/target/linux/bcm27xx/patches-5.4/950-0577-drm-vc4-hdmi-Use-local-vc4_hdmi-directly.patch
new file mode 100644 (file)
index 0000000..9b60fbb
--- /dev/null
@@ -0,0 +1,45 @@
+From 985efd0f9da3d2b60e34d10efee969e4dfd85a12 Mon Sep 17 00:00:00 2001
+From: Maxime Ripard <maxime@cerno.tech>
+Date: Mon, 6 Jan 2020 18:44:36 +0100
+Subject: [PATCH] drm/vc4: hdmi: Use local vc4_hdmi directly
+
+The function vc4_hdmi_connector_detect access its vc4_hdmi struct by
+dereferencing the pointer in the structure vc4_dev. This will cause some
+issues when we will have multiple HDMI controllers, so let's just use the
+local variable for now instead of dereferencing that pointer all the time,
+and we'll fix the local variable later.
+
+Signed-off-by: Maxime Ripard <maxime@cerno.tech>
+---
+ drivers/gpu/drm/vc4/vc4_hdmi.c | 12 ++++++------
+ 1 file changed, 6 insertions(+), 6 deletions(-)
+
+--- a/drivers/gpu/drm/vc4/vc4_hdmi.c
++++ b/drivers/gpu/drm/vc4/vc4_hdmi.c
+@@ -124,20 +124,20 @@ vc4_hdmi_connector_detect(struct drm_con
+       struct vc4_dev *vc4 = to_vc4_dev(dev);
+       struct vc4_hdmi *vc4_hdmi = vc4->hdmi;
+-      if (vc4->hdmi->hpd_gpio) {
+-              if (gpio_get_value_cansleep(vc4->hdmi->hpd_gpio) ^
+-                  vc4->hdmi->hpd_active_low)
++      if (vc4_hdmi->hpd_gpio) {
++              if (gpio_get_value_cansleep(vc4_hdmi->hpd_gpio) ^
++                  vc4_hdmi->hpd_active_low)
+                       return connector_status_connected;
+-              cec_phys_addr_invalidate(vc4->hdmi->cec_adap);
++              cec_phys_addr_invalidate(vc4_hdmi->cec_adap);
+               return connector_status_disconnected;
+       }
+-      if (drm_probe_ddc(vc4->hdmi->ddc))
++      if (drm_probe_ddc(vc4_hdmi->ddc))
+               return connector_status_connected;
+       if (HDMI_READ(VC4_HDMI_HOTPLUG) & VC4_HDMI_HOTPLUG_CONNECTED)
+               return connector_status_connected;
+-      cec_phys_addr_invalidate(vc4->hdmi->cec_adap);
++      cec_phys_addr_invalidate(vc4_hdmi->cec_adap);
+       return connector_status_disconnected;
+ }