drm/nouveau/kms/nv140-: Disable interlacing
authorLyude Paul <lyude@redhat.com>
Tue, 16 Aug 2022 18:04:36 +0000 (14:04 -0400)
committerLyude Paul <lyude@redhat.com>
Tue, 16 Aug 2022 19:39:48 +0000 (15:39 -0400)
As it turns out: while Nvidia does actually have interlacing knobs on their
GPU still pretty much no current GPUs since Volta actually support it.
Trying interlacing on these GPUs will result in NVDisplay being quite
unhappy like so:

nouveau 0000:1f:00.0: disp: chid 0 stat 00004802 reason 4 [INVALID_ARG] mthd 2008 data 00000001 code 00080000
nouveau 0000:1f:00.0: disp: chid 0 stat 10005080 reason 5 [INVALID_STATE] mthd 0200 data 00000001 code 00000001

So let's fix this by following the same behavior Nvidia's driver does and
disable interlacing entirely.

Signed-off-by: Lyude Paul <lyude@redhat.com>
Cc: stable@vger.kernel.org
Reviewed-by: Karol Herbst <kherbst@redhat.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20220816180436.156310-1-lyude@redhat.com
drivers/gpu/drm/nouveau/nouveau_connector.c

index 43a9d1e1cf719fab99044ee01364c3f75dccfc3d..8100c75ee7319902a36239a80d3440d24f69ddc4 100644 (file)
@@ -504,7 +504,8 @@ nouveau_connector_set_encoder(struct drm_connector *connector,
                        connector->interlace_allowed =
                                nv_encoder->caps.dp_interlace;
                else
-                       connector->interlace_allowed = true;
+                       connector->interlace_allowed =
+                               drm->client.device.info.family < NV_DEVICE_INFO_V0_VOLTA;
                connector->doublescan_allowed = true;
        } else
        if (nv_encoder->dcb->type == DCB_OUTPUT_LVDS ||