[PATCH v2 3/3] drm/mgag200: Set .detect_ctx() and enable connector polling
Thomas Zimmermann
tzimmermann at suse.de
Tue Jun 11 15:10:47 UTC 2024
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 at redhat.com>
Great, thanks a lot for reviewing and testing quickly.
Best regards
Thomas
>
>> Signed-off-by: Thomas Zimmermann <tzimmermann at suse.de>
>> ---
>> 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)
More information about the dri-devel
mailing list