drm/mgag200: Set .detect_ctx() and enable connector polling
authorThomas Zimmermann <tzimmermann@suse.de>
Mon, 10 Jun 2024 14:06:06 +0000 (16:06 +0200)
committerThomas Zimmermann <tzimmermann@suse.de>
Thu, 13 Jun 2024 07:31:36 +0000 (09:31 +0200)
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.

Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
Reviewed-by: Jocelyn Falempe <jfalempe@redhat.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20240610141141.29527-4-tzimmermann@suse.de
drivers/gpu/drm/mgag200/mgag200_g200.c
drivers/gpu/drm/mgag200/mgag200_g200eh.c
drivers/gpu/drm/mgag200/mgag200_g200eh3.c
drivers/gpu/drm/mgag200/mgag200_g200er.c
drivers/gpu/drm/mgag200/mgag200_g200ev.c
drivers/gpu/drm/mgag200/mgag200_g200ew3.c
drivers/gpu/drm/mgag200/mgag200_g200se.c
drivers/gpu/drm/mgag200/mgag200_g200wb.c
drivers/gpu/drm/mgag200/mgag200_vga.c

index ff467b0f9cbf3bb56502a6d224ad047733e87b23..f874e2949840994cb5f9a545e2e4ff4e749e3e35 100644 (file)
@@ -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;
 }
index 6f31c5249f0b1ea16e656da7b6fd73bc3e01f330..52bf49ead5c506de0ca1628d53a4f448516fab57 100644 (file)
@@ -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;
 }
index 5befe8da4beb2032b809ab53d758927885828726..e7f89b2a59fd05dc2a1f4c406fe862b585cecbde 100644 (file)
@@ -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;
 }
index 55c275180cde240f6b570b56769e1c65a7d29e12..4e8a1756138d7f5602bedede34b03bcacb50360a 100644 (file)
@@ -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;
 }
index 2466126140db6c46de0505c2daa0e32133ad28b0..d884f3cb0ec79ca38a48d6352b1bd7fc7a6478a8 100644 (file)
@@ -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;
 }
index a52e60609c3de9d0db653c4786316dee94e3a62e..839401e8b46545a476db523351a39ffa7ce3e4dc 100644 (file)
@@ -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;
 }
index 212770acdd477dc8ee7da2d3c8142071ea700ba1..a824bb8ad5791339cee687f38defab23c71987b2 100644 (file)
@@ -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;
 }
index cb6daa0426fbc41f8a8c6c2997961cc9f9f87cf5..835df0f4fc13d50d4fa7f2c92447af1e9b66682f 100644 (file)
@@ -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;
 }
index 6d8982990c2c3c34adeb4dd2f46cccc648a1f8e5..60568f32736dd87b3a2d7b1e26bd1ac8e09c665d 100644 (file)
@@ -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);