Re: [PATCH v2 3/3] drm/mgag200: Set .detect_ctx() and enable connector polling

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Jocelyn

Am 11.06.24 um 16:41 schrieb Jocelyn Falempe:


On 10/06/2024 16:06, Thomas Zimmermann wrote:
Set .detect_ctx() in struct drm_connector_helper_funcs to the
common helper drm_connector_helper_detect_from_ddc() and enable
polling for the connector. Mgag200 will now test for the monitor's
presence by probing the DDC in regular intervals.

I've tested this series on two servers, one with physical VGA plugged, and one remote system, and it works as intended.

Thanks a lot for this work.

Reviewed-by: Jocelyn Falempe <jfalempe@xxxxxxxxxx>

Great, thanks a lot for reviewing and testing quickly.

Best regards
Thomas


Signed-off-by: Thomas Zimmermann <tzimmermann@xxxxxxx>
---
  drivers/gpu/drm/mgag200/mgag200_g200.c    | 1 +
  drivers/gpu/drm/mgag200/mgag200_g200eh.c  | 1 +
  drivers/gpu/drm/mgag200/mgag200_g200eh3.c | 1 +
  drivers/gpu/drm/mgag200/mgag200_g200er.c  | 1 +
  drivers/gpu/drm/mgag200/mgag200_g200ev.c  | 1 +
  drivers/gpu/drm/mgag200/mgag200_g200ew3.c | 1 +
  drivers/gpu/drm/mgag200/mgag200_g200se.c  | 1 +
  drivers/gpu/drm/mgag200/mgag200_g200wb.c  | 1 +
  drivers/gpu/drm/mgag200/mgag200_vga.c     | 6 +++++-
  9 files changed, 13 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/mgag200/mgag200_g200.c b/drivers/gpu/drm/mgag200/mgag200_g200.c
index ff467b0f9cbf3..f874e29498409 100644
--- a/drivers/gpu/drm/mgag200/mgag200_g200.c
+++ b/drivers/gpu/drm/mgag200/mgag200_g200.c
@@ -401,6 +401,7 @@ struct mga_device *mgag200_g200_device_create(struct pci_dev *pdev, const struct
          return ERR_PTR(ret);
        drm_mode_config_reset(dev);
+    drm_kms_helper_poll_init(dev);
        return mdev;
  }
diff --git a/drivers/gpu/drm/mgag200/mgag200_g200eh.c b/drivers/gpu/drm/mgag200/mgag200_g200eh.c
index 6f31c5249f0b1..52bf49ead5c50 100644
--- a/drivers/gpu/drm/mgag200/mgag200_g200eh.c
+++ b/drivers/gpu/drm/mgag200/mgag200_g200eh.c
@@ -277,6 +277,7 @@ struct mga_device *mgag200_g200eh_device_create(struct pci_dev *pdev, const stru
          return ERR_PTR(ret);
        drm_mode_config_reset(dev);
+    drm_kms_helper_poll_init(dev);
        return mdev;
  }
diff --git a/drivers/gpu/drm/mgag200/mgag200_g200eh3.c b/drivers/gpu/drm/mgag200/mgag200_g200eh3.c
index 5befe8da4beb2..e7f89b2a59fd0 100644
--- a/drivers/gpu/drm/mgag200/mgag200_g200eh3.c
+++ b/drivers/gpu/drm/mgag200/mgag200_g200eh3.c
@@ -182,6 +182,7 @@ struct mga_device *mgag200_g200eh3_device_create(struct pci_dev *pdev,
          return ERR_PTR(ret);
        drm_mode_config_reset(dev);
+    drm_kms_helper_poll_init(dev);
        return mdev;
  }
diff --git a/drivers/gpu/drm/mgag200/mgag200_g200er.c b/drivers/gpu/drm/mgag200/mgag200_g200er.c
index 55c275180cde2..4e8a1756138d7 100644
--- a/drivers/gpu/drm/mgag200/mgag200_g200er.c
+++ b/drivers/gpu/drm/mgag200/mgag200_g200er.c
@@ -316,6 +316,7 @@ struct mga_device *mgag200_g200er_device_create(struct pci_dev *pdev, const stru
          return ERR_PTR(ret);
        drm_mode_config_reset(dev);
+    drm_kms_helper_poll_init(dev);
        return mdev;
  }
diff --git a/drivers/gpu/drm/mgag200/mgag200_g200ev.c b/drivers/gpu/drm/mgag200/mgag200_g200ev.c
index 2466126140db6..d884f3cb0ec79 100644
--- a/drivers/gpu/drm/mgag200/mgag200_g200ev.c
+++ b/drivers/gpu/drm/mgag200/mgag200_g200ev.c
@@ -321,6 +321,7 @@ struct mga_device *mgag200_g200ev_device_create(struct pci_dev *pdev, const stru
          return ERR_PTR(ret);
        drm_mode_config_reset(dev);
+    drm_kms_helper_poll_init(dev);
        return mdev;
  }
diff --git a/drivers/gpu/drm/mgag200/mgag200_g200ew3.c b/drivers/gpu/drm/mgag200/mgag200_g200ew3.c
index a52e60609c3de..839401e8b4654 100644
--- a/drivers/gpu/drm/mgag200/mgag200_g200ew3.c
+++ b/drivers/gpu/drm/mgag200/mgag200_g200ew3.c
@@ -202,6 +202,7 @@ struct mga_device *mgag200_g200ew3_device_create(struct pci_dev *pdev,
          return ERR_PTR(ret);
        drm_mode_config_reset(dev);
+    drm_kms_helper_poll_init(dev);
        return mdev;
  }
diff --git a/drivers/gpu/drm/mgag200/mgag200_g200se.c b/drivers/gpu/drm/mgag200/mgag200_g200se.c
index 212770acdd477..a824bb8ad5791 100644
--- a/drivers/gpu/drm/mgag200/mgag200_g200se.c
+++ b/drivers/gpu/drm/mgag200/mgag200_g200se.c
@@ -521,6 +521,7 @@ struct mga_device *mgag200_g200se_device_create(struct pci_dev *pdev, const stru
          return ERR_PTR(ret);
        drm_mode_config_reset(dev);
+    drm_kms_helper_poll_init(dev);
        return mdev;
  }
diff --git a/drivers/gpu/drm/mgag200/mgag200_g200wb.c b/drivers/gpu/drm/mgag200/mgag200_g200wb.c
index cb6daa0426fbc..835df0f4fc13d 100644
--- a/drivers/gpu/drm/mgag200/mgag200_g200wb.c
+++ b/drivers/gpu/drm/mgag200/mgag200_g200wb.c
@@ -326,6 +326,7 @@ struct mga_device *mgag200_g200wb_device_create(struct pci_dev *pdev, const stru
          return ERR_PTR(ret);
        drm_mode_config_reset(dev);
+    drm_kms_helper_poll_init(dev);
        return mdev;
  }
diff --git a/drivers/gpu/drm/mgag200/mgag200_vga.c b/drivers/gpu/drm/mgag200/mgag200_vga.c
index 6d8982990c2c3..60568f32736dd 100644
--- a/drivers/gpu/drm/mgag200/mgag200_vga.c
+++ b/drivers/gpu/drm/mgag200/mgag200_vga.c
@@ -12,7 +12,8 @@ static const struct drm_encoder_funcs mgag200_dac_encoder_funcs = {
  };
    static const struct drm_connector_helper_funcs mgag200_vga_connector_helper_funcs = {
-    .get_modes = drm_connector_helper_get_modes
+    .get_modes = drm_connector_helper_get_modes,
+    .detect_ctx = drm_connector_helper_detect_from_ddc
  };
    static const struct drm_connector_funcs mgag200_vga_connector_funcs = {
@@ -58,6 +59,9 @@ int mgag200_vga_output_init(struct mga_device *mdev)
      }
      drm_connector_helper_add(connector, &mgag200_vga_connector_helper_funcs);
  +    connector->polled = DRM_CONNECTOR_POLL_CONNECT |
+                DRM_CONNECTOR_POLL_DISCONNECT;
+
      ret = drm_connector_attach_encoder(connector, encoder);
      if (ret) {
          drm_err(dev, "drm_connector_attach_encoder() failed: %d\n", ret);


--
--
Thomas Zimmermann
Graphics Driver Developer
SUSE Software Solutions Germany GmbH
Frankenstrasse 146, 90461 Nuernberg, Germany
GF: Ivo Totev, Andrew Myers, Andrew McDonald, Boudien Moerman
HRB 36809 (AG Nuernberg)




[Index of Archives]     [Linux DRI Users]     [Linux Intel Graphics]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [XFree86]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux